📄 smt_fat.h
字号:
struct SMT_PRT_STR stPrt1; // Partition 1
struct SMT_PRT_STR stPrt2; // Partition 2 (NOT USE)
struct SMT_PRT_STR stPrt3; // Partition 3 (NOT USE)
struct SMT_PRT_STR stPrt4; // Partition 4 (NOT USE)
unsigned short wSigCode; // Signature Code
};
/*------------------------------------------------------*/
/* PARTITION BOOT SECTOR INFORMATION */
/*------------------------------------------------------*/
struct SMT_PTB_INFO{
unsigned char bJump[3]; // Jump Order
unsigned char bVer[8]; // Maker & Version
unsigned short wSctSize; // Sector Size
unsigned char bSctAlloc; // Sectors/Allocation Unit
unsigned short wRsvSct; // Number of Reserve Sectors
unsigned char bFatNum; // Number of FATs
unsigned short wRootEnt; // Number of Root Directory Entrys
unsigned short wSctPrt16; // Sectors/Partition (16 bits)
unsigned char bDstSize; // Distinction Size
unsigned short wFatSct; // Number of FAT Sectors
unsigned short wSctTrck; // Sectors/Track
unsigned short wHeadNum; // Number of Heads
unsigned long ulHideSct; // Number of Hidden Sectors
unsigned long ulSctPrt32; // Sectors/Partition (32 bits)
unsigned char bPhyDrv; // Physical Drive Number
unsigned char bReserved; // RESERVED
unsigned char bExBootSig; // Extention Boot Record Signature
unsigned long ulVolId; // Volume ID
unsigned char bVolLbl[11]; // Volume Label
unsigned char bFileType[8]; // File System Type
unsigned char bRsvIPL[447]; // RESERVED (IPL CODE AREA)
unsigned short wSigCode; // Signature Code
};
/*------------------------------------------------------*/
/* SMART MEDIA DEVICE INFORMATION STRUCTURE */
/*------------------------------------------------------*/
struct SMT_DEV_INFO{
unsigned char bMaker; // Maker Code
unsigned char bDevice; // Device Code
unsigned char bType; // Media Type (0:Flash / 1:MASK)
unsigned char bFatType; // FAT type (0:FAT12 / 1:FAT16)
unsigned long ulSize; // Media Size (MByte)
const struct SMT_SCT_INFO *pSctInf; // Sector Information Structure
const struct SMT_SIZ_INFO *pSizeInf; // Size Information Structure
const struct SMT_PRT_STR *pMptInf; // Master Boot Prtition Information Structure
};
/*------------------------------------------------------*/
/* PARTITION BOOT SECTOR INFORMATION */
/*------------------------------------------------------*/
struct SMT_BLK_ATBL{
unsigned long ulZoneNum; // Zone Number
unsigned long ulBlockNum; // Block Number
unsigned char bBlkCnvInf[SMT_BLK_ALLOC]; // Block Allocation Table
unsigned char bBlkPhyInf[SMT_BLK_ENTRY]; // Entry Table
unsigned char bBlkChkInf[SMT_BLK_CHECK]; // Allocation Check Table
};
/*------------------------------------------------------*/
/* READ / WRITE DATA BUFFER */
/*------------------------------------------------------*/
union SMT_RW_BUFF{
///////////////////////
/// ALL DATA BUFFER ///
///////////////////////
unsigned char bBuff[SMT_DAT_MAX + SMT_PRL_MAX]; // Read / Write Buffer
////////////////////////////
/// DATA & PROLIX BUFFER ///
////////////////////////////
struct{
unsigned char bData[SMT_DAT_MAX]; // Data Buffer
unsigned char bProlix[SMT_PRL_MAX]; // Prolix Buffer
}stBuff;
///////////////////////
/// CIS DATA BUFFER ///
///////////////////////
struct{
unsigned char bCis1[SMT_DAT_MAX / 4]; // CIS Area-1
unsigned char bIdi1[SMT_DAT_MAX / 4]; // Identify Drive Information Area-1
unsigned char bCis2[SMT_DAT_MAX / 4]; // CIS Area-2
unsigned char bIdi2[SMT_DAT_MAX / 4]; // Identify Drive Information Area-2
unsigned char bFnSelInf[4]; // Function Select Information Area
unsigned char bInvDatFlg; // Invalid Data Flag Area
unsigned char bRsv1; // (RESERVED) : 0xFF
unsigned char bRsv2[2]; // (RESERVED) : 0x00
unsigned char bEcc2[3]; // ECC Area-2
unsigned char bRsv3[2]; // (RESERVED) : 0x00
unsigned char bEcc1[3]; // ECC Area-1
}stCisBuff;
////////////////////
/// DATA BUFFER ///
////////////////////
struct{
unsigned char bData1[SMT_DAT_MAX / 2]; // Data Area-1
unsigned char bData2[SMT_DAT_MAX / 2]; // Data Area-2
unsigned char bRsv1[4]; // (RESERVED)
unsigned char bDatSts; // Data Status Area
unsigned char bBlkSts; // Block Status Area
unsigned char bBlkAdr1[2]; // Block Address Area-1
unsigned char bEcc2[3]; // ECC Area-2
unsigned char bBlkAdr2[2]; // Block Address Area-2
unsigned char bEcc1[3]; // ECC Area-1
}stDatBuff;
};
/*------------------------------------------------------*/
/* Block copy function's parameter */
/*------------------------------------------------------*/
struct SMT_BLKCOPY_PARAMS{
unsigned long ulLogBlk; // Logical Block Address
unsigned long ulFirstBlk; // Copy Part top sector number(first half)
unsigned long ulLatterBlk; // Copy Part top sector number(latter half)
unsigned long ulDestBlk; // New got block address
unsigned long ulExceptSct; // Not copying sector number
unsigned char bValidBlkFlag; // function control flag
unsigned char bVerify; // Verify flag
};
/********************************************************/
/* PROTOTYPE */
/********************************************************/
/*------------------------------------------------------*/
/* SMART MEDIA FAT FILE SYSTEM FUNCTION */
/*------------------------------------------------------*/
extern unsigned long smtChgPgNum(unsigned long, unsigned long, unsigned long);
extern unsigned long smtChgLogNum(unsigned char, unsigned char);
extern unsigned long smtChgPhyNum(unsigned long);
extern unsigned long smtChgBlkNum(unsigned long);
extern int smtInitDev(FatInitParams_t *);
extern int smtGetDevInfo(unsigned char);
extern int smtCntBadBlk(void);
extern int smtInitInsInfo(unsigned long);
extern void smtClrBlkTbl(unsigned long);
extern int smtCrtBlkTbl(unsigned long, unsigned long, unsigned char);
extern int smtChkDupli(unsigned long, unsigned long, unsigned long);
extern unsigned long smtGetEccVal(unsigned char *, unsigned char);
extern int smtCalcEccVal(unsigned char *);
extern int smtChkEccVal(unsigned char *, unsigned char, int);
extern int smtRdSect(unsigned char, unsigned long, unsigned long, unsigned char *);
extern int smtRdEvac(unsigned long, unsigned long);
extern int smtWtSect(unsigned char, unsigned long, unsigned long, unsigned char *, unsigned char);
extern int smtWtEvac(unsigned long, unsigned long, unsigned char *, unsigned char);
extern int smtChkRdDat(unsigned char *);
extern int smtChkPrty(unsigned short);
extern int smtChkBadBlk(unsigned char);
extern int smtGetFreeBlk(unsigned long, unsigned long *);
extern int smtEntryBadBlk(unsigned long, unsigned long);
extern void smtSetProlDat(unsigned long, unsigned char *);
extern int smtWtBlkAddr(unsigned long, unsigned long, unsigned long);
extern int smtDupliSect(unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, unsigned char);
// following two functions are declarated in smt.h(public file)
//extern int smtMerror(void);
//extern void smtMclearErr(void);
extern int smtOpenLib(FatInitParams_t *);
extern int smtCloseLib(void);
extern long smtGetCacheRAMSize(void);
extern int smtCacheRAMEntry(unsigned char *);
extern int smtPageReadWrap(unsigned char, unsigned long, unsigned long, char *);
extern int smtVerifyCheck(unsigned long, unsigned char *);
extern int smtBlockCopy(struct SMT_BLKCOPY_PARAMS *);
/*------------------------------------------------------*/
/* SMART MEDIA FAT FORMAT FUNCTION */
/*------------------------------------------------------*/
extern int smtCisDataWrite(void);
extern int smtCheckCisData(unsigned char *);
extern void smtSetMstBoot(unsigned char *);
extern void smtSetPtbBoot(unsigned char *);
extern int smtOpenHandle(unsigned char);
extern int smtCloseHandle(unsigned char);
#endif //__SMART_MEDIA_FAT_LIBRARY__
/***** End of file *****/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -