setProbeInfo method

List<int> setProbeInfo(
  1. ElinkProbeInfo probeInfo
)

开始工作(设置信息) 使用UUID(elinkWriteAndNotifyUuid: FFE3)的特征值写入 Write using the characteristic value of UUID(elinkWriteAndNotifyUuid: FFE3)

Implementation

List<int> setProbeInfo(ElinkProbeInfo probeInfo) {
  final payload = List.filled(128, 0x00);
  payload[0] = 0x35;
  int index = 1;
  payload[index++] = 0x01;
  payload[index++] = 0x01;
  final id = ElinkCmdUtils.intToBytes(probeInfo.id ~/ 1000);
  payload.setAll(index, id);
  index += id.length;
  payload[index++] = probeInfo.foodType;
  payload[index++] = probeInfo.foodRawness;
  final targetTempCelsius = ElinkCmdUtils.intToBytes(probeInfo.targetTempCelsius, length: 2);
  payload.setAll(index, targetTempCelsius);
  index += targetTempCelsius.length;
  final targetTempFahrenheit = ElinkCmdUtils.intToBytes(probeInfo.targetTempFahrenheit, length: 2);
  payload.setAll(index, targetTempFahrenheit);
  index += targetTempFahrenheit.length;
  final lowerTempLimitCelsius = ElinkCmdUtils.intToBytes(probeInfo.lowerTempLimitCelsius, length: 2);
  payload.setAll(index, lowerTempLimitCelsius);
  index += lowerTempLimitCelsius.length;
  final lowerTempLimitFahrenheit = ElinkCmdUtils.intToBytes(probeInfo.lowerTempLimitFahrenheit, length: 2);
  payload.setAll(index, lowerTempLimitFahrenheit);
  index += lowerTempLimitFahrenheit.length;
  final upperTempLimitCelsius = ElinkCmdUtils.intToBytes(probeInfo.upperTempLimitCelsius, length: 2);
  payload.setAll(index, upperTempLimitCelsius);
  index += upperTempLimitCelsius.length;
  final upperTempLimitFahrenheit = ElinkCmdUtils.intToBytes(probeInfo.upperTempLimitFahrenheit, length: 2);
  payload.setAll(index, upperTempLimitFahrenheit);
  index += upperTempLimitFahrenheit.length;
  final alarmTempPercent = ElinkCmdUtils.doubleToBytes(probeInfo.alarmTempPercent ?? 0.8);
  payload.setAll(index, alarmTempPercent);
  index += alarmTempPercent.length;
  final timerStart = ElinkCmdUtils.intToBytes((probeInfo.timerStart ?? 0) ~/ 1000);
  payload.setAll(index, timerStart);
  index += timerStart.length;
  final timerEnd = ElinkCmdUtils.intToBytes((probeInfo.timerEnd ?? 0) ~/ 1000);
  payload.setAll(index, timerEnd);
  index += timerEnd.length;
  payload[index++] = probeInfo.currentUnit;
  return ElinkCmdUtils.getElinkA6Data(payload);
}