/* File: PCCardAdapterPlugin.h Contains: PC Card Socket Service Plug-In Programming Interface Version: Technology: System 7.5 Release: QuickTime 6.0.2 Copyright: (c) 1996-2001 by Apple Computer, Inc. and SystemSoft Corporation. All rights reserved. Bugs?: For bug reports, consult the following page on the World Wide Web: http://developer.apple.com/bugreporter/ */ #ifndef __PCCARDADAPTERPLUGIN__ #define __PCCARDADAPTERPLUGIN__ #ifndef __MACTYPES__ #include #endif #ifndef __NAMEREGISTRY__ #include #endif #ifndef __INTERRUPTS__ #include #endif #ifndef __PCCARD__ #include #endif #if PRAGMA_ONCE #pragma once #endif #ifdef __cplusplus extern "C" { #endif #if PRAGMA_IMPORT #pragma import on #endif #if PRAGMA_STRUCT_ALIGN #pragma options align=power #elif PRAGMA_STRUCT_PACKPUSH #pragma pack(push, 2) #elif PRAGMA_STRUCT_PACK #pragma pack(2) #endif /*------------------------------------------------------------------------------------ Types ------------------------------------------------------------------------------------*/ /* Interrupt Status Change bits*/ enum { kSCBatteryDead = 0x01, /* Battery Dead Status Change*/ kSCBatteryLow = 0x02, /* Battery Warning Status Change*/ kSCReady = 0x04, /* Ready Status Change*/ kSCCardDetect = 0x08, /* Card Detect Status Change*/ kSCCardEjected = 0x10, /* Card Ejected*/ kSCStatusChange = 0x20, /* PC Card Status Change Signal Asserted*/ kSCRingIndicate = 0x40 /* PC Card Ring Indicate Signal Asserted*/ }; /* IRQ bits */ enum { kIRQLevelMask = 0x1F, kIRQInvalid = 0x20, kIRQHigh = 0x40, kIRQEnable = 0x80 }; /* bits for adapter characteristics flags*/ enum { SS_ADPT_FLG_IND = 0x01, /* indicators for write-protect, card lock,*/ /* battery status, busy status, and XIP*/ /* are shared for all sockets*/ SS_ADPT_FLG_PWR = 0x02, /* if set indicates that the sockets*/ /* share the same power control*/ SS_ADPT_FLG_DBW = 0x04, /* all windows on the adapter must use*/ /* the same Data Bus Width*/ SS_ADPT_FLG_CARDBUS = 0x08, /* all sockets are CardBus PC Card capable*/ SS_ADPT_FLG_DMA = 0x10, /* the adapter has DMA capability*/ /* bits for adapter power characteristics*/ SS_ADPT_FLG_V33 = 0x20, /* adapter supports 3.3 volt power to socket*/ SS_ADPT_FLG_V50 = 0x40, /* adapter supports 5.0 volt power to socket*/ SS_ADPT_FLG_V12 = 0x80 /* adapter supports 12.0 volt power to socket*/ }; /*------------------------------------------------------------------------------------ Calls exported by the Family ------------------------------------------------------------------------------------*/ #if CALL_NOT_IN_CARBON EXTERN_API_C( OSStatus ) CSReportStatusChange (const RegEntryID * adapterRef, PCCardSocket whichSocket, PCCardSCEvents statusChange, PCCardSocketStatus socketStatus); /*------------------------------------------------------------------------------------ Plugin Dispatch Table ------------------------------------------------------------------------------------*/ #endif /* CALL_NOT_IN_CARBON */ typedef CALLBACK_API_C( OSStatus , SSValidateHardwareProc )(const RegEntryID *deviceID); typedef CALLBACK_API_C( OSStatus , SSInitializeProc )(const RegEntryID *deviceID, Boolean replacingOldDriver); typedef CALLBACK_API_C( OSStatus , SSSuspendProc )(const RegEntryID *deviceID); typedef CALLBACK_API_C( OSStatus , SSResumeProc )(const RegEntryID *deviceID); typedef CALLBACK_API_C( OSStatus , SSFinalizeProc )(const RegEntryID *deviceID, Boolean beingReplaced); typedef CALLBACK_API_C( OSStatus , SSInquireAdapterProc )(ItemCount *numberOfSockets, ItemCount *numberOfWindows, ItemCount *numberOfBridgeWindow, PCCardAdapterCapabilities *capabilities); typedef CALLBACK_API_C( OSStatus , SSInquireSocketProc )(PCCardSocket socket, ItemCount *numberOfWindows, PCCardSocketStatus *supportedSocketStatus, PCCardSCEvents *supportedStatusChange); typedef CALLBACK_API_C( OSStatus , SSGetSocketProc )(PCCardSocket socket, PCCardVoltage *Vcc, PCCardVoltage *Vpp, PCCardVoltage *Vs, PCCardInterfaceType *socketIF, PCCardCustomInterfaceID *customIFID, PCCardSocketStatus *socketStatus, PCCardSCEvents *SCEventsMask, PCCardIRQ *IRQ, PCCardDMA *DMA); typedef CALLBACK_API_C( OSStatus , SSSetSocketProc )(PCCardSocket socket, PCCardVoltage Vcc, PCCardVoltage Vpp, PCCardInterfaceType socketIF, PCCardCustomInterfaceID customIFID, PCCardSocketStatus statusReset, PCCardSCEvents SCEventsMask, PCCardIRQ IRQ, PCCardDMA DMA); typedef CALLBACK_API_C( OSStatus , SSResetSocketProc )(PCCardSocket socket); typedef CALLBACK_API_C( OSStatus , SSGetStatusProc )(PCCardSocket socket, PCCardSocketStatus *currentStatus, PCCardSocketStatus *changedStatus); typedef CALLBACK_API_C( OSStatus , SSInquireWindowProc )(PCCardSocket *socket, PCCardWindow window, PCCardWindowState *windowState, PCCardWindowSize *windowSize, PCCardWindowAlign *windowAlign); typedef CALLBACK_API_C( OSStatus , SSGetWindowProc )(PCCardSocket *socket, PCCardWindow window, PCCardWindowState *windowState, PhysicalAddress *startAddress, PCCardWindowSize *windowSize, PCCardWindowOffset *windowOffset, PCCardAccessSpeed *memSpeed); typedef CALLBACK_API_C( OSStatus , SSSetWindowProc )(PCCardSocket socket, PCCardWindow window, PCCardWindowState windowState, PhysicalAddress startAddress, PCCardWindowSize windowSize, PCCardWindowOffset windowOffset, PCCardAccessSpeed memSpeed); typedef CALLBACK_API_C( OSStatus , SSGetWindowOffsetProc )(PCCardSocket *socket, PCCardWindow window, PCCardWindowState *windowState, PCCardWindowOffset *windowOffset); typedef CALLBACK_API_C( OSStatus , SSSetWindowOffsetProc )(PCCardSocket socket, PCCardWindow window, PCCardWindowState windowState, PCCardWindowOffset windowOffset); typedef CALLBACK_API_C( OSStatus , SSInquireBridgeWindowProc )(PCCardSocket *socket, PCCardWindow window, PCCardWindowState *windowState, PCCardWindowSize *windowSize, PCCardWindowAlign *windowAlign); typedef CALLBACK_API_C( OSStatus , SSGetBridgeWindowProc )(PCCardSocket *socket, PCCardWindow window, PCCardWindowState *windowState, PhysicalAddress *startAddress, PCCardWindowSize *windowSize); typedef CALLBACK_API_C( OSStatus , SSSetBridgeWindowProc )(PCCardSocket socket, PCCardWindow window, PCCardWindowState windowState, PhysicalAddress startAddress, PCCardWindowSize windowSize); typedef CALLBACK_API_C( OSStatus , SSGetInterruptSetMemberProc )(PCCardSocket socket, InterruptSetMember *interruptSetMember); typedef CALLBACK_API_C( OSStatus , SSEjectCardProc )(PCCardSocket socket); enum { kServiceTypePCCardAdapter = FOUR_CHAR_CODE('sock'), kPCCardAdapterPluginVersion = 0x00000001, kPCCardAdapterPluginCurrentVersion = kPCCardAdapterPluginVersion }; struct PCCardAdapterPluginHeader { UInt32 version; UInt32 reserved1; UInt32 reserved2; UInt32 reserved3; }; typedef struct PCCardAdapterPluginHeader PCCardAdapterPluginHeader; struct PCCardAdapterPluginDispatchTable { PCCardAdapterPluginHeader header; SSValidateHardwareProc validateHardware; SSInitializeProc initialize; SSSuspendProc suspend; SSResumeProc resume; SSFinalizeProc finalize; SSInquireAdapterProc inquireAdapter; SSInquireSocketProc inquireSocket; SSGetSocketProc getSocket; SSSetSocketProc setSocket; SSResetSocketProc resetSocket; SSGetStatusProc getStatus; SSInquireWindowProc inquireWindow; SSGetWindowProc getWindow; SSSetWindowProc setWindow; SSGetWindowOffsetProc getWindowOffset; SSSetWindowOffsetProc setWindowOffset; SSInquireBridgeWindowProc inquireBridgeWindow; SSGetBridgeWindowProc getBridgeWindow; SSSetBridgeWindowProc setBridgeWindow; SSGetInterruptSetMemberProc getInterruptSetMember; SSEjectCardProc ejectCard; }; typedef struct PCCardAdapterPluginDispatchTable PCCardAdapterPluginDispatchTable; typedef PCCardAdapterPluginDispatchTable * PCCardAdapterPluginDispatchTablePtr; #if PRAGMA_STRUCT_ALIGN #pragma options align=reset #elif PRAGMA_STRUCT_PACKPUSH #pragma pack(pop) #elif PRAGMA_STRUCT_PACK #pragma pack() #endif #ifdef PRAGMA_IMPORT_OFF #pragma import off #elif PRAGMA_IMPORT #pragma import reset #endif #ifdef __cplusplus } #endif #endif /* __PCCARDADAPTERPLUGIN__ */