📄 hpi.lst
字号:
622
623 unsigned char RemoveFile(unsigned char *pBuffer)
624 {
625 1 #define RspBlockRemoveFile UartRspBlock.RspBlock.Rsp_RemoveFile
626 1 unsigned int sector,i;
627 1 unsigned char bStop,j;
628 1 PDIR_INFO pDirInfo;
629 1
630 1 if(!bXXGFlags.bits.SLAVE_IS_ATTACHED)
631 1 {
632 2 UartRspBlock.errcode=ERC_NODEVICE;
633 2 return FALSE;
634 2 }
635 1 ///////////////////////////////////////////////////////////
636 1 //RspBlockRemoveFile.result=0x1;
637 1 ////////////// 清除目录/////////////////////////////////////
638 1 for(sector=0;sector<DeviceInfo.BPB_RootEntCnt;sector++)
639 1 {
640 2 //////////////////////////////////////////////////
641 2 if(!RBC_Read(DeviceInfo.RootStartSector+sector,1,DBUF))
642 2 {
643 3 UartRspBlock.errcode=ERC_DEVICEERR;
644 3 return FALSE;
645 3 }
646 2 ///////////////////////////////////////////////////
647 2 for(i=0;i<DeviceInfo.BPB_BytesPerSec;i=i+32)
648 2 {
649 3 if(DBUF[i]==0x00)
650 3 {
651 4 UartRspBlock.errcode=ERC_FILENOTFOUND;
652 4 return FALSE;
653 4 }
654 3 ///////////////////////////////////////////
655 3 j=0;
656 3 while(DBUF[i+j]==*(pBuffer+j))
657 3 {
658 4 j=j+1;
659 4 if(j>10) break;
660 4 }//end while
661 3
662 3 if(j>10)
663 3 {
664 4 DBUF[i]=0xE5;
665 4 pDirInfo=(PDIR_INFO)(DBUF+i);
666 4 ThisFile.StartCluster=SwapINT16(pDirInfo->startCluster);
667 4 DelayMs(15);
668 4 if(!RBC_Write(DeviceInfo.RootStartSector+sector,1,DBUF))
669 4 {
670 5 UartRspBlock.errcode=ERC_DEVICEERR;
671 5 return FALSE;
672 5 }
673 4 //////////////////// 清除FAT中的纪录////////////////////////
674 4 DelayMs(10);
C51 COMPILER V7.50 HPI 11/02/2007 09:31:21 PAGE 12
675 4 if(!DeleteClusterLink(ThisFile.StartCluster))
676 4 {
677 5 UartRspBlock.errcode=ERC_DEVICEERR;
678 5 return FALSE;
679 5 }
680 4 bStop=1;
681 4 break;
682 4 }
683 3
684 3 }//end for
685 2 if(bStop==1)
686 2 break;
687 2
688 2 }//end search
689 1 if(sector>=DeviceInfo.BPB_RootEntCnt)
690 1 {
691 2 UartRspBlock.errcode=ERC_FILENOTFOUND;
692 2 return FALSE;
693 2 }
694 1 //////////////////////////////////////////////
695 1 return TRUE;
696 1 #undef RspBlockRemoveFile
697 1 }
698
699 unsigned char GetCapacity(void)
700 {
701 1 unsigned int sectorNum,freesectorcnt,i;
702 1
703 1 #define RspBlockGetCapacity UartRspBlock.RspBlock.Rsp_GetCapacity
704 1 PREAD_CAPACITY_RSP pBuf;
705 1
706 1 if(!bXXGFlags.bits.SLAVE_IS_ATTACHED)
707 1 {
708 2 UartRspBlock.errcode=ERC_NODEVICE;
709 2 return FALSE;
710 2 }
711 1 ///////////////////////////////////////////////////////////
712 1 if(!RBC_ReadCapacity())
713 1 {
714 2 UartRspBlock.errcode=ERC_DEVICEERR;
715 2 return FALSE;
716 2 }
717 1
718 1 pBuf=(PREAD_CAPACITY_RSP)DBUF;
719 1 RspBlockGetCapacity.disksize=SwapINT32((pBuf->LastLBA+1)*pBuf->BlockSize);
720 1 ////////////////////////////////////////////////////////////////////////
721 1 sectorNum=DeviceInfo.FatStartSector;
722 1 freesectorcnt=0;
723 1 while(sectorNum<DeviceInfo.BPB_FATSz16+DeviceInfo.FatStartSector)
724 1 {
725 2
726 2 if(RBC_Read(sectorNum,1,DBUF))
727 2 {
728 3 for(i=0;i<DeviceInfo.BPB_BytesPerSec;i=i+2)
729 3 {
730 4 //clusterNum++;
731 4
732 4 if((DBUF[i]==0xff)&&(DBUF[i+1]==0xff))
733 4 {
734 5 freesectorcnt++;
735 5 }
736 4 // clusterNum++;
C51 COMPILER V7.50 HPI 11/02/2007 09:31:21 PAGE 13
737 4 }
738 3 }
739 2 else
740 2 {
741 3 UartRspBlock.errcode=ERC_DEVICEERR;
742 3 return FALSE;
743 3 }
744 2 sectorNum++;
745 2 }
746 1
747 1 ////////////////////////////////////////////////////////////////////////
748 1 RspBlockGetCapacity.freedisksize=DeviceInfo.BPB_BytesPerSec*DeviceInfo.BPB_SecPerClus;
749 1 RspBlockGetCapacity.freedisksize=freesectorcnt*RspBlockGetCapacity.freedisksize;
750 1 RspBlockGetCapacity.freedisksize=SwapINT32(RspBlockGetCapacity.disksize)-RspBlockGetCapacity.freedisksize
-;
751 1 RspBlockGetCapacity.freedisksize=SwapINT32(RspBlockGetCapacity.freedisksize);
752 1
753 1 return TRUE;
754 1 #undef RspBlockGetCapacity
755 1 }
756
757 unsigned char GetFreeCapacity(void)
758 {
759 1 #define RspBlockGetCapacity UartRspBlock.RspBlock.Rsp_GetFreeCapacity
760 1 if(!bXXGFlags.bits.SLAVE_IS_ATTACHED)
761 1 {
762 2 UartRspBlock.errcode=ERC_NODEVICE;
763 2 return FALSE;
764 2 }
765 1 //////////////////////////////////////////////
766 1
767 1
768 1 return TRUE;
769 1 #undef RspBlockGetFreeCapacity
770 1 }
771
772 unsigned char SetFilePointer(unsigned long pointer)
773 {
774 1 #define RspBlockSetFilePointer UartRspBlock.RspBlock.Rsp_SetFilePointer
775 1
776 1 //ThisFile.FilePointer=UartCmdBlock.CmdBlock.Cmd_SetFilePointer.pointer;
777 1 if(!bXXGFlags.bits.SLAVE_IS_ATTACHED)
778 1 {
779 2 UartRspBlock.errcode=ERC_NODEVICE;
780 2 return FALSE;
781 2 }
782 1 if(!ThisFile.bFileOpen)
783 1 {
784 2 UartRspBlock.errcode=ERC_FILENOTOPENED;
785 2 return FALSE;
786 2 }
787 1 ///////////////////////////////////////////////////////////
788 1 ThisFile.pointer=pointer;
789 1 if(ThisFile.pointer>ThisFile.LengthInByte)
790 1 {
791 2 UartRspBlock.errcode=ERC_LENGTHEXCEED;
792 2 return FALSE;
793 2 }
794 1
795 1 if(!GoToPointer(ThisFile.pointer))
796 1 {
797 2 ThisFile.bFileOpen=0;
C51 COMPILER V7.50 HPI 11/02/2007 09:31:21 PAGE 14
798 2 UartRspBlock.errcode=ERC_DEVICEERR;
799 2 return FALSE;
800 2 }
801 1 //////////////////////////////////////////////
802 1 return TRUE;
803 1
804 1 #undef RspBlockSetFilePointer
805 1 }
806
807 unsigned char GetFirmwareVersion(void)
808 {
809 1 #define RspBlockGetVersion UartRspBlock.RspBlock.Rsp_GetVersion
810 1 ////////////////////////////////////////////////////////////
811 1 RspBlockGetVersion.version=0x0102;
812 1 return TRUE;
813 1 #undef RspBlockGetVersion
814 1 }
815
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 4514 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = 16607 ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 81
IDATA SIZE = ---- 4
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -