// // YAKDeviceManager.h // MCKit // // Created by WengFei Wang on 21/05/2018 // Copyright © 2018 WengFei Wang. All rights reserved. // #import #import NS_ASSUME_NONNULL_BEGIN /** MCErrorType - MCErrorNone: NO error - MCErrorBluetoothDisabled: Bluetooth is not prower on - MCErrorConnectDeviceFaild: connect device faild - MCErrorDisconnectDeviceFaild: disconnect device faild */ typedef NS_ENUM(NSInteger, MCErrorType) { MCErrorNone = 0, MCErrorBluetoothDisabled, MCErrorConnectDeviceFaild, MCErrorDisconnectDeviceFaild, }; @class YAKDevice; /** Response @param error error */ typedef void (^MCBResponse)(NSError * _Nullable error); //连接成功Block typedef void(^W035ConnectedBlock)(NSInteger isConnected); @protocol YAKDeviceManagerDelegate @optional //Called when the manager state changed /** managerStateChanged @param available state Change */ - (void)managerStateChanged:(BOOL)available; - (void)didDiscoverDevice:(nonnull __kindof YAKDevice *)device; //- (void)device:(nonnull __kindof MCDevice *)device didUpdateRSSI:(NSNumber *)RSSI; /** didDisconnectedDevice @param device device */ - (void)didDisconnectedDevice:(nonnull __kindof YAKDevice *)device; @end typedef void(^W035BloodOxyDataBlock)(NSInteger oxy); typedef void(^W035SportTotalTimeDataBlock)(NSInteger totalTime); typedef void(^W035BloodPressureDataBlock)(NSInteger highPressure,NSInteger lowPressure); typedef void(^W035DialChangeBlock)(int index, int number); typedef void(^W035DialCheckSumBlock)(int number); typedef void(^W035DebugBlock)(NSData *__nullable data,NSString *__nullable string); typedef void(^W035BetarryLeval)(NSInteger betarry); typedef void(^W035StepCalDisBlock)(NSInteger steps,float Cal,float Dis); typedef void(^W035StepDetailBlock)(NSArray *stepDetail); typedef void(^W035HeartRateDetailBlock)(NSArray *heartRateDetail); typedef void (^W035DialSelectionCountBlock)(NSInteger count,NSInteger index); typedef void(^W035TurnWristBlock)(NSInteger isOn); typedef void(^W035ConstantHeartRateBlock)(NSDictionary *dict); typedef void(^W035DontDistributeBlock)(NSInteger isOn); typedef void(^W035NightOxygenBlock)(NSInteger isOn); typedef void(^W035CurrentLanguageBlock)(NSInteger currntLang); typedef void(^W035SleepDetailBlock)(NSArray *sleepDetail); typedef void(^W035TakeAPhotoBlock)(BOOL isTake); typedef void(^W035UnBandWatchBlock)(BOOL isBind); typedef void(^W035NotificationSwitchBlock)(NSArray *array); typedef void(^W035NotificationSetBlock)(BOOL isSet); typedef void(^W035AlarmClockZEROBlock)(BOOL isSet); typedef void(^W035LongSetRemindBlock)(NSDictionary *dict); typedef void(^W035LongSetSuccessBlock)(BOOL isSet); typedef void(^W035AlarmClockArrayBlock)(NSDictionary *alarmClockDic); typedef void(^W035AlarmClockFinishBlock)(BOOL isSet); typedef void(^W035AlarmClockSetSuccessBlock)(BOOL isSuccess); typedef void(^W035BloodPressureBlock)(NSArray *array); typedef void(^W035TemperatureBlock)(NSArray *array); typedef void(^W035BloodoxygenBlock)(NSArray *array); typedef void(^W035MonitorBloodSugarBlock)(BOOL isSuccess); typedef void(^W035Time2412Block)(BOOL is24); typedef void(^W035SYNCDataOverBlock)(BOOL isOver); typedef void(^B3GetDetailDataBlock)(NSDictionary *dict,NSArray *array); typedef void(^FindPhoneBlock)(BOOL isFind); typedef void(^W035SleepNoDataBlock)(BOOL isNoData); typedef void(^W035HeartRateNoDataBlock)(BOOL isNoData); typedef void(^W035BloodpressureNoDataBlock)(BOOL isNoData); typedef void(^W035TemperatureNoDataBlock)(BOOL isNoData); typedef void(^W035StepsNoDataBlock)(BOOL isNoData); typedef void(^W035UserInfomationBlock)(BOOL isSuccess); typedef void(^W035SoftWareVersionBlock)(NSInteger index0,NSInteger index1,NSInteger index2,NSInteger index3,NSInteger index4); typedef void(^W035DataTimeCountBlcok)(NSInteger count); typedef void(^W035SyncTimeBlock)(BOOL isSuccess); typedef void(^W035FunctionListBlock)(Byte byte0,Byte byte1,Byte byte2,Byte byte3,Byte byte4); //DFU 开始 typedef void(^YAKDFUStartBlock)(BOOL isStart); //DUF 进行中的回馈 typedef void (^YAKDFUProgressBlock)(NSString *msg,NSDictionary *content); //DFU进行中参数为进度 typedef void (^YAKDFUONProgressBlock)(float progress); //DFU 结束 typedef void(^YAKDFUFinishBlock)(BOOL isFinish); //系统类型 typedef void (^W035SystemTypeBlock)(BOOL isiOS); //================V1.12=========== //设置天气指令结果 typedef void(^SetWeatherTypeBlock)(BOOL isSuccess); //设置女性健康指令结果 typedef void(^SetFemaleFunctionBlock)(BOOL isSuccess); //================V1.13=========== //全天心率增加阈值字段 typedef void(^AllDayHeartRateFunctionBlock)(BOOL isSuccess); //控制皮肤测试Blcok typedef void(^ControlSkinTestBlock)(BOOL isSuccess); //控制运动开始/结束 typedef void(^ControlSportStartOrStopBlock)(BOOL isSuccess,NSDictionary *dict); //皮肤数据上传 typedef void(^SkinDataUpdateBlock)(NSDictionary *dict); //同步活动量数据(步数、距离、卡路里) typedef void(^ActivityVolumeDataBlock)(NSDictionary *dict,NSArray *array); //同步健康数据(睡眠、心率、血氧) typedef void(^SyncHealthyDataBlock)(NSDictionary *dict,NSArray *array); //同步运动数据(跑步、跳绳..) typedef void(^SyncSportDataBlock)(NSArray *array); //皮肤水分测试高电压 typedef void(^SyncSkinWaterHeightDataBlock)(NSInteger voltage); //皮肤水分测试低电压 typedef void(^SyncSkinWaterLowDataBlock)(NSInteger voltage); //皮肤水分测试高电压 typedef void(^SyncOneTestBloodOxygenDataBlock)(NSInteger value); //皮肤水分测试低电压 typedef void(^SyncOneTestHeartRateDataBlock)(NSInteger value); //设置转腕亮屏回调Block typedef void(^SetTurnWirstFunctionBlock)(BOOL isSuccess); typedef void (^SyncNightBloodOxgenDataBlock)(NSArray *array); typedef void (^SyncNightHeartRateDataBlock)(NSArray *array); typedef void (^SyncNightBloodPressureDataBlock)(NSArray *array); typedef void(^ChangeNewDialBlock)(BOOL isSuccess); typedef void(^StartChangeNewDialBlock)(BOOL isSuccess); typedef void(^PersonalBloodPressureBlock)(BOOL isSuccess); typedef void(^OriginalDataBlock)(NSString *string); typedef void(^DeviceControlSportStateChangeBlock)(NSInteger state, NSInteger sportType); //*************************新增属性************************** //PPG原始数据上传 typedef void(^W035PPGOrginalDataDetailBlock)(NSArray *ppgDataDetail); @interface YAKDeviceManager : NSObject @property (nonatomic, strong) CBCentralManager *manager; @property (nonatomic, copy) W035BloodOxyDataBlock w035BloodOxyDataBlock; @property (nonatomic, copy) W035SportTotalTimeDataBlock w035SportTotalTimeDataBlock; @property (nonatomic, copy) W035BloodPressureDataBlock w035BloodPressureDataBlock; @property (nonatomic, copy) OriginalDataBlock originalDataBlock; @property (nonatomic, copy) PersonalBloodPressureBlock personalBloodPressureBlock; @property (nonatomic, copy) ChangeNewDialBlock changeNewDialBlock; @property (nonatomic, copy) StartChangeNewDialBlock startChangeNewDialBlock; @property (nonatomic, copy) SyncOneTestBloodOxygenDataBlock syncOneTestBloodOxygenDataBlock; @property (nonatomic, copy) SyncOneTestHeartRateDataBlock syncOneTestHeartRateDataBlock; @property (nonatomic, copy) SetTurnWirstFunctionBlock setTurnWirstFunctionBlock; @property (nonatomic, copy) SyncSkinWaterHeightDataBlock syncSkinWaterHeightDataBlock; @property (nonatomic, copy) SyncSkinWaterLowDataBlock syncSkinWaterLowDataBlock; @property (nonatomic, copy) SyncNightBloodOxgenDataBlock syncNightBloodOxgenDataBlock; @property (nonatomic, copy) SyncNightHeartRateDataBlock syncNightHeartRateDataBlock; @property (nonatomic, copy) SyncNightBloodPressureDataBlock syncNightBloodPressureDataBlock; @property (nonatomic, copy) ControlSkinTestBlock controlSkinTestBlock; @property (nonatomic, copy) ActivityVolumeDataBlock activityVolumeDataBlock; @property (nonatomic, copy) SyncHealthyDataBlock syncHealthyDataBlock; @property (nonatomic, copy) SyncSportDataBlock syncSportDataBlock; @property (nonatomic, copy) SkinDataUpdateBlock skinDataUpdateBlock; @property (nonatomic, copy) ControlSportStartOrStopBlock controlSportStartOrStopBlock; @property (nonatomic, copy) DeviceControlSportStateChangeBlock deviceControlSportStateChangeBlock; @property (nonatomic, copy) AllDayHeartRateFunctionBlock allDayHeartRateFunctionBlock; @property (nonatomic, copy) SetWeatherTypeBlock setWeatherTypeBlock; @property (nonatomic, copy) SetFemaleFunctionBlock setFemaleFunctionBlock; @property (nonatomic, copy) W035DialCheckSumBlock w035DialCheckSumBlock; @property (nonatomic, copy) W035DialChangeBlock w035DialChangeBlock; @property (nonatomic, copy) W035SystemTypeBlock w035SystemTypeBlock; @property (nonatomic, copy) W035FunctionListBlock w035FunctionListBlock; @property (nonatomic, copy) W035SyncTimeBlock w035SyncTimeBlock; @property (nonatomic, copy) W035DataTimeCountBlcok w035DataTimeCountBlcok; @property (nonatomic, copy)W035SoftWareVersionBlock w035SoftWareVersionBlock; @property (nonatomic, copy) W035UserInfomationBlock w035UserInfomationBlock; @property (nonatomic, copy) W035StepsNoDataBlock w035StepsNoDataBlock; @property (nonatomic, copy) W035TemperatureNoDataBlock w035TemperatureNoDataBlock; @property (nonatomic, copy) W035BloodpressureNoDataBlock w035BloodpressureNoDataBlock; @property (nonatomic, copy)W035HeartRateNoDataBlock W035HeartRateNoDataBlock; @property (nonatomic, copy) W035SleepNoDataBlock w035SleepNoDataBlock; @property (nonatomic, copy) FindPhoneBlock findPhoneBlock; @property (nonatomic, copy) B3GetDetailDataBlock b3GetDetailDataBlock; @property (nonatomic, copy) W035SYNCDataOverBlock w035SYNCDataOverBlock; @property (nonatomic, copy) W035TemperatureBlock w035TemperatureBlock; @property (nonatomic, copy) W035BloodoxygenBlock w035BloodoxygenBlock; @property (nonatomic, copy) W035MonitorBloodSugarBlock w035MonitorBloodSugarBlock; @property (nonatomic, copy) W035LongSetSuccessBlock w035LongSetSuccessBlock; //电池电量 @property (nonatomic, copy) W035BetarryLeval w035betarryLeval; @property (nonatomic, copy) W035StepCalDisBlock w035StepCalDisBlock; @property (nonatomic, copy) W035StepDetailBlock w035StepDetailBlock; @property (nonatomic, copy) W035SleepDetailBlock w035SleepDetailBlock; @property (nonatomic, copy) W035Time2412Block w035Time2412Block; @property (nonatomic, copy) W035HeartRateDetailBlock w035HeartRateDetailBlock; @property (nonatomic, copy) W035DialSelectionCountBlock w035DialSelectionCountBlock; @property (nonatomic, copy) W035TurnWristBlock w035TurnWristBlock; @property (nonatomic, copy) W035ConstantHeartRateBlock w035ConstantHeartRateBlock; @property (nonatomic, copy) W035NightOxygenBlock w035NightOxygenBlock; @property (nonatomic, copy) W035CurrentLanguageBlock w035CurrentLangBlock; @property (nonatomic, copy) W035DontDistributeBlock w035DontDistributeBlock; @property (nonatomic, copy) W035TakeAPhotoBlock w035TakeAPhotoBlock; @property (nonatomic, copy) W035UnBandWatchBlock w035UnBandWatchBlock; @property (nonatomic, copy) W035NotificationSwitchBlock w035NotificationSwitchBlock; @property (nonatomic, copy) W035NotificationSetBlock w035NotificationSetBlock; @property (nonatomic, copy) W035AlarmClockZEROBlock w035AlarmClockZEROBlock; @property (nonatomic, copy) W035AlarmClockArrayBlock w035AlarmClockArrayBlock; @property (nonatomic, copy) W035AlarmClockFinishBlock w035AlarmClockFinishBlock; @property (nonatomic, copy) W035AlarmClockSetSuccessBlock w035AlarmClockSetSuccessBlock; @property (nonatomic, copy) W035LongSetRemindBlock w035LongSetRemindBlock; @property (nonatomic, copy) W035BloodPressureBlock w035BloodPressureBlock; @property (nonatomic, copy)YAKDFUStartBlock yakDFUStartBlock; @property (nonatomic, copy)YAKDFUProgressBlock yakDFUProgressBlock; @property (nonatomic, copy)YAKDFUONProgressBlock yakDFUONProgressBlock; @property (nonatomic, copy)YAKDFUFinishBlock yakDFUFinishBlock; @property (nonatomic, copy) W035DebugBlock w035DebugBlock; @property (nonatomic, copy) NSString *turnWirstString; @property (nonatomic, copy) NSString *continuityHeartString; @property (nonatomic, copy) NSString *doNotDisturb; //*************************新增属性************************** //PPG原始数据上传回调 @property (nonatomic, copy) W035PPGOrginalDataDetailBlock w035PPGOrginalDataDetailBlock; /** YAKDeviceManagerDelegate */ @property (nonatomic, weak, nullable) id delegate; /** currentDevice */ @property (nonatomic, copy, readonly, nullable) __kindof YAKDevice *currentDevice; /** Description determine the system bluetooth is available to use */ @property (nonatomic, assign, readonly, getter=isAvailable) BOOL available; @property (nonatomic, assign) BOOL deviceConnected; @property (nonatomic, copy) W035ConnectedBlock w035ConnectedBlock; + (instancetype)sharedInstance; - (NSDictionary *)sleepDataHandle:(NSArray *)array; //For these methods, device allways means @MCDevice /** scan device */ - (void)scanForDevice; /** scanForDeviceWithDeviceTypes: @param deviceTypes deviceTypes */ - (void)scanForDeviceWithDeviceTypes:(nullable NSArray *)deviceTypes; /** stop Scan */ - (void)stopScan; /** connectDevice @param device device @param response response */ - (void)connectDevice:(nonnull YAKDevice *)device response:(MCBResponse)response; /** connectDeviceForIdentifier @param identifier identifier @param response response */ - (void)connectDeviceForIdentifier:(nonnull NSString *)identifier response:(MCBResponse)response; /** disconnectDeviceWithResponse @param response response */ - (void)disconnectDeviceWithResponse:(MCBResponse)response; /** discoveredDevices @return NSArray contains MCDevice */ - (nullable NSArray<__kindof YAKDevice *> *)discoveredDevices; - (void)updateNewFile:(NSString *)fileName; /// OTA文件 /// @param data bin文件的二进制文件 - (void)updateOTANewFile:(NSData *)data; @end NS_ASSUME_NONNULL_END