Kaynağa Gözat

1.Add offline history record function of blood glucose meter

2.Add configuration environment function to wifi bluetooth scale
tags/v1.4.5_20211215
王庭 3 yıl önce
ebeveyn
işleme
e6f6b4d66a

+ 4
- 4
AILinkBleSDKDemo.xcodeproj/project.pbxproj Dosyayı Görüntüle

@@ -282,12 +282,12 @@
958B4E0C263C079500476BAE /* WifiBleBodyFatScale */ = {
isa = PBXGroup;
children = (
958B4E0D263C079500476BAE /* ELBfsWifiConnectVC.h */,
958B4E0E263C079500476BAE /* ELBfsWifiConnectTableViewCell.h */,
958B4E0F263C079500476BAE /* ELBfsWifiScanVC.m */,
958B4E10263C079500476BAE /* ELBfsWifiConnectVC.m */,
958B4E11263C079500476BAE /* ELBfsWifiConnectTableViewCell.m */,
958B4E0D263C079500476BAE /* ELBfsWifiConnectVC.h */,
958B4E10263C079500476BAE /* ELBfsWifiConnectVC.m */,
958B4E12263C079500476BAE /* ELBfsWifiScanVC.h */,
958B4E0F263C079500476BAE /* ELBfsWifiScanVC.m */,
);
path = WifiBleBodyFatScale;
sourceTree = "<group>";
@@ -393,9 +393,9 @@
isa = PBXGroup;
children = (
958B4E3F263C079500476BAE /* BloodSugarConnectionViewController.h */,
958B4E40263C079500476BAE /* BloodSugarScanViewController.m */,
958B4E41263C079500476BAE /* BloodSugarConnectionViewController.m */,
958B4E42263C079500476BAE /* BloodSugarScanViewController.h */,
958B4E40263C079500476BAE /* BloodSugarScanViewController.m */,
);
path = BloodSugar;
sourceTree = "<group>";

BIN
AILinkBleSDKDemo.xcodeproj/project.xcworkspace/xcuserdata/iot_user2.xcuserdatad/UserInterfaceState.xcuserstate Dosyayı Görüntüle


BIN
AILinkBleSDKDemo/AILinkBleSDK.framework/AILinkBleSDK Dosyayı Görüntüle


+ 0
- 7
AILinkBleSDKDemo/AILinkBleSDK.framework/Headers/ELBloodSugarBleHeader.h Dosyayı Görüntüle

@@ -19,13 +19,6 @@ typedef NS_ENUM(NSUInteger, BloodSugarDeviceStatus) {
BloodSugarDeviceStatusTestComplete = 0x04, //上发数据完成,测量完成
};


typedef struct BloodSugarDataStruct{
int value; //数值
ELDeviceBloodSugarUnit unit; //单位
int point;
}BloodSugarDataStruct; //小数点

typedef NS_ENUM(NSUInteger, BloodSugarErrorCode) {
BloodSugarErrorCodeLowBattery = 0x01 ,//电池没电
BloodSugarErrorCodeUsedTestPaper = 0x02 ,//已使用过的试纸

+ 25
- 5
AILinkBleSDKDemo/AILinkBleSDK.framework/Headers/ELBloodSugarBleManager.h Dosyayı Görüntüle

@@ -11,6 +11,20 @@

NS_ASSUME_NONNULL_BEGIN

@interface BloodSugarDataStruct : NSObject

@property (nonatomic, assign) int value; //数值

@property (nonatomic, assign) enum ELDeviceBloodSugarUnit unit; //单位

@property (nonatomic, assign) int point; //小数点

@property (nonatomic, copy) NSString *timeStr; //时间 yyyy/MM/dd HH:mm:ss

@property (nonatomic, assign) int serialNumber; //小数点

@end

@protocol BloodSugarBleDelegate <NSObject>

@optional
@@ -19,8 +33,8 @@ NS_ASSUME_NONNULL_BEGIN
/// @param state 连接状态
-(void)bloodSugarBleReceiveState:(ELBluetoothState)state;

/// 附近的八电极设备
/// @param devices 八电极设备列表
/// 附近的血糖仪设备
/// @param devices 血糖仪设备列表
-(void)bloodSugarBleReceiveDevices:(NSArray<ELPeripheralModel *> *)devices;

/// 回调设备状态
@@ -29,19 +43,21 @@ NS_ASSUME_NONNULL_BEGIN

/// 回调测量结果数据
/// @param data 数据
-(void)bloodSugarBleReceiveTestData:(BloodSugarDataStruct)data;
-(void)bloodSugarBleReceiveTestData:(BloodSugarDataStruct *)data;

/// 回调设置单位的结果
/// @param result 结果
-(void)bloodSugarBleReceiveSwitchUnitResult:(ELSetBluetoothResponseType)result;

/// 上报错误码
/// @param errorCode 错误码
/// @param errorCode 错误码
-(void)bloodSugarBleReceiveErrorCode:(BloodSugarErrorCode)errorCode;

/** 设备返回历史记录 */
- (void)bloodSugarBleReceiveBackOfflineHistory:(NSArray<BloodSugarDataStruct *> *)history;

///返回原始数据
- (void)bloodSugarBleBackManufactureData:(NSData *)data;

@end


@@ -59,6 +75,10 @@ NS_ASSUME_NONNULL_BEGIN

//切换单位
-(void)bloodSugarSwitchUnit:(ELDeviceBloodSugarUnit)unit;

//App获取离线历史记录
- (void)bloodSugarGetOfflineHistory;

@end

NS_ASSUME_NONNULL_END

+ 6
- 1
AILinkBleSDKDemo/AILinkBleSDK.framework/Headers/ELBodyFatScaleBleHeader.h Dosyayı Görüntüle

@@ -29,7 +29,12 @@ typedef NS_ENUM(NSInteger , ELBodyFatScaleBleDataA6SubType) {
/** ble发给app有体脂数据的历史记录 */
ELBodyFatScaleBleDataA6SubType_BleBackHistoryWithMCUAlgorithm = 0x06 ,
/** ble发给app无体脂数据的历史记录,app需要根据vip/pid确定使用哪种算法来计算8项体脂数据 */
ELBodyFatScaleBleDataA6SubType_BleBackHistoryWithAppAlgorithm = 0x07
ELBodyFatScaleBleDataA6SubType_BleBackHistoryWithAppAlgorithm = 0x07,
/** App设置访问的IP地址 */
ELBodyFatScaleBleDataA6SubType_AppSetDevIpAddress = 0x8B ,
/** App设置访问的路径 */
ELBodyFatScaleBleDataA6SubType_AppSetDevPath = 0x96 ,
};


+ 8
- 0
AILinkBleSDKDemo/AILinkBleSDK.framework/Headers/ELBodyFatScaleBleManager.h Dosyayı Görüntüle

@@ -104,6 +104,12 @@ MCU requests user information( MCU 请求用户信息)
@param bodyModel 体脂数据
*/
-(void)bodyFatScaleManagerCallBackBleUserHistoryDataModel:(ELBodyFatScaleBleUserModel *)user bodyDataModel:(ELBodyFatScaleBleWeightModel *)bodyModel;

/** MCU replies to the result of setting the ip address (MCU回复设置ip地址结果 )
* @param result : 1:成功,0:失败,2:不支持
*/
- (void)bodyFatScaleManagerCallBackSetIPAddressResult:(NSInteger)result;

@end


@@ -130,6 +136,8 @@ MCU requests user information( MCU 请求用户信息)

-(void)sendCmd_RequestHistory;

/** 设置设备的IP地址和访问路径 */
- (void)setDevAccessIpAddress:(NSString *)address path:(NSString *)path;

@end


+ 21
- 2
AILinkBleSDKDemo/AILinkBleSDK.framework/Headers/ELHeightBodyFatScaleBleHeader.h Dosyayı Görüntüle

@@ -48,12 +48,17 @@ typedef NS_ENUM (NSInteger, HeightBodyFatScale_BleHeadType){
/** MCU 上报体脂数据 */
HeightBodyFatScale_BleHeadType_MCU_ReportBodyFatData = 0x15 ,
/** MCU 上报抱婴模式的重状态 */
/** MCU 上报抱婴模式的重状态 */
HeightBodyFatScale_BleHeadType_MCU_ReportBabyWeighingState = 0x20 ,
/** MCU 上报体重模式的重状态 */
/** MCU 上报体重模式的重状态 */
HeightBodyFatScale_BleHeadType_MCU_ReportBodyWeighingState = 0x30 ,
/** MCU 上报体重身高模式的称重状态 */
HeightBodyFatScale_BleHeadType_MCU_ReportWeightHeightWeightState = 0x40 ,
/** MCU 上报体重身高模式的身高数据 */
HeightBodyFatScale_BleHeadType_MCU_ReportWeightHeightHeightState = 0x41 ,
/** MCU 发送测量完成 */
HeightBodyFatScale_BleHeadType_MCU_SendWeighingCompleted = 0x80 ,
/** APP 回复测量完成 */
@@ -82,6 +87,8 @@ typedef NS_ENUM(NSInteger, HeightBodyFatScale_WorkModeType) {
HeightBodyFatScale_WorkModeType_BabyMode = 0x02 ,
/** 体重模式 */
HeightBodyFatScale_WorkModeType_WeightMode = 0x03 ,
/** 体重身高模式 */
HeightBodyFatScale_WorkModeType_WeightHeightMode = 0x04 ,
};

/** 身高体脂秤充电状态枚举定义 */
@@ -150,4 +157,16 @@ typedef NS_ENUM(NSInteger, HeightBodyFatScale_HeartRateStateType) {
HeightBodyFatScale_HeartRateStateType_Failed = 0x03 ,
};

/** 肥胖等级枚举定义 */
typedef NS_ENUM(NSInteger, HeightBodyFatScale_ObesityGrade) {
/** 瘦 */
HeightBodyFatScale_ObesityGrade_Thin = 0x00 ,
/** 健康 */
HeightBodyFatScale_ObesityGrade_Health = 0x01 ,
/** 肥胖 */
HeightBodyFatScale_ObesityGrade_Obesity = 0x02 ,
/** 超标 */
HeightBodyFatScale_ObesityGrade_Exceeding = 0x03 ,
};

#endif /* ELHeightBodyFatScaleBleHeader_h */

+ 14
- 2
AILinkBleSDKDemo/AILinkBleSDK.framework/Headers/ELHeightBodyFatScaleBleManager.h Dosyayı Görüntüle

@@ -25,7 +25,7 @@ NS_ASSUME_NONNULL_BEGIN
/** 回调扫描到的身高体脂秤 */
- (void)heightBodyFatScaleManagerScanDevices:(NSArray<ELPeripheralModel *> *)scanDevices;

/** 回调用户信息结果 */
/** 回调用户信息设置结果 */
- (void)heightBodyFatScaleManagerSetUserDataResult:(HeightBodyFatScale_SetupResult)result;

/** MCU主动请求用户信息 */
@@ -98,7 +98,16 @@ NS_ASSUME_NONNULL_BEGIN
#pragma mark - 体重模式

/** MCU上报称重状态 */
- (void)heightBodyFatScaleManagerReportWeightModeWithWeighingState:(HeightBodyFatScale_WeightStableType)stable weightNumber:(NSInteger)weight point:(NSInteger)point unit:(NSInteger)unit;
- (void)heightBodyFatScaleManagerReportWeightModeWithWeighingState:(HeightBodyFatScale_WeightStableType)stable weightNumber:(NSInteger)weight point:(NSInteger)point unit:(ELDeviceWeightUnit)unit;

#pragma mark - 体重身高模式

/** MCU上报称重状态 */
- (void)heightBodyFatScaleManagerReportWeightHeightModeWithWeighingState:(HeightBodyFatScale_WeightStableType)stable weightNumber:(NSInteger)weight point:(NSInteger)point unit:(ELDeviceWeightUnit)unit;

/** MCU上报身高数据 */
- (void)heightBodyFatScaleManagerReportWeightHeightMOdeWithHeightNumber:(NSInteger)height point:(NSInteger)point unit:(ELDeviceHeightUnit)unit;


#pragma mark -

@@ -139,6 +148,9 @@ NS_ASSUME_NONNULL_BEGIN
//App回复测量完成
- (void)sendWeighingCompleted;

//MARK:A6指令


@end

NS_ASSUME_NONNULL_END

+ 5
- 0
AILinkBleSDKDemo/AILinkBleSDK.framework/Headers/ELSDKHeader.h Dosyayı Görüntüle

@@ -51,9 +51,11 @@ typedef NS_ENUM(NSUInteger, ELInetGetCmdType) {
ELInetGetCmdTypeBleWifiGetWifiMac = 0x85, //Get Wifi Mac address(获取Wifi的Mac地址)
ELInetGetCmdTypeBleWifiGetWifiPwd = 0x87, //Get Wifi password(获取Wifi密码)
ELInetGetCmdTypeBleWifiGetDTIMInterval = 0x8A, //Get DTIM interval(获取DTIM间隔)
ELInetGetCmdTypeBleWifiSetIpAddress = 0x8B, //Set the access ip address(设置访问的ip地址
ELInetGetCmdTypeBleWifiGetURL = 0x8C, //Get visited sites(获取访问的网站)
ELInetGetCmdTypeBleWifiGetPort = 0x8E, //Get access port number(获取访问的端口号)
ELInetGetCmdTypeBleWifiGetSNNumber = 0x93, //Get SN number (session code:deviceId)(获取SN号(会话码:设备ID))
ELInetGetCmdTypeBleWifiSetPathAddress = 0x96, //Set access path(设置访问的路径
#pragma mark ============End 蓝牙Wifi ==============
ELInetGetCmdTypeRequestAuthorize = 0x7F, //Request device authorization (请求设备授权)
ELInetGetCmdTypeToothbrushA6Data = 0xC0, //A6 data for toothbrush(牙刷专用A6数据,详情请见协议的2级指令)(See the second order for details)
@@ -126,6 +128,9 @@ typedef NS_ENUM(NSUInteger, ELSupportDeviceType) {
ELSupportDeviceTypeElectricScooter= 0x0025 , //滑板车
ELSupportDeviceTypeHeightBodyFatScale = 0x0026 , //身高体脂秤
ELSupportDeviceTypeBLEToothbrush = 0x002D, //Bluetooth toothbrush(蓝牙牙刷)
ELSupportDeviceTypeHygrothermograph = 0x002E , //温湿度计
ELSupportDeviceTypeBroadcastScale = (0xffff +0x01) , //655536 Broadcast body fat scale(AILink广播体脂秤)
ELSupportDeviceTypeBroadcastHeightGauge = (0xffff + 0x03) , //65538 广播身高仪
ELSupportDeviceTypeBroadcastScale_Lingyang = (0xffff +0x16) , //65557 凌阳广播体脂秤

BIN
AILinkBleSDKDemo/AILinkBleSDK.framework/_CodeSignature/CodeDirectory Dosyayı Görüntüle


BIN
AILinkBleSDKDemo/AILinkBleSDK.framework/_CodeSignature/CodeRequirements-1 Dosyayı Görüntüle


+ 21
- 21
AILinkBleSDKDemo/AILinkBleSDK.framework/_CodeSignature/CodeResources Dosyayı Görüntüle

@@ -42,11 +42,11 @@
</data>
<key>Headers/ELBloodSugarBleHeader.h</key>
<data>
sSSl1XdvJ7StT2NBA3UwRBA7n2s=
lIkbdOJll0FQgT65/NYtW+cTbgQ=
</data>
<key>Headers/ELBloodSugarBleManager.h</key>
<data>
/JDO/VrHWGMvmkaxB8nxfWrXLTI=
veWCh0LVuaCYI+FB/l8Eo9mlIhI=
</data>
<key>Headers/ELBluetoothManager.h</key>
<data>
@@ -54,11 +54,11 @@
</data>
<key>Headers/ELBodyFatScaleBleHeader.h</key>
<data>
K10MLRjyNYPq98CurWPiRMoM0BI=
jlxGP9vO41F6PqO6FAI7ja4dXFg=
</data>
<key>Headers/ELBodyFatScaleBleManager.h</key>
<data>
BeGOGJp5msQyFf2irm+GSbOSLlc=
gr3jUgMdb8tSM/vaeHNwBFZ5c/Y=
</data>
<key>Headers/ELBodyFatScaleBleUserModel.h</key>
<data>
@@ -130,11 +130,11 @@
</data>
<key>Headers/ELHeightBodyFatScaleBleHeader.h</key>
<data>
HlGAfQhXEtU+dRo/+lrZPVNjwrk=
YfZD1pU/v7ZrO8lbS/7E4NVP99k=
</data>
<key>Headers/ELHeightBodyFatScaleBleManager.h</key>
<data>
g6oaAeou11NxI7e5Q2pkAfnrzng=
cvHHPHQeMSDSPb8qXS3ilIBNfJM=
</data>
<key>Headers/ELHeightGaugeBleDataModel.h</key>
<data>
@@ -178,7 +178,7 @@
</data>
<key>Headers/ELSDKHeader.h</key>
<data>
JfsXaP1W7EOC7kQfzf8u+nTJt/E=
7a71hKtsRfCN0UJPOE3j3NRVmZs=
</data>
<key>Headers/ELTempAlgorithmusModel.h</key>
<data>
@@ -334,22 +334,22 @@
<dict>
<key>hash</key>
<data>
sSSl1XdvJ7StT2NBA3UwRBA7n2s=
lIkbdOJll0FQgT65/NYtW+cTbgQ=
</data>
<key>hash2</key>
<data>
i2pc7K838/njJA50EWsu8/Pkw23P1RyBp7Oqlui5XJg=
UggJtOBb4+1qKP2APQ1YHSCOJ2tnEL1Lhl29vIiLgbM=
</data>
</dict>
<key>Headers/ELBloodSugarBleManager.h</key>
<dict>
<key>hash</key>
<data>
/JDO/VrHWGMvmkaxB8nxfWrXLTI=
veWCh0LVuaCYI+FB/l8Eo9mlIhI=
</data>
<key>hash2</key>
<data>
3FVhuleEqCZXSdsFd5XIyo+fvq6CXLsC8g9GspAyqm0=
Ctd6AAT7YXzrnTfVk49hr5tr77Pj5e4jcDW8qd8K56s=
</data>
</dict>
<key>Headers/ELBluetoothManager.h</key>
@@ -367,22 +367,22 @@
<dict>
<key>hash</key>
<data>
K10MLRjyNYPq98CurWPiRMoM0BI=
jlxGP9vO41F6PqO6FAI7ja4dXFg=
</data>
<key>hash2</key>
<data>
NA+FRVsNPBLWRjAhMxRcDX2YCcywzySkkl0cx4Unydk=
hm4hR8NWmn8ZAD4ctVOyKl94c0jQq32T7ZnQLMyxuJc=
</data>
</dict>
<key>Headers/ELBodyFatScaleBleManager.h</key>
<dict>
<key>hash</key>
<data>
BeGOGJp5msQyFf2irm+GSbOSLlc=
gr3jUgMdb8tSM/vaeHNwBFZ5c/Y=
</data>
<key>hash2</key>
<data>
oclJGvuf9bz7A0qlBHG6AeXEMDyGjpxqI0HxY4k0qVk=
RXzOMSdbWbti3AaIAjxTUBqr/ivyklk0RsHdpeMeMco=
</data>
</dict>
<key>Headers/ELBodyFatScaleBleUserModel.h</key>
@@ -576,22 +576,22 @@
<dict>
<key>hash</key>
<data>
HlGAfQhXEtU+dRo/+lrZPVNjwrk=
YfZD1pU/v7ZrO8lbS/7E4NVP99k=
</data>
<key>hash2</key>
<data>
NsQJeOD7t6f2k6nEpak8lv+7FoiEyN68V44TCeGaqPE=
TyaRdyCWVWfs/0xlflpsOX7OJuqwtzth2rBQNXFcnuQ=
</data>
</dict>
<key>Headers/ELHeightBodyFatScaleBleManager.h</key>
<dict>
<key>hash</key>
<data>
g6oaAeou11NxI7e5Q2pkAfnrzng=
cvHHPHQeMSDSPb8qXS3ilIBNfJM=
</data>
<key>hash2</key>
<data>
CjxxULrU/+jYzOao//5Z+uZvwQU7rD8mUsbwHHum/YU=
o4g2m7SvOCyo9+uTqTMoFX/K2LZeynD/zqrazRwQabo=
</data>
</dict>
<key>Headers/ELHeightGaugeBleDataModel.h</key>
@@ -708,11 +708,11 @@
<dict>
<key>hash</key>
<data>
JfsXaP1W7EOC7kQfzf8u+nTJt/E=
7a71hKtsRfCN0UJPOE3j3NRVmZs=
</data>
<key>hash2</key>
<data>
wmnQ8qhdR2JYfQOpjA3kMuWE0JFM1AdmSPKvWg+PXyo=
SqmjyQiZ5DI7DsKqi0cSjBEPKDvyscuScdTmFXOHN9c=
</data>
</dict>
<key>Headers/ELTempAlgorithmusModel.h</key>

BIN
AILinkBleSDKDemo/AILinkBleSDK.framework/_CodeSignature/CodeSignature Dosyayı Görüntüle


+ 1
- 1
AILinkBleSDKDemo/BloodSugar/BloodSugarConnectionViewController.m Dosyayı Görüntüle

@@ -151,7 +151,7 @@
}
}

- (void)bloodSugarBleReceiveTestData:(BloodSugarDataStruct)data {
- (void)bloodSugarBleReceiveTestData:(BloodSugarDataStruct *)data {
NSString *unit = [NSString string];
if (data.unit == ELDeviceBloodSugarUnit_mmol_L) {
unit = @"mmol/L";

+ 307
- 188
AILinkBleSDKDemo/WifiBleBodyFatScale/ELBfsWifiConnectVC.m Dosyayı Görüntüle

@@ -20,6 +20,8 @@

@property (nonatomic, strong) UITextView *textView;

@property (nonatomic, strong) UIButton *changeIpBtn;

@end

@implementation ELBfsWifiConnectVC
@@ -48,6 +50,44 @@
[self addLog:@"Disconnected"];
return;
}
switch (sender.tag) {
case 1: {
//获取BM Version
[[ELBodyFatScaleBleManager shareManager] getBluetoothInfoWithELInetGetCmdType:ELInetGetCmdTypeGetBMVersion];
}
break;
case 2: {
//Get CVP ID
[self addLog:[NSString stringWithFormat:@"Cid:%zd, Vid:%zd, Pid:%zd",self.p.deviceType,self.p.vendorID,self.p.productID]];
}
break;
case 3: {
//Get Name
[self addLog:[NSString stringWithFormat:@"DeviceName:%@",self.p.deviceName]];
}
break;
case 4: {
//Set name
[[ELBodyFatScaleBleManager shareManager] setBluetoothName:@"Ailink_Dev"];
}
break;
case 5: {
//Change unit
if (sender.selected) {
[[ELBodyFatScaleBleManager shareManager] changeBodyFatScaleUnit:ELDeviceWeightUnit_LB];
[self addLog:@"set lb unit"];
} else {
[[ELBodyFatScaleBleManager shareManager] changeBodyFatScaleUnit:ELDeviceWeightUnit_KG];
[self addLog:@"set kg unit"];
}
sender.selected = !sender.selected;
}
break;
default:
break;
}
[self addLog:sender.titleLabel.text];
}

@@ -62,7 +102,7 @@
// [self.view addSubview:button1];
// [button1 mas_makeConstraints:^(MASConstraintMaker *make) {
// make.left.mas_equalTo(10);
// make.top.mas_equalTo(80);
// make.top.mas_equalTo(85);
// make.width.mas_equalTo(100);
// make.height.mas_equalTo(40);
// }];
@@ -77,7 +117,7 @@
// [self.view addSubview:button2];
// [button2 mas_makeConstraints:^(MASConstraintMaker *make) {
// make.left.equalTo(button1.mas_right).mas_offset(10);
// make.top.mas_equalTo(80);
// make.top.mas_equalTo(85);
// make.width.mas_equalTo(100);
// make.height.mas_equalTo(40);
// }];
@@ -92,7 +132,7 @@
// [self.view addSubview:button3];
// [button3 mas_makeConstraints:^(MASConstraintMaker *make) {
// make.left.equalTo(button2.mas_right).mas_offset(10);
// make.top.mas_equalTo(80);
// make.top.mas_equalTo(85);
// make.width.mas_equalTo(100);
// make.height.mas_equalTo(40);
// }];
@@ -111,21 +151,23 @@
// make.width.mas_equalTo(100);
// make.height.mas_equalTo(40);
// }];
//
// UIButton *button5 = [UIButton buttonWithType:(UIButtonTypeCustom)];
// [button5 setTitle:@"Change unit" forState:(UIControlStateNormal)];
// button5.tag = 5;
// button5.titleLabel.adjustsFontSizeToFitWidth = YES;
// button5.titleLabel.numberOfLines = 2;
// button5.backgroundColor = [UIColor blackColor];
// [button5 addTarget:self action:@selector(buttonAction:) forControlEvents:(UIControlEventTouchUpInside)];
// [self.view addSubview:button5];
// [button5 mas_makeConstraints:^(MASConstraintMaker *make) {
UIButton *button5 = [UIButton buttonWithType:(UIButtonTypeCustom)];
[button5 setTitle:@"Change unit" forState:(UIControlStateNormal)];
button5.tag = 5;
button5.titleLabel.adjustsFontSizeToFitWidth = YES;
button5.titleLabel.numberOfLines = 2;
button5.backgroundColor = [UIColor blackColor];
[button5 addTarget:self action:@selector(buttonAction:) forControlEvents:(UIControlEventTouchUpInside)];
[self.view addSubview:button5];
[button5 mas_makeConstraints:^(MASConstraintMaker *make) {
// make.left.equalTo(button4.mas_right).mas_offset(10);
// make.top.equalTo(button1.mas_bottom).mas_offset(10);
// make.width.mas_equalTo(100);
// make.height.mas_equalTo(40);
// }];
make.left.offset(10);
make.top.offset(90);
make.width.mas_equalTo(100);
make.height.mas_equalTo(40);
}];
//
self.textView = [[UITextView alloc] init];
self.textView.backgroundColor = [UIColor blackColor];
@@ -138,13 +180,36 @@
make.height.mas_equalTo(300);
}];
self.changeIpBtn = [[UIButton alloc] init];
[self.changeIpBtn setTitle:@"Switch to the test environment" forState:UIControlStateNormal];
[self.changeIpBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
[self.changeIpBtn setTitle:@"Switch to the formal environment" forState:UIControlStateSelected];
[self.changeIpBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateSelected];
self.changeIpBtn.adjustsImageWhenHighlighted = YES;
self.changeIpBtn.backgroundColor = [UIColor blackColor];
self.changeIpBtn.titleLabel.font = [UIFont systemFontOfSize:13];
self.changeIpBtn.titleLabel.numberOfLines = 2;
[self.changeIpBtn addTarget:self action:@selector(changeDevIpAddress:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:self.changeIpBtn];
[self.changeIpBtn mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(button5.mas_right).mas_offset(10);
make.centerY.equalTo(button5.mas_centerY);
make.width.mas_equalTo(120);
make.height.mas_equalTo(40);
// make.left.offset(20);
// make.top.offset(100);
// make.size.mas_equalTo(CGSizeMake(120, 30));
}];
self.tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStyleGrouped];
self.tableView.delegate = self;
self.tableView.dataSource = self;
[self.view addSubview:self.tableView];
[self.tableView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.right.offset(0);
make.top.offset(100);
make.top.equalTo(self.changeIpBtn.mas_bottom).offset(15);
make.bottom.equalTo(self.textView.mas_top).offset(-20);
}];
}
@@ -240,7 +305,7 @@
//MARK:回调Wifi列表
-(void)bleWifiReceiveWifiDetailModel:(ELBleWifiDetailModel *)model{
//用一个tableview显示喽
[self addLog:[NSString stringWithFormat:@"wifi类型---%lu 名称---%@ 连接状态--%zd",(unsigned long)model.wifiState,model.wifiName,model.wifiState]];
[self addLog:[NSString stringWithFormat:@"wifi type---%lu name---%@ link state--%zd",(unsigned long)model.wifiState,model.wifiName,model.wifiState]];
// MARK:3.WiFi配置得到Wifi列表
if (model.wifiName.length > 0) {
[self.dataSource addObject:model];
@@ -301,6 +366,14 @@
return self.dataSource.count;
}

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
return 0.f;
}

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
return nil;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *cellId = @"ELBfsWifiConnectTableViewCell";
ELBfsWifiConnectTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellId];
@@ -347,6 +420,48 @@
[self presentViewController:alert animated:YES completion:nil];
}

