iOS AILinkBleSDK - 蓝牙SDK
Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

ELAILinkBleManager.h 9.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325
  1. //
  2. // ELAILinkBleManager.h
  3. //
  4. // Created by LarryZhang on 2022/8/13.
  5. // Copyright © 2022 iot_iMac. All rights reserved.
  6. //
  7. #import <Foundation/Foundation.h>
  8. #import <CoreBluetooth/CoreBluetooth.h>
  9. #import "NELBleManagerHeader.h"
  10. #import "ELSDKHeader.h"
  11. NS_ASSUME_NONNULL_BEGIN
  12. @class ELAILinkPeripheral;
  13. @class ELBleWifiDetailModel;
  14. @protocol ELAILinkBleWifiDelegate;
  15. @protocol ELAILinkBleManagerDelegate;
  16. @interface ELAILinkBleManager : NSObject
  17. //不是必须使用单例
  18. + (instancetype)sharedManager;
  19. @property(nonatomic, assign, readonly, getter=isScanning) BOOL scanning;
  20. @property(nonatomic, assign, readonly) CBCentralManager *central;
  21. @property (nonatomic, weak) id<ELAILinkBleManagerDelegate> delegate DEPRECATED_MSG_ATTRIBUTE("use 'ailinkDelegate' only");
  22. @property (nonatomic, strong) CBPeripheral *peripheral;
  23. @property (nonatomic, weak) id<ELAILinkBleManagerDelegate> ailinkDelegate;
  24. //Bluetooth wifi proxy(蓝牙wifi代理)
  25. @property (nonatomic, weak) id<ELAILinkBleWifiDelegate> bleWifiDelegate;
  26. //模块版本号
  27. @property (nonatomic, copy) NSString *bmVersion;
  28. @property (nonatomic, copy) NSString *bmVersionPro;
  29. //电池状态
  30. @property (nonatomic, assign) struct ELBatteryStruct battery;
  31. //单位列表
  32. @property (nonatomic, strong) NSArray<NSNumber *> *weightArray;
  33. @property (nonatomic, strong) NSArray<NSNumber *> *heightArray;
  34. @property (nonatomic, strong) NSArray<NSNumber *> *temperatureArray;
  35. @property (nonatomic, strong) NSArray<NSNumber *> *bloodPressureArray;
  36. @property (nonatomic, strong) NSArray<NSNumber *> *pressureArray;
  37. @property (nonatomic, strong) NSArray<NSNumber *> *bloodSugarUnitArray;
  38. @property (nonatomic, strong) NSArray<NSNumber *> *volumeUnitArray;
  39. @end
  40. #pragma mark - scan
  41. @interface ELAILinkBleManager (scan)
  42. - (void)scanAll;
  43. - (void)scanFilterWithCidArray:(NSArray<NSNumber *> *_Nonnull)cidArray;
  44. - (void)scanFilterWithMacArray:(NSArray<NSString *> *_Nonnull)macArray;
  45. - (void)scanFilterWithCidArray:(NSArray<NSNumber *> *_Nonnull)cidArray macArray:(NSArray<NSString *> *_Nonnull)macArray;
  46. // 获取当前连接到系统的 peripheral 设备的列表(如被其它程序连接着)
  47. - (NSArray<CBPeripheral *> *)retrieveConnectedPeripherals;
  48. //NELBleManager
  49. - (void)stopScan;
  50. @end
  51. #pragma mark - connect
  52. @interface ELAILinkBleManager (connect)
  53. - (void)connectPeripheral:(CBPeripheral *)peripheral;
  54. - (void)disconnectPeripheral;
  55. - (void)connectAILinkPeripheral:(ELAILinkPeripheral * _Nonnull)ailinkPeripheral;
  56. - (ELAILinkPeripheral * _Nullable)currentAILinkPeripheral;
  57. @end
  58. #pragma mark - send
  59. @interface ELAILinkBleManager (send)
  60. - (void)sendA7Payload:(NSData *)payload;
  61. - (void)sendA6Payload:(NSData *)payload;
  62. /// base method of 'sendA7Payload' & 'sendA6Payload'
  63. - (void)sendCmd:(NSData *)cmdData;
  64. //最大发送payload长度
  65. //- (NSUInteger)maximumWritePayloadLength;
  66. //OTA最大发送payload长度
  67. //- (NSUInteger)maximumWriteOTAPayloadLength;
  68. //发送队列发送周期
  69. - (void)configWriteDataQueueInterval:(CGFloat)interval;
  70. @end
  71. #pragma mark - Special
  72. @interface ELAILinkBleManager (Special)
  73. - (void)processA7Data:(NSMutableData *)rawData withMac:(NSData *)mac withCid:(UInt16)cid;
  74. - (void)processA6Data:(NSMutableData *)rawData;
  75. - (NSData * _Nullable)makePacketA7Payload:(NSData *)payload withMac:(NSData *)mac withCid:(UInt16)cid;
  76. - (NSData * _Nullable)makePacketA6Payload:(NSData *)payload;
  77. @end
  78. #pragma mark - A6Method
  79. @interface ELAILinkBleManager (A6Method)
  80. /**
  81. Get Bluetooth information(获取蓝牙信息)
  82. @param type ELInetGetCmdType (ELInetGetCmdTypeGetHandshake除外)
  83. */
  84. - (void)getBluetoothInfoWithELInetGetCmdType:(ELInetGetCmdType)type;
  85. /**
  86. Sync the current time of phone to BLE(设置手机本地时间给蓝牙模块,只在蓝牙体脂秤等需要蓝牙模块保存历史记录时才调用)
  87. @param enable
  88. NO: In addition to the ability to turn off the time function, you can save part of the current (default)(除能,关闭时间功能,可省部分电流(默认))
  89. YES:Enable, turn on the timer function timer(使能,开启计时功能定时器)
  90. */
  91. - (void)syncBleNowDate:(BOOL)enable;
  92. ///仅WIFI秤调用,同步世界时间(0时区)到wifi-ble模块
  93. - (void)syncBleGMTNowDate:(BOOL)enable;
  94. ///同步手机本地时间给mcu,每次连接成功后会自动调用
  95. - (void)syncMCUNowDate;
  96. ///查询mqtt链接状态 CMD=0xC5
  97. - (void)checkMqttState;
  98. @end
  99. #pragma mark - BleWifi
  100. @interface ELAILinkBleManager (BleWifi)
  101. //============ Bluetooth WIFI calling method(蓝牙WIFI 设置命令) ==============
  102. /**
  103. WIFI initiate connection and disconnect(WIFI 发起连接、断开连接)
  104. @param connect YES: initiate connection NO: disconnect(YES:发起连接 NO:断开连接)
  105. */
  106. -(void)bleWifiSetupWifiConnect:(BOOL)connect;
  107. /**
  108. Set WIFI access URL(设置WIFI访问URL)
  109. @param url url(Not more than 56chars(不超过56chars))
  110. */
  111. -(void)bleWifiSetWifiURL:(NSString *)url;
  112. /**
  113. Set Wifi access port number(设置Wifi访问端口号)
  114. @param port 端口号
  115. */
  116. -(void)bleWifiSetPort:(int)port;
  117. /**
  118. Set DTIM interval(设置DTIM间隔)
  119. @param interval 间隔
  120. */
  121. -(void)bleWifiSetDTIMInterval:(int)interval;
  122. /**
  123. Set WIFI password(设置WIFI密码)
  124. @param pwd WIFI password (8 ~ 56 chars)(WIFI密码(8~56 个chars))
  125. */
  126. -(void)bleWifiSetWifiPwd:(NSString *)pwd;
  127. /**
  128. Set up connected WIFI(设置连接的WIFI)
  129. @param macData wifi MAC (little endian)(wifi的MAC(小端序))
  130. */
  131. -(void)bleWifiSetConnectWifiMac:(NSData *)macData;
  132. @end
  133. #pragma mark - ELAILinkBleManagerDelegate
  134. @protocol ELAILinkBleManagerDelegate <NSObject>
  135. @optional
  136. //扫描
  137. - (void)managerDidUpdateState:(CBCentralManager *)central;
  138. - (void)managerScanState:(BOOL)scanning;
  139. - (void)managerDidDiscoverPeripheral:(ELAILinkPeripheral *)peripheral;
  140. - (void)managerDidDiscoverMorePeripheral:(NSDictionary<NSUUID *, ELAILinkPeripheral *> *)peripherals;
  141. //连接
  142. - (void)managerDidConnectPeripheral:(CBPeripheral *)peripheral;
  143. - (void)managerDidFailToConnectPeripheral:(CBPeripheral *)peripheral error:(NSError *)error;
  144. - (void)managerDidDisconnectPeripheral:(CBPeripheral *)peripheral error:(NSError *)error;
  145. - (void)managerDidUpdateConnect:(NELBleManagerConnectState)state;
  146. //服务 & 特征
  147. - (void)peripheralDidDiscoverServices:(NSArray<CBService *> *)services;
  148. - (void)peripheralDidDiscoverCharacteristicsForService:(NSArray<CBCharacteristic *> *)characteristics;
  149. - (void)peripheralDidUpdateNotificationStateForCharacteristic:(CBCharacteristic *)characteristic;
  150. - (void)peripheralDidUpdateValueForCharacteristic:(CBCharacteristic *)characteristic;
  151. - (void)didWriteValueForCharacteristic:(CBCharacteristic *)characteristic;
  152. - (void)peripheralDidReadRSSI:(nonnull NSNumber *)RSSI;
  153. @optional
  154. //A7数据 payload
  155. - (void)aiLinkBleReceiveA7Data:(NSData *)payload;
  156. - (void)aiLinkBleReceiveA7Data:(NSData *)payload withMac:(NSData *)mac;
  157. //A6数据 packet
  158. - (void)aiLinkBleReceiveA6Data:(NSData *)packet;
  159. - (void)aiLinkBleReceiveA6Data:(NSData *)packet withMac:(NSData *)mac;
  160. @end
  161. #pragma mark - Bluetooth Wifi protocol(蓝牙Wifi协议)
  162. @protocol ELAILinkBleWifiDelegate <NSObject>
  163. @optional
  164. /**
  165. Callback Wifi details(回调Wifi详情)
  166. @param model 模型
  167. */
  168. -(void)bleWifiReceiveWifiDetailModel:(ELBleWifiDetailModel *_Nonnull)model;
  169. /**
  170. Scan nearby wifi results(扫描附近wifi结果)
  171. @param count Number of nearby wifi(附近wifi数量)
  172. */
  173. -(void)bleWifiReceiveScanedWifiCount:(int)count;
  174. /**
  175. Callback Wifi MAC address(回调Wifi MAC地址)
  176. @param macData mac
  177. */
  178. -(void)bleWifiReceiveWifiMacData:(NSData *_Nullable)macData;
  179. /**
  180. Callback WIFI password(回调WIFI密码)
  181. @param pwd password(密码)
  182. */
  183. -(void)bleWifiReceiveWifiPwd:(NSString *_Nonnull)pwd;
  184. /**
  185. Get DTIM interval (unit: ms)(获取DTIM间隔(单位:ms))
  186. @param interval Interval (unit: ms)(间隔(单位:ms))
  187. */
  188. -(void)bleWifiReceiveWifiDTIMInterval:(NSInteger)interval;
  189. /**
  190. Returns the visited URL(返回访问的url)
  191. @param url url
  192. */
  193. -(void)bleWifiReceiveWifiAccessURL:(NSString *_Nonnull)url;
  194. /**
  195. Call back wifi port number(回调wifi的端口号)
  196. @param port 端口号
  197. */
  198. -(void)bleWifiReceiveWifiPort:(int)port;
  199. /**
  200. Set or query the callback of the instruction execution result(设置指令蓝牙WIFI响应回调方法)
  201. 只支持蓝牙Wifi部分枚举
  202. @param type Type of setting (设置的类型)
  203. @param result Set result(设置的结果)
  204. */
  205. -(void)bleWifiReceiceResponseType:(ELInetSetCmdType)type result:(ELSetBluetoothResponseType)result;
  206. /**
  207. 获取会话码(deviceId)
  208. @param code (deviceId) deviceId(0 means no:为0时表示不存在)
  209. */
  210. -(void)bleWifiReceiveWifiSNCode:(int)code;
  211. /** 返回wifi名称 */
  212. - (void)bleWifiName:(NSString *)wifiName;
  213. @end
  214. #pragma mark - ELAILinkPeripheral
  215. @interface ELAILinkPeripheral : NSObject
  216. @property (nonatomic, strong) CBPeripheral *peripheral;
  217. @property (nonatomic, strong) NSDictionary *advertisementData;
  218. @property (nonatomic, strong) NSNumber *RSSI;
  219. @property (nonatomic, assign) NSTimeInterval timestamp;
  220. @property (nonatomic, copy) NSString *macAddressString;
  221. @property (nonatomic, strong) NSData *macData;
  222. @property (nonatomic, assign) UInt16 cid;
  223. @property (nonatomic, assign) UInt16 vid;
  224. @property (nonatomic, assign) UInt16 pid;
  225. @property (nonatomic, strong) NSUUID *identifier;
  226. @end
  227. NS_ASSUME_NONNULL_END