watch文档

1. 解绑设备

- (void)unBindDevice {
    NSData *playLoad = [self playLoad:0x00 value:nil];
    NSData *data = [self dataWithCommanID:0x04 pv:0x01 playLoad:@[playLoad]];
    
    self.waitSendData = data;
    [self sendData];
}

 

 

2. 恢复出厂设置

- (void)resettingDevice {
    NSData *playLoad = [self playLoad:0x00 value:nil];
    NSData *data = [self dataWithCommanID:0x0d pv:0x01 playLoad:@[playLoad]];
    
    self.waitSendData = data;
    [self sendData];
}

 

 

3. 设置消息

- (void)setMsgModel:(MsgModel *)m {
    
    int call = m.call;
    int msg = m.msg;
    int wechat = m.wechat;
    int qq = m.qq;
    int facebook = m.facebook;
    int twitter = m.twitter;
    int skype = m.skype;
    int line = m.line;
    int whatsapp = m.whatsapp;
    int kakaotalk = m.kakaotalk;
    int fuck = 0;
    
    NSMutableData *d = [NSMutableData data];
    [d appendBytes:&call length:1];
    [d appendBytes:&msg length:1];
    [d appendBytes:&wechat length:1];
    [d appendBytes:&qq length:1];
    [d appendBytes:&facebook length:1];
    [d appendBytes:&twitter length:1];
    [d appendBytes:&skype length:1];
    [d appendBytes:&line length:1];
    [d appendBytes:&whatsapp length:1];
    [d appendBytes:&kakaotalk length:1];
    [d appendBytes:&fuck length:1];
    
    NSData *playLoad = [self playLoad:0x07 value:d];
    NSData *data = [self dataWithCommanID:0x02 pv:0x01 playLoad:@[playLoad]];
    
    self.waitSendData = data;
    [self sendData];
}

 

 

4. 获取设置信息

- (void)getSettingConfig {
    
    NSData *playLoad = [self playLoad:0x00 value:nil];
    NSData *data = [self dataWithCommanID:0x09 pv:0x01 playLoad:@[playLoad]];
    
    self.waitSendData = data;
    [self sendData];
}

 

 

5. 寻找设备

- (void)searchDevice:(BOOL)isOpen {
    
    int value = isOpen?0x01:0x00;
    NSData *valueData = [NSData dataWithBytes:&value length:1];
    
    NSData *playLoad = [self playLoad:0x0b value:valueData];
    NSData *data = [self dataWithCommanID:0x02 pv:0x01 playLoad:@[playLoad]];
    
    self.waitSendData = data;
    [self sendData];
}

 

 

6.  开启配对

- (void)pair {
    
    int value = 0x01;
    NSData *valueData = [NSData dataWithBytes:&value length:1];
    
    NSData *playLoad = [self playLoad:0x0a value:valueData];
    NSData *data = [self dataWithCommanID:0x02 pv:0x01 playLoad:@[playLoad]];
    
    self.waitSendData = data;
    [self sendData];
}

 

 

7.  绑定设备

- (void)bindDevice {
    
    NSData *playLoad = [self playLoad:0x00 value:[UserInfo sharedUserInfo].userInfoModel.usrIdData];
    NSData *data = [self dataWithCommanID:0x03 pv:0x01 playLoad:@[playLoad]];
    
    self.waitSendData = data;
    [self sendData];
}

 

 

8.  设置语言 0:中文 1:英文

- (void)setLanguage:(NSInteger)language {
    
    [UserInfo sharedUserInfo].language = language==1;
    [[UserInfo sharedUserInfo] save];
    
    int value = language==0?0x00:0x01;
    NSData *valueData = [NSData dataWithBytes:&value length:1];
    
    NSData *playLoad = [self playLoad:0x15 value:valueData];
    NSData *data = [self dataWithCommanID:0x02 pv:0x01 playLoad:@[playLoad]];
    
    self.waitSendData = data;
    [self sendData];
}

 

 