#pragma mark - 切换秤环境

static NSString *formalAddress = @"http://ailink.iot.aicare.net.cn";
static NSString *testAddress = @"http://test.ailink.revice.aicare.net.cn";
static NSString *pathURL = @"/devivce/serverRedirect/";

- (void)changeDevIpAddress:(UIButton *)sender {
// if ([self.title isEqualToString:@"Connected"]) {
if (sender.selected) {
//切换到生产环境
[[ELBodyFatScaleBleManager shareManager] setDevAccessIpAddress:formalAddress path:pathURL];
[self addLog:@"Start to configure as a production environment(开始配置为生产环境"];
} else {
//切到测试环境
[[ELBodyFatScaleBleManager shareManager] setDevAccessIpAddress:testAddress path:pathURL];
// [[ELBodyFatScaleBleManager shareManager] setDevAccessIpAddress:@"ABCD1234567890" path:pathURL];
[self addLog:@"Start to configure as a test environment(开始配置为测试环境"];
}
// sender.selected = !sender.selected;
// } else {
// [self addLog:@"当前设备未连接"];
// }
}

/** 返回ip地址配置结果 */
- (void)bodyFatScaleManagerCallBackSetIPAddressResult:(NSInteger)result {
NSString *resultStr = @"";
if (result == 0) {
//失败
resultStr = @"Environment configuration failed(环境配置失败";
} else if (result == 1) {
//成功
resultStr = @"Environment configuration is successful(环境配置成功";
self.changeIpBtn.selected = !self.changeIpBtn.selected;
} else {
//不支持
resultStr = @"The current device does not support environment configuration(当前设备不支持环境配置";
}
[self addLog:resultStr];
}


