You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
681 lines
20 KiB
681 lines
20 KiB
/* |
|
File: IsochronousDataHandler.h |
|
|
|
Contains: Component Manager based Isochronous Data Handler |
|
|
|
Version: QuickTime 7.3 |
|
|
|
Copyright: (c) 2007 (c) 1997-2001 by Apple Computer, Inc., all rights reserved. |
|
|
|
Bugs?: For bug reports, consult the following page on |
|
the World Wide Web: |
|
|
|
http://developer.apple.com/bugreporter/ |
|
|
|
*/ |
|
// |
|
// Check for Prior Inclusion of IsochronousDataHandler.r |
|
// If this header is trying to be included via a Rez path, make it act |
|
// as a NOP. This will allow both Rez & C files to get to use the |
|
// contants for the component type, subtype, and interface version. |
|
#ifndef __ISOCHRONOUSDATAHANDLER_R__ |
|
|
|
|
|
#ifndef __ISOCHRONOUSDATAHANDLER__ |
|
#define __ISOCHRONOUSDATAHANDLER__ |
|
|
|
#ifndef __MACTYPES__ |
|
#include <MacTypes.h> |
|
#endif |
|
|
|
#ifndef __MOVIESFORMAT__ |
|
#include <MoviesFormat.h> |
|
#endif |
|
|
|
#ifndef __QUICKTIMECOMPONENTS__ |
|
#include <QuickTimeComponents.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=mac68k |
|
#elif PRAGMA_STRUCT_PACKPUSH |
|
#pragma pack(push, 2) |
|
#elif PRAGMA_STRUCT_PACK |
|
#pragma pack(2) |
|
#endif |
|
|
|
enum { |
|
kIDHComponentType = FOUR_CHAR_CODE('ihlr'), /* Component type*/ |
|
kIDHSubtypeDV = FOUR_CHAR_CODE('dv '), /* Subtype for DV (over FireWire)*/ |
|
kIDHSubtypeFireWireConference = FOUR_CHAR_CODE('fwc ') /* Subtype for FW Conference*/ |
|
}; |
|
|
|
|
|
/* Version of Isochronous Data Handler API*/ |
|
enum { |
|
kIDHInterfaceVersion1 = 0x0001 /* Initial relase (Summer '99)*/ |
|
}; |
|
|
|
|
|
/* atom types*/ |
|
|
|
enum { |
|
kIDHDeviceListAtomType = FOUR_CHAR_CODE('dlst'), |
|
kIDHDeviceAtomType = FOUR_CHAR_CODE('devc'), /* to be defined elsewhere*/ |
|
kIDHIsochServiceAtomType = FOUR_CHAR_CODE('isoc'), |
|
kIDHIsochModeAtomType = FOUR_CHAR_CODE('mode'), |
|
kIDHDeviceIDType = FOUR_CHAR_CODE('dvid'), |
|
kIDHDefaultIOType = FOUR_CHAR_CODE('dfio'), |
|
kIDHIsochVersionAtomType = FOUR_CHAR_CODE('iver'), |
|
kIDHUniqueIDType = FOUR_CHAR_CODE('unid'), |
|
kIDHNameAtomType = FOUR_CHAR_CODE('name'), |
|
kIDHUseCMPAtomType = FOUR_CHAR_CODE('ucmp'), |
|
kIDHIsochMediaType = FOUR_CHAR_CODE('av '), |
|
kIDHDataTypeAtomType = FOUR_CHAR_CODE('dtyp'), |
|
kIDHDataSizeAtomType = FOUR_CHAR_CODE('dsiz'), /* ??? packet size vs. buffer size*/ |
|
kIDHDataBufferSizeAtomType = FOUR_CHAR_CODE('dbuf'), /* ??? packet size vs. buffer size*/ |
|
kIDHDataIntervalAtomType = FOUR_CHAR_CODE('intv'), |
|
kIDHDataIODirectionAtomType = FOUR_CHAR_CODE('ddir'), |
|
kIDHSoundMediaAtomType = FOUR_CHAR_CODE('soun'), |
|
kIDHSoundTypeAtomType = FOUR_CHAR_CODE('type'), |
|
kIDHSoundChannelCountAtomType = FOUR_CHAR_CODE('ccnt'), |
|
kIDHSoundSampleSizeAtomType = FOUR_CHAR_CODE('ssiz'), |
|
kIDHSoundSampleRateAtomType = FOUR_CHAR_CODE('srat'), /* same as video out... (what does this comment mean?)*/ |
|
kIDHVideoMediaAtomType = FOUR_CHAR_CODE('vide'), |
|
kIDHVideoDimensionsAtomType = FOUR_CHAR_CODE('dimn'), |
|
kIDHVideoResolutionAtomType = FOUR_CHAR_CODE('resl'), |
|
kIDHVideoRefreshRateAtomType = FOUR_CHAR_CODE('refr'), |
|
kIDHVideoPixelTypeAtomType = FOUR_CHAR_CODE('pixl'), |
|
kIDHVideoDecompressorAtomType = FOUR_CHAR_CODE('deco'), |
|
kIDHVideoDecompressorTypeAtomType = FOUR_CHAR_CODE('dety'), |
|
kIDHVideoDecompressorContinuousAtomType = FOUR_CHAR_CODE('cont'), |
|
kIDHVideoDecompressorComponentAtomType = FOUR_CHAR_CODE('cmpt') |
|
}; |
|
|
|
/* I/O Flags */ |
|
enum { |
|
kIDHDataTypeIsInput = 1L << 0, |
|
kIDHDataTypeIsOutput = 1L << 1, |
|
kIDHDataTypeIsInputAndOutput = 1L << 2 |
|
}; |
|
|
|
|
|
/* Permission Flags */ |
|
enum { |
|
kIDHOpenForReadTransactions = 1L << 0, |
|
kIDHOpenForWriteTransactions = 1L << 1, |
|
kIDHOpenWithExclusiveAccess = 1L << 2, |
|
kIDHOpenWithHeldBuffers = 1L << 3, /* IDH will hold buffer until ReleaseBuffer()*/ |
|
kIDHCloseForReadTransactions = 1L << 4, |
|
kIDHCloseForWriteTransactions = 1L << 5 |
|
}; |
|
|
|
|
|
/* |
|
Errors |
|
These REALLY need to be moved into Errors.h |
|
ooo.needs officially assigned numbers |
|
*/ |
|
enum { |
|
kIDHErrDeviceDisconnected = -14101, |
|
kIDHErrInvalidDeviceID = -14102, |
|
kIDHErrDeviceInUse = -14104, |
|
kIDHErrDeviceNotOpened = -14105, |
|
kIDHErrDeviceBusy = -14106, |
|
kIDHErrDeviceReadError = -14107, |
|
kIDHErrDeviceWriteError = -14108, |
|
kIDHErrDeviceNotConfigured = -14109, |
|
kIDHErrDeviceList = -14110, |
|
kIDHErrCompletionPending = -14111, |
|
kIDHErrDeviceTimeout = -14112, |
|
kIDHErrInvalidIndex = -14113, |
|
kIDHErrDeviceCantRead = -14114, |
|
kIDHErrDeviceCantWrite = -14115, |
|
kIDHErrCallNotSupported = -14116 |
|
}; |
|
|
|
|
|
|
|
|
|
/* Holds Device Identification...*/ |
|
typedef UInt32 IDHDeviceID; |
|
enum { |
|
kIDHInvalidDeviceID = 0, |
|
kIDHDeviceIDEveryDevice = (long)0xFFFFFFFF |
|
}; |
|
|
|
/* Values for 5 bit STYPE part of CIP header*/ |
|
enum { |
|
kIDHDV_SD = 0, |
|
kIDHDV_SDL = 1, |
|
kIDHDV_HD = 2, |
|
kIDHDVCPro_25 = 0x1E, |
|
kIDHDVCPro_50 = 0x1D, |
|
kIDHDVCPro_100 = 0x1C |
|
}; |
|
|
|
/* Isoch Interval Atom Data*/ |
|
struct IDHIsochInterval { |
|
SInt32 duration; |
|
TimeScale scale; |
|
}; |
|
typedef struct IDHIsochInterval IDHIsochInterval; |
|
/* Need to fix this. For now, cast this as a FWReferenceID*/ |
|
typedef struct OpaquePsuedoID* PsuedoID; |
|
/* |
|
Isoch Device Status |
|
This is atom-like, but isn't an atom |
|
*/ |
|
struct IDHDeviceStatus { |
|
UInt32 version; |
|
Boolean physicallyConnected; |
|
Boolean readEnabled; |
|
Boolean writeEnabled; |
|
Boolean exclusiveAccess; |
|
UInt32 currentBandwidth; |
|
UInt32 currentChannel; |
|
PsuedoID localNodeID; /*ooo.may go in atoms */ |
|
SInt16 inputStandard; /* One of the QT input standards*/ |
|
Boolean deviceActive; |
|
UInt8 inputFormat; /* Expected STYPE of data from device, if version >= 0x200*/ |
|
UInt32 outputFormats; /* Bitmask for supported STYPE values, if version >= 0x200*/ |
|
}; |
|
typedef struct IDHDeviceStatus IDHDeviceStatus; |
|
/* |
|
Isochronous Data Handler Events |
|
|
|
*/ |
|
typedef UInt32 IDHEvent; |
|
enum { |
|
kIDHEventInvalid = 0, |
|
kIDHEventDeviceAdded = 1L << 0, /* A new device has been added to the bus*/ |
|
kIDHEventDeviceRemoved = 1L << 1, /* A device has been removed from the bus*/ |
|
kIDHEventDeviceChanged = 1L << 2, /* Some device has changed state on the bus*/ |
|
kIDHEventReadEnabled = 1L << 3, /* A client has enabled a device for read*/ |
|
kIDHEventReserved1 = 1L << 4, /* Reserved for future use*/ |
|
kIDHEventReadDisabled = 1L << 5, /* A client has disabled a device from read*/ |
|
kIDHEventWriteEnabled = 1L << 6, /* A client has enabled a device for write*/ |
|
kIDHEventReserved2 = 1L << 7, /* Reserved for future use*/ |
|
kIDHEventWriteDisabled = 1L << 8, /* A client has disabled a device for write*/ |
|
kIDHEventEveryEvent = (unsigned long)0xFFFFFFFF |
|
}; |
|
|
|
|
|
typedef UInt32 IDHNotificationID; |
|
struct IDHEventHeader { |
|
IDHDeviceID deviceID; /* Device which generated event*/ |
|
IDHNotificationID notificationID; |
|
IDHEvent event; /* What the event is*/ |
|
}; |
|
typedef struct IDHEventHeader IDHEventHeader; |
|
|
|
|
|
|
|
/* |
|
IDHGenericEvent |
|
An IDH will often have to post events from at interrupt time. Since memory |
|
allocation cannot occur from the interrupt handler, the IDH can preallocate |
|
storage needed for handling the event by creating some IDHGenericEvent items. |
|
Subsequently, when an event is generated, the type of event (specified in the |
|
IDHEventHeader) will dictate how the IDHGenericEvent should be interpretted. |
|
|
|
IMPORTANT NOTE : This means that a specific event structure can NEVER be greater |
|
than the size of the generic one. |
|
|
|
*/ |
|
struct IDHGenericEvent { |
|
IDHEventHeader eventHeader; |
|
UInt32 pad[4]; |
|
}; |
|
typedef struct IDHGenericEvent IDHGenericEvent; |
|
/* |
|
IDHDeviceConnectionEvent |
|
For kIDHEventDeviceAdded or kIDHEventDeviceRemoved events. |
|
*/ |
|
struct IDHDeviceConnectionEvent { |
|
IDHEventHeader eventHeader; |
|
}; |
|
typedef struct IDHDeviceConnectionEvent IDHDeviceConnectionEvent; |
|
/* |
|
IDHDeviceIOEnableEvent |
|
For kIDHEventReadEnabled, kIDHEventReadDisabled, kIDHEventWriteEnabled, or |
|
kIDHEventWriteDisabled. |
|
*/ |
|
struct IDHDeviceIOEnableEvent { |
|
IDHEventHeader eventHeader; |
|
}; |
|
typedef struct IDHDeviceIOEnableEvent IDHDeviceIOEnableEvent; |
|
typedef CALLBACK_API_C( OSStatus , IDHNotificationProcPtr )(IDHGenericEvent *event, void *userData); |
|
|
|
typedef IDHNotificationProcPtr IDHNotificationProc; |
|
typedef TVECTOR_UPP_TYPE(IDHNotificationProcPtr) IDHNotificationUPP; |
|
struct IDHParameterBlock { |
|
UInt32 reserved1; |
|
UInt16 reserved2; |
|
void * buffer; |
|
ByteCount requestedCount; |
|
ByteCount actualCount; |
|
IDHNotificationUPP completionProc; |
|
void * refCon; |
|
OSErr result; |
|
}; |
|
typedef struct IDHParameterBlock IDHParameterBlock; |
|
struct IDHResolution { |
|
UInt32 x; |
|
UInt32 y; |
|
}; |
|
typedef struct IDHResolution IDHResolution; |
|
struct IDHDimension { |
|
Fixed x; |
|
Fixed y; |
|
}; |
|
typedef struct IDHDimension IDHDimension; |
|
|
|
/* |
|
* IDHGetDeviceList() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in IDHLib 1.0 and later |
|
* CarbonLib: in CarbonLib 1.3 and later |
|
* Mac OS X: not available |
|
*/ |
|
EXTERN_API( ComponentResult ) |
|
IDHGetDeviceList( |
|
ComponentInstance idh, |
|
QTAtomContainer * deviceList) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0001, 0x7000, 0xA82A); |
|
|
|
|
|
/* |
|
* IDHGetDeviceConfiguration() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in IDHLib 1.0 and later |
|
* CarbonLib: in CarbonLib 1.3 and later |
|
* Mac OS X: not available |
|
*/ |
|
EXTERN_API( ComponentResult ) |
|
IDHGetDeviceConfiguration( |
|
ComponentInstance idh, |
|
QTAtomSpec * configurationID) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0002, 0x7000, 0xA82A); |
|
|
|
|
|
/* |
|
* IDHSetDeviceConfiguration() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in IDHLib 1.0 and later |
|
* CarbonLib: in CarbonLib 1.3 and later |
|
* Mac OS X: not available |
|
*/ |
|
EXTERN_API( ComponentResult ) |
|
IDHSetDeviceConfiguration( |
|
ComponentInstance idh, |
|
const QTAtomSpec * configurationID) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0003, 0x7000, 0xA82A); |
|
|
|
|
|
/* |
|
* IDHGetDeviceStatus() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in IDHLib 1.0 and later |
|
* CarbonLib: in CarbonLib 1.3 and later |
|
* Mac OS X: not available |
|
*/ |
|
EXTERN_API( ComponentResult ) |
|
IDHGetDeviceStatus( |
|
ComponentInstance idh, |
|
const QTAtomSpec * configurationID, |
|
IDHDeviceStatus * status) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0004, 0x7000, 0xA82A); |
|
|
|
|
|
/* |
|
* IDHGetDeviceClock() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in IDHLib 1.0 and later |
|
* CarbonLib: in CarbonLib 1.3 and later |
|
* Mac OS X: not available |
|
*/ |
|
EXTERN_API( ComponentResult ) |
|
IDHGetDeviceClock( |
|
ComponentInstance idh, |
|
Component * clock) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0005, 0x7000, 0xA82A); |
|
|
|
|
|
/* |
|
* IDHOpenDevice() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in IDHLib 1.0 and later |
|
* CarbonLib: in CarbonLib 1.3 and later |
|
* Mac OS X: not available |
|
*/ |
|
EXTERN_API( ComponentResult ) |
|
IDHOpenDevice( |
|
ComponentInstance idh, |
|
UInt32 permissions) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0006, 0x7000, 0xA82A); |
|
|
|
|
|
/* |
|
* IDHCloseDevice() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in IDHLib 1.0 and later |
|
* CarbonLib: in CarbonLib 1.3 and later |
|
* Mac OS X: not available |
|
*/ |
|
EXTERN_API( ComponentResult ) |
|
IDHCloseDevice(ComponentInstance idh) FIVEWORDINLINE(0x2F3C, 0x0000, 0x0007, 0x7000, 0xA82A); |
|
|
|
|
|
/* |
|
* IDHRead() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in IDHLib 1.0 and later |
|
* CarbonLib: in CarbonLib 1.3 and later |
|
* Mac OS X: not available |
|
*/ |
|
EXTERN_API( ComponentResult ) |
|
IDHRead( |
|
ComponentInstance idh, |
|
IDHParameterBlock * pb) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0008, 0x7000, 0xA82A); |
|
|
|
|
|
/* |
|
* IDHWrite() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in IDHLib 1.0 and later |
|
* CarbonLib: in CarbonLib 1.3 and later |
|
* Mac OS X: not available |
|
*/ |
|
EXTERN_API( ComponentResult ) |
|
IDHWrite( |
|
ComponentInstance idh, |
|
IDHParameterBlock * pb) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0009, 0x7000, 0xA82A); |
|
|
|
|
|
/* |
|
* IDHNewNotification() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in IDHLib 1.0 and later |
|
* CarbonLib: in CarbonLib 1.3 and later |
|
* Mac OS X: not available |
|
*/ |
|
EXTERN_API( ComponentResult ) |
|
IDHNewNotification( |
|
ComponentInstance idh, |
|
IDHDeviceID deviceID, |
|
IDHNotificationUPP notificationProc, |
|
void * userData, |
|
IDHNotificationID * notificationID) FIVEWORDINLINE(0x2F3C, 0x0010, 0x000A, 0x7000, 0xA82A); |
|
|
|
|
|
/* |
|
* IDHNotifyMeWhen() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in IDHLib 1.0 and later |
|
* CarbonLib: in CarbonLib 1.3 and later |
|
* Mac OS X: not available |
|
*/ |
|
EXTERN_API( ComponentResult ) |
|
IDHNotifyMeWhen( |
|
ComponentInstance idh, |
|
IDHNotificationID notificationID, |
|
IDHEvent events) FIVEWORDINLINE(0x2F3C, 0x0008, 0x000B, 0x7000, 0xA82A); |
|
|
|
|
|
/* |
|
* IDHCancelNotification() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in IDHLib 1.0 and later |
|
* CarbonLib: in CarbonLib 1.3 and later |
|
* Mac OS X: not available |
|
*/ |
|
EXTERN_API( ComponentResult ) |
|
IDHCancelNotification( |
|
ComponentInstance idh, |
|
IDHNotificationID notificationID) FIVEWORDINLINE(0x2F3C, 0x0004, 0x000C, 0x7000, 0xA82A); |
|
|
|
|
|
/* |
|
* IDHDisposeNotification() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in IDHLib 1.0 and later |
|
* CarbonLib: in CarbonLib 1.3 and later |
|
* Mac OS X: not available |
|
*/ |
|
EXTERN_API( ComponentResult ) |
|
IDHDisposeNotification( |
|
ComponentInstance idh, |
|
IDHNotificationID notificationID) FIVEWORDINLINE(0x2F3C, 0x0004, 0x000D, 0x7000, 0xA82A); |
|
|
|
|
|
/* |
|
* IDHReleaseBuffer() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in IDHLib 1.0 and later |
|
* CarbonLib: in CarbonLib 1.3 and later |
|
* Mac OS X: not available |
|
*/ |
|
EXTERN_API( ComponentResult ) |
|
IDHReleaseBuffer( |
|
ComponentInstance idh, |
|
IDHParameterBlock * pb) FIVEWORDINLINE(0x2F3C, 0x0004, 0x000E, 0x7000, 0xA82A); |
|
|
|
|
|
/* |
|
* IDHCancelPendingIO() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in IDHLib 1.0 and later |
|
* CarbonLib: in CarbonLib 1.3 and later |
|
* Mac OS X: not available |
|
*/ |
|
EXTERN_API( ComponentResult ) |
|
IDHCancelPendingIO( |
|
ComponentInstance idh, |
|
IDHParameterBlock * pb) FIVEWORDINLINE(0x2F3C, 0x0004, 0x000F, 0x7000, 0xA82A); |
|
|
|
|
|
/* |
|
* IDHGetDeviceControl() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in IDHLib 1.0 and later |
|
* CarbonLib: in CarbonLib 1.3 and later |
|
* Mac OS X: not available |
|
*/ |
|
EXTERN_API( ComponentResult ) |
|
IDHGetDeviceControl( |
|
ComponentInstance idh, |
|
ComponentInstance * deviceControl) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0010, 0x7000, 0xA82A); |
|
|
|
|
|
/* |
|
* IDHUpdateDeviceList() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in IDHLib 1.0 and later |
|
* CarbonLib: in CarbonLib 1.3 and later |
|
* Mac OS X: not available |
|
*/ |
|
EXTERN_API( ComponentResult ) |
|
IDHUpdateDeviceList( |
|
ComponentInstance idh, |
|
QTAtomContainer * deviceList) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0011, 0x7000, 0xA82A); |
|
|
|
|
|
/* |
|
* IDHGetDeviceTime() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: in CarbonLib 1.4 and later |
|
* Mac OS X: not available |
|
*/ |
|
EXTERN_API( ComponentResult ) |
|
IDHGetDeviceTime( |
|
ComponentInstance idh, |
|
TimeRecord * deviceTime) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0012, 0x7000, 0xA82A); |
|
|
|
|
|
/* |
|
* IDHSetFormat() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: in CarbonLib 1.5 and later |
|
* Mac OS X: not available |
|
*/ |
|
EXTERN_API( ComponentResult ) |
|
IDHSetFormat( |
|
ComponentInstance idh, |
|
UInt32 format) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0013, 0x7000, 0xA82A); |
|
|
|
|
|
/* |
|
* IDHGetFormat() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: in CarbonLib 1.5 and later |
|
* Mac OS X: not available |
|
*/ |
|
EXTERN_API( ComponentResult ) |
|
IDHGetFormat( |
|
ComponentInstance idh, |
|
UInt32 * format) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0014, 0x7000, 0xA82A); |
|
|
|
|
|
|
|
/* |
|
* NewIDHNotificationUPP() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: available as macro/inline |
|
* CarbonLib: in CarbonLib 1.4 and later |
|
* Mac OS X: not available |
|
*/ |
|
EXTERN_API_C( IDHNotificationUPP ) |
|
NewIDHNotificationUPP(IDHNotificationProcPtr userRoutine); |
|
#if !OPAQUE_UPP_TYPES |
|
enum { uppIDHNotificationProcInfo = 0x000003F1 }; /* 4_bytes Func(4_bytes, 4_bytes) */ |
|
#ifdef __cplusplus |
|
inline DEFINE_API_C(IDHNotificationUPP) NewIDHNotificationUPP(IDHNotificationProcPtr userRoutine) { return userRoutine; } |
|
#else |
|
#define NewIDHNotificationUPP(userRoutine) (userRoutine) |
|
#endif |
|
#endif |
|
|
|
/* |
|
* DisposeIDHNotificationUPP() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: available as macro/inline |
|
* CarbonLib: in CarbonLib 1.4 and later |
|
* Mac OS X: not available |
|
*/ |
|
EXTERN_API_C( void ) |
|
DisposeIDHNotificationUPP(IDHNotificationUPP userUPP); |
|
#if !OPAQUE_UPP_TYPES |
|
#ifdef __cplusplus |
|
inline DEFINE_API_C(void) DisposeIDHNotificationUPP(IDHNotificationUPP) {} |
|
#else |
|
#define DisposeIDHNotificationUPP(userUPP) |
|
#endif |
|
#endif |
|
|
|
/* |
|
* InvokeIDHNotificationUPP() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: available as macro/inline |
|
* CarbonLib: in CarbonLib 1.4 and later |
|
* Mac OS X: not available |
|
*/ |
|
EXTERN_API_C( OSStatus ) |
|
InvokeIDHNotificationUPP( |
|
IDHGenericEvent * event, |
|
void * userData, |
|
IDHNotificationUPP userUPP); |
|
#if !OPAQUE_UPP_TYPES |
|
#ifdef __cplusplus |
|
inline DEFINE_API_C(OSStatus) InvokeIDHNotificationUPP(IDHGenericEvent * event, void * userData, IDHNotificationUPP userUPP) { return (*userUPP)(event, userData); } |
|
#else |
|
#define InvokeIDHNotificationUPP(event, userData, userUPP) (*userUPP)(event, userData) |
|
#endif |
|
#endif |
|
|
|
|
|
/* selectors for component calls */ |
|
enum { |
|
kIDHGetDeviceListSelect = 0x0001, |
|
kIDHGetDeviceConfigurationSelect = 0x0002, |
|
kIDHSetDeviceConfigurationSelect = 0x0003, |
|
kIDHGetDeviceStatusSelect = 0x0004, |
|
kIDHGetDeviceClockSelect = 0x0005, |
|
kIDHOpenDeviceSelect = 0x0006, |
|
kIDHCloseDeviceSelect = 0x0007, |
|
kIDHReadSelect = 0x0008, |
|
kIDHWriteSelect = 0x0009, |
|
kIDHNewNotificationSelect = 0x000A, |
|
kIDHNotifyMeWhenSelect = 0x000B, |
|
kIDHCancelNotificationSelect = 0x000C, |
|
kIDHDisposeNotificationSelect = 0x000D, |
|
kIDHReleaseBufferSelect = 0x000E, |
|
kIDHCancelPendingIOSelect = 0x000F, |
|
kIDHGetDeviceControlSelect = 0x0010, |
|
kIDHUpdateDeviceListSelect = 0x0011, |
|
kIDHGetDeviceTimeSelect = 0x0012, |
|
kIDHSetFormatSelect = 0x0013, |
|
kIDHGetFormatSelect = 0x0014 |
|
}; |
|
|
|
|
|
#endif /* ifndef __ISOCHRONOUSDATAHANDLER_R__ */ |
|
|
|
#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 /* __ISOCHRONOUSDATAHANDLER__ */ |
|
|
|
|