9.  佩戴方式 0:左手 1:右手

- (void)setWayOfWearing:(NSInteger)way {
    
    [UserInfo sharedUserInfo].leftRight = way==1;
    [[UserInfo sharedUserInfo] save];
    
    int value = way==0?0x01:0x02;
    NSData *valueData = [NSData dataWithBytes:&value length:1];
    
    NSData *playLoad = [self playLoad:0x06 value:valueData];
    NSData *data = [self dataWithCommanID:0x02 pv:0x01 playLoad:@[playLoad]];
    
    self.waitSendData = data;
    [self sendData];
}

 

 

10. 同步时间 18 10 17 10 10 10
- (void)synTime:(NSString *)time {
    int year = [time componentsSeparatedByString:@" "][0].intValue;
    int month = [time componentsSeparatedByString:@" "][1].intValue;
    int day = [time componentsSeparatedByString:@" "][2].intValue;
    int hour = [time componentsSeparatedByString:@" "][3].intValue;
    int min = [time componentsSeparatedByString:@" "][4].intValue;
    int second = [time componentsSeparatedByString:@" "][5].intValue;
    
    // 6 4 5 5 6 6
    unsigned int t = 0;
    t |= year<<26;
    t |= month<<22;
    t |= day<<17;
    t |= hour<<12;
    t |= min<<6;
    t |= second;
    
    NSData *timeData = [self invertData:[NSData dataWithBytes:&t length:4]];
    
    NSData *playLoad = [self playLoad:0x01 value:timeData];
    NSData *data = [self dataWithCommanID:0x02 pv:0x01 playLoad:@[playLoad]];
    
    self.waitSendData = data;
    [self sendData];
}

 

 

11.  同步闹钟 [@{年,月,日,时,分,序列号,保留,重复位}]

- (void)synAlarm:(NSArray<AlarmModel *> *)alarms {
    NSMutableData *md = [NSMutableData data];
    for (int i=0; i<alarms.count; i++) {
        AlarmModel *m = alarms[i];
        // 6 4 5 5 6 3 4 [7]
        unsigned long t = 0;
        t |= m.year<<34;
        t |= m.month<<30;
        t |= m.day<<25;
        t |= m.hour<<20;
        t |= m.min<<14;
        t |= m.number<<11;
        t |= m.none<<7;
        t |= m.d7<<6;
        t |= m.d6<<5;
        t |= m.d5<<4;
        t |= m.d4<<3;
        t |= m.d3<<2;
        t |= m.d2<<1;
        t |= m.d1;

        NSData *timeData = [self invertData:[NSData dataWithBytes:&t length:5]];
        [md appendData:timeData];
    }
    
    NSData *playLoad = [self playLoad:0x02 value:md];
    NSData *data = [self dataWithCommanID:0x02 pv:0x01 playLoad:@[playLoad]];
    
    self.waitSendData = data;
    [self sendData];
}

 

 

12. 久坐
- (void)synLongDown:(LongDownModel *)model {
    
    unsigned long noonBreak = model.noonBreak;
    unsigned long open = model.open;
    unsigned long threshold = model.threshold;
    unsigned long time = model.time / 15;
    unsigned long start = model.start;
    unsigned long end = model.end;
    
    unsigned long t = 0;
    t |= model.d7<<6;
    t |= model.d6<<5;
    t |= model.d5<<4;
    t |= model.d4<<3;
    t |= model.d3<<2;
    t |= model.d2<<1;
    t |= model.d1;
    
    NSMutableData *mD = [NSMutableData data];
    [mD appendBytes:&noonBreak length:1];
    [mD appendBytes:&open length:1];
    [mD appendData:[self invertData:[NSData dataWithBytes:&threshold length:2]]];
    [mD appendBytes:&time length:1];
    [mD appendBytes:&start length:1];
    [mD appendBytes:&end length:1];
    [mD appendBytes:&t length:1];
    
    NSData *playLoad = [self playLoad:0x05 value:mD];
    NSData *data = [self dataWithCommanID:0x02 pv:0x01 playLoad:@[playLoad]];
    
    self.waitSendData = data;
    [self sendData];
}

 

 

