123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185 |
- {$MACRO ON}
- (******************************************************************************
- *
- * Copyright (c) 1998-2000 Palm, Inc. or its subsidiaries.
- * All rights reserved.
- *
- * File: SlotDrvrLib.h
- *
- * Release: Palm OS SDK 4.0 (63220)
- *
- * Description:
- * Sample Slot Driver library implementation.
- *
- * History:
- * 02/25/00 Created by Steve Minns
- * 09/15/00 lrt Updated CardMetricsType stucture to include more
- * useful fields, inc'd API Version
- *
- *****************************************************************************)
- unit slotdrvrlib;
- interface
- uses palmos, libtraps, expansionmgr;
- const
- slotDrvrAPIVersion = $00000002;
- // The number of bytes per sector is fixed
- slotSectorSize = 512;
- (********************************************************************
- * Card Metrics
- * These structures contains all of the information about the physical
- * structure of the card that may be needed by a filesystem in order
- * to format volumes on the card.
- ********************************************************************)
- slotDrvrPartitionTypeFAT12 = $01;
- slotDrvrPartitionTypeFAT16Under32MB = $04;
- slotDrvrPartitionTypeFAT16Over32MB = $06;
- slotDrvrBootablePartition = $80;
- slotDrvrNonBootablePartition = $00;
- type
- CardMetricsType = record
- totalSectors: UInt32; // The total number of sectors accessable via SlotCardSector[Read/Write]
- // (some media may contain extra sectors in case one goes bad,
- // or for storing configuration information, but they are handled
- // internally to the slot driver, and not accessable)
- bytesPerSector: UInt16; // The number of bytes in one sector.
- // currently for Palm, this must be the standard 512
- sectorsPerHead: UInt16; // The number of Sectors per Head
- // as given by guidelines in the specification for this media type
- // even though all of our disks accesses are LBA,
- // this is for compatibility when filling out MBRs and PBRs
- // if the media guidelines don't care, this value is set to 0
- headsPerCylinder: UInt16; // The number of Heads per Cylinder
- // as given by guidelines in the specification for this media type
- // even though all of our disks accesses are LBA,
- // this is for compatibility when filling out MBRs and PBRs
- // if the media guidelines don't care, this value is set to 0
- reserved1: UInt16; // Reserved
- sectorsPerBlock: UInt8; // A suggested number of Sectors per Block (Cluster)
- // as given by guidelines in the specification for this media type
- // if the media guidelines don't care, this value will be set to 0
- partitionType: UInt8; // The suggested partition type (System ID) of the first partition
- // as given by guidelines in the specification for this media type
- // if the media guidelines don't care, this value will be set to 0
- bootIndicator: UInt8; // The suggested bootability of the first partition
- // as given by guidelines in the specification for this media type
- // (generally, 0x80=bootable, default boot partition 0x00=not-bootable)
- // if the media guidelines don't care, this value will be set to 0xFF
- reserved2: UInt8; // Reserved
- partitionStart: UInt32; // The suggested starting sector of the first partition
- // as given by guidelines in the specification for this media type
- // if this value is set to zero, and the partitionSize value is non-zero
- // the media guidelines suggest to not use an MBR, and only use a PBR at sector 0
- // if the media guidelines don't care, the partitionSize value will be set to 0
- partitionSize: UInt32; // The suggested size of the first partition
- // as given by guidelines in the specification for this media type
- // if the media guidelines don't care, this value will be set to 0, and
- // the partitionStart parameter is also ignored
- end;
- CardMetricsTag = CardMetricsType;
- CardMetricsPtr = ^CardMetricsType;
- (********************************************************************
- * SlotDrvr library function trap ID's. Each library call gets a trap number:
- * SlotDrvrLibTrapXXXX which serves as an index into the library's dispatch table.
- * The constant sysLibTrapCustom is the first available trap number after
- * the system predefined library traps Open,Close,Sleep & Wake.
- *
- * WARNING!!! The order of these traps MUST match the order of the dispatch
- * table in SlotDrvrLibDispatch.c!!!
- ********************************************************************)
- const
- SlotTrapLibAPIVersion = sysLibTrapCustom;
- SlotTrapCustomControl = sysLibTrapCustom + 1;
- SlotTrapCardPresent = sysLibTrapCustom + 2;
- SlotTrapCardInfo = sysLibTrapCustom + 3;
- SlotTrapCardMediaType = sysLibTrapCustom + 4;
- SlotTrapCardIsFilesystemSupported = sysLibTrapCustom + 5;
- SlotTrapCardMetrics = sysLibTrapCustom + 6;
- SlotTrapCardLowLevelFormat = sysLibTrapCustom + 7;
- SlotTrapCardSectorRead = sysLibTrapCustom + 8;
- SlotTrapCardSectorWrite = sysLibTrapCustom + 9;
- SlotTrapPowerCheck = sysLibTrapCustom + 10;
- SlotTrapMediaType = sysLibTrapCustom + 11;
- SlotTrapCardReserve = sysLibTrapCustom + 12;
- SlotTrapCardRelease = sysLibTrapCustom + 13;
- SlotTrapCardGetSerialPort = sysLibTrapCustom + 14;
- (********************************************************************
- * API Prototypes
- ********************************************************************)
- (********************************************************************
- * Standard library open, close, sleep and wake functions
- ********************************************************************)
- function SlotOpen(slotLibRefNum: UInt16): Err; syscall sysLibTrapOpen;
- function SlotClose(slotLibRefNum: UInt16): Err; syscall sysLibTrapClose;
- function SlotSleep(slotLibRefNum: UInt16): Err; syscall sysLibTrapSleep;
- function SlotWake(slotLibRefNum: UInt16): Err; syscall sysLibTrapWake;
- (********************************************************************
- * Custom library API functions
- ********************************************************************)
- function SlotLibAPIVersion(slotLibRefNum: UInt16):UInt32; syscall SlotTrapLibAPIVersion;
- function SlotCustomControl(slotLibRefNum: UInt16; apiCreator: UInt32; apiSelector: UInt16; valueP: Pointer; var valueLenP: UInt16): Err; syscall SlotTrapCustomControl;
- function SlotCardPresent(slotLibRefNum: UInt16; slotRefNum: UInt16): Err; syscall SlotTrapCardPresent;
- function SlotCardInfo(slotLibRefNum, slotRefNum: UInt16; var infoP: ExpCardInfoType): Err; syscall SlotTrapCardInfo;
- function SlotCardMediaType(slotLibRefNum, slotRefNum: UInt16; var mediaTypeP: UInt32): Err; syscall SlotTrapCardMediaType;
- function SlotCardReserve(slotLibRefNum, slotRefNum: UInt16): Err; syscall SlotTrapCardReserve;
- function SlotCardRelease(slotLibRefNum, slotRefNum: UInt16): Err; syscall SlotTrapCardRelease;
- function SlotCardGetSerialPort(slotLibRefNum, slotRefNum: UInt16; var portP: UInt32): Err; syscall SlotTrapCardGetSerialPort;
- (********************************************************************
- * SlotDriver Formatting APIs:
- ********************************************************************)
- function SlotCardIsFilesystemSupported(slotLibRefNum, slotRefNum: UInt16; filesystemType: UInt32): Boolean; syscall SlotTrapCardIsFilesystemSupported;
- function SlotCardMetrics(slotLibRefNum, slotRefNum: UInt16; cardMetricsP: CardMetricsPtr): Err; syscall SlotTrapCardMetrics;
- function SlotCardLowLevelFormat(slotLibRefNum, slotRefNum: UInt16): Err; syscall SlotTrapCardLowLevelFormat;
- (********************************************************************
- * SlotDriver Logical Block Read/Write APIs:
- ********************************************************************)
- function SlotCardSectorRead(slotLibRefNum, slotRefNum: UInt16; sectorNumber: UInt32; var bufferP: UInt8; var numSectorsP: UInt32): Err; syscall SlotTrapCardSectorRead;
- function SlotCardSectorWrite(slotLibRefNum, slotRefNum: UInt16; sectorNumber: UInt32; var bufferP: UInt8; var numSectorsP: UInt32): Err; syscall SlotTrapCardSectorWrite;
- (********************************************************************
- * Power Mgmt APIs:
- ********************************************************************)
- const
- slotLibPowerFlag_WakeUp = $0001; // Add the power required to bring the slot hardware out of low-power mode
- slotLibPowerFlag_FormatMedia = $0002; // Add the power required to perform a low-level format of the card media
- function SlotPowerCheck(slotLibRefNum, slotRefNum, operationFlags, readBlocks, writeBlocks: UInt16): Err; syscall SlotTrapPowerCheck;
- implementation
- end.
|