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 4.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  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. #import "AILinkBleSDK_Version.h"
  12. #import "ELAILinkBleManagerProtocol.h"
  13. #import "ELAILinkPeripheral.h"
  14. NS_ASSUME_NONNULL_BEGIN
  15. @class ELAILinkPeripheral;
  16. @class ELBleWifiDetailModel;
  17. @protocol ELAILinkBleWifiDelegate;
  18. @protocol ELAILinkBleManagerDelegate;
  19. @interface ELAILinkBleManager : NSObject
  20. //不是必须使用单例
  21. + (instancetype)sharedManager;
  22. - (NSString *)sdkVersion;
  23. + (NSString *)sdkVersion;
  24. @property(nonatomic, assign, readonly, getter=isScanning) BOOL scanning;
  25. @property(nonatomic, assign, readonly) CBCentralManager *central;
  26. @property (nonatomic, weak) id<ELAILinkBleManagerDelegate> delegate DEPRECATED_MSG_ATTRIBUTE("use 'ailinkDelegate' only");
  27. @property (nonatomic, weak) id<ELAILinkBleManagerDelegate> ailinkDelegate;
  28. //Bluetooth wifi proxy(蓝牙wifi代理)
  29. @property (nonatomic, weak) id<ELAILinkBleWifiDelegate> bleWifiDelegate;
  30. //模块版本号
  31. @property (nonatomic, copy) NSString *bmVersion;
  32. @property (nonatomic, copy) NSString *bmVersionPro;
  33. //电池状态
  34. @property (nonatomic, assign) struct ELBatteryStruct battery;
  35. //单位列表
  36. @property (nonatomic, strong) NSArray<NSNumber *> *weightArray;
  37. @property (nonatomic, strong) NSArray<NSNumber *> *heightArray;
  38. @property (nonatomic, strong) NSArray<NSNumber *> *temperatureArray;
  39. @property (nonatomic, strong) NSArray<NSNumber *> *bloodPressureArray;
  40. @property (nonatomic, strong) NSArray<NSNumber *> *pressureArray;
  41. @property (nonatomic, strong) NSArray<NSNumber *> *bloodSugarUnitArray;
  42. @property (nonatomic, strong) NSArray<NSNumber *> *volumeUnitArray;
  43. @end
  44. #pragma mark - scan
  45. @interface ELAILinkBleManager (scan)
  46. - (void)scanAll;
  47. - (void)scanFilterWithCidArray:(NSArray<NSNumber *> *_Nonnull)cidArray;
  48. - (void)scanFilterWithMacArray:(NSArray<NSString *> *_Nonnull)macArray;
  49. - (void)scanFilterWithCidArray:(NSArray<NSNumber *> *_Nonnull)cidArray macArray:(NSArray<NSString *> *_Nonnull)macArray;
  50. // 获取当前连接到系统的 peripheral 设备的列表(如被其它程序连接着)
  51. - (NSArray<CBPeripheral *> *)retrieveConnectedPeripherals;
  52. //NELBleManager
  53. - (void)stopScan;
  54. @end
  55. #pragma mark - connect
  56. @interface ELAILinkBleManager (connect)
  57. //- (void)connectPeripheral:(CBPeripheral *)peripheral;
  58. - (void)disconnectPeripheral;
  59. - (void)connectAILinkPeripheral:(ELAILinkPeripheral * _Nonnull)ailinkPeripheral;
  60. - (ELAILinkPeripheral * _Nullable)currentAILinkPeripheral;
  61. @end
  62. #pragma mark - send
  63. @interface ELAILinkBleManager (send)
  64. - (void)sendA7Payload:(NSData *)payload;
  65. - (void)sendA7PayloadNoEncryption:(NSData *)payload;
  66. - (void)sendA6Payload:(NSData *)payload;
  67. /// base method of 'sendA7Payload' & 'sendA6Payload'
  68. - (void)sendCmd:(NSData *)cmdData;
  69. //最大发送数据长度
  70. - (NSUInteger)maximumWriteValueLength;
  71. //最大发送A7 payload长度
  72. - (NSUInteger)maximumWriteA7PayloadLength;
  73. //最大发送A6 payload长度
  74. - (NSUInteger)maximumWriteA6PayloadLength;
  75. //发送队列发送周期
  76. - (void)configWriteDataQueueInterval:(CGFloat)interval;
  77. @end
  78. #pragma mark - Open
  79. @interface ELAILinkBleManager (Open)
  80. //解析指令 外部开放 Method
  81. - (void)processA7Data:(NSMutableData *)rawData withMac:(NSData *)mac withCid:(UInt16)cid;
  82. - (void)processA6Data:(NSMutableData *)rawData;
  83. //生成数据包 外部开放 Method
  84. - (NSData * _Nullable)makePacketA7Payload:(NSData *)payload withMac:(NSData *)mac withCid:(UInt16)cid;
  85. - (NSData * _Nullable)makePacketA6Payload:(NSData *)payload;
  86. @end
  87. #pragma mark - A6Method
  88. @interface ELAILinkBleManager (A6Method)
  89. /**
  90. Get Bluetooth information(获取蓝牙信息)
  91. @param type ELInetGetCmdType (ELInetGetCmdTypeGetHandshake除外)
  92. */
  93. - (void)getBluetoothInfoWithELInetGetCmdType:(ELInetGetCmdType)type;
  94. /**
  95. Sync the current time of phone to BLE(设置手机本地时间给蓝牙模块,只在蓝牙体脂秤等需要蓝牙模块保存历史记录时才调用)
  96. @param enable
  97. NO: In addition to the ability to turn off the time function, you can save part of the current (default)(除能,关闭时间功能,可省部分电流(默认))
  98. YES:Enable, turn on the timer function timer(使能,开启计时功能定时器)
  99. */
  100. - (void)syncBleNowDate:(BOOL)enable;
  101. ///仅WIFI秤调用,同步世界时间(0时区)到wifi-ble模块
  102. - (void)syncBleGMTNowDate:(BOOL)enable;
  103. ///同步手机本地时间给mcu,每次连接成功后会自动调用
  104. - (void)syncMCUNowDate;
  105. ///查询mqtt链接状态 CMD=0xC5
  106. - (void)checkMqttState;
  107. @end
  108. #pragma mark - specialMethod
  109. @interface ELAILinkBleManager (specialMethod)
  110. - (BOOL)specialMethodWithCid:(UInt16)cid vid:(UInt16)vid pid:(UInt16)pid secret:(NSString *)secret;
  111. @end
  112. NS_ASSUME_NONNULL_END