#ifndef _IOKIT_IOFIREWIREUNIT_H
#define _IOKIT_IOFIREWIREUNIT_H
#include <IOKit/firewire/IOFireWireNub.h>
class IOFireWireDevice;
class IOFireWireUnit;
#pragma mark -
class IOFireWireUnitAux : public IOFireWireNubAux
{
OSDeclareDefaultStructors(IOFireWireUnitAux)
friend class IOFireWireUnit;
protected:
struct ExpansionData { };
ExpansionData * reserved;
virtual bool init( IOFireWireUnit * primary );
virtual void free();
virtual bool isPhysicalAccessEnabled( void );
virtual IOFWSimpleContiguousPhysicalAddressSpace * createSimpleContiguousPhysicalAddressSpace( vm_size_t size, IODirection direction );
virtual IOFWSimplePhysicalAddressSpace * createSimplePhysicalAddressSpace( vm_size_t size, IODirection direction );
private:
OSMetaClassDeclareReservedUnused(IOFireWireUnitAux, 0);
OSMetaClassDeclareReservedUnused(IOFireWireUnitAux, 1);
OSMetaClassDeclareReservedUnused(IOFireWireUnitAux, 2);
OSMetaClassDeclareReservedUnused(IOFireWireUnitAux, 3);
};
#pragma mark -
class IOFireWireUnit : public IOFireWireNub
{
OSDeclareDefaultStructors(IOFireWireUnit)
friend class IOFireWireUnitAux;
friend class IOFireWireDevice;
protected:
IOFireWireDevice *fDevice;
struct ExpansionData { };
ExpansionData *reserved;
public:
virtual bool init(OSDictionary *propTable, IOConfigDirectory *directory);
virtual bool attach(IOService * provider );
virtual void free();
virtual bool matchPropertyTable(OSDictionary * table);
virtual IOReturn message( UInt32 type, IOService * provider, void * argument );
virtual bool handleOpen( IOService * forClient,
IOOptionBits options,
void * arg );
virtual void handleClose( IOService * forClient,
IOOptionBits options );
virtual void setNodeFlags( UInt32 flags );
virtual void clearNodeFlags( UInt32 flags );
virtual UInt32 getNodeFlags( void );
virtual IOReturn setConfigDirectory( IOConfigDirectory *directory );
virtual IOFWPhysicalAddressSpace *createPhysicalAddressSpace(IOMemoryDescriptor *mem);
virtual IOFWPseudoAddressSpace *createPseudoAddressSpace(FWAddress *addr, UInt32 len,
FWReadCallback reader, FWWriteCallback writer, void *refcon);
protected:
virtual IOFireWireNubAux * createAuxiliary( void );
public:
void setMaxSpeed( IOFWSpeed speed );
protected:
void terminateUnit( void );
static void terminateUnitThreadFunc( void * refcon );
private:
OSMetaClassDeclareReservedUnused(IOFireWireUnit, 0);
OSMetaClassDeclareReservedUnused(IOFireWireUnit, 1);
};
#endif