#ifndef IOHIDQueueClass_h
#define IOHIDQueueClass_h
#import "IOHIDIUnknown2.h"
#import <IOKit/hid/IOHIDDevicePlugIn.h>
#import <IOKit/IODataQueueShared.h>
#import "IOHIDDeviceClass.h"
@interface IOHIDQueueClass : IOHIDIUnknown2 {
IOHIDDeviceQueueInterface *_queue;
__weak IOHIDDeviceClass *_device;
mach_port_t _port;
CFMachPortRef _machPort;
CFRunLoopSourceRef _runLoopSource;
IODataQueueMemory *_queueMemory;
vm_size_t _queueMemorySize;
bool _queueSizeChanged;
uint32_t _lastTail;
uint32_t _depth;
uint64_t _queueToken;
IOHIDCallback _valueAvailableCallback;
void *_valueAvailableContext;
CFTypeRef _usageAnalytics;
}
- (nullable instancetype)initWithDevice:(IOHIDDeviceClass * _Nonnull)device;
- (nullable instancetype)initWithDevice:(IOHIDDeviceClass * _Nonnull)device
port:(mach_port_t)port
source:(CFRunLoopSourceRef _Nullable)source;
- (IOReturn)addElement:(IOHIDElementRef _Nonnull)element;
- (IOReturn)setValueAvailableCallback:(IOHIDCallback _Nonnull)callback
context:(void * _Nullable)context;
- (IOReturn)start;
- (IOReturn)stop;
- (IOReturn)copyNextValue:(IOHIDValueRef _Nullable * _Nullable)pValue;
- (void)queueCallback:(CFMachPortRef _Nonnull)port
msg:(mach_msg_header_t * _Nonnull)msg
size:(CFIndex)size
info:(void * _Nullable)info;
@end;
@interface IOHIDObsoleteQueueClass : IOHIDQueueClass {
IOHIDQueueInterface *_interface;
IOHIDCallbackFunction _eventCallback;
void *_eventCallbackTarget;
void *_eventCallbackRefcon;
}
@end;
#endif