parseElinkData method

Future<void> parseElinkData(
  1. List<int> data
)

Implementation

Future<void> parseElinkData(List<int> data) async {
  logD('parseElinkData: ${data.toHex()}');
  if (ElinkCmdUtils.checkElinkCmdSum(data)) {
    logD('parseElinkData checkElinkCmdSum: ${data.toHex()}');
    if (ElinkCmdUtils.isElinkA6Data(data)) {
      logD('parseElinkData isElinkA6Data: ${data.toHex()}');
      final payload = ElinkCmdUtils.formatA6Data(data);
      _parseData(Uint8List.fromList(payload));
    } else if (ElinkCmdUtils.isElinkA7Data(data)) {
      logD('parseElinkData isElinkA7Data: ${data.toHex()}');
      final cid = data.sublist(1, 3);
      logD('parseElinkData isElinkA7Data: ${cid.toHex()}');
      if (ElinkHealthRingConfig.isCidHealthRing(cid)) {
        if (getMac() == null) return;
        final decrypted = await Ailink().mcuDecrypt(Uint8List.fromList(getMac()!), Uint8List.fromList(data));
        logD('parseElinkData isElinkA7Data isCidHealthRing: ${cid.toHex()}');
        _parseData(decrypted);
      }
    }
  }
}