Split actual IOKit HID interfacing off from NJDeviceController.
[enjoyable.git] / Classes / NJHIDManager.h
diff --git a/Classes/NJHIDManager.h b/Classes/NJHIDManager.h
new file mode 100644 (file)
index 0000000..752a6e5
--- /dev/null
@@ -0,0 +1,45 @@
+//
+//  NJHIDManager.h
+//  Enjoyable
+//
+//  Created by Joe Wreschnig on 3/13/13.
+//
+//
+
+#import <Foundation/Foundation.h>
+
+@protocol NJHIDManagerDelegate;
+
+@interface NJHIDManager : NSObject
+
+@property (nonatomic, copy) NSArray *criteria;
+    // Changing the criteria may trigger a stop and restart. If this happens,
+    // messages will be sent to the delegate as usual.
+
+@property (nonatomic, assign) BOOL running;
+@property (nonatomic, weak) id <NJHIDManagerDelegate> delegate;
+
+- (id)initWithCriteria:(NSArray *)criteria
+              delegate:(id <NJHIDManagerDelegate>)delegate;
+
+- (void)start;
+- (void)stop;
+
+@end
+
+@protocol NJHIDManagerDelegate
+
+- (void)hidManagerDidStart:(NJHIDManager *)manager;
+- (void)hidManagerDidStop:(NJHIDManager *)manager;
+    // Stopping the device will not trigger any removal events, so any
+    // cleanup in the delegate must be done here.
+
+- (void)hidManager:(NJHIDManager *)manager didError:(NSError *)error;
+
+- (void)hidManager:(NJHIDManager *)manager deviceAdded:(IOHIDDeviceRef)device;
+- (void)hidManager:(NJHIDManager *)manager deviceRemoved:(IOHIDDeviceRef)device;
+
+- (void)hidManager:(NJHIDManager *)manager
+      valueChanged:(IOHIDValueRef)value
+        fromDevice:(IOHIDDeviceRef)device;
+@end