Repository URL to install this package:
Version:
3.0.0 ▾
|
{$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.