BLEServiceHandler.m 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220
  1. //
  2. // BLEServiceHandler.m
  3. // OneCable
  4. //
  5. // Created by KaRam Kim on 2017. 5. 18..
  6. // Copyright © 2017년 ntels. All rights reserved.
  7. //
  8. #import "BLEServiceHandler.h"
  9. #import <CoreBluetooth/Corebluetooth.h>
  10. @interface BLEServiceHandler()<CBCentralManagerDelegate, CBPeripheralDelegate>
  11. {
  12. CBCentralManager *manager;
  13. NSMutableArray *devices;
  14. BOOL scanning;
  15. NSTimer *scanTimer;
  16. SRWebSocket *_socket;
  17. NSMutableArray<SocketRequestModel *> *_messages;
  18. // NSMutableArray *_delegates;
  19. int _retryCount;
  20. BOOL _isShowLoading;
  21. int _loadingRequestId;
  22. }
  23. @property NSMutableDictionary* controllers;
  24. @property NSMutableDictionary* responses;
  25. @property int controllerId;
  26. @end
  27. @implementation BLEServiceHandler
  28. + (id)sharedManager
  29. {
  30. static BLEServiceHandler *sharedBLEServiceHandler = nil;
  31. static dispatch_once_t onceToken;
  32. dispatch_once(&onceToken, ^{
  33. sharedBLEServiceHandler = [[self alloc] init];
  34. });
  35. return sharedBLEServiceHandler;
  36. }
  37. - (id) init
  38. {
  39. self = [super init];
  40. if (self) {
  41. _isConnected = NO;
  42. _messages = [[NSMutableArray alloc] init];
  43. // _delegates = [[NSMutableArray alloc] init];
  44. _controllers = [[NSMutableDictionary alloc] init];
  45. _responses = [[NSMutableDictionary alloc] init];
  46. self.controllerId = 0;
  47. // [self socketOpen];
  48. }
  49. return self;
  50. }
  51. - (void) startScan
  52. {
  53. }
  54. - (void) stopScan
  55. {
  56. }
  57. - (void) sendDataWihOutDelegate:(SocketRequestModel *)data
  58. {
  59. }
  60. - (void) sendDataWithDelegate:(SocketRequestModel *)data delegate:(id)delegate
  61. {
  62. }
  63. - (void) sendDataWithDelegate:(SocketRequestModel *)data modelClass:(Class)modelClass delegate:(id)delegate
  64. {
  65. }
  66. - (void) sendDataWithDelegate:(SocketRequestModel *)data modelClass:(Class)modelClass delegate:(id)delegate isShowLoading:(BOOL)isShowLoading
  67. {
  68. }
  69. #pragma mark - CBCentralManagerDelegate
  70. - (void)centralManagerDidUpdateState:(CBCentralManager *)central {
  71. NSLog(@"Central manager changed state: %ld", central.state);
  72. //
  73. // if (central.state == CBCentralManagerStatePoweredOn) {
  74. // [self actionScan];
  75. // }
  76. }
  77. - (void)centralManager:(CBCentralManager *)central didRetrievePeripherals:(NSArray *)peripherals {
  78. NSLog(@"%ld periphirals retrieved", [peripherals count]);
  79. }
  80. - (void)centralManager:(CBCentralManager *)central didRetrieveConnectedPeripherals:(NSArray *)peripherals {
  81. // for (CBPeripheral *peripheral in peripherals) {
  82. // NSLog(@"Periphiral discovered: %@", peripheral.name);
  83. //
  84. // BOOL found = NO;
  85. // for (BTLEDevice *device in devices) {
  86. // if ([[device.peripheralRef.identifier UUIDString] isEqualToString:[peripheral.identifier UUIDString]]) {
  87. // found = YES;
  88. // }
  89. // }
  90. // if (!found)
  91. // [self addPeripheral:peripheral];
  92. //
  93. // }
  94. // [self.tableView reloadData];
  95. }
  96. - (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI {
  97. // NSLog(@"Periphiral discovered: %@, signal strength: %d", peripheral.name, RSSI.intValue);
  98. // NSLog(@"Periphiral discovered: %@, signal strength: %d", , RSSI.intValue);
  99. // for (BTLEDevice *device in devices) {
  100. // if ([[device.peripheralRef.identifier UUIDString] isEqualToString:[peripheral.identifier UUIDString]]) {
  101. // return;
  102. // }
  103. // }
  104. // if (peripheral.name != nil && peripheral.name != (id)[NSNull null]) {
  105. // if ([peripheral.name rangeOfString:@"DKC"].location != NSNotFound || [peripheral.name rangeOfString:@"BlueZ"].location != NSNotFound) {
  106. // BTLEDevice *device = [self addPeripheral:peripheral];
  107. // device.advertisementData = advertisementData;
  108. // device.RSSI = RSSI;
  109. // }
  110. // }
  111. //
  112. //
  113. //
  114. // [self.tableView reloadData];
  115. }
  116. - (void)centralManager:(CBCentralManager *)central didConnectPeripheral:(CBPeripheral *)peripheral {
  117. // NSLog(@"Periphiral connected: %@", peripheral.name);
  118. //
  119. // [[Logger shared] appendWithDevice:peripheral event:EventConnected service:nil characteristic:nil data:nil];
  120. //
  121. // [[NSNotificationCenter defaultCenter] postNotificationName:@"connected" object:nil];
  122. //
  123. // [self.tableView reloadData];
  124. }
  125. - (void)centralManager:(CBCentralManager *)central didDisconnectPeripheral:(CBPeripheral *)peripheral error:(NSError *)error {
  126. // NSLog(@"Periphiral disconnected: %@", peripheral.name);
  127. //
  128. // [[Logger shared] appendWithDevice:peripheral event:EventDisconnected service:nil characteristic:nil data:nil];
  129. //
  130. // [[NSNotificationCenter defaultCenter] postNotificationName:@"disconnected" object:nil];
  131. //
  132. // [self.tableView reloadData];
  133. }
  134. - (void)centralManager:(CBCentralManager *)central didFailToConnectPeripheral:(CBPeripheral *)peripheral error:(NSError *)error {
  135. // NSLog(@"Periphiral failed to connect: %@", peripheral.name);
  136. //
  137. // UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"Failed to connect" message:error.localizedDescription preferredStyle:UIAlertControllerStyleAlert];
  138. // [alert addAction:[UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:nil]];
  139. // [self presentViewController:alert animated:true completion:nil];
  140. }
  141. /*
  142. #define BLE_WFNPS_UUID @"6f819d94-dddf-11e6-bf26-cec0c932ce01"
  143. #define BLE_SCAN_CHR_UUID @"b364676d-dd76-11e6-bf26-cec0c932ce01"
  144. #define BLE_WLAN_LIST1_CHR_UUID @"f333f87c-0787-11e7-93ae-92361f002671"
  145. #define BLE_WLAN_LIST2_CHR_UUID @"f333fad4-0787-11e7-93ae-92361f002671"
  146. #define BLE_WLAN_LIST3_CHR_UUID @"f333fbec-0787-11e7-93ae-92361f002671"
  147. #define BLE_SSID_ARG_CHR_UUID @"508e6c28-0788-11e7-93ae-92361f002671"
  148. #define BLE_PASSWORD_ARG_CHR_UUID @"b3646c08-dd76-11e6-bf26-cec0c932ce01"
  149. #define BLE_CONNECTION_CHR_UUID @"b3646fbe-dd76-11e6-bf26-cec0c932ce01"
  150. #define BLE_SSID_CHR_UUID @"b3647108-dd76-11e6-bf26-cec0c932ce01"
  151. #define BLE_BSSID_CHR_UUID @"b3647234-dd76-11e6-bf26-cec0c932ce01"
  152. #define BLE_WF_IP_SET_ARG_CHR_UUID @"8e0b49e6-088b-11e7-93ae-92361f002671"
  153. #define BLE_WF_IP_ADDR_ARG_CHR_UUID @"8e0b4c2a-088b-11e7-93ae-92361f002671"
  154. #define BLE_WF_NET_PRE_LEN_ARG_CHR_UUID @"8e0b4e32-088b-11e7-93ae-92361f002671"
  155. #define BLE_WF_GATEWAY_ARG_CHR_UUID @"8e0b4ffe-088b-11e7-93ae-92361f002671"
  156. #define BLE_WF_DNS_ARG_CHR_UUID @"8e0b50d0-088b-11e7-93ae-92361f002671"
  157. #define BLE_APPLY_CHR_UUID @"8e0b51a2-088b-11e7-93ae-92361f002671"
  158. #define BLE_WF_IP_SET_CHR_UUID @"8e0b5314-088b-11e7-93ae-92361f002671"
  159. #define BLE_WF_IP_ADDR_CHR_UUID @"8e0b54a4-088b-11e7-93ae-92361f002671"
  160. #define BLE_WF_NET_PRE_LEN_CHR_UUID @"8e0b5576-088b-11e7-93ae-92361f002671"
  161. #define BLE_WF_GATEWAY_CHR_UUID @"8e0b568e-088b-11e7-93ae-92361f002671"
  162. #define BLE_WF_DNS_CHR_UUID @"8e0b5878-088b-11e7-93ae-92361f002671"
  163. #define BLE_IPNPS_UUID @"09d38ae8-dbb9-11e6-bf26-cec0c932ce01"
  164. #define BLE_IP_SET_ARG_CHR_UUID @"09d38d68-dbb9-11e6-bf26-cec0c932ce01"
  165. #define BLE_IP_ADDR_ARG_CHR_UUID @"09d38e62-dbb9-11e6-bf26-cec0c932ce01"
  166. #define BLE_NET_PRE_LEN_ARG_CHR_UUID @"09d38f48-dbb9-11e6-bf26-cec0c932ce01"
  167. #define BLE_GATEWAY_ARG_CHR_UUID @"09d39024-dbb9-11e6-bf26-cec0c932ce01"
  168. #define BLE_DNS_ARG_CHR_UUID @"09d3960a-dbb9-11e6-bf26-cec0c932ce01"
  169. #define BLE_APPLY_IP_CHR_UUID @"73207ac8-dd72-11e6-bf26-cec0c932ce01"
  170. #define BLE_IP_SET_CHR_UUID @"73208018-dd72-11e6-bf26-cec0c932ce01"
  171. #define BLE_IP_ADDR_CHR_UUID @"73208126-dd72-11e6-bf26-cec0c932ce01"
  172. #define BLE_NET_PRE_LEN_CHR_UUID @"73208202-dd72-11e6-bf26-cec0c932ce01"
  173. #define BLE_GATEWAY_CHR_UUID @"732082de-dd72-11e6-bf26-cec0c932ce01"
  174. #define BLE_DNS_CHR_UUID @"732083a6-dd72-11e6-bf26-cec0c932ce01"
  175. */
  176. @end