diff --git a/ios/RetroArch.xcodeproj/project.pbxproj b/ios/RetroArch.xcodeproj/project.pbxproj index 6605fe6611..e87846a05f 100644 --- a/ios/RetroArch.xcodeproj/project.pbxproj +++ b/ios/RetroArch.xcodeproj/project.pbxproj @@ -98,7 +98,6 @@ 966B9C8D16E40EFC005B61E1 /* RAInputResponder.m in Sources */ = {isa = PBXBuildFile; fileRef = 966B9C8916E40D44005B61E1 /* RAInputResponder.m */; }; 966B9C8E16E40F00005B61E1 /* ios_input.m in Sources */ = {isa = PBXBuildFile; fileRef = 966B9C8616E40D44005B61E1 /* ios_input.m */; }; 966B9CA216E418B7005B61E1 /* BTDevice.m in Sources */ = {isa = PBXBuildFile; fileRef = 966B9C9116E418B7005B61E1 /* BTDevice.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 966B9CA316E418B7005B61E1 /* BTDiscoveryViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 966B9C9316E418B7005B61E1 /* BTDiscoveryViewController.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; 966B9CA416E418B7005B61E1 /* BTstackManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 966B9C9C16E418B7005B61E1 /* BTstackManager.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; 966B9CA516E418B7005B61E1 /* libBTstack.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 966B9C9D16E418B7005B61E1 /* libBTstack.dylib */; }; 966B9CA616E418B7005B61E1 /* wiimote.c in Sources */ = {isa = PBXBuildFile; fileRef = 966B9C9E16E418B7005B61E1 /* wiimote.c */; }; @@ -210,8 +209,6 @@ 966B9C8916E40D44005B61E1 /* RAInputResponder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RAInputResponder.m; sourceTree = ""; }; 966B9C9016E418B7005B61E1 /* BTDevice.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BTDevice.h; sourceTree = ""; }; 966B9C9116E418B7005B61E1 /* BTDevice.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BTDevice.m; sourceTree = ""; }; - 966B9C9216E418B7005B61E1 /* BTDiscoveryViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BTDiscoveryViewController.h; sourceTree = ""; }; - 966B9C9316E418B7005B61E1 /* BTDiscoveryViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BTDiscoveryViewController.m; sourceTree = ""; }; 966B9C9516E418B7005B61E1 /* btstack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btstack.h; sourceTree = ""; }; 966B9C9616E418B7005B61E1 /* hci_cmds.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = hci_cmds.h; sourceTree = ""; }; 966B9C9716E418B7005B61E1 /* linked_list.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = linked_list.h; sourceTree = ""; }; @@ -422,8 +419,6 @@ children = ( 966B9C9016E418B7005B61E1 /* BTDevice.h */, 966B9C9116E418B7005B61E1 /* BTDevice.m */, - 966B9C9216E418B7005B61E1 /* BTDiscoveryViewController.h */, - 966B9C9316E418B7005B61E1 /* BTDiscoveryViewController.m */, 966B9C9416E418B7005B61E1 /* btstack */, 966B9C9B16E418B7005B61E1 /* BTstackManager.h */, 966B9C9C16E418B7005B61E1 /* BTstackManager.m */, @@ -1001,7 +996,6 @@ 966B9C8B16E40D44005B61E1 /* ios_joypad.m in Sources */, 966B9C8C16E40D44005B61E1 /* RAInputResponder.m in Sources */, 966B9CA216E418B7005B61E1 /* BTDevice.m in Sources */, - 966B9CA316E418B7005B61E1 /* BTDiscoveryViewController.m in Sources */, 966B9CA416E418B7005B61E1 /* BTstackManager.m in Sources */, 966B9CA616E418B7005B61E1 /* wiimote.c in Sources */, 966B9CA716E418B7005B61E1 /* WiiMoteHelper.m in Sources */, diff --git a/ios/RetroArch/RAConfig.h b/ios/RetroArch/RAConfig.h index d3f0f41d92..b19742ffcf 100644 --- a/ios/RetroArch/RAConfig.h +++ b/ios/RetroArch/RAConfig.h @@ -17,6 +17,7 @@ - (id)initWithPath:(NSString*)path; - (void)writeToFile:(NSString*)path; +- (bool)getBoolNamed:(NSString*)name withDefault:(bool)def; - (int)getIntNamed:(NSString*)name withDefault:(int)def; - (unsigned)getUintNamed:(NSString*)name withDefault:(unsigned)def; - (NSString*)getStringNamed:(NSString*)name withDefault:(NSString*)def; diff --git a/ios/RetroArch/RAConfig.m b/ios/RetroArch/RAConfig.m index 71866b7e03..76947fb901 100644 --- a/ios/RetroArch/RAConfig.m +++ b/ios/RetroArch/RAConfig.m @@ -40,6 +40,16 @@ config_file_write(_config, [path UTF8String]); } +- (bool)getBoolNamed:(NSString*)name withDefault:(bool)def +{ + bool result = def; + + if (_config) + config_get_bool(_config, [name UTF8String], &result); + + return result; +} + - (int)getIntNamed:(NSString*)name withDefault:(int)def { int result = def; diff --git a/ios/RetroArch/RetroArch_iOS.h b/ios/RetroArch/RetroArch_iOS.h index a20f498594..aa026b7011 100644 --- a/ios/RetroArch/RetroArch_iOS.h +++ b/ios/RetroArch/RetroArch_iOS.h @@ -23,7 +23,6 @@ - (void)runGame:(NSString*)path; - (IBAction)showSettings; -- (IBAction)showWiiRemoteConfig; @property (strong, nonatomic) RAModuleInfo* moduleInfo; diff --git a/ios/RetroArch/RetroArch_iOS.m b/ios/RetroArch/RetroArch_iOS.m index d9cd1cb0fc..f54967c61a 100644 --- a/ios/RetroArch/RetroArch_iOS.m +++ b/ios/RetroArch/RetroArch_iOS.m @@ -96,14 +96,7 @@ if (_isGameTop) [self startTimer]; -#ifdef WIIMOTE - navigationController.topViewController.navigationItem.rightBarButtonItem = (![WiiMoteHelper isBluetoothRunning]) ? nil : - [[UIBarButtonItem alloc] - initWithTitle:@"Stop Bluetooth" - style:UIBarButtonItemStyleBordered - target:[RetroArch_iOS get] - action:@selector(stopBluetooth)]; -#endif + self.topViewController.navigationItem.rightBarButtonItem = [self createBluetoothButton]; } // UINavigationController: Never animate when pushing onto, or popping, an RAGameView @@ -131,6 +124,12 @@ { rarch_init_msg_queue(); + // Read load time settings + RAConfig* conf = [[RAConfig alloc] initWithPath:self.moduleInfo.configPath]; + if ([conf getBoolNamed:@"ios_auto_bluetooth" withDefault:false]) + [self startBluetooth]; + + // [self pushViewController:RAGameView.get animated:NO]; _isRunning = true; } @@ -151,6 +150,10 @@ rarch_deinit_msg_queue(); rarch_main_clear_state(); + // Stop bluetooth (might be annoying but forgetting could eat battery of device AND wiimote) + [self stopBluetooth]; + + // [self popToViewController:[RAGameView get] animated:NO]; [self popViewControllerAnimated:NO]; } @@ -233,10 +236,26 @@ [self pushViewController:[RASettingsList new] animated:YES]; } -- (IBAction)showWiiRemoteConfig +#pragma MARK Bluetooth Helpers +- (UIBarButtonItem*)createBluetoothButton { #ifdef WIIMOTE - [[WiiMoteHelper get] showDiscovery]; + const bool isBTOn = [WiiMoteHelper isBluetoothRunning]; + return [[UIBarButtonItem alloc] + initWithTitle:isBTOn ? @"Stop Bluetooth" : @"Start Bluetooth" + style:UIBarButtonItemStyleBordered + target:[RetroArch_iOS get] + action:isBTOn ? @selector(stopBluetooth) : @selector(startBluetooth)]; +#else + return nil; +#endif +} + +- (IBAction)startBluetooth +{ +#ifdef WIIMOTE + [WiiMoteHelper startBluetooth]; + [self.topViewController.navigationItem setRightBarButtonItem:[self createBluetoothButton] animated:YES]; #endif } @@ -244,7 +263,7 @@ { #ifdef WIIMOTE [WiiMoteHelper stopBluetooth]; - [self.topViewController.navigationItem setRightBarButtonItem:nil animated:YES]; + [self.topViewController.navigationItem setRightBarButtonItem:[self createBluetoothButton] animated:YES]; #endif } diff --git a/ios/RetroArch/input/BTStack/BTDiscoveryViewController.h b/ios/RetroArch/input/BTStack/BTDiscoveryViewController.h deleted file mode 100644 index ab030db32a..0000000000 --- a/ios/RetroArch/input/BTStack/BTDiscoveryViewController.h +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright (C) 2009 by Matthias Ringwald - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the copyright holders nor the names of - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY MATTHIAS RINGWALD AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL MATTHIAS - * RINGWALD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS - * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED - * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF - * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - */ -#import -#import "BTstackManager.h" - -@class BTstackManager; -@protocol BTDiscoveryDelegate; - -typedef enum { - kInquiryInactive, - kInquiryActive, - kInquiryRemoteName -} InquiryState; - -@interface BTDiscoveryViewController : UITableViewController -{ - BTstackManager *bt; - NSObject * _delegate; - UIActivityIndicatorView *deviceActivity; - UIActivityIndicatorView *bluetoothActivity; - UIFont * deviceNameFont; - UIFont * macAddressFont; - InquiryState inquiryState; - int remoteNameIndex; - BOOL showIcons; - int connectingIndex; - NSString *customActivityText; -} --(void) markConnecting:(int)index; // use -1 for no connection active -@property (nonatomic, assign) NSObject * delegate; -@property (nonatomic, assign) BOOL showIcons; -@property (nonatomic, retain) NSString *customActivityText; -@end - -@protocol BTDiscoveryDelegate -@optional --(BOOL) discoveryView:(BTDiscoveryViewController*)discoveryView willSelectDeviceAtIndex:(int)deviceIndex; // returns NO to ignore selection --(void) statusCellSelectedDiscoveryView:(BTDiscoveryViewController*)discoveryView; -@end diff --git a/ios/RetroArch/input/BTStack/BTDiscoveryViewController.m b/ios/RetroArch/input/BTStack/BTDiscoveryViewController.m deleted file mode 100644 index e79986c010..0000000000 --- a/ios/RetroArch/input/BTStack/BTDiscoveryViewController.m +++ /dev/null @@ -1,351 +0,0 @@ -/* - * Copyright (C) 2009 by Matthias Ringwald - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the copyright holders nor the names of - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY MATTHIAS RINGWALD AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL MATTHIAS - * RINGWALD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS - * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED - * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF - * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - */ - -#import "BTDiscoveryViewController.h" -#import "BTDevice.h" - -// fix compare for 3.0 -#ifndef __IPHONE_3_0 -#define __IPHONE_3_0 30000 -#endif - -#if __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_3_0 -// SDK 30 defines missing in SDK 20 -@interface UITableViewCell (NewIn30) -- (id)initWithStyle:(int)style reuseIdentifier:(NSString *)reuseIdentifier; -@end -#endif -@interface UIDevice (privateAPI) --(BOOL) isWildcat; -@end - -@implementation BTDiscoveryViewController -@synthesize showIcons; -@synthesize delegate = _delegate; -@synthesize customActivityText; - -- (id) init { - self = [super initWithStyle:UITableViewStyleGrouped]; - macAddressFont = [UIFont fontWithName:@"Courier New" size:[UIFont labelFontSize]]; - deviceNameFont = [UIFont boldSystemFontOfSize:[UIFont labelFontSize]]; - inquiryState = kInquiryInactive; - connectingIndex = -1; - - deviceActivity = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray]; - [deviceActivity startAnimating]; - bluetoothActivity = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray]; - [bluetoothActivity startAnimating]; - - bt = [BTstackManager sharedInstance]; - _delegate = nil; - return self; -} - --(void) reload{ - [[self tableView] reloadData]; -} - -/* -- (id)initWithStyle:(UITableViewStyle)style { - // Override initWithStyle: if you create the controller programmatically and want to perform customization that is not appropriate for viewDidLoad. - if (self = [super initWithStyle:style]) { - } - return self; -} -*/ - -/* -- (void)viewDidLoad { - [super viewDidLoad]; - - // Uncomment the following line to display an Edit button in the navigation bar for this view controller. - // self.navigationItem.rightBarButtonItem = self.editButtonItem; -} -*/ - -/* -- (void)viewWillAppear:(BOOL)animated { - [super viewWillAppear:animated]; -} -*/ -/* -- (void)viewDidAppear:(BOOL)animated { - [super viewDidAppear:animated]; -} -*/ -/* -- (void)viewWillDisappear:(BOOL)animated { - [super viewWillDisappear:animated]; -} -*/ -/* -- (void)viewDidDisappear:(BOOL)animated { - [super viewDidDisappear:animated]; -} -*/ - -/* -// Override to allow orientations other than the default portrait orientation. -- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { - // Return YES for supported orientations - return (interfaceOrientation == UIInterfaceOrientationPortrait); -} - -- (void)didReceiveMemoryWarning { - // Releases the view if it doesn't have a superview. - [super didReceiveMemoryWarning]; - - // Release any cached data, images, etc that aren't in use. -} - */ - - -// BTstackManagerListenerDelegate --(void) activatedBTstackManager:(BTstackManager*) manager{ - [self reload]; -} --(void) btstackManager:(BTstackManager*)manager activationFailed:(BTstackError)error { - [self reload]; -} --(void) discoveryInquiryBTstackManager:(BTstackManager*) manager { - inquiryState = kInquiryActive; - [self reload]; -} --(void) btstackManager:(BTstackManager*)manager discoveryQueryRemoteName:(int)deviceIndex { - inquiryState = kInquiryRemoteName; - remoteNameIndex = deviceIndex; - [self reload]; -} --(void) discoveryStoppedBTstackManager:(BTstackManager*) manager { - inquiryState = kInquiryInactive; - [self reload]; -} --(void) btstackManager:(BTstackManager*)manager deviceInfo:(BTDevice*)device { - [self reload]; -} - --(void) markConnecting:(int)index; { - connectingIndex = index; - [self reload]; -} - --(void) setCustomActivityText:(NSString*) text{ - [text retain]; - [customActivityText release]; - customActivityText = text; - [self reload]; -} - -// MARK: Table view methods - -- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{ - return @"Devices"; -} - -- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { - return 1; -} - -// Customize the number of rows in the table view. -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return 1 + [bt numberOfDevicesFound]; -} - - -// Customize the appearance of table view cells. -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - - static NSString *CellIdentifier = @"Cell"; - - UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; - if (cell == nil) { -#if __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_3_0 - cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; -#else - cell = [[[UITableViewCell alloc] initWithFrame:CGRectNull reuseIdentifier:(NSString *)CellIdentifier] autorelease]; -#endif - } - - // Set up the cell... - NSString *theLabel = nil; - UIImage *theImage = nil; - UIFont *theFont = nil; - - int idx = [indexPath indexAtPosition:1]; - if (idx >= [bt numberOfDevicesFound]) { - if (customActivityText) { - theLabel = customActivityText; - cell.accessoryView = bluetoothActivity; - } else if ([bt isActivating]){ - theLabel = @"Activating BTstack..."; - cell.accessoryView = bluetoothActivity; - } else if (![bt isActive]){ - theLabel = @"Bluetooth not accessible!"; - cell.accessoryView = nil; - } else { - -#if 0 - if (connectedDevice) { - theLabel = @"Disconnect"; - cell.accessoryView = nil; - } -#endif - - if (connectingIndex >= 0) { - theLabel = @"Connecting..."; - cell.accessoryView = bluetoothActivity; - } else { - switch (inquiryState){ - case kInquiryInactive: - if ([bt numberOfDevicesFound] > 0){ - theLabel = @"Find more devices..."; - } else { - theLabel = @"Find devices..."; - } - cell.accessoryView = nil; - break; - case kInquiryActive: - theLabel = @"Searching..."; - cell.accessoryView = bluetoothActivity; - break; - case kInquiryRemoteName: - theLabel = @"Query device names..."; - cell.accessoryView = bluetoothActivity; - break; - } - } - } - } else { - - BTDevice *dev = [bt deviceAtIndex:idx]; - - // pick font - theLabel = [dev nameOrAddress]; - if ([dev name]){ - theFont = deviceNameFont; - } else { - theFont = macAddressFont; - } - - // pick an icon for the devices - if (showIcons) { - NSString *imageName = @"bluetooth.png"; - // check major device class - switch (([dev classOfDevice] & 0x1f00) >> 8) { - case 0x01: - imageName = @"computer.png"; - break; - case 0x02: - imageName = @"smartphone.png"; - break; - case 0x05: - switch ([dev classOfDevice] & 0xff){ - case 0x40: - imageName = @"keyboard.png"; - break; - case 0x80: - imageName = @"mouse.png"; - break; - case 0xc0: - imageName = @"keyboard.png"; - break; - default: - imageName = @"HID.png"; - break; - } - } - -#ifdef LASER_KB - if ([dev name] && [[dev name] isEqualToString:@"CL800BT"]){ - imageName = @"keyboard.png"; - } - - if ([dev name] && [[dev name] isEqualToString:@"CL850"]){ - imageName = @"keyboard.png"; - } - - // Celluon CL800BT, CL850 have 00-0b-24-aa-bb-cc, COD 0x400210 - uint8_t *addr = (uint8_t *) [dev address]; - if (addr[0] == 0x00 && addr[1] == 0x0b && addr[2] == 0x24){ - imageName = @"keyboard.png"; - } -#endif - theImage = [UIImage imageNamed:imageName]; - } - - // set accessory view - if (idx == connectingIndex){ - cell.accessoryView = deviceActivity; - } else { - cell.accessoryView = nil; - } - } -#if __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_3_0 - if (theLabel) cell.textLabel.text = theLabel; - if (theFont) cell.textLabel.font = theFont; - if (theImage) cell.imageView.image = theImage; -#else - if (theLabel) cell.text = theLabel; - if (theFont) cell.font = theFont; - if (theImage) cell.image = theImage; -#endif - return cell; -} - - -- (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath { - if (!_delegate) return nil; - int index = [indexPath indexAtPosition:1]; - if (index >= [bt numberOfDevicesFound]){ - if ([_delegate respondsToSelector:@selector(statusCellSelectedDiscoveryView:)]){ - [_delegate statusCellSelectedDiscoveryView:self]; - return nil; - } - } - if ([_delegate respondsToSelector:@selector(discoveryView:willSelectDeviceAtIndex:)] && [_delegate discoveryView:self willSelectDeviceAtIndex:index]){ - return indexPath; - } - return nil; -} - -// Override to allow orientations other than the default portrait orientation. -- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { - UIDevice * uiDevice = [UIDevice currentDevice]; - return [uiDevice respondsToSelector:@selector(isWildcat)] && [uiDevice isWildcat]; -} - -- (void)dealloc { - [super dealloc]; -} - - -@end - diff --git a/ios/RetroArch/input/BTStack/WiiMoteHelper.h b/ios/RetroArch/input/BTStack/WiiMoteHelper.h index 37a63fb567..9e5aba6184 100644 --- a/ios/RetroArch/input/BTStack/WiiMoteHelper.h +++ b/ios/RetroArch/input/BTStack/WiiMoteHelper.h @@ -31,12 +31,11 @@ #import -#import "BTDiscoveryViewController.h" +#import "BTstackManager.h" -@interface WiiMoteHelper : NSObject -+ (WiiMoteHelper*)get; +@interface WiiMoteHelper : NSObject ++ (void)startBluetooth; + (BOOL)isBluetoothRunning; + (void)stopBluetooth; -- (void)showDiscovery; @end diff --git a/ios/RetroArch/input/BTStack/WiiMoteHelper.m b/ios/RetroArch/input/BTStack/WiiMoteHelper.m index 08f27bf5e4..e337f6262a 100644 --- a/ios/RetroArch/input/BTStack/WiiMoteHelper.m +++ b/ios/RetroArch/input/BTStack/WiiMoteHelper.m @@ -38,27 +38,24 @@ #import "BTDevice.h" #import "BTstackManager.h" -#import "BTDiscoveryViewController.h" -#import "btstack/btstack.h" -#import "btstack/run_loop.h" -#import "btstack/hci_cmds.h" - -static BTDiscoveryViewController* discoveryView; static WiiMoteHelper* instance; static BTDevice *device; static bool btOK; - @implementation WiiMoteHelper -+ (WiiMoteHelper*)get ++ (void)startBluetooth { - if (!instance) - { - instance = [WiiMoteHelper new]; - } + instance = instance ? instance : [WiiMoteHelper new]; - return instance; + if (!btOK) + { + BTstackManager* bt = [BTstackManager sharedInstance]; + [bt setDelegate:instance]; + [bt addListener:instance]; + + btOK = [bt activate] == 0; + } } + (BOOL)isBluetoothRunning @@ -68,46 +65,19 @@ static bool btOK; + (void)stopBluetooth { - instance = nil; myosd_num_of_joys = 0; if (btOK) { BTstackManager* bt = [BTstackManager sharedInstance]; - - [bt removeListener:discoveryView]; - discoveryView = nil; - - [[BTstackManager sharedInstance] deactivate]; + + [bt deactivate]; + [bt setDelegate:nil]; + [bt removeListener:instance]; btOK = false; } -} - -- (id)init -{ - if (!btOK) - { - BTstackManager* bt = [BTstackManager sharedInstance]; - [bt setDelegate:self]; - [bt addListener:self]; - - btOK = [bt activate] == 0; - } - return self; -} - -- (void)showDiscovery -{ - if (!discoveryView) - { - discoveryView = [BTDiscoveryViewController new]; - [discoveryView setDelegate:self]; - - [[BTstackManager sharedInstance] addListener:discoveryView]; - } - - [[RetroArch_iOS get] pushViewController:discoveryView animated:YES]; + instance = nil; } // BTStackManagerListener @@ -132,10 +102,10 @@ static bool btOK; // BTStackManagerDelegate -(void) btstackManager:(BTstackManager*) manager - handlePacketWithType:(uint8_t) packet_type - forChannel:(uint16_t) channel - andData:(uint8_t *)packet - withLen:(uint16_t) size + handlePacketWithType:(uint8_t)packet_type + forChannel:(uint16_t)channel + andData:(uint8_t*)packet + withLen:(uint16_t)size { bd_addr_t event_addr; diff --git a/ios/RetroArch/settings/RASettingsList.m b/ios/RetroArch/settings/RASettingsList.m index 6f6cfe2092..7cf9e3ff15 100644 --- a/ios/RetroArch/settings/RASettingsList.m +++ b/ios/RetroArch/settings/RASettingsList.m @@ -92,10 +92,10 @@ static RASettingData* custom_action(NSString* action) NSString* shader_path = [[[NSBundle mainBundle] bundlePath] stringByAppendingString:@"/shaders/"]; NSArray* settings = [NSArray arrayWithObjects: - [NSArray arrayWithObjects:@"General", + [NSArray arrayWithObjects:@"Frontend", custom_action(@"Module Info"), #ifdef WIIMOTE - custom_action(@"Connect WiiMotes"), + boolean_setting(config, @"ios_auto_bluetooth", @"Auto Enable Bluetooth", @"false"), #endif nil], @@ -176,8 +176,6 @@ static RASettingData* custom_action(NSString* action) { if ([@"Module Info" isEqualToString:action]) [[RetroArch_iOS get] pushViewController:[[RAModuleInfoList alloc] initWithModuleInfo:[RetroArch_iOS get].moduleInfo] animated:YES]; - else if([@"Connect WiiMotes" isEqualToString:action]) - [[RetroArch_iOS get] showWiiRemoteConfig]; } @end