X-Git-Url: https://git.yukkurigames.com/?p=enjoyable.git;a=blobdiff_plain;f=Joystick.m;h=35b40c57acc1bb98ca48bfa032fa7d76c2c0ecec;hp=c86a3637a19a6460df653108bf0d835664056834;hb=03b4a589de71a49ad00450701630673631e88647;hpb=2fb801b58b29997f54443d9879d2e20ae8b169ad diff --git a/Joystick.m b/Joystick.m index c86a363..35b40c5 100644 --- a/Joystick.m +++ b/Joystick.m @@ -43,10 +43,9 @@ static NSArray *ActionsForElement(IOHIDDeviceRef device, id base) { } else if (usage == kHIDUsage_GD_Hatswitch) { action = [[JSActionHat alloc] initWithIndex:++hats]; } else if (usage >= kHIDUsage_GD_X && usage <= kHIDUsage_GD_Rz) { - // TODO(jfw): Scaling equation doesn't seem right if min != 0. action = [[JSActionAnalog alloc] initWithIndex:++axes - offset:-1.f - scale:2.f / (max - min)]; + rawMin:min + rawMax:max]; } else { continue; } @@ -56,31 +55,29 @@ static NSArray *ActionsForElement(IOHIDDeviceRef device, id base) { action.cookie = IOHIDElementGetCookie(element); [children addObject:action]; } + + CFRelease(elements); return children; } -@implementation Joystick - -@synthesize vendorId; -@synthesize productId; -@synthesize productName; -@synthesize index; -@synthesize device; -@synthesize children; +@implementation Joystick { + int vendorId; + int productId; +} - (id)initWithDevice:(IOHIDDeviceRef)dev { if ((self = [super init])) { self.device = dev; self.productName = (__bridge NSString *)IOHIDDeviceGetProperty(dev, CFSTR(kIOHIDProductKey)); - self.vendorId = [(__bridge NSNumber *)IOHIDDeviceGetProperty(dev, CFSTR(kIOHIDVendorIDKey)) intValue]; - self.productId = [(__bridge NSNumber *)IOHIDDeviceGetProperty(dev, CFSTR(kIOHIDProductIDKey)) intValue]; + vendorId = [(__bridge NSNumber *)IOHIDDeviceGetProperty(dev, CFSTR(kIOHIDVendorIDKey)) intValue]; + productId = [(__bridge NSNumber *)IOHIDDeviceGetProperty(dev, CFSTR(kIOHIDProductIDKey)) intValue]; self.children = ActionsForElement(dev, self); } return self; } - (NSString *)name { - return [NSString stringWithFormat:@"%@ #%d", productName, index]; + return [NSString stringWithFormat:@"%@ #%d", _productName, _index]; } - (id)base { @@ -88,11 +85,11 @@ static NSArray *ActionsForElement(IOHIDDeviceRef device, id base) { } - (NSString *)uid { - return [NSString stringWithFormat: @"%d:%d:%d", vendorId, productId, index]; + return [NSString stringWithFormat: @"%d:%d:%d", vendorId, productId, _index]; } - (JSAction *)findActionByCookie:(void *)cookie { - for (JSAction *child in children) + for (JSAction *child in _children) if (child.cookie == cookie) return child; return nil;