buildSettings = { | buildSettings = { | ||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; | ||||
CODE_SIGN_STYLE = Automatic; | CODE_SIGN_STYLE = Automatic; | ||||
CURRENT_PROJECT_VERSION = 202107171815; | |||||
CURRENT_PROJECT_VERSION = 20221109; | |||||
DEVELOPMENT_TEAM = YEU77XR292; | DEVELOPMENT_TEAM = YEU77XR292; | ||||
FRAMEWORK_SEARCH_PATHS = ( | FRAMEWORK_SEARCH_PATHS = ( | ||||
"$(inherited)", | "$(inherited)", | ||||
"$(PROJECT_DIR)/AILinkBleSDKDemo/EightScale/HTBodyfat_SDK", | "$(PROJECT_DIR)/AILinkBleSDKDemo/EightScale/HTBodyfat_SDK", | ||||
"$(PROJECT_DIR)/AILinkBleSDKDemo/13_EightScale/HTBodyfat_SDK", | "$(PROJECT_DIR)/AILinkBleSDKDemo/13_EightScale/HTBodyfat_SDK", | ||||
); | ); | ||||
MARKETING_VERSION = 1.1.2; | |||||
MARKETING_VERSION = 1.5.1; | |||||
OTHER_LDFLAGS = "-ObjC"; | OTHER_LDFLAGS = "-ObjC"; | ||||
PRODUCT_BUNDLE_IDENTIFIER = com.pingwang.AILinkBleSDKDemo; | PRODUCT_BUNDLE_IDENTIFIER = com.pingwang.AILinkBleSDKDemo; | ||||
PRODUCT_NAME = "$(TARGET_NAME)"; | PRODUCT_NAME = "$(TARGET_NAME)"; | ||||
buildSettings = { | buildSettings = { | ||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; | ||||
CODE_SIGN_STYLE = Automatic; | CODE_SIGN_STYLE = Automatic; | ||||
CURRENT_PROJECT_VERSION = 202107171815; | |||||
CURRENT_PROJECT_VERSION = 20221109; | |||||
DEVELOPMENT_TEAM = YEU77XR292; | DEVELOPMENT_TEAM = YEU77XR292; | ||||
FRAMEWORK_SEARCH_PATHS = ( | FRAMEWORK_SEARCH_PATHS = ( | ||||
"$(inherited)", | "$(inherited)", | ||||
"$(PROJECT_DIR)/AILinkBleSDKDemo/EightScale/HTBodyfat_SDK", | "$(PROJECT_DIR)/AILinkBleSDKDemo/EightScale/HTBodyfat_SDK", | ||||
"$(PROJECT_DIR)/AILinkBleSDKDemo/13_EightScale/HTBodyfat_SDK", | "$(PROJECT_DIR)/AILinkBleSDKDemo/13_EightScale/HTBodyfat_SDK", | ||||
); | ); | ||||
MARKETING_VERSION = 1.1.2; | |||||
MARKETING_VERSION = 1.5.1; | |||||
OTHER_LDFLAGS = "-ObjC"; | OTHER_LDFLAGS = "-ObjC"; | ||||
PRODUCT_BUNDLE_IDENTIFIER = com.pingwang.AILinkBleSDKDemo; | PRODUCT_BUNDLE_IDENTIFIER = com.pingwang.AILinkBleSDKDemo; | ||||
PRODUCT_NAME = "$(TARGET_NAME)"; | PRODUCT_NAME = "$(TARGET_NAME)"; |
#ifdef __OBJC__ | |||||
#import <UIKit/UIKit.h> | |||||
#else | |||||
#ifndef FOUNDATION_EXPORT | |||||
#if defined(__cplusplus) | |||||
#define FOUNDATION_EXPORT extern "C" | |||||
#else | |||||
#define FOUNDATION_EXPORT extern | |||||
#endif | |||||
#endif | |||||
#endif | |||||
#import "ELAiFreshNutritionScaleBleHeader.h" | |||||
#import "ELAiFreshNutritionScaleBleManager.h" | |||||
#import "ELAiFreshNutritionScaleDataModel.h" | |||||
#import "ELBleDisposeDataTool.h" | |||||
#import "ELBlePublicTool.h" | |||||
#import "ELBleWifiDetailModel.h" | |||||
#import "ELBluetoothManager+BleWifi.h" | |||||
#import "ELBluetoothManager+BleWifi_Callback.h" | |||||
#import "ELBluetoothManager+Settings.h" | |||||
#import "ELBluetoothManager+Settings_Callback.h" | |||||
#import "ELBluetoothManager.h" | |||||
#import "ELBodyIndexAlgorithmModel.h" | |||||
#import "ELEncryptTool.h" | |||||
#import "ELHeightAlgorithmusModel.h" | |||||
#import "ELPeripheralModel.h" | |||||
#import "ELSDKHeader.h" | |||||
#import "ELTempAlgorithmusModel.h" | |||||
#import "ELTLVModel.h" | |||||
#import "ELWeightAlgorithmusModel.h" | |||||
#import "ELAutomaticThermometerBleManager.h" | |||||
#import "ELAutomaticThermometerDataModel.h" | |||||
#import "ELAutomaticThermometerFunction1Model.h" | |||||
#import "ELAutomaticThermometerFunction2Model.h" | |||||
#import "ELAutomaticThermometerHeader.h" | |||||
#import "ELBabyScaleBleHeader.h" | |||||
#import "ELBabyScaleBleHeightModel.h" | |||||
#import "ELBabyScaleBleManager.h" | |||||
#import "ELBabyScaleBleWeightModel.h" | |||||
#import "ELBabyScaleDisposeDataTool.h" | |||||
#import "ELBloodBleWifiAnalysisDataTool.h" | |||||
#import "ElBloodBleWifiManager.h" | |||||
#import "ELbloodPresureBleWifiDataModel.h" | |||||
#import "ELBloodAnalysisDataTool.h" | |||||
#import "ELBloodBleDataModel.h" | |||||
#import "ELBloodBleManager.h" | |||||
#import "ELBloodBleSDKHeader.h" | |||||
#import "ELBloodSugarBleHeader.h" | |||||
#import "ELBloodSugarBleManager.h" | |||||
#import "ELBodyFatScaleBleHeader.h" | |||||
#import "ELBodyFatScaleBleManager.h" | |||||
#import "ELBodyFatScaleBleUserModel.h" | |||||
#import "ELBodyFatScaleBleWeightModel.h" | |||||
#import "ELBodyFatScaleDeviceModel.h" | |||||
#import "ELUnitConvertTool.h" | |||||
#import "ELBroadcastHeightGaugeBleDataModel.h" | |||||
#import "ELBroadcastHeightGaugeBleHeader.h" | |||||
#import "ELBroadcastHeightGaugeBleManager.h" | |||||
#import "ELBroadcastNutritionFoodScaleBleHeader.h" | |||||
#import "ELBroadcastNutritionFoodScaleBleManager.h" | |||||
#import "ELBroadcastNutritionFoodScaleDataModel.h" | |||||
#import "ELBfsLeaOneDataModel.h" | |||||
#import "ELBroadcastScaleBleHeader.h" | |||||
#import "ELBroadcastScaleBleManager.h" | |||||
#import "ELBroadcastScaleDataModel.h" | |||||
#import "ELCM02_BatteryBleModel.h" | |||||
#import "ELCM02_BleHeader.h" | |||||
#import "ELCM02_BleManager.h" | |||||
#import "ELCM02_BleSupportFunctionModel.h" | |||||
#import "ELCM02_HeartbeatBleModel.h" | |||||
#import "ELCoffeeScaleBleDataModel.h" | |||||
#import "ELCoffeeScaleBleHeader.h" | |||||
#import "ELCoffeeScaleBleManager.h" | |||||
#import "ELEightScaleBleBfrDataModel.h" | |||||
#import "ELEightScaleBleDataModel.h" | |||||
#import "ELEightScaleBleManager.h" | |||||
#import "ELEightScaleSDKHeader.h" | |||||
#import "ELFaceMaskBleDataModel.h" | |||||
#import "ELFaceMaskBleHeader.h" | |||||
#import "ELFaceMaskBleManager.h" | |||||
#import "ELFasciaGunBleDataModel.h" | |||||
#import "ELFasciaGunBleManager.h" | |||||
#import "ELFoodThermometerBleManager.h" | |||||
#import "ELFoodThermometerHead.h" | |||||
#import "ELForeheadAnalysisDataTool.h" | |||||
#import "ELForeheadBleDataModel.h" | |||||
#import "ELForeHeadBleManager.h" | |||||
#import "ELForeheadHeader.h" | |||||
#import "ELHeightBodyFatScaleBleHeader.h" | |||||
#import "ELHeightBodyFatScaleBleManager.h" | |||||
#import "ELHeightBodyFatScaleBleWeightBodyModel.h" | |||||
#import "ELHeightGaugeAnalysisDataTool.h" | |||||
#import "ELHeightGaugeBleDataModel.h" | |||||
#import "ELHeightGaugeBleManager.h" | |||||
#import "ELHeightGaugeHeader.h" | |||||
#import "ELHygrothermographBleHeader.h" | |||||
#import "ELHygrothermographBleManager.h" | |||||
#import "ELHygrothermographBleRecordData.h" | |||||
#import "ELNutritionScaleBleHeader.h" | |||||
#import "ELNutritionScaleBleManager.h" | |||||
#import "ELNutritionScaleDataModel.h" | |||||
#import "ELOximeterBleManager.h" | |||||
#import "ELOximeterBleModel.h" | |||||
#import "ELOximeterDeviceModel.h" | |||||
#import "ELRemoteControlBleHeader.h" | |||||
#import "ELRemoteControlBleManager.h" | |||||
#import "ELRemoteControlDeviceModel.h" | |||||
#import "ELSkipBleDataModel.h" | |||||
#import "ELSkipBleHeader.h" | |||||
#import "ELSkipBleManager.h" | |||||
#import "ELThermometerBleManager.h" | |||||
#import "ELThermometerBleModel.h" | |||||
#import "ELThermometerDeviceModel.h" | |||||
#import "ELThermometerDisposeDataTool.h" | |||||
#import "ELToothbrushBleManager.h" | |||||
#import "ELToothbrushScoreAlgorithmTool.h" | |||||
#import "ELToothburshHeader.h" | |||||
#import "ELWheelMonitorBleHeader.h" | |||||
#import "ELWheelMonitorBleManager.h" | |||||
#import "ELWheelMonitorBleModel.h" | |||||
FOUNDATION_EXPORT double AILinkBleSDKVersionNumber; | |||||
FOUNDATION_EXPORT const unsigned char AILinkBleSDKVersionString[]; | |||||
// | |||||
// ELAutomaticThermometerBleManager.h | |||||
// Elink | |||||
// | |||||
// | |||||
#import "ELBluetoothManager.h" | |||||
#import "ELAutomaticThermometerDataModel.h" | |||||
#import "ELAutomaticThermometerHeader.h" | |||||
#import "ELAutomaticThermometerFunction1Model.h" | |||||
#import "ELAutomaticThermometerFunction2Model.h" | |||||
NS_ASSUME_NONNULL_BEGIN | |||||
@protocol ELAutomaticThermometerBleDelegate; | |||||
@interface ELAutomaticThermometerBleManager : ELBluetoothManager | |||||
@property (nonatomic,weak) id<ELAutomaticThermometerBleDelegate> automaticThermometerDelegate; | |||||
+ (ELAutomaticThermometerBleManager *)shareManager; | |||||
// APP 获取设备支持的功能 | |||||
- (void)sendCmdQuerryDeviceFunctions1; | |||||
- (void)sendCmdQuerryDeviceFunctions2; | |||||
- (void)sendCmdQuerryDeviceFunctions2Ext; | |||||
// 同步单位设置 | |||||
- (void)sendCmdChangeUnit:(ELDeviceTemperatureUnit)unit; | |||||
// 同步音量设置 | |||||
- (void)sendCmdChangeVol:(UInt8)vol; | |||||
// 同步语言设置 | |||||
- (void)sendCmdChangeLanguage:(UInt8)language; | |||||
// 同步自动开机 | |||||
- (void)sendCmdChangeAutoPowerOnEnabled:(BOOL)enabled; | |||||
// 同步测温距离 | |||||
- (void)sendCmdChangeMeasuringDistance:(UInt8)distance; | |||||
// 同步体表校准值 | |||||
//- (void)sendCmdChangeBodyCalibrationValue:(UInt8)value; | |||||
- (void)sendCmdChangeBodyCalibrationAdd; | |||||
- (void)sendCmdChangeBodyCalibrationSub; | |||||
// 同步计量校准值 | |||||
//- (void)sendCmdChangeMeasurementCalibrationValue:(UInt8)value; | |||||
- (void)sendCmdChangeMeasurementCalibrationAdd; | |||||
- (void)sendCmdChangeMeasurementCalibrationSub; | |||||
// 同步报警值 | |||||
//- (void)sendCmdChangeAlarmValue:(UInt16)value; | |||||
- (void)sendCmdChangeAlarmValueCelsius:(NSInteger)valueCelsius valueFahrenheit:(NSInteger)valueFahrenheit; | |||||
// 同步音效 | |||||
- (void)sendCmdChangeSoundEffect:(UInt8)effect; | |||||
// 同步报警音效 | |||||
- (void)sendCmdChangeAlarmSoundEffect:(UInt8)effect; | |||||
//同步温度值播报开关 | |||||
- (void)sendCmdChangeTemperatureVoiceSwitchEnabled:(BOOL)enabled; | |||||
//同步灵敏度设置 | |||||
- (void)sendCmdChangeSensibility:(UInt8)value; | |||||
//同步自动关机设置 | |||||
- (void)sendCmdChangeAutoPowerOff:(UInt8)value; | |||||
// 恢复默认值 | |||||
- (void)sendCmdResetDevice; | |||||
@end | |||||
@interface ELAutomaticThermometerBleManager () | |||||
- (void)autoScan; | |||||
- (void)stopAutoScan; | |||||
- (void)checkStatus; | |||||
@end | |||||
@protocol ELAutomaticThermometerBleDelegate <NSObject> | |||||
@optional | |||||
// 回调蓝牙状态) | |||||
- (void)automaticThermometerManagerUpdateState:(ELBluetoothState)state; | |||||
// 回调所有体温计设备 | |||||
- (void)automaticThermometerManagerScanDevices:(NSArray<ELPeripheralModel *> *)devices; | |||||
//正在连接中倒计时 | |||||
- (void)deviceBleCountDown:(NSInteger)count; | |||||
//ble version | |||||
//- (void)firmwareVersion:(NSString *)version; | |||||
// 设备上发温度数据 | |||||
- (void)automaticThermometerManagerReceiveData:(ELAutomaticThermometerDataModel *)model; | |||||
// 设备上发支持的功能 | |||||
- (void)automaticThermometerManagerDeviceFunctions1:(ELAutomaticThermometerFunction1Model *)functions; | |||||
- (void)automaticThermometerManagerDeviceFunctions2:(ELAutomaticThermometerFunction2Model *)functions; | |||||
- (void)automaticThermometerManagerDeviceFunctions2Ext:(ELAutomaticThermometerFunction2Model *)functions; | |||||
// 设备上发同步设置 | |||||
//- (void)automaticThermometerManagerChangeOptions:(NSData *)data; | |||||
- (void)automaticThermometerManagerChangeOptionsType:(AutomaticThermometerBleDataType)type value:(NSInteger)value success:(BOOL)success; | |||||
- (void)automaticThermometerManagerChangeOptionsType:(AutomaticThermometerBleDataType)type valueCelsius:(NSInteger)valueCelsius valueFahrenheit:(NSInteger)valueFahrenheit success:(BOOL)success; | |||||
// 设备上发错误码 | |||||
- (void)automaticThermometerManagerBackDeviceErrorCode:(AutomaticThermometerBleErrorCode)code; | |||||
@end | |||||
NS_ASSUME_NONNULL_END |
// | |||||
// ELAutomaticThermometerDataModel.h | |||||
// Elink | |||||
// | |||||
// | |||||
#import <Foundation/Foundation.h> | |||||
#import "ELSDKHeader.h" | |||||
#import "ELAutomaticThermometerHeader.h" | |||||
NS_ASSUME_NONNULL_BEGIN | |||||
@interface ELAutomaticThermometerDataModel : NSObject | |||||
@property (nonatomic, assign) AutomaticThermometerBleDataType dataType; //0x01:体表温度 0x02:计量温度 | |||||
@property (nonatomic, assign) UInt16 temperature;//温度 | |||||
@property (nonatomic, assign) ELDeviceTemperatureUnit unit;//单位 0:℃ 1:℉ | |||||
@property (nonatomic, assign) NSInteger tempPoint; //小数点偏移位置 0:无小数点。 N:N 位小数点。 | |||||
@property (nonatomic, copy, readonly) NSString *temperatureString; | |||||
@end | |||||
NS_ASSUME_NONNULL_END |
// | |||||
// ELAutomaticThermometerFunction1Model.h | |||||
// AILinkBleSDK | |||||
// | |||||
// | |||||
#import <Foundation/Foundation.h> | |||||
NS_ASSUME_NONNULL_BEGIN | |||||
typedef NS_OPTIONS(NSUInteger, ELAutomaticThermometerSupportLanguage) { | |||||
ELAutomaticThermometerSupportLanguage_None = 0, | |||||
ELAutomaticThermometerSupportLanguage_DI = 1 << 0, // 滴 | |||||
ELAutomaticThermometerSupportLanguage_DINGDONG = 1 << 1, // 叮咚 | |||||
ELAutomaticThermometerSupportLanguage_EN = 1 << 2, // 英语 | |||||
ELAutomaticThermometerSupportLanguage_IT = 1 << 3, // 意大利语 | |||||
ELAutomaticThermometerSupportLanguage_HR = 1 << 4, // 韩语 | |||||
ELAutomaticThermometerSupportLanguage_SP = 1 << 5, // 西班牙语 | |||||
ELAutomaticThermometerSupportLanguage_JP = 1 << 6, // 日语 | |||||
ELAutomaticThermometerSupportLanguage_JP1 = 1 << 7, // 日语1 | |||||
ELAutomaticThermometerSupportLanguage_FR = 1 << 8, // 法语 | |||||
ELAutomaticThermometerSupportLanguage_UI = 1 << 9, // 越南语 | |||||
ELAutomaticThermometerSupportLanguage_CB = 1 << 10, // 柬埔寨语 | |||||
ELAutomaticThermometerSupportLanguage_ML = 1 << 11, // 马来语 | |||||
ELAutomaticThermometerSupportLanguage_RL = 1 << 12, // 印尼语 | |||||
ELAutomaticThermometerSupportLanguage_AR = 1 << 13, // 阿拉伯语 | |||||
ELAutomaticThermometerSupportLanguage_TL = 1 << 14, // 泰语 | |||||
ELAutomaticThermometerSupportLanguage_PL = 1 << 15, // 波兰语 | |||||
ELAutomaticThermometerSupportLanguage_CH = 1 << 16, // 中文 | |||||
ELAutomaticThermometerSupportLanguage_CH0 = 1 << 17, // 中文0 | |||||
ELAutomaticThermometerSupportLanguage_CH1 = 1 << 18, // 中文1 | |||||
ELAutomaticThermometerSupportLanguage_CH2 = 1 << 19, // 中文2 | |||||
ELAutomaticThermometerSupportLanguage_CH3 = 1 << 20, // 中文3 | |||||
}; | |||||
typedef NS_OPTIONS(NSUInteger, ELAutomaticThermometerSupportLanguageExt) { | |||||
ELAutomaticThermometerSupportLanguageExt_None = 0, | |||||
}; | |||||
typedef NS_ENUM(NSUInteger, ELAutomaticThermometerSupportLanguageValue) { | |||||
ELAutomaticThermometerSupportLanguageValue_None = 0x00, | |||||
ELAutomaticThermometerSupportLanguageValue_DI = 0x01, // 滴 | |||||
ELAutomaticThermometerSupportLanguageValue_DINGDONG = 0x02, // 叮咚 | |||||
ELAutomaticThermometerSupportLanguageValue_EN = 0x03, // 英语 | |||||
ELAutomaticThermometerSupportLanguageValue_IT = 0x04, // 意大利语 | |||||
ELAutomaticThermometerSupportLanguageValue_HR = 0x05, // 韩语 | |||||
ELAutomaticThermometerSupportLanguageValue_SP = 0x06, // 西班牙语 | |||||
ELAutomaticThermometerSupportLanguageValue_JP = 0x07, // 日语 | |||||
ELAutomaticThermometerSupportLanguageValue_JP1 = 0x08, // 日语1 | |||||
ELAutomaticThermometerSupportLanguageValue_FR = 0x09, // 法语 | |||||
ELAutomaticThermometerSupportLanguageValue_UI = 0x0A, // 越南语 | |||||
ELAutomaticThermometerSupportLanguageValue_CB = 0x0B, // 柬埔寨语 | |||||
ELAutomaticThermometerSupportLanguageValue_ML = 0x0C, // 马来语 | |||||
ELAutomaticThermometerSupportLanguageValue_RL = 0x0D, // 印尼语 | |||||
ELAutomaticThermometerSupportLanguageValue_AR = 0x0E, // 阿拉伯语 | |||||
ELAutomaticThermometerSupportLanguageValue_TL = 0x0F, // 泰语 | |||||
ELAutomaticThermometerSupportLanguageValue_PL = 0x10, // 波兰语 | |||||
ELAutomaticThermometerSupportLanguageValue_CH = 0x11, // 中文 | |||||
ELAutomaticThermometerSupportLanguageValue_CH0 = 0x12, // 中文0 | |||||
ELAutomaticThermometerSupportLanguageValue_CH1 = 0x13, // 中文1 | |||||
ELAutomaticThermometerSupportLanguageValue_CH2 = 0x14, // 中文2 | |||||
ELAutomaticThermometerSupportLanguageValue_CH3 = 0x15, // 中文3 | |||||
}; | |||||
typedef NS_OPTIONS(NSUInteger, ELAutomaticThermometerSupportSoundEffect) { | |||||
ELAutomaticThermometerSupportSoundEffect_None = 0, | |||||
ELAutomaticThermometerSupportSoundEffect_Off = 1 << 0, // 关闭 | |||||
ELAutomaticThermometerSupportSoundEffect_DingDong = 1 << 6, // 叮咚(默认) | |||||
ELAutomaticThermometerSupportSoundEffect_Di = 1 << 7, // 嘀 | |||||
}; | |||||
typedef NS_OPTIONS(NSUInteger, ELAutomaticThermometerSupportMeasuringDistance) { | |||||
ELAutomaticThermometerSupportMeasuringDistance_NONE = 0, | |||||
ELAutomaticThermometerSupportMeasuringDistance_0_6 = 1 << 0, // 0.6m | |||||
ELAutomaticThermometerSupportMeasuringDistance_0_8 = 1 << 1, // 0.8m | |||||
ELAutomaticThermometerSupportMeasuringDistance_1_0 = 1 << 2, // 1.0m | |||||
ELAutomaticThermometerSupportMeasuringDistance_1_2 = 1 << 3, // 1.2m | |||||
ELAutomaticThermometerSupportMeasuringDistance_1_4 = 1 << 4, // 1.4m | |||||
ELAutomaticThermometerSupportMeasuringDistance_1_6 = 1 << 5, // 1.6m | |||||
ELAutomaticThermometerSupportMeasuringDistance_1_8 = 1 << 6, // 1.8m | |||||
ELAutomaticThermometerSupportMeasuringDistance_2_0 = 1 << 7, // 2.0m | |||||
}; | |||||
@interface ELAutomaticThermometerFunction1Model : NSObject | |||||
// 音量配置 | |||||
@property (nonatomic, assign) BOOL supportVol; | |||||
@property (nonatomic, assign) BOOL supportVolGear0; | |||||
@property (nonatomic, assign) UInt8 supportVolGearMax; | |||||
@property (nonatomic, assign) UInt8 valueVol; | |||||
@property (nonatomic, copy, readonly) NSArray<NSNumber *> *valueVolGearList; | |||||
// 语言配置 | |||||
@property (nonatomic, assign) UInt32 supportLanguage; | |||||
@property (nonatomic, assign) UInt32 supportLanguageExt; | |||||
@property (nonatomic, assign) UInt32 valueLanguage; | |||||
@property (nonatomic, copy, readonly) NSArray<NSNumber *> *languageList; | |||||
// 音效配置 | |||||
@property (nonatomic, assign) UInt8 supportSoundEffect; // Bit7: 嘀 Bit6: 叮咚 | |||||
@property (nonatomic, assign) UInt8 valueSoundEffect; // 0x80: 嘀 0x40: 叮咚(默认) | |||||
@property (nonatomic, copy, readonly) NSArray<NSNumber *> *soundEffectList; | |||||
// 上电自动开机 | |||||
@property (nonatomic, assign) BOOL supportAutoPowerOn; | |||||
@property (nonatomic, assign) BOOL valueAutoPowerOnEnabled; | |||||
// 测温距离 | |||||
@property (nonatomic, assign) UInt8 supportMeasuringDistance; | |||||
@property (nonatomic, assign) UInt8 valueMeasuringDistance; | |||||
@property (nonatomic, copy, readonly) NSArray<NSNumber *> *measuringDistanceList; | |||||
+ (instancetype)defaultModel; | |||||
@end | |||||
NS_ASSUME_NONNULL_END |
// | |||||
// ELAutomaticThermometerFunction2Model.h | |||||
// AILinkBleSDK | |||||
// | |||||
// | |||||
#import <Foundation/Foundation.h> | |||||
NS_ASSUME_NONNULL_BEGIN | |||||
@interface ELAutomaticThermometerFunction2Model : NSObject | |||||
// 报警值(2bytes ,大端序,精度0.1℃) | |||||
@property (nonatomic, assign) UInt16 rawValueAlerm; // 精度 0.1℃ 例如 37.5℃(默认报警值) 则 rawValueAlerm = 0x016D | |||||
@property (nonatomic, assign) UInt16 rawMinValueAlerm; // 精度 0.1℃ 例如 37.5 则 rawValueAlerm = 0x016D | |||||
@property (nonatomic, assign) UInt16 rawMaxValueAlerm; // 精度 0.1℃ 例如 37.5℃ 则 rawValueAlerm = 0x016D | |||||
// 报警值(2bytes ,大端序,精度0.1℉) | |||||
@property (nonatomic, assign) UInt16 rawValueAlermFahrenheit; // 精度 0.1℉ 例如 37.5℉ 则 rawValueAlerm = 0x016D | |||||
// 体表温度校准 | |||||
@property (nonatomic, assign) BOOL supportBodyCalibration; // 体表温度校准(YES=支持, NO=不支持) | |||||
@property (nonatomic, assign) BOOL negativeBodyCalibration; // 体表温度校准正负号(YES=负温度, NO=正温度) | |||||
@property (nonatomic, assign) UInt8 rawValueBodyCalibration; // 体表温度校准值(精度 0.1℃)(默认 0) | |||||
@property (nonatomic, copy, readonly) NSString *valueBodyCalibrationString; | |||||
@property (nonatomic, assign) BOOL negativeFahrenheitBodyCalibration; // 体表温度校准正负号(YES=负温度, NO=正温度) | |||||
@property (nonatomic, assign) UInt8 rawValueFahrenheitBodyCalibration; // 体表温度校准值(精度 0.1℉)(默认 0) | |||||
@property (nonatomic, copy, readonly) NSString *valueFahrenheitBodyCalibrationString; | |||||
// 计量温度校准 | |||||
@property (nonatomic, assign) BOOL supportMeasurementCalibration; // 计量温度校准(YES=支持, NO=不支持) | |||||
@property (nonatomic, assign) BOOL negativeMeasurementCalibration; // 计量温度校准正负号(YES=负温度, NO=正温度) | |||||
@property (nonatomic, assign) UInt8 rawValueMeasurementCalibration; // 计量温度校准值(精度 0.1℃)(默认 0) | |||||
@property (nonatomic, copy, readonly) NSString *valueMeasurementCalibrationString; | |||||
@property (nonatomic, assign) BOOL negativeFahrenheitMeasurementCalibration; // 计量温度校准正负号(YES=负温度, NO=正温度) | |||||
@property (nonatomic, assign) UInt8 rawValueFahrenheitMeasurementCalibration; // 计量温度校准值(精度 0.1℉)(默认 0) | |||||
@property (nonatomic, copy, readonly) NSString *valueFahrenheitMeasurementCalibrationString; | |||||
// 当前温度单位 | |||||
@property (nonatomic, assign) UInt8 currentUnit; // 当前温度单位 0=℃.(默认) 1=℉ | |||||
// 温度值播报开关 | |||||
@property (nonatomic, assign) BOOL supportTemperatureVoiceSwitch; // 温度值播报开关(YES=支持, NO=不支持) | |||||
@property (nonatomic, assign) BOOL valueTemperatureVoiceSwitchEnabled; // 设备当前状态(YES=开启温度值播报(默认) , NO=不开启温度值播报), 当设备支持温度值播报开关时,该状态位有有效 | |||||
// 报警音效配置 | |||||
@property (nonatomic, assign) UInt8 supportAlarmSoundEffect; // Bit7: 音效1 Bit6: 音效2 Bi0:支持关闭报警音效 | |||||
@property (nonatomic, assign) UInt8 valueAlarmSoundEffect; // 0x80: 音效1 0x40: 音效2 0x01:关闭报警音效 | |||||
@property (nonatomic, copy, readonly) NSArray<NSNumber *> *soundAlarmEffectList; | |||||
// 灵敏度配置 | |||||
@property (nonatomic, assign) BOOL supportSensibility; // Bit7: 1=支持调节灵敏度. 0=不支持调节灵敏度 | |||||
@property (nonatomic, assign) UInt8 supportSensibilityGearMax; // Bit5-Bit0:灵敏度档位数量(例如有5档,则对应1-5档) | |||||
@property (nonatomic, assign) UInt8 valueSensibility; | |||||
@property (nonatomic, copy, readonly) NSArray<NSNumber *> *valueSensibilityGearList; | |||||
// 自动关机配置 | |||||
@property (nonatomic, assign) UInt8 supportAutoPowerOff; | |||||
@property (nonatomic, assign) UInt8 valueAutoPowerOff; | |||||
@property (nonatomic, copy, readonly) NSArray<NSNumber *> *autoPowerOffList; | |||||
+ (instancetype)defaultModel; | |||||
@end | |||||
NS_ASSUME_NONNULL_END |
// | |||||
// ELAutomaticThermometerHeader.h | |||||
// AILinkBleSDK | |||||
// | |||||
// | |||||
#ifndef ELAutomaticThermometerHeader_h | |||||
#define ELAutomaticThermometerHeader_h | |||||
// 设备返回数据 type | |||||
typedef NS_ENUM(NSInteger, AutomaticThermometerBleDataType) { | |||||
// 体表温度 | |||||
AutomaticThermometerBleDataType_BodyTemperature = 0x01, | |||||
// 计量温度 | |||||
AutomaticThermometerBleDataType_MeasurementTemperature = 0x02, | |||||
// 同步单位设置 | |||||
AutomaticThermometerBleDataType_ChangeUnit = 0x11, | |||||
// 同步音量设置 | |||||
AutomaticThermometerBleDataType_ChangeVol = 0x13, | |||||
// 同步语言设置 | |||||
AutomaticThermometerBleDataType_ChangeLanguage = 0x15, | |||||
// 同步自动开机 | |||||
AutomaticThermometerBleDataType_ChangeAutoPowerOn = 0x17, | |||||
// 同步测温距离 | |||||
AutomaticThermometerBleDataType_ChangeMeasuringDistance = 0x19, | |||||
// 同步体表校准值 | |||||
AutomaticThermometerBleDataType_ChangeBodyCalibrationValue = 0x1B, | |||||
// 同步计量校准值 | |||||
AutomaticThermometerBleDataType_ChangeMeasurementCalibrationValue = 0x1D, | |||||
// 同步报警值 | |||||
AutomaticThermometerBleDataType_ChangeAlarmValue = 0x1F, | |||||
// 同步音效 | |||||
AutomaticThermometerBleDataType_ChangeSoundEffect = 0x21, | |||||
// 恢复默认值 | |||||
AutomaticThermometerBleDataType_ChangeResetDevice = 0x23, | |||||
// 同步报警音效 | |||||
AutomaticThermometerBleDataType_ChangeAlermSoundEffect = 0x25, | |||||
// 同步温度值播报开关 | |||||
AutomaticThermometerBleDataType_ChangeTemperatureVoice = 0x27, | |||||
// 同步灵敏度设置 | |||||
AutomaticThermometerBleDataType_ChangeSensibility = 0x29, | |||||
// 同步自动关机设置 | |||||
AutomaticThermometerBleDataType_ChangeAutoPowerOff = 0x2B, | |||||
// 设备支持的功能1 | |||||
AutomaticThermometerBleDataType_DeviceFunctions1 = 0x81, | |||||
// 设备支持的功能2 | |||||
AutomaticThermometerBleDataType_DeviceFunctions2 = 0x83, | |||||
// 设备支持的功能2扩展 | |||||
AutomaticThermometerBleDataType_DeviceFunctions2Ext = 0x85, | |||||
// 设备上发错误码) | |||||
AutomaticThermometerBleDataType_DeviceBackErrorCode = 0xFF, | |||||
}; | |||||
typedef NS_ENUM(NSInteger , AutomaticThermometerBleResultType) { | |||||
// success(设置成功 ) | |||||
AutomaticThermometerBleResultType_Succeed = 0x00, | |||||
// failure(设置失败) | |||||
AutomaticThermometerBleResultType_Failure = 0x01, | |||||
// unsupport(不支持设置) | |||||
AutomaticThermometerBleResultType_Unsupported = 0x02, | |||||
}; | |||||
typedef NS_ENUM(NSInteger , AutomaticThermometerBleErrorCode) { | |||||
// 温度过高(高于 42.0℃显示为 Hi) | |||||
AutomaticThermometerBleErrorCode_HighTemperature = 0x00, | |||||
// 温度过低(低于 32.0℃显示为 Lo) | |||||
AutomaticThermometerBleErrorCode_LowTemperature = 0x01, | |||||
}; | |||||
#endif /* ELAutomaticThermometerHeader_h */ | |||||
@property (nonatomic, weak) id<BabyScaleBleDelegate> babyScaleDelegate; | @property (nonatomic, weak) id<BabyScaleBleDelegate> babyScaleDelegate; | ||||
+(ELBabyScaleBleManager *)shareManager; | +(ELBabyScaleBleManager *)shareManager; | ||||
//MARK:Hold YES is locked, NO is peeled (return to zero)(hold YES为锁定,NO去皮(归零)) | |||||
#pragma mark Hold YES is locked, NO is peeled (return to zero)(hold YES为锁定,NO去皮(归零)) | |||||
-(void)changeHold:(BOOL)hold; | -(void)changeHold:(BOOL)hold; | ||||
//MARK:Height and weight unit switching(身高和体重单位切换) | |||||
#pragma mark Height and weight unit switching(身高和体重单位切换) | |||||
-(void)changeHeightUnit:(ELDeviceHeightUnit)heightUnit AndWeightUnit:(ELDeviceWeightUnit)weightUnit; | -(void)changeHeightUnit:(ELDeviceHeightUnit)heightUnit AndWeightUnit:(ELDeviceWeightUnit)weightUnit; | ||||
@end | @end |
// | |||||
// ELBabyScaleDisposeDataTool.h | |||||
// Elink | |||||
// | |||||
// Created by iot_user on 2019/4/23. | |||||
// Copyright © 2019 iot_iMac. All rights reserved. | |||||
// | |||||
#import "ELBleDisposeDataTool.h" | |||||
#import "ELBabyScaleBleWeightModel.h" | |||||
#import "ELBabyScaleBleHeightModel.h" | |||||
#import "ELBabyScaleBleHeader.h" | |||||
NS_ASSUME_NONNULL_BEGIN | |||||
@interface ELBabyScaleDisposeDataTool : ELBleDisposeDataTool | |||||
#pragma mark ============ 蓝牙数据处理 ============== | |||||
#pragma mark 重量 | |||||
+(ELBabyScaleBleWeightModel *)disposeWeightData:(Byte *)dataByte; | |||||
#pragma mark 体重单位切换 | |||||
+(ELDeviceWeightUnit)disposeChangeWeightUnit:(Byte *)dataByte; | |||||
/** | |||||
MARK:Hold | |||||
0:保持hold,1:取消hold | |||||
MCU与APP都可触发这条指令,当此指令触发,则APP与MCU都把重量锁住或释放 | |||||
*/ | |||||
+(HoldDataType)disposeHoldData:(Byte *)dataByte; | |||||
#pragma mark 身高 | |||||
+(ELBabyScaleBleHeightModel *)disposeHeightData:(Byte *)dataByte; | |||||
#pragma mark 身高单位切换 | |||||
+(ELDeviceHeightUnit)disposeChangeHeightUnit:(Byte *)dataByte; | |||||
#pragma mark ============ 其他方法 ============== | |||||
@end | |||||
NS_ASSUME_NONNULL_END |
// | |||||
// ELBfsLeaOneDataModel.h | |||||
// Elink | |||||
// | |||||
// Created by cliCk on 2021/1/16. | |||||
// Copyright © 2021 iot_iMac. All rights reserved. | |||||
// | |||||
#import <Foundation/Foundation.h> | |||||
#import "ELBroadcastScaleBleHeader.h" | |||||
NS_ASSUME_NONNULL_BEGIN | |||||
typedef NS_ENUM(NSInteger, LeaOneDevType) { | |||||
/** 体重秤 */ | |||||
LeaOneDevType_Weight = 0 , | |||||
/** 体脂秤 */ | |||||
LeaOneDevType_Bfr , | |||||
}; | |||||
/** lea one 秤返回的数据对象模型 */ | |||||
@interface ELBfsLeaOneDataModel : NSObject | |||||
/** 流水号 */ | |||||
@property (nonatomic, assign) NSInteger serialNumber; | |||||
/** 设备返回的原始体重 */ | |||||
@property (nonatomic, assign) NSInteger rawWeight; | |||||
/** 电阻 */ | |||||
@property (nonatomic, assign) NSInteger adc; | |||||
/** mac地址 */ | |||||
@property (nonatomic, copy) NSString *mac; | |||||
/** 设备类型 */ | |||||
@property (nonatomic, assign) LeaOneDevType devType; | |||||
/** 单位 (仅支持 kg,斤,lb和st:lb) */ | |||||
@property (nonatomic, assign) ELDeviceWeightUnit unit; | |||||
/** 小数位 */ | |||||
@property (nonatomic, assign) NSInteger weightPoint; | |||||
/** 是否为锁定数据 */ | |||||
@property (nonatomic, assign) BOOL isLockData; | |||||
+ (instancetype)initWithDevBleData:(NSData *)data; | |||||
+ (BOOL)isLeaOneBroadcastScale:(NSData *)baseData; | |||||
@end | |||||
NS_ASSUME_NONNULL_END |
@interface ELBleDisposeDataTool : NSObject | @interface ELBleDisposeDataTool : NSObject | ||||
//MARK:校验和 | |||||
#pragma mark 校验和 | |||||
+(BOOL)checksum:(NSData *)data; | +(BOOL)checksum:(NSData *)data; | ||||
//MARK: 广播设备校验和 | |||||
#pragma mark 广播设备校验和 | |||||
+(BOOL)broadcastChecksum:(NSData *)data; | +(BOOL)broadcastChecksum:(NSData *)data; | ||||
#pragma mark ============ 解析A6数据 ============== | |||||
#pragma mark ============ 解析A6数据 ============== | |||||
/** | /** | ||||
解析电池数据 | 解析电池数据 | ||||
NS_ASSUME_NONNULL_BEGIN | NS_ASSUME_NONNULL_BEGIN | ||||
@interface ELBlePublicTool : NSObject | @interface ELBlePublicTool : NSObject | ||||
//MARK:Keep decimal places, support for retaining 7 significant digits(保留小数位,支持保留7位有效数字) | |||||
#pragma mark Keep decimal places, support for retaining 7 significant digits(保留小数位,支持保留7位有效数字) | |||||
+(NSString *)retainPointValue:(double)value withPoint:(NSUInteger)point; | +(NSString *)retainPointValue:(double)value withPoint:(NSUInteger)point; | ||||
/** | /** | ||||
Turn time into time (将时间转成时间截) | Turn time into time (将时间转成时间截) |
// | |||||
// ELBloodAnalysisDataTool.h | |||||
// Elink | |||||
// | |||||
// Created by iot_user on 2019/5/11. | |||||
// Copyright © 2019 iot_iMac. All rights reserved. | |||||
// | |||||
#import <Foundation/Foundation.h> | |||||
#import "ELBloodBleDataModel.h" | |||||
#import "ELSDKHeader.h" | |||||
NS_ASSUME_NONNULL_BEGIN | |||||
@interface ELBloodAnalysisDataTool : NSObject | |||||
+(ELBloodBleDataModel *)analysisBloodData:(NSData *)playload; | |||||
/** | |||||
解析设置单位 | |||||
@param playload 原始数据 | |||||
@return 结果 | |||||
*/ | |||||
+(ELSetBluetoothResponseType)analysisSetUnitResult:(NSData *)playload; | |||||
/** | |||||
解析异常 | |||||
@param playload 原始数据 | |||||
@return 异常 | |||||
*/ | |||||
+(ELBloodFailCode)analysisFailCode:(NSData *)playload; | |||||
/** | |||||
交互指令 | |||||
@param playload 原始数据 | |||||
@return 交互指令类型 | |||||
*/ | |||||
+(ELBloodInteractionType)analysisInteraction:(NSData *)playload; | |||||
@end | |||||
NS_ASSUME_NONNULL_END |
// | |||||
// ELBloodBleWifiAnalysisDataTool.h | |||||
// AILinkBleSDK | |||||
// | |||||
// Created by iot on 2022/7/12. | |||||
// Copyright © 2022 IOT. All rights reserved. | |||||
// | |||||
#import <Foundation/Foundation.h> | |||||
#import "ELbloodPresureBleWifiDataModel.h" | |||||
#import "ELSDKHeader.h" | |||||
NS_ASSUME_NONNULL_BEGIN | |||||
@interface ELBloodBleWifiAnalysisDataTool : NSObject | |||||
+ (ELbloodPresureBleWifiDataModel *)analysisBloodData:(NSData *)playload; | |||||
/** | |||||
解析设置单位 | |||||
@param playload 原始数据 | |||||
@return 结果 | |||||
*/ | |||||
+ (ELSetBluetoothResponseType)analysisSetUnitResult:(NSData *)playload; | |||||
/** | |||||
解析异常 | |||||
@param playload 原始数据 | |||||
@return 异常 | |||||
*/ | |||||
+ (ELBloodFailCode)analysisFailCode:(NSData *)playload; | |||||
/** | |||||
交互指令 | |||||
@param playload 原始数据 | |||||
@return 交互指令类型 | |||||
*/ | |||||
+ (ELBloodInteractionType)analysisInteraction:(NSData *)playload; | |||||
@end | |||||
NS_ASSUME_NONNULL_END |
NS_ASSUME_NONNULL_BEGIN | NS_ASSUME_NONNULL_BEGIN | ||||
//MARK:Bluetooth Wifi protocol(蓝牙Wifi协议) | |||||
#pragma mark Bluetooth Wifi protocol(蓝牙Wifi协议) | |||||
@protocol ElBleWifiDelegate <NSObject> | @protocol ElBleWifiDelegate <NSObject> | ||||
@optional | @optional |
@interface ELBluetoothManager (Settings) | @interface ELBluetoothManager (Settings) | ||||
#pragma mark ============ A6 Set or query instructions(设置或查询指令) ============== | |||||
#pragma mark ============ A6 Set or query instructions(设置或查询指令) ============== | |||||
@param vid Manufacturer ID: less than 65536(厂家ID:小于65536) | @param vid Manufacturer ID: less than 65536(厂家ID:小于65536) | ||||
@param pid Product ID: Less than 65536(产品ID:小于65536) | @param pid Product ID: Less than 65536(产品ID:小于65536) | ||||
*/ | */ | ||||
-(void)setC_V_P_IDWithIsSetCID:(BOOL)setC isSetVID:(BOOL)setV isSetPID:(BOOL)setP CID:(unsigned int)cid VID:(unsigned int)vid PID:(unsigned int)pid; | |||||
-(void)setC_V_P_IDWithIsSetCID:(BOOL)setC isSetVID:(BOOL)setV isSetPID:(BOOL)setP CID:(unsigned int)cid VID:(unsigned int)vid PID:(unsigned int)pid DEPRECATED_MSG_ATTRIBUTE("do not support this method any more since 20220505, as same as Android SDK"); | |||||
/** | /** | ||||
Set module communication mode | Set module communication mode |
NS_ASSUME_NONNULL_BEGIN | NS_ASSUME_NONNULL_BEGIN | ||||
//MARK: Broadcast Equipment Protocol(广播设备协议) | |||||
#pragma mark Broadcast Equipment Protocol(广播设备协议) | |||||
@protocol ELBleBroadcastDelegate <NSObject> | @protocol ELBleBroadcastDelegate <NSObject> | ||||
//MARK:蓝牙通用协议 | |||||
#pragma mark 蓝牙通用协议 | |||||
@protocol ELBluetoothManagerDelegate <NSObject> | @protocol ELBluetoothManagerDelegate <NSObject> | ||||
@optional | @optional | ||||
/** 回调已经连接到系统的设备 */ | /** 回调已经连接到系统的设备 */ | ||||
//- (void)bluetoothManagerLinkedSysPeripheral:(NSArray *_Nonnull)peripherals; | //- (void)bluetoothManagerLinkedSysPeripheral:(NSArray *_Nonnull)peripherals; | ||||
#pragma mark ============ A6 Set or query the callback of the instruction execution result(设置或查询指令执行结果的回调) ============== | |||||
#pragma mark ============ A6 Set or query the callback of the instruction execution result(设置或查询指令执行结果的回调) ============== | |||||
/** | /** | ||||
Set or query the callback of the instruction execution result(设置指令蓝牙响应回调方法(握手指令除外)) | Set or query the callback of the instruction execution result(设置指令蓝牙响应回调方法(握手指令除外)) | ||||
#import "ELBluetoothManager+BleWifi_Callback.h" | #import "ELBluetoothManager+BleWifi_Callback.h" | ||||
//版本号 SDK Version | |||||
#define AiLinkBleSDKVersion @"1.5.1" //20221109 更新牙刷sdk 并增加得分算法 | |||||
NS_ASSUME_NONNULL_BEGIN | NS_ASSUME_NONNULL_BEGIN | ||||
/// 有些设备需要页面获取到发送的数据内容,给服务器,监听该通知获得发送数据,保险起见需要判断一个header.内容是data | |||||
/// 发送A7不加密数据 | |||||
static NSString *SEND_A7_BLE_DATA_CONTENT = @"SEND_A7_BLE_DATA_CONTENT"; | |||||
/// 发送A7加密数据 | |||||
static NSString *SEND_A7_ENCRYPTED_BLE_DATA_CONTENT = @"SEND_A7_ENCRYPTED_BLE_DATA_CONTENT"; | |||||
/// 设备返回A7解密的payload数据 | |||||
static NSString *GET_A7_DECRYPT_BLE_PAYLOAD_DATA_CONTENT = @"GET_A7_DECRYPT_BLE_PAYLOAD_DATA_CONTENT"; | |||||
@interface ELBluetoothManager : NSObject | @interface ELBluetoothManager : NSObject | ||||
@property (nonatomic, assign, readonly) BOOL isOn; | @property (nonatomic, assign, readonly) BOOL isOn; | ||||
-(void)syncMCUNowDate; | -(void)syncMCUNowDate; | ||||
#pragma mark ============ 发送指令的3种方法 ============== | |||||
#pragma mark ============ 发送指令的3种方法 ============== | |||||
/** | /** | ||||
Shortcut method to send A6 data to BLE(发送A6数据给BLE的快捷方法) | Shortcut method to send A6 data to BLE(发送A6数据给BLE的快捷方法) | ||||
@param data The stitched payload part(拼接好的payload部分) | @param data The stitched payload part(拼接好的payload部分) | ||||
*/ | */ | ||||
-(void)sendCmdToMCUWithA7PayloadData:(NSData *)data deviceType:(ELSupportDeviceType)type; | -(void)sendCmdToMCUWithA7PayloadData:(NSData *)data deviceType:(ELSupportDeviceType)type; | ||||
/// 直接发送A7命令,不加载在队列中 | |||||
-(void)immediatelySendCmdToMCUWithA7PayloadData:(NSData *)data deviceType:(ELSupportDeviceType)type; | -(void)immediatelySendCmdToMCUWithA7PayloadData:(NSData *)data deviceType:(ELSupportDeviceType)type; | ||||
/** | /** | ||||
-(void)sendData:(NSData *)data; | -(void)sendData:(NSData *)data; | ||||
#pragma mark ============ Please rewrite the following methods in the subclass(请在子类重写以下方法) BEGIN============== | |||||
#pragma mark ============ Please rewrite the following methods in the subclass(请在子类重写以下方法) BEGIN============== | |||||
-(void)bluetoothUpdateState:(ELBluetoothState)state; | -(void)bluetoothUpdateState:(ELBluetoothState)state; | ||||
/// @param data custom data(自定义数据) | /// @param data custom data(自定义数据) | ||||
-(void)bluetoothReceiveBroadcastDataWithCid:(int)cid vid:(int)vid pid:(int)pid mac:(NSString *_Nonnull)mac data:(NSData *_Nonnull)data; | -(void)bluetoothReceiveBroadcastDataWithCid:(int)cid vid:(int)vid pid:(int)pid mac:(NSString *_Nonnull)mac data:(NSData *_Nonnull)data; | ||||
#pragma mark ============ Please rewrite the following methods in the subclass(子类重写方法) END============== | |||||
#pragma mark ============ Please rewrite the following methods in the subclass(子类重写方法) END============== | |||||
ELBodyFatScaleBleDataType_MCUBackHeartRateMeasureSuccess = 0x0C , | ELBodyFatScaleBleDataType_MCUBackHeartRateMeasureSuccess = 0x0C , | ||||
/** MCU->APP:心率测量失败 */ | /** MCU->APP:心率测量失败 */ | ||||
ELBodyFatScaleBleDataType_MCUBackHeartRateMeasureFailed = 0x0D , | ELBodyFatScaleBleDataType_MCUBackHeartRateMeasureFailed = 0x0D , | ||||
/** MCU->APP:MCU请求补全体脂数据 */ | |||||
ELBodyFatScaleBleDataType_MCUBackNeedsFillBodyData = 0x0E , | |||||
/** App发送指令切换单位 */ | /** App发送指令切换单位 */ | ||||
ELBodyFatScaleBleDataType_AppSendUnit = 0x81 , | ELBodyFatScaleBleDataType_AppSendUnit = 0x81 , |
/**Callback all body fat scales detected( 回调扫描到的所有体脂秤 )*/ | /**Callback all body fat scales detected( 回调扫描到的所有体脂秤 )*/ | ||||
- (void)bodyFatScaleManagerScanDevices:(NSArray<ELBodyFatScaleDeviceModel *> *)scaleDevices; | - (void)bodyFatScaleManagerScanDevices:(NSArray<ELBodyFatScaleDeviceModel *> *)scaleDevices; | ||||
//MARK:回调A7指令数据 | |||||
#pragma mark 回调A7指令数据 | |||||
/** | /** | ||||
Callback to set unit result(回调设置单位结果) | Callback to set unit result(回调设置单位结果) | ||||
1:超重 | 1:超重 | ||||
*/ | */ | ||||
-(void)bodyFatScaleManagerCallBackErrorCode:(NSInteger)code; | -(void)bodyFatScaleManagerCallBackErrorCode:(NSInteger)code; | ||||
//MARK:回调A6指令数据 | |||||
#pragma mark 回调A6指令数据 | |||||
/** | /** | ||||
Send success or failure callback for offline user list(发送离线用户列表的成功或失败回调) | Send success or failure callback for offline user list(发送离线用户列表的成功或失败回调) | ||||
+ (ELBodyFatScaleBleManager *)shareManager; | + (ELBodyFatScaleBleManager *)shareManager; | ||||
#pragma mark ============ 下发A7指令 ============== | |||||
#pragma mark ============ 下发A7指令 ============== | |||||
- (void)changeBodyFatScaleUnit:(ELDeviceWeightUnit)unit; | - (void)changeBodyFatScaleUnit:(ELDeviceWeightUnit)unit; | ||||
- (void)sendCurrentUserToBle:(ELBodyFatScaleBleUserModel *)usr; | - (void)sendCurrentUserToBle:(ELBodyFatScaleBleUserModel *)usr; | ||||
-(void)sendReceivedDataResult:(BOOL)result; | -(void)sendReceivedDataResult:(BOOL)result; | ||||
#pragma mark ============ 下发A6指令 ============== | |||||
#pragma mark ============ 下发A6指令 ============== | |||||
-(void)sendOfflineUserListToBle:(NSArray <ELBodyFatScaleBleUserModel *> *)userListArr; | -(void)sendOfflineUserListToBle:(NSArray <ELBodyFatScaleBleUserModel *> *)userListArr; | ||||
NS_ASSUME_NONNULL_BEGIN | NS_ASSUME_NONNULL_BEGIN | ||||
@interface ELBodyIndexAlgorithmModel : NSObject | @interface ELBodyIndexAlgorithmModel : NSObject | ||||
#pragma mark ============ 标准判断临界值数组 ============== | |||||
#pragma mark ============ 标准判断临界值数组 ============== | |||||
/// 四肢肌肉指数 标准判断 | /// 四肢肌肉指数 标准判断 | ||||
/// @param sex 性别 | /// @param sex 性别 | ||||
/// @param weightUnit 体重单位 | /// @param weightUnit 体重单位 | ||||
+ (NSArray<NSString *> *)getWeightScopeHeight:(NSString *)height weightUnit:(ELDeviceWeightUnit)weightUnit; | + (NSArray<NSString *> *)getWeightScopeHeight:(NSString *)height weightUnit:(ELDeviceWeightUnit)weightUnit; | ||||
#pragma mark ============ 判断标准数组 ============== | |||||
#pragma mark ============ 判断标准数组 ============== | |||||
//四肢肌肉指数标准词条 | //四肢肌肉指数标准词条 | ||||
+(NSArray<NSNumber *> *)getLimbMuscleIndexStandardArray; | +(NSArray<NSNumber *> *)getLimbMuscleIndexStandardArray; | ||||
///1 体重 判断标准词条Array<AILinkWeightType> | ///1 体重 判断标准词条Array<AILinkWeightType> | ||||
///18 肥胖等级 判断标准词条Array<AILinkFatLevelType> | ///18 肥胖等级 判断标准词条Array<AILinkFatLevelType> | ||||
+ (NSArray<NSNumber *> *)getFatlevelStandardArray; | + (NSArray<NSNumber *> *)getFatlevelStandardArray; | ||||
#pragma mark ============ 标准判断 ============== | |||||
#pragma mark ============ 标准判断 ============== | |||||
/// 获取四肢肌肉指数等级 | /// 获取四肢肌肉指数等级 | ||||
/// @param index 四肢肌肉指数 | /// @param index 四肢肌肉指数 |
CM02_BleDataType_ControlVersion = 0x10 , | CM02_BleDataType_ControlVersion = 0x10 , | ||||
/** 查询仪表固件版本 */ | /** 查询仪表固件版本 */ | ||||
CM02_BleDataType_DashboardVersion = 0x11 , | CM02_BleDataType_DashboardVersion = 0x11 , | ||||
/** 开始仪表OTA指令 */ | |||||
CM02_BleDataType_StartOTA = 0xA0 , | |||||
/** 发送仪表OTA数据 */ | |||||
CM02_BleDataType_SendOTAData = 0xA1 , | |||||
/** 发送仪表OTA完成指令 */ | |||||
CM02_BleDataType_EndOTA = 0xA2 , | |||||
}; | }; | ||||
/** 开机状态 */ | /** 开机状态 */ |
/** CM02回复仪表编号,硬件版本和软件版本号 */ | /** CM02回复仪表编号,硬件版本和软件版本号 */ | ||||
- (void)CM02ManagerBackDashboardCode:(NSString *)code hardwareVersion:(NSString *)hardwareVersion softwareVersion:(NSString *)softwareVersion; | - (void)CM02ManagerBackDashboardCode:(NSString *)code hardwareVersion:(NSString *)hardwareVersion softwareVersion:(NSString *)softwareVersion; | ||||
#pragma mark - 仪表OTA | |||||
/** 返回ota是否可以升级和可以接收的最大长度 */ | |||||
- (void)CM02ManagerBackCanOTA:(BOOL)can maxLength:(int)length; | |||||
/** 返回ota升级数据结果以及接受到的数据包编号 */ | |||||
- (void)CM02ManagerBackOTASendResult:(BOOL)canSendNext index:(long long)index; | |||||
/** 返回ota升级结果 */ | |||||
- (void)CM02ManagerBackOTAUpdateResult:(BOOL)result; | |||||
#pragma mark - | |||||
@end | @end | ||||
/** 查询仪表盘固件版本 */ | /** 查询仪表盘固件版本 */ | ||||
- (void)getDashboardVersion; | - (void)getDashboardVersion; | ||||
#pragma mark - 断开设备清除缓存信息 | |||||
#pragma mark - 仪表OTA | |||||
/** 发送OTA开始指令 | |||||
* @param size : ota文件长度 | |||||
* @param data : crc32校验码,4个byte | |||||
* @param length : 单次发送OTA数据包最大的长度 | |||||
*/ | |||||
- (void)sendStartOTAWithFileSize:(long long)size crc32Data:(NSData *)data maxPacketLength:(int)length; | |||||
/** 发送OTA数据 */ | |||||
- (void)sendOTAUpdateFileWithIndex:(long long)index data:(NSData *)data; | |||||
/** 发送OTA完成指令 */ | |||||
- (void)sendEndOTACommand; | |||||
#pragma mark - 断开设备清除缓存信息 | |||||
- (void)cleanData; | - (void)cleanData; | ||||
/** 支持的档位个数 */ | /** 支持的档位个数 */ | ||||
@property (nonatomic, assign) NSInteger gearNum; | @property (nonatomic, assign) NSInteger gearNum; | ||||
/** 是否支持助力模式 */ | |||||
@property (nonatomic, assign) BOOL helpMode; | |||||
/** 是否支持定速巡航功能, 0:不支持,1:支持 */ | |||||
@property (nonatomic, assign, getter=isCruiseSupported) BOOL cruiseSupported; | |||||
/** 定速巡航开关 */ | |||||
@property (nonatomic, assign) BOOL cruiseControl; | |||||
/** 是否支持定速巡航开关, 0:不支持,1:支持 */ | |||||
@property (nonatomic, assign, getter=isCruiseControlSupported) BOOL cruiseControlSupported; | |||||
/** 是否支持零启动和非零启动切换 */ | /** 是否支持零启动和非零启动切换 */ | ||||
@property (nonatomic, assign) BOOL speedStartChange; | @property (nonatomic, assign) BOOL speedStartChange; |
/** 模式 */ | /** 模式 */ | ||||
@property (nonatomic, assign) enum CM02_Mode mode; | @property (nonatomic, assign) enum CM02_Mode mode; | ||||
/** 车辆支持的最高速度,单位KM/H */ | |||||
@property (nonatomic, assign) NSInteger topSpeedSupported; | |||||
/** 最低档位是否从0开始 */ | |||||
@property (nonatomic, assign, getter=isGearStartAtZero) BOOL gearStartAtZero; | |||||
/** 档位(1-7) */ | /** 档位(1-7) */ | ||||
@property (nonatomic, assign) NSInteger gear; | @property (nonatomic, assign) NSInteger gear; | ||||
/** 支持的档位个数 */ | |||||
@property (nonatomic, assign) NSInteger gearsCount; | |||||
/** 转把是否有效 */ | /** 转把是否有效 */ | ||||
@property (nonatomic, assign) BOOL turnHandleEffective; | @property (nonatomic, assign) BOOL turnHandleEffective; |
+(instancetype)shareManager; | +(instancetype)shareManager; | ||||
#pragma mark ============ 发送数据指令给蓝牙 ============== | |||||
#pragma mark ============ 发送数据指令给蓝牙 ============== | |||||
/// Switch weight unit(切换体重单位) | /// Switch weight unit(切换体重单位) | ||||
/// @param unit Weight unit(体重单位) | /// @param unit Weight unit(体重单位) |
// | |||||
// ELFasciaGunBleDataModel.h | |||||
// AILinkBleSDK | |||||
// | |||||
// Created by LarryZhang on 2022/1/15. | |||||
// Copyright © 2022 IOT. All rights reserved. | |||||
// | |||||
#import <Foundation/Foundation.h> | |||||
NS_ASSUME_NONNULL_BEGIN | |||||
typedef NS_ENUM(UInt8, FasciaGunChargingStatus); | |||||
@interface ELFasciaGunBleDataModel : NSObject | |||||
@property (nonatomic, assign) BOOL started; | |||||
@property (nonatomic, assign) UInt16 workingTime; | |||||
@property (nonatomic, assign) UInt8 currentGear; | |||||
@property (nonatomic, assign) UInt8 maxGear; | |||||
@property (nonatomic, assign) BOOL countdownEnabled; | |||||
@property (nonatomic, assign) UInt16 countdownTime; | |||||
@property (nonatomic, assign) UInt8 pressureValue; | |||||
@property (nonatomic, assign) FasciaGunChargingStatus chargingStatus; | |||||
@property (nonatomic, assign) UInt8 batteryLevel; | |||||
@end | |||||
typedef NS_ENUM(UInt8, FasciaGunChargingStatus) { | |||||
FasciaGunChargingStatus_Uncharged = 0x00, | |||||
FasciaGunChargingStatus_Charging = 0x01, | |||||
FasciaGunChargingStatus_Full = 0x02, | |||||
FasciaGunChargingStatus_Unsupported = 0xFF, | |||||
}; | |||||
NS_ASSUME_NONNULL_END |
// | |||||
// ELFasciaGunBleManager.h | |||||
// AILinkBleSDK | |||||
// | |||||
// Created by LarryZhang on 2022/1/15. | |||||
// Copyright © 2022 IOT. All rights reserved. | |||||
// | |||||
#import "ELBluetoothManager.h" | |||||
#import "ELFasciaGunBleDataModel.h" | |||||
NS_ASSUME_NONNULL_BEGIN | |||||
@protocol FasciaGunBleDelegate; | |||||
@interface ELFasciaGunBleManager : ELBluetoothManager | |||||
@property (nonatomic, weak) id<FasciaGunBleDelegate> fasciaGunDelegate; | |||||
+ (instancetype)shareManager; | |||||
- (void)autoScan; | |||||
- (void)stopAutoScan; | |||||
- (void)checkStatus; | |||||
@end | |||||
@interface ELFasciaGunBleManager (sendCmd) | |||||
- (void)sendCmdToDeviceStart:(BOOL)started withGear:(UInt8)gear; | |||||
- (void)sendCmdToDeviceGear:(UInt8)gear; | |||||
- (void)sendCmdToDeviceCountdown:(UInt16)timeInterval enable:(BOOL)enabled; | |||||
@end | |||||
@protocol FasciaGunBleDelegate <NSObject> | |||||
@optional | |||||
/// 蓝牙连接状态 | |||||
/// @param state 连接状态 | |||||
- (void)fasciaGunBleReceiveState:(ELBluetoothState)state; | |||||
/// 附近的设备 | |||||
/// @param devices 设备列表 | |||||
- (void)fasciaGunBleReceiveDevices:(NSArray<ELPeripheralModel *> *_Nullable)devices; | |||||
//正在连接中倒计时 | |||||
- (void)fasciaGunBleCountDown:(NSInteger)count; | |||||
- (void)fasciaGunBleReceiveStatusDataModel:(ELFasciaGunBleDataModel *_Nonnull)model; | |||||
- (void)fasciaGunBleReceiveStart:(BOOL)started withGear:(UInt8)gear; | |||||
- (void)fasciaGunBleReceiveGear:(UInt8)gear; | |||||
- (void)fasciaGunBleReceiveCountdown:(UInt16)timeInterval enabled:(BOOL)enabled; | |||||
@end | |||||
NS_ASSUME_NONNULL_END |
//Bluetooth status callback(回调蓝牙状态) | //Bluetooth status callback(回调蓝牙状态) | ||||
- (void)deviceBleReceiveState:(ELBluetoothState)state; | - (void)deviceBleReceiveState:(ELBluetoothState)state; | ||||
//Callback FoodThermometer device list(回调设备列表) | |||||
//Callback FoodThermometer device list(回调牙刷设备列表) | |||||
- (void)deviceBleReceiveDevices:(NSArray<ELPeripheralModel *> *)devices; | - (void)deviceBleReceiveDevices:(NSArray<ELPeripheralModel *> *)devices; | ||||
//设备返回基础信息 | //设备返回基础信息 |
// | |||||
// ELForeheadAnalysisDataTool.h | |||||
// Elink | |||||
// | |||||
// Created by iot_user on 2019/5/10. | |||||
// Copyright © 2019 iot_iMac. All rights reserved. | |||||
// | |||||
#import <Foundation/Foundation.h> | |||||
#import "ELForeheadBleDataModel.h" | |||||
#import "ELForeheadHeader.h" | |||||
NS_ASSUME_NONNULL_BEGIN | |||||
@interface ELForeheadAnalysisDataTool : NSObject | |||||
/** | |||||
解析温度数据 | |||||
@param playload 原始数据 | |||||
@return ELForeheadBleDataModel | |||||
*/ | |||||
+(ELForeheadBleDataModel *)analysisStabilityData:(NSData *)playload; | |||||
/** | |||||
解析设置单位 | |||||
@param playload 原始数据 | |||||
@return 结果 | |||||
*/ | |||||
+(ELSetBluetoothResponseType)analysisSetUnitResult:(NSData *)playload; | |||||
/** | |||||
解析异常 | |||||
@param playload 原始数据 | |||||
@return 异常 | |||||
*/ | |||||
+(ForeheadFailCode)analysisFailCode:(NSData *)playload; | |||||
@end | |||||
NS_ASSUME_NONNULL_END |
*/ | */ | ||||
- (void)heightBodyFatScaleManagerReportDevStateWithWorkMode:(HeightBodyFatScale_WorkModeType)mode power:(NSInteger)power charging:(BOOL)charging weightUnit:(ELDeviceWeightUnit)weightUnit height:(ELDeviceHeightUnit)heightUnit videoState:(BOOL)video; | - (void)heightBodyFatScaleManagerReportDevStateWithWorkMode:(HeightBodyFatScale_WorkModeType)mode power:(NSInteger)power charging:(BOOL)charging weightUnit:(ELDeviceWeightUnit)weightUnit height:(ELDeviceHeightUnit)heightUnit videoState:(BOOL)video; | ||||
#pragma mark - 身高体脂秤模式 | |||||
#pragma mark - 身高体脂秤模式 | |||||
/** MCU上报称重状态 */ | /** MCU上报称重状态 */ | ||||
- (void)heightBodyFatScaleManagerReportWeighingState:(HeightBodyFatScale_WeightStableType)stable weightNumber:(NSInteger)weight weightPoint:(NSInteger)point unit:(ELDeviceWeightUnit)unit; | - (void)heightBodyFatScaleManagerReportWeighingState:(HeightBodyFatScale_WeightStableType)stable weightNumber:(NSInteger)weight weightPoint:(NSInteger)point unit:(ELDeviceWeightUnit)unit; | ||||
/** MCU上报体脂数据 */ | /** MCU上报体脂数据 */ | ||||
- (void)heightBodyFatScaleManagerReportBodyFatDataWithDataModel:(ELHeightBodyFatScaleBleWeightBodyModel *)model; | - (void)heightBodyFatScaleManagerReportBodyFatDataWithDataModel:(ELHeightBodyFatScaleBleWeightBodyModel *)model; | ||||
#pragma mark - 抱婴模式 | |||||
#pragma mark - 抱婴模式 | |||||
/** MCU上报称重状态 | /** MCU上报称重状态 | ||||
* @param stable : 测量状态 | * @param stable : 测量状态 | ||||
*/ | */ | ||||
- (void)heightBodyFatScaleManagerReportBabyModetWithWeighingState:(HeightBodyFatScale_WeightStableType)stable adultWeight:(NSInteger)adultWeight allWeight:(NSInteger)allWeight babyWeight:(NSInteger)babyWeight point:(NSInteger)point unit:(ELDeviceWeightUnit)unit; | - (void)heightBodyFatScaleManagerReportBabyModetWithWeighingState:(HeightBodyFatScale_WeightStableType)stable adultWeight:(NSInteger)adultWeight allWeight:(NSInteger)allWeight babyWeight:(NSInteger)babyWeight point:(NSInteger)point unit:(ELDeviceWeightUnit)unit; | ||||
#pragma mark - 体重模式 | |||||
#pragma mark - 体重模式 | |||||
/** MCU上报称重状态 */ | /** MCU上报称重状态 */ | ||||
- (void)heightBodyFatScaleManagerReportWeightModeWithWeighingState:(HeightBodyFatScale_WeightStableType)stable weightNumber:(NSInteger)weight point:(NSInteger)point unit:(ELDeviceWeightUnit)unit; | - (void)heightBodyFatScaleManagerReportWeightModeWithWeighingState:(HeightBodyFatScale_WeightStableType)stable weightNumber:(NSInteger)weight point:(NSInteger)point unit:(ELDeviceWeightUnit)unit; | ||||
#pragma mark - 体重身高模式 | |||||
#pragma mark - 体重身高模式 | |||||
/** MCU上报称重状态 */ | /** MCU上报称重状态 */ | ||||
- (void)heightBodyFatScaleManagerReportWeightHeightModeWithWeighingState:(HeightBodyFatScale_WeightStableType)stable weightNumber:(NSInteger)weight point:(NSInteger)point unit:(ELDeviceWeightUnit)unit; | - (void)heightBodyFatScaleManagerReportWeightHeightModeWithWeighingState:(HeightBodyFatScale_WeightStableType)stable weightNumber:(NSInteger)weight point:(NSInteger)point unit:(ELDeviceWeightUnit)unit; | ||||
- (void)heightBodyFatScaleManagerReportWeightHeightMOdeWithHeightNumber:(NSInteger)height point:(NSInteger)point unit:(ELDeviceHeightUnit)unit; | - (void)heightBodyFatScaleManagerReportWeightHeightMOdeWithHeightNumber:(NSInteger)height point:(NSInteger)point unit:(ELDeviceHeightUnit)unit; | ||||
#pragma mark - | |||||
#pragma mark - | |||||
/** MCU发送测量完成 */ | /** MCU发送测量完成 */ | ||||
- (void)heightBodyFatScaleManagerSendCompletedWithWorkMode:(HeightBodyFatScale_WorkModeType)type; | - (void)heightBodyFatScaleManagerSendCompletedWithWorkMode:(HeightBodyFatScale_WorkModeType)type; | ||||
+ (ELHeightBodyFatScaleBleManager *)shareManager; | + (ELHeightBodyFatScaleBleManager *)shareManager; | ||||
//MARK:发送指令 | |||||
#pragma mark 发送指令 | |||||
///设置用户信息 | ///设置用户信息 | ||||
- (void)sendUserDataWithSex:(NSInteger)sex age:(NSInteger)age height:(NSInteger)cm; | - (void)sendUserDataWithSex:(NSInteger)sex age:(NSInteger)age height:(NSInteger)cm; | ||||
//App回复测量完成 | //App回复测量完成 | ||||
- (void)sendWeighingCompleted; | - (void)sendWeighingCompleted; | ||||
//MARK:A6指令 | |||||
#pragma mark A6指令 | |||||
@end | @end |
// | |||||
// ELHeightGaugeAnalysisDataTool.h | |||||
// Elink | |||||
// | |||||
// Created by iot_user on 2019/5/10. | |||||
// Copyright © 2019 iot_iMac. All rights reserved. | |||||
// | |||||
#import <Foundation/Foundation.h> | |||||
#import "ELHeightGaugeBleDataModel.h" | |||||
#import "ELSDKHeader.h" | |||||
NS_ASSUME_NONNULL_BEGIN | |||||
@interface ELHeightGaugeAnalysisDataTool : NSObject | |||||
/** | |||||
解析温度数据 | |||||
@param playload 原始数据 | |||||
@return ELHeightGaugeBleDataModel | |||||
*/ | |||||
+(ELHeightGaugeBleDataModel *)analysisStabilityData:(NSData *)playload; | |||||
/** | |||||
解析设置单位 | |||||
@param playload 原始数据 | |||||
@return 结果 | |||||
*/ | |||||
+(ELSetBluetoothResponseType)analysisSetUnitResult:(NSData *)playload; | |||||
/** | |||||
解析异常 | |||||
@param playload 原始数据 | |||||
@return 异常 | |||||
*/ | |||||
+(ELHeightGaugeFailCode)analysisFailCode:(NSData *)playload; | |||||
@end | |||||
NS_ASSUME_NONNULL_END |
#define ELHygrothermographBleHeader_h | #define ELHygrothermographBleHeader_h | ||||
/** 温湿度计 ble head type 枚举定义 */ | /** 温湿度计 ble head type 枚举定义 */ | ||||
typedef NS_ENUM (NSInteger, Hygrothermograph_BleHeadType) { | |||||
typedef NS_ENUM (NSInteger, TH_BleHeadType) { | |||||
/** App获取设备状态 */ | /** App获取设备状态 */ | ||||
Hygrothermograph_BleHeadType_App_GetDevState = 0x01 , | |||||
TH_BleHeadType_App_GetDevState = 0x01 , | |||||
/** 设备定时返回设备状态 */ | /** 设备定时返回设备状态 */ | ||||
Hygrothermograph_BleHeadType_MCU_ReturnDevState = 0x02 , | |||||
TH_BleHeadType_MCU_ReturnDevState = 0x02 , | |||||
/** App设备变化阀值 */ | /** App设备变化阀值 */ | ||||
Hygrothermograph_BleHeadType_App_SetDevThreshold = 0x03 , | |||||
TH_BleHeadType_App_SetDevThreshold = 0x03 , | |||||
/** 设备定时返回阀值 */ | /** 设备定时返回阀值 */ | ||||
Hygrothermograph_BleHeadType_MCU_ReturnDevThreshold = 0x04 , | |||||
TH_BleHeadType_MCU_ReturnDevThreshold = 0x04 , | |||||
/** App读取设备的历史数据 */ | /** App读取设备的历史数据 */ | ||||
Hygrothermograph_BleHeadType_App_GetDevRecordData = 0x05 , | |||||
TH_BleHeadType_App_GetDevRecordData = 0x05 , | |||||
/** 设备返回历史数据 */ | /** 设备返回历史数据 */ | ||||
Hygrothermograph_BleHeadType_MCU_ReturnRecordData = 0x06 , | |||||
TH_BleHeadType_MCU_ReturnRecordData = 0x06 , | |||||
/** 设置采样频率和保存频率 */ | /** 设置采样频率和保存频率 */ | ||||
Hygrothermograph_BleHeadType_APP_SetSamplingFrequency = 0x07 , | |||||
TH_BleHeadType_APP_SetSamplingFrequency = 0x07 , | |||||
/** 设备返回采样频率和保存频率 */ | /** 设备返回采样频率和保存频率 */ | ||||
Hygrothermograph_BleHeadType_MCU_ReturnSamplingFrequency = 0x08 , | |||||
TH_BleHeadType_MCU_ReturnSamplingFrequency = 0x08 , | |||||
/** App返回收到历史数据反馈 */ | /** App返回收到历史数据反馈 */ | ||||
Hygrothermograph_BleHeadType_App_DataFeedback = 0x09 , | |||||
TH_BleHeadType_App_DataFeedback = 0x09 , | |||||
/** APP设置、读取温湿度校准 */ | |||||
TH_BleHeadType_App_SetOrGetCalibrationNum = 0x0A , | |||||
/** MCU返回温湿度校准值 */ | |||||
TH_BleHeadType_MCU_ReturnCalibrationNum = 0x0B , | |||||
/** APP获取设备信息 */ | |||||
// TH_BleHeadType_App_GetDevInfo = 0x10 , | |||||
/** 设备返回设备信息 */ | |||||
TH_BleHeadType_MCU_ReturnDevInfo = 0x11 , | |||||
/** APP获取设备报警功能 设备回复报警功能信息 */ | |||||
TH_BleHeadType_AlarmDataInfo = 0x12 , | |||||
/** APP设置设备报警功能 */ | |||||
TH_BleHeadType_App_SetAlarmDataInfo = 0x13 , | |||||
/** APP设置设备wifi/4G例行上报时间 */ | |||||
TH_BleHeadType_App_Set_Wifi_4G_UploadTime = 0x14 , | |||||
/** 设备返回设备wifi/4G例行上报时间 */ | |||||
TH_BleHeadType_MCU_Return_Wifi_4G_UploadTime = 0x15 , | |||||
/** APP获取wifi网络状态 */ | |||||
TH_BleHeadType_App_GetWiFiStatus = 0x16 , | |||||
/** 设备返回wifi网络状态 */ | |||||
TH_BleHeadType_MCU_ReturnWiFiStatus = 0x17 , | |||||
/// APP设置/读取设备蜂鸣器功能 | |||||
TH_BleHeadType_App_SetOrGetBuzzerState = 0x20 , | |||||
/// 设备返回蜂鸣器状态 | |||||
TH_BleHeadType_MCU_ReturnBuzzerState = 0x021 , | |||||
/// APP设置/读取设备闹钟功能 | |||||
TH_BleHeadType_App_SetOrGetAlarmClock = 0x22 , | |||||
/// 设备返回闹钟 | |||||
TH_BleHeadType_MCU_ReturnAlarmClock = 0x23 , | |||||
/// APP设置/读取设备整点报时功能 | |||||
TH_BleHeadType_App_SetOrUpdateReportPunctually = 0X24 , | |||||
/// 设备返回整点报时功能 | |||||
TH_BleHeadType_MCU_ReturnReportPunctually = 0x25 , | |||||
/// 7.4.10 APP设置/读取设备小夜灯 | |||||
TH_BleHeadType_App_SetOrGetNightLightState = 0x26 , | |||||
/// 设备返回小夜灯状态 | |||||
TH_BleHeadType_MCU_ReturnNightLightState = 0x27 , | |||||
/// 7.4.11 APP设置/读取背光亮度 | |||||
TH_BleHeadType_App_SetOrGetGroundLightState = 0x28 , | |||||
/// 设备返回背光状态 | |||||
TH_BleHeadType_MCU_ReturnGroundLightState = 0x29 , | |||||
/// 7.4.12 APP设置/读取单位 | |||||
TH_BleHeadType_App_SetOrGetUnit = 0x2A , | |||||
/// 设备返回单位 | |||||
TH_BleHeadType_MCU_ReturnUnit = 0x2B , | |||||
/// 7.4.13 APP寻物功能 | |||||
TH_BleHeadType_App_Lost = 0x2C , | |||||
/// 返回寻物功能状态 | |||||
TH_BleHeadType_MCU_ReturnLost = 0x2D , | |||||
/// 7.4.14 App绑定设备 | |||||
TH_BleHeadType_Binding_Status = 0x2E , | |||||
/// BM设备定时返回设备状态 | |||||
TH_BleHeadType_BM_MCU_ReturnDevState = 0x31 , | |||||
/// BM设备返回历史记录 | |||||
TH_BleHeadType_BM_MCU_ReturnRecordData = 0x32 , | |||||
/// 清除BM里面的历史记录 | |||||
TH_BleHeadType_App_ClearRecordData = 0x40 , | |||||
/// 返回清除记录结果 | |||||
TH_BleHeadType_MCU_ClearRecordDataState = 0x41 , | |||||
/// 查询BM是否支持历史记录 | |||||
TH_BleHeadType_App_GetSupportRecordData = 0x42, | |||||
/// BM回应是否支持历史记录 | |||||
TH_BleHeadType_App_ReturnSupportRecordData = 0x43, | |||||
/// app获取设备支持功能 | |||||
TH_BleHeadType_App_GetSupportFeatures = 0x80 , | |||||
/// 设备返回支持功能 | |||||
TH_BleHeadType_MCU_ReturnSupportFeatures = 0x81 , | |||||
}; | }; | ||||
/** 温湿度计设备类型定义 */ | |||||
typedef NS_ENUM (NSInteger, Hygrothermograph_DevType) { | |||||
Hygrothermograph_DevType_Ble = 0x00 , | |||||
Hygrothermograph_DevType_Ble_WiFi = 0x01 , | |||||
Hygrothermograph_DevType_Ble_4G = 0x02 , | |||||
}; | |||||
/** 温湿度计Wi-Fi连接状态枚举定义 */ | |||||
typedef NS_ENUM(NSInteger, Hygrothermograph_ConnectStateType) { | |||||
/** 未配置AP */ | |||||
Hygrothermograph_ConnectStateType_UnSetup = 0x00 , | |||||
/** 连接AP失败,连接时密码错误、AP信号不好、主动断开都会是这个状态 */ | |||||
Hygrothermograph_ConnectStateType_ConnectFailed = 0x01 , | |||||
/** 连接的AP信号不好 */ | |||||
Hygrothermograph_ConnectStateType_BadSignal = 0x02 , | |||||
/** 成功连接上AP */ | |||||
Hygrothermograph_ConnectStateType_Connecd = 0x03 , | |||||
/** 正在连接AP */ | |||||
Hygrothermograph_ConnectStateType_Connecting = 0x04 , | |||||
}; | |||||
/** 温湿度计工作状态枚举定义 */ | |||||
typedef NS_ENUM(NSInteger, Hygrothermograph_WorkStateType) { | |||||
/** 唤醒 */ | |||||
Hygrothermograph_WorkStateType_Wake = 0x00 , | |||||
/** 进入休眠 */ | |||||
Hygrothermograph_WorkStateType_Sleep = 0x01 , | |||||
/** 模块准备就绪 */ | |||||
Hygrothermograph_WorkStateType_Ready = 0x02 , | |||||
}; | |||||
/** 温湿度计配网失败原因枚举定义 */ | |||||
typedef NS_ENUM(NSInteger, Hygrothermograph_FailedType) { | |||||
/** 未知原因 */ | |||||
Hygrothermograph_FailedType_Unknow = 0x00 , | |||||
/** AP信号差 */ | |||||
Hygrothermograph_FailedType_APSignalPoor = 0x01 , | |||||
/** 密码错误 */ | |||||
Hygrothermograph_FailedType_PasswordWrong = 0x02 , | |||||
/** 获取不到IP */ | |||||
Hygrothermograph_FailedType_CantGetIP = 0x03 , | |||||
}; | |||||
/// 设备状态枚举定义 | |||||
typedef NS_ENUM(NSInteger, TH_DevStateType) { | |||||
/// APP读取时上报(若BM模块有历史功能,收到该指令不保存历史) | |||||
TH_DevStateType_ReadReport = 0x00 , | |||||
/// 普通上报(前后两次差值超过设定值(灵敏度),MCU主动上报)(若BM模块有历史功能,收到该指令保存历史) | |||||
TH_DevStateType_NormalReport = 0x01 , | |||||
/// 报警上报(当前值超出报警范围值,MCU主动上报)(若BM模块有历史功能,收到该指令保存历史) | |||||
TH_DevStateType_AlarmReport = 0x02 , | |||||
}; | |||||
/// 闹钟状态枚举定义 | |||||
typedef NS_ENUM(NSInteger, TH_AlarmClockState) { | |||||
/// 增加闹钟 | |||||
TH_AlarmClockState_Add = 0x00 , | |||||
/// 删除闹钟(不需要处理时间值) | |||||
TH_AlarmClockState_Del = 0x01 , | |||||
/// 停止该闹钟(停止对应的编号闹钟,不需要处理时间值) | |||||
TH_AlarmClockState_Stop = 0x02 , | |||||
/// 获取设备已存在的闹钟(编号模式时间都设为0) | |||||
TH_AlarmClockState_Get = 0x03 , | |||||
}; | |||||
/// 闹钟模式 | |||||
typedef NS_ENUM(NSInteger, TH_AlarmClockMode) { | |||||
/// 只触发一次 | |||||
TH_AlarmClockMode_Once = 0x00 , | |||||
/// 每天都触发 | |||||
TH_AlarmClockMode_Everyday = 0x01 , | |||||
}; | |||||
/// 温湿度计支持的设备功能 | |||||
typedef NS_ENUM(NSInteger, TH_Dev_SupportFeatures) { | |||||
/// 温湿度校准 | |||||
TH_Dev_SupportFeatures_Calibration = 0 , | |||||
/// 蜂鸣器报警 | |||||
TH_Dev_SupportFeatures_BuzzerAlarm = 1 , | |||||
/// 闹钟功能 | |||||
TH_Dev_SupportFeatures_AlarmClock = 2 , | |||||
/// 整点报时 | |||||
TH_Dev_SupportFeatures_ReportPunctually = 3 , | |||||
/// 小夜灯 | |||||
TH_Dev_SupportFeatures_NightLight = 4 , | |||||
/// 背光亮度 | |||||
TH_Dev_SupportFeatures_GroundLight = 5 , | |||||
/// 寻物功能(APP点击寻物时,设备蜂鸣器会响) | |||||
TH_Dev_SupportFeatures_Lost = 6 , | |||||
}; | |||||
#endif /* ELHygrothermographBleHeader_h */ | #endif /* ELHygrothermographBleHeader_h */ |
// | // | ||||
#import <AILinkBleSDK/ELBluetoothManager.h> | #import <AILinkBleSDK/ELBluetoothManager.h> | ||||
#import "ELHygrothermographBleHeader.h" | |||||
NS_ASSUME_NONNULL_BEGIN | NS_ASSUME_NONNULL_BEGIN | ||||
*/ | */ | ||||
- (void)hygrothermographManagerReturnDevStatePower:(NSInteger)power bootTime:(long long)time tem:(float)tem hum:(float)hum; | - (void)hygrothermographManagerReturnDevStatePower:(NSInteger)power bootTime:(long long)time tem:(float)tem hum:(float)hum; | ||||
/// 新设备返回当前状态 | |||||
/// @param power 电量 0~100 | |||||
/// @param time 设备开机时间,当该值不用发时,为0xFFFFFFFF. 当主控MCU有独立RTC芯片时,需要发. 当MCU主控无独立RTC芯片时,该值填0xFFFFFFFF | |||||
/// @param tem 温度 | |||||
/// @param unit 温度单位 | |||||
/// @param hum 湿度,单位% | |||||
/// @param state 当前设备状态,详细内容见枚举注释 | |||||
- (void)newTHManagerReturnDevStatePower:(int)power bootTime:(long long)time tem:(float)tem unit:(enum ELDeviceTemperatureUnit)unit hum:(float)hum devState:(enum TH_DevStateType)state; | |||||
/** 设备返回阀值 | /** 设备返回阀值 | ||||
* @param tem : 温度阀值,单位摄氏度 | * @param tem : 温度阀值,单位摄氏度 | ||||
* @param hum : 湿度阀值,单位% | * @param hum : 湿度阀值,单位% | ||||
/** 返回设备采样频率和保存频率 */ | /** 返回设备采样频率和保存频率 */ | ||||
- (void)hygrothermographManagerReturnSamplingFrequency:(NSInteger)sampling saveFrequency:(NSInteger)save timeInterval:(NSInteger)timeInterval; | - (void)hygrothermographManagerReturnSamplingFrequency:(NSInteger)sampling saveFrequency:(NSInteger)save timeInterval:(NSInteger)timeInterval; | ||||
/** 返回温湿度校准值 */ | |||||
- (void)hygrothermographManagerReturnCalibrationValueWithTem:(float)tem hum:(float)hum; | |||||
/** 返回设备信息 */ | |||||
- (void)hygrothermographManagerReturnDevType:(enum Hygrothermograph_DevType)type version:(NSString *)version IMEI:(NSString *)IMEI; | |||||
/** 返回设备报警功能开关 | |||||
* @param highTem : 高温报警值,单位摄氏度 | |||||
* @param lowTem : 低温报警值,单位摄氏度 | |||||
*/ | |||||
- (void)hygrothermographManagerReturnTemAlarmSwitch:(BOOL)temAlarm | |||||
highTemAlarm:(float)highTem | |||||
lowTemAlarm:(float)lowTem | |||||
humAlarmSwitch:(BOOL)humAlarm | |||||
highHumAlarm:(float)highHum | |||||
lowHumAlarm:(float)lowHum; | |||||
/** 返回wifi/4g例行上报时间 */ | |||||
- (void)hygrothermographManagerReturnRoutineReportingTime:(int)time; | |||||
/** wifi/4g设备返回历史记录数据 */ | |||||
- (void)hygrothermographManagerWiFiReturnRecordDataList:(NSArray<ELHygrothermographBleRecordData *> *)list allListNumber:(long long)allNumber getListNumber:(long long)getNumber; | |||||
/** 返回WiFi网络状态 */ | |||||
- (void)hygrothermographManagerReturnWiFiConnectStatus:(enum Hygrothermograph_ConnectStateType)connectState | |||||
workStatus:(enum Hygrothermograph_WorkStateType)workStatus | |||||
failedStatus:(enum Hygrothermograph_FailedType)failedStatus; | |||||
/** MCU replies to the result of setting the ip address (MCU回复设置ip地址结果 ) | |||||
* @param result : 1:成功,0:失败,2:不支持 | |||||
*/ | |||||
- (void)managerCallBackSetIPAddressResult:(NSInteger)result; | |||||
/// 返回设备的ip地址 | |||||
- (void)hygrothermographManagerBackDevIpAddress:(NSString *)ipAddress; | |||||
/// 返回蜂鸣器状态 | |||||
/// @param open 是否打开 | |||||
- (void)THManagerBuzzerState:(BOOL)open; | |||||
/// 设备返回闹钟功能 | |||||
/// @param state 闹钟状态 | |||||
/// @param num 1-5(对应5的个闹钟编号) | |||||
/// @param mode 模式 | |||||
/// @param timeStr 时间,格式为 HH:mm:ss | |||||
/// @param open 是否激活 | |||||
- (void)THManagerAlarmLockState:(enum TH_AlarmClockState)state num:(int)num mode:(enum TH_AlarmClockMode)mode timeStr:(NSString *)timeStr open:(BOOL)open; | |||||
/// 设备返回整点报时状态 | |||||
/// @param open 整点报时开关 | |||||
- (void)THManagerReportPunctuallyState:(BOOL)open; | |||||
/// 设备返回小夜灯状态 | |||||
/// @param open 小夜灯开关 | |||||
- (void)THManagerNightLightState:(BOOL)open; | |||||
/// 设备返回背光状态 | |||||
/// @param open 背光灯开关 | |||||
/// @param brightness 亮度,0-100 | |||||
- (void)THManagerGounrdLightState:(BOOL)open brightness:(int)brightness; | |||||
/// 设备返回当前单位 | |||||
/// @param unit 单位 | |||||
- (void)THManagerUnitState:(enum ELDeviceTemperatureUnit)unit; | |||||
/// 设备返回寻物状态 | |||||
/// @param alarm 是否正在报警 | |||||
- (void)THManagerLostState:(BOOL)alarm; | |||||
/// 返回支持的功能列表 | |||||
/// @param list 数组内容为 TH_Dev_SupportFeatures 枚举 | |||||
- (void)THManagerSuportList:(NSArray<NSNumber *> *)list; | |||||
/// 返回清除历史记录结果 | |||||
/// @param state 只会返回成功,不会返回失败 | |||||
- (void)THManagerClearRecordState:(BOOL)state; | |||||
/// 返回是否支持历史记录 | |||||
/// @param state 只会返回成功,不会返回失败 | |||||
- (void)THManagerSupportRecordData:(BOOL)state; | |||||
// 返回绑定状态 | |||||
- (void)THManagerBindingStatus:(Byte)status; | |||||
@end | @end | ||||
/** | |||||
温湿度协议手动传入cid,因为有需要不连接设备发送数据的应用场景,所以不通过peripheralModel获取cid | |||||
*/ | |||||
/// 温湿度计蓝牙数据发送 | |||||
@interface ELHygrothermographBleManager : ELBluetoothManager | @interface ELHygrothermographBleManager : ELBluetoothManager | ||||
@property (nonatomic, weak) id<ELHygrothermographBleDelegate> hygrothermographDelegate; | @property (nonatomic, weak) id<ELHygrothermographBleDelegate> hygrothermographDelegate; | ||||
+ (ELHygrothermographBleManager *)shareManager; | + (ELHygrothermographBleManager *)shareManager; | ||||
/** 获取设备状态信息 */ | /** 获取设备状态信息 */ | ||||
- (void)getDevState; | |||||
- (void)getDevStateWithCid:(enum ELSupportDeviceType)cid; | |||||
/** 设置阀值 | /** 设置阀值 | ||||
* @param tem 区间为 0.1 ~ 10摄氏度 (超过区间就设置为临界值) | * @param tem 区间为 0.1 ~ 10摄氏度 (超过区间就设置为临界值) | ||||
* @param hum 区间为 0.1 ~ 10 %(同上) | * @param hum 区间为 0.1 ~ 10 %(同上) | ||||
*/ | */ | ||||
- (void)setDevThresholdWithTem:(float)tem hum:(float)hum; | |||||
- (void)setDevThresholdWithTem:(float)tem hum:(float)hum cid:(enum ELSupportDeviceType)cid; | |||||
/** 读取设备历史记录 | /** 读取设备历史记录 | ||||
* 因为设备保存的历史数据过多,APP 不需每次多获取全部历史。 所以 APP 可以根据自身上一次获取到的开机时间,获取新的历 史数据。 例如:APP 首次连接设备获取数据时,则该值为 0. 如果首次已经获取到了开机时间的 100s 时,再次获取时,该值 应该为 100 | * 因为设备保存的历史数据过多,APP 不需每次多获取全部历史。 所以 APP 可以根据自身上一次获取到的开机时间,获取新的历 史数据。 例如:APP 首次连接设备获取数据时,则该值为 0. 如果首次已经获取到了开机时间的 100s 时,再次获取时,该值 应该为 100 | ||||
*/ | */ | ||||
- (void)getDevRecordDataWithDevTime:(long long)devTime; | |||||
- (void)getDevRecordDataWithDevTime:(long long)devTime cid:(enum ELSupportDeviceType)cid; | |||||
/** 设置采样频率和保存频率 */ | /** 设置采样频率和保存频率 */ | ||||
- (void)setSamplingFrequency:(NSInteger)sampling saveFrequency:(NSInteger)save timeInterval:(NSInteger)timeInterval; | |||||
- (void)setSamplingFrequency:(NSInteger)sampling saveFrequency:(NSInteger)save timeInterval:(NSInteger)timeInterval cid:(enum ELSupportDeviceType)cid; | |||||
/// 7.4.4 APP设置、读取温湿度校准 | |||||
/// @param set true:设置(APP下发数据时,两个单位的值都要算好,当设备处于哪个单位时,就使用哪个偏置的值,避免了单位转化导致精度丢失), flase:读取 | |||||
/// @param cTem (单位:℃ .范围-10.0 到 +10.0 ,默认值0) | |||||
/// @param fTem (单位:℉ .范围-10.0 到 +10.0 ,默认值0) | |||||
/// @param hum (范围-10.0到 +10.0% ,默认值为0) | |||||
- (void)setOrGetTemHumCalibrationValueWithSet:(BOOL)set cTem:(float)cTem fTem:(float)fTem hum:(float)hum cid:(enum ELSupportDeviceType)cid; | |||||
/** APP获取设备信息 */ | |||||
- (void)getDevDataInfoWithCid:(enum ELSupportDeviceType)cid; | |||||
/** APP获取设备报警功能 */ | |||||
- (void)getDevAlarmDataInfoWithCid:(enum ELSupportDeviceType)cid; | |||||
/** APP设置报警功能 */ | |||||
- (void)setDevAlarmDataInfoWithTemAlarmSwitch:(BOOL)temAlarm | |||||
highTemAlarm:(float)highTem | |||||
lowTemAlarm:(float)lowTem | |||||
humAlarmSwitch:(BOOL)humAlarm | |||||
highHumAlarm:(float)highHum | |||||
lowHumAlarm:(float)lowHum | |||||
cid:(enum ELSupportDeviceType)cid; | |||||
/// 获取设备支持功能 | |||||
- (void)getDevSupportFeaturesWithCid:(enum ELSupportDeviceType)cid; | |||||
/// 设置/读取设备蜂鸣器功能 | |||||
/// @param set 是否为设置命令,否则读取 | |||||
/// @param close 是否关闭,默认是打开 | |||||
- (void)setOrGetBuzzerWithCmd:(BOOL)set close:(BOOL)close cid:(enum ELSupportDeviceType)cid; | |||||
/// 设置/读取设备闹钟功能 | |||||
/// @param state 闹钟状态 | |||||
/// @param num 1-5(对应5的个闹钟编号) | |||||
/// @param mode 模式 | |||||
/// @param timeStr 时间,格式为 HH:mm:ss | |||||
/// @param open 是否激活 | |||||
- (void)setOrGetAlarmClockWithState:(enum TH_AlarmClockState)state num:(int)num mode:(enum TH_AlarmClockMode)mode timeStr:(NSString *)timeStr open:(BOOL)open cid:(enum ELSupportDeviceType)cid; | |||||
/// 设置/读取设备整点报时功能 | |||||
/// @param set 是否为设置,否则读取 | |||||
/// @param open 是否打开整点报时,默认关闭 | |||||
- (void)setOrGetReportPunctuallyWithCmd:(BOOL)set open:(BOOL)open cid:(enum ELSupportDeviceType)cid; | |||||
/// 设置/读取设备小夜灯 | |||||
/// @param set 是否为设置,否则读取 | |||||
/// @param open 是否打开小夜灯,默认关闭 | |||||
- (void)setOrGetDevNightLightWithCmd:(BOOL)set open:(BOOL)open cid:(enum ELSupportDeviceType)cid; | |||||
/// 设置/读取背光亮度 | |||||
/// @param set 是否为设置,否则读取 | |||||
/// @param open 是否打开,默认关闭 | |||||
/// @param brightness 亮度值0-100 | |||||
- (void)setOrGetGroundLightWithCmd:(BOOL)set open:(BOOL)open brightness:(int)brightness cid:(enum ELSupportDeviceType)cid; | |||||
/// 设置/读取单位 | |||||
/// @param set 是否为设置,否则读取 | |||||
/// @param unit 单位 | |||||
- (void)setOrGetUnitWithCmd:(BOOL)set unit:(ELDeviceTemperatureUnit)unit cid:(enum ELSupportDeviceType)cid; | |||||
/// 寻物功能 | |||||
/// @param start 是否开始寻物 | |||||
- (void)findingWithCmd:(BOOL)start cid:(enum ELSupportDeviceType)cid; | |||||
/// 清除设备历史记录 | |||||
- (void)clearRecordDataWithCid:(enum ELSupportDeviceType)cid; | |||||
/// 查询BM是否支持历史记录 | |||||
- (void)getSupportRecordDataWithCid:(enum ELSupportDeviceType)cid; | |||||
/** app设置设备wifi/4g例行上报时间 */ | |||||
- (void)setDevRoutineReportingTime:(int)time cid:(enum ELSupportDeviceType)cid; | |||||
/** app获取Wi-Fi网络状态 */ | |||||
- (void)getDevWiFiStatusWithCid:(enum ELSupportDeviceType)cid; | |||||
/** 设置设备的IP地址,端口号和访问路径 */ | |||||
- (void)setDevAccessIpAddress:(NSString *)address portNumber:(NSUInteger)portNum path:(NSString *)path; | |||||
/** 获取设备ip地址 */ | |||||
- (void)getDevAccessIp; | |||||
/** 设置Unix时间 */ | |||||
- (void)setUnixTime:(long long)time; | |||||
// App绑定设备 开始 | |||||
- (void)bindDeviceStart; | |||||
// App绑定设备 完成 | |||||
- (void)bindDeviceDone; | |||||
@end | @end | ||||
/** | /** | ||||
CID | CID | ||||
*/ | */ | ||||
@property (nonatomic, assign) ELSupportDeviceType deviceType; | |||||
@property (nonatomic, assign) ELSupportDeviceType deviceType;// DEPRECATED_MSG_ATTRIBUTE("use ‘cid’ instead"); | |||||
@property (nonatomic, assign) ELSupportDeviceType cid; | |||||
/** | /** | ||||
VID | VID | ||||
*/ | */ | ||||
@property (nonatomic, assign) NSInteger vendorID; | @property (nonatomic, assign) NSInteger vendorID; | ||||
@property (nonatomic, assign) NSInteger vid; | |||||
/** | /** | ||||
PID | PID | ||||
*/ | */ | ||||
@property (nonatomic, assign) NSInteger productID; | @property (nonatomic, assign) NSInteger productID; | ||||
@property (nonatomic, assign) NSInteger pid; | |||||
@property (nonatomic, copy) NSString *deviceName; | @property (nonatomic, copy) NSString *deviceName; | ||||
@property (nonatomic, copy) NSString *macAddress; | @property (nonatomic, copy) NSString *macAddress; | ||||
*/ | */ | ||||
+(NSArray<ELPeripheralModel *> *)getDevicesWithPeripherals:(NSArray<__kindof ELPeripheralModel *> *)peripherals supportDeviceType:(ELSupportDeviceType)type; | +(NSArray<ELPeripheralModel *> *)getDevicesWithPeripherals:(NSArray<__kindof ELPeripheralModel *> *)peripherals supportDeviceType:(ELSupportDeviceType)type; | ||||
//MARK:Screen multiple devices(筛选多个设备) | |||||
#pragma mark Screen multiple devices(筛选多个设备) | |||||
+(NSArray<ELPeripheralModel *> *)getDevicesWithPeripherals:(NSArray<__kindof ELPeripheralModel *> *)peripherals supportDeviceTypes:(NSArray<NSNumber *> *)types; | +(NSArray<ELPeripheralModel *> *)getDevicesWithPeripherals:(NSArray<__kindof ELPeripheralModel *> *)peripherals supportDeviceTypes:(NSArray<NSNumber *> *)types; | ||||
//Descending order(降序) | //Descending order(降序) |
ELInetGetCmdTypeGetSendKeyState = 0x31, //-APP reads the result of sending the decoding key(APP读取下发解码秘钥的结果) | ELInetGetCmdTypeGetSendKeyState = 0x31, //-APP reads the result of sending the decoding key(APP读取下发解码秘钥的结果) | ||||
ELInetGetCmdTypeGetSmartLockA6Data = 0x34, //-Door lock 0x34 represents the A6 protocol (see the second level command for details)(门锁0x34代表A6协议(具体见二级指令)) | ELInetGetCmdTypeGetSmartLockA6Data = 0x34, //-Door lock 0x34 represents the A6 protocol (see the second level command for details)(门锁0x34代表A6协议(具体见二级指令)) | ||||
ELInetGetCmdTypeGetBasicInfoData = 0x36, //Obtain basic device information data(获取设备基本信息数据) | ELInetGetCmdTypeGetBasicInfoData = 0x36, //Obtain basic device information data(获取设备基本信息数据) | ||||
#pragma mark ============ Begin 蓝牙Wifi ============== | |||||
#pragma mark ============ Begin 蓝牙Wifi ============== | |||||
ELInetGetCmdTypeBleWifiGetNearbyWifi = 0x80, //Get nearby Wifi(获取附近Wifi) | ELInetGetCmdTypeBleWifiGetNearbyWifi = 0x80, //Get nearby Wifi(获取附近Wifi) | ||||
ELInetGetCmdTypeBleWifiReceiveWifiName = 0x81, //Reply to wifi name(回复wifi名字) | ELInetGetCmdTypeBleWifiReceiveWifiName = 0x81, //Reply to wifi name(回复wifi名字) | ||||
ELInetGetCmdTypeBleWifiReceiveWifiMac = 0x82, //Reply to wifi mac(回复wifi mac) | ELInetGetCmdTypeBleWifiReceiveWifiMac = 0x82, //Reply to wifi mac(回复wifi mac) | ||||
ELInetGetCmdTypeBleWifiName = 0x94, //获取wifi名称 | ELInetGetCmdTypeBleWifiName = 0x94, //获取wifi名称 | ||||
ELInetGetCmdTypeBleWifiSetPathAddress = 0x96, //Set access path(设置访问的路径 | ELInetGetCmdTypeBleWifiSetPathAddress = 0x96, //Set access path(设置访问的路径 | ||||
ELInetGetCmdTypeBleWifiGetPathAddress = 0x97, //get access path | ELInetGetCmdTypeBleWifiGetPathAddress = 0x97, //get access path | ||||
#pragma mark ============End 蓝牙Wifi ============== | |||||
#pragma mark ============End 蓝牙Wifi ============== | |||||
ELInetGetCmdTypeRequestAuthorize = 0x7F, //Request device authorization (请求设备授权) | ELInetGetCmdTypeRequestAuthorize = 0x7F, //Request device authorization (请求设备授权) | ||||
ELInetGetCmdTypeToothbrushA6Data = 0xC0, //A6 data for toothbrush(牙刷专用A6数据,详情请见协议的2级指令)(See the second order for details) | ELInetGetCmdTypeToothbrushA6Data = 0xC0, //A6 data for toothbrush(牙刷专用A6数据,详情请见协议的2级指令)(See the second order for details) | ||||
ELInetSetCmdTypeSetCommunicationMode = 0x1F, //Set module serial port mode, I2C mode, SPI mode(设置模块串口模式、I2C模式、SPI模式) | ELInetSetCmdTypeSetCommunicationMode = 0x1F, //Set module serial port mode, I2C mode, SPI mode(设置模块串口模式、I2C模式、SPI模式) | ||||
ELInetSetCmdTypeSetMCURestart = 0x21, //Set module restart(设置模块重启) | ELInetSetCmdTypeSetMCURestart = 0x21, //Set module restart(设置模块重启) | ||||
ELInetSetCmdTypeSetFactoryDataReset = 0x22, //Set factory reset(设置恢复出厂设置) | ELInetSetCmdTypeSetFactoryDataReset = 0x22, //Set factory reset(设置恢复出厂设置) | ||||
ELInetSetCmdTypeSetConnectState = 0x25, //Set the Bluetooth connection status(设置蓝牙连接状态) | |||||
ELInetSetCmdTypeSetHandshake = 0x23, //Encrypted handshake data returned by Bluetooth(蓝牙返回的加密的握手数据) | ELInetSetCmdTypeSetHandshake = 0x23, //Encrypted handshake data returned by Bluetooth(蓝牙返回的加密的握手数据) | ||||
ELInetSetCmdTypeSetConnectState = 0x25, //Set the Bluetooth connection status(设置蓝牙连接状态) | |||||
ELInetSetCmdTypeSetMCUPowerState = 0x27, //上报电池状态 | |||||
ELInetSetCmdTypeSetKey = 0x31, //APP sends the decoding key(APP下发解码秘钥) | ELInetSetCmdTypeSetKey = 0x31, //APP sends the decoding key(APP下发解码秘钥) | ||||
ELInetSetCmdTypeSetSmartLockA6Data = 0x34, //Door lock 0x34 represents the A6 protocol (see the second level command for details)(门锁0x34代表A6协议(具体见二级指令)) | ELInetSetCmdTypeSetSmartLockA6Data = 0x34, //Door lock 0x34 represents the A6 protocol (see the second level command for details)(门锁0x34代表A6协议(具体见二级指令)) | ||||
ELInetSetCmdTypeSyncMCUNowDate = 0x37, //Sync the current time of the system(设置手机时间给MCU) | ELInetSetCmdTypeSyncMCUNowDate = 0x37, //Sync the current time of the system(设置手机时间给MCU) | ||||
#pragma mark ============ 蓝牙Wifi ============== | |||||
#pragma mark ============ 蓝牙Wifi ============== | |||||
ELInetSetCmdTypeBleWifiSetWifiMac = 0x84, //设置WIFI Mac地址 | ELInetSetCmdTypeBleWifiSetWifiMac = 0x84, //设置WIFI Mac地址 | ||||
ELInetSetCmdTypeBleWifiSetWifiPwd = 0x86, //设置WIFI 密码 | ELInetSetCmdTypeBleWifiSetWifiPwd = 0x86, //设置WIFI 密码 | ||||
ELInetSetCmdTypeBleWifiSetConnectWifi = 0x88, //设置设备连接WIFI | ELInetSetCmdTypeBleWifiSetConnectWifi = 0x88, //设置设备连接WIFI | ||||
ELSupportDeviceTypeBLE_BfrEightScale = 0x0032, //MCU会计算体脂信息的八电极蓝牙秤 | ELSupportDeviceTypeBLE_BfrEightScale = 0x0032, //MCU会计算体脂信息的八电极蓝牙秤 | ||||
ELSupportDeviceTypeElectricScooter= 0x0033 , //滑板车 | ELSupportDeviceTypeElectricScooter= 0x0033 , //滑板车 | ||||
ELSupportDeviceTypeNutritionScale = 0x0034 , //营养秤(蓝牙连接) | ELSupportDeviceTypeNutritionScale = 0x0034 , //营养秤(蓝牙连接) | ||||
ELSupportDeviceType_WiFi_Hygrothermograph = 0x0036 , //wifi温湿度计 | |||||
ELSupportDeviceTypeAiFreshNutritionScale = 0x0037 , //好营养营养秤(蓝牙连接) | ELSupportDeviceTypeAiFreshNutritionScale = 0x0037 , //好营养营养秤(蓝牙连接) | ||||
ELSupportDeviceTypeBLE_WIFIBlood = 0x0038 , //Bluetooth and wifi Blood(蓝牙wifi智能血压计) | |||||
ELSupportDeviceTypeFasciaGun = 0x003B , //筋膜枪 | |||||
ELSupportDeviceType_4G_Hygrothermograph = 0x003A , //4g温湿度计 | |||||
ELSupportDeviceTypeAutomaticThermometer = 0x003D , //61 //测温仪(蓝牙) | |||||
ELSupportDeviceType_BraceletWatch = 0x003E, //Leap手环 | |||||
ELSupportDeviceTypeVictorClampMeter = 0x0040, //Victor钳表 | |||||
ELSupportDeviceTypeVictorAnemometer = 0x0044, //胜利风速计 | |||||
ELSupportDeviceTypeBroadcastScale = (0xffff +0x01) , //655536 Broadcast body fat scale(AILink广播体脂秤) | ELSupportDeviceTypeBroadcastScale = (0xffff +0x01) , //655536 Broadcast body fat scale(AILink广播体脂秤) | ||||
ELSupportDeviceTypeBroadcastHeightGauge = (0xffff + 0x03) , //65538 广播身高仪 | ELSupportDeviceTypeBroadcastHeightGauge = (0xffff + 0x03) , //65538 广播身高仪 | ||||
ELSupportDeviceTypeBroadcastScale_Lingyang = (0xffff +0x16) , //65557 凌阳广播体脂秤 | ELSupportDeviceTypeBroadcastScale_Lingyang = (0xffff +0x16) , //65557 凌阳广播体脂秤 | ||||
ELSupportDeviceTypeBroadcastNutritionFoodScale = (0xffff + 0x04) , //65539 广播营养秤 | ELSupportDeviceTypeBroadcastNutritionFoodScale = (0xffff + 0x04) , //65539 广播营养秤 | ||||
ELSupportDeviceTypeBroadcastHygrothermograph = (0xffff + 0x06) , //65541 广播温湿度计 | |||||
}; | }; | ||||
//Communication mode(通信模式) | //Communication mode(通信模式) | ||||
}; | }; | ||||
//WiFi连接状态 | //WiFi连接状态 | ||||
typedef NS_ENUM(NSUInteger, BleWiFiConnectState) { | typedef NS_ENUM(NSUInteger, BleWiFiConnectState) { | ||||
BleWiFiConnectStateNoWiFi = 0,//0:没配网,没有连接,0: No connection | |||||
BleWiFiConnectStateConnectFail = 1 ,//1:尝试连接热点,但是失败1: Attempt to connect to the hotspot, but failed | |||||
BleWiFiConnectStateNoNetwork = 2 ,//2:连接热点,热点无网络,2: Connected to the hotspot, the hotspot has no network | |||||
BleWiFiConnectStateSuccess = 3 ,//3:连接热点,热点有网络,3: Connected to the hotspot, the hotspot has a network | |||||
BleWiFiConnectStateNoConnect = 4 ,//4:有热点信息,未连接,4: There is hotspot information, not connected | |||||
/// 0:没配网,没有连接,0: No connection | |||||
BleWiFiConnectStateNoWiFi = 0, | |||||
/// 1:尝试连接热点,但是失败1: Attempt to connect to the hotspot, but failed | |||||
BleWiFiConnectStateConnectFail = 1 , | |||||
/// 2:连接热点,热点无网络,2: Connected to the hotspot, the hotspot has no network | |||||
BleWiFiConnectStateNoNetwork = 2 , | |||||
/// 3:连接热点,热点有网络,3: Connected to the hotspot, the hotspot has a network | |||||
BleWiFiConnectStateSuccess = 3 , | |||||
/// 4:有热点信息,未连接,4: There is hotspot information, not connected | |||||
BleWiFiConnectStateNoConnect = 4 , | |||||
/// 5:ap信号差,连接失败 | |||||
BleWiFiConnectStatePoorApSignal = 5 , | |||||
/// 6:密码错误 | |||||
BleWiFiConnectStatePasswordWrong = 6 , | |||||
/// 7:获取不到IP,连接失败 | |||||
BleWiFiConnectStateCantGetIP = 7 , | |||||
}; | |||||
//连网失败原因,对于温湿度计来说,如果 BleWiFiConnectState 状态为1,则需要判断该值,牙刷的话byte位够长,可以直接判断BleWiFiConnectState | |||||
typedef NS_ENUM(NSUInteger, BleWiFiConnectServerFaildState) { | |||||
BleWiFiConnectServerFaildState_Unknow = 0 , | |||||
BleWiFiConnectServerFaildState_ApSignal = 1 , | |||||
BleWiFiConnectServerFaildState_PwdWrong = 2 , | |||||
BleWiFiConnectServerFaildState_CantGetIP = 3 , | |||||
}; | }; | ||||
int connectState; //Connection status: 0: no connection 1: connected(蓝牙连接状态: 0:无连接 1:已连接 2:配对完成) | int connectState; //Connection status: 0: no connection 1: connected(蓝牙连接状态: 0:无连接 1:已连接 2:配对完成) | ||||
BleWiFiConnectState wifiState; // | BleWiFiConnectState wifiState; // | ||||
int workState; //Working status: 0: Wake 1: Go to sleep 2: Module is ready(工作状态: 0:唤醒 1:进入休眠 2:模块准备就绪) | int workState; //Working status: 0: Wake 1: Go to sleep 2: Module is ready(工作状态: 0:唤醒 1:进入休眠 2:模块准备就绪) | ||||
BleWiFiConnectServerFaildState faildState; | |||||
}; | }; | ||||
#pragma mark - AiLink unit | |||||
#pragma mark - AiLink unit | |||||
/** Type key of unit string(单位字符串的type key) */ | /** Type key of unit string(单位字符串的type key) */ | ||||
#define ELDeviceUnitTypeKey @"type" | #define ELDeviceUnitTypeKey @"type" | ||||
}; | }; | ||||
#define AiLinkBleHeightUnit_CMStr @"cm" | #define AiLinkBleHeightUnit_CMStr @"cm" | ||||
#define AiLinkBleHeightUnit_InchStr @"inch" | |||||
#define AiLinkBleHeightUnit_FeetStr @"feet" | |||||
#define AiLinkBleHeightUnit_InchStr @"inch"//@"in"// | |||||
#define AiLinkBleHeightUnit_FeetStr @"feet"//@"ft"// | |||||
#define AiLinkBleHeightUnitDic @{@(ELDeviceHeightUnit_CM):AiLinkBleHeightUnit_CMStr,@(ELDeviceHeightUnit_Inch):AiLinkBleHeightUnit_InchStr,@(ELDeviceHeightUnit_FT_IN):AiLinkBleHeightUnit_FeetStr} | #define AiLinkBleHeightUnitDic @{@(ELDeviceHeightUnit_CM):AiLinkBleHeightUnit_CMStr,@(ELDeviceHeightUnit_Inch):AiLinkBleHeightUnit_InchStr,@(ELDeviceHeightUnit_FT_IN):AiLinkBleHeightUnit_FeetStr} | ||||
/** AiLink Length unit(长度单位) */ | /** AiLink Length unit(长度单位) */ | ||||
}; | }; | ||||
#pragma mark ============ 枚举 ============== | |||||
#pragma mark ============ 枚举 ============== | |||||
typedef NS_ENUM(NSUInteger, ELBluetoothState) { | typedef NS_ENUM(NSUInteger, ELBluetoothState) { | ||||
ELBluetoothStateUnavailable, //Bluetooth is not available(蓝牙不可用) | |||||
ELBluetoothStateAvailable, //Bluetooth available(蓝牙可用) | |||||
ELBluetoothStateStopScan, //Stop scanning(停止扫描) | |||||
ELBluetoothStateScaning, //Scanning(正在扫描) | |||||
ELBluetoothStateWillConnect, //Will connect(将要连接) | |||||
ELBluetoothStateDidConnect, //Already connected(已经连接) | |||||
ELBluetoothStateConnectFail, //Connection error(连接出错) | |||||
ELBluetoothStateDidDiscoverCharacteristics, //Peripheral feature callback(外设特征回调) | |||||
ELBluetoothStateDidDisconnect, //Disconnect(断开连接) | |||||
ELBluetoothStateDidValidationPass, //approved(通过验证) | |||||
ELBluetoothStateFailedValidation, //Failed verification(未通过验证) | |||||
ELBluetoothStateUnavailable, //Bluetooth is not available(蓝牙不可用)0 | |||||
ELBluetoothStateAvailable, //Bluetooth available(蓝牙可用)1 | |||||
ELBluetoothStateStopScan, //Stop scanning(停止扫描)2 | |||||
ELBluetoothStateScaning, //Scanning(正在扫描)3 | |||||
ELBluetoothStateWillConnect, //Will connect(将要连接)4 | |||||
ELBluetoothStateDidConnect, //Already connected(已经连接)5 | |||||
ELBluetoothStateConnectFail, //Connection error(连接出错)6 | |||||
ELBluetoothStateDidDiscoverCharacteristics, //Peripheral feature callback(外设特征回调)7 | |||||
ELBluetoothStateDidDisconnect, //Disconnect(断开连接)8 | |||||
ELBluetoothStateDidValidationPass, //approved(通过验证)9 | |||||
ELBluetoothStateFailedValidation, //Failed verification(未通过验证)10 | |||||
ELBluetoothStateUnauthorized = 0XFF , //No Bluetooth permission (没有蓝牙权限) | ELBluetoothStateUnauthorized = 0XFF , //No Bluetooth permission (没有蓝牙权限) |
/** 绊绳数据对象模型 */ | /** 绊绳数据对象模型 */ | ||||
@interface ELSkipBleTripRopeModel : NSObject | @interface ELSkipBleTripRopeModel : NSObject | ||||
/** 本次连跳的累计时间 */ | |||||
@property (nonatomic, assign) long long tripTime; | |||||
/** 本次连跳的累计时间,字段弄短点,方便后台数据存储 */ | |||||
@property (nonatomic, assign) long long t; | |||||
/** 本次连跳的累计个数 */ | /** 本次连跳的累计个数 */ | ||||
@property (nonatomic, assign) NSUInteger tripJump; | |||||
@property (nonatomic, assign) NSUInteger j; | |||||
@end | @end | ||||
// | |||||
// ELTLVModel.h | |||||
// AILinkBleSDK | |||||
// | |||||
// Created by LarryZhang on 2022/9/6. | |||||
// Copyright © 2022 IOT. All rights reserved. | |||||
// | |||||
#import <Foundation/Foundation.h> | |||||
NS_ASSUME_NONNULL_BEGIN | |||||
@interface ELTLVModel : NSObject | |||||
@property(nonatomic, assign) UInt8 type; //T | |||||
@property(nonatomic, assign, readonly) UInt8 length; //L | |||||
@property(nonatomic, strong) NSData *value; //V | |||||
- (instancetype)initWithType:(UInt8)type; | |||||
- (instancetype)initWithType:(UInt8)type value:(NSData *)value; | |||||
//type 1 Byte lengh 1 Byte | |||||
+ (NSArray<ELTLVModel *> *)objectArrayWithData:(NSData * _Nonnull)data; | |||||
@property(nonatomic, strong, readonly) NSData *data; | |||||
@end | |||||
NS_ASSUME_NONNULL_END |
/** Real-time temperature(实时温度) */ | /** Real-time temperature(实时温度) */ | ||||
ThermometerBleDataType_RealtimeData = 0x02 , | ThermometerBleDataType_RealtimeData = 0x02 , | ||||
/// 6.2.2读取历史数据 | |||||
ThermometerBleDataType_GetRecordData = 0x03 , | |||||
/// 6.2.3返回历史数据 | |||||
ThermometerBleDataType_BackRecordData = 0x04 , | |||||
/// 6.2.4获取设备支持功能/返回支持功能 | |||||
ThermometerBleDataType_SupportFunction = 0x80 , | |||||
/** App release unit settings(app下发单位设置) */ | /** App release unit settings(app下发单位设置) */ | ||||
ThermometerBleDataType_AppSendUnit = 0x81 , | ThermometerBleDataType_AppSendUnit = 0x81 , | ||||
/** The MCU replies to the setting result(MCU回复设置结果) */ | /** The MCU replies to the setting result(MCU回复设置结果) */ | ||||
ThermometerBleDataType_BackSendUnit = 0x82 , | ThermometerBleDataType_BackSendUnit = 0x82 , | ||||
/// 6.2.6获取设备当前单位/返回当前单位 | |||||
ThermometerBleDataType_NowUnit = 0x83 , | |||||
/// 6.2.7获取设备测温模式/返回测试模式 | |||||
ThermometerBleDataType_GetMeasureTemMode = 0x84 , | |||||
/// 6.2.8设置设备测温模式/返回设置结果 | |||||
ThermometerBleDataType_SetMeasureTemMode = 0x85 , | |||||
/// 6.2.9获取高温报警值/返回高温报警值 | |||||
ThermometerBleDataType_GetTemAlarmValue = 0x86 , | |||||
/// 6.2.10设置高温报警值/返回结果 | |||||
ThermometerBleDataType_SetTemAlarmValue = 0x87 , | |||||
/** Error code sent on the device(设备上发错误码) */ | /** Error code sent on the device(设备上发错误码) */ | ||||
ThermometerBleDataType_DeviceBackErrorCode = 0xFF , | ThermometerBleDataType_DeviceBackErrorCode = 0xFF , | ||||
}; | }; | ||||
typedef NS_ENUM(NSInteger , ThermometerBleResultType) { | typedef NS_ENUM(NSInteger , ThermometerBleResultType) { | ||||
/** success(设置成功 )*/ | /** success(设置成功 )*/ | ||||
ThermometerBleResultType_Succeed = 0x01 , | |||||
ThermometerBleResultType_Succeed = 0x00 , | |||||
/** failure(设置失败) */ | /** failure(设置失败) */ | ||||
ThermometerBleResultType_Failure , | ThermometerBleResultType_Failure , | ||||
/** unsupport(不支持设置) */ | /** unsupport(不支持设置) */ | ||||
ThermometerBleErrorCode_Failure , | ThermometerBleErrorCode_Failure , | ||||
}; | }; | ||||
/// 设备类型 | |||||
typedef NS_ENUM(NSInteger, ThermometerBleDevType) { | |||||
/// 体温贴等连续测温设备 | |||||
ThermometerBleDevType_Continuous = 0 , | |||||
/// 一般体温计 | |||||
ThermometerBleDevType_Normal = 1 , | |||||
/// 基础体温计 | |||||
ThermometerBleDevType_Base = 2 , | |||||
}; | |||||
/// 设备功能枚举定义 | |||||
typedef NS_ENUM(NSInteger, ThermometerBleSupportFunction) { | |||||
/// 单次/连续 测温切换 | |||||
ThermometerBleSupportFunction_Once_Repeatedly = 0 , | |||||
/// 单位切换 | |||||
ThermometerBleSupportFunction_Unit = 1 , | |||||
/// 设置高温报警值 | |||||
ThermometerBleSupportFunction_TemAlarm = 2 , | |||||
/// 历史数据 | |||||
ThermometerBleSupportFunction_Record = 3 , | |||||
}; | |||||
/// 测温模式枚举定义 | |||||
typedef NS_ENUM(NSInteger, ThermometerBleMeasureTemMode) { | |||||
/// 单次测量 | |||||
ThermometerBleMeasureTemMode_Once = 0x00 , | |||||
/// 连续测量 | |||||
ThermometerBleMeasureTemMode_Repeatedly = 0x01 , | |||||
}; | |||||
/// 体温计蓝牙代理方法 | |||||
@protocol ELThermometerBleDelegate <NSObject> | @protocol ELThermometerBleDelegate <NSObject> | ||||
@optional | @optional | ||||
- (void)thermometerManagerBackDeviceErrorCode:(ThermometerBleErrorCode )code; | - (void)thermometerManagerBackDeviceErrorCode:(ThermometerBleErrorCode )code; | ||||
/// 返回历史记录数据 | |||||
/// @param all 历史数据总条数 | |||||
/// @param nowSend 此次发送的条数 | |||||
/// @param list 体温计模型列表 | |||||
- (void)thermometerManagerRecordDataListWithAllNum:(long long)all nowSendNum:(long long)nowSend recordList:(NSArray<ELThermometerBleModel *> *)list; | |||||
/// 返回设备支持功能 | |||||
/// @param type 设备类型 | |||||
/// @param list 支持功能列表,内容为 ThermometerBleSupportFunction | |||||
- (void)thermometerManagerSupportFunctionWithDevType:(enum ThermometerBleDevType)type supportList:(NSArray<NSNumber *> *)list; | |||||
/// 返回设备当前单位 | |||||
/// @param unit 单位 | |||||
- (void)thermometerManagerDevUnit:(enum ELDeviceTemperatureUnit)unit; | |||||
/// 返回当前测温模式 | |||||
- (void)thermometerManagerMeasureTemMode:(enum ThermometerBleMeasureTemMode)mode; | |||||
/// 返回设置测温模式结果 | |||||
- (void)thermometerManagerSetMeasureTemModeResult:(enum ThermometerBleResultType)result; | |||||
/// 返回高温报警值 | |||||
- (void)thermometerManagerHighTemAlarmValue:(ELThermometerBleModel *)model; | |||||
/// 设置高温报警值结果 | |||||
- (void)thermometerManagerSetHighTemAlarmResult:(enum ThermometerBleResultType)result; | |||||
@end | @end | ||||
@interface ELThermometerBleManager : ELBluetoothManager | @interface ELThermometerBleManager : ELBluetoothManager | ||||
+ (ELThermometerBleManager *)shareManager; | + (ELThermometerBleManager *)shareManager; | ||||
/// 读取历史数据 | |||||
/// @param count 一次传输可以接收的记录条数,根据MTU大小及单条记录占用字节数合理配置 | |||||
/// @param time 已经同步过的最后一条历史数据的Unix时间戳(小端序),未同步过历史数据,发0 | |||||
- (void)getRecordDataWithMaxCount:(NSInteger)count timeStamp:(long long)time; | |||||
/// 获取设备支持功能 | |||||
- (void)getSupportFunction; | |||||
/** App release unit settings(app下发单位设置 )*/ | /** App release unit settings(app下发单位设置 )*/ | ||||
- (void)changeThermometerUnit:(ELDeviceTemperatureUnit )unit; | |||||
- (void)changeThermometerUnit:(ELDeviceTemperatureUnit)unit; | |||||
/// 获取设备当前单位 | |||||
- (void)getNowUnit; | |||||
/// 获取设备测温模式 | |||||
- (void)getMeasureTemMode; | |||||
/// 设置设备测温模式 | |||||
/// @param mode 模式 | |||||
- (void)setMeasureTemMode:(enum ThermometerBleMeasureTemMode)mode; | |||||
/// 获取高温报警值 | |||||
- (void)getHighTemAlarmValue; | |||||
/// 设置高温报警值 | |||||
/// @param model 不需要设置时间字段和dataType | |||||
- (void)setHighTemAlarmValue:(ELThermometerBleModel *)model; | |||||
@end | @end | ||||
@property (nonatomic,assign) ELDeviceTemperatureUnit unit;//单位 | @property (nonatomic,assign) ELDeviceTemperatureUnit unit;//单位 | ||||
@property (nonatomic,assign) NSUInteger temperature;//温度 | @property (nonatomic,assign) NSUInteger temperature;//温度 | ||||
///Stability flag: 0 real-time data, 1 stable data(稳定标志:0 实时数据,1 稳定数据) | |||||
/// Stability flag: 0 real-time data, 1 stable data(稳定标志:0 实时数据,1 稳定数据) | |||||
@property (nonatomic,assign) BOOL dataType; | @property (nonatomic,assign) BOOL dataType; | ||||
@property (nonatomic,copy) NSString *unitStr; | @property (nonatomic,copy) NSString *unitStr; | ||||
@property (nonatomic,assign) NSInteger tempPoint; //小数点偏移位置 | @property (nonatomic,assign) NSInteger tempPoint; //小数点偏移位置 | ||||
/// 数据时间戳 | |||||
@property (nonatomic, assign) long long timeStamp; | |||||
@end | @end | ||||
NS_ASSUME_NONNULL_END | NS_ASSUME_NONNULL_END |
// | |||||
// ELThermometerDisposeDataTool.h | |||||
// Elink | |||||
// | |||||
// Created by cliCk on 2019/5/28. | |||||
// Copyright © 2019 iot_iMac. All rights reserved. | |||||
// | |||||
#import "ELBleDisposeDataTool.h" | |||||
#import "ELThermometerBleModel.h" | |||||
NS_ASSUME_NONNULL_BEGIN | |||||
@interface ELThermometerDisposeDataTool : ELBleDisposeDataTool | |||||
/** 温度数据 */ | |||||
+ (ELThermometerBleModel *)disposeData:(Byte *)dataByte; | |||||
@end | |||||
NS_ASSUME_NONNULL_END |
/// @param workPhase Work stage information(工作阶段信息) | /// @param workPhase Work stage information(工作阶段信息) | ||||
- (void)toothbrushReceiveWorkPhase:(ToothBrushWorkPhase)workPhase; | - (void)toothbrushReceiveWorkPhase:(ToothBrushWorkPhase)workPhase; | ||||
/** 0xFC 针对当前刷牙时间新增的上报工作状态 */ | |||||
- (void)toothbrushReceiveNewWorkPhase:(ToothBrushNewWorkPhase)workPhase; | |||||
/// Recall the data of manually set gear(回调手动设置档位的数据) | /// Recall the data of manually set gear(回调手动设置档位的数据) | ||||
/// @param custom data(数据) | /// @param custom data(数据) | ||||
- (void)toothbrushReceiveCustomData:(ToothbrushCustomData)custom; | - (void)toothbrushReceiveCustomData:(ToothbrushCustomData)custom; | ||||
- (void)toothbrushtReceiveToothbrushOfflineDataCount:(unsigned char)count result:(unsigned char)result; | - (void)toothbrushtReceiveToothbrushOfflineDataCount:(unsigned char)count result:(unsigned char)result; | ||||
/** 回复离线历史记录数据发送状态 */ | |||||
- (void)toothbrushReceiveRecordDataStatus:(enum ToothbrushOfflineRecrodStatusType)status; | |||||
/** MCU replies to the result of setting the ip address (MCU回复设置ip地址结果 ) | /** MCU replies to the result of setting the ip address (MCU回复设置ip地址结果 ) | ||||
* @param result : 1:成功,0:失败,2:不支持 | * @param result : 1:成功,0:失败,2:不支持 | ||||
*/ | */ | ||||
- (void)toothbrushManagerCallBackSetIPAddressResult:(NSInteger)result; | - (void)toothbrushManagerCallBackSetIPAddressResult:(NSInteger)result; | ||||
@end | @end | ||||
//APP 请求清空离线历史记录 二级指令 0x14 | //APP 请求清空离线历史记录 二级指令 0x14 | ||||
- (void)getOfflineDataClear; | - (void)getOfflineDataClear; | ||||
//APP 请求设备继续发送离线历史记录 二级指令 0x16 | |||||
- (void)getOfflineNextRecord; | |||||
//Get three-axis data(获取三轴数据) | //Get three-axis data(获取三轴数据) | ||||
- (void)getTriaxialData; | - (void)getTriaxialData; | ||||
/** 设置设备的IP地址,端口号和访问路径 */ | /** 设置设备的IP地址,端口号和访问路径 */ | ||||
- (void)setDevAccessIpAddress:(NSString *)address portNumber:(NSUInteger)portNum path:(NSString *)path; | - (void)setDevAccessIpAddress:(NSString *)address portNumber:(NSUInteger)portNum path:(NSString *)path; | ||||
/** app查询BLE工作状态 0xFC */ | |||||
- (void)getDevBleWorkState:(enum ELSupportDeviceType)cid; | |||||
@end | @end | ||||
NS_ASSUME_NONNULL_END | NS_ASSUME_NONNULL_END |
// | |||||
// ELToothbrushScoreAlgorithmTool.h | |||||
// AILinkBleSDK | |||||
// | |||||
// Created by LarryZhang on 2022/11/9. | |||||
// | |||||
#import <Foundation/Foundation.h> | |||||
NS_ASSUME_NONNULL_BEGIN | |||||
@interface ELToothbrushScoreAlgorithmTool : NSObject | |||||
//总得分 | |||||
+ (int)totalScoreDefaultTime:(int)defaultTime | |||||
totalTime:(int)totalTime | |||||
leftTime:(int)leftTime | |||||
rightTime:(int)rightTime; | |||||
//刷牙时长 | |||||
+ (int)durationScoreDefaultTime:(int)defaultTime | |||||
totalTime:(int)totalTime | |||||
leftTime:(int)leftTime | |||||
rightTime:(int)rightTime; | |||||
//刷牙范围 | |||||
+ (int)rangeScoreDefaultTime:(int)defaultTime | |||||
totalTime:(int)totalTime | |||||
leftTime:(int)leftTime | |||||
rightTime:(int)rightTime; | |||||
//刷牙均匀度 | |||||
+ (int)uniformityScoreDefaultTime:(int)defaultTime | |||||
totalTime:(int)totalTime | |||||
leftTime:(int)leftTime | |||||
rightTime:(int)rightTime; | |||||
@end | |||||
NS_ASSUME_NONNULL_END |
ToothbrushDataTypeSwitchWork_A70B = 0x0B,//Switch toothbrush(开关牙刷) | ToothbrushDataTypeSwitchWork_A70B = 0x0B,//Switch toothbrush(开关牙刷) | ||||
ToothbrushDataTypeSetTwoGearDefault_A70C = 0x0C,//Set second gear default(设置二档默认) | ToothbrushDataTypeSetTwoGearDefault_A70C = 0x0C,//Set second gear default(设置二档默认) | ||||
ToothbrushDataTypeGetTwoGearDefault_A70D = 0x0D,//Get second gear default(获取二档默认) | ToothbrushDataTypeGetTwoGearDefault_A70D = 0x0D,//Get second gear default(获取二档默认) | ||||
ToothbrushDataTypeGetTwoGearDefault_A7FC = 0xFC,//获取当前工作状态(针对获取已工作时长) | |||||
ToothbrushDataTypeToothbrushData_A7FD = 0xFD,//Brushing data(刷牙数据) | ToothbrushDataTypeToothbrushData_A7FD = 0xFD,//Brushing data(刷牙数据) | ||||
ToothbrushDataTypeReportResult_A7FE = 0xFE,//Report received data result(上报接收数据结果) | ToothbrushDataTypeReportResult_A7FE = 0xFE,//Report received data result(上报接收数据结果) | ||||
}; | }; | ||||
ToothbrushA6DataTypeOfflineDataCancel_13 = 0x13, //Cmd toothbrush offline data cancel(APP 取消接收离线历史记录 二级指令 0x13) | ToothbrushA6DataTypeOfflineDataCancel_13 = 0x13, //Cmd toothbrush offline data cancel(APP 取消接收离线历史记录 二级指令 0x13) | ||||
ToothbrushA6DataTypeOfflineDataClear_14 = 0x14, //Cmd toothbrush offline data clear(APP 请求清空离线历史记录 二级指令 0x14) | ToothbrushA6DataTypeOfflineDataClear_14 = 0x14, //Cmd toothbrush offline data clear(APP 请求清空离线历史记录 二级指令 0x14) | ||||
ToothbrushA6DataTypeOfflineData_15 = 0x15, //Data toothbrush offline data(离线历史记录数据上报给 APP 二级指令 0x15) | ToothbrushA6DataTypeOfflineData_15 = 0x15, //Data toothbrush offline data(离线历史记录数据上报给 APP 二级指令 0x15) | ||||
ToothbrushA6DataTypeGetOfflineData_16 = 0x16, //Obtain offline history records, this command is sent one by one and then sent again when offline history records are received 获取离线历史记录,该命令为逐条发送再收到离线历史记录的时候再次发送该命令 | |||||
}; | }; | ||||
ToothbrushTriaxialDirectionYRight_04 = 4,//Y axis right(Y轴朝右) | ToothbrushTriaxialDirectionYRight_04 = 4,//Y axis right(Y轴朝右) | ||||
}; | }; | ||||
/** 0x16回复命令枚举定义 */ | |||||
typedef NS_ENUM(NSInteger, ToothbrushOfflineRecrodStatusType) { | |||||
ToothbrushOfflineRecrodStatusType_DataCompleted_00 = 0x00 , //数据全部发送完成 | |||||
ToothbrushOfflineRecrodStatusType_DataAbnormal_01 = 0x01 , //数据发送异常 | |||||
ToothbrushOfflineRecrodStatusType_SendNextData_02 = 0x02 , //app通知模块可以发送下一组数据 | |||||
}; | |||||
typedef struct { | typedef struct { | ||||
int interval;//operating hours(工作时间) | int interval;//operating hours(工作时间) | ||||
ToothSupportGearType supportType;//一档、二档 | ToothSupportGearType supportType;//一档、二档 | ||||
ToothbrushWorkPhaseType workPhase; | ToothbrushWorkPhaseType workPhase; | ||||
} ToothBrushWorkPhase, ToothBrushWorkPhase; | } ToothBrushWorkPhase, ToothBrushWorkPhase; | ||||
typedef struct { | |||||
ToothbrushGearType gear; //模式 | |||||
ToothSupportGearType supportType;//档位 一档、二档 | |||||
ToothbrushWorkPhaseType workPhase; //工作阶段 | |||||
int workTime; //已工作时间 | |||||
int defaultWorktime; //默认工作时长,未获取到为FF | |||||
} ToothBrushNewWorkPhase, ToothBrushNewWorkPhase; | |||||
// | // | ||||
typedef struct { | typedef struct { | ||||
int frequency; | int frequency; | ||||
unsigned short workTime; | unsigned short workTime; | ||||
unsigned short leftTime; | unsigned short leftTime; | ||||
unsigned short rightTime; | unsigned short rightTime; | ||||
unsigned char battery; | |||||
unsigned char battery;//电池电量 | |||||
unsigned short defaultWorkTime; //默认工作总时长 | |||||
} ToothbrushOfflineData; | } ToothbrushOfflineData; | ||||
#endif /* ELToothburshHeader_h */ | #endif /* ELToothburshHeader_h */ |
// | |||||
// ELbloodPresureBleWifiDataModel.h | |||||
// AILinkBleSDK | |||||
// | |||||
// Created by iot on 2022/7/12. | |||||
// Copyright © 2022 IOT. All rights reserved. | |||||
// | |||||
#import <Foundation/Foundation.h> | |||||
#import "ELBloodBleSDKHeader.h" | |||||
NS_ASSUME_NONNULL_BEGIN | |||||
@interface ELbloodPresureBleWifiDataModel : NSObject | |||||
@property (nonatomic, copy) NSString *dia;//Diastolic blood pressure(舒张压) | |||||
@property (nonatomic, copy) NSString *sys; //Systolic blood pressure(收缩压) | |||||
@property (nonatomic, assign) int heartRate; //Heart rate(心率) | |||||
@property (nonatomic, assign) ELDeviceBloodPressureUnit unit;//单位 | |||||
@property (nonatomic, assign) int point; //小数点 | |||||
@property (nonatomic, assign) long long createTime;//时间 | |||||
@end | |||||
NS_ASSUME_NONNULL_END |
// | |||||
// ElBloodBleWifiManager.h | |||||
// AILinkBleSDK | |||||
// | |||||
// Created by iot on 2022/7/12. | |||||
// Copyright © 2022 IOT. All rights reserved. | |||||
// | |||||
#import <AILinkBleSDK/ELBluetoothManager.h> | |||||
#import "ELBloodBleSDKHeader.h" | |||||
#import "ELbloodPresureBleWifiDataModel.h" | |||||
typedef NS_ENUM(NSUInteger, ELBloodBleWifiDataType) { | |||||
ELBloodBleWifiDataTypeStableData = 0x01, //Stable data(稳定数据) | |||||
ELBloodBleWifiDataTypeRealTimeData = 0x02, //Real-time data(实时数据) | |||||
ELBloodBleWifiDataTypeSetUnit = 0x81, //App release unit settings(app 下发单位设置) | |||||
ELBloodBleWifiDataTypeSetUnitResult = 0x82, //Unit setting result(单位设置结果) | |||||
ELBloodBleWifiDataTypeInteraction = 0x83, //Interactive command(交互指令) | |||||
ELBloodBleWifiDataTypeSetSwitchVoice = 0x85, //Send voice alarm settings(下发语音报警设置) | |||||
ELBloodBleDataWifiTypeSwitchVoiceResult = 0x86, //Send voice alarm setting result(下发语音报警设置结果) | |||||
ELBloodBleWifiDataTypeFailCode = 0xFF, //Report error code(上报错误码) | |||||
}; | |||||
@protocol ELBloodBleWifiManagerDelegate <NSObject> | |||||
@optional | |||||
/** | |||||
Callback Bluetooth status(回调蓝牙状态) | |||||
@param state Bluetooth status(蓝牙状态) | |||||
*/ | |||||
-(void)bloodBleManagerUpdateBleState:(ELBluetoothState)state; | |||||
/** | |||||
Callback scanned device(回调扫描到的设备) | |||||
@param devices 设备 | |||||
*/ | |||||
-(void)bloodBleManagerScanDevices:(NSArray<ELPeripheralModel *> *_Nullable)devices; | |||||
/** | |||||
Call back real-time, stable data(回调实时、稳定数据) | |||||
@param model 数据 | |||||
@param type 类型 | |||||
*/ | |||||
-(void)bloodBleManagerReceiceTestData:(ELbloodPresureBleWifiDataModel *_Nonnull)model type:(ELBloodBleDataModelType)type; | |||||
/** | |||||
Set unit callback(设置单位回调) | |||||
@param type 结果 | |||||
*/ | |||||
-(void)bloodBleManagerReceiveSetUnitResult:(ELSetBluetoothResponseType)type; | |||||
/** | |||||
Set the interaction type(设置交互类型) | |||||
@param type 结果 | |||||
*/ | |||||
-(void)bloodBleManagerReceiveInteractionType:(ELBloodInteractionType)type; | |||||
/** | |||||
Error code sent on the device(设备上发错误码) | |||||
@param code error code(错误码) | |||||
*/ | |||||
-(void)bloodBleManagerReceiveFailCode:(ELBloodFailCode)code; | |||||
/** | |||||
Send voice alarm setting result(下发语音报警设置结果) | |||||
@param type 操作类型 | |||||
@param result 结果 | |||||
*/ | |||||
-(void)bloodBleManagerReceiveSetSwitchVoiceOperationType:(ELBloodBleSwitchVoiceType)type result:(ELSetBluetoothResponseType)result; | |||||
@end | |||||
NS_ASSUME_NONNULL_BEGIN | |||||
@class ELDeviceModel; | |||||
@interface ElBloodBleWifiManager : ELBluetoothManager | |||||
@property (nonatomic, weak) id<ELBloodBleWifiManagerDelegate> bloodDelegate; | |||||
@property (nonatomic, strong) ELDeviceModel *deviceModel; | |||||
+(instancetype)shareManager; | |||||
//Set unit(设置单位) | |||||
- (void)changeUnit:(ELDeviceBloodPressureUnit)unit; | |||||
/** | |||||
Interact with Bluetooth(与蓝牙交互) | |||||
@param type 类型 | |||||
ELBloodInteractionTypeStartTest = 0, //Start measurement(开始测量) | |||||
ELBloodInteractionTypeStopTest = 1, //Stop testing(停止测试) | |||||
ELBloodInteractionTypeBoot = 2, //Boot(开机) | |||||
ELBloodInteractionTypeShutdown = 3, //Shut down(关机) | |||||
*/ | |||||
- (void)sendInteractiveInstructions:(ELBloodInteractionType)type; | |||||
/** | |||||
Send voice alarm settings(下发语音报警设置) | |||||
@param type operation type | |||||
*/ | |||||
- (void)sendSwitchVoice:(ELBloodBleSwitchVoiceType)type; | |||||
///清除wifi记录指令 | |||||
- (void)bleWifiCleanWifiRecord; | |||||
///获取设备连接的wifi名称 | |||||
- (void)getBleLinkWifiName; | |||||
@property (nonatomic,assign) ELBluetoothState bleWifiBloodStatus; | |||||
@end | |||||
NS_ASSUME_NONNULL_END |
framework module AILinkBleSDK { | |||||
umbrella header "AILinkBleSDK-umbrella.h" | |||||
export * | |||||
module * { export * } | |||||
} |
# AILinkBleSDK - 蓝牙SDK | |||||
### 版本记录 | |||||
*ELBluetoothManager.h 文件 #define AiLinkBleSDKVersion @“1.5.1” | |||||
| 版本 | 日期 | 变更人 | 内容 | | |||||
| ------ | -------- | ------ | ---------------------------------- | | |||||
| 1.5.0 | 20221107 | larry | 同步 ailink 蓝牙代码 增加 SDK Demo | | |||||
| 1.5.1 | 20221110 | larry | 增加牙刷得分算法 | |