#pragma mark -

@@ -355,142 +470,150 @@
[[ELBodyFatScaleBleManager shareManager] disconnectPeripheral];
}



#pragma mark ============ 如下是蓝牙交互部分,wifi不用管 ==============

//
///**
// MCU requests user information( MCU 请求用户信息)
//
// @param status 请求状态
// */
//- (void)bodyFatScaleManagerMCURequestAppUserInfoType:(BodyFatScaleMCURequestUserInfoStatus)status{
// if (status == BodyFatScaleMCURequestUserInfoStatus_Get) {
// //下发当前用户给秤
// [[ELBodyFatScaleBleManager shareManager] sendCurrentUserToBle:[self getOneUser]];
// }else if (status == BodyFatScaleMCURequestUserInfoStatus_Success){
// [self addLog:@"MCU requests user information success"];
// }else if (BodyFatScaleMCURequestUserInfoStatus_Fail){
// [self addLog:@"MCU requests user information failure"];
// }
//
//}
//
//
///**
// Return weight and body fat model(返回重量及体脂model)
// */
//-(void)bodyFatScaleManagerCallBackWeight:(ELBodyFatScaleBleWeightModel *)weightModel state:(BodyFatScaleMeasureStatus)status{
// switch (status) {
// case BodyFatScaleMeasureStatus_Unstable:
// {
// [self addLog:[NSString stringWithFormat:@"Unstable data weight = %ld unit = %@ point = %ld adc = %ld",weightModel.weight,AiLinkBleWeightUnitDic[@(weightModel.weightUnit)],weightModel.weightPoint,weightModel.adc]];
// }
// break;
// case BodyFatScaleMeasureStatus_Stable:
// {
// [self addLog:[NSString stringWithFormat:@"Stable data weight = %ld unit = %@ point = %ld adc = %ld",weightModel.weight,AiLinkBleWeightUnitDic[@(weightModel.weightUnit)],weightModel.weightPoint,weightModel.adc]];
// }
// break;
// case BodyFatScaleMeasureStatus_Failed:
// {
// [self addLog:@"Test failure"];
// }
// break;
// case BodyFatScaleMeasureStatus_Complete:
// {
// [self addLog:[NSString stringWithFormat:@"Tested weight = %ld unit = %@ point = %ld adc = %ld",weightModel.weight,AiLinkBleWeightUnitDic[@(weightModel.weightUnit)],weightModel.weightPoint,weightModel.adc]];
//
// //更新用户信息给秤
// [[ELBodyFatScaleBleManager shareManager] sendCurrentUserToBle:[self getOneUser]];
// //下发用户列表
// [[ELBodyFatScaleBleManager shareManager] sendOfflineUserListToBle:[self get8Users]];
// }
// break;
// default:
// break;
// }
//}
//
//
///**
// Return temperature (unit: ° C)(返回温度(单位:°C))
//
// @param temp 温度(单位:°C)
// */
//-(void)bodyFatScaleManagerCallBackTemp:(NSString *)temp{
// [self addLog:[NSString stringWithFormat:@"temperature is %@",temp]];
//}
//
///**
// Back to impedance measurement(返回阻抗测量)
//
// @param status 阻抗测量状态
// @param adc 阻抗
// */
//-(void)bodyFatScaleManagerCallBackAdcMeasureStatus:(BodyFatScaleAdcMeasureStatus)status adcValue:(NSInteger)adc{
// switch (status) {
// case BodyFatScaleAdcMeasureStatus_Testing:
// {
// [self addLog:@"adc testing"];
// }
// break;
// case BodyFatScaleAdcMeasureStatus_Success:
// {
// [self addLog:[NSString stringWithFormat:@"adc is %ld",adc]];
// }
// break;
// case BodyFatScaleAdcMeasureStatus_Fail:
// {
// [self addLog:@"adc test failure"];
// }
// break;
// case BodyFatScaleAdcMeasureStatus_SuccessCustom:
// {
// [self addLog:[NSString stringWithFormat:@"adc is %ld and user app algum",adc]];
// }
// break;
// default:
// break;
// }
//}
//
///**
// Callback heart rate measurement(回调心率测量)
//
// @param status 心率测量状态
// @param heartRate 心率
// */
//-(void)bodyFatScaleManagerCallBackHeartRateMeasureStatus:(BodyFatScaleHeartRateMeasureStatus)status heartRateValue:(NSInteger)heartRate{
// switch (status) {
// case BodyFatScaleHeartRateMeasureStatus_Testing:
// {
// [self addLog:@"Heart Rate Testing"];
// }
// break;
// case BodyFatScaleHeartRateMeasureStatus_Success:
// {
// [self addLog:[NSString stringWithFormat:@"Heart Rate is %ld",heartRate]];
// }
// break;
// case BodyFatScaleHeartRateMeasureStatus_Fail:
// {
// [self addLog:@"Heart Rate Test failure"];
// }
// break;
// default:
// break;
// }
//}
//
///**
// Return error code(返回错误码)
//
// @param code 错误码
// 1:超重
// */
//-(void)bodyFatScaleManagerCallBackErrorCode:(NSInteger)code{
// [self addLog:[NSString stringWithFormat:@"error code = %ld",code]];
//}

