📄 hpi.lst
字号:
793 3 if(j>10)
794 3 {
795 4 if(bXXGFlags.bIsFat32==0)
796 4 {
C51 COMPILER V6.20c HPI 04/07/2005 10:50:50 PAGE 14
797 5 pDir->DIR_FstClusLO=SwapINT16(ThisFile.StartCluster);
798 5 }
799 4 else
800 4 {
801 5 DBUF[i+20]=ThisFile.StartCluster>>16;
802 5 DBUF[i+21]=ThisFile.StartCluster>>24;
803 5 DBUF[i+26]=ThisFile.StartCluster;
804 5 DBUF[i+27]=ThisFile.StartCluster>>8;
805 5 //pDirInfo->startCluster=SwapINT16(ThisFile.StartCluster);
806 5 }
807 4 if(ThisFile.pointer>ThisFile.LengthInByte)
808 4 ThisFile.LengthInByte=ThisFile.pointer;
809 4 pDir->DIR_FileSize=SwapINT32(ThisFile.LengthInByte);
810 4 if(!RBC_Write(sectorToRead,1,DBUF))
811 4 {
812 5 //UartRspBlock.errcode=ERC_DEVICEERR;
813 5 return FALSE;
814 5 }
815 4 bStop=1;
816 4 break;
817 4 }
818 3 /////////////////////////////////////////
819 3 }
820 2 if(bStop==1)
821 2 break;
822 2 ////////////////////////////////////////////////////
823 2 }// end for sector
824 1 return TRUE;
825 1
826 1 }
827
828 U8 RemoveFile(U8 *pBuffer,U8 bIsFile) //删除文件
829 {
830 1 #define RspBlockRemoveFile UartRspBlock.RspBlock.Rsp_RemoveFile
831 1 unsigned int xdata sector,i;
832 1 unsigned char xdata bStop,j,bFlag;
833 1 PDIR_STRUC pDir;
834 1 unsigned long xdata sectorToRead,dirClusterPointer;
835 1
836 1 if(!bXXGFlags.UDiskOK)
837 1 {
838 2 UartRspBlock.errcode=ERC_NODEVICE;
839 2 return FALSE;
840 2 }
841 1 ///////////////////////////////////////////////////////////
842 1 //RspBlockRemoveFile.result=0x1;
843 1 ////////////// 清除目录/////////////////////////////////////
844 1 sector=0;
845 1 dirClusterPointer=ThisDir.StartCluster;
846 1 for(;;)
847 1 {
848 2 //////////////////////////////////////////////////
849 2 if(!SeekSectorToRead(&dirClusterPointer,§or,§orToRead))
850 2 return FALSE;
851 2 //////////////////////////////////////////////////
852 2 if(!RBC_Read(sectorToRead,1,DBUF))
853 2 {
854 3 UartRspBlock.errcode=ERC_DEVICEERR;
855 3 return FALSE;
856 3 }
857 2 ///////////////////////////////////////////////////
858 2 for(i=0;i<DeviceInfo.BPB_BytesPerSec;i=i+32)
C51 COMPILER V6.20c HPI 04/07/2005 10:50:50 PAGE 15
859 2 {
860 3 if(DBUF[i]==0x00)
861 3 {
862 4 UartRspBlock.errcode=ERC_FILENOTFOUND;
863 4 return FALSE;
864 4 }
865 3 ///////////////////////////////////////////
866 3 if(bIsFile)
867 3 {
868 4 bFlag=DBUF[i+11]&0x18;
869 4 if(bFlag!=0)
870 4 continue;
871 4 }
872 3 else
873 3 {
874 4 bFlag=DBUF[i+11]&0x10;
875 4 if(bFlag!=0x10)
876 4 continue;}
877 3
878 3 j=0;
879 3 while(DBUF[i+j]==*(pBuffer+j))
880 3 {
881 4 j=j+1;
882 4 if(j>11) break;
883 4 }//end while
884 3
885 3 if(j>11)
886 3 {
887 4 DBUF[i]=0xE5;
888 4 pDir=(PDIR_STRUC)(DBUF+i);
889 4 //if(bXXGFlags.bits.bIsFat32==0)
890 4 // ThisFile.StartCluster=SwapINT16(pDirInfo->startCluster);
891 4 //else
892 4 ThisFile.StartCluster=MakeU32(DBUF[i+21],DBUF[i+20],DBUF[i+27],DBUF[i+26]);
893 4 //DelayMs(15);
894 4 if(!RBC_Write(sectorToRead,1,DBUF))
895 4 {
896 5 UartRspBlock.errcode=ERC_DEVICEERR;
897 5 return FALSE;
898 5 }
899 4 //////////////////// 清除FAT中的纪录////////////////////////
900 4 //DelayMs(10);
901 4 if(!DeleteClusterLink(ThisFile.StartCluster))
902 4 {
903 5 UartRspBlock.errcode=ERC_DEVICEERR;
904 5 return FALSE;
905 5 }
906 4 bStop=1;
907 4 break;
908 4 }
909 3
910 3 }//end for
911 2 if(bStop==1)
912 2 break;
913 2
914 2 }//end search
915 1
916 1 //////////////////////////////////////////////
917 1 return TRUE;
918 1 #undef RspBlockRemoveFile
919 1 }
920
C51 COMPILER V6.20c HPI 04/07/2005 10:50:50 PAGE 16
921 unsigned char GetCapacity(void)
922 {
923 1 unsigned long sectorNum,freesectorcnt;
924 1 unsigned int i;
925 1
926 1 #define RspBlockGetCapacity UartRspBlock.RspBlock.Rsp_GetCapacity
927 1 PREAD_CAPACITY_RSP pBuf;
928 1
929 1 if(!bXXGFlags.UDiskOK)
930 1 {
931 2 UartRspBlock.errcode=ERC_NODEVICE;
932 2 return FALSE;
933 2 }
934 1 ///////////////////////////////////////////////////////////
935 1 if(!RBC_ReadCapacity())
936 1 {
937 2 UartRspBlock.errcode=ERC_DEVICEERR;
938 2 return FALSE;
939 2 }
940 1
941 1 pBuf=(PREAD_CAPACITY_RSP)DBUF;
942 1 RspBlockGetCapacity.disksize=SwapINT32((pBuf->LastLBA)*pBuf->BlockSize);
943 1 ////////////////////////////////////////////////////////////////////////
944 1 if ((bXXGFlags.bIsFat32==1)&&(DeviceInfo.FSI_Free_Count>0))
945 1 {
946 2 RspBlockGetCapacity.freedisksize=SwapINT32(DeviceInfo.FSI_Free_Count*DeviceInfo.BPB_BytesPerSec*DeviceIn
-fo.BPB_SecPerClus);
947 2 return TRUE;
948 2 }
949 1 ///////////////////////////////////////////////
950 1 sectorNum=DeviceInfo.FatStartSector;
951 1 freesectorcnt=0;
952 1 while(sectorNum<DeviceInfo.FATSz+DeviceInfo.FatStartSector)
953 1 {
954 2
955 2 if(RBC_Read(sectorNum,1,DBUF))
956 2 {
957 3 for(i=0;i<DeviceInfo.BPB_BytesPerSec;)
958 3 {
959 4 //clusterNum++;
960 4 if(bXXGFlags.bIsFat32==0)
961 4 {
962 5 if((DBUF[i]==0x00)&&(DBUF[i+1]==0x00))
963 5 freesectorcnt++;
964 5 i=i+2;
965 5 }
966 4 else
967 4 {
968 5 if((DBUF[i]==0x00)&&(DBUF[i+1]==0x00)&&(DBUF[i+2]==0x00)&&(DBUF[i+3]==0x00))
969 5 freesectorcnt++;
970 5 i=i+4;
971 5 }
972 4
973 4 // clusterNum++;
974 4 }
975 3 }
976 2 else
977 2 {
978 3 UartRspBlock.errcode=ERC_DEVICEERR;
979 3 return FALSE;
980 3 }
981 2 sectorNum++;
C51 COMPILER V6.20c HPI 04/07/2005 10:50:50 PAGE 17
982 2 }
983 1
984 1 ////////////////////////////////////////////////////////////////////////
985 1 RspBlockGetCapacity.freedisksize=DeviceInfo.BPB_BytesPerSec*DeviceInfo.BPB_SecPerClus;
986 1 RspBlockGetCapacity.freedisksize=freesectorcnt*RspBlockGetCapacity.freedisksize;
987 1 //RspBlockGetCapacity.freedisksize=SwapINT32(RspBlockGetCapacity.disksize)-RspBlockGetCapacity.freedisksi
-ze;
988 1 RspBlockGetCapacity.freedisksize=SwapINT32(RspBlockGetCapacity.freedisksize);
989 1
990 1 return TRUE;
991 1 #undef RspBlockGetCapacity
992 1 }
993
994 unsigned char SetFilePointer(unsigned long pointer)
995 {
996 1 #define RspBlockSetFilePointer UartRspBlock.RspBlock.Rsp_SetFilePointer
997 1
998 1 //ThisFile.FilePointer=UartCmdBlock.CmdBlock.Cmd_SetFilePointer.pointer;
999 1 if(!bXXGFlags.UDiskOK)
1000 1 {
1001 2 UartRspBlock.errcode=ERC_NODEVICE;
1002 2 return FALSE;
1003 2 }
1004 1 if(!ThisFile.bFileOpen)
1005 1 {
1006 2 UartRspBlock.errcode=ERC_FILENOTOPENED;
1007 2 return FALSE;
1008 2 }
1009 1 ///////////////////////////////////////////////////////////
1010 1 ThisFile.pointer=pointer;
1011 1 if(ThisFile.pointer>ThisFile.LengthInByte)
1012 1 {
1013 2 UartRspBlock.errcode=ERC_LENGTHEXCEED;
1014 2 return FALSE;
1015 2 }
1016 1
1017 1 if(!GoToPointer(ThisFile.pointer))
1018 1 {
1019 2 ThisFile.bFileOpen=0;
1020 2 UartRspBlock.errcode=ERC_DEVICEERR;
1021 2 return FALSE;
1022 2 }
1023 1 //////////////////////////////////////////////
1024 1 return TRUE;
1025 1
1026 1 #undef RspBlockSetFilePointer
1027 1 }
1028
1029 unsigned char GetFirmwareVersion(void)
1030 {
1031 1 #define RspBlockGetVersion UartRspBlock.RspBlock.Rsp_GetVersion
1032 1 ////////////////////////////////////////////////////////////
1033 1 RspBlockGetVersion.version=0x0402;
1034 1 return TRUE;
1035 1 #undef RspBlockGetVersion
1036 1 }
1037 /////////// 目录操作 ///////////////////////////////
1038 //#endif
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 6269 ----
C51 COMPILER V6.20c HPI 04/07/2005 10:50:50 PAGE 18
CONSTANT SIZE = ---- ----
XDATA SIZE = 16651 21
PDATA SIZE = ---- ----
DATA SIZE = 2 125
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 + -