iOS AILinkBleSDK - 蓝牙SDK
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

ELAILinkBleManager.h 5.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195
  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. @protocol ELAILinkBleManagerDelegate <NSObject>
  14. @optional
  15. //扫描
  16. - (void)managerDidUpdateState:(CBCentralManager *)central;
  17. - (void)managerScanState:(BOOL)scanning;
  18. - (void)managerDidDiscoverPeripheral:(ELAILinkPeripheral *)peripheral;
  19. - (void)managerDidDiscoverMorePeripheral:(NSDictionary<NSUUID *, ELAILinkPeripheral *> *)peripherals;
  20. //连接
  21. - (void)managerDidConnectPeripheral:(CBPeripheral *)peripheral;
  22. - (void)managerDidFailToConnectPeripheral:(CBPeripheral *)peripheral error:(NSError *)error;
  23. - (void)managerDidDisconnectPeripheral:(CBPeripheral *)peripheral error:(NSError *)error;
  24. - (void)managerDidUpdateConnect:(NELBleManagerConnectState)state;
  25. //服务 & 特征
  26. - (void)peripheralDidDiscoverServices:(NSArray<CBService *> *)services;
  27. - (void)peripheralDidDiscoverCharacteristicsForService:(NSArray<CBCharacteristic *> *)characteristics;
  28. - (void)peripheralDidUpdateNotificationStateForCharacteristic:(CBCharacteristic *)characteristic;
  29. - (void)peripheralDidUpdateValueForCharacteristic:(CBCharacteristic *)characteristic;
  30. - (void)didWriteValueForCharacteristic:(CBCharacteristic *)characteristic;
  31. - (void)peripheralDidReadRSSI:(nonnull NSNumber *)RSSI;
  32. @optional
  33. //A7数据 payload
  34. - (void)aiLinkBleReceiveA7Data:(NSData *)payload;
  35. //A6数据 packet
  36. - (void)aiLinkBleReceiveA6Data:(NSData *)packet;
  37. @end
  38. @interface ELAILinkBleManager : NSObject
  39. @property(nonatomic, assign, readonly, getter=isScanning) BOOL scanning;
  40. @property(nonatomic, assign, readonly) CBCentralManager *central;
  41. @property (nonatomic, weak) id<ELAILinkBleManagerDelegate> delegate DEPRECATED_MSG_ATTRIBUTE("use 'ailinkDelegate' only");
  42. //不是必须使用单例
  43. + (instancetype)sharedManager;
  44. @property (nonatomic, strong) CBPeripheral *peripheral;
  45. @property (nonatomic, weak) id<ELAILinkBleManagerDelegate> ailinkDelegate;
  46. //模块版本号
  47. @property (nonatomic, copy) NSString *bmVersion;
  48. @property (nonatomic, copy) NSString *bmVersionPro;
  49. //电池状态
  50. @property (nonatomic, assign) struct ELBatteryStruct battery;
  51. //单位列表
  52. @property (nonatomic, strong) NSArray<NSNumber *> *weightArray;
  53. @property (nonatomic, strong) NSArray<NSNumber *> *heightArray;
  54. @property (nonatomic, strong) NSArray<NSNumber *> *temperatureArray;
  55. @property (nonatomic, strong) NSArray<NSNumber *> *bloodPressureArray;
  56. @property (nonatomic, strong) NSArray<NSNumber *> *pressureArray;
  57. @property (nonatomic, strong) NSArray<NSNumber *> *bloodSugarUnitArray;
  58. @property (nonatomic, strong) NSArray<NSNumber *> *volumeUnitArray;
  59. @end
  60. @interface ELAILinkBleManager (scan)
  61. - (void)scanAll;
  62. - (void)scanFilterWithCidArray:(NSArray<NSNumber *> *_Nonnull)cidArray;
  63. - (void)scanFilterWithMacArray:(NSArray<NSString *> *_Nonnull)macArray;
  64. - (void)scanFilterWithCidArray:(NSArray<NSNumber *> *_Nonnull)cidArray macArray:(NSArray<NSString *> *_Nonnull)macArray;
  65. // 获取当前连接到系统的 peripheral 设备的列表(如被其它程序连接着)
  66. - (NSArray<CBPeripheral *> *)retrieveConnectedPeripherals;
  67. //NELBleManager
  68. - (void)stopScan;
  69. @end
  70. @interface ELAILinkBleManager (connect)
  71. - (void)connectPeripheral:(CBPeripheral *)peripheral;
  72. - (void)disconnectPeripheral;
  73. - (void)connectAILinkPeripheral:(ELAILinkPeripheral * _Nonnull)ailinkPeripheral;
  74. - (ELAILinkPeripheral * _Nullable)currentAILinkPeripheral;
  75. @end
  76. @interface ELAILinkBleManager (send)
  77. - (void)sendA7Payload:(NSData *)payload;
  78. - (void)sendA6Payload:(NSData *)payload;
  79. //base method of 'sendA7Payload' & 'sendA6Payload'
  80. - (void)sendCmd:(NSData *)cmdData;
  81. ////最大发送payload长度
  82. //- (NSUInteger)maximumWritePayloadLength;
  83. ////OTA最大发送payload长度
  84. //- (NSUInteger)maximumWriteOTAPayloadLength;
  85. //发送队列发送周期
  86. - (void)configWriteDataQueueInterval:(CGFloat)interval;
  87. @end
  88. @interface ELAILinkBleManager (A6Method)
  89. /**
  90. Sync the current time of phone to BLE(设置手机本地时间给蓝牙模块,只在蓝牙体脂秤等需要蓝牙模块保存历史记录时才调用)
  91. @param enable
  92. NO: In addition to the ability to turn off the time function, you can save part of the current (default)(除能,关闭时间功能,可省部分电流(默认))
  93. YES:Enable, turn on the timer function timer(使能,开启计时功能定时器)
  94. */
  95. - (void)syncBleNowDate:(BOOL)enable;
  96. ///仅WIFI秤调用,同步世界时间(0时区)到wifi-ble模块
  97. - (void)syncBleGMTNowDate:(BOOL)enable;
  98. ///同步手机本地时间给mcu,每次连接成功后会自动调用
  99. - (void)syncMCUNowDate;
  100. @end
  101. #pragma mark - ELAILinkPeripheral
  102. @interface ELAILinkPeripheral : NSObject
  103. @property (nonatomic, strong) CBPeripheral *peripheral;
  104. @property (nonatomic, strong) NSDictionary *advertisementData;
  105. @property (nonatomic, strong) NSNumber *RSSI;
  106. @property (nonatomic, assign) NSTimeInterval timestamp;
  107. @property (nonatomic, copy) NSString *macAddressString;
  108. @property (nonatomic, strong) NSData *macData;
  109. @property (nonatomic, assign) UInt16 cid;
  110. @property (nonatomic, assign) UInt16 vid;
  111. @property (nonatomic, assign) UInt16 pid;
  112. @property (nonatomic, strong) NSUUID *identifier;
  113. @end
  114. NS_ASSUME_NONNULL_END