udfConvertCardioClick static method

List<List<double>>? udfConvertCardioClick({
  1. required List<int> event,
  2. required int channelCount,
  3. required int sampleCount,
})

Implementation

static List<List<double>>? udfConvertCardioClick({
  required List<int> event,
  required int channelCount,
  required int sampleCount,
}) {
  final res = List.generate(
    channelCount,
    (_) => List.filled(sampleCount, 0.0),
    growable: false,
  );
  if (event.isEmpty) return null;

  /// [V6, L1, L2, V2, V3, V4, V5, V6, V1]
  final ordering = [11, 0, 1, 7, 8, 9, 10, 6];
  final skip = 0;
  for (var i = 0; i < sampleCount; i++) {
    for (var j = 0; j < 8; j++) {
      final msb = event[skip + 16 * i + j * 2];
      final lsb = event[skip + 16 * i + j * 2 + 1];
      final value = toDoubleTwoByte(msb, lsb);
      res[ordering[j]][i] = value;
    }
  }
  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;
}