import enum from config.object_ids import PDU_1_HANDLER_ID from gomspace.gomspace_common import pack_set_param_command, Channel from gomspace.gomspace_pdu_definitions import PDU_CONFIG_LIST from tmtccmd.tc import DefaultPusQueueHelper from tmtccmd.util import ObjectIdU32 class PowerOpCodes: # PDU 1 TCS_ON = ["tcs-on"] TCS_OFF = ["tcs-off"] SYRLINKS_ON = ["syrlinks-on"] SYRLINKS_OFF = ["syrlinks-off"] STAR_TRACKER_ON = ["str-on"] STAR_TRACKER_OFF = ["str-off"] MGT_ON = ["mgt-on"] MGT_OFF = ["mgt-off"] SUS_N_ON = ["sus-on"] SUS_N_OFF = ["sus-off"] SCEX_ON = ["sus-on"] SCEX_OFF = ["sus-off"] PLOC_ON = ["ploc-on"] PLOC_OFF = ["ploc-off"] ACS_A_ON = ["acs-a-on"] ACS_A_OFF = ["acs-a-off"] # PDU 2 PL_PCDU_VBAT_NOM_ON = ["plpcdu-vbat-nom-on"] PL_PCDU_VBAT_NOM_OFF = ["plpcdu-vbat-nom-off"] RW_ON = ["rw-on"] RW_OFF = ["rw-off"] HEATER_ON = ["heater-on"] HEATER_OFF = ["heater-off"] SUS_R_ON = ["sus-red-on"] SUS_R_OFF = ["sus-red-off"] SOLAR_ARRAY_DEPL_ON = ["sa-depl-on"] SOLAR_ARRAY_DEPL_OFF = ["sa-depl-off"] PL_PCDU_VBAT_RED_ON = ["plpcdu-vbat-red-on"] PL_PCDU_VBAT_RED_OFF = ["plpcdu-vbat-red-off"] ACS_B_ON = ["acs-b-on"] ACS_B_OFF = ["acs-b-off"] INFO_CORE = ["info"] INFO_AUX = ["info-aux"] INFO_ALL = ["info-all"] def get_power_obj_id(op_code: PowerOpCodes) -> ObjectIdU32: pass def pack_power_commands(q: DefaultPusQueueHelper, op_code: str): if op_code in PowerOpCodes.TCS_ON: object_id = PDU_1_HANDLER_ID tcs_on_cmd(object_id, q) if op_code in PowerOpCodes.TCS_OFF: object_id = PDU_1_HANDLER_ID tcs_off_cmd(object_id, q) if op_code in PowerOpCodes.STAR_TRACKER_ON: object_id = PDU_1_HANDLER_ID tcs_on_cmd(object_id, q) def tcs_on_cmd(object_id: ObjectIdU32, q: DefaultPusQueueHelper): generic_on_cmd(object_id, q, "PDU1: Turn TCS board on", 0) def tcs_off_cmd(object_id: ObjectIdU32, q: DefaultPusQueueHelper): generic_off_cmd(object_id, q, "PDU1: Turn TCS board off", 0) def str_on_cmd(object_id: ObjectIdU32, q: DefaultPusQueueHelper): generic_on_cmd(object_id, q, "PDU1: Turn Star Tracker on", 2) def str_off_cmd(object_id: ObjectIdU32, q: DefaultPusQueueHelper): generic_off_cmd(object_id, q, "PDU1: Turn Star Tracker off", 2) def generic_on_cmd( object_id: ObjectIdU32, q: DefaultPusQueueHelper, info_str: str, out_idx: int ): q.add_log_cmd(info_str) q.add_pus_tc( pack_set_param_command( object_id.as_bytes, PDU_CONFIG_LIST[out_idx].parameter_address, PDU_CONFIG_LIST[out_idx].parameter_size, Channel.on, ) ) def generic_off_cmd( object_id: ObjectIdU32, q: DefaultPusQueueHelper, info_str: str, out_idx: int ): q.add_log_cmd(info_str) q.add_pus_tc( pack_set_param_command( object_id.as_bytes, PDU_CONFIG_LIST[out_idx].parameter_address, PDU_CONFIG_LIST[out_idx].parameter_size, Channel.off, ) )