12. 抬手亮屏
- (void)raiseHand:(RaiseHandModel *)model {
    
    unsigned long open = model.open;
    unsigned long start = model.start;
    unsigned long end = model.end;
    
    NSMutableData *mD = [NSMutableData data];
    [mD appendBytes:&open length:1];
    [mD appendData:[self invertData:[NSData dataWithBytes:&start length:2]]];
    [mD appendData:[self invertData:[NSData dataWithBytes:&end length:2]]];
    
    NSData *playLoad = [self playLoad:0x09 value:mD];
    NSData *data = [self dataWithCommanID:0x02 pv:0x01 playLoad:@[playLoad]];
    
    self.waitSendData = data;
    [self sendData];
}

 

 
13. 睡眠监测
- (void)sleepMonitoring:(SleepMonitoringModel *)model {
    
    unsigned long open = model.open;
    unsigned long start = model.start;
    unsigned long end = model.end;
    
    NSMutableData *mD = [NSMutableData data];
    [mD appendBytes:&open length:1];
    [mD appendData:[self invertData:[NSData dataWithBytes:&start length:2]]];
    [mD appendData:[self invertData:[NSData dataWithBytes:&end length:2]]];
    
    NSData *playLoad = [self playLoad:0x0f value:mD];
    NSData *data = [self dataWithCommanID:0x02 pv:0x01 playLoad:@[playLoad]];
    
    self.waitSendData = data;
    [self sendData];
}

 

 

14. 心率自动测量

- (void)heartAuto:(HeartAutoModel *)model {
    unsigned long open = model.open;
    unsigned long sleep = model.sleep;
    unsigned long rate = model.rate;
    unsigned long start = model.start;
    unsigned long end = model.end;
    
    NSMutableData *mD = [NSMutableData data];
    [mD appendBytes:&open length:1];
    [mD appendBytes:&sleep length:1];
    [mD appendData:[self invertData:[NSData dataWithBytes:&rate length:2]]];
    [mD appendData:[self invertData:[NSData dataWithBytes:&start length:2]]];
    [mD appendData:[self invertData:[NSData dataWithBytes:&end length:2]]];
    NSData *playLoad = [self playLoad:0x16 value:mD];
    NSData *data = [self dataWithCommanID:0x02 pv:0x01 playLoad:@[playLoad]];
    
    self.waitSendData = data;
    [self sendData];
}

 

 

15.  勿扰模式

- (void)dnd:(DNDModel *)model {
    
    unsigned long open = model.open;
    unsigned long start = model.start;
    unsigned long end = model.end;
    
    NSMutableData *mD = [NSMutableData data];
    [mD appendBytes:&open length:1];
    [mD appendData:[self invertData:[NSData dataWithBytes:&start length:2]]];
    [mD appendData:[self invertData:[NSData dataWithBytes:&end length:2]]];
    
    NSData *playLoad = [self playLoad:0x14 value:mD];
    NSData *data = [self dataWithCommanID:0x02 pv:0x01 playLoad:@[playLoad]];
    
    self.waitSendData = data;
    [self sendData];
}

 

 

16.  震动

- (void)shake:(BOOL)isOpen {
    int value = isOpen==0?0x00:0x01;
    NSData *valueData = [NSData dataWithBytes:&value length:1];
    
    NSData *playLoad = [self playLoad:0x08 value:valueData];
    NSData *data = [self dataWithCommanID:0x02 pv:0x01 playLoad:@[playLoad]];
    
    self.waitSendData = data;
    [self sendData];
}

 

 

17.  开启或关闭拍照

- (void)camera:(BOOL)isOpen {
    int value = isOpen==0?0x00:0x01;
    NSData *valueData = [NSData dataWithBytes:&value length:1];
    
    NSData *playLoad = [self playLoad:0x0C value:valueData];
    NSData *data = [self dataWithCommanID:0x02 pv:0x01 playLoad:@[playLoad]];
    
    self.waitSendData = data;
    [self sendData];
}

 

 

