eive-tmtc/pus_tc/system/proc.py

387 lines
14 KiB
Python
Raw Normal View History

2022-05-18 18:39:18 +02:00
from tmtccmd.config import QueueCommands
from tmtccmd.tc.definitions import TcQueueT
2022-05-18 20:00:59 +02:00
from tmtccmd.tc.pus_3_fsfw_hk import *
2022-05-23 18:33:35 +02:00
2022-05-20 16:40:58 +02:00
"""
2022-05-19 18:14:38 +02:00
from config.object_ids import (
BPX_HANDLER_ID,
P60_DOCK_HANDLER,
PDU_1_HANDLER_ID,
PDU_2_HANDLER_ID,
ACU_HANDLER_ID,
2022-05-19 18:47:23 +02:00
CORE_CONTROLLER_ID,
2022-05-19 18:14:38 +02:00
)
2022-05-20 16:40:58 +02:00
"""
2022-05-19 18:47:23 +02:00
import config.object_ids as oids
2022-05-18 20:00:59 +02:00
from pus_tc.devs.bpx_batt import BpxSetIds
2022-05-19 18:47:23 +02:00
from pus_tc.system.core import SetIds as CoreSetIds
2022-05-19 18:14:38 +02:00
from gomspace.gomspace_common import SetIds as GsSetIds
2022-05-23 15:28:41 +02:00
from pus_tc.devs.rad_sensor import SetIds as RadSetIds
2022-05-23 11:53:31 +02:00
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
2022-05-23 15:28:41 +02:00
from pus_tc.devs.gps import Gnss0SetIds as GnssSetIds_0
from pus_tc.devs.gps import Gnss1SetIds as GnssSetIds_1
from pus_tc.devs.imtq import ImtqSetIds
2022-05-23 11:53:31 +02:00
2022-05-20 16:40:58 +02:00
from pus_tc.system.tcs import pack_tcs_sys_commands
from pus_tc.system.controllers import pack_controller_commands
2022-05-23 11:53:31 +02:00
from pus_tc.system.acs import pack_acs_command
2022-05-18 18:39:18 +02:00
class OpCodes:
HEATER = ["0", "heater"]
2022-05-18 20:00:59 +02:00
BAT_FT = ["bat-ft"]
2022-05-19 18:47:23 +02:00
CORE_FT = ["core-ft"]
2022-05-19 18:14:38 +02:00
PCDU_FT = ["pcdu-ft"]
2022-05-20 16:40:58 +02:00
RAD_SEN_FT = ["rad-sen-ft"]
2022-05-23 15:28:41 +02:00
TCS_FT_ON = ["tcs-ft-on"]
TCS_FT_OFF = ["tcs-ft-off"]
2022-05-23 11:53:31 +02:00
ACS_FT = ["acs-ft"]
2022-05-23 15:28:41 +02:00
MGT_FT = ["mgt-ft"]
MGT_FT_DP = ["mgt-ft-dp"]
2022-05-18 18:39:18 +02:00
2022-05-19 18:47:23 +02:00
class KeyAndInfo:
HEATER = ["Heater", "heater procedure"]
BAT_FT = ["BPX Battery", "battery functional test"]
CORE_FT = ["OBC", "OBC functional test"]
2022-05-20 16:40:58 +02:00
PCDU_FT = ["PCDU", "PCDU functional test"]
RAD_SEN_FT = ["Radiation Sensor", "Radiation Sensor functional test"]
2022-05-23 15:28:41 +02:00
TCS_FT_ON = ["TCS Act.", "TCS functional test activation"]
TCS_FT_OFF = ["TCS Deact.", "TCS functional test deactivation"]
2022-05-23 11:53:31 +02:00
ACS_FT = ["ACS", "ACS functional test"]
2022-05-23 15:28:41 +02:00
MGT_FT = ["MGT", "MGT functional test"]
MGT_FT_DP = ["MGT dipole", "MGT functional test with dipole"]
2022-05-19 18:47:23 +02:00
KAI = KeyAndInfo
PROC_INFO_DICT = {
KAI.BAT_FT[0]: [OpCodes.BAT_FT, KAI.BAT_FT[1], 120.0, 10.0],
2022-05-20 16:40:58 +02:00
KAI.CORE_FT[0]: [OpCodes.CORE_FT, KAI.CORE_FT[1], 120.0, 10.0],
KAI.PCDU_FT[0]: [OpCodes.PCDU_FT, KAI.PCDU_FT[1], 120.0, 10.0],
KAI.RAD_SEN_FT[0]: [OpCodes.RAD_SEN_FT, KAI.RAD_SEN_FT[1], 120.0, 10.0],
2022-05-23 15:28:41 +02:00
KAI.TCS_FT_ON[0]: [OpCodes.TCS_FT_ON, KAI.TCS_FT_ON[1], 120.0, 10.0],
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],
2022-05-19 18:47:23 +02:00
}
2022-05-20 16:40:58 +02:00
def generic_print(tc_queue: TcQueueT, info: dict):
2022-05-19 18:47:23 +02:00
tc_queue.appendleft(
2022-05-20 16:40:58 +02:00
(QueueCommands.PRINT, f"Executing {info[1]} Procedure (OpCodes: {info[0]})")
2022-05-19 18:47:23 +02:00
)
def pack_generic_hk_listening_cmds(
2022-05-24 14:58:13 +02:00
tc_queue: TcQueueT, proc_key: str, sid_list: bytes, diag: bool
2022-05-19 18:47:23 +02:00
):
2022-05-20 16:40:58 +02:00
info = PROC_INFO_DICT[proc_key]
generic_print(tc_queue=tc_queue, info=info)
2022-05-24 14:58:13 +02:00
for sid in sid_list:
enable_listen_to_hk_for_x_seconds(
diag=diag,
tc_queue=tc_queue,
device=proc_key,
sid=sid,
interval_seconds=info[3],
)
""" OLD
2022-05-19 18:47:23 +02:00
listen_to_hk_for_x_seconds(
diag=diag,
tc_queue=tc_queue,
device=proc_key,
sid=sid,
2022-05-20 16:40:58 +02:00
interval_seconds=info[3],
collection_time=info[2],
2022-05-19 18:47:23 +02:00
)
2022-05-24 14:58:13 +02:00
"""
2022-05-18 18:39:18 +02:00
def pack_proc_commands(tc_queue: TcQueueT, op_code: str):
2022-05-24 14:58:13 +02:00
sid_list = []
2022-05-18 20:00:59 +02:00
if op_code in OpCodes.BAT_FT:
2022-05-19 18:47:23 +02:00
key = KAI.BAT_FT[0]
2022-05-20 16:40:58 +02:00
sid = make_sid(oids.BPX_HANDLER_ID, BpxSetIds.GET_HK_SET)
pack_generic_hk_listening_cmds(
tc_queue=tc_queue, proc_key=key, sid=sid, diag=False
)
if op_code in OpCodes.CORE_FT:
key = KAI.CORE_FT[0]
2022-05-24 14:58:13 +02:00
sid_list += make_sid(oids.CORE_CONTROLLER_ID, CoreSetIds.HK)
2022-05-19 18:47:23 +02:00
pack_generic_hk_listening_cmds(
2022-05-24 14:58:13 +02:00
tc_queue=tc_queue, proc_key=key, sid_list=sid_list, diag=False
2022-05-18 20:00:59 +02:00
)
2022-05-19 18:14:38 +02:00
if op_code in OpCodes.PCDU_FT:
2022-05-19 18:47:23 +02:00
key = KAI.PCDU_FT[0]
2022-05-20 16:40:58 +02:00
sid = make_sid(oids.P60_DOCK_HANDLER, GsSetIds.P60_CORE)
pack_generic_hk_listening_cmds(
tc_queue=tc_queue, proc_key=key, sid=sid, diag=False
)
sid = make_sid(oids.PDU_1_HANDLER_ID, GsSetIds.PDU_1_CORE)
pack_generic_hk_listening_cmds(
tc_queue=tc_queue, proc_key=key, sid=sid, diag=False
)
sid = make_sid(oids.PDU_2_HANDLER_ID, GsSetIds.PDU_2_CORE)
pack_generic_hk_listening_cmds(
tc_queue=tc_queue, proc_key=key, sid=sid, diag=False
)
2022-05-24 14:58:13 +02:00
sid = make_sid(oids.ACU_HANDLER_ID, GsSetIds.ACU_CORE)
2022-05-19 18:47:23 +02:00
pack_generic_hk_listening_cmds(
tc_queue=tc_queue, proc_key=key, sid=sid, diag=False
2022-05-18 20:00:59 +02:00
)
2022-05-20 16:40:58 +02:00
sid = make_sid(oids.P60_DOCK_HANDLER, GsSetIds.P60_AUX)
pack_generic_hk_listening_cmds(
tc_queue=tc_queue, proc_key=key, sid=sid, diag=False
)
sid = make_sid(oids.PDU_1_HANDLER_ID, GsSetIds.PDU_1_AUX)
pack_generic_hk_listening_cmds(
tc_queue=tc_queue, proc_key=key, sid=sid, diag=False
)
sid = make_sid(oids.PDU_2_HANDLER_ID, GsSetIds.PDU_2_AUX)
pack_generic_hk_listening_cmds(
tc_queue=tc_queue, proc_key=key, sid=sid, diag=False
)
2022-05-24 14:58:13 +02:00
sid = make_sid(oids.ACU_HANDLER_ID, GsSetIds.ACU_AUX)
pack_generic_hk_listening_cmds(
tc_queue=tc_queue, proc_key=key, sid=sid, diag=False
)
2022-05-20 16:40:58 +02:00
if op_code in OpCodes.RAD_SEN_FT:
2022-05-23 11:53:31 +02:00
key = KAI.RAD_SEN_FT[0]
2022-05-23 15:28:41 +02:00
sid = make_sid(oids.RAD_SENSOR_ID, RadSetIds.RAD_SEN_CORE)
2022-05-20 16:40:58 +02:00
pack_generic_hk_listening_cmds(
tc_queue=tc_queue, proc_key=key, sid=sid, diag=False
)
2022-05-23 15:28:41 +02:00
if op_code in OpCodes.TCS_FT_ON:
# pack_tcs_sys_commands(tc_queue=tc_queue, op_code="tcs-normal")
2022-05-20 16:40:58 +02:00
pack_controller_commands(tc_queue=tc_queue, op_code="thermal_controller")
2022-05-23 15:28:41 +02:00
if op_code in OpCodes.TCS_FT_OFF:
# pack_tcs_sys_commands(tc_queue=tc_queue, op_code="tcs-off")
2022-05-20 16:40:58 +02:00
pack_controller_commands(tc_queue=tc_queue, op_code="thermal_controller")
2022-05-23 11:53:31 +02:00
if op_code in OpCodes.ACS_FT:
key = KAI.ACS_FT[0]
pack_acs_command(tc_queue=tc_queue, op_code="acs-a")
2022-05-23 18:33:35 +02:00
# MGMs
2022-05-23 11:53:31 +02:00
sid = make_sid(oids.MGM_0_LIS3_HANDLER_ID, MgmSetIds_0_2.CORE_HK)
pack_generic_hk_listening_cmds(
tc_queue=tc_queue, proc_key=key, sid=sid, diag=False
)
sid = make_sid(oids.MGM_1_RM3100_HANDLER_ID, MgmSetIds_1_3.CORE_HK)
pack_generic_hk_listening_cmds(
tc_queue=tc_queue, proc_key=key, sid=sid, diag=False
)
2022-05-23 18:33:35 +02:00
# Gyros
2022-05-23 11:53:31 +02:00
sid = make_sid(oids.GYRO_0_ADIS_HANDLER_ID, GyroSetIds_0_2.CORE_HK)
pack_generic_hk_listening_cmds(
tc_queue=tc_queue, proc_key=key, sid=sid, diag=False
)
sid = make_sid(oids.GYRO_0_ADIS_HANDLER_ID, GyroSetIds_0_2.CFG_HK)
pack_generic_hk_listening_cmds(
tc_queue=tc_queue, proc_key=key, sid=sid, diag=False
)
sid = make_sid(oids.GYRO_1_L3G_HANDLER_ID, GyroSetIds_1_3.CORE_HK)
pack_generic_hk_listening_cmds(
tc_queue=tc_queue, proc_key=key, sid=sid, diag=False
)
2022-05-23 18:33:35 +02:00
# GNSS0
2022-05-23 15:28:41 +02:00
sid = make_sid(oids.GPS_HANDLER_0_ID, GnssSetIds_0.CORE_HK)
pack_generic_hk_listening_cmds(
tc_queue=tc_queue, proc_key=key, sid=sid, diag=False
)
2022-05-23 11:53:31 +02:00
pack_acs_command(tc_queue=tc_queue, op_code="acs-off")
tc_queue.appendleft((QueueCommands.WAIT, 5.0))
pack_acs_command(tc_queue=tc_queue, op_code="acs-b")
2022-05-23 18:33:35 +02:00
# MGMs
2022-05-23 11:53:31 +02:00
sid = make_sid(oids.MGM_2_LIS3_HANDLER_ID, MgmSetIds_0_2.CORE_HK)
pack_generic_hk_listening_cmds(
tc_queue=tc_queue, proc_key=key, sid=sid, diag=False
)
sid = make_sid(oids.MGM_3_RM3100_HANDLER_ID, MgmSetIds_1_3.CORE_HK)
pack_generic_hk_listening_cmds(
tc_queue=tc_queue, proc_key=key, sid=sid, diag=False
)
2022-05-23 18:33:35 +02:00
# Gyros
2022-05-23 11:53:31 +02:00
sid = make_sid(oids.GYRO_2_ADIS_HANDLER_ID, GyroSetIds_0_2.CORE_HK)
pack_generic_hk_listening_cmds(
tc_queue=tc_queue, proc_key=key, sid=sid, diag=False
)
sid = make_sid(oids.GYRO_2_ADIS_HANDLER_ID, GyroSetIds_0_2.CFG_HK)
pack_generic_hk_listening_cmds(
tc_queue=tc_queue, proc_key=key, sid=sid, diag=False
)
sid = make_sid(oids.GYRO_3_L3G_HANDLER_ID, GyroSetIds_1_3.CORE_HK)
pack_generic_hk_listening_cmds(
tc_queue=tc_queue, proc_key=key, sid=sid, diag=False
)
2022-05-23 18:33:35 +02:00
# GNSS1
2022-05-23 15:28:41 +02:00
sid = make_sid(oids.GPS_HANDLER_1_ID, GnssSetIds_1.CORE_HK)
pack_generic_hk_listening_cmds(
tc_queue=tc_queue, proc_key=key, sid=sid, diag=False
)
2022-05-23 11:53:31 +02:00
pack_acs_command(tc_queue=tc_queue, op_code="acs-off")
tc_queue.appendleft((QueueCommands.WAIT, 5.0))
pack_acs_command(tc_queue=tc_queue, op_code="acs-d")
2022-05-23 18:33:35 +02:00
# MGMs
2022-05-23 11:53:31 +02:00
sid = make_sid(oids.MGM_0_LIS3_HANDLER_ID, MgmSetIds_0_2.CORE_HK)
pack_generic_hk_listening_cmds(
tc_queue=tc_queue, proc_key=key, sid=sid, diag=False
)
sid = make_sid(oids.MGM_1_RM3100_HANDLER_ID, MgmSetIds_1_3.CORE_HK)
pack_generic_hk_listening_cmds(
tc_queue=tc_queue, proc_key=key, sid=sid, diag=False
)
sid = make_sid(oids.MGM_2_LIS3_HANDLER_ID, MgmSetIds_0_2.CORE_HK)
pack_generic_hk_listening_cmds(
tc_queue=tc_queue, proc_key=key, sid=sid, diag=False
)
sid = make_sid(oids.MGM_3_RM3100_HANDLER_ID, MgmSetIds_1_3.CORE_HK)
pack_generic_hk_listening_cmds(
tc_queue=tc_queue, proc_key=key, sid=sid, diag=False
)
2022-05-23 18:33:35 +02:00
# Gyros
2022-05-23 11:53:31 +02:00
sid = make_sid(oids.GYRO_0_ADIS_HANDLER_ID, GyroSetIds_0_2.CORE_HK)
pack_generic_hk_listening_cmds(
tc_queue=tc_queue, proc_key=key, sid=sid, diag=False
)
sid = make_sid(oids.GYRO_0_ADIS_HANDLER_ID, GyroSetIds_0_2.CFG_HK)
pack_generic_hk_listening_cmds(
tc_queue=tc_queue, proc_key=key, sid=sid, diag=False
)
sid = make_sid(oids.GYRO_1_L3G_HANDLER_ID, GyroSetIds_1_3.CORE_HK)
pack_generic_hk_listening_cmds(
tc_queue=tc_queue, proc_key=key, sid=sid, diag=False
)
sid = make_sid(oids.GYRO_2_ADIS_HANDLER_ID, GyroSetIds_0_2.CORE_HK)
pack_generic_hk_listening_cmds(
tc_queue=tc_queue, proc_key=key, sid=sid, diag=False
)
sid = make_sid(oids.GYRO_2_ADIS_HANDLER_ID, GyroSetIds_0_2.CFG_HK)
pack_generic_hk_listening_cmds(
tc_queue=tc_queue, proc_key=key, sid=sid, diag=False
)
sid = make_sid(oids.GYRO_3_L3G_HANDLER_ID, GyroSetIds_1_3.CORE_HK)
pack_generic_hk_listening_cmds(
tc_queue=tc_queue, proc_key=key, sid=sid, diag=False
)
2022-05-23 18:33:35 +02:00
# GNSS0+1
2022-05-23 15:28:41 +02:00
sid = make_sid(oids.GPS_HANDLER_0_ID, GnssSetIds_0.CORE_HK)
pack_generic_hk_listening_cmds(
tc_queue=tc_queue, proc_key=key, sid=sid, diag=False
)
sid = make_sid(oids.GPS_HANDLER_1_ID, GnssSetIds_1.CORE_HK)
pack_generic_hk_listening_cmds(
tc_queue=tc_queue, proc_key=key, sid=sid, diag=False
)
2022-05-23 11:53:31 +02:00
pack_acs_command(tc_queue=tc_queue, op_code="acs-off")
2022-05-23 15:28:41 +02:00
if op_code in OpCodes.MGT_FT:
key = KAI.MGT_FT[0]
sid = make_sid(oids.IMTQ_HANDLER_ID, ImtqSetIds.ENG_HK_SET)
pack_generic_hk_listening_cmds(
tc_queue=tc_queue, proc_key=key, sid=sid, diag=False
)
sid = make_sid(oids.IMTQ_HANDLER_ID, ImtqSetIds.CAL_MTM_SET)
pack_generic_hk_listening_cmds(
tc_queue=tc_queue, proc_key=key, sid=sid, diag=False
)
sid = make_sid(oids.IMTQ_HANDLER_ID, ImtqSetIds.RAW_MTM_SET)
pack_generic_hk_listening_cmds(
tc_queue=tc_queue, proc_key=key, sid=sid, diag=False
)
2022-05-23 18:33:35 +02:00
# mgt 1: imtq und hk
# mgt 2.: imtq + dual side + dipole
2022-05-23 15:28:41 +02:00
2022-05-23 16:42:27 +02:00
if op_code in OpCodes.MGT_FT_DP:
key = KAI.MGT_FT[0]
pack_acs_command(tc_queue=tc_queue, op_code="acs-a")
sid = make_sid(oids.IMTQ_HANDLER_ID, ImtqSetIds.ENG_HK_SET)
pack_generic_hk_listening_cmds(
tc_queue=tc_queue, proc_key=key, sid=sid, diag=False
)
sid = make_sid(oids.IMTQ_HANDLER_ID, ImtqSetIds.CAL_MTM_SET)
pack_generic_hk_listening_cmds(
tc_queue=tc_queue, proc_key=key, sid=sid, diag=False
)
sid = make_sid(oids.IMTQ_HANDLER_ID, ImtqSetIds.RAW_MTM_SET)
pack_generic_hk_listening_cmds(
tc_queue=tc_queue, proc_key=key, sid=sid, diag=False
)
pack_acs_command(tc_queue=tc_queue, op_code="acs-off")
2022-05-23 15:28:41 +02:00
2022-05-19 18:14:38 +02:00
def listen_to_hk_for_x_seconds(
tc_queue: TcQueueT,
diag: bool,
device: str,
sid: bytes,
interval_seconds: float,
collection_time: float,
):
tc_queue.appendleft((QueueCommands.PRINT, f"Enabling periodic HK for {device}"))
cmd_tuple = enable_periodic_hk_command_with_interval(
diag=diag, sid=sid, interval_seconds=interval_seconds, ssc=0
)
for cmd in cmd_tuple:
tc_queue.appendleft(cmd.pack_command_tuple())
tc_queue.appendleft((QueueCommands.WAIT, collection_time))
tc_queue.appendleft((QueueCommands.PRINT, f"Disabling periodic HK for {device}"))
tc_queue.appendleft(
disable_periodic_hk_command(diag=diag, sid=sid, ssc=0).pack_command_tuple()
)
2022-05-24 14:58:13 +02:00
def enable_listen_to_hk_for_x_seconds(
tc_queue: TcQueueT,
diag: bool,
device: str,
sid: bytes,
interval_seconds: float,
):
tc_queue.appendleft((QueueCommands.PRINT, f"Enabling periodic HK for {device}"))
cmd_tuple = enable_periodic_hk_command_with_interval(
diag=diag, sid=sid, interval_seconds=interval_seconds, ssc=0
)
for cmd in cmd_tuple:
tc_queue.appendleft(cmd.pack_command_tuple())
tc_queue.appendleft((QueueCommands.WAIT, 2.0))
def disable_listen_to_hk_for_x_seconds(
tc_queue: TcQueueT,
diag: bool,
device: str,
sid: bytes,
):
tc_queue.appendleft((QueueCommands.PRINT, f"Disabling periodic HK for {device}"))
tc_queue.appendleft(
disable_periodic_hk_command(diag=diag, sid=sid, ssc=0).pack_command_tuple()
)