getFrom static method

EMSReportModel getFrom(
  1. List<int> bytes,
  2. double weight
)

Implementation

static EMSReportModel getFrom(List<int> bytes, double weight) {
  EMSReportModel reportModel = EMSReportModel();
  // 肌肉重*10
  int value = (bytes[9] << 8 | bytes[10]);
  reportModel.muscleWeight = value.toDouble() / 10.0;

  //骨盐量*10
  int boneSalt = (bytes[21] << 8 | bytes[22]);
  reportModel.bmc = boneSalt.toDouble() / 10.0;

  //骨骼肌重*10
  int boneWeight = bytes[23] << 8 | bytes[24];
  reportModel.skeletalMuscleWeight = boneWeight.toDouble() / 10.0;

  //蛋白质率*10
  int protein = bytes[25] << 8 | bytes[26];
  reportModel.protein = protein.toDouble() / 10.0;

  //基础代谢
  int metabolism = bytes[29] << 8 | bytes[30];
  reportModel.basicMetabolism = metabolism;

  //体脂百分比*10
  int bodyFatRate = bytes[31] << 8 | bytes[32];
  reportModel.bfr = bodyFatRate.toDouble() / 10.0;

  //体水分率*10
  int waterContentRate = bytes[33] << 8 | bytes[34];
  reportModel.moisture = waterContentRate.toDouble() / 10.0;

  //内脏脂肪等级*10
  int visceralFat = bytes[37] << 8 | bytes[38];
  reportModel.visceralFat = visceralFat.toDouble() / 10.0;

  //身体年龄
  reportModel.physicalAge = bytes[39];

  //身体评分
  // NSInteger bodyScore = bytes[40];
  //肌肉控制X10
  // NSInteger muscleControl = bytes[45] + bytes[46];
  //体重控制X10
  // NSInteger weightControl = bytes[47] + bytes[48];
  //脂肪控制X10
  // NSInteger fatControl = bytes[49] + bytes[50];

  //躯干脂肪率X10
  int bodyRate = bytes[53] << 8 | bytes[54];
  reportModel.bodyFat = bodyRate.toDouble() / 10.0;

  //右手脂肪率X10
  int rightArmFatRate = bytes[55] << 8 | bytes[56];
  reportModel.rightArmFat = rightArmFatRate.toDouble() / 10.0;

  //左手脂肪率X10
  int leftArmFatRate = bytes[57] << 8 | bytes[58];
  reportModel.leftArmFat = leftArmFatRate.toDouble() / 10.0;

  //右脚脂肪率X10
  int rightLegFatRate = bytes[59] << 8 | bytes[60];
  reportModel.rightLegFat = rightLegFatRate.toDouble() / 10.0;

  //左脚脂肪率X10
  int leftLegFatRate = bytes[61] << 8 | bytes[62];
  reportModel.leftLegFat = leftLegFatRate.toDouble() / 10.0;

  //躯干肌肉率X10
  int bodyMuscleRate = bytes[63] << 8 | bytes[64];
  reportModel.bodyMuscle = bodyMuscleRate.toDouble() / 10.0;

  //右手肌肉率X10
  int rightArmMuscleRate = bytes[65] << 8 | bytes[66];
  reportModel.rightArmMuscle = rightArmMuscleRate.toDouble() / 10.0;

  //左手肌肉率X10
  int leftArmMuscleRate = bytes[67] << 8 | bytes[68];
  reportModel.leftArmMuscle = leftArmMuscleRate.toDouble() / 10.0;

  //右脚肌肉率X10
  int rightLegMuscleRate = bytes[69] << 8 | bytes[70];
  reportModel.rightLegMuscle = rightLegMuscleRate.toDouble() / 10.0;

  //左脚肌肉率X10
  int leftLegMuscleRate = bytes[71] << 8 | bytes[72];
  reportModel.leftLegMuscle = leftLegMuscleRate.toDouble() / 10.0;

  //腰臀比*100
  int whr = bytes[81] << 8 | bytes[82];
  reportModel.whr = whr / 100.0;

  reportModel.fatMass = weight * (reportModel.bfr.toDouble() / 100);
  reportModel.ffm = weight - reportModel.fatMass;
  reportModel.waterContent = weight * (reportModel.moisture.toDouble() / 100);
  reportModel.boneMass = 0;
  reportModel.skeletalMuscleRate = 0;
  reportModel.muscleRate = 0;
  reportModel.obesity = 0;

  return reportModel;
}