udfConvertWearEcg static method
Implementation
static List<List<double>>? udfConvertWearEcg({
required List<int> event,
required int channelCount,
required int sampleCount,
}) {
final res = List.generate(
channelCount,
(_) => List.filled(sampleCount, 0.0),
growable: false,
);
if (event.length < 4) return null;
final id = event[3];
if (id != 0x11) return null;
/// [V6, L1, L2, V2, V3, V4, V5, V6, V1]
final ordering = [11, 0, 1, 7, 8, 9, 10, 6];
final skip = 6;
for (var i = 0; i < sampleCount; i++) {
for (var j = 0; j < 8; j++) {
final msb = event[skip + 24 * i + j * 3];
final mid = event[skip + 24 * i + j * 3 + 1];
final lsb = event[skip + 24 * i + j * 3 + 2];
final value = toDouble(msb, mid, lsb);
res[ordering[j]][i] = value;
}
}
/// l3, aVR, aVL, aVF
for (var i = 0; i < sampleCount; i++) {
final l1 = res[0][i];
final l2 = res[1][i];
res[2][i] = (l3(l1, l2));
res[3][i] = (aVR(l1, l2));
res[4][i] = (aVL(l1, l2));
res[5][i] = (aVF(l1, l2));
}
return res;
}