⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 doslink.h

📁 台湾凌阳方案300万数码相机源代码
💻 H
字号:
#ifndef _doslink_
#define _doslink_

//------------------------------------------------------------------------------
//Function prototype
//------------------------------------------------------------------------------

//-------------------------------------
//dosdir.c
//-------------------------------------
WORD DOS_RootFindName(BYTE* name);
WORD DOS_RootMakeDir(BYTE* name, WORD numCluster);
BYTE DOS_RootAddBaseFdb(BYTE* name, WORD startCluster, ULONG fileSize);
BYTE DOS_RootAddFdb(BYTE *fdb, BYTE matchCond, ULONG refCon);
WORD DOS_FindName(BYTE* name);
WORD DOS_MakeDir(BYTE* name, WORD numCluster);
WORD DOS_GetCurrDir(void);
void DOS_SetCurrDir(WORD currDir);
BYTE DOS_AddBaseFdb(BYTE* name, WORD startCluster, ULONG fileSize);
BYTE DOS_AddFdb(BYTE *fdb, BYTE matchCond, ULONG refCon);
WORD DOS_FindFdb(BYTE matchCond, ULONG refCon, ULONG logAddr, WORD siz, WORD *fdbOffset, ULONG *fdbLogAddr);
void DOS_FillBaseFdb(BYTE *fdb, BYTE *name, WORD startCluster, ULONG fileSize);
BYTE DOS_WriteDirInitData(WORD* fatReq, WORD currentStart, WORD parentStart);
BYTE DOS_DeleteFile(BYTE *buf, WORD fdbOffset, ULONG logAddr);
WORD DOS_SearchFdb(BYTE matchCond, ULONG refCon, ULONG ramStartAddr, ULONG ramEndAddr, WORD *pLastCluster, WORD *fdbOffset);
ULONG DOS_FindFile(WORD startCluster, BYTE matchCond, ULONG refCon, WORD *fdbOffset);

// WWWW0410
BYTE DOS_RootModifyFdb(BYTE *fdb, BYTE matchCond, ULONG refCon, BYTE modifyOffset, BYTE modifyLen);
BYTE DOS_ModifyFdb(BYTE *fdb, BYTE matchCond, ULONG refCon, BYTE modifyOffset, BYTE modifyLen);
BYTE DOS_GetFdb(BYTE *fdb, BYTE matchCond, ULONG refCon, ULONG *fdbLogAddr);
BYTE DOS_SetFdb(BYTE *fdb, ULONG fdbLogAddr);
BYTE DOS_RootGetFdb(BYTE *fdb, BYTE matchCond, ULONG refCon, ULONG *fdbLogAddr);
BYTE DOS_RootSetName(BYTE *name, WORD startCluster, ULONG fileSize);


//-------------------------------------
//dosfile.c
//-------------------------------------
BYTE File_Make(BYTE srcPath, ULONG ramAddr, BYTE* name, ULONG fileSize);
WORD File_Open(BYTE *name, BYTE rwMode, WORD numCluster);
BYTE File_Close(WORD fHandle, BYTE* name, BYTE rwMode, ULONG fileSize);
BYTE File_CloseErr(WORD fHandle, BYTE rwMode);
BYTE File_Delete(BYTE* name);
BYTE File_Delete1File(BYTE matchCond, ULONG refCon);
BYTE File_DeleteAllFile(BYTE matchCond, ULONG refCon);

//-------------------------------------
//dosfat.c
//-------------------------------------
WORD DOS_GetClusterSize(void);
BYTE DOS_Initialize(void);
BYTE DOS_LoadMBS(ULONG* pbsAddr);
BYTE DOS_LoadPBS(ULONG pbsAddr);
BYTE DOS_LoadFat(void);
BYTE DOS_SaveFat(WORD startCluster);
BYTE DOS_MakeFatChain(WORD* fatReq, BYTE continueSearh );
BYTE DOS_MakeFat12Chain(WORD* fatReq, BYTE continueSearh );
BYTE DOS_MakeFat16Chain(WORD* fatReq, BYTE continueSearh);
BYTE DOS_SetFatChain(WORD fatReq);
BYTE DOS_SetFat12Chain(WORD fatReq);
BYTE DOS_SetFat16Chain(WORD fatReq);
BYTE DOS_ConnectFatChain(void);
BYTE DOS_ConnectFat12Chain(void);
BYTE DOS_ConnectFat16Chain(void);
WORD DOS_GetNextCluster(WORD currCluster);
WORD DOS_GetNextCluster12(WORD currCluster);
WORD DOS_GetNextCluster16(WORD currCluster);
BYTE DOS_ClearFatChain(WORD startCluster);
BYTE DOS_ClearFat16Chain(WORD startCluster);
BYTE DOS_ClearFat12Chain(WORD startCluster);
ULONG DOS_ClusterLogAddr(WORD startCluster);
BYTE DOS_ReadSector(BYTE dstPath, ULONG logAddr, ULONG ramAddr);
BYTE DOS_ReadMoreSector(BYTE dstPath, ULONG logAddr, ULONG ramAddr, ULONG size);
BYTE DOS_WriteSector(BYTE srcPath, ULONG logAddr, ULONG ramAddr);
BYTE DOS_WriteMoreSector(BYTE srcPath, ULONG logAddr, ULONG ramAddr, ULONG size);

