Mac OS 9
CardServices.h
Go to the documentation of this file.
1 
19 #ifndef __CARDSERVICES__
20 #define __CARDSERVICES__
21 
22 #ifndef __MACTYPES__
23 #include <MacTypes.h>
24 #endif
25 
26 #ifndef __PCCARDTUPLES__
27 #include <PCCardTuples.h>
28 #endif
29 
30 #ifndef __MIXEDMODE__
31 #include <MixedMode.h>
32 #endif
33 
34 #if PRAGMA_ONCE
35 #pragma once
36 #endif
37 
38 #ifdef __cplusplus
39 extern "C"
40 {
41 #endif
42 
43 #if PRAGMA_IMPORT
44 #pragma import on
45 #endif
46 
47 #if PRAGMA_STRUCT_ALIGN
48 #pragma options align = mac68k
49 #elif PRAGMA_STRUCT_PACKPUSH
50 #pragma pack(push, 2)
51 #elif PRAGMA_STRUCT_PACK
52 #pragma pack(2)
53 #endif
54 
55  /* miscellaneous*/
56 
57  enum
58  {
59  CS_MAX_SOCKETS = 32 /* a long is used as a socket bitmap*/
60  };
61 
62  /* Will move to <Traps.h>*/
63  enum
64  {
65  _PCCardDispatch = 0xAAF0 /* Card Services entry trap*/
66  };
67 
68  /* Will move to <Errors.h>*/
69 
70  /* result codes*/
71 
72  enum
73  {
74  kCSBadAdapterErr = -9050, /* invalid adapter number*/
75  kCSBadAttributeErr = -9051, /* specified attributes field value is invalid*/
76  kCSBadBaseErr = -9052, /* specified base system memory address is invalid*/
77  kCSBadEDCErr = -9053, /* specified EDC generator specified is invalid*/
78  kCSBadIRQErr = -9054, /* specified IRQ level is invalid*/
79  kCSBadOffsetErr = -9055, /* specified PC card memory array offset is invalid*/
80  kCSBadPageErr = -9056, /* specified page is invalid*/
81  kCSBadSizeErr = -9057, /* specified size is invalid*/
82  kCSBadSocketErr =
83  -9058, /* specified logical or physical socket number is invalid*/
84  kCSBadTypeErr = -9059, /* specified window or interface type is invalid*/
85  kCSBadVccErr = -9060, /* specified Vcc power level index is invalid*/
86  kCSBadVppErr = -9061, /* specified Vpp1 or Vpp2 power level index is invalid*/
87  kCSBadWindowErr = -9062, /* specified window is invalid*/
88  kCSBadArgLengthErr = -9063, /* ArgLength argument is invalid*/
89  kCSBadArgsErr = -9064, /* values in argument packet are invalid*/
90  kCSBadHandleErr = -9065, /* clientHandle is invalid*/
91  kCSBadCISErr = -9066, /* CIS on card is invalid*/
92  kCSBadSpeedErr = -9067, /* specified speed is unavailable*/
93  kCSReadFailureErr = -9068, /* unable to complete read request*/
94  kCSWriteFailureErr = -9069, /* unable to complete write request*/
95  kCSGeneralFailureErr = -9070, /* an undefined error has occurred*/
96  kCSNoCardErr = -9071, /* no PC card in the socket*/
97  kCSUnsupportedFunctionErr =
98  -9072, /* function is not supported by this implementation*/
99  kCSUnsupportedModeErr = -9073, /* mode is not supported*/
100  kCSBusyErr = -9074, /* unable to process request at this time - try later*/
101  kCSWriteProtectedErr = -9075, /* media is write-protected*/
102  kCSConfigurationLockedErr =
103  -9076, /* a configuration has already been locked*/
104  kCSInUseErr = -9077, /* requested resource is being used by a client*/
105  kCSNoMoreItemsErr = -9078, /* there are no more of the requested item*/
106  kCSOutOfResourceErr = -9079 /* Card Services has exhausted the resource*/
107  };
108 
109  /* messages sent to client's event handler*/
110 
111  enum
112  {
113  kCSNullMessage = 0x00, /* no messages pending (not sent to clients)*/
114  kCSCardInsertionMessage = 0x01, /* card has been inserted into the socket*/
115  kCSCardRemovalMessage = 0x02, /* card has been removed from the socket*/
116  kCSCardLockMessage =
117  0x03, /* card is locked into the socket with a mechanical latch*/
118  kCSCardUnlockMessage = 0x04, /* card is no longer locked into the socket*/
119  kCSCardReadyMessage = 0x05, /* card is ready to be accessed*/
120  kCSCardResetMessage = 0x06, /* physical reset has completed*/
121  kCSInsertionRequestMessage =
122  0x07, /* request to insert a card using insertion motor*/
123  kCSInsertionCompleteMessage =
124  0x08, /* insertion motor has finished inserting a card*/
125  kCSEjectionRequestMessage =
126  0x09, /* user or other client is requesting a card ejection*/
127  kCSEjectionFailedMessage =
128  0x0A, /* eject failure due to electrical/mechanical problems*/
129  kCSPMResumeMessage = 0x0B, /* power management resume (TBD)*/
130  kCSPMSuspendMessage = 0x0C, /* power management suspend (TBD)*/
131  kCSResetPhysicalMessage =
132  0x0D, /* physical reset is about to occur on this card*/
133  kCSResetRequestMessage =
134  0x0E, /* physical reset has been requested by a client*/
135  kCSResetCompleteMessage =
136  0x0F, /* ResetCard() background reset has completed*/
137  kCSBatteryDeadMessage =
138  0x10, /* battery is no longer useable, data will be lost*/
139  kCSBatteryLowMessage = 0x11, /* battery is weak and should be replaced*/
140  kCSWriteProtectMessage = 0x12, /* card is now write protected*/
141  kCSWriteEnabledMessage = 0x13, /* card is now write enabled*/
142  kCSClientInfoMessage = 0x14, /* client is to return client information*/
143  kCSSSUpdatedMessage =
144  0x15, /* AddSocketServices/ReplaceSocket services has changed SS support*/
145  kCSFunctionInterruptMessage = 0x16, /* card function interrupt*/
146  kCSAccessErrorMessage = 0x17, /* client bus errored on access to socket*/
147  kCSCardUnconfiguredMessage =
148  0x18, /* a CARD_READY was delivered to all clients and no client */
149  /* requested a configuration for the socket*/
150  kCSStatusChangedMessage = 0x19 /* status change for cards in I/O mode*/
151  };
152 
158  enum
159  {
160  SUCCESS = noErr,
161  BAD_ADAPTER = kCSBadAdapterErr,
162  BAD_ATTRIBUTE = kCSBadAttributeErr,
163  BAD_BASE = kCSBadBaseErr,
164  BAD_EDC = kCSBadEDCErr,
165  BAD_IRQ = kCSBadIRQErr,
166  BAD_OFFSET = kCSBadOffsetErr,
167  BAD_PAGE = kCSBadPageErr,
168  BAD_SIZE = kCSBadSizeErr,
169  BAD_SOCKET = kCSBadSocketErr,
170  BAD_TYPE = kCSBadTypeErr,
171  BAD_VCC = kCSBadVccErr,
172  BAD_VPP = kCSBadVppErr,
173  BAD_WINDOW = kCSBadWindowErr,
174  BAD_ARG_LENGTH = kCSBadArgLengthErr,
175  BAD_ARGS = kCSBadArgsErr,
176  BAD_HANDLE = kCSBadHandleErr,
177  BAD_CIS = kCSBadCISErr,
178  BAD_SPEED = kCSBadSpeedErr,
179  READ_FAILURE = kCSReadFailureErr,
180  WRITE_FAILURE = kCSWriteFailureErr,
181  GENERAL_FAILURE = kCSGeneralFailureErr,
182  NO_CARD = kCSNoCardErr,
183  UNSUPPORTED_FUNCTION = kCSUnsupportedFunctionErr,
184  UNSUPPORTED_MODE = kCSUnsupportedModeErr,
185  BUSY = kCSBusyErr,
186  WRITE_PROTECTED = kCSWriteProtectedErr,
187  CONFIGURATION_LOCKED = kCSConfigurationLockedErr,
188  IN_USE = kCSInUseErr,
189  NO_MORE_ITEMS = kCSNoMoreItemsErr,
190  OUT_OF_RESOURCE = kCSOutOfResourceErr
191  };
192 
193  /* messages sent to client's event handler*/
194 
195  enum
196  {
197  NULL_MESSAGE = kCSNullMessage,
198  CARD_INSERTION = kCSCardInsertionMessage,
199  CARD_REMOVAL = kCSCardRemovalMessage,
200  CARD_LOCK = kCSCardLockMessage,
201  CARD_UNLOCK = kCSCardUnlockMessage,
202  CARD_READY = kCSCardReadyMessage,
203  CARD_RESET = kCSCardResetMessage,
204  INSERTION_REQUEST = kCSInsertionRequestMessage,
205  INSERTION_COMPLETE = kCSInsertionCompleteMessage,
206  EJECTION_REQUEST = kCSEjectionRequestMessage,
207  EJECTION_FAILED = kCSEjectionFailedMessage,
208  PM_RESUME = kCSPMResumeMessage,
209  PM_SUSPEND = kCSPMSuspendMessage,
210  RESET_PHYSICAL = kCSResetPhysicalMessage,
211  RESET_REQUEST = kCSResetRequestMessage,
212  RESET_COMPLETE = kCSResetCompleteMessage,
213  BATTERY_DEAD = kCSBatteryDeadMessage,
214  BATTERY_LOW = kCSBatteryLowMessage,
215  WRITE_PROTECT = kCSWriteProtectMessage,
216  WRITE_ENABLED = kCSWriteEnabledMessage,
217  CLIENT_INFO = kCSClientInfoMessage,
218  SS_UPDATED = kCSSSUpdatedMessage,
219  FUNCTION_INTERRUPT = kCSFunctionInterruptMessage,
220  ACCESS_ERROR = kCSAccessErrorMessage,
221  CARD_UNCONFIGURED = kCSCardUnconfiguredMessage,
222  STATUS_CHANGED = kCSStatusChangedMessage
223  };
224 
225  /*---------------- CSAccessConfigurationRegister ----------------*/
226 
228  {
229  UInt16 socket; /* -> global socket number*/
230  UInt8 action; /* -> read/write*/
231  UInt8 offset; /* -> offset from config register base*/
232  UInt8 value; /* <-> value to read/write*/
233  UInt8 padding[1]; /* */
234  };
236  /* �action� field values*/
237 
238  enum
239  {
240  kCSReadConfigRegister = 0x00,
241  kCSWriteConfigRegister = 0x01
242  };
243 
244  /*---------------- CSGetCardServicesInfo ----------------*/
245 
247  {
248  UInt8 signature[2]; /* <- two ascii chars 'CS'*/
249  UInt16 count; /* <- total number of sockets installed*/
250  UInt16 revision; /* <- BCD*/
251  UInt16 csLevel; /* <- BCD*/
252  UInt16 reserved; /* -> zero*/
253  UInt16 vStrLen; /* <-> in: client's buffer size, out: vendor string length*/
254  UInt8 *vendorString; /* <-> in: pointer to buffer to hold CS vendor string
255  (zero-terminated)*/
256  /* out: CS vendor string copied to buffer*/
257  };
259  /*---------------- CSGetClientInfo ----------------*/
260 
261  /* upper byte of attributes is kCSClientInfoSubfunction*/
263  {
264  UInt32 clientHandle; /* -> clientHandle returned by RegisterClient*/
265  UInt16 attributes; /* <-> subfunction + bitmapped client attributes*/
266  UInt16 revision; /* <- BCD value of client's revision*/
267  UInt16 csLevel; /* <- BCD value of CS release*/
268  UInt16 revDate; /* <- revision date: y[15-9], m[8-5], d[4-0]*/
269  SInt16
270  nameLen; /* <-> in: max length of client name string, out: actual length*/
271  SInt16
272  vStringLen; /* <-> in: max length of vendor string, out: actual length*/
273  UInt8 *nameString; /* <- pointer to client name string (zero-terminated)*/
274  UInt8 *vendorString; /* <- pointer to vendor string (zero-terminated)*/
275  };
276  typedef struct ClientInfoParam ClientInfoParam;
283  {
284  UInt32 clientHandle; /* -> clientHandle returned by RegisterClient*/
285  UInt16 attributes; /* <-> subfunction + bitmapped client attributes*/
286  UInt16 socket; /* -> logical socket number*/
287  UInt16 reserved; /* -> zero*/
288  SInt16 length; /* <-> in: max length of string, out: actual length*/
289  UInt8 *text; /* <- pointer to string (zero-terminated)*/
290  };
292  /* upper byte of attributes is kCSCardIconSubfunction*/
294  {
295  UInt32 clientHandle; /* -> clientHandle returned by RegisterClient*/
296  UInt16 attributes; /* <-> subfunction + bitmapped client attributes*/
297  UInt16 socket; /* -> logical socket number*/
298  Handle iconSuite; /* <- handle to icon suite containing all icons*/
299  };
301  /* upper byte of attributes is kCSActionProcSubfunction*/
303  {
304  UInt32 clientHandle; /* -> clientHandle returned by RegisterClient*/
305  UInt16 attributes; /* <-> subfunction + bitmapped client attributes*/
306  UInt16 socket; /* -> logical socket number*/
307  };
310  {
311  union
312  {
313  ClientInfoParam clientInfo;
314  AlternateTextStringParam alternateTextString;
315  AlternateCardIconParam alternateIcon;
316  CustomActionProcParam customActionProc;
317  } u;
318  };
319  typedef struct GetClientInfoPB GetClientInfoPB;
320  /* �attributes� field values*/
321  enum
322  {
323  kCSMemoryClient = 0x0001,
324  kCSIOClient = 0x0004,
325  kCSClientTypeMask = 0x0007,
326  kCSShareableCardInsertEvents = 0x0008,
327  kCSExclusiveCardInsertEvents = 0x0010,
328  kCSInfoSubfunctionMask = 0xFF00,
329  kCSClientInfoSubfunction = 0x0000,
330  kCSCardNameSubfunction = 0x8000,
331  kCSCardTypeSubfunction = 0x8100,
332  kCSHelpStringSubfunction = 0x8200,
333  kCSCardIconSubfunction = 0x8300,
334  kCSActionProcSubfunction = 0x8400
335  };
336 
344  {
345  UInt32 clientHandle; /* -> clientHandle returned by RegisterClient*/
346  UInt16 socket; /* -> logical socket number*/
347  UInt16 attributes; /* <-> bitmap of configuration attributes*/
348  UInt8 vcc; /* <-> Vcc setting*/
349  UInt8 vpp1; /* <-> Vpp1 setting*/
350  UInt8 vpp2; /* <-> Vpp2 setting*/
351  UInt8 intType; /* <-> interface type (memory or memory+I/O)*/
352  UInt32 configBase; /* <-> card base address of configuration registers*/
353  UInt8 status; /* <-> card status register setting, if present*/
354  UInt8 pin; /* <-> card pin register setting, if present*/
355  UInt8 copy; /* <-> card socket/copy register setting, if present*/
356  UInt8 configIndex; /* <-> card option register setting, if present*/
357  UInt8 present; /* <-> bitmap of which configuration registers are present*/
358  UInt8 firstDevType; /* <- from DeviceID tuple*/
359  UInt8 funcCode; /* <- from FuncID tuple*/
360  UInt8 sysInitMask; /* <- from FuncID tuple*/
361  UInt16 manufCode; /* <- from ManufacturerID tuple*/
362  UInt16 manufInfo; /* <- from ManufacturerID tuple*/
363  UInt8 cardValues; /* <- valid card register values*/
364  UInt8 padding[1]; /* */
365  };
367  /* �attributes� field values*/
368  enum
369  {
370  kCSExclusivelyUsed = 0x0001,
371  kCSEnableIREQs = 0x0002,
372  kCSVccChangeValid = 0x0004,
373  kCSVpp1ChangeValid = 0x0008,
374  kCSVpp2ChangeValid = 0x0010,
375  kCSValidClient = 0x0020,
376  kCSSleepPower =
377  0x0040, /* request that power be applied to socket during Sleep*/
378  kCSLockSocket = 0x0080,
379  kCSTurnOnInUse = 0x0100
380  };
381 
382  /* �intType� field values*/
383 
384  enum
385  {
386  kCSMemoryInterface = 0x01,
387  kCSMemory_And_IO_Interface = 0x02
388  };
389 
390  /* �present� field values*/
391 
392  enum
393  {
394  kCSOptionRegisterPresent = 0x01,
395  kCSStatusRegisterPresent = 0x02,
396  kCSPinReplacementRegisterPresent = 0x04,
397  kCSCopyRegisterPresent = 0x08
398  };
399 
400  /* �cardValues� field values*/
401 
402  enum
403  {
404  kCSOptionValueValid = 0x01,
405  kCSStatusValueValid = 0x02,
406  kCSPinReplacementValueValid = 0x04,
407  kCSCopyValueValid = 0x08
408  };
409 
416  {
417  UInt32 clientHandle; /* -> clientHandle returned by RegisterClient*/
418  UInt16 attributes; /* <-> bitmap of attributes*/
419  UInt16 eventMask; /* <-> bitmap of events to be passed to client for this
420  socket*/
421  UInt16 socket; /* -> logical socket number*/
422  };
424  /* �attributes� field values*/
425  enum
426  {
427  kCSEventMaskThisSocketOnly = 0x0001
428  };
429 
430  /* �eventMask� field values*/
431 
432  enum
433  {
434  kCSWriteProtectEvent = 0x0001,
435  kCSCardLockChangeEvent = 0x0002,
436  kCSEjectRequestEvent = 0x0004,
437  kCSInsertRequestEvent = 0x0008,
438  kCSBatteryDeadEvent = 0x0010,
439  kCSBatteryLowEvent = 0x0020,
440  kCSReadyChangeEvent = 0x0040,
441  kCSCardDetectChangeEvent = 0x0080,
442  kCSPMChangeEvent = 0x0100,
443  kCSResetEvent = 0x0200,
444  kCSSSUpdateEvent = 0x0400,
445  kCSFunctionInterrupt = 0x0800,
446  kCSAllEvents = 0xFFFF
447  };
448 
454  struct GetClientPB
455  {
456  UInt32 clientHandle; /* <- clientHandle for this client*/
457  UInt16 socket; /* -> logical socket number*/
458  UInt16 attributes; /* -> bitmap of attributes*/
459  };
460  typedef struct GetClientPB GetClientPB;
461  /* �attributes� field values*/
462  enum
463  {
464  kCSClientsForAllSockets = 0x0000,
465  kCSClientsThisSocketOnly = 0x0001
466  };
467 
474  struct GetTuplePB
475  {
476  UInt16 socket; /* -> logical socket number*/
477  UInt16 attributes; /* -> bitmap of attributes*/
478  UInt8 desiredTuple; /* -> desired tuple code value, or $FF for all*/
479  UInt8 tupleOffset; /* -> offset into tuple from link byte*/
480  UInt16 flags; /* <-> internal use*/
481  UInt32 linkOffset; /* <-> internal use*/
482  UInt32 cisOffset; /* <-> internal use*/
483 
484  union
485  {
486  struct
487  {
488  UInt8 tupleCode; /* <- tuple code found*/
489  UInt8 tupleLink; /* <- link value for tuple found*/
490  } TuplePB;
491 
492  struct
493  {
494  UInt16 tupleDataMax; /* -> maximum size of tuple data area*/
495  UInt16 tupleDataLen; /* <- number of bytes in tuple body*/
496  TupleBody tupleData; /* <- tuple data*/
497  } TupleDataPB;
498  } u;
499  };
500  typedef struct GetTuplePB GetTuplePB;
501  /* �attributes� field values*/
502  enum
503  {
504  kCSReturnLinkTuples = 0x0001
505  };
506 
513  {
514  UInt32 clientHandle; /* -> clientHandle returned by RegisterClient*/
515  UInt16 socket; /* -> logical socket*/
516  UInt16 eventMask; /* -> bitmap of events to be passed to client for this
517  socket*/
518  };
519  typedef struct ReqRelSocketMaskPB ReqRelSocketMaskPB;
520  /* �eventMask� field values (see above for Get/SetClientEventMask*/
521 
522  /*---------------- CSGetStatus ----------------*/
523 
524  struct GetStatusPB
525  {
526  UInt16 socket; /* -> logical socket number*/
527  UInt16 cardState; /* <- current state of installed card*/
528  UInt16 socketState; /* <- current state of the socket*/
529  };
530  typedef struct GetStatusPB GetStatusPB;
531  /* �cardState� field values*/
532  enum
533  {
534  kCSWriteProtected = 0x0001,
535  kCSCardLocked = 0x0002,
536  kCSEjectRequest = 0x0004,
537  kCSInsertRequest = 0x0008,
538  kCSBatteryDead = 0x0010,
539  kCSBatteryLow = 0x0020,
540  kCSReady = 0x0040,
541  kCSCardDetected = 0x0080
542  };
543 
544  /* �socketState� field values*/
545 
546  enum
547  {
548  kCSWriteProtectChanged = 0x0001,
549  kCSCardLockChanged = 0x0002,
550  kCSEjectRequestPending = 0x0004,
551  kCSInsertRequestPending = 0x0008,
552  kCSBatteryDeadChanged = 0x0010,
553  kCSBatteryLowChanged = 0x0020,
554  kCSReadyChanged = 0x0040,
555  kCSCardDetectChanged = 0x0080
556  };
557 
565  {
566  UInt32 clientHandle; /* -> clientHandle returned by RegisterClient*/
567  UInt32 windowHandle; /* <-> window descriptor*/
568  UInt16 socket; /* -> logical socket number*/
569  UInt16 attributes; /* -> window attributes (bitmap)*/
570  UInt32 base; /* <-> system base address*/
571  UInt32 size; /* <-> memory window size*/
572  UInt8 accessSpeed; /* -> window access speed (bitmap)*/
573  /* (not applicable for I/O mode)*/
574  UInt8 padding[1]; /* */
575  };
576  typedef struct ReqModRelWindowPB ReqModRelWindowPB;
577  /* �attributes� field values*/
578  enum
579  {
580  kCSMemoryWindow = 0x0001,
581  kCSIOWindow = 0x0002,
582  kCSAttributeWindow = 0x0004, /* not normally used by Card Services clients*/
583  kCSWindowTypeMask = 0x0007,
584  kCSEnableWindow = 0x0008,
585  kCSAccessSpeedValid = 0x0010,
586  kCSLittleEndian = 0x0020, /* configure socket for little endianess*/
587  kCS16BitDataPath = 0x0040,
588  kCSWindowPaged = 0x0080, /* */
589  kCSWindowShared = 0x0100,
590  kCSWindowFirstShared = 0x0200, /* */
591  kCSWindowProgrammable = 0x0400 /* */
592  };
593 
594  /* �accessSpeed� field values*/
595 
596  enum
597  {
598  kCSDeviceSpeedCodeMask = 0x07,
599  kCSSpeedExponentMask = 0x07,
600  kCSSpeedMantissaMask = 0x78,
601  kCSUseWait = 0x80,
602  kCSAccessSpeed250nsec = 0x01,
603  kCSAccessSpeed200nsec = 0x02,
604  kCSAccessSpeed150nsec = 0x03,
605  kCSAccessSpeed100nsec = 0x04,
606  kCSExtAccSpeedMant1pt0 = 0x01,
607  kCSExtAccSpeedMant1pt2 = 0x02,
608  kCSExtAccSpeedMant1pt3 = 0x03,
609  kCSExtAccSpeedMant1pt5 = 0x04,
610  kCSExtAccSpeedMant2pt0 = 0x05,
611  kCSExtAccSpeedMant2pt5 = 0x06,
612  kCSExtAccSpeedMant3pt0 = 0x07,
613  kCSExtAccSpeedMant3pt5 = 0x08,
614  kCSExtAccSpeedMant4pt0 = 0x09,
615  kCSExtAccSpeedMant4pt5 = 0x0A,
616  kCSExtAccSpeedMant5pt0 = 0x0B,
617  kCSExtAccSpeedMant5pt5 = 0x0C,
618  kCSExtAccSpeedMant6pt0 = 0x0D,
619  kCSExtAccSpeedMant7pt0 = 0x0E,
620  kCSExtAccSpeedMant8pt0 = 0x0F,
621  kCSExtAccSpeedExp1ns = 0x00,
622  kCSExtAccSpeedExp10ns = 0x01,
623  kCSExtAccSpeedExp100ns = 0x02,
624  kCSExtAccSpeedExp1us = 0x03,
625  kCSExtAccSpeedExp10us = 0x04,
626  kCSExtAccSpeedExp100us = 0x05,
627  kCSExtAccSpeedExp1ms = 0x06,
628  kCSExtAccSpeedExp10ms = 0x07
629  };
630 
637  {
638  UInt16 message; /* -> which event this is*/
639  UInt16 socket; /* -> logical socket number*/
640  UInt16 info; /* -> function-specific*/
641  UInt16 misc; /* -> function-specific*/
642  Ptr reserved; /* -> pointer to MTD request block*/
643  Ptr buffer; /* -> function-specific*/
644  Ptr clientData; /* -> pointer to client's data (from RegisterClient)*/
645  };
646  typedef struct ClientCallbackPB ClientCallbackPB;
648  typedef CALLBACK_API(UInt16,
649  PCCardCSClientProcPtr)(ClientCallbackPBPtr ccPBPtr);
650  typedef STACK_UPP_TYPE(PCCardCSClientProcPtr) PCCardCSClientUPP;
651 #if CALL_NOT_IN_CARBON
660  PCCardCSClientUPP
661  NewPCCardCSClientUPP(PCCardCSClientProcPtr userRoutine);
662 #if !OPAQUE_UPP_TYPES
663  enum
664  {
665  uppPCCardCSClientProcInfo = 0x000000E0
666  }; /* pascal 2_bytes Func(4_bytes) */
667 #ifdef __cplusplus
668  inline PCCardCSClientUPP
669  NewPCCardCSClientUPP(PCCardCSClientProcPtr userRoutine)
670  {
671  return (PCCardCSClientUPP)NewRoutineDescriptor((ProcPtr)(userRoutine),
672  uppPCCardCSClientProcInfo,
673  GetCurrentArchitecture());
674  }
675 #else
676 #define NewPCCardCSClientUPP(userRoutine) \
677  (PCCardCSClientUPP) \
678  NewRoutineDescriptor((ProcPtr)(userRoutine), uppPCCardCSClientProcInfo, \
679  GetCurrentArchitecture())
680 #endif
681 #endif
682 
691  void
692  DisposePCCardCSClientUPP(PCCardCSClientUPP userUPP);
693 #if !OPAQUE_UPP_TYPES
694 #ifdef __cplusplus
695  inline void DisposePCCardCSClientUPP(PCCardCSClientUPP userUPP)
696  {
697  DisposeRoutineDescriptor((UniversalProcPtr)userUPP);
698  }
699 #else
700 #define DisposePCCardCSClientUPP(userUPP) DisposeRoutineDescriptor(userUPP)
701 #endif
702 #endif
703 
712  UInt16
713  InvokePCCardCSClientUPP(ClientCallbackPBPtr ccPBPtr, PCCardCSClientUPP userUPP);
714 #if !OPAQUE_UPP_TYPES
715 #ifdef __cplusplus
716  inline UInt16 InvokePCCardCSClientUPP(ClientCallbackPBPtr ccPBPtr,
717  PCCardCSClientUPP userUPP)
718  {
719  return (UInt16)CALL_ONE_PARAMETER_UPP(userUPP, uppPCCardCSClientProcInfo,
720  ccPBPtr);
721  }
722 #else
723 #define InvokePCCardCSClientUPP(ccPBPtr, userUPP) \
724  (UInt16) \
725  CALL_ONE_PARAMETER_UPP((userUPP), uppPCCardCSClientProcInfo, (ccPBPtr))
726 #endif
727 #endif
728 
729 #endif /* CALL_NOT_IN_CARBON */
730 
731 #if CALL_NOT_IN_CARBON || OLDROUTINENAMES
732 /* support for pre-Carbon UPP routines: New...Proc and Call...Proc */
733 #define NewPCCardCSClientProc(userRoutine) NewPCCardCSClientUPP(userRoutine)
734 #define CallPCCardCSClientProc(userRoutine, ccPBPtr) \
735  InvokePCCardCSClientUPP(ccPBPtr, userRoutine)
736 #endif /* CALL_NOT_IN_CARBON */
737 
739  {
740  UInt32 clientHandle; /* <- client descriptor*/
741  PCCardCSClientUPP
742  clientEntry; /* -> universal procPtr to client's event handler*/
743  UInt16 attributes; /* -> bitmap of client attributes*/
744  UInt16 eventMask; /* -> bitmap of events to notify client*/
745  Ptr clientData; /* -> pointer to client's data*/
746  UInt16 version; /* -> Card Services version this client expects*/
747  };
748  typedef struct RegisterClientPB RegisterClientPB;
749  /* �attributes� field values (see GetClientInfo)*/
757  /*---------------- CSReleaseConfiguration ----------------*/
758 
760  {
761  UInt32 clientHandle; /* -> clientHandle returned by RegisterClient*/
762  UInt16 socket; /* -> */
763  };
765  /*---------------- CSResetCard ----------------*/
766 
767  struct ResetCardPB
768  {
769  UInt32 clientHandle; /* -> clientHandle returned by RegisterClient*/
770  UInt16 socket; /* -> */
771  UInt16 attributes; /* -> xxx*/
772  };
773  typedef struct ResetCardPB ResetCardPB;
774  /*---------------- CSValidateCIS ----------------*/
775 
777  {
778  UInt16 socket; /* -> */
779  UInt16 chains; /* -> whether link/null tuples should be included*/
780  };
781  typedef struct ValidateCISPB ValidateCISPB;
787  struct ReqRelIOPB
788  {
789  UInt32 clientHandle; /* -> clientHandle returned by RegisterClient*/
790  UInt16 socket; /* -> socket number*/
791  UInt16 reserved;
792  UInt16 basePort1; /* -> base I/O port for range*/
793  UInt8 numPorts1; /* -> number of ports (e.g., bytes).*/
794  UInt8 attributes1; /* -> attributes*/
795 
796  UInt16 basePort2; /* -> base I/O port for range*/
797  UInt8 numPorts2; /* -> number of ports*/
798  UInt8 attributes2; /* -> attributes*/
799 
800  UInt8 ioAddrLines; /* -> number of I/O lines decoded by card*/
801  UInt8 reserved1;
802  };
803  typedef struct ReqRelIOPB ReqRelIOPB;
804  /*---------------- CSVendorSpecific ----------------*/
806  {
807  UInt32 clientHandle; /* -> clientHandle returned by RegisterClient*/
808  UInt16 vsCode;
809  UInt16 socket;
810  UInt32 dataLen; /* -> length of buffer pointed to by vsDataPtr*/
811  UInt8 *vsDataPtr; /* -> Card Services version this client expects*/
812  };
813  typedef struct VendorSpecificPB VendorSpecificPB;
814  /* �vsCode� field values*/
815 
816  enum
817  {
818  vsAppleReserved = 0x0000,
819  vsEjectCard = 0x0001,
820  vsGetCardInfo = 0x0002,
821  vsEnableSocketEvents = 0x0003,
822  vsGetCardLocationIcon = 0x0004,
823  vsGetCardLocationText = 0x0005,
824  vsGetAdapterInfo = 0x0006
825  };
826 
829 
833  {
834  UInt32 attributes; /* <- capabilties of socket's adapter*/
835  UInt16 revision; /* <- id of adapter*/
836  UInt16 reserved; /* */
837  UInt16 numVoltEntries; /* <- number of valid voltage values*/
838  UInt8 *voltages; /* <-> array of BCD voltage values*/
839  };
840  typedef struct GetAdapterInfoPB GetAdapterInfoPB;
841  /* �attributes� field values*/
842  enum
843  {
844  kCSLevelModeInterrupts = 0x00000001,
845  kCSPulseModeInterrupts = 0x00000002,
846  kCSProgrammableWindowAddr = 0x00000004,
847  kCSProgrammableWindowSize = 0x00000008,
848  kCSSocketSleepPower = 0x00000010,
849  kCSSoftwareEject = 0x00000020,
850  kCSLockableSocket = 0x00000040,
851  kCSInUseIndicator = 0x00000080
852  };
853 
856 
860  {
861  UInt8 cardType; /* <- type of card in this socket (defined at top of file)*/
862  UInt8 subType; /* <- more detailed card type (defined at top of file)*/
863  UInt16 reserved; /* <-> reserved (should be set to zero)*/
864  UInt16 cardNameLen; /* -> maximum length of card name to be returned*/
865  UInt16 vendorNameLen; /* -> maximum length of vendor name to be returned*/
866  UInt8 *cardName; /* -> pointer to card name string (read from CIS), or nil*/
867  UInt8 *
868  vendorName; /* -> pointer to vendor name string (read from CIS), or nil*/
869  };
870  typedef struct GetCardInfoPB GetCardInfoPB;
871  /* GetCardInfo card types*/
872  enum
873  {
874  kCSUnknownCardType = 0,
875  kCSMultiFunctionCardType = 1,
876  kCSMemoryCardType = 2,
877  kCSSerialPortCardType = 3,
878  kCSSerialOnlyType = 0,
879  kCSDataModemType = 1,
880  kCSFaxModemType = 2,
881  kCSFaxAndDataModemMask = (kCSDataModemType | kCSFaxModemType),
882  kCSVoiceEncodingType = 4,
883  kCSParallelPortCardType = 4,
884  kCSFixedDiskCardType = 5,
885  kCSUnknownFixedDiskType = 0,
886  kCSATAInterface = 1,
887  kCSRotatingDevice = (0 << 7),
888  kCSSiliconDevice = (1 << 7),
889  kCSVideoAdaptorCardType = 6,
890  kCSNetworkAdaptorCardType = 7,
891  kCSAIMSCardType = 8,
892  kCSNumCardTypes = 9
893  };
894 
895 #ifndef __PCCARDENABLERPLUGIN__
901 #if CALL_NOT_IN_CARBON
910  OSErr
912 
921  OSErr
923 
932  OSErr
934 
943  OSErr
945 
954  OSErr
956 
965  OSErr
967 
976  OSErr
978 
987  OSErr
989 
998  OSErr
1000 
1009  OSErr
1011 
1020  OSErr
1022 
1031  OSErr
1033 
1042  OSErr
1044 
1053  OSErr
1055 
1064  OSErr
1066 
1075  OSErr
1077 
1086  OSErr
1088 
1097  OSErr
1099 
1108  OSErr
1110 
1119  OSErr
1121 
1130  OSErr
1132 
1141  OSErr
1143 
1152  OSErr
1154 
1163  OSErr
1165 
1174  OSErr
1176 
1190  OSErr
1192 
1201  OSErr
1203 
1204 #endif /* CALL_NOT_IN_CARBON */
1205 
1206 #endif /* !defined(__PCCARDENABLERPLUGIN__) */
1207 
1208 #if PRAGMA_STRUCT_ALIGN
1209 #pragma options align = reset
1210 #elif PRAGMA_STRUCT_PACKPUSH
1211 #pragma pack(pop)
1212 #elif PRAGMA_STRUCT_PACK
1213 #pragma pack()
1214 #endif
1215 
1216 #ifdef PRAGMA_IMPORT_OFF
1217 #pragma import off
1218 #elif PRAGMA_IMPORT
1219 #pragma import reset
1220 #endif
1221 
1222 #ifdef __cplusplus
1223 }
1224 #endif
1225 
1226 #endif /* __CARDSERVICES__ */
OSErr CSGetClientInfo(GetClientInfoPB *pb)
OSErr CSReleaseSocketMask(ReqRelSocketMaskPB *pb)
OSErr CSRequestIO(ReqRelIOPB *pb)
OSErr CSGetConfigurationInfo(GetModRequestConfigInfoPB *pb)
OSErr CSGetClientEventMask(GetSetClientEventMaskPB *pb)
OSErr CSDeregisterClient(RegisterClientPB *pb)
OSErr CSGetStatus(GetStatusPB *pb)
OSErr CSGetTupleData(GetTuplePB *pb)
OSErr CSGetCardServicesInfo(GetCardServicesInfoPB *pb)
OSErr CSAccessConfigurationRegister(AccessConfigurationRegisterPB *pb)
OSErr CSGetNextClient(GetClientPB *pb)
void DisposePCCardCSClientUPP(PCCardCSClientUPP userUPP)
UInt16 InvokePCCardCSClientUPP(ClientCallbackPBPtr ccPBPtr, PCCardCSClientUPP userUPP)
OSErr CSReleaseIO(ReqRelIOPB *pb)
OSErr CSSetClientEventMask(GetSetClientEventMaskPB *pb)
OSErr CSReleaseWindow(ReqModRelWindowPB *pb)
OSErr CSRegisterClient(RegisterClientPB *pb)
PCCardCSClientUPP NewPCCardCSClientUPP(PCCardCSClientProcPtr userRoutine)
OSErr CSGetFirstClient(GetClientPB *pb)
OSErr CSGetFirstTuple(GetTuplePB *pb)
OSErr CSReleaseConfiguration(ReleaseConfigurationPB *pb)
OSErr CSResetCard(ResetCardPB *pb)
OSErr CSRequestWindow(ReqModRelWindowPB *pb)
OSErr CSValidateCIS(ValidateCISPB *pb)
OSErr CSRequestConfiguration(GetModRequestConfigInfoPB *pb)
OSErr CSModifyWindow(ReqModRelWindowPB *pb)
OSErr CSGetNextTuple(GetTuplePB *pb)
OSErr CSRequestSocketMask(ReqRelSocketMaskPB *pb)
OSErr CSModifyConfiguration(GetModRequestConfigInfoPB *pb)
OSErr CSVendorSpecific(VendorSpecificPB *pb)
Basic Macintosh data types.
Mixed Mode Manager Interfaces.
void DisposeRoutineDescriptor(UniversalProcPtr theUPP)
#define STACK_UPP_TYPE(name)
Definition: MixedMode.h:734
UniversalProcPtr NewRoutineDescriptor(ProcPtr theProc, ProcInfoType theProcInfo, ISAType theISA)
List of PCMCIA tuple types and definitions of tuple contents.
Definition: ATA.h:616
Definition: CardServices.h:228
Definition: CardServices.h:294
Definition: CardServices.h:283
Definition: CardServices.h:637
Definition: CardServices.h:263
Definition: CardServices.h:303
Definition: CardServices.h:833
Definition: CardServices.h:860
Definition: CardServices.h:247
Definition: CardServices.h:310
Definition: CardServices.h:455
Definition: CardServices.h:344
Definition: CardServices.h:416
Definition: CardServices.h:525
Definition: CardServices.h:475
Definition: CardServices.h:739
Definition: CardServices.h:760
Definition: CardServices.h:565
Definition: CardServices.h:788
Definition: CardServices.h:513
Definition: CardServices.h:768
Definition: CardServices.h:777
Definition: CardServices.h:806
Definition: PCCardTuples.h:378