18.  设置目标步数

- (void)aim:(unsigned long)aim {
    
    if (aim == 0) {
        aim = 5000;
    }
    
    NSData *valueData = [NSData dataWithBytes:&aim length:4].invert;
    
    NSData *playLoad = [self playLoad:0x03 value:valueData];
    NSData *data = [self dataWithCommanID:0x02 pv:0x01 playLoad:@[playLoad]];
    
    self.waitSendData = data;
    [self sendData];
}

 

 

19. 用户信息
- (void)synUsrInfo:(UsrModel *)model {

    unsigned long t = 0;
    t |= model.sex<<31;
    t |= model.age<<24;
    t |= model.height<<15;
    t |= model.weight<<5;
    
    NSData *valueData = [NSData dataWithBytes:&t length:4].invert;
    
    NSData *playLoad = [self playLoad:0x04 value:valueData];
    NSData *data = [self dataWithCommanID:0x02 pv:0x01 playLoad:@[playLoad]];
    
    self.waitSendData = data;
    [self sendData];
}

  

20. 开始心率监测
- (void)startHeart:(BOOL)isOpen {
    int value = isOpen==0?0x00:0x01;
    NSData *valueData = [NSData dataWithBytes:&value length:1];
    
    NSData *playLoad = [self playLoad:0x0D value:valueData];
    NSData *data = [self dataWithCommanID:0x02 pv:0x01 playLoad:@[playLoad]];
    
    self.waitSendData = data;
    [self sendData];
}

  

21. 获取闹钟列表
- (void)getAlarm {
    NSData *playLoad = [self playLoad:0x00 value:nil];
    NSData *data = [self dataWithCommanID:0x08 pv:0x01 playLoad:@[playLoad]];
    
    self.waitSendData = data;
    [self sendData];
}

 

 
22. 请求手环运动数据
- (void)getSports {
    int value = 0x01;
    NSData *valueData = [NSData dataWithBytes:&value length:1];
    
    NSData *playLoad = [self playLoad:0x06 value:valueData];
    NSData *data = [self dataWithCommanID:0x05 pv:0x01 playLoad:@[playLoad]];
    
    self.waitSendData = data;
    [self sendData];
}

 

23. APP 主动请求手环运动数据 0x01
- (void)initiativeSports {
    int value = 0x01;
    NSData *valueData = [NSData dataWithBytes:&value length:1];
    
    NSData *playLoad = [self playLoad:0x01 value:valueData];
    NSData *data = [self dataWithCommanID:0x05 pv:0x01 playLoad:@[playLoad]];
    
    self.waitSendData = data;
    [self sendData];
}

  

24. 实时步数 0x0b
- (void)realTimeStep {
    int value = 0x01;
    NSData *valueData = [NSData dataWithBytes:&value length:1];
    
    NSData *playLoad = [self playLoad:0x0b value:valueData];
    NSData *data = [self dataWithCommanID:0x05 pv:0x01 playLoad:@[playLoad]];
    
    self.waitSendData = data;
    [self sendData];
}

 

25. 读取电量
- (void)readPower {
    if ([BlueToothManager sharedBlueToothManager].connectPeripheral &&
        [BlueToothManager sharedBlueToothManager].connectPeripheral.powerCharacteristic) {
        [[BlueToothManager sharedBlueToothManager].connectPeripheral readValueForCharacteristic:[BlueToothManager sharedBlueToothManager].connectPeripheral.powerCharacteristic];
    }
}

 

 

 

 

 

/**
 通过邮箱登录

 @param email 邮箱
 @param password 密码
 @param success 成功回调
 @param fail 失败回调
 */
+ (void)loginEmail:(NSString *)email
          password:(NSString *)password
           success:(void (^)(id responseObject, BOOL isCache))success
              fail:(void (^)(NSString *errorInfo, NSInteger code))fail;

