IOFireWireLibIsochChannel.h [plain text]
#import <IOKit/firewire/IOFireWireLibIsoch.h>
#import "IOFireWireLibPriv.h"
#import "IOFireWireLibIsochPort.h"
namespace IOFireWireLib {
class IsochChannel: public IOFireWireIUnknown
{
protected:
typedef ::IOFireWireLibIsochChannelRef ChannelRef ;
typedef ::IOFireWireIsochChannelForceStopHandler ForceStopHandler ;
public:
IsochChannel( IUnknownVTbl* interface, Device& userclient, bool inDoIRM, IOByteCount inPacketSize, IOFWSpeed inPrefSpeed) ;
virtual ~IsochChannel() ;
public:
virtual IOReturn SetTalker( IOFireWireLibIsochPortRef talker ) ;
virtual IOReturn AddListener( IOFireWireLibIsochPortRef listener ) ;
virtual IOReturn AllocateChannel() ;
virtual IOReturn ReleaseChannel() ;
virtual IOReturn Start() ;
virtual IOReturn Stop() ;
virtual ForceStopHandler SetChannelForceStopHandler( ForceStopHandler stopProc ) ;
virtual void SetRefCon( void* stopProcRefCon ) ;
virtual void* GetRefCon() ;
virtual Boolean NotificationIsOn() ;
virtual Boolean TurnOnNotification() ;
virtual void TurnOffNotification() ;
virtual void ClientCommandIsComplete( FWClientCommandID commandID, IOReturn status ) ;
protected:
static void ForceStop( ChannelRef refcon, IOReturn result, void** args, int numArgs ) ;
protected:
Device& mUserClient ;
KernIsochChannelRef mKernChannelRef ;
Boolean mNotifyIsOn ;
ForceStopHandler mForceStopHandler ;
void* mUserRefCon ;
io_async_ref_t mAsyncRef ;
IOFireWireLibIsochPortRef mTalker ;
CFMutableArrayRef mListeners ;
ChannelRef mRefInterface ;
IOFWSpeed mSpeed ;
IOFWSpeed mPrefSpeed ;
UInt32 mChannel ;
} ;
class IsochChannelCOM: public IsochChannel
{
typedef ::IOFireWireIsochChannelInterface Interface ;
public:
IsochChannelCOM( Device& userclient, bool inDoIRM, IOByteCount inPacketSize, IOFWSpeed inPrefSpeed ) ;
virtual ~IsochChannelCOM() ;
private:
static Interface sInterface ;
public:
static IUnknownVTbl** Alloc( Device& inUserClient, Boolean inDoIRM, IOByteCount inPacketSize, IOFWSpeed inPrefSpeed) ;
virtual HRESULT QueryInterface( REFIID iid, void ** ppv ) ;
protected:
static IOReturn SSetTalker(
ChannelRef self,
IOFireWireLibIsochPortRef talker) ;
static IOReturn SAddListener(
ChannelRef self,
IOFireWireLibIsochPortRef listener) ;
static IOReturn SAllocateChannel(
ChannelRef self) ;
static IOReturn SReleaseChannel(
ChannelRef self) ;
static IOReturn SStart(
ChannelRef self) ;
static IOReturn SStop(
ChannelRef self) ;
static ForceStopHandler
SSetChannelForceStopHandler(
ChannelRef self,
ForceStopHandler stopProc) ;
static void SSetRefCon(
ChannelRef self,
void* stopProcRefCon) ;
static void* SGetRefCon(
ChannelRef self) ;
static Boolean SNotificationIsOn(
ChannelRef self) ;
static Boolean STurnOnNotification(
ChannelRef self) ;
static void STurnOffNotification(
ChannelRef self) ;
static void SClientCommandIsComplete(
ChannelRef self,
FWClientCommandID commandID,
IOReturn status) ;
} ;
}