diff --git a/CHANGELOG.md b/CHANGELOG.md index 7ccfe38..640351b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,10 @@ list yields a list of all related PRs for each release. - COM `Submode` enum moved from subsystem module to separate definitions module and renamed to `Mode`. Added re-imports with the name `ComMode` in the subsystem and syrlinks module. +## Fixed + +- Eb to N0 calculation: Improve robustness against division by zero. + # [v2.19.4] 2023-03-24 ## Fixed diff --git a/eive_tmtc/tmtc/com/syrlinks_handler.py b/eive_tmtc/tmtc/com/syrlinks_handler.py index 1fc2d60..7041fbd 100644 --- a/eive_tmtc/tmtc/com/syrlinks_handler.py +++ b/eive_tmtc/tmtc/com/syrlinks_handler.py @@ -304,7 +304,11 @@ def handle_syrlinks_rx_registers_dataset(printer: FsfwTmTcPrinter, hk_data: byte rx_agc = rx_agc_value & 0xFFF rx_demod_eb = struct.unpack("!I", hk_data[13:17])[0] & 0xFFFFFF rx_demod_n0 = struct.unpack("!I", hk_data[17:21])[0] & 0xFFFFFF - eb_to_n0 = 20 * math.log10(rx_demod_eb / rx_demod_n0) - 3 + if rx_demod_n0 > 0: + eb_to_n0 = 20 * math.log10(rx_demod_eb / rx_demod_n0) - 3 + else: + logging.getLogger(__name__).warning("RX Demod N0 is 0, can not calculate Eb to N0") + eb_to_n0 = 0 rx_data_rate_raw = hk_data[21] rx_data_rate = -1 if rx_data_rate_raw == 0: