File: JOYMultiplayerController.m

package info (click to toggle)
sameboy 1.0.2%2Bds-2
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 10,632 kB
  • sloc: ansic: 29,954; objc: 22,249; asm: 1,424; pascal: 1,373; makefile: 1,064; xml: 111
file content (50 lines) | stat: -rw-r--r-- 1,445 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#import "JOYMultiplayerController.h"

@interface JOYController ()
- (instancetype)initWithDevice:(IOHIDDeviceRef)device reportIDFilter:(NSArray <NSNumber *> *) filter serialSuffix:(NSString *)suffix hacks:(NSDictionary *)hacks;
- (void)elementChanged:(IOHIDElementRef) element toValue:(IOHIDValueRef) value;
- (void)disconnected;
- (void)sendReport:(NSData *)report;
@end

@implementation JOYMultiplayerController
{
    NSMutableArray <JOYController *> *_children;
}

- (instancetype)initWithDevice:(IOHIDDeviceRef) device reportIDFilters:(NSArray <NSArray <NSNumber *> *>*) reportIDFilters hacks:(NSDictionary *)hacks;
{
    self = [super init];
    if (!self) return self;
    
    _children = [NSMutableArray array];
    
    unsigned index = 1;
    for (NSArray *filter in reportIDFilters) {
        JOYController *controller = [[JOYController alloc] initWithDevice:device reportIDFilter:filter serialSuffix:[NSString stringWithFormat:@"%d", index] hacks:hacks];
        [_children addObject:controller];
        index++;
    }
    return self;
}

- (void)elementChanged:(IOHIDElementRef) element toValue:(IOHIDValueRef) value
{
    for (JOYController *child in _children) {
        [child elementChanged:element toValue:value];
    }
}

- (void)disconnected
{
    for (JOYController *child in _children) {
        [child disconnected];
    }
}

- (void)sendReport:(NSData *)report
{
    [[_children firstObject] sendReport:report];
}

@end