116 lines
5.1 KiB
C
116 lines
5.1 KiB
C
|
/*
|
||
|
* $Log: V:/Flite/archives/TrueFFS5/Src/BDDEFS.H_V $
|
||
|
*
|
||
|
* Rev 1.4 Jan 17 2002 23:00:00 oris
|
||
|
* Replace FLFlash record with a pointer to FLFlash record (TrueFFS now uses only SOCKETS number of FLFlash records).
|
||
|
* Removed SINGLE_BUFFER ifdef.
|
||
|
* Added partition parameter to setBusy.
|
||
|
*
|
||
|
* Rev 1.3 Mar 28 2001 05:59:22 oris
|
||
|
* copywrite dates.
|
||
|
* Added empty line at the end of the file
|
||
|
* left alligned all # directives
|
||
|
* Removed dismountLowLevel extern prototype
|
||
|
*
|
||
|
* Rev 1.2 Feb 18 2001 14:22:58 oris
|
||
|
* Removed driveHandle field from volume record.
|
||
|
*
|
||
|
* Rev 1.1 Feb 12 2001 12:51:08 oris
|
||
|
* Changed the mutex field to a pointer to support TrueFFS 5.0 mutex mechanism
|
||
|
*
|
||
|
* Rev 1.0 Feb 02 2001 12:04:16 oris
|
||
|
* Initial revision.
|
||
|
*
|
||
|
*/
|
||
|
|
||
|
/***********************************************************************************/
|
||
|
/* M-Systems Confidential */
|
||
|
/* Copyright (C) M-Systems Flash Disk Pioneers Ltd. 1995-2001 */
|
||
|
/* All Rights Reserved */
|
||
|
/***********************************************************************************/
|
||
|
/* NOTICE OF M-SYSTEMS OEM */
|
||
|
/* SOFTWARE LICENSE AGREEMENT */
|
||
|
/* */
|
||
|
/* THE USE OF THIS SOFTWARE IS GOVERNED BY A SEPARATE LICENSE */
|
||
|
/* AGREEMENT BETWEEN THE OEM AND M-SYSTEMS. REFER TO THAT AGREEMENT */
|
||
|
/* FOR THE SPECIFIC TERMS AND CONDITIONS OF USE, */
|
||
|
/* OR CONTACT M-SYSTEMS FOR LICENSE ASSISTANCE: */
|
||
|
/* E-MAIL = info@m-sys.com */
|
||
|
/***********************************************************************************/
|
||
|
|
||
|
#ifndef BDDEFS_H
|
||
|
#define BDDEFS_H
|
||
|
|
||
|
#include "fltl.h"
|
||
|
#include "flsocket.h"
|
||
|
#include "flbuffer.h"
|
||
|
#include "stdcomp.h"
|
||
|
|
||
|
typedef struct {
|
||
|
char flags; /* See description in flreq.h */
|
||
|
unsigned sectorsPerCluster; /* Cluster size in sectors */
|
||
|
unsigned maxCluster; /* highest cluster no. */
|
||
|
unsigned bytesPerCluster; /* Bytes per cluster */
|
||
|
unsigned bootSectorNo; /* Sector no. of DOS boot sector */
|
||
|
unsigned firstFATSectorNo; /* Sector no. of 1st FAT */
|
||
|
unsigned secondFATSectorNo; /* Sector no. of 2nd FAT */
|
||
|
unsigned numberOfFATS; /* number of FAT copies */
|
||
|
unsigned sectorsPerFAT; /* Sectors per FAT copy */
|
||
|
unsigned rootDirectorySectorNo; /* Sector no. of root directory */
|
||
|
unsigned sectorsInRootDirectory; /* No. of sectors in root directory */
|
||
|
unsigned firstDataSectorNo; /* 1st cluster sector no. */
|
||
|
unsigned allocationRover; /* rover pointer for allocation */
|
||
|
|
||
|
#if FILES > 0
|
||
|
FLBuffer volBuffer; /* Define a sector buffer */
|
||
|
#endif
|
||
|
FLMutex* volExecInProgress;
|
||
|
FLFlash FAR2* flash; /* flash structure for low level operations */
|
||
|
TL tl; /* Translation layer methods */
|
||
|
FLSocket *socket; /* Pointer to socket */
|
||
|
#ifdef WRITE_PROTECTION
|
||
|
unsigned long password[2];
|
||
|
#endif
|
||
|
#ifdef WRITE_EXB_IMAGE
|
||
|
dword binaryLength; /* Actual binary area taken by the exb */
|
||
|
byte moduleNo; /* Currently written module */
|
||
|
#endif /* WRITE_EXB_IMAGE */
|
||
|
} Volume;
|
||
|
|
||
|
/* drive handle masks */
|
||
|
|
||
|
#if defined(FILES) && FILES > 0
|
||
|
typedef struct {
|
||
|
long currentPosition; /* current byte offset in file */
|
||
|
#define ownerDirCluster currentPosition /* 1st cluster of owner directory */
|
||
|
long fileSize; /* file size in bytes */
|
||
|
SectorNo directorySector; /* sector of directory containing file */
|
||
|
unsigned currentCluster; /* cluster of current position */
|
||
|
unsigned char directoryIndex; /* entry no. in directory sector */
|
||
|
unsigned char flags; /* See description below */
|
||
|
Volume * fileVol; /* Drive of file */
|
||
|
} File;
|
||
|
|
||
|
/* File flag definitions */
|
||
|
#define FILE_MODIFIED 4 /* File was modified */
|
||
|
#define FILE_IS_OPEN 8 /* File entry is used */
|
||
|
#define FILE_IS_DIRECTORY 0x10 /* File is a directory */
|
||
|
#define FILE_IS_ROOT_DIR 0x20 /* File is root directory */
|
||
|
#define FILE_READ_ONLY 0x40 /* Writes not allowed */
|
||
|
#define FILE_MUST_OPEN 0x80 /* Create file if not found */
|
||
|
#endif /* FILES > 0 */
|
||
|
|
||
|
/* #define buffer (vol.volBuffer) */
|
||
|
#define execInProgress (vol.volExecInProgress)
|
||
|
|
||
|
extern FLStatus dismountVolume(Volume vol);
|
||
|
extern FLBoolean initDone; /* Initialization already done */
|
||
|
extern Volume vols[VOLUMES];
|
||
|
extern FLStatus setBusy(Volume vol, FLBoolean state, byte partition);
|
||
|
const void FAR0 *findSector(Volume vol, SectorNo sectorNo);
|
||
|
FLStatus dismountFS(Volume vol,FLStatus status);
|
||
|
#if FILES>0
|
||
|
void initFS(void);
|
||
|
#endif
|
||
|
#endif
|