IOFireWireMultiIsochReceive.h [plain text]
#ifndef _IOKIT_IOFIREWIREMULTIISOCHRECEIVE_H_
#define _IOKIT_IOFIREWIREMULTIISOCHRECEIVE_H_
class IOFireWireMultiIsochReceiveListener;
class IOFireWireMultiIsochReceivePacket;
class IOFireWireController;
typedef IOReturn (*FWMultiIsochReceiveListenerCallback)(void *refcon, IOFireWireMultiIsochReceivePacket *pPacket);
typedef struct FWMultiIsochReceiveListenerParamsStruct
{
UInt32 maxLatencyInFireWireCycles;
UInt32 expectedStreamBitRate;
UInt32 clientPacketReturnLatencyInFireWireCycles;
}FWMultiIsochReceiveListenerParams;
class IOFireWireMultiIsochReceiveListener : public OSObject
{
friend class IOFireWireLink;
protected:
OSDeclareDefaultStructors(IOFireWireMultiIsochReceiveListener)
bool init(IOFireWireController *fwController,
UInt32 receiveChannel,
FWMultiIsochReceiveListenerCallback callback,
void *pCallbackRefCon,
FWMultiIsochReceiveListenerParams *pListenerParams);
void free();
public:
static IOFireWireMultiIsochReceiveListener *create(IOFireWireController *fwController,
UInt32 channel,
FWMultiIsochReceiveListenerCallback callback,
void *pCallbackRefCon,
FWMultiIsochReceiveListenerParams *pListenerParams);
IOReturn Activate();
IOReturn Deactivate();
IOReturn SetCallback(FWMultiIsochReceiveListenerCallback callback,
void *pCallbackRefCon);
inline UInt32 getReceiveChannel(void) {return fChannel;};
inline FWMultiIsochReceiveListenerCallback getCallback(void){return fClientCallback;};
inline void * getRefCon(void){return fClientCallbackRefCon;};
inline bool getActivatedState(void) {return fActivated;};
protected:
IOFireWireController *fControl;
UInt32 fChannel;
FWMultiIsochReceiveListenerCallback fClientCallback;
void *fClientCallbackRefCon;
bool fActivated;
FWMultiIsochReceiveListenerParams *fListenerParams;
};
#define kMaxRangesPerMultiIsochReceivePacket 6
class IOFireWireMultiIsochReceivePacket : public OSObject
{
OSDeclareDefaultStructors(IOFireWireMultiIsochReceivePacket)
bool init(IOFireWireController *fwController);
void free();
public:
static IOFireWireMultiIsochReceivePacket *create(IOFireWireController *fwController);
void clientDone(void);
UInt32 isochChannel(void);
UInt32 packetReceiveTime(void);
UInt32 isochPayloadSize(void); inline UInt32 isochPacketSize(void) {return isochPayloadSize()+8; };
IOMemoryDescriptor *createMemoryDescriptorForRanges(void);
IOAddressRange ranges[kMaxRangesPerMultiIsochReceivePacket] ;
UInt32 numRanges;
UInt32 numClientReferences;
void* elements[kMaxRangesPerMultiIsochReceivePacket];
protected:
IOFireWireController *fControl;
};
#endif