/**
 获取验证码

 @param email 邮箱
 @param type 类型 1:注册 2:找回密码
 @param success 成功回调
 @param fail 失败回调
 */
+ (void)getCode:(NSString *)email
           type:(NSString *)type
        success:(void (^)(id responseObject, BOOL isCache))success
           fail:(void (^)(NSString *errorInfo, NSInteger code))fail;

/**
 找回密码

 @param email 邮箱
 @param code 验证码
 @param password 新密码
 @param success 成功回调
 @param fail 失败回调
 */
+ (void)findPwdEmail:(NSString *)email
                code:(NSString *)code
            password:(NSString *)password
             success:(void (^)(id responseObject, BOOL isCache))success
                fail:(void (^)(NSString *errorInfo, NSInteger code))fail;

/**
 注册账号

 @param email 邮箱
 @param password 密码
 @param code 验证码
 @param success 成功回调
 @param fail 失败回调
 */
+ (void)registerEmail:(NSString *)email
             password:(NSString *)password
                 code:(NSString *)code
              success:(void (^)(id responseObject, BOOL isCache))success
                 fail:(void (^)(NSString *errorInfo, NSInteger code))fail;

/**
 修改密码

 @param oldPassword 旧密码
 @param newPassword 新密码
 @param success 成功回调
 @param fail 失败回调
 */
+ (void)updateOldPassword:(NSString *)oldPassword
              newPassword:(NSString *)newPassword
                  success:(void (^)(id responseObject, BOOL isCache))success
                     fail:(void (^)(NSString *errorInfo, NSInteger code))fail;

/**
 修改用户信息

 @param avatar 头像
 @param nickName 昵称
 @param birthday 生日
 @param height 身高
 @param weight 体重
 @param gender 性别
 @param aimStep 目标
 @param unit 单位
 @param success 成功回调
 @param fail 失败回调
 */
+ (void)updateInfo:(NSString *)avatar
          nickName:(NSString *)nickName
          birthday:(NSString *)birthday
            height:(NSString *)height
            weight:(NSString *)weight
            gender:(NSString *)gender
           aimStep:(NSString *)aimStep
              unit:(NSString *)unit
           success:(void (^)(id responseObject, BOOL isCache))success
              fail:(void (^)(NSString *errorInfo, NSInteger code))fail;

/**
 上传或更新运动信息

 @param data json数据
 @param time 时间
 @param type TYPE:STEP/SLEEP/HEART/BLOOD
 @param success 成功回调
 @param fail 失败回调
 */
+ (void)submitOrUpdate:(NSString *)data
                  time:(NSString *)time
                  type:(NSString *)type
               success:(void (^)(id responseObject, BOOL isCache))success
                  fail:(void (^)(NSString *errorInfo, NSInteger code))fail;

/**
 查找记录

 @param times 时间集合
 @param type 类型
 @param success 成功回调
 @param fail 失败回调
 */
+ (void)findRecord:(NSString *)times
              type:(NSString *)type
           success:(void (^)(id responseObject, BOOL isCache))success
              fail:(void (^)(NSString *errorInfo, NSInteger code))fail;

/**
 获取版本信息

 @param type 类型
 @param success 成功回调
 @param fail 失败回调
 */
+ (void)version:(NSString *)type
        success:(void (^)(id responseObject, BOOL isCache))success
           fail:(void (^)(NSString *errorInfo, NSInteger code))fail;
@interface DNDModel : NSObject

@property (assign, nonatomic) unsigned long open; // 1byte 使能 0:关闭 1:开启
@property (assign, nonatomic) unsigned long start; // 2byte 开启时间 分钟数:从当天的 0 点算起的分钟数 (APP-Device高八位在前,低八位在后)
@property (assign, nonatomic) unsigned long end; // 2byte 关闭时间 分钟数:从当天的 0 点算起的分钟数(APP-Device高八位在前,低八位在后)
@property (strong, nonatomic) NSData *data;

