From 7f03dcb3a613d26462ac2571140ed6ecb91dd9f0 Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Mon, 23 May 2022 18:59:19 +0200 Subject: [PATCH] bugfix for acu hk parsing --- pus_tm/devs/pcdu.py | 43 ++++++++++++++++++++++++++++++------------- 1 file changed, 30 insertions(+), 13 deletions(-) diff --git a/pus_tm/devs/pcdu.py b/pus_tm/devs/pcdu.py index de62cb3..ae24d7e 100644 --- a/pus_tm/devs/pcdu.py +++ b/pus_tm/devs/pcdu.py @@ -104,10 +104,31 @@ class DevicesInfoParser: current_idx += 1 return current_idx + def map_idx_to_type(self, devtype: int) -> str: + if devtype == 0: + return "Reserved" + if devtype == 1: + return "ADC" + if devtype == 2: + return "ADC" + if devtype == 3: + return "DAC" + if devtype == 4: + return "Temperature Sensor" + if devtype == 5: + return "Temperature Sensor (Bat Pack)" + if devtype == 6: + return "RTC" + if devtype == 7: + return "FRAM" + return "Unknown Type" + def print(self, pw: PrintWrapper): pw.dlog(f"Device Type | Device State (0:None | 1:OK | 3:ERROR | 4:NOT FOUND)") for i in range(len(self.dev_types)): - pw.dlog(f"{self.dev_types} | {self.dev_statuses}") + pw.dlog( + f"{self.map_idx_to_type(self.dev_types[i])} | {self.dev_statuses[i]}" + ) def handle_pdu_data( @@ -321,13 +342,8 @@ def gen_six_entry_u16_list(hk_data: bytes, current_idx: int) -> Tuple[int, List[ def handle_acu_hk_data(printer: FsfwTmTcPrinter, set_id: int, hk_data: bytes): pw = PrintWrapper(printer=printer) if set_id == SetIds.ACU_CORE: - current_idx = 0 - fmt_str = "!B" - inc_len = struct.calcsize(fmt_str) - mppt_mode = struct.unpack( - fmt_str, hk_data[current_idx : current_idx + inc_len] - )[0] - current_idx += inc_len + mppt_mode = hk_data[0] + current_idx = 1 current_idx, currents = gen_six_entry_u16_list( hk_data=hk_data, current_idx=current_idx ) @@ -373,11 +389,11 @@ def handle_acu_hk_data(printer: FsfwTmTcPrinter, set_id: int, hk_data: bytes): ) if set_id == SetIds.ACU_AUX: current_idx = 0 - fmt_str = "!HHH" + fmt_str = "!BBB" inc_len = struct.calcsize(fmt_str) - (dac_enb0, dac_enb1, dac_enb2) = struct.unpack( - fmt_str, hk_data[current_idx : current_idx + inc_len] - ) + enb_tuple = struct.unpack(fmt_str, hk_data[current_idx : current_idx + inc_len]) + (dac_enb0, dac_enb1, dac_enb2) = enb_tuple + dac_enb_str = ["on" if entry == 1 else "off" for entry in enb_tuple] current_idx += inc_len current_idx, dac_channels_raw = gen_six_entry_u16_list( hk_data=hk_data, current_idx=current_idx @@ -391,8 +407,9 @@ def handle_acu_hk_data(printer: FsfwTmTcPrinter, set_id: int, hk_data: bytes): dev_parser = DevicesInfoParser() current_idx = dev_parser.parse(hk_data=hk_data, current_idx=current_idx) pw.dlog("Received ACU Aux HK. Voltages in mV, currents in mA") + pw.dlog( - f"DAC Enable States: DAC 0 {dac_enb0} | DAC 1 {dac_enb1} | DAC 2 {dac_enb2}" + f"DAC Enable States: DAC 0 {dac_enb_str[0]} | DAC 1 {dac_enb_str[1]} | DAC 2 {dac_enb_str[2]}" ) pw.dlog(f"Boot Cause {boot_cause} | Reset Cause {reset_cause}") pw.dlog(