- (void)bluetoothManagerReceiveBMVersion:(NSString *)bmVersion {
[self addLog:[NSString stringWithFormat:@"BMVersion :%@",bmVersion]];
}

/**
MCU requests user information( MCU 请求用户信息)

@param status 请求状态
*/
- (void)bodyFatScaleManagerMCURequestAppUserInfoType:(BodyFatScaleMCURequestUserInfoStatus)status{
if (status == BodyFatScaleMCURequestUserInfoStatus_Get) {
//下发当前用户给秤
[[ELBodyFatScaleBleManager shareManager] sendCurrentUserToBle:[self getOneUser]];
}else if (status == BodyFatScaleMCURequestUserInfoStatus_Success){
[self addLog:@"MCU requests user information success"];
}else if (BodyFatScaleMCURequestUserInfoStatus_Fail){
[self addLog:@"MCU requests user information failure"];
}

}


/**
Return weight and body fat model(返回重量及体脂model)
*/
-(void)bodyFatScaleManagerCallBackWeight:(ELBodyFatScaleBleWeightModel *)weightModel state:(BodyFatScaleMeasureStatus)status{
switch (status) {
case BodyFatScaleMeasureStatus_Unstable:
{
[self addLog:[NSString stringWithFormat:@"Unstable data weight = %ld unit = %@ point = %ld adc = %ld",weightModel.weight,AiLinkBleWeightUnitDic[@(weightModel.weightUnit)],weightModel.weightPoint,weightModel.adc]];
}
break;
case BodyFatScaleMeasureStatus_Stable:
{
[self addLog:[NSString stringWithFormat:@"Stable data weight = %ld unit = %@ point = %ld adc = %ld",weightModel.weight,AiLinkBleWeightUnitDic[@(weightModel.weightUnit)],weightModel.weightPoint,weightModel.adc]];
}
break;
case BodyFatScaleMeasureStatus_Failed:
{
[self addLog:@"Test failure"];
}
break;
case BodyFatScaleMeasureStatus_Complete:
{
[self addLog:[NSString stringWithFormat:@"Tested weight = %ld unit = %@ point = %ld adc = %ld",weightModel.weight,AiLinkBleWeightUnitDic[@(weightModel.weightUnit)],weightModel.weightPoint,weightModel.adc]];

//更新用户信息给秤
[[ELBodyFatScaleBleManager shareManager] sendCurrentUserToBle:[self getOneUser]];
//下发用户列表
[[ELBodyFatScaleBleManager shareManager] sendOfflineUserListToBle:[self get8Users]];
}
break;
default:
break;
}
}


