Split actual IOKit HID interfacing off from NJDeviceController.
[enjoyable.git] / Classes / NJHIDManager.h
1 //
2 // NJHIDManager.h
3 // Enjoyable
4 //
5 // Created by Joe Wreschnig on 3/13/13.
6 //
7 //
8
9 #import <Foundation/Foundation.h>
10
11 @protocol NJHIDManagerDelegate;
12
13 @interface NJHIDManager : NSObject
14
15 @property (nonatomic, copy) NSArray *criteria;
16 // Changing the criteria may trigger a stop and restart. If this happens,
17 // messages will be sent to the delegate as usual.
18
19 @property (nonatomic, assign) BOOL running;
20 @property (nonatomic, weak) id <NJHIDManagerDelegate> delegate;
21
22 - (id)initWithCriteria:(NSArray *)criteria
23 delegate:(id <NJHIDManagerDelegate>)delegate;
24
25 - (void)start;
26 - (void)stop;
27
28 @end
29
30 @protocol NJHIDManagerDelegate
31
32 - (void)hidManagerDidStart:(NJHIDManager *)manager;
33 - (void)hidManagerDidStop:(NJHIDManager *)manager;
34 // Stopping the device will not trigger any removal events, so any
35 // cleanup in the delegate must be done here.
36
37 - (void)hidManager:(NJHIDManager *)manager didError:(NSError *)error;
38
39 - (void)hidManager:(NJHIDManager *)manager deviceAdded:(IOHIDDeviceRef)device;
40 - (void)hidManager:(NJHIDManager *)manager deviceRemoved:(IOHIDDeviceRef)device;
41
42 - (void)hidManager:(NJHIDManager *)manager
43 valueChanged:(IOHIDValueRef)value
44 fromDevice:(IOHIDDeviceRef)device;
45 @end