@end

@implementation DNDModel

- (void)setData:(NSData *)data {
    _data = data;
    
    unsigned long open = 0;
    [data getBytes:&open range:NSMakeRange(1, 1)];
    self.open = open;
    
    unsigned long start = 0;
    NSData *d1 = [data subdataWithRange:NSMakeRange(2, 2)].invert;
    [d1 getBytes:&start range:NSMakeRange(0, 2)];
    self.start = start;
    
    unsigned long end = 0;
    NSData *d2 = [data subdataWithRange:NSMakeRange(4, 2)].invert;
    [d2 getBytes:&end range:NSMakeRange(0, 2)];
    self.end = end;
}



@end

 






- (AlarmModel *)data2Alarm:(NSData *)data { AlarmModel *model = [[AlarmModel alloc] init]; unsigned long t = 0; [[self invertData:data] getBytes:&t length:5]; model.year = t>>34 & 63; model.month = t>>30 & 15; model.day = t>>25 & 31; model.hour = t>>20 & 31; model.min = t>>14 & 63; model.number = t>>11 & 7; model.none = t>>7 & 15; model.d7 = t>>6 & 1; model.d6 = t>>5 & 1; model.d5 = t>>4 & 1; model.d4 = t>>3 & 1; model.d3 = t>>2 & 1; model.d2 = t>>1 & 1; model.d1 = t & 1; return model; }

 

 

+ (NSArray<SportsModel *> *)sportsData:(NSData *)data {
    NSData *headerData = [data subdataWithRange:NSMakeRange(8, 4)].invert;
    NSData *sportsData = [data subdataWithRange:NSMakeRange(10, data.length-10)];
    
    unsigned long t = 0;
    [headerData getBytes:&t range:NSMakeRange(0, 4)];
    unsigned long year = t>>25 & 63;
    unsigned long month = t>>21 & 15;
    unsigned long day = t>>16 & 31;
    unsigned long item = t>>8 & 255; // 后面item的个数
    
    NSMutableArray *arr = [NSMutableArray array];
    for (int i=0; i<sportsData.length/6; i++) {
        SportsModel *m = [[SportsModel alloc] init];
        
        NSData *sportsDataItem = [sportsData subdataWithRange:NSMakeRange(i*6, 6)].invert;
    
        unsigned long  a1 = 0;
        [sportsDataItem getBytes:&a1 range:NSMakeRange(0, 2)];
        unsigned long  a2 = 0;
        [sportsDataItem getBytes:&a2 range:NSMakeRange(2, 2)];
        unsigned long  a3 = 0;
        [sportsDataItem getBytes:&a3 range:NSMakeRange(4, 2)];
        
        m.steps = a3;
        m.distance = a2;
        m.calorie = a1;
        
        m.timeOffset = i;
        m.mode = 1;
        
        if (m.steps == 65535) {
            m.steps = 0;
            m.distance = 0;
            m.calorie = 0;
            continue;
        }
        
        unsigned long second = m.timeOffset*60*60;
        NSString *time = [NSString stringWithFormat:@"%ld-%.2ld-%.2ld %.2ld:%.2ld:%.2ld", 2000+year, month, day, second/3600, second%3600/60, second%60];
        m.time = time;
        
        [arr addObject:m];
    }
    
     return arr.copy;
}

 

 

 

 