/**
Return temperature (unit: ° C)(返回温度(单位:°C))

@param temp 温度(单位:°C)
*/
-(void)bodyFatScaleManagerCallBackTemp:(NSString *)temp{
[self addLog:[NSString stringWithFormat:@"temperature is %@",temp]];
}

/**
Back to impedance measurement(返回阻抗测量)

@param status 阻抗测量状态
@param adc 阻抗
*/
-(void)bodyFatScaleManagerCallBackAdcMeasureStatus:(BodyFatScaleAdcMeasureStatus)status adcValue:(NSInteger)adc{
switch (status) {
case BodyFatScaleAdcMeasureStatus_Testing:
{
[self addLog:@"adc testing"];
}
break;
case BodyFatScaleAdcMeasureStatus_Success:
{
[self addLog:[NSString stringWithFormat:@"adc is %ld",adc]];
}
break;
case BodyFatScaleAdcMeasureStatus_Fail:
{
[self addLog:@"adc test failure"];
}
break;
case BodyFatScaleAdcMeasureStatus_SuccessCustom:
{
[self addLog:[NSString stringWithFormat:@"adc is %ld and user app algum",adc]];
}
break;
default:
break;
}
}

/**
Callback heart rate measurement(回调心率测量)

@param status 心率测量状态
@param heartRate 心率
*/
-(void)bodyFatScaleManagerCallBackHeartRateMeasureStatus:(BodyFatScaleHeartRateMeasureStatus)status heartRateValue:(NSInteger)heartRate{
switch (status) {
case BodyFatScaleHeartRateMeasureStatus_Testing:
{
[self addLog:@"Heart Rate Testing"];
}
break;
case BodyFatScaleHeartRateMeasureStatus_Success:
{
[self addLog:[NSString stringWithFormat:@"Heart Rate is %ld",heartRate]];
}
break;
case BodyFatScaleHeartRateMeasureStatus_Fail:
{
[self addLog:@"Heart Rate Test failure"];
}
break;
default:
break;
}
}

