351 lines
14 KiB
Python
351 lines
14 KiB
Python
import argparse
|
|
from typing import Union, Dict
|
|
|
|
from tmtccmd.config.definitions import (
|
|
ServiceOpCodeDictT,
|
|
HkReplyUnpacked,
|
|
DataReplyUnpacked,
|
|
)
|
|
from tmtccmd.tm.service_3_base import Service3Base
|
|
from tmtccmd.tc.definitions import TcQueueT
|
|
from tmtccmd.utility.retval import RetvalDictT
|
|
from tmtccmd.pus.obj_id import ObjectIdDictT
|
|
from tmtccmd.com_if.com_interface_base import CommunicationInterface
|
|
from tmtccmd.core.backend import TmTcHandler
|
|
from tmtccmd.config.hook import TmTcHookBase
|
|
from tmtccmd.utility.tmtc_printer import FsfwTmTcPrinter
|
|
from tmtccmd.config.globals import OpCodeDictKeys
|
|
|
|
from config.definitions import CustomServiceList
|
|
from config.retvals import get_retval_dict
|
|
|
|
|
|
class EiveHookObject(TmTcHookBase):
|
|
def __init__(self, json_cfg_path: str):
|
|
super().__init__(json_cfg_path=json_cfg_path)
|
|
|
|
def get_service_op_code_dictionary(self) -> ServiceOpCodeDictT:
|
|
from tmtccmd.config.globals import get_default_service_op_code_dict
|
|
|
|
service_op_code_dict = get_default_service_op_code_dict()
|
|
get_eive_service_op_code_dict(service_op_code_dict=service_op_code_dict)
|
|
return service_op_code_dict
|
|
|
|
def assign_communication_interface(
|
|
self, com_if_key: str
|
|
) -> Union[CommunicationInterface, None]:
|
|
from tmtccmd.config.com_if import create_communication_interface_default
|
|
|
|
return create_communication_interface_default(
|
|
com_if_key=com_if_key,
|
|
json_cfg_path=self.json_cfg_path,
|
|
space_packet_ids=(0x0865,),
|
|
)
|
|
|
|
def perform_mode_operation(self, tmtc_backend: TmTcHandler, mode: int):
|
|
from config.custom_mode_op import custom_mode_operation
|
|
|
|
custom_mode_operation(mode=mode, tmtc_backend=tmtc_backend)
|
|
|
|
def pack_service_queue(self, service: int, op_code: str, service_queue: TcQueueT):
|
|
from pus_tc.tc_packer_hook import pack_service_queue_user
|
|
|
|
pack_service_queue_user(
|
|
service=service, op_code=op_code, service_queue=service_queue
|
|
)
|
|
|
|
def get_object_ids(self) -> ObjectIdDictT:
|
|
from config.object_ids import get_object_ids
|
|
|
|
return get_object_ids()
|
|
|
|
def get_retval_dict(self) -> RetvalDictT:
|
|
return get_retval_dict()
|
|
|
|
|
|
def get_eive_service_op_code_dict(service_op_code_dict: ServiceOpCodeDictT):
|
|
from pus_tc.cmd_definitions import (
|
|
add_bpx_cmd_definitions,
|
|
add_core_controller_definitions,
|
|
add_pcdu_cmds,
|
|
add_pl_pcdu_cmds,
|
|
add_imtq_cmds,
|
|
add_rw_cmds,
|
|
add_rad_sens_cmds,
|
|
add_ploc_mpsoc_cmds,
|
|
add_ploc_supv_cmds,
|
|
add_system_cmds,
|
|
)
|
|
from pus_tc.devs.gps import GpsOpCodes
|
|
|
|
add_bpx_cmd_definitions(cmd_dict=service_op_code_dict)
|
|
add_core_controller_definitions(cmd_dict=service_op_code_dict)
|
|
add_pl_pcdu_cmds(cmd_dict=service_op_code_dict)
|
|
add_pcdu_cmds(cmd_dict=service_op_code_dict)
|
|
add_imtq_cmds(cmd_dict=service_op_code_dict)
|
|
add_rad_sens_cmds(cmd_dict=service_op_code_dict)
|
|
add_rw_cmds(cmd_dict=service_op_code_dict)
|
|
add_ploc_mpsoc_cmds(cmd_dict=service_op_code_dict)
|
|
add_ploc_supv_cmds(cmd_dict=service_op_code_dict)
|
|
add_system_cmds(cmd_dict=service_op_code_dict)
|
|
|
|
op_code_dict = {
|
|
GpsOpCodes.RESET_GNSS.value: ("Reset GPS", {OpCodeDictKeys.TIMEOUT: 2.0})
|
|
}
|
|
service_tuple = ("GPS 0", op_code_dict)
|
|
service_op_code_dict[CustomServiceList.GPS_0.value] = service_tuple
|
|
service_op_code_dict[CustomServiceList.GPS_1.value] = service_tuple
|
|
|
|
op_code_dict = {
|
|
"0": ("ACU: Tests", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
|
"51": ("ACU: Print channel statistics", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
|
}
|
|
service_tuple = ("ACU Devices", op_code_dict)
|
|
service_op_code_dict[CustomServiceList.ACU.value] = service_tuple
|
|
|
|
op_code_dict = {
|
|
"0": ("TMP1075 Tests", {OpCodeDictKeys.TIMEOUT: 2.2}),
|
|
}
|
|
service_tuple = ("TMP1075 1", op_code_dict)
|
|
service_op_code_dict[CustomServiceList.TMP1075_1.value] = service_tuple
|
|
service_tuple = ("TMP1075 2", op_code_dict)
|
|
service_op_code_dict[CustomServiceList.TMP1075_2.value] = service_tuple
|
|
|
|
op_code_dict_srv_heater = {
|
|
"0": ("Heater Tests", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
|
}
|
|
service_heater_tuple = ("Heater Device", op_code_dict_srv_heater)
|
|
|
|
op_code_dict_srv_star_tracker = {
|
|
"0": (
|
|
"Star Tracker: Mode On, Submode Bootloader",
|
|
{OpCodeDictKeys.TIMEOUT: 2.0},
|
|
),
|
|
"1": ("Star Tracker: Mode On, Submode Firmware", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
|
"2": ("Star Tracker: Mode Normal", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
|
"3": ("Star Tracker: Mode Off", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
|
"4": ("Star Tracker: Mode Raw", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
|
"5": ("Star Tracker: Ping", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
|
"6": (
|
|
"Star Tracker: Switch to bootloader program",
|
|
{OpCodeDictKeys.TIMEOUT: 2.0},
|
|
),
|
|
"7": ("Star Tracker: Request temperature", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
|
"8": ("Star Tracker: Request version", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
|
"9": ("Star Tracker: Request interface", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
|
"10": ("Star Tracker: Request power", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
|
"11": (
|
|
"Star Tracker: Set subscription parameters",
|
|
{OpCodeDictKeys.TIMEOUT: 2.0},
|
|
),
|
|
"12": (
|
|
"Star Tracker: Boot image (requires bootloader mode)",
|
|
{OpCodeDictKeys.TIMEOUT: 2.0},
|
|
),
|
|
"13": ("Star Tracker: Request time", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
|
"14": ("Star Tracker: Request solution", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
|
"15": ("Star Tracker: Upload image", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
|
"16": ("Star Tracker: Download image", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
|
"17": ("Star Tracker: Set limit parameters", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
|
"18": ("Star Tracker: Set tracking parameters", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
|
"19": ("Star Tracker: Set mounting parameters", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
|
"20": ("Star Tracker: Set camera parameters", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
|
"22": (
|
|
"Star Tracker: Set centroiding parameters",
|
|
{OpCodeDictKeys.TIMEOUT: 2.0},
|
|
),
|
|
"23": ("Star Tracker: Set LISA parameters", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
|
"24": ("Star Tracker: Set matching parameters", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
|
"25": (
|
|
"Star Tracker: Set validation parameters",
|
|
{OpCodeDictKeys.TIMEOUT: 2.0},
|
|
),
|
|
"26": ("Star Tracker: Set algo parameters", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
|
"27": ("Star Tracker: Take image", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
|
"28": ("Star Tracker: Stop str helper", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
|
"30": (
|
|
"Star Tracker: Set name of download image",
|
|
{OpCodeDictKeys.TIMEOUT: 2.0},
|
|
),
|
|
"31": ("Star Tracker: Request histogram", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
|
"32": ("Star Tracker: Request contrast", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
|
"33": ("Star Tracker: Set json filename", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
|
"35": ("Star Tracker: Flash read", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
|
"36": ("Star Tracker: Set flash read filename", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
|
"37": ("Star Tracker: Get checksum", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
|
"49": ("Star Tracker: Request camera parameter", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
|
"50": ("Star Tracker: Request limits", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
|
"51": (
|
|
"Star Tracker: Set image processor parameters",
|
|
{OpCodeDictKeys.TIMEOUT: 2.0},
|
|
),
|
|
"52": (
|
|
"Star Tracker: (EGSE only) Load camera ground config ",
|
|
{OpCodeDictKeys.TIMEOUT: 2.0},
|
|
),
|
|
"53": (
|
|
"Star Tracker: (EGSE only) Load camera flight config",
|
|
{OpCodeDictKeys.TIMEOUT: 2.0},
|
|
),
|
|
"54": (
|
|
"Star Tracker: Request log level parameters",
|
|
{OpCodeDictKeys.TIMEOUT: 2.0},
|
|
),
|
|
"55": (
|
|
"Star Tracker: Request mounting parameters",
|
|
{OpCodeDictKeys.TIMEOUT: 2.0},
|
|
),
|
|
"56": (
|
|
"Star Tracker: Request image processor parameters",
|
|
{OpCodeDictKeys.TIMEOUT: 2.0},
|
|
),
|
|
"57": (
|
|
"Star Tracker: Request centroiding parameters",
|
|
{OpCodeDictKeys.TIMEOUT: 2.0},
|
|
),
|
|
"58": ("Star Tracker: Request lisa parameters", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
|
"59": (
|
|
"Star Tracker: Request matching parameters",
|
|
{OpCodeDictKeys.TIMEOUT: 2.0},
|
|
),
|
|
"60": (
|
|
"Star Tracker: Request tracking parameters",
|
|
{OpCodeDictKeys.TIMEOUT: 2.0},
|
|
),
|
|
"61": (
|
|
"Star Tracker: Request validation parameters",
|
|
{OpCodeDictKeys.TIMEOUT: 2.0},
|
|
),
|
|
"62": ("Star Tracker: Request algo parameters", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
|
"63": (
|
|
"Star Tracker: Request subscription parameters",
|
|
{OpCodeDictKeys.TIMEOUT: 2.0},
|
|
),
|
|
"64": (
|
|
"Star Tracker: Request log subscription parameters",
|
|
{OpCodeDictKeys.TIMEOUT: 2.0},
|
|
),
|
|
"65": (
|
|
"Star Tracker: Request debug camera parameters",
|
|
{OpCodeDictKeys.TIMEOUT: 2.0},
|
|
),
|
|
"66": ("Star Tracker: Set log level parameters", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
|
"67": (
|
|
"Star Tracker: Set log subscription parameters",
|
|
{OpCodeDictKeys.TIMEOUT: 2.0},
|
|
),
|
|
"68": (
|
|
"Star Tracker: Set debug camera parameters",
|
|
{OpCodeDictKeys.TIMEOUT: 2.0},
|
|
),
|
|
"69": ("Star Tracker: Firmware update", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
|
"70": (
|
|
"Star Tracker: Disable timestamp generation",
|
|
{OpCodeDictKeys.TIMEOUT: 2.0},
|
|
),
|
|
"71": (
|
|
"Star Tracker: Enable timestamp generation",
|
|
{OpCodeDictKeys.TIMEOUT: 2.0},
|
|
),
|
|
}
|
|
service_star_tracker_tuple = ("Star tracker", op_code_dict_srv_star_tracker)
|
|
|
|
op_code_dict_srv_ccsds_handler = {
|
|
"0": ("CCSDS Handler: Set low rate", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
|
"1": ("CCSDS Handler: Set high rate", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
|
"2": ("CCSDS Handler: Enable transmitter", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
|
"3": ("CCSDS Handler: Disable transmitter", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
|
"4": ("CCSDS Handler: Set arbitrary bitrate", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
|
"5": (
|
|
"CCSDS Handler: Enable tx clock manipulator",
|
|
{OpCodeDictKeys.TIMEOUT: 2.0},
|
|
),
|
|
"6": (
|
|
"CCSDS Handler: Disable tx clock manipulator",
|
|
{OpCodeDictKeys.TIMEOUT: 2.0},
|
|
),
|
|
"7": (
|
|
"CCSDS Handler: Update tx data on rising edge",
|
|
{OpCodeDictKeys.TIMEOUT: 2.0},
|
|
),
|
|
"8": (
|
|
"CCSDS Handler: Update tx data on falling edge",
|
|
{OpCodeDictKeys.TIMEOUT: 2.0},
|
|
),
|
|
}
|
|
service_ccsds_handler_tuple = ("CCSDS Handler", op_code_dict_srv_ccsds_handler)
|
|
|
|
op_code_dict_srv_pdec_handler = {
|
|
"0": ("PDEC Handler: Print CLCW", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
|
"1": ("PDEC Handler: Print PDEC monitor", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
|
}
|
|
service_pdec_handler_tuple = ("PDEC Handler", op_code_dict_srv_pdec_handler)
|
|
|
|
op_code_dict_srv_syrlinks_handler = {
|
|
"0": ("Syrlinks Handler: Set mode off", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
|
"1": ("Syrlinks Handler: Set mode on", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
|
"2": ("Syrlinks Handler: Set mode normal", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
|
"3": ("Syrlinks Handler: Set TX standby", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
|
"4": ("Syrlinks Handler: Set TX modulation", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
|
"5": ("Syrlinks Handler: Set TX carrier wave", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
|
"6": ("Syrlinks Handler: Read TX status", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
|
"7": ("Syrlinks Handler: Read TX waveform", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
|
"8": (
|
|
"Syrlinks Handler: Read TX AGC value high byte ",
|
|
{OpCodeDictKeys.TIMEOUT: 2.0},
|
|
),
|
|
"9": (
|
|
"Syrlinks Handler: Read TX AGC value low byte ",
|
|
{OpCodeDictKeys.TIMEOUT: 2.0},
|
|
),
|
|
"12": (
|
|
"Syrlinks Handler: Write LCL config",
|
|
{OpCodeDictKeys.TIMEOUT: 2.0},
|
|
),
|
|
"13": (
|
|
"Syrlinks Handler: Read RX status registers",
|
|
{OpCodeDictKeys.TIMEOUT: 2.0},
|
|
),
|
|
"14": (
|
|
"Syrlinks Handler: Read LCL config register",
|
|
{OpCodeDictKeys.TIMEOUT: 2.0},
|
|
),
|
|
"15": (
|
|
"Syrlinks Handler: Set waveform OQPSK",
|
|
{OpCodeDictKeys.TIMEOUT: 2.0},
|
|
),
|
|
"16": (
|
|
"Syrlinks Handler: Set waveform BPSK",
|
|
{OpCodeDictKeys.TIMEOUT: 2.0},
|
|
),
|
|
"17": (
|
|
"Syrlinks Handler: Set second config",
|
|
{OpCodeDictKeys.TIMEOUT: 2.0},
|
|
),
|
|
"18": (
|
|
"Syrlinks Handler: Enable debug output",
|
|
{OpCodeDictKeys.TIMEOUT: 2.0},
|
|
),
|
|
"19": (
|
|
"Syrlinks Handler: Disable debug output",
|
|
{OpCodeDictKeys.TIMEOUT: 2.0},
|
|
),
|
|
}
|
|
service_syrlinks_handler_tuple = (
|
|
"Syrlinks Handler",
|
|
op_code_dict_srv_syrlinks_handler,
|
|
)
|
|
service_op_code_dict[CustomServiceList.HEATER.value] = service_heater_tuple
|
|
service_op_code_dict[
|
|
CustomServiceList.STAR_TRACKER.value
|
|
] = service_star_tracker_tuple
|
|
service_op_code_dict[
|
|
CustomServiceList.CCSDS_HANDLER.value
|
|
] = service_ccsds_handler_tuple
|
|
service_op_code_dict[
|
|
CustomServiceList.PDEC_HANDLER.value
|
|
] = service_pdec_handler_tuple
|
|
service_op_code_dict[
|
|
CustomServiceList.SYRLINKS.value
|
|
] = service_syrlinks_handler_tuple
|