+ (NSDictionary *)sleepData:(NSData *)data {
    NSData *headerData = [data subdataWithRange:NSMakeRange(8, 4)].invert;
    NSData *sleepData = [data subdataWithRange:NSMakeRange(12, data.length-12)];
    
    unsigned long t = 0;
    [headerData getBytes:&t range:NSMakeRange(0, 4)];
    unsigned long year = t>>25 & 63;
    unsigned long month = t>>21 & 15;
    unsigned long day = t>>16 & 31;
    
    NSMutableArray *mmm = [NSMutableArray array];
    for (int i=0; i<sleepData.length/4; i++) {
        
        NSData *sleepDataItem = [sleepData subdataWithRange:NSMakeRange(i*4, 4)].invert;
        
        unsigned long long tt = 0;
        [sleepDataItem getBytes:&tt range:NSMakeRange(0, 4)];
        
        unsigned long time = tt>>16 & 65535;
        unsigned long type = tt & 15;
        
        [mmm addObject:@{@"timeOffset":@(time), @"mode":@(type)}];
    }
    NSString *strDay = [NSString stringWithFormat:@"%.4ld-%.2ld-%.2ld", 2000+year, month, day];
    NSLog(@"%@", strDay);
    NSLog(@"%@", mmm);
    
    return @{@"day":strDay, @"list":mmm};
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

+ (NSArray<HeartModel *> *)heartData:(NSData *)data {

    NSData *headerData = [data subdataWithRange:NSMakeRange(8, 4)].invert;
    NSData *heartData = [data subdataWithRange:NSMakeRange(12, data.length-12)];
    
    unsigned long t = 0;
    [headerData getBytes:&t range:NSMakeRange(0, 4)];
    unsigned long year = t>>25 & 63;
    unsigned long month = t>>21 & 15;
    unsigned long day = t>>16 & 31;
    unsigned long item = t>>8 & 255;
    
    NSMutableArray *arr = [NSMutableArray array];
    for (int i=0; i<heartData.length/8; i++) {
        HeartModel *m = [[HeartModel alloc] init];
        
        NSData *heartDataItem = [heartData subdataWithRange:NSMakeRange(i*8, 8)].invert;
        
        unsigned long second = 0;
        unsigned long count = 0;
        
        [heartDataItem getBytes:&second range:NSMakeRange(4, 4)];
        [heartDataItem getBytes:&count range:NSMakeRange(0, 1)];
        
        NSString *time = [NSString stringWithFormat:@"%ld-%.2ld-%.2ld %.2ld:%.2ld:%.2ld", 2000+year, month, day, second/3600, second%3600/60, second%60];

        m.time = time;
        m.count = count;
        
        [arr addObject:m];
    }
    return arr.copy;
}

 

 

 

@interface UsrModel : NSObject

// 0:女1:男 1bit
@property (assign, nonatomic)  unsigned long sex;
// 0~127 7bit
@property (assign, nonatomic)  unsigned long age;
// 0~256 9bit
@property (assign, nonatomic)  unsigned long height;
// 0~512 10bit
@property (assign, nonatomic)  unsigned long weight;
// @property (strong, nonatomic) NSData *data;
- (void)setData:(NSData *)data;

@end

@implementation UsrModel

- (instancetype)init {
    self = [super init];
    if (self) {
        self.age = 25;
        self.height = 170;
        self.weight = 65;
        self.sex = 1 ;
    }
    return self;
}

- (void)setData:(NSData *)data {
    // _data = data;
    
    unsigned long t = 0;
    
    [[data subdataWithRange:NSMakeRange(1, 4)].invert getBytes:&t range:NSMakeRange(0, 4)];
    
    self.sex = t>>31 & 1;
    self.age = t>>24 & 127;
    self.height = t>>15 & 255;
    self.weight = t>>5 & 511;
}

@end

 

 

 

 

 

 

 

 

 

 

 

 

 

@interface RaiseHandModel : NSObject

@property (assign, nonatomic) unsigned long open; // 1byte 使能 0:关闭 1:开启
@property (assign, nonatomic) unsigned long start; // 2byte 开启时间 分钟数:从当天的 0 点算起的分钟数 (APP-Device高八位在前,低八位在后)
@property (assign, nonatomic) unsigned long end; // 2byte 关闭时间 分钟数:从当天的 0 点算起的分钟数(APP-Device高八位在前,低八位在后)
@property (strong, nonatomic) NSData *data;

@end


@implementation RaiseHandModel

- (void)setData:(NSData *)data {
    _data = data;
    
    unsigned long open = 0;
    [data getBytes:&open range:NSMakeRange(1, 1)];
    self.open = open;
    
    unsigned long start = 0;
    NSData *d1 = [data subdataWithRange:NSMakeRange(2, 2)].invert;
    [d1 getBytes:&start range:NSMakeRange(0, 2)];
    self.start = start;
    
    unsigned long end = 0;
    NSData *d2 = [data subdataWithRange:NSMakeRange(4, 2)].invert;
    [d2 getBytes:&end range:NSMakeRange(0, 2)];
    self.end = end;
}

@end

 

 

 

@interface SleepMonitoringModel : NSObject

@property (assign, nonatomic) unsigned long open; // 1byte 使能 0:关闭 1:开启
@property (assign, nonatomic) unsigned long start; // 2byte 开启时间 分钟数:从当天的 0 点算起的分钟数 (APP-Device高八位在前,低八位在后)
@property (assign, nonatomic) unsigned long end; // 2byte 关闭时间 分钟数:从当天的 0 点算起的分钟数(APP-Device高八位在前,低八位在后)
@property (strong, nonatomic) NSData *data;

@end

- (void)setData:(NSData *)data {
    _data = data;
    
    unsigned long open = 0;
    [data getBytes:&open range:NSMakeRange(1, 1)];
    self.open = open;
    
    unsigned long start = 0;
    NSData *d1 = [data subdataWithRange:NSMakeRange(2, 2)].invert;
    [d1 getBytes:&start range:NSMakeRange(0, 2)];
    self.start = start;
    
    unsigned long end = 0;
    NSData *d2 = [data subdataWithRange:NSMakeRange(4, 2)].invert;
    [d2 getBytes:&end range:NSMakeRange(0, 2)];
    self.end = end;
}

 

 

 

@interface LongDownModel : NSObject

@property (assign, nonatomic) unsigned long start; // 开始
@property (assign, nonatomic) unsigned long end; // 结束
@property (assign, nonatomic) unsigned long time; // 时长
@property (assign, nonatomic) unsigned long threshold; // 阈值
@property (assign, nonatomic) unsigned long noonBreak; // 午休
@property (assign, nonatomic) unsigned long open; // 是否开启
@property (assign, nonatomic) unsigned long d1;
@property (assign, nonatomic) unsigned long d2;
@property (assign, nonatomic) unsigned long d3;
@property (assign, nonatomic) unsigned long d4;
@property (assign, nonatomic) unsigned long d5;
@property (assign, nonatomic) unsigned long d6;
@property (assign, nonatomic) unsigned long d7;
@property (strong, nonatomic) NSData *data;

@end

- (void)setData:(NSData *)data {
    _data = data;
    
    unsigned long noonBreak = 0;
    unsigned long open = 0;
    unsigned long threshold = 0;
    unsigned long time = 0;
    unsigned long start = 0;
    unsigned long end = 0;
    unsigned long t = 0;
    
    [data getBytes:&noonBreak range:NSMakeRange(1, 1)];
    [data getBytes:&open range:NSMakeRange(2, 1)];
    [data getBytes:&time range:NSMakeRange(5, 1)];
    [data getBytes:&start range:NSMakeRange(6, 1)];
    [data getBytes:&end range:NSMakeRange(7, 1)];
    self.noonBreak = noonBreak;
    self.open = open;
    self.time = time * 15;
    self.start = start;
    self.end = end;
    
    threshold = [[data subdataWithRange:NSMakeRange(3, 2)] l];
    self.threshold = threshold;
    
    [data getBytes:&t range:NSMakeRange(8, 1)];
    self.d7 = t>>6 & 1;
    self.d6 = t>>5 & 1;
    self.d5 = t>>4 & 1;
    self.d4 = t>>3 & 1;
    self.d3 = t>>2 & 1;
    self.d2 = t>>1 & 1;
    self.d1 = t & 1;
}

 

posted on 2019-08-06 21:40  rwpnyn  阅读(120)  评论(0编辑  收藏  举报

导航