/**
Return error code(返回错误码)

@param code 错误码
1:超重
*/
-(void)bodyFatScaleManagerCallBackErrorCode:(NSInteger)code{
[self addLog:[NSString stringWithFormat:@"error code = %ld",code]];
}


////MARK:回调A6指令数据
//
///**
@@ -561,41 +684,37 @@
// //这里的身体指标数据由秤计算得到
// [self addLog:[NSString stringWithFormat:@"MCU algorithm-offline history data:userId = %ld weight = %ld unit =%@ point = %ld",user.usrID,bodyModel.weight,AiLinkBleWeightUnitDic[@(bodyModel.weightUnit)],bodyModel.weightPoint]];
//}
//
//
//-(NSArray<ELBodyFatScaleBleUserModel *> *)get8Users{
// NSMutableArray *users = [[NSMutableArray alloc] init];
// for (int i=0; i<8; i++) {
// ELBodyFatScaleBleUserModel *user = [[ELBodyFatScaleBleUserModel alloc] init];
// user.createTime = [[NSDate date] timeIntervalSince1970];
// user.usrID = i;
// user.role = i%4;
// user.sex = i%2;
// user.age = 26+i;
// user.height = 170+i;
// user.weight = 600+i;
// user.adc = 560+i;
// [users addObject:user];
// }
//
// return users.copy;
//}
//
//-(ELBodyFatScaleBleUserModel *)getOneUser{
// ELBodyFatScaleBleUserModel *user = [[ELBodyFatScaleBleUserModel alloc] init];
// user.createTime = [[NSDate date] timeIntervalSince1970];
// user.usrID = 0;
// user.role = BodyFatScaleRole_Ordinary;
// user.sex = ELBluetoothUserSex_Woman;
// user.age = 26;
// user.height = 170;
// user.weight = 600;
// user.adc = 560;
// return user;
//}
//-(void)dealloc{
//
//
//}


-(NSArray<ELBodyFatScaleBleUserModel *> *)get8Users{
NSMutableArray *users = [[NSMutableArray alloc] init];
for (int i=0; i<8; i++) {
ELBodyFatScaleBleUserModel *user = [[ELBodyFatScaleBleUserModel alloc] init];
user.createTime = [[NSDate date] timeIntervalSince1970];
user.usrID = i;
user.role = i%4;
user.sex = i%2;
user.age = 26+i;
user.height = 170+i;
user.weight = 600+i;
user.adc = 560+i;
[users addObject:user];
}

return users.copy;
}

-(ELBodyFatScaleBleUserModel *)getOneUser{
ELBodyFatScaleBleUserModel *user = [[ELBodyFatScaleBleUserModel alloc] init];
user.createTime = [[NSDate date] timeIntervalSince1970];
user.usrID = 0;
user.role = BodyFatScaleRole_Ordinary;
user.sex = ELBluetoothUserSex_Woman;
user.age = 26;
user.height = 170;
user.weight = 600;
user.adc = 560;
return user;
}

@end

Loading…
İptal
Kaydet