from config.definitions import CustomServiceList from config.object_ids import BPX_HANDLER_ID from tmtccmd import DefaultProcedureInfo, TcHandlerBase from tmtccmd.tc import DefaultPusQueueHelper, service_provider from tmtccmd.tc.decorator import ServiceProviderParams from tmtccmd.tc.pus_8_funccmd import make_fsfw_action_cmd from tmtccmd.tc.pus_3_fsfw_hk import generate_one_hk_command, make_sid class BpxSetIds: GET_HK_SET = 0 GET_CFG_SET = 5 class BpxActionIds: REBOOT = 2 RESET_COUNTERS = 3 SET_CFG = 4 GET_CFG = 5 class BpxOpCodes: HK = ["0", "hk"] RST_BOOT_CNT = ["1", "rst_boot_cnt"] REQUEST_CFG = ["2", "cfg"] REQUEST_CFG_HK = ["3", "cfg_hk"] REBOOT = ["4", "reboot"] @service_provider(CustomServiceList.BPX_BATTERY.value) def pack_bpx_commands(p: ServiceProviderParams): op_code = p.op_code q = p.queue_helper if op_code in BpxOpCodes.HK: q.add_log_cmd("Requesting BPX battery HK set") sid = make_sid(object_id=BPX_HANDLER_ID, set_id=BpxSetIds.GET_HK_SET) q.add_pus_tc(generate_one_hk_command(sid=sid)) if op_code in BpxOpCodes.RST_BOOT_CNT: q.add_log_cmd("Resetting reboot counters") q.add_pus_tc( make_fsfw_action_cmd( object_id=BPX_HANDLER_ID, action_id=BpxActionIds.RESET_COUNTERS ) ) if op_code in BpxOpCodes.REQUEST_CFG: q.add_log_cmd("Requesting configuration struct") q.add_pus_tc( make_fsfw_action_cmd( object_id=BPX_HANDLER_ID, action_id=BpxActionIds.GET_CFG ) ) if op_code in BpxOpCodes.REQUEST_CFG_HK: q.add_log_cmd("Requesting configuration struct HK") sid = make_sid(object_id=BPX_HANDLER_ID, set_id=BpxSetIds.GET_CFG_SET) q.add_pus_tc(generate_one_hk_command(sid=sid)) if op_code in BpxOpCodes.REBOOT: q.add_log_cmd("Rebooting BPX battery") q.add_pus_tc( make_fsfw_action_cmd( object_id=BPX_HANDLER_ID, action_id=BpxActionIds.REBOOT ) )