palm-os-sdk/sdk-5r3/include/Extensions/ExpansionMgr/ExpansionMgr.h
2016-04-06 13:22:15 -07:00

229 lines
8.9 KiB
C

/******************************************************************************
*
* Copyright (c) 2000-2003 PalmSource, Inc. All rights reserved.
*
* File: ExpansionMgr.h
*
* Release: Palm OS 5 SDK (68K) R3.
*
* Description:
* Header file for Expansion Manager.
*
*****************************************************************************/
#ifndef __EXPANSIONMGR_H__
#define __EXPANSIONMGR_H__
#include <PalmTypes.h>
#include <CoreTraps.h>
#include <SystemMgr.h>
// When building the PalmOS 3.5 version of ExpansionMgr,
// since these constants were not in the 3.5 headers...
#ifdef BUILDING_AGAINST_PALMOS35
#define sysTrapExpansionMgr sysTrapSysReserved2
#define expErrorClass 0x2900 // Post 3.5 this is defined in ErrorBase.h
// Post 3.5 these are defined in NotifyMgr.h.
#define sysNotifyCardInsertedEvent 'crdi' // Broadcast when an ExpansionMgr card is
// inserted into a slot, and the slot driver
// calls ExpCardInserted. Always broadcast
// from UI task.
// ExpansionMgr will play a sound & attempt to
// mount a volume unless 'handled' is set
// to true by a notification handler.
// PARAMETER: slot number cast as void*
#define sysNotifyCardRemovedEvent 'crdo' // Broadcast when an ExpansionMgr card is
// removed from a slot, and the slot driver
// calls ExpCardRemoved. Always broadcast
// from UI task.
// ExpansionMgr will play a sound & attempt to
// unmount a volume unless 'handled' is set
// to true by a notification handler.
// PARAMETER: slot number cast as void*
#define sysNotifyVolumeMountedEvent 'volm' // Broadcast when a VFSMgr volume is
// mounted, Always broadcast
// from UI task.
// PARAMETER: VFSAnyMountParamPtr cast as void*
#define sysNotifyVolumeUnmountedEvent 'volu' // Broadcast when a VFSMgr volume is
// unmounted, Always broadcast
// from UI task.
// PARAMETER: volume refNum cast as void*
#define sysFileCExpansionMgr 'expn' // Type of Expansion Manager extension database
#define sysFileTSlotDriver 'libs' // file type for slot driver libraries
#else
#define sysTrapExpansionMgr sysTrapExpansionDispatch
#endif
#ifndef USE_EXPMGR_TRAPS
#if EMULATION_LEVEL == EMULATION_NONE
#define USE_EXPMGR_TRAPS 1
#else
#define USE_EXPMGR_TRAPS 0
#endif
#endif
#ifdef BUILDING_EXPMGR_DISPATCH
#define EXPMGR_TRAP(expMgrSelectorNum)
#else
#define EXPMGR_TRAP(sel) \
_SYSTEM_API(_CALL_WITH_SELECTOR)(_SYSTEM_TABLE, sysTrapExpansionMgr, sel)
#endif
#define expFtrIDVersion 0 // ID of feature containing version of ExpansionMgr.
// Check existence of this feature to see if ExpMgr is installed.
#define expMgrVersionNum ((UInt16)200) // version of the ExpansionMgr, obtained from the feature
#define expInvalidSlotRefNum 0
typedef Err (*ExpPollingProcPtr)(UInt16 slotLibRefNum,
void *slotPollRefConP);
/************************************************************
* Capabilities of the hardware device for ExpCardInfoType.capabilityFlags
*************************************************************/
#define expCapabilityHasStorage 0x00000001 // card supports reading (& maybe writing) sectors
#define expCapabilityReadOnly 0x00000002 // card is read only
#define expCapabilitySerial 0x00000004 // card supports dumb serial interface
#define expCardInfoStringMaxLen 31
typedef struct ExpCardInfoTag
{
UInt32 capabilityFlags; // bits for different stuff the card supports
Char manufacturerStr[expCardInfoStringMaxLen+1]; // Manufacturer, e.g., "Palm", "Motorola", etc...
Char productStr[expCardInfoStringMaxLen+1]; // Name of product, e.g., "SafeBackup 32MB"
Char deviceClassStr[expCardInfoStringMaxLen+1]; // Type of product, e.g., "Backup", "Ethernet", etc.
Char deviceUniqueIDStr[expCardInfoStringMaxLen+1];// Unique identifier for product, e.g., a serial number. Set to "" if no such identifier exists.
} ExpCardInfoType, *ExpCardInfoPtr;
/************************************************************
* Iterator start and stop constants.
* Used by ExpSlotEnumerate
*************************************************************/
#define expIteratorStart 0L
#define expIteratorStop 0xffffffffL
/************************************************************
* Bits in the 'handled' field used in Card Inserted and Removed notifications
*************************************************************/
#define expHandledVolume 0x01 // any volumes associated with the card have been dealt with... the ExpansionMgr will not mount or unmount as appropriate.
#define expHandledSound 0x02 // Any pleasing sounds have already been played... the ExpansionMgr will not play a pleasing sound on this insertion/removal.
/************************************************************
* Error codes
*************************************************************/
#define expErrUnsupportedOperation (expErrorClass | 1) // unsupported or undefined opcode and/or creator
#define expErrNotEnoughPower (expErrorClass | 2) // the required power is not available
#define expErrCardNotPresent (expErrorClass | 3) // no card is present
#define expErrInvalidSlotRefNum (expErrorClass | 4) // slot reference number is bad
#define expErrSlotDeallocated (expErrorClass | 5) // slot reference number is within valid range, but has been deallocated.
#define expErrCardNoSectorReadWrite (expErrorClass | 6) // the card does not support the
// SlotDriver block read/write API
#define expErrCardReadOnly (expErrorClass | 7) // the card does support R/W API
// but the card is read only
#define expErrCardBadSector (expErrorClass | 8) // the card does support R/W API
// but the sector is bad
#define expErrCardProtectedSector (expErrorClass | 9) // The card does support R/W API
// but the sector is protected
#define expErrNotOpen (expErrorClass | 10) // slot driver library has not been opened
#define expErrStillOpen (expErrorClass | 11) // slot driver library is still open - maybe it was opened > once
#define expErrUnimplemented (expErrorClass | 12) // Call is unimplemented
#define expErrEnumerationEmpty (expErrorClass | 13) // No values remaining to enumerate
#define expErrIncompatibleAPIVer (expErrorClass | 14) // The API version of this slot driver is not supported by this version of ExpansionMgr.
/************************************************************
* Common media types. Used by SlotCardMediaType and SlotMediaType.
*************************************************************/
#define expMediaType_Any 'wild' // matches all media types when looking up a default directory
#define expMediaType_MemoryStick 'mstk'
#define expMediaType_CompactFlash 'cfsh'
#define expMediaType_SecureDigital 'sdig'
#define expMediaType_MultiMediaCard 'mmcd'
#define expMediaType_SmartMedia 'smed'
#define expMediaType_RAMDisk 'ramd' // a RAM disk based media
#define expMediaType_PoserHost 'pose' // Host filesystem emulated by Poser
#define expMediaType_MacSim 'PSim' // Host filesystem emulated by Poser
/************************************************************
* Selectors for routines found in the Expansion manager. The order
* of these selectors MUST match the jump table in ExpansionMgr.c.
*************************************************************/
#define expInit 0
#define expSlotDriverInstall 1
#define expSlotDriverRemove 2
#define expSlotLibFind 3
#define expSlotRegister 4
#define expSlotUnregister 5
#define expCardInserted 6
#define expCardRemoved 7
#define expCardPresent 8
#define expCardInfo 9
#define expSlotEnumerate 10
#define expCardGetSerialPort 11
#define expMaxSelector expCardGetSerialPort
Err ExpInit(void)
EXPMGR_TRAP(expInit);
Err ExpSlotDriverInstall(UInt32 dbCreator, UInt16 *slotLibRefNumP)
EXPMGR_TRAP(expSlotDriverInstall);
Err ExpSlotDriverRemove(UInt16 slotLibRefNum)
EXPMGR_TRAP(expSlotDriverRemove);
Err ExpSlotLibFind(UInt16 slotRefNum, UInt16 *slotLibRefNum)
EXPMGR_TRAP(expSlotLibFind);
Err ExpSlotRegister(UInt16 slotLibRefNum, UInt16 *slotRefNum)
EXPMGR_TRAP(expSlotRegister);
Err ExpSlotUnregister(UInt16 slotRefNum)
EXPMGR_TRAP(expSlotUnregister);
Err ExpCardInserted(UInt16 slotRefNum)
EXPMGR_TRAP(expCardInserted);
Err ExpCardRemoved(UInt16 slotRefNum)
EXPMGR_TRAP(expCardRemoved);
Err ExpCardPresent(UInt16 slotRefNum)
EXPMGR_TRAP(expCardPresent);
Err ExpCardInfo(UInt16 slotRefNum, ExpCardInfoType* infoP)
EXPMGR_TRAP(expCardInfo);
Err ExpSlotEnumerate(UInt16 *slotRefNumP, UInt32 *slotIteratorP)
EXPMGR_TRAP(expSlotEnumerate);
Err ExpCardGetSerialPort(UInt16 slotRefNum, UInt32* portP)
EXPMGR_TRAP(expCardGetSerialPort);
#endif // __EXPANSIONMGR_H__