IOHIDOutputTransactionClass.h [plain text]
#ifndef _IOKIT_IOHIDOutputTransactionClass_H
#define _IOKIT_IOHIDOutputTransactionClass_H
#include "IOHIDDeviceClass.h"
class IOHIDOutputTransactionClass : public IOHIDIUnknown
{
private:
friend class IOHIDDeviceClass;
IOHIDOutputTransactionClass(IOHIDOutputTransactionClass &src);
void operator =(IOHIDOutputTransactionClass &src);
protected:
IOHIDOutputTransactionClass();
virtual ~IOHIDOutputTransactionClass();
static IOHIDOutputTransactionInterface sHIDOutputTransactionInterfaceV1;
struct InterfaceMap fHIDOutputTransaction;
mach_port_t fAsyncPort;
CFRunLoopSourceRef fCFSource;
bool fIsCreated;
IOHIDDeviceClass * fOwningDevice;
IOHIDCallbackFunction fEventCallback;
void * fEventTarget;
void * fEventRefcon;
CFMutableDictionaryRef fElementDictionaryRef;
static void transactionEventSourceCallback(CFMachPortRef *cfPort, mach_msg_header_t *msg, CFIndex size, void *info);
public:
void setOwningDevice (IOHIDDeviceClass * owningDevice) { fOwningDevice = owningDevice; };
void * getInterfaceMap (void) { return &fHIDOutputTransaction; };
virtual HRESULT queryInterface(REFIID iid, void **ppv);
virtual IOReturn createAsyncEventSource(CFRunLoopSourceRef *source);
virtual CFRunLoopSourceRef getAsyncEventSource();
virtual IOReturn createAsyncPort(mach_port_t *port);
virtual mach_port_t getAsyncPort();
virtual IOReturn create ();
virtual IOReturn dispose ();
virtual IOReturn addElement (IOHIDElementCookie elementCookie);
virtual IOReturn removeElement (IOHIDElementCookie elementCookie);
virtual Boolean hasElement (IOHIDElementCookie elementCookie);
virtual IOReturn setElementDefault( IOHIDElementCookie elementCookie,
IOHIDEventStruct * valueEvent);
virtual IOReturn getElementDefault( IOHIDElementCookie elementCookie,
IOHIDEventStruct * valueEvent);
virtual IOReturn setElementValue( IOHIDElementCookie elementCookie,
IOHIDEventStruct * valueEvent);
virtual IOReturn getElementValue(IOHIDElementCookie elementCookie,
IOHIDEventStruct * valueEvent);
virtual IOReturn commit(UInt32 timeoutMS,
IOHIDCallbackFunction callback,
void * callbackTarget,
void * callbackRefcon);
virtual IOReturn clear();
protected:
static inline IOHIDOutputTransactionClass *getThis(void *self)
{ return (IOHIDOutputTransactionClass *) ((InterfaceMap *) self)->obj; };
static IOReturn outputTransactionCreateAsyncEventSource(void *self,
CFRunLoopSourceRef *source);
static CFRunLoopSourceRef outputTransactionGetAsyncEventSource(void *self);
static IOReturn outputTransactionCreateAsyncPort(void *self, mach_port_t *port);
static mach_port_t outputTransactionGetAsyncPort(void *self);
static IOReturn outputTransactionCreate (void * self);
static IOReturn outputTransactionDispose (void * self);
static IOReturn outputTransactionAddElement ( void * self,
IOHIDElementCookie elementCookie);
static IOReturn outputTransactionRemoveElement ( void * self,
IOHIDElementCookie elementCookie);
static Boolean outputTransactionHasElement ( void * self,
IOHIDElementCookie elementCookie);
static IOReturn outputTransactionSetElementDefault(void * self,
IOHIDElementCookie elementCookie,
IOHIDEventStruct * valueEvent);
static IOReturn outputTransactionGetElementDefault(void * self,
IOHIDElementCookie elementCookie,
IOHIDEventStruct * valueEvent);
static IOReturn outputTransactionSetElementValue(void * self,
IOHIDElementCookie elementCookie,
IOHIDEventStruct * valueEvent);
static IOReturn outputTransactionGetElementValue(void * self,
IOHIDElementCookie elementCookie,
IOHIDEventStruct * valueEvent);
static IOReturn outputTransactionCommit( void * self,
UInt32 timeoutMS,
IOHIDCallbackFunction callback,
void * callbackTarget,
void * callbackRefcon);
static IOReturn outputTransactionClear(void * self);
};
#endif