BYTE DOS_CheckDiskSpace(WORD *reqCluster);
WORD DOS_GetDiskSpace(void);
BYTE DOS_Format(BYTE eraseCard);
void DOS_SetError(WORD errCode);
void DOS_ClearError(void);
WORD DOS_GetError(void);
ULONG DOS_ReadLong(UCHAR *dataAry, WORD offset);
void DOS_FillLongAtSdram(ULONG ul);

// K_DOS_HaveLinearFAT
BYTE DOS_File_Build_LinearFAT(WORD startCluster);
BYTE DOS_Build_LinearFAT(void);
WORD DOS_CalNumCluster(ULONG siz);

//-------------------------------------
//dosrw.c
//-------------------------------------
BYTE File_Write(WORD fHandle, BYTE srcPath, ULONG writeSize, ULONG ramAddr, BYTE findHeaderPage);
BYTE File_Read(WORD fHandle, BYTE dstPath, ULONG readSize, ULONG ramAddr, ULONG fpos);
void File_FifoWritePage2Card(ULONG startLogAddr,BYTE hasOldBlk);
BYTE File_ReadDataToDram(WORD fHandle, ULONG readSize, ULONG ramAddr, ULONG fOffset);
WORD File_FindPattern(WORD fHandle, BYTE *pat, WORD patSize, ULONG *pFOffset, ULONG *pSize, ULONG *pID);
ULONG File_ReadValue(WORD fHandle, ULONG *pFOffset, BYTE littleEndian, BYTE valueSize);
BYTE File_ReadSeek(WORD fHandle, ULONG fpos);
BYTE File_LWrite(WORD fHandle, BYTE srcPath, ULONG writeSize, ULONG ramAddr, BYTE findHeaderPage);
BYTE File_LRead(WORD fHandle, BYTE dstPath, ULONG readSize, ULONG ramAddr, ULONG fpos);  

//-------------------------------------
//dosusb.c
//-------------------------------------
BYTE DOS_UploadFdb(WORD fileCount, ULONG ramAddr);
BYTE DOS_UploadEccInfo(WORD eccCount);

BYTE DOS_Upload1File(BYTE matchCond, ULONG refCon);
//patch4.5@richie@partial file upload
BYTE DOS_UploadPartialFile(ULONG offset, ULONG length, WORD fileIndex);

BYTE DOS_GetUsbDataReady(void);         // 500 use

//------------------------------------------------------------------------------
//Constant
//------------------------------------------------------------------------------

//-------------------------------------
//dosfat.c
//-------------------------------------
#define K_DOS_SectorSize	512

#define K_DOS_DstSram		1
#define K_DOS_DstDram		2
#define K_DOS_DstUsb		3
//richie@vc0422
#define K_DOS_DstBulk2Usb	4	// 533 use

#define K_DOS_SrcSram		1
#define K_DOS_SrcDram		2
#define K_DOS_SrcUsb		3

//-------------------------------------
//dosfile.c
//-------------------------------------
#define K_File_SrcAviFifo2Card                 0
#define K_File_SrcAviDram2Card                 1
#define K_File_SrcDataDram2Card                2
#define K_File_SrcDataDram2CardByPort          3	// HIS120-5

#define K_DOS_MatchName                         1
#define K_DOS_MatchFree                         2
#define K_DOS_MatchMinUsr                       50
#define K_DOS_MatchMaxUsr                       255

// access mode for file_open
#define K_DOS_NewFile                       	0x80
#define K_DOS_ReadFile                       	0x01
#define K_DOS_RootReadFile                      0x02

// WWWW0408
#define K_DOS_HaveLinearFAT                     1
#define K_DOS_NewFile_LinearFAT                 0x81
#define K_DOS_ReadFile_LinearFAT                0x03
#define K_DOS_RootReadFile_LinearFAT            0x04

//------------------------------------------------------------------------------
//External variable
//------------------------------------------------------------------------------
//-------------------------------------
//dosfat.c
//-------------------------------------
extern	xdata   BYTE    G_DOS_SystemId;
extern	xdata   WORD    G_DOS_SectorSize;
extern	xdata   WORD    G_DOS_ClusterSize;
extern	xdata   WORD    G_DOS_SectorPerFat;
extern	xdata   WORD    G_DOS_TotalRootDir;
extern	xdata   BYTE    G_DOS_FileSystemType;

extern	xdata   ULONG   G_DOS_FatAddr;
extern	xdata   ULONG   G_DOS_FatEndAddr;
extern	xdata   ULONG   G_DOS_Fat2Addr;
extern	xdata   ULONG   G_DOS_FatSize;

extern	xdata   ULONG   G_DOS_RootDirAddr;
extern	xdata   ULONG   G_DOS_DataAddr;

extern	xdata   WORD    G_Card_TotalSizeMB;
extern	xdata   WORD	G_DOS_TotalFreeCluster;
extern	xdata   WORD	G_DOS_ErrCode;
extern	xdata   ULONG   G_Card_SectorPerCard;
extern	xdata   WORD	G_Card_BytePerSector;

extern	data    BIT     G_File_AudioEnable;
extern	data    BIT     G_File_SDRAM_Read;
extern	idata   ULONG   G_DOS_SDRAM_NextIntRetAddr;
extern	xdata	ULONG 	G_DOS_SDRAM_FAT1Addr;
extern	xdata   BYTE    G_DOS_Stop_Initial;
extern	xdata   BYTE    G_DOS_Initial_Status;

extern	xdata   ULONG   G_DOS_SectorPerCard;        
extern	xdata   ULONG   G_DOS_HiddenSector;
extern	xdata   WORD    G_DOS_ReserveSector;
extern	xdata   ULONG   G_DOS_PBSAddr;
extern	xdata   WORD    G_DOS_Head;
extern	xdata   WORD    G_DOS_SectorPerTrack;
extern	xdata   WORD    G_DOS_Cylinder;
extern	xdata   WORD    G_DOS_SectorPerCluster;

extern	data    BIT 	G_DOS_CardErrDetected;	// patch 4.4-2@wyeo@abnormal action recovery

// WWWW0408
extern	xdata	WORD	G_DOS_FileStartCluster;
#if (K_DOS_HaveLinearFAT)
extern	xdata	ULONG 	G_DOS_SDRAM_LinearFATAddr;
extern	data    BIT     G_DOS_UseLinearFAT;
extern	xdata	WORD    G_DOS_LinearFATMax;
extern	xdata	WORD    G_DOS_LinearFATTotal;
extern	xdata	WORD    G_DOS_LinearFATIndex;
extern	data    BIT     G_DOS_FATIsLinear;
#endif

// wyeo@0517
#define K_PreWriteOldBlock		0	// patch 4.4-4@wyeo@function not test, MUST NOT TURN ON

#if (K_PreWriteOldBlock)
extern	data    BIT     G_SMC_PreWriteOldBlock;
extern	data    BIT     G_SMC_EnablePreWriteOldBlock;
extern	data    BIT     G_SMC_OldBlockIsNew;
extern	data    BIT     G_SMC_FreshOldBlk;
BYTE SMC_PreWriteOldBlock(void);
#endif

//-------------------------------------
//dosfile.c
//-------------------------------------
extern	xdata	ULONG 	G_DOS_SDRAM_MaxAddr;
extern	xdata	ULONG	G_DOS_FilePos;

// avi related
extern	xdata	WORD	G_File_WritePageCount;
extern	idata	BYTE	G_File_PevDone;
extern	xdata   ULONG   G_File_HdrLogAddr;
extern	xdata   ULONG   G_File_HdrPhyAddr;
extern	xdata   WORD    G_File_HdrLogBlock;
extern	xdata   ULONG   G_File_FrameHdrLogAddr;
extern	xdata   ULONG   G_File_FrameHdrPhyAddr;
extern	xdata   WORD    G_File_FrameHdrLogBlock;

// HIS120-0001 start
extern	xdata   ULONG   G_File_ReserveLogAddr[];
extern	xdata   ULONG   G_File_ReservePhyAddr[];
extern	xdata   WORD    G_File_ReserveLogBlock[];
extern	xdata   ULONG   G_File_FrameReserveLogAddr[];
extern	xdata   ULONG   G_File_FrameReservePhyAddr[];
extern	xdata   WORD    G_File_FrameReserveLogBlock[];
// HIS120-0001 end

//-------------------------------------
//dosdir.c
//-------------------------------------
extern	xdata   WORD    G_DOS_CurrDirCluster;
extern	xdata 	ULONG 	G_DOS_FileSize;
extern  xdata	ULONG 	G_DOS_SDRAM_WorkAddr;
extern  xdata	ULONG 	G_DOS_SDRAM_WorkSize;
extern  xdata   WORD    G_DOS_CreateTime;
extern  xdata   WORD    G_DOS_CreateDate;

//ada@0501 for card write protect
#if (K_HAVE_L2)
extern    xdata   UCHAR   G_DOS_FileAttribute;
extern    xdata   ULONG   G_DOS_FdbAddress;
#endif

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -