diff --git a/config/object_ids.py b/config/object_ids.py index 82089ba..826da95 100644 --- a/config/object_ids.py +++ b/config/object_ids.py @@ -116,7 +116,7 @@ SUS_3_N_LOC_XFYBZF_PT_YF = bytes([0x44, 0x12, 0x00, 0x35]) SUS_9_R_LOC_XBYBZB_PT_YF = bytes([0x44, 0x12, 0x00, 0x41]) SUS_4_N_LOC_XMYFZF_PT_ZF = bytes([0x44, 0x12, 0x00, 0x36]) -SUS_10_N_LOC_XMYBZF_PT_ZF = bytes([0x44, 0x12, 0x00, 0x42]) +SUS_10_R_LOC_XMYBZF_PT_ZF = bytes([0x44, 0x12, 0x00, 0x42]) SUS_5_N_LOC_XFYMZB_PT_ZB = bytes([0x44, 0x12, 0x00, 0x37]) SUS_11_R_LOC_XBYMZB_PT_ZB = bytes([0x44, 0x12, 0x00, 0x43]) diff --git a/pus_tc/cmd_definitions.py b/pus_tc/cmd_definitions.py index 3b08349..061884f 100644 --- a/pus_tc/cmd_definitions.py +++ b/pus_tc/cmd_definitions.py @@ -1,3 +1,4 @@ +from pus_tc.system.proc import add_proc_cmds from tmtccmd.config import ( add_op_code_entry, add_service_op_code_entry, @@ -481,37 +482,6 @@ def add_ploc_supv_cmds(cmd_dict: ServiceOpCodeDictT): ] = service_ploc_memory_dumper_tuple -def add_proc_cmds(cmd_dict: ServiceOpCodeDictT): - from pus_tc.system.proc import OpCodes, KAI - - op_code_dict = dict() - add_op_code_entry( - op_code_dict=op_code_dict, keys=OpCodes.HEATER, info=KAI.HEATER[1] - ) - add_service_op_code_entry( - srv_op_code_dict=cmd_dict, - name=CustomServiceList.PROCEDURE.value, - info="Procedures", - op_code_entry=op_code_dict, - ) - op_code_dict = dict() - add_op_code_entry( - op_code_dict=op_code_dict, keys=OpCodes.BAT_FT, info=KAI.BAT_FT[1] - ) - add_op_code_entry( - op_code_dict=op_code_dict, keys=OpCodes.PCDU_FT, info=KAI.PCDU_FT[1] - ) - add_op_code_entry( - op_code_dict=op_code_dict, keys=OpCodes.CORE_FT, info=KAI.CORE_FT[1], options={} - ) - add_service_op_code_entry( - srv_op_code_dict=cmd_dict, - name=CustomServiceList.PROCEDURE.value, - info="TV Test Procedures", - op_code_entry=op_code_dict, - ) - - def add_system_cmds(cmd_dict: ServiceOpCodeDictT): from pus_tc.system.acs import AcsOpCodes, SusOpCodes import pus_tc.system.tcs as tcs diff --git a/pus_tc/devs/gps.py b/pus_tc/devs/gps.py index c7577fc..98b470f 100644 --- a/pus_tc/devs/gps.py +++ b/pus_tc/devs/gps.py @@ -42,6 +42,10 @@ def add_gps_cmds(cmd_dict: ServiceOpCodeDictT): ) +class SetIds: + HK = 0 + + def pack_gps_command(object_id: bytes, tc_queue: TcQueueT, op_code: str): if op_code in OpCodes.RESET_GNSS: # TODO: This needs to be re-implemented diff --git a/pus_tc/devs/reaction_wheels.py b/pus_tc/devs/reaction_wheels.py index a74e27c..970f964 100644 --- a/pus_tc/devs/reaction_wheels.py +++ b/pus_tc/devs/reaction_wheels.py @@ -136,8 +136,7 @@ def pack_single_rw_test_into( speed = int(input("Specify speed [0.1 RPM]: ")) ramp_time = int(input("Specify ramp time [ms]: ")) tc_queue.appendleft((QueueCommands.PRINT, f"RW {rw_idx}: {InfoDevs.SPEED}")) - command = pack_set_speed_command(object_id, speed, ramp_time) - command = PusTelecommand(service=8, subservice=128, ssc=40, app_data=command) + command = pack_set_speed_command(object_id, speed, ramp_time, 40) tc_queue.appendleft(command.pack_command_tuple()) if op_code in OpCodesDevs.ON: @@ -196,17 +195,21 @@ def pack_rw_ass_cmds(tc_queue: TcQueueT, object_id: bytes, op_code: str): tc_queue.appendleft(cmd.pack_command_tuple()) -def pack_set_speed_command(object_id: bytes, speed: int, ramp_time: int) -> bytearray: +def pack_set_speed_command( + object_id: bytes, speed: int, ramp_time: int, ssc: int +) -> PusTelecommand: """With this function a command is packed to set the speed of a reaction wheel :param object_id: The object id of the reaction wheel handler. :param speed: Valid speeds are [-65000, -1000] and [1000, 65000]. Values are specified in 0.1 * RPM - :param ramp_time: The time after which the reaction wheel will reached the commanded speed. + :param ramp_time: The time after which the reaction wheel will reach the commanded speed. Valid times are 10 - 10000 ms + :param ssc: Source sequence count """ command_id = RwCommandIds.SET_SPEED command = bytearray() command += object_id + command_id command = command + struct.pack("!i", speed) command = command + ramp_time.to_bytes(length=2, byteorder="big") + command = PusTelecommand(service=8, subservice=128, ssc=ssc, app_data=command) return command diff --git a/pus_tc/devs/star_tracker.py b/pus_tc/devs/star_tracker.py index 73bbc37..d8c9a94 100644 --- a/pus_tc/devs/star_tracker.py +++ b/pus_tc/devs/star_tracker.py @@ -85,6 +85,10 @@ class StarTrackerActionIds: FIRMWARE_UPDATE = 84 +class SetIds: + TEMPERATURE = 25 + + class FileDefs: download_path = "/mnt/sd0/startracker" json_file = "/mnt/sd0/startracker/full.json" diff --git a/pus_tc/devs/sus.py b/pus_tc/devs/sus.py new file mode 100644 index 0000000..be99fc1 --- /dev/null +++ b/pus_tc/devs/sus.py @@ -0,0 +1,2 @@ +class SetIds: + HK = 3 diff --git a/pus_tc/system/proc.py b/pus_tc/system/proc.py index c2cb707..1790416 100644 --- a/pus_tc/system/proc.py +++ b/pus_tc/system/proc.py @@ -1,4 +1,10 @@ -from tmtccmd.config import QueueCommands +from config.definitions import CustomServiceList +from tmtccmd.config import ( + QueueCommands, + ServiceOpCodeDictT, + add_op_code_entry, + add_service_op_code_entry, +) from tmtccmd.tc.definitions import TcQueueT from tmtccmd.tc.pus_3_fsfw_hk import * @@ -21,15 +27,18 @@ from pus_tc.devs.mgms import MgmLis3SetIds as MgmSetIds_0_2 from pus_tc.devs.mgms import MgmRm3100SetIds as MgmSetIds_1_3 from pus_tc.devs.gyros import AdisGyroSetIds as GyroSetIds_0_2 from pus_tc.devs.gyros import L3gGyroSetIds as GyroSetIds_1_3 -from pus_tc.devs.gps import Gnss0SetIds as GnssSetIds_0 -from pus_tc.devs.gps import Gnss1SetIds as GnssSetIds_1 +from pus_tc.devs.gps import SetIds as GpsSetIds from pus_tc.devs.imtq import ImtqSetIds - +from pus_tc.devs.sus import SetIds +from pus_tc.devs.star_tracker import SetIds as StrSetIds +from pus_tc.devs.reaction_wheels import RwSetIds from pus_tc.system.tcs import pack_tcs_sys_commands from pus_tc.system.controllers import pack_controller_commands -from pus_tc.system.acs import pack_acs_command -from pus_tc.devs.imtq import pack_dipole_command +from pus_tc.system.acs import pack_acs_command, pack_sus_cmds +from pus_tc.devs.imtq import pack_imtq_test_into, pack_dipole_command +from pus_tc.devs.star_tracker import pack_star_tracker_commands +from pus_tc.devs.reaction_wheels import pack_rw_ass_cmds, pack_set_speed_command class OpCodes: @@ -43,6 +52,10 @@ class OpCodes: ACS_FT = ["acs-ft"] MGT_FT = ["mgt-ft"] MGT_FT_DP = ["mgt-ft-dp"] + SUS_FT = ["sus-ft"] + STR_FT = ["str-ft"] + RW_FT_ONE_RW = ["rw-ft-one-rw"] + RW_FT_TWO_RWS = ["rw-ft-two-rws"] class KeyAndInfo: @@ -56,6 +69,10 @@ class KeyAndInfo: ACS_FT = ["ACS", "ACS functional test"] MGT_FT = ["MGT", "MGT functional test"] MGT_FT_DP = ["MGT dipole", "MGT functional test with dipole"] + SUS_FT = ["SUS", "SUS functional test"] + STR_FT = ["STR", "STR functional test"] + RW_FT_ONE_RW = ["RW ONE RW", "RW functional test with one RW"] + RW_FT_TWO_RWS = ["RW TWO RWS", "RW functional test with two RWs"] KAI = KeyAndInfo @@ -69,8 +86,14 @@ PROC_INFO_DICT = { KAI.TCS_FT_OFF[0]: [OpCodes.TCS_FT_OFF, KAI.TCS_FT_OFF[1], 120.0, 10.0], KAI.ACS_FT[0]: [OpCodes.ACS_FT, KAI.ACS_FT[1], 120.0, 10.0], KAI.MGT_FT[0]: [OpCodes.MGT_FT, KAI.MGT_FT[1], 120.0, 10.0], - KAI.MGT_FT_DP[0]: [OpCodes.MGT_FT_DP, KAI.MGT_FT_DP[1], 120.0, 10.0], # collection_time for KAI.MGT_FT_DP maybe be reduced as a full 120seconds is not needed after MGTs are tested + KAI.MGT_FT_DP[0]: [OpCodes.MGT_FT_DP, KAI.MGT_FT_DP[1], 10.0, 10.0], + KAI.SUS_FT[0]: [OpCodes.SUS_FT, KAI.SUS_FT[1], 120.0, 10.0], + KAI.STR_FT[0]: [OpCodes.STR_FT, KAI.STR_FT[1], 120.0, 10.0], + # collection_time for KAI.RW_FT_ONE_RW maybe be reduced as a full 120seconds is not needed after RWs are tested + KAI.RW_FT_ONE_RW[0]: [OpCodes.RW_FT_ONE_RW, KAI.RW_FT_ONE_RW[1], 10.0, 1.0], + # collection_time for KAI.RW_FT_ONE_RW maybe be reduced as a full 120seconds is not needed after RWs are tested + KAI.RW_FT_TWO_RWS[0]: [OpCodes.RW_FT_TWO_RWS, KAI.RW_FT_TWO_RWS[1], 10.0, 1.0], } @@ -80,12 +103,29 @@ def generic_print(tc_queue: TcQueueT, info: dict): ) +def add_proc_cmds(cmd_dict: ServiceOpCodeDictT): + + op_code_dict = dict() + for proc_entry in PROC_INFO_DICT.values(): + add_op_code_entry( + op_code_dict=op_code_dict, keys=proc_entry[0], info=proc_entry[1] + ) + add_service_op_code_entry( + srv_op_code_dict=cmd_dict, + name=CustomServiceList.PROCEDURE.value, + info="TV Test Procedures", + op_code_entry=op_code_dict, + ) + + def pack_generic_hk_listening_cmds( tc_queue: TcQueueT, proc_key: str, sid_list: list[bytearray], diag: bool, mgt: bool, + one_rw: bool, + two_rws: bool, ): info = PROC_INFO_DICT[proc_key] collection_time = info[2] @@ -105,6 +145,16 @@ def pack_generic_hk_listening_cmds( tc_queue=tc_queue, ) + elif one_rw is True: + activate_one_rw_in_sequence( + tc_queue=tc_queue, + ) + + elif two_rws is True: + activate_two_rws_in_sequence( + tc_queue=tc_queue, + ) + else: pass @@ -127,14 +177,26 @@ def pack_proc_commands(tc_queue: TcQueueT, op_code: str): key = KAI.BAT_FT[0] sid_list.append(make_sid(oids.BPX_HANDLER_ID, BpxSetIds.GET_HK_SET)) pack_generic_hk_listening_cmds( - tc_queue=tc_queue, proc_key=key, sid_list=sid_list, diag=False, mgt=False + tc_queue=tc_queue, + proc_key=key, + sid_list=sid_list, + diag=False, + mgt=False, + one_rw=False, + two_rws=False, ) if op_code in OpCodes.CORE_FT: key = KAI.CORE_FT[0] sid_list.append(make_sid(oids.CORE_CONTROLLER_ID, CoreSetIds.HK)) pack_generic_hk_listening_cmds( - tc_queue=tc_queue, proc_key=key, sid_list=sid_list, diag=False, mgt=False + tc_queue=tc_queue, + proc_key=key, + sid_list=sid_list, + diag=False, + mgt=False, + one_rw=False, + two_rws=False, ) if op_code in OpCodes.PCDU_FT: @@ -148,14 +210,26 @@ def pack_proc_commands(tc_queue: TcQueueT, op_code: str): sid_list.append(make_sid(oids.PDU_2_HANDLER_ID, GsSetIds.PDU_2_AUX)) sid_list.append(make_sid(oids.ACU_HANDLER_ID, GsSetIds.ACU_AUX)) pack_generic_hk_listening_cmds( - tc_queue=tc_queue, proc_key=key, sid_list=sid_list, diag=False, mgt=False + tc_queue=tc_queue, + proc_key=key, + sid_list=sid_list, + diag=False, + mgt=False, + one_rw=False, + two_rws=False, ) if op_code in OpCodes.RAD_SEN_FT: key = KAI.RAD_SEN_FT[0] sid_list.append(make_sid(oids.RAD_SENSOR_ID, RadSetIds.RAD_SEN_CORE)) pack_generic_hk_listening_cmds( - tc_queue=tc_queue, proc_key=key, sid_list=sid_list, diag=False, mgt=False + tc_queue=tc_queue, + proc_key=key, + sid_list=sid_list, + diag=False, + mgt=False, + one_rw=False, + two_rws=False, ) if op_code in OpCodes.TCS_FT_ON: @@ -181,9 +255,15 @@ def pack_proc_commands(tc_queue: TcQueueT, op_code: str): sid_list.append(make_sid(oids.GYRO_0_ADIS_HANDLER_ID, GyroSetIds_0_2.CFG_HK)) sid_list.append(make_sid(oids.GYRO_1_L3G_HANDLER_ID, GyroSetIds_1_3.CORE_HK)) # GNSS0 - sid_list.append(make_sid(oids.GPS_HANDLER_0_ID, GnssSetIds_0.CORE_HK)) + sid_list.append(make_sid(oids.GPS_HANDLER_0_ID, GpsSetIds.HK)) pack_generic_hk_listening_cmds( - tc_queue=tc_queue, proc_key=key, sid_list=sid_list, diag=False, mgt=False + tc_queue=tc_queue, + proc_key=key, + sid_list=sid_list, + diag=False, + mgt=False, + one_rw=False, + two_rws=False, ) pack_acs_command(tc_queue=tc_queue, op_code="acs-off") @@ -198,9 +278,15 @@ def pack_proc_commands(tc_queue: TcQueueT, op_code: str): sid_list.append(make_sid(oids.GYRO_2_ADIS_HANDLER_ID, GyroSetIds_0_2.CFG_HK)) sid_list.append(make_sid(oids.GYRO_3_L3G_HANDLER_ID, GyroSetIds_1_3.CORE_HK)) # GNSS1 - sid_list.append(make_sid(oids.GPS_HANDLER_1_ID, GnssSetIds_1.CORE_HK)) + sid_list.append(make_sid(oids.GPS_HANDLER_1_ID, GpsSetIds.HK)) pack_generic_hk_listening_cmds( - tc_queue=tc_queue, proc_key=key, sid_list=sid_list, diag=False, mgt=False + tc_queue=tc_queue, + proc_key=key, + sid_list=sid_list, + diag=False, + mgt=False, + one_rw=False, + two_rws=False, ) pack_acs_command(tc_queue=tc_queue, op_code="acs-off") @@ -220,10 +306,16 @@ def pack_proc_commands(tc_queue: TcQueueT, op_code: str): sid_list.append(make_sid(oids.GYRO_2_ADIS_HANDLER_ID, GyroSetIds_0_2.CFG_HK)) sid_list.append(make_sid(oids.GYRO_3_L3G_HANDLER_ID, GyroSetIds_1_3.CORE_HK)) # GNSS0+1 - sid_list.append(make_sid(oids.GPS_HANDLER_0_ID, GnssSetIds_0.CORE_HK)) - sid_list.append(make_sid(oids.GPS_HANDLER_1_ID, GnssSetIds_1.CORE_HK)) + sid_list.append(make_sid(oids.GPS_HANDLER_0_ID, GpsSetIds.HK)) + sid_list.append(make_sid(oids.GPS_HANDLER_1_ID, GpsSetIds.HK)) pack_generic_hk_listening_cmds( - tc_queue=tc_queue, proc_key=key, sid_list=sid_list, diag=False, mgt=False + tc_queue=tc_queue, + proc_key=key, + sid_list=sid_list, + diag=False, + mgt=False, + one_rw=False, + two_rws=False, ) pack_acs_command(tc_queue=tc_queue, op_code="acs-off") @@ -231,39 +323,214 @@ def pack_proc_commands(tc_queue: TcQueueT, op_code: str): if op_code in OpCodes.MGT_FT: key = KAI.MGT_FT[0] - # missing imtq to ON # mgt 1: imtq und hk - - # MISSING: imtq board activation to ON (implementation pending by Jakob) + pack_imtq_test_into(oids.IMTQ_HANDLER_ID, tc_queue=tc_queue, op_code="2") sid_list.append(make_sid(oids.IMTQ_HANDLER_ID, ImtqSetIds.ENG_HK_SET)) sid_list.append(make_sid(oids.IMTQ_HANDLER_ID, ImtqSetIds.CAL_MTM_SET)) sid_list.append(make_sid(oids.IMTQ_HANDLER_ID, ImtqSetIds.RAW_MTM_SET)) pack_generic_hk_listening_cmds( - tc_queue=tc_queue, proc_key=key, sid_list=sid_list, diag=False, mgt=False + tc_queue=tc_queue, + proc_key=key, + sid_list=sid_list, + diag=False, + mgt=False, + one_rw=False, + two_rws=False, ) - # MISSING: imtq board deactivation to OFF (implementation pending by Jakob) - - # missing imtq to ON - # mgt 2.: imtq + dual side + dipole + pack_imtq_test_into(oids.IMTQ_HANDLER_ID, tc_queue=tc_queue, op_code="0") if op_code in OpCodes.MGT_FT_DP: key = KAI.MGT_FT_DP[0] - pack_acs_command(tc_queue=tc_queue, op_code="acs-d") - # MISSING: imtq board activation to ON (implementation pending by Jakob) + pack_acs_command(tc_queue=tc_queue, op_code="acs-d") + # mgt 2.: imtq + dual side + dipole + pack_imtq_test_into( + object_id=oids.IMTQ_HANDLER_ID, tc_queue=tc_queue, op_code="2" + ) sid_list.append(make_sid(oids.IMTQ_HANDLER_ID, ImtqSetIds.ENG_HK_SET)) sid_list.append(make_sid(oids.IMTQ_HANDLER_ID, ImtqSetIds.CAL_MTM_SET)) sid_list.append(make_sid(oids.IMTQ_HANDLER_ID, ImtqSetIds.RAW_MTM_SET)) pack_generic_hk_listening_cmds( - tc_queue=tc_queue, proc_key=key, sid_list=sid_list, diag=False, mgt=True + tc_queue=tc_queue, + proc_key=key, + sid_list=sid_list, + diag=False, + mgt=True, + one_rw=False, + two_rws=False, ) - # MISSING: imtq board deactivation to OFF (implementation pending by Jakob) + pack_imtq_test_into(oids.IMTQ_HANDLER_ID, tc_queue=tc_queue, op_code="0") pack_acs_command(tc_queue=tc_queue, op_code="acs-off") + if op_code in OpCodes.SUS_FT: + key = KAI.SUS_FT[0] + + pack_sus_cmds(tc_queue=tc_queue, op_code="sus-nom") + + sus_n_ids = [ + oids.SUS_0_N_LOC_XFYFZM_PT_XF, + oids.SUS_1_N_LOC_XBYFZM_PT_XB, + oids.SUS_2_N_LOC_XFYBZB_PT_YB, + oids.SUS_3_N_LOC_XFYBZF_PT_YF, + oids.SUS_4_N_LOC_XMYFZF_PT_ZF, + oids.SUS_5_N_LOC_XFYMZB_PT_ZB, + ] + sus_r_ids = [ + oids.SUS_6_R_LOC_XFYBZM_PT_XF, + oids.SUS_7_R_LOC_XBYBZM_PT_XB, + oids.SUS_8_R_LOC_XBYBZB_PT_YB, + oids.SUS_9_R_LOC_XBYBZB_PT_YF, + oids.SUS_10_R_LOC_XMYBZF_PT_ZF, + oids.SUS_11_R_LOC_XBYMZB_PT_ZB, + ] + # SUSs + for nom_sus in sus_n_ids: + sid_list.append(make_sid(nom_sus, SetIds.HK)) + pack_generic_hk_listening_cmds( + tc_queue=tc_queue, + proc_key=key, + sid_list=sid_list, + diag=False, + mgt=False, + one_rw=False, + two_rws=False, + ) + + pack_acs_command(tc_queue=tc_queue, op_code="sus-off") + tc_queue.appendleft((QueueCommands.WAIT, 5.0)) + pack_sus_cmds(tc_queue=tc_queue, op_code="sus-red") + + # SUSs + for red_sus in sus_r_ids: + sid_list.append(make_sid(red_sus, SetIds.HK)) + pack_generic_hk_listening_cmds( + tc_queue=tc_queue, + proc_key=key, + sid_list=sid_list, + diag=False, + mgt=False, + one_rw=False, + two_rws=False, + ) + + pack_acs_command(tc_queue=tc_queue, op_code="sus-off") + tc_queue.appendleft((QueueCommands.WAIT, 5.0)) + pack_sus_cmds(tc_queue=tc_queue, op_code="sus-d") + + # SUSs + for nom_sus in sus_n_ids: + sid_list.append(make_sid(nom_sus, SetIds.HK)) + for red_sus in sus_r_ids: + sid_list.append(make_sid(red_sus, SetIds.HK)) + pack_generic_hk_listening_cmds( + tc_queue=tc_queue, + proc_key=key, + sid_list=sid_list, + diag=False, + mgt=False, + one_rw=False, + two_rws=False, + ) + + pack_acs_command(tc_queue=tc_queue, op_code="sus-off") + + if op_code in OpCodes.STR_FT: + key = KAI.STR_FT[0] + + pack_star_tracker_commands( + object_id=oids.STAR_TRACKER_ID, tc_queue=tc_queue, op_code="2" + ) + + # STR + sid_list.append(make_sid(oids.STAR_TRACKER_ID, StrSetIds.TEMPERATURE)) + pack_generic_hk_listening_cmds( + tc_queue=tc_queue, + proc_key=key, + sid_list=sid_list, + diag=False, + mgt=False, + one_rw=False, + two_rws=False, + ) + + pack_star_tracker_commands( + object_id=oids.STAR_TRACKER_ID, tc_queue=tc_queue, op_code="3" + ) + + if op_code in OpCodes.RW_FT_ONE_RW: + key = KAI.RW_FT_ONE_RW[0] + # RW NORMAL + pack_rw_ass_cmds(object_id=oids.RW_ASSEMBLY, tc_queue=tc_queue, op_code="nml") + + # RW HK für alle RWs nur einzeln + sid_list.append(make_sid(oids.RW1_ID, RwSetIds.STATUS_SET_ID)) + sid_list.append(make_sid(oids.RW1_ID, RwSetIds.TEMPERATURE_SET_ID)) + sid_list.append(make_sid(oids.RW1_ID, RwSetIds.LAST_RESET)) + sid_list.append(make_sid(oids.RW1_ID, RwSetIds.TM_SET)) + sid_list.append(make_sid(oids.RW2_ID, RwSetIds.STATUS_SET_ID)) + sid_list.append(make_sid(oids.RW2_ID, RwSetIds.TEMPERATURE_SET_ID)) + sid_list.append(make_sid(oids.RW2_ID, RwSetIds.LAST_RESET)) + sid_list.append(make_sid(oids.RW2_ID, RwSetIds.TM_SET)) + sid_list.append(make_sid(oids.RW3_ID, RwSetIds.STATUS_SET_ID)) + sid_list.append(make_sid(oids.RW3_ID, RwSetIds.TEMPERATURE_SET_ID)) + sid_list.append(make_sid(oids.RW3_ID, RwSetIds.LAST_RESET)) + sid_list.append(make_sid(oids.RW3_ID, RwSetIds.TM_SET)) + sid_list.append(make_sid(oids.RW4_ID, RwSetIds.STATUS_SET_ID)) + sid_list.append(make_sid(oids.RW4_ID, RwSetIds.TEMPERATURE_SET_ID)) + sid_list.append(make_sid(oids.RW4_ID, RwSetIds.LAST_RESET)) + sid_list.append(make_sid(oids.RW4_ID, RwSetIds.TM_SET)) + + pack_generic_hk_listening_cmds( + tc_queue=tc_queue, + proc_key=key, + sid_list=sid_list, + diag=False, + mgt=False, + one_rw=True, + two_rws=False, + ) + # RW OFF + pack_rw_ass_cmds(object_id=oids.RW_ASSEMBLY, tc_queue=tc_queue, op_code="off") + + # ass command with 2 rws to speed + if op_code in OpCodes.RW_FT_TWO_RWS: + key = KAI.RW_FT_TWO_RWS[0] + # RW NORMAL + pack_rw_ass_cmds(object_id=oids.RW_ASSEMBLY, tc_queue=tc_queue, op_code="nml") + + # RW + sid_list.append(make_sid(oids.RW1_ID, RwSetIds.STATUS_SET_ID)) + sid_list.append(make_sid(oids.RW1_ID, RwSetIds.TEMPERATURE_SET_ID)) + sid_list.append(make_sid(oids.RW1_ID, RwSetIds.LAST_RESET)) + sid_list.append(make_sid(oids.RW1_ID, RwSetIds.TM_SET)) + sid_list.append(make_sid(oids.RW2_ID, RwSetIds.STATUS_SET_ID)) + sid_list.append(make_sid(oids.RW2_ID, RwSetIds.TEMPERATURE_SET_ID)) + sid_list.append(make_sid(oids.RW2_ID, RwSetIds.LAST_RESET)) + sid_list.append(make_sid(oids.RW2_ID, RwSetIds.TM_SET)) + sid_list.append(make_sid(oids.RW3_ID, RwSetIds.STATUS_SET_ID)) + sid_list.append(make_sid(oids.RW3_ID, RwSetIds.TEMPERATURE_SET_ID)) + sid_list.append(make_sid(oids.RW3_ID, RwSetIds.LAST_RESET)) + sid_list.append(make_sid(oids.RW3_ID, RwSetIds.TM_SET)) + sid_list.append(make_sid(oids.RW4_ID, RwSetIds.STATUS_SET_ID)) + sid_list.append(make_sid(oids.RW4_ID, RwSetIds.TEMPERATURE_SET_ID)) + sid_list.append(make_sid(oids.RW4_ID, RwSetIds.LAST_RESET)) + sid_list.append(make_sid(oids.RW4_ID, RwSetIds.TM_SET)) + pack_generic_hk_listening_cmds( + tc_queue=tc_queue, + proc_key=key, + sid_list=sid_list, + diag=False, + mgt=False, + one_rw=False, + two_rws=True, + ) + # RW OFF + pack_rw_ass_cmds(object_id=oids.RW_ASSEMBLY, tc_queue=tc_queue, op_code="off") + """ def listen_to_hk_for_x_seconds( @@ -332,7 +599,7 @@ def activate_mgts_alternately( duration=30000, ) tc_queue.appendleft(command.pack_command_tuple()) - tc_queue.appendleft((QueueCommands.WAIT, 10.0)) + tc_queue.appendleft((QueueCommands.WAIT, 40.0)) command = pack_dipole_command( object_id=oids.IMTQ_HANDLER_ID, @@ -342,7 +609,7 @@ def activate_mgts_alternately( duration=30000, ) tc_queue.appendleft(command.pack_command_tuple()) - tc_queue.appendleft((QueueCommands.WAIT, 10.0)) + tc_queue.appendleft((QueueCommands.WAIT, 40.0)) command = pack_dipole_command( object_id=oids.IMTQ_HANDLER_ID, @@ -352,7 +619,7 @@ def activate_mgts_alternately( duration=30000, ) tc_queue.appendleft(command.pack_command_tuple()) - tc_queue.appendleft((QueueCommands.WAIT, 10.0)) + tc_queue.appendleft((QueueCommands.WAIT, 40.0)) command = pack_dipole_command( object_id=oids.IMTQ_HANDLER_ID, @@ -362,7 +629,7 @@ def activate_mgts_alternately( duration=30000, ) tc_queue.appendleft(command.pack_command_tuple()) - tc_queue.appendleft((QueueCommands.WAIT, 10.0)) + tc_queue.appendleft((QueueCommands.WAIT, 40.0)) command = pack_dipole_command( object_id=oids.IMTQ_HANDLER_ID, @@ -372,7 +639,7 @@ def activate_mgts_alternately( duration=30000, ) tc_queue.appendleft(command.pack_command_tuple()) - tc_queue.appendleft((QueueCommands.WAIT, 10.0)) + tc_queue.appendleft((QueueCommands.WAIT, 40.0)) command = pack_dipole_command( object_id=oids.IMTQ_HANDLER_ID, @@ -382,4 +649,131 @@ def activate_mgts_alternately( duration=30000, ) tc_queue.appendleft(command.pack_command_tuple()) + tc_queue.appendleft((QueueCommands.WAIT, 40.0)) + + +def activate_one_rw_in_sequence( + tc_queue: TcQueueT, +): + # RW1 speed cmd + tc_queue.appendleft((QueueCommands.WAIT, 5.0)) + command = pack_set_speed_command( + object_id=oids.RW1_ID, + speed=20000, + ramp_time=10000, + ) + tc_queue.appendleft(command.pack_command_tuple()) + tc_queue.appendleft((QueueCommands.WAIT, 70.0)) + command = pack_set_speed_command( + object_id=oids.RW1_ID, + speed=0, + ramp_time=10000, + ) + tc_queue.appendleft(command.pack_command_tuple()) tc_queue.appendleft((QueueCommands.WAIT, 10.0)) + + # RW2 speed cmd + command = pack_set_speed_command( + object_id=oids.RW2_ID, + speed=20000, + ramp_time=10000, + ) + tc_queue.appendleft(command.pack_command_tuple()) + tc_queue.appendleft((QueueCommands.WAIT, 70.0)) + command = pack_set_speed_command( + object_id=oids.RW2_ID, + speed=0, + ramp_time=10000, + ) + tc_queue.appendleft(command.pack_command_tuple()) + tc_queue.appendleft((QueueCommands.WAIT, 10.0)) + + # RW3 speed cmd + command = pack_set_speed_command( + object_id=oids.RW3_ID, + speed=20000, + ramp_time=10000, + ) + tc_queue.appendleft(command.pack_command_tuple()) + tc_queue.appendleft((QueueCommands.WAIT, 70.0)) + command = pack_set_speed_command( + object_id=oids.RW3_ID, + speed=0, + ramp_time=10000, + ) + tc_queue.appendleft(command.pack_command_tuple()) + tc_queue.appendleft((QueueCommands.WAIT, 10.0)) + + # RW4 speed cmd + command = pack_set_speed_command( + object_id=oids.RW4_ID, + speed=20000, + ramp_time=10000, + ) + tc_queue.appendleft(command.pack_command_tuple()) + tc_queue.appendleft((QueueCommands.WAIT, 70.0)) + command = pack_set_speed_command( + object_id=oids.RW4_ID, + speed=0, + ramp_time=10000, + ) + tc_queue.appendleft(command.pack_command_tuple()) + tc_queue.appendleft((QueueCommands.WAIT, 5.0)) + + +def activate_two_rws_in_sequence(tc_queue: TcQueueT): + # RW1+3 speed cmd + tc_queue.appendleft((QueueCommands.WAIT, 5.0)) + command = pack_set_speed_command( + object_id=oids.RW1_ID, + speed=-20000, + ramp_time=10000, + ) + tc_queue.appendleft(command.pack_command_tuple()) + command = pack_set_speed_command( + object_id=oids.RW3_ID, + speed=-20000, + ramp_time=10000, + ) + tc_queue.appendleft(command.pack_command_tuple()) + tc_queue.appendleft((QueueCommands.WAIT, 70.0)) + command = pack_set_speed_command( + object_id=oids.RW1_ID, + speed=0, + ramp_time=10000, + ) + tc_queue.appendleft(command.pack_command_tuple()) + command = pack_set_speed_command( + object_id=oids.RW3_ID, + speed=0, + ramp_time=10000, + ) + tc_queue.appendleft(command.pack_command_tuple()) + tc_queue.appendleft((QueueCommands.WAIT, 10.0)) + # RW2+4 speed cmd + command = pack_set_speed_command( + object_id=oids.RW2_ID, + speed=-20000, + ramp_time=10000, + ) + tc_queue.appendleft(command.pack_command_tuple()) + command = pack_set_speed_command( + object_id=oids.RW4_ID, + speed=-20000, + ramp_time=10000, + ) + tc_queue.appendleft(command.pack_command_tuple()) + tc_queue.appendleft((QueueCommands.WAIT, 70.0)) + command = pack_set_speed_command( + object_id=oids.RW2_ID, + speed=0, + ramp_time=10000, + ) + tc_queue.appendleft(command.pack_command_tuple()) + command = pack_set_speed_command( + object_id=oids.RW4_ID, + speed=0, + ramp_time=10000, + ) + tc_queue.appendleft(command.pack_command_tuple()) + tc_queue.appendleft((QueueCommands.WAIT, 5.0)) diff --git a/requirements.txt b/requirements.txt index f444d16..68c11ef 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1 +1 @@ -tmtccmd >= 2.2.1 +tmtccmd >= 2.2.2 diff --git a/setup.cfg b/setup.cfg index c4fd97e..10d173c 100644 --- a/setup.cfg +++ b/setup.cfg @@ -27,7 +27,7 @@ classifiers = [options] install_requires = - tmtccmd >= 2.2.1 + tmtccmd >= 2.2.2 packages = find: python_requires = >=3.8