parseElinkData method
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);
}
}
}
}