// // WiiRemoteDiscoveryAgent.m // WiiToMidi // // Created by Mike Verdone on 19/03/07. // Copyright 2007 __MyCompanyName__. All rights reserved. // #import "WiiRemoteDiscoveryAgent.h" static WiiRemoteDiscoveryAgent* agent; @implementation WiiRemoteDiscoveryAgent +(WiiRemoteDiscoveryAgent*) getInstance { if (nil == agent) { agent = [[WiiRemoteDiscoveryAgent alloc] init]; } return agent; } +(void) discoveryError { // No Bluetooth. Blarg im ded! [[NSAlert alertWithMessageText:@"Bluetooth Unavailable" defaultButton:nil alternateButton:nil otherButton:nil informativeTextWithFormat:@"Turn Bluetooth On and relaunch WiiToMidi."] runModal]; [NSApp terminate:self]; } -(id) init { _controllers = [[NSMutableArray alloc] init]; //_discovery = [[WiiRemoteDiscovery discoveryWithDelegate:self] retain]; _discovery = [[WiiRemoteDiscovery alloc] init]; [_discovery setDelegate:self]; return self; } -(id) registerDelegate:(WiiMidiDelegate*)delegate { [_controllers addObject:delegate]; if ([_discovery start] != kIOReturnSuccess) [WiiRemoteDiscoveryAgent discoveryError]; return self; } -(id) unregisterDelegate:(WiiMidiDelegate*)delegate { [_controllers removeObject:delegate]; NSLog(@"Controllers waiting for wii remotes: %i", [_controllers count]); if (0 != [_controllers count]) { NSLog(@"Discovery started"); if ([_discovery start] != kIOReturnSuccess) [WiiRemoteDiscoveryAgent discoveryError]; } else { [_discovery stop]; } return self; } @end @implementation WiiRemoteDiscoveryAgent( WiiRemoteDiscoveryDelegate ) -(void) willStartWiimoteConnections { NSLog(@"willStartWiimoteConnections called"); } -(void) WiiRemoteDiscovered:(WiiRemote*)wii { NSLog(@"Wiimote connected."); if (0 == [_controllers count]) { NSLog(@"No delegates ready to receive controllers :-("); return; } WiiMidiDelegate* delegate = (WiiMidiDelegate*) [_controllers objectAtIndex:0]; [delegate setWiiRemote:wii]; [self unregisterDelegate:delegate]; } -(void) WiiRemoteDiscoveryError:(int)code { NSLog(@"Wii remote discovery error, code %i", code); } @end