YAKDeviceManager.h 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466
  1. //
  2. // YAKDeviceManager.h
  3. // MCKit
  4. //
  5. // Created by WengFei Wang on 21/05/2018
  6. // Copyright © 2018 WengFei Wang. All rights reserved.
  7. //
  8. #import <Foundation/Foundation.h>
  9. #import <B3BLESDK/MCDeviceAddtion.h>
  10. NS_ASSUME_NONNULL_BEGIN
  11. /**
  12. MCErrorType
  13. - MCErrorNone: NO error
  14. - MCErrorBluetoothDisabled: Bluetooth is not prower on
  15. - MCErrorConnectDeviceFaild: connect device faild
  16. - MCErrorDisconnectDeviceFaild: disconnect device faild
  17. */
  18. typedef NS_ENUM(NSInteger, MCErrorType) {
  19. MCErrorNone = 0,
  20. MCErrorBluetoothDisabled,
  21. MCErrorConnectDeviceFaild,
  22. MCErrorDisconnectDeviceFaild,
  23. };
  24. @class YAKDevice;
  25. /**
  26. Response
  27. @param error error
  28. */
  29. typedef void (^MCBResponse)(NSError * _Nullable error);
  30. //连接成功Block
  31. typedef void(^W035ConnectedBlock)(NSInteger isConnected);
  32. @protocol YAKDeviceManagerDelegate <NSObject>
  33. @optional
  34. //Called when the manager state changed
  35. /**
  36. managerStateChanged
  37. @param available state Change
  38. */
  39. - (void)managerStateChanged:(BOOL)available;
  40. - (void)didDiscoverDevice:(nonnull __kindof YAKDevice *)device;
  41. //- (void)device:(nonnull __kindof MCDevice *)device didUpdateRSSI:(NSNumber *)RSSI;
  42. /**
  43. didDisconnectedDevice
  44. @param device device
  45. */
  46. - (void)didDisconnectedDevice:(nonnull __kindof YAKDevice *)device;
  47. @end
  48. typedef void(^W035BloodOxyDataBlock)(NSInteger oxy);
  49. typedef void(^W035SportTotalTimeDataBlock)(NSInteger totalTime);
  50. typedef void(^W035BloodPressureDataBlock)(NSInteger highPressure,NSInteger lowPressure);
  51. typedef void(^W035DialChangeBlock)(int index, int number);
  52. typedef void(^W035DialCheckSumBlock)(int number);
  53. typedef void(^W035DebugBlock)(NSData *__nullable data,NSString *__nullable string);
  54. typedef void(^W035BetarryLeval)(NSInteger betarry);
  55. typedef void(^W035StepCalDisBlock)(NSInteger steps,float Cal,float Dis);
  56. typedef void(^W035StepDetailBlock)(NSArray *stepDetail);
  57. typedef void(^W035HeartRateDetailBlock)(NSArray *heartRateDetail);
  58. typedef void (^W035DialSelectionCountBlock)(NSInteger count,NSInteger index);
  59. typedef void(^W035TurnWristBlock)(NSInteger isOn);
  60. typedef void(^W035ConstantHeartRateBlock)(NSDictionary *dict);
  61. typedef void(^W035DontDistributeBlock)(NSInteger isOn);
  62. typedef void(^W035NightOxygenBlock)(NSInteger isOn);
  63. typedef void(^W035CurrentLanguageBlock)(NSInteger currntLang);
  64. typedef void(^W035SleepDetailBlock)(NSArray *sleepDetail);
  65. typedef void(^W035TakeAPhotoBlock)(BOOL isTake);
  66. typedef void(^W035UnBandWatchBlock)(BOOL isBind);
  67. typedef void(^W035NotificationSwitchBlock)(NSArray *array);
  68. typedef void(^W035NotificationSetBlock)(BOOL isSet);
  69. typedef void(^W035AlarmClockZEROBlock)(BOOL isSet);
  70. typedef void(^W035LongSetRemindBlock)(NSDictionary *dict);
  71. typedef void(^W035LongSetSuccessBlock)(BOOL isSet);
  72. typedef void(^W035AlarmClockArrayBlock)(NSDictionary *alarmClockDic);
  73. typedef void(^W035AlarmClockFinishBlock)(BOOL isSet);
  74. typedef void(^W035AlarmClockSetSuccessBlock)(BOOL isSuccess);
  75. typedef void(^W035BloodPressureBlock)(NSArray *array);
  76. typedef void(^W035TemperatureBlock)(NSArray *array);
  77. typedef void(^W035BloodoxygenBlock)(NSArray *array);
  78. typedef void(^W035MonitorBloodSugarBlock)(BOOL isSuccess);
  79. typedef void(^W035Time2412Block)(BOOL is24);
  80. typedef void(^W035SYNCDataOverBlock)(BOOL isOver);
  81. typedef void(^B3GetDetailDataBlock)(NSDictionary *dict,NSArray *array);
  82. typedef void(^FindPhoneBlock)(BOOL isFind);
  83. typedef void(^W035SleepNoDataBlock)(BOOL isNoData);
  84. typedef void(^W035HeartRateNoDataBlock)(BOOL isNoData);
  85. typedef void(^W035BloodpressureNoDataBlock)(BOOL isNoData);
  86. typedef void(^W035TemperatureNoDataBlock)(BOOL isNoData);
  87. typedef void(^W035StepsNoDataBlock)(BOOL isNoData);
  88. typedef void(^W035UserInfomationBlock)(BOOL isSuccess);
  89. typedef void(^W035SoftWareVersionBlock)(NSInteger index0,NSInteger index1,NSInteger index2,NSInteger index3,NSInteger index4);
  90. typedef void(^W035DataTimeCountBlcok)(NSInteger count);
  91. typedef void(^W035SyncTimeBlock)(BOOL isSuccess);
  92. typedef void(^W035FunctionListBlock)(Byte byte0,Byte byte1,Byte byte2,Byte byte3,Byte byte4);
  93. //DFU 开始
  94. typedef void(^YAKDFUStartBlock)(BOOL isStart);
  95. //DUF 进行中的回馈
  96. typedef void (^YAKDFUProgressBlock)(NSString *msg,NSDictionary *content);
  97. //DFU进行中参数为进度
  98. typedef void (^YAKDFUONProgressBlock)(float progress);
  99. //DFU 结束
  100. typedef void(^YAKDFUFinishBlock)(BOOL isFinish);
  101. //系统类型
  102. typedef void (^W035SystemTypeBlock)(BOOL isiOS);
  103. //================V1.12===========
  104. //设置天气指令结果
  105. typedef void(^SetWeatherTypeBlock)(BOOL isSuccess);
  106. //设置女性健康指令结果
  107. typedef void(^SetFemaleFunctionBlock)(BOOL isSuccess);
  108. //================V1.13===========
  109. //全天心率增加阈值字段
  110. typedef void(^AllDayHeartRateFunctionBlock)(BOOL isSuccess);
  111. //控制皮肤测试Blcok
  112. typedef void(^ControlSkinTestBlock)(BOOL isSuccess);
  113. //控制运动开始/结束
  114. typedef void(^ControlSportStartOrStopBlock)(BOOL isSuccess,NSDictionary *dict);
  115. //皮肤数据上传
  116. typedef void(^SkinDataUpdateBlock)(NSDictionary *dict);
  117. //同步活动量数据(步数、距离、卡路里)
  118. typedef void(^ActivityVolumeDataBlock)(NSDictionary *dict,NSArray *array);
  119. //同步健康数据(睡眠、心率、血氧)
  120. typedef void(^SyncHealthyDataBlock)(NSDictionary *dict,NSArray *array);
  121. //同步运动数据(跑步、跳绳..)
  122. typedef void(^SyncSportDataBlock)(NSArray *array);
  123. //皮肤水分测试高电压
  124. typedef void(^SyncSkinWaterHeightDataBlock)(NSInteger voltage);
  125. //皮肤水分测试低电压
  126. typedef void(^SyncSkinWaterLowDataBlock)(NSInteger voltage);
  127. //皮肤水分测试高电压
  128. typedef void(^SyncOneTestBloodOxygenDataBlock)(NSInteger value);
  129. //皮肤水分测试低电压
  130. typedef void(^SyncOneTestHeartRateDataBlock)(NSInteger value);
  131. //设置转腕亮屏回调Block
  132. typedef void(^SetTurnWirstFunctionBlock)(BOOL isSuccess);
  133. typedef void (^SyncNightBloodOxgenDataBlock)(NSArray *array);
  134. typedef void (^SyncNightHeartRateDataBlock)(NSArray *array);
  135. typedef void (^SyncNightBloodPressureDataBlock)(NSArray *array);
  136. typedef void(^ChangeNewDialBlock)(BOOL isSuccess);
  137. typedef void(^StartChangeNewDialBlock)(BOOL isSuccess);
  138. typedef void(^PersonalBloodPressureBlock)(BOOL isSuccess);
  139. typedef void(^OriginalDataBlock)(NSString *string);
  140. typedef void(^DeviceControlSportStateChangeBlock)(NSInteger state, NSInteger sportType);
  141. //*************************新增属性**************************
  142. //PPG原始数据上传
  143. typedef void(^W035PPGOrginalDataDetailBlock)(NSArray *ppgDataDetail);
  144. @interface YAKDeviceManager : NSObject
  145. @property (nonatomic, strong) CBCentralManager *manager;
  146. @property (nonatomic, copy) W035BloodOxyDataBlock w035BloodOxyDataBlock;
  147. @property (nonatomic, copy) W035SportTotalTimeDataBlock w035SportTotalTimeDataBlock;
  148. @property (nonatomic, copy) W035BloodPressureDataBlock w035BloodPressureDataBlock;
  149. @property (nonatomic, copy) OriginalDataBlock originalDataBlock;
  150. @property (nonatomic, copy) PersonalBloodPressureBlock personalBloodPressureBlock;
  151. @property (nonatomic, copy) ChangeNewDialBlock changeNewDialBlock;
  152. @property (nonatomic, copy) StartChangeNewDialBlock startChangeNewDialBlock;
  153. @property (nonatomic, copy) SyncOneTestBloodOxygenDataBlock syncOneTestBloodOxygenDataBlock;
  154. @property (nonatomic, copy) SyncOneTestHeartRateDataBlock syncOneTestHeartRateDataBlock;
  155. @property (nonatomic, copy) SetTurnWirstFunctionBlock setTurnWirstFunctionBlock;
  156. @property (nonatomic, copy) SyncSkinWaterHeightDataBlock syncSkinWaterHeightDataBlock;
  157. @property (nonatomic, copy) SyncSkinWaterLowDataBlock syncSkinWaterLowDataBlock;
  158. @property (nonatomic, copy) SyncNightBloodOxgenDataBlock syncNightBloodOxgenDataBlock;
  159. @property (nonatomic, copy) SyncNightHeartRateDataBlock syncNightHeartRateDataBlock;
  160. @property (nonatomic, copy) SyncNightBloodPressureDataBlock syncNightBloodPressureDataBlock;
  161. @property (nonatomic, copy) ControlSkinTestBlock controlSkinTestBlock;
  162. @property (nonatomic, copy) ActivityVolumeDataBlock activityVolumeDataBlock;
  163. @property (nonatomic, copy) SyncHealthyDataBlock syncHealthyDataBlock;
  164. @property (nonatomic, copy) SyncSportDataBlock syncSportDataBlock;
  165. @property (nonatomic, copy) SkinDataUpdateBlock skinDataUpdateBlock;
  166. @property (nonatomic, copy) ControlSportStartOrStopBlock controlSportStartOrStopBlock;
  167. @property (nonatomic, copy) DeviceControlSportStateChangeBlock deviceControlSportStateChangeBlock;
  168. @property (nonatomic, copy) AllDayHeartRateFunctionBlock allDayHeartRateFunctionBlock;
  169. @property (nonatomic, copy) SetWeatherTypeBlock setWeatherTypeBlock;
  170. @property (nonatomic, copy) SetFemaleFunctionBlock setFemaleFunctionBlock;
  171. @property (nonatomic, copy) W035DialCheckSumBlock w035DialCheckSumBlock;
  172. @property (nonatomic, copy) W035DialChangeBlock w035DialChangeBlock;
  173. @property (nonatomic, copy) W035SystemTypeBlock w035SystemTypeBlock;
  174. @property (nonatomic, copy) W035FunctionListBlock w035FunctionListBlock;
  175. @property (nonatomic, copy) W035SyncTimeBlock w035SyncTimeBlock;
  176. @property (nonatomic, copy) W035DataTimeCountBlcok w035DataTimeCountBlcok;
  177. @property (nonatomic, copy)W035SoftWareVersionBlock w035SoftWareVersionBlock;
  178. @property (nonatomic, copy) W035UserInfomationBlock w035UserInfomationBlock;
  179. @property (nonatomic, copy) W035StepsNoDataBlock w035StepsNoDataBlock;
  180. @property (nonatomic, copy) W035TemperatureNoDataBlock w035TemperatureNoDataBlock;
  181. @property (nonatomic, copy) W035BloodpressureNoDataBlock w035BloodpressureNoDataBlock;
  182. @property (nonatomic, copy)W035HeartRateNoDataBlock W035HeartRateNoDataBlock;
  183. @property (nonatomic, copy) W035SleepNoDataBlock w035SleepNoDataBlock;
  184. @property (nonatomic, copy) FindPhoneBlock findPhoneBlock;
  185. @property (nonatomic, copy) B3GetDetailDataBlock b3GetDetailDataBlock;
  186. @property (nonatomic, copy) W035SYNCDataOverBlock w035SYNCDataOverBlock;
  187. @property (nonatomic, copy) W035TemperatureBlock w035TemperatureBlock;
  188. @property (nonatomic, copy) W035BloodoxygenBlock w035BloodoxygenBlock;
  189. @property (nonatomic, copy) W035MonitorBloodSugarBlock w035MonitorBloodSugarBlock;
  190. @property (nonatomic, copy) W035LongSetSuccessBlock w035LongSetSuccessBlock;
  191. //电池电量
  192. @property (nonatomic, copy) W035BetarryLeval w035betarryLeval;
  193. @property (nonatomic, copy) W035StepCalDisBlock w035StepCalDisBlock;
  194. @property (nonatomic, copy) W035StepDetailBlock w035StepDetailBlock;
  195. @property (nonatomic, copy) W035SleepDetailBlock w035SleepDetailBlock;
  196. @property (nonatomic, copy) W035Time2412Block w035Time2412Block;
  197. @property (nonatomic, copy) W035HeartRateDetailBlock w035HeartRateDetailBlock;
  198. @property (nonatomic, copy) W035DialSelectionCountBlock w035DialSelectionCountBlock;
  199. @property (nonatomic, copy) W035TurnWristBlock w035TurnWristBlock;
  200. @property (nonatomic, copy) W035ConstantHeartRateBlock w035ConstantHeartRateBlock;
  201. @property (nonatomic, copy) W035NightOxygenBlock w035NightOxygenBlock;
  202. @property (nonatomic, copy) W035CurrentLanguageBlock w035CurrentLangBlock;
  203. @property (nonatomic, copy) W035DontDistributeBlock w035DontDistributeBlock;
  204. @property (nonatomic, copy) W035TakeAPhotoBlock w035TakeAPhotoBlock;
  205. @property (nonatomic, copy) W035UnBandWatchBlock w035UnBandWatchBlock;
  206. @property (nonatomic, copy) W035NotificationSwitchBlock w035NotificationSwitchBlock;
  207. @property (nonatomic, copy) W035NotificationSetBlock w035NotificationSetBlock;
  208. @property (nonatomic, copy) W035AlarmClockZEROBlock w035AlarmClockZEROBlock;
  209. @property (nonatomic, copy) W035AlarmClockArrayBlock w035AlarmClockArrayBlock;
  210. @property (nonatomic, copy) W035AlarmClockFinishBlock w035AlarmClockFinishBlock;
  211. @property (nonatomic, copy) W035AlarmClockSetSuccessBlock w035AlarmClockSetSuccessBlock;
  212. @property (nonatomic, copy) W035LongSetRemindBlock w035LongSetRemindBlock;
  213. @property (nonatomic, copy) W035BloodPressureBlock w035BloodPressureBlock;
  214. @property (nonatomic, copy)YAKDFUStartBlock yakDFUStartBlock;
  215. @property (nonatomic, copy)YAKDFUProgressBlock yakDFUProgressBlock;
  216. @property (nonatomic, copy)YAKDFUONProgressBlock yakDFUONProgressBlock;
  217. @property (nonatomic, copy)YAKDFUFinishBlock yakDFUFinishBlock;
  218. @property (nonatomic, copy) W035DebugBlock w035DebugBlock;
  219. @property (nonatomic, copy) NSString *turnWirstString;
  220. @property (nonatomic, copy) NSString *continuityHeartString;
  221. @property (nonatomic, copy) NSString *doNotDisturb;
  222. //*************************新增属性**************************
  223. //PPG原始数据上传回调
  224. @property (nonatomic, copy) W035PPGOrginalDataDetailBlock w035PPGOrginalDataDetailBlock;
  225. /**
  226. YAKDeviceManagerDelegate
  227. */
  228. @property (nonatomic, weak, nullable) id<YAKDeviceManagerDelegate> delegate;
  229. /**
  230. currentDevice
  231. */
  232. @property (nonatomic, copy, readonly, nullable) __kindof YAKDevice *currentDevice;
  233. /**
  234. Description determine the system bluetooth is available to use
  235. */
  236. @property (nonatomic, assign, readonly, getter=isAvailable) BOOL available;
  237. @property (nonatomic, assign) BOOL deviceConnected;
  238. @property (nonatomic, copy) W035ConnectedBlock w035ConnectedBlock;
  239. + (instancetype)sharedInstance;
  240. - (NSDictionary *)sleepDataHandle:(NSArray *)array;
  241. //For these methods, device allways means @MCDevice
  242. /**
  243. scan device
  244. */
  245. - (void)scanForDevice;
  246. /**
  247. scanForDeviceWithDeviceTypes:
  248. @param deviceTypes deviceTypes
  249. */
  250. - (void)scanForDeviceWithDeviceTypes:(nullable NSArray<NSNumber *> *)deviceTypes;
  251. /**
  252. stop Scan
  253. */
  254. - (void)stopScan;
  255. /**
  256. connectDevice
  257. @param device device
  258. @param response response
  259. */
  260. - (void)connectDevice:(nonnull YAKDevice *)device response:(MCBResponse)response;
  261. /**
  262. connectDeviceForIdentifier
  263. @param identifier identifier
  264. @param response response
  265. */
  266. - (void)connectDeviceForIdentifier:(nonnull NSString *)identifier response:(MCBResponse)response;
  267. /**
  268. disconnectDeviceWithResponse
  269. @param response response
  270. */
  271. - (void)disconnectDeviceWithResponse:(MCBResponse)response;
  272. /**
  273. discoveredDevices
  274. @return NSArray contains MCDevice
  275. */
  276. - (nullable NSArray<__kindof YAKDevice *> *)discoveredDevices;
  277. - (void)updateNewFile:(NSString *)fileName;
  278. /// OTA文件
  279. /// @param data bin文件的二进制文件
  280. - (void)updateOTANewFile:(NSData *)data;
  281. @end
  282. NS_ASSUME_NONNULL_END