topical media & game development
lib-of-vs-libs-QTDevWin-CIncludes-PCCardAdapterPlugin.h / h
/*
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 <MacTypes.h>
endif
ifndef __NAMEREGISTRY__
include <NameRegistry.h>
endif
ifndef __INTERRUPTS__
include <Interrupts.h>
endif
ifndef __PCCARD__
include <PCCard.h>
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__ */
(C) Æliens
04/09/2009
You may not copy or print any of this material without explicit permission of the author or the publisher.
In case of other copyright issues, contact the author.