float ecg_get_magnitude(ECG *ecg, ECGChannel channel, int frame) { if (ecg == NULL) return 0.0f; if (ecg->priv == NULL) return 0.0f; switch (ecg->format) { case ECG_TYPE_TLC5000_BIN: return tlc5000_bin_get_magnitude(ecg->priv, channel, frame); case ECG_TYPE_TLC5000_ECG: return tlc5000_ecg_get_magnitude(ecg->priv, channel, frame); default: return 0.0f; } return 0.0f; }
float tlc5000_bin_get_magnitude(TLC5000Bin *priv, ECGChannel channel, int frame) { if (priv == NULL) return 0.0f; switch (channel) { case ECG_CHANNEL_I: return tlc5000_bin_get_magnitude(priv, ECG_CHANNEL_II, frame) - tlc5000_bin_get_magnitude(priv, ECG_CHANNEL_III, frame); case ECG_CHANNEL_II: return (tlc5000_bin_get_integer_magnitude(priv, 0, frame) * -2e-3f) + 4.096f; case ECG_CHANNEL_III: return (tlc5000_bin_get_integer_magnitude(priv, 1, frame) * -2e-3f) + 4.096f; case ECG_CHANNEL_V1: return (tlc5000_bin_get_integer_magnitude(priv, 7, frame) * 2e-3f) - 4.096f; case ECG_CHANNEL_V2: return (tlc5000_bin_get_integer_magnitude(priv, 6, frame) * 2e-3f) - 4.096f; case ECG_CHANNEL_V3: return (tlc5000_bin_get_integer_magnitude(priv, 5, frame) * 2e-3f) - 4.096f; case ECG_CHANNEL_V4: return (tlc5000_bin_get_integer_magnitude(priv, 4, frame) * 2e-3f) - 4.096f; case ECG_CHANNEL_V5: return (tlc5000_bin_get_integer_magnitude(priv, 3, frame) * 2e-3f) - 4.096f; case ECG_CHANNEL_V6: return (tlc5000_bin_get_integer_magnitude(priv, 2, frame) * 2e-3f) - 4.096f; case ECG_CHANNEL_AVR: return (tlc5000_bin_get_magnitude(priv, ECG_CHANNEL_I, frame) + tlc5000_bin_get_magnitude(priv, ECG_CHANNEL_II, frame)) / -2.0f; case ECG_CHANNEL_AVL: return tlc5000_bin_get_magnitude(priv, ECG_CHANNEL_I, frame) - tlc5000_bin_get_magnitude(priv, ECG_CHANNEL_II, frame) / -2.0f; case ECG_CHANNEL_AVF: return tlc5000_bin_get_magnitude(priv, ECG_CHANNEL_II, frame) - tlc5000_bin_get_magnitude(priv, ECG_CHANNEL_I, frame) / -2.0f; case ECG_CHANNEL_X: return tlc5000_bin_get_integer_magnitude(priv, 8, frame) / 255.0f; } return 0.0f; }