#include <libkern/c++/OSObject.h>
#include <IOKit/firewire/IOFWCommand.h>
#include <IOKit/firewire/IOFireWireUserClient.h>
class IOFWUserCommand: public OSObject
{
OSDeclareAbstractStructors(IOFWUserCommand)
public:
static IOFWUserCommand* withSubmitParams(
const FWUserCommandSubmitParams* inParams,
const IOFireWireUserClient* inUserClient) ;
virtual bool initWithSubmitParams(
const FWUserCommandSubmitParams* inParams,
const IOFireWireUserClient* inUserClient ) ;
virtual void free() ;
virtual void setAsyncReference(
OSAsyncReference inAsyncRef) ;
static void asyncReadWriteCommandCompletion(
void * refcon,
IOReturn status,
IOFireWireNub * device,
IOFWCommand * fwCmd) ;
virtual IOReturn submit(
FWUserCommandSubmitParams* inParams,
FWUserCommandSubmitResult* outResult) = 0 ;
virtual void setRefCon(
void* inRefCon)
{ fUserRefCon = inRefCon; }
virtual void* getRefCon() { return fUserRefCon; }
protected:
OSAsyncReference fAsyncRef ;
IOFWAsyncCommand* fCommand ;
const IOFireWireUserClient* fUserClient ;
IOMemoryDescriptor* fMem ;
void* fUserRefCon ;
} ;
class IOFWUserReadCommand: public IOFWUserCommand
{
OSDeclareDefaultStructors(IOFWUserReadCommand)
public:
virtual bool initWithSubmitParams(
const FWUserCommandSubmitParams* inParams,
const IOFireWireUserClient* inUserClient ) ;
virtual IOReturn submit(
FWUserCommandSubmitParams* inParams,
FWUserCommandSubmitResult* outResult) ;
} ;
class IOFWUserReadQuadletCommand: public IOFWUserCommand
{
OSDeclareDefaultStructors(IOFWUserReadQuadletCommand)
public:
virtual bool initWithSubmitParams(
const FWUserCommandSubmitParams* inParams,
const IOFireWireUserClient* inUserClient ) ;
virtual void free() ;
virtual IOReturn submit(
FWUserCommandSubmitParams* inParams,
FWUserCommandSubmitResult* outResult) ;
static void asyncReadQuadletCommandCompletion(
void * refcon,
IOReturn status,
IOFireWireNub * device,
IOFWCommand * fwCmd) ;
protected:
UInt32* fQuads ;
UInt32 fNumQuads ;
} ;
class IOFWUserWriteCommand: public IOFWUserCommand
{
OSDeclareDefaultStructors(IOFWUserWriteCommand)
public:
virtual bool initWithSubmitParams(
const FWUserCommandSubmitParams* inParams,
const IOFireWireUserClient* inUserClient ) ;
virtual IOReturn submit(
FWUserCommandSubmitParams* inParams,
FWUserCommandSubmitResult* outResult) ;
} ;
class IOFWUserWriteQuadletCommand: public IOFWUserCommand
{
OSDeclareDefaultStructors(IOFWUserWriteQuadletCommand)
public:
virtual bool initWithSubmitParams(
const FWUserCommandSubmitParams* inParams,
const IOFireWireUserClient* inUserClient ) ;
virtual IOReturn submit(
FWUserCommandSubmitParams* inParams,
FWUserCommandSubmitResult* outResult) ;
protected:
UInt32 fNumQuads ;
} ;
class IOFWUserCompareSwapCommand: public IOFWUserCommand
{
OSDeclareDefaultStructors(IOFWUserCompareSwapCommand)
public:
virtual bool initWithSubmitParams(
const FWUserCommandSubmitParams* inParams,
const IOFireWireUserClient* inUserClient ) ;
virtual IOReturn submit(
FWUserCommandSubmitParams* inParams,
FWUserCommandSubmitResult* outResult) ;
protected:
IOByteCount fSize ;
} ;