#import <IOKit/firewire/IOFWCommand.h>
#import "IOFireWireUserClient.h"
#import <libkern/c++/OSObject.h>
class IOFWUserCommand: public OSObject
{
OSDeclareAbstractStructors(IOFWUserCommand)
public:
static IOFWUserCommand* withSubmitParams(
const CommandSubmitParams* inParams,
const IOFireWireUserClient* inUserClient) ;
virtual bool initWithSubmitParams(
const CommandSubmitParams* inParams,
const IOFireWireUserClient* inUserClient ) ;
virtual void free() ;
virtual void setAsyncReference(
OSAsyncReference inAsyncRef) ;
static void asyncReadWriteCommandCompletion(
void * refcon,
IOReturn status,
IOFireWireNub * device,
IOFWCommand * fwCmd) ;
static void asyncReadQuadletCommandCompletion(
void * refcon,
IOReturn status,
IOFireWireNub * device,
IOFWCommand * fwCmd) ;
virtual IOReturn submit(
CommandSubmitParams* inParams,
CommandSubmitResult* outResult) = 0 ;
protected:
OSAsyncReference fAsyncRef ;
IOFWAsyncCommand* fCommand ;
const IOFireWireUserClient* fUserClient ;
IOMemoryDescriptor* fMem ;
UInt32* fQuads ;
UInt32 fNumQuads ;
Boolean fCopyFlag ;
} ;
class IOFWUserReadCommand: public IOFWUserCommand
{
OSDeclareDefaultStructors(IOFWUserReadCommand)
public:
virtual bool initWithSubmitParams(
const CommandSubmitParams* inParams,
const IOFireWireUserClient* inUserClient ) ;
virtual IOReturn submit(
CommandSubmitParams* inParams,
CommandSubmitResult* outResult) ;
} ;
class IOFWUserWriteCommand: public IOFWUserCommand
{
OSDeclareDefaultStructors(IOFWUserWriteCommand)
public:
virtual bool initWithSubmitParams(
const CommandSubmitParams* inParams,
const IOFireWireUserClient* inUserClient ) ;
virtual IOReturn submit(
CommandSubmitParams* inParams,
CommandSubmitResult* outResult) ;
} ;
class IOFWUserCompareSwapCommand: public IOFWUserCommand
{
OSDeclareDefaultStructors(IOFWUserCompareSwapCommand)
public:
virtual bool initWithSubmitParams(
const CommandSubmitParams* inParams,
const IOFireWireUserClient* inUserClient ) ;
virtual IOReturn submit( CommandSubmitParams* params, CommandSubmitResult* result ) ;
IOReturn submit( CommandSubmitParams* params, CompareSwapSubmitResult* result ) ;
static void asyncCompletion( void* refcon, IOReturn status, IOFireWireNub* device,
IOFWCommand* fwCmd) ;
protected:
IOByteCount fSize ;
} ;