AppleOnboardAudioUserClient.h [plain text]
#include <IOKit/IOUserClient.h>
#ifndef __APPLEONBOARDAUDIOUSERCLIENT__
#define __APPLEONBOARDAUDIOUSERCLIENT__
class AppleOnboardAudio;
typedef enum HardwarePluginType {
kCodec_Unknown = 0,
kCodec_TAS3004,
kCodec_CS8406,
kCodec_CS8420,
kCodec_CS8416
} ;
typedef struct {
HardwarePluginType hardwarePluginType;
UInt32 registerCacheSize;
UInt8 registerCache[512];
UInt32 recoveryRequest;
} HardwarePluginDescriptor;
typedef HardwarePluginDescriptor * HardwarePluginDescriptorPtr;
const UInt32 kUserClientStateStructSize = 4096;
class AppleOnboardAudioUserClient : public IOUserClient
{
OSDeclareDefaultStructors( AppleOnboardAudioUserClient )
public:
static const IOExternalMethod sMethods[];
static const IOItemCount sMethodCount;
enum
{
kAOAUserClientGetStateIndex = 0, kAOAUserClientSetStateIndex, kAOAUserClientGetCurrentSampleFrame };
typedef enum AOAUserClientSelection_t
{
kPlatformSelector = 0, kHardwarePluginSelector, kDMASelector, kSoftwareProcessingSelector, kAppleOnboardAudioSelector, kTransportInterfaceSelector } AOAUserClientSelection;
protected:
AppleOnboardAudio * mDriver;
task_t mClientTask;
public:
static AppleOnboardAudioUserClient * Create( AppleOnboardAudio *inDriver, task_t task );
virtual bool initWithDriver( AppleOnboardAudio *inDriver, task_t task );
virtual void free();
virtual IOReturn getState ( UInt32 selector, UInt32 target, void * outStateStructure );
virtual IOReturn setState ( UInt32 selector, UInt32 target, void * inStateStructure );
virtual IOReturn getCurrentSampleFrame (UInt32 * outCurrentSampleFrame);
protected:
virtual IOReturn clientClose();
virtual IOReturn clientDied();
virtual IOExternalMethod * getTargetAndMethodForIndex( IOService **outTarget, UInt32 inIndex );
};
#endif