This commit is contained in:
Robin Müller 2023-01-16 14:53:46 +01:00
commit 7bc49f1ff7
54 changed files with 781 additions and 801 deletions

View File

@ -8,6 +8,12 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/).
The [milestone](https://egit.irs.uni-stuttgart.de/eive/eive-obsw/milestones) The [milestone](https://egit.irs.uni-stuttgart.de/eive/eive-obsw/milestones)
list yields a list of all related PRs for each release. list yields a list of all related PRs for each release.
# [v2.2.0] 16.01.2023
- A lot of consistency renaming: Single name for enums which are not flag enums,
e.g `ActionId` instead of `ActionIds`
- Updated required Python version to 3.10
# [v2.1.1] 12.01.2023 # [v2.1.1] 12.01.2023
- Typo in `setup.cfg`, missing version prefix `v` for `tmtccmd` - Typo in `setup.cfg`, missing version prefix `v` for `tmtccmd`

View File

@ -2,10 +2,10 @@ from pathlib import Path
SW_NAME = "eive-tmtc" SW_NAME = "eive-tmtc"
VERSION_MAJOR = 2 VERSION_MAJOR = 2
VERSION_MINOR = 1 VERSION_MINOR = 2
VERSION_REVISION = 1 VERSION_REVISION = 0
__version__ = "2.1.1" __version__ = "2.2.0"
EIVE_TMTC_ROOT = Path(__file__).parent EIVE_TMTC_ROOT = Path(__file__).parent
PACKAGE_ROOT = EIVE_TMTC_ROOT.parent PACKAGE_ROOT = EIVE_TMTC_ROOT.parent

View File

@ -1,33 +0,0 @@
"""
@brief This file transfers definitions of global variables to the user.
@details Template configuration file. Copy this folder to the TMTC commander root and adapt
it to your needs.
"""
import enum
import argparse
# All globals can be added here and will be part of a globals dictionary.
from config.definitions import CustomServiceList, PUS_APID
from config.custom_mode_op import CustomModeList
from tmtccmd.config.definitions import CoreComInterfaces
from tmtccmd.config.globals import set_default_globals_pre_args_parsing
from tmtccmd.logging import get_console_logger
LOGGER = get_console_logger()
class CustomGlobalIds(enum.Enum):
from enum import auto
pass
def set_globals_pre_args_parsing(gui: bool = False):
set_default_globals_pre_args_parsing(
gui=gui,
tc_apid=PUS_APID,
tm_apid=PUS_APID,
com_if_id=CoreComInterfaces.TCPIP_UDP.value,
)

View File

@ -16,7 +16,7 @@ from tmtccmd.tc.pus_8_funccmd import make_fsfw_action_cmd
from tmtccmd.util import ObjectIdU32, ObjectIdBase from tmtccmd.util import ObjectIdU32, ObjectIdBase
class GomspaceDeviceActionIds(enum.IntEnum): class GomspaceDeviceActionId(enum.IntEnum):
PING = 1 PING = 1
REBOOT = 4 REBOOT = 4
PARAM_GET = 0 PARAM_GET = 0
@ -64,7 +64,7 @@ class Channel:
def pack_request_config_command(object_id: bytes) -> PusTelecommand: def pack_request_config_command(object_id: bytes) -> PusTelecommand:
return make_fsfw_action_cmd( return make_fsfw_action_cmd(
object_id=object_id, action_id=GomspaceDeviceActionIds.REQUEST_CONFIG_TABLE object_id=object_id, action_id=GomspaceDeviceActionId.REQUEST_CONFIG_TABLE
) )
@ -90,7 +90,7 @@ def pack_get_param_command(
app_data += struct.pack("!B", parameter_size) app_data += struct.pack("!B", parameter_size)
return make_fsfw_action_cmd( return make_fsfw_action_cmd(
object_id=object_id, object_id=object_id,
action_id=GomspaceDeviceActionIds.PARAM_GET, action_id=GomspaceDeviceActionId.PARAM_GET,
user_data=app_data, user_data=app_data,
) )
@ -98,7 +98,7 @@ def pack_get_param_command(
def pack_set_float_param_command( def pack_set_float_param_command(
object_id: bytes, memory_address: bytes, parameter: float object_id: bytes, memory_address: bytes, parameter: float
) -> PusTelecommand: ) -> PusTelecommand:
action_id = GomspaceDeviceActionIds.PARAM_SET action_id = GomspaceDeviceActionId.PARAM_SET
app_data = bytearray() app_data = bytearray()
app_data += memory_address app_data += memory_address
app_data.append(4) app_data.append(4)
@ -111,7 +111,7 @@ def pack_set_float_param_command(
def pack_set_u8_param_command( def pack_set_u8_param_command(
object_id: bytes, memory_address: bytes, parameter: int object_id: bytes, memory_address: bytes, parameter: int
) -> PusTelecommand: ) -> PusTelecommand:
action_id = GomspaceDeviceActionIds.PARAM_SET action_id = GomspaceDeviceActionId.PARAM_SET
app_data = bytearray() app_data = bytearray()
app_data += memory_address app_data += memory_address
app_data.append(1) app_data.append(1)
@ -124,7 +124,7 @@ def pack_set_u8_param_command(
def pack_set_i8_param_command( def pack_set_i8_param_command(
object_id: bytes, memory_address: bytes, parameter: int object_id: bytes, memory_address: bytes, parameter: int
) -> PusTelecommand: ) -> PusTelecommand:
action_id = GomspaceDeviceActionIds.PARAM_SET action_id = GomspaceDeviceActionId.PARAM_SET
app_data = bytearray() app_data = bytearray()
app_data += memory_address app_data += memory_address
app_data.append(1) app_data.append(1)
@ -137,7 +137,7 @@ def pack_set_i8_param_command(
def pack_set_u16_param_command( def pack_set_u16_param_command(
object_id: bytes, memory_address: bytes, parameter: int object_id: bytes, memory_address: bytes, parameter: int
) -> PusTelecommand: ) -> PusTelecommand:
action_id = GomspaceDeviceActionIds.PARAM_SET action_id = GomspaceDeviceActionId.PARAM_SET
app_data = bytearray() app_data = bytearray()
app_data += memory_address app_data += memory_address
app_data.append(2) app_data.append(2)
@ -150,7 +150,7 @@ def pack_set_u16_param_command(
def pack_set_i16_param_command( def pack_set_i16_param_command(
object_id: bytes, memory_address: bytes, parameter: int object_id: bytes, memory_address: bytes, parameter: int
) -> PusTelecommand: ) -> PusTelecommand:
action_id = GomspaceDeviceActionIds.PARAM_SET action_id = GomspaceDeviceActionId.PARAM_SET
app_data = bytearray() app_data = bytearray()
app_data += memory_address app_data += memory_address
app_data.append(2) app_data.append(2)
@ -161,7 +161,7 @@ def pack_set_i16_param_command(
def pack_set_u32_param_command(object_id: bytes, memory_address: bytes, parameter: int): def pack_set_u32_param_command(object_id: bytes, memory_address: bytes, parameter: int):
action_id = GomspaceDeviceActionIds.PARAM_SET action_id = GomspaceDeviceActionId.PARAM_SET
app_data = bytearray() app_data = bytearray()
app_data += memory_address app_data += memory_address
app_data.append(4) app_data.append(4)
@ -172,7 +172,7 @@ def pack_set_u32_param_command(object_id: bytes, memory_address: bytes, paramete
def pack_set_i32_param_command(object_id: bytes, memory_address: bytes, parameter: int): def pack_set_i32_param_command(object_id: bytes, memory_address: bytes, parameter: int):
action_id = GomspaceDeviceActionIds.PARAM_SET action_id = GomspaceDeviceActionId.PARAM_SET
app_data = bytearray() app_data = bytearray()
app_data += memory_address app_data += memory_address
app_data.append(4) app_data.append(4)
@ -226,7 +226,7 @@ def pack_ping_command(object_id: ObjectIdU32, data: bytearray) -> PusTelecommand
""" """
return make_fsfw_action_cmd( return make_fsfw_action_cmd(
object_id=object_id.as_bytes, object_id=object_id.as_bytes,
action_id=GomspaceDeviceActionIds.PING, action_id=GomspaceDeviceActionId.PING,
user_data=data, user_data=data,
) )
@ -236,7 +236,7 @@ def pack_gnd_wdt_reset_command(object_id: ObjectIdBase) -> PusTelecommand:
@param object_id Object Id of the gomspace device handler. @param object_id Object Id of the gomspace device handler.
""" """
return make_fsfw_action_cmd( return make_fsfw_action_cmd(
object_id=object_id.as_bytes, action_id=GomspaceDeviceActionIds.WDT_RESET object_id=object_id.as_bytes, action_id=GomspaceDeviceActionId.WDT_RESET
) )
@ -245,7 +245,7 @@ def pack_reboot_command(object_id: ObjectIdU32) -> PusTelecommand:
@param object_id The object id of the gomspace device handler. @param object_id The object id of the gomspace device handler.
""" """
return make_fsfw_action_cmd( return make_fsfw_action_cmd(
object_id=object_id.as_bytes, action_id=GomspaceDeviceActionIds.REBOOT object_id=object_id.as_bytes, action_id=GomspaceDeviceActionId.REBOOT
) )
@ -255,5 +255,5 @@ def pack_request_full_hk_table_command(object_id: ObjectIdU32) -> PusTelecommand
@param object_id The object id of the gomspace device handler. @param object_id The object id of the gomspace device handler.
""" """
return make_fsfw_action_cmd( return make_fsfw_action_cmd(
object_id=object_id.as_bytes, action_id=GomspaceDeviceActionIds.REQUEST_HK_TABLE object_id=object_id.as_bytes, action_id=GomspaceDeviceActionId.REQUEST_HK_TABLE
) )

View File

@ -121,11 +121,11 @@ def add_str_cmds(defs: TmtcDefinitionWrapper):
@tmtc_definitions_provider @tmtc_definitions_provider
def add_time_cmds(defs: TmtcDefinitionWrapper): def add_time_cmds(defs: TmtcDefinitionWrapper):
from eive_tmtc.pus_tc.system.time import OpCodes, Info from eive_tmtc.pus_tc.system.time import OpCode, Info
oce = OpCodeEntry() oce = OpCodeEntry()
oce.add( oce.add(
keys=OpCodes.SET_CURRENT_TIME, keys=OpCode.SET_CURRENT_TIME,
info=Info.SET_CURRENT_TIME, info=Info.SET_CURRENT_TIME,
) )
defs.add_service( defs.add_service(
@ -141,11 +141,11 @@ def add_system_cmds(defs: TmtcDefinitionWrapper):
oce = OpCodeEntry() oce = OpCodeEntry()
oce.add( oce.add(
keys=controllers.OpCodes.THERMAL_CONTROLLER, keys=controllers.OpCode.THERMAL_CONTROLLER,
info=controllers.Info.THERMAL_CONTROLLER, info=controllers.Info.THERMAL_CONTROLLER,
) )
oce.add( oce.add(
keys=controllers.OpCodes.CORE_CONTROLLER, keys=controllers.OpCode.CORE_CONTROLLER,
info=controllers.Info.CORE_CONTROLLER, info=controllers.Info.CORE_CONTROLLER,
) )
defs.add_service( defs.add_service(

View File

@ -15,19 +15,19 @@ from tmtccmd.tc.pus_200_fsfw_modes import pack_mode_data, Modes
from tmtccmd.tc.pus_200_fsfw_modes import Subservices as ModeSubservices from tmtccmd.tc.pus_200_fsfw_modes import Subservices as ModeSubservices
class BpxSetIds: class BpxSetId:
GET_HK_SET = 0 GET_HK_SET = 0
GET_CFG_SET = 5 GET_CFG_SET = 5
class BpxActionIds: class BpxActionId:
REBOOT = 2 REBOOT = 2
RESET_COUNTERS = 3 RESET_COUNTERS = 3
SET_CFG = 4 SET_CFG = 4
GET_CFG = 5 GET_CFG = 5
class BpxOpCodes: class BpxOpCode:
HK = ["0", "hk"] HK = ["0", "hk"]
OFF = ["off"] OFF = ["off"]
ON = ["on"] ON = ["on"]
@ -40,15 +40,15 @@ class BpxOpCodes:
@tmtc_definitions_provider @tmtc_definitions_provider
def add_bpx_cmd_definitions(defs: TmtcDefinitionWrapper): def add_bpx_cmd_definitions(defs: TmtcDefinitionWrapper):
oce = OpCodeEntry() oce = OpCodeEntry()
oce.add(keys=BpxOpCodes.ON, info="On command") oce.add(keys=BpxOpCode.ON, info="On command")
oce.add(keys=BpxOpCodes.OFF, info="Off command") oce.add(keys=BpxOpCode.OFF, info="Off command")
oce.add(keys=BpxOpCodes.HK, info="Request BPX HK") oce.add(keys=BpxOpCode.HK, info="Request BPX HK")
oce.add(keys=BpxOpCodes.RST_BOOT_CNT, info="Reset Boot Count") oce.add(keys=BpxOpCode.RST_BOOT_CNT, info="Reset Boot Count")
oce.add(keys=BpxOpCodes.REQUEST_CFG, info="Request Configuration Struct (Step 1)") oce.add(keys=BpxOpCode.REQUEST_CFG, info="Request Configuration Struct (Step 1)")
oce.add( oce.add(
keys=BpxOpCodes.REQUEST_CFG_HK, info="Request Configuration Struct HK (Step 2)" keys=BpxOpCode.REQUEST_CFG_HK, info="Request Configuration Struct HK (Step 2)"
) )
oce.add(keys=BpxOpCodes.REBOOT, info="Reboot Command") oce.add(keys=BpxOpCode.REBOOT, info="Reboot Command")
defs.add_service( defs.add_service(
name=CustomServiceList.BPX_BATTERY.value, name=CustomServiceList.BPX_BATTERY.value,
info="BPX Battery Handler", info="BPX Battery Handler",
@ -60,11 +60,11 @@ def add_bpx_cmd_definitions(defs: TmtcDefinitionWrapper):
def pack_bpx_commands(p: ServiceProviderParams): def pack_bpx_commands(p: ServiceProviderParams):
op_code = p.op_code op_code = p.op_code
q = p.queue_helper q = p.queue_helper
if op_code in BpxOpCodes.HK: if op_code in BpxOpCode.HK:
q.add_log_cmd("Requesting BPX battery HK set") q.add_log_cmd("Requesting BPX battery HK set")
sid = make_sid(object_id=BPX_HANDLER_ID, set_id=BpxSetIds.GET_HK_SET) sid = make_sid(object_id=BPX_HANDLER_ID, set_id=BpxSetId.GET_HK_SET)
q.add_pus_tc(generate_one_hk_command(sid=sid)) q.add_pus_tc(generate_one_hk_command(sid=sid))
if op_code in BpxOpCodes.OFF: if op_code in BpxOpCode.OFF:
q.add_log_cmd("Off mode") q.add_log_cmd("Off mode")
mode_cmd = pack_mode_data(BPX_HANDLER_ID, Modes.OFF, 0) mode_cmd = pack_mode_data(BPX_HANDLER_ID, Modes.OFF, 0)
q.add_pus_tc( q.add_pus_tc(
@ -74,7 +74,7 @@ def pack_bpx_commands(p: ServiceProviderParams):
app_data=mode_cmd, app_data=mode_cmd,
) )
) )
if op_code in BpxOpCodes.ON: if op_code in BpxOpCode.ON:
q.add_log_cmd("On mode") q.add_log_cmd("On mode")
mode_cmd = pack_mode_data(BPX_HANDLER_ID, Modes.ON, 0) mode_cmd = pack_mode_data(BPX_HANDLER_ID, Modes.ON, 0)
q.add_pus_tc( q.add_pus_tc(
@ -84,28 +84,26 @@ def pack_bpx_commands(p: ServiceProviderParams):
app_data=mode_cmd, app_data=mode_cmd,
) )
) )
if op_code in BpxOpCodes.RST_BOOT_CNT: if op_code in BpxOpCode.RST_BOOT_CNT:
q.add_log_cmd("Resetting reboot counters") q.add_log_cmd("Resetting reboot counters")
q.add_pus_tc( q.add_pus_tc(
make_fsfw_action_cmd( make_fsfw_action_cmd(
object_id=BPX_HANDLER_ID, action_id=BpxActionIds.RESET_COUNTERS object_id=BPX_HANDLER_ID, action_id=BpxActionId.RESET_COUNTERS
) )
) )
if op_code in BpxOpCodes.REQUEST_CFG: if op_code in BpxOpCode.REQUEST_CFG:
q.add_log_cmd("Requesting configuration struct") q.add_log_cmd("Requesting configuration struct")
q.add_pus_tc( q.add_pus_tc(
make_fsfw_action_cmd( make_fsfw_action_cmd(
object_id=BPX_HANDLER_ID, action_id=BpxActionIds.GET_CFG object_id=BPX_HANDLER_ID, action_id=BpxActionId.GET_CFG
) )
) )
if op_code in BpxOpCodes.REQUEST_CFG_HK: if op_code in BpxOpCode.REQUEST_CFG_HK:
q.add_log_cmd("Requesting configuration struct HK") q.add_log_cmd("Requesting configuration struct HK")
sid = make_sid(object_id=BPX_HANDLER_ID, set_id=BpxSetIds.GET_CFG_SET) sid = make_sid(object_id=BPX_HANDLER_ID, set_id=BpxSetId.GET_CFG_SET)
q.add_pus_tc(generate_one_hk_command(sid=sid)) q.add_pus_tc(generate_one_hk_command(sid=sid))
if op_code in BpxOpCodes.REBOOT: if op_code in BpxOpCode.REBOOT:
q.add_log_cmd("Rebooting BPX battery") q.add_log_cmd("Rebooting BPX battery")
q.add_pus_tc( q.add_pus_tc(
make_fsfw_action_cmd( make_fsfw_action_cmd(object_id=BPX_HANDLER_ID, action_id=BpxActionId.REBOOT)
object_id=BPX_HANDLER_ID, action_id=BpxActionIds.REBOOT
)
) )

View File

@ -5,6 +5,7 @@
@author J. Meier @author J. Meier
@date 20.11.2021 @date 20.11.2021
""" """
import enum
import struct import struct
from spacepackets.ecss.tc import PusTelecommand from spacepackets.ecss.tc import PusTelecommand
@ -12,7 +13,7 @@ from tmtccmd.tc import DefaultPusQueueHelper
from tmtccmd.util import ObjectIdU32 from tmtccmd.util import ObjectIdU32
class CommandIds: class CommandId(enum.IntEnum):
# Configures input rate of syrlinks to 400 Khz (results in downlink rate of 200 kbps) # Configures input rate of syrlinks to 400 Khz (results in downlink rate of 200 kbps)
SET_LOW_RATE = 0 SET_LOW_RATE = 0
# Configures input rate of syrlinks to 2000 Khz (results in downlink rate of 1000 kbps) # Configures input rate of syrlinks to 2000 Khz (results in downlink rate of 1000 kbps)
@ -39,42 +40,42 @@ def pack_ccsds_handler_test(
q.add_log_cmd(f"Testing CCSDS handler with object id: {object_id.as_hex_string}") q.add_log_cmd(f"Testing CCSDS handler with object id: {object_id.as_hex_string}")
if op_code == "0": if op_code == "0":
q.add_log_cmd("CCSDS Handler: Set low rate") q.add_log_cmd("CCSDS Handler: Set low rate")
command = obyt + struct.pack("!I", CommandIds.SET_LOW_RATE) command = obyt + struct.pack("!I", CommandId.SET_LOW_RATE)
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command))
if op_code == "1": if op_code == "1":
q.add_log_cmd("CCSDS Handler: Set high rate") q.add_log_cmd("CCSDS Handler: Set high rate")
command = obyt + struct.pack("!I", CommandIds.SET_HIGH_RATE) command = obyt + struct.pack("!I", CommandId.SET_HIGH_RATE)
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command))
if op_code == "2": if op_code == "2":
q.add_log_cmd("CCSDS Handler: Enables the transmitter") q.add_log_cmd("CCSDS Handler: Enables the transmitter")
command = obyt + struct.pack("!I", CommandIds.EN_TRANSMITTER) command = obyt + struct.pack("!I", CommandId.EN_TRANSMITTER)
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command))
if op_code == "3": if op_code == "3":
q.add_log_cmd("CCSDS Handler: Disables the transmitter") q.add_log_cmd("CCSDS Handler: Disables the transmitter")
command = obyt + struct.pack("!I", CommandIds.DIS_TRANSMITTER) command = obyt + struct.pack("!I", CommandId.DIS_TRANSMITTER)
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command))
if op_code == "4": if op_code == "4":
q.add_log_cmd("CCSDS Handler: Set arbitrary bitrate") q.add_log_cmd("CCSDS Handler: Set arbitrary bitrate")
bitrate = int(input("Specify bit rate (bps): ")) bitrate = int(input("Specify bit rate (bps): "))
command = ( command = (
obyt obyt
+ struct.pack("!I", CommandIds.ARBITRARY_BITRATE) + struct.pack("!I", CommandId.ARBITRARY_BITRATE)
+ struct.pack("!I", bitrate) + struct.pack("!I", bitrate)
) )
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command))
if op_code == "5": if op_code == "5":
q.add_log_cmd("CCSDS Handler: Enable tx clock manipulator") q.add_log_cmd("CCSDS Handler: Enable tx clock manipulator")
command = obyt + struct.pack("!I", CommandIds.ENABLE_TX_CLK_MANIPULATOR) command = obyt + struct.pack("!I", CommandId.ENABLE_TX_CLK_MANIPULATOR)
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command))
if op_code == "6": if op_code == "6":
q.add_log_cmd("CCSDS Handler: Disable tx clock manipulator") q.add_log_cmd("CCSDS Handler: Disable tx clock manipulator")
command = obyt + struct.pack("!I", CommandIds.DISABLE_TX_CLK_MANIPULATOR) command = obyt + struct.pack("!I", CommandId.DISABLE_TX_CLK_MANIPULATOR)
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command))
if op_code == "7": if op_code == "7":
q.add_log_cmd("CCSDS Handler: Update tx data on rising edge of tx clock") q.add_log_cmd("CCSDS Handler: Update tx data on rising edge of tx clock")
command = obyt + struct.pack("!I", CommandIds.UPDATE_ON_RISING_EDGE) command = obyt + struct.pack("!I", CommandId.UPDATE_ON_RISING_EDGE)
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command))
if op_code == "8": if op_code == "8":
q.add_log_cmd("CCSDS Handler: Update tx data on falling edge of tx clock") q.add_log_cmd("CCSDS Handler: Update tx data on falling edge of tx clock")
command = obyt + struct.pack("!I", CommandIds.UPDATE_ON_FALLING_EDGE) command = obyt + struct.pack("!I", CommandId.UPDATE_ON_FALLING_EDGE)
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command))

View File

@ -11,7 +11,7 @@ from tmtccmd.logging import get_console_logger
LOGGER = get_console_logger() LOGGER = get_console_logger()
class OpCodes: class OpCode:
REQ_OS_HK = ["0", "hk-os"] REQ_OS_HK = ["0", "hk-os"]
RESET_GNSS = ["5", "reset"] RESET_GNSS = ["5", "reset"]
@ -21,15 +21,15 @@ class Info:
RESET_GNSS = "Reset GNSS using reset pin" RESET_GNSS = "Reset GNSS using reset pin"
class SetIds: class SetId:
HK = 0 HK = 0
@tmtc_definitions_provider @tmtc_definitions_provider
def add_gps_cmds(defs: TmtcDefinitionWrapper): def add_gps_cmds(defs: TmtcDefinitionWrapper):
oce = OpCodeEntry() oce = OpCodeEntry()
oce.add(keys=OpCodes.RESET_GNSS, info=Info.RESET_GNSS) oce.add(keys=OpCode.RESET_GNSS, info=Info.RESET_GNSS)
oce.add(keys=OpCodes.REQ_OS_HK, info=Info.REQ_OS_HK) oce.add(keys=OpCode.REQ_OS_HK, info=Info.REQ_OS_HK)
defs.add_service( defs.add_service(
name=CustomServiceList.GPS_CTRL.value, name=CustomServiceList.GPS_CTRL.value,
info="GPS/GNSS Controller", info="GPS/GNSS Controller",
@ -38,11 +38,11 @@ def add_gps_cmds(defs: TmtcDefinitionWrapper):
def pack_gps_command(object_id: bytes, q: DefaultPusQueueHelper, op_code: str): def pack_gps_command(object_id: bytes, q: DefaultPusQueueHelper, op_code: str):
if op_code in OpCodes.RESET_GNSS: if op_code in OpCode.RESET_GNSS:
# TODO: This needs to be re-implemented # TODO: This needs to be re-implemented
LOGGER.warning("Reset pin handling needs to be re-implemented") LOGGER.warning("Reset pin handling needs to be re-implemented")
if op_code in OpCodes.REQ_OS_HK: if op_code in OpCode.REQ_OS_HK:
q.add_log_cmd(f"GMSS: {Info.REQ_OS_HK}") q.add_log_cmd(f"GMSS: {Info.REQ_OS_HK}")
q.add_pus_tc( q.add_pus_tc(
generate_one_hk_command(sid=make_sid(object_id=object_id, set_id=SetIds.HK)) generate_one_hk_command(sid=make_sid(object_id=object_id, set_id=SetId.HK))
) )

View File

@ -1,10 +1,10 @@
import enum import enum
class AdisGyroSetIds(enum.IntEnum): class AdisGyroSetId(enum.IntEnum):
CORE_HK = 0 CORE_HK = 0
CFG_HK = 1 CFG_HK = 1
class L3gGyroSetIds(enum.IntEnum): class L3gGyroSetId(enum.IntEnum):
CORE_HK = 0 CORE_HK = 0

View File

@ -20,7 +20,7 @@ from tmtccmd.tc.pus_8_funccmd import make_fsfw_action_cmd
from spacepackets.ecss.tc import PusTelecommand from spacepackets.ecss.tc import PusTelecommand
class SwitchNumbers: class SwitchNumber(enum.IntEnum):
HEATER_0_OBC_BRD = 0 HEATER_0_OBC_BRD = 0
HEATER_1_PLOC_PROC_BRD = 1 HEATER_1_PLOC_PROC_BRD = 1
HEATER_2_ACS_BRD = 2 HEATER_2_ACS_BRD = 2
@ -32,7 +32,7 @@ class SwitchNumbers:
NUMBER_OF_SWITCHES = 8 NUMBER_OF_SWITCHES = 8
class OpCodes: class OpCode:
HEATER_CMD = ["0", "switch-cmd"] HEATER_CMD = ["0", "switch-cmd"]
HEATER_EXT_CTRL = ["1", "set-ext-ctrl"] HEATER_EXT_CTRL = ["1", "set-ext-ctrl"]
HEATER_FAULTY_CMD = ["2", "set-faulty"] HEATER_FAULTY_CMD = ["2", "set-faulty"]
@ -57,10 +57,10 @@ class ActionIds(enum.IntEnum):
@tmtc_definitions_provider @tmtc_definitions_provider
def add_heater_cmds(defs: TmtcDefinitionWrapper): def add_heater_cmds(defs: TmtcDefinitionWrapper):
oce = OpCodeEntry() oce = OpCodeEntry()
oce.add(keys=OpCodes.HEATER_CMD, info=Info.HEATER_CMD) oce.add(keys=OpCode.HEATER_CMD, info=Info.HEATER_CMD)
oce.add(keys=OpCodes.HEATER_HEALTHY_CMD, info=Info.HEATER_HEALTHY_CMD) oce.add(keys=OpCode.HEATER_HEALTHY_CMD, info=Info.HEATER_HEALTHY_CMD)
oce.add(keys=OpCodes.HEATER_EXT_CTRL, info=Info.HEATER_EXT_CTRL) oce.add(keys=OpCode.HEATER_EXT_CTRL, info=Info.HEATER_EXT_CTRL)
oce.add(keys=OpCodes.HEATER_FAULTY_CMD, info=Info.HEATER_FAULTY_CMD) oce.add(keys=OpCode.HEATER_FAULTY_CMD, info=Info.HEATER_FAULTY_CMD)
defs.add_service( defs.add_service(
name=CustomServiceList.HEATER.value, name=CustomServiceList.HEATER.value,
info="Heater Device", info="Heater Device",
@ -69,7 +69,7 @@ def add_heater_cmds(defs: TmtcDefinitionWrapper):
def pack_heater_cmds(object_id: bytearray, op_code: str, q: DefaultPusQueueHelper): def pack_heater_cmds(object_id: bytearray, op_code: str, q: DefaultPusQueueHelper):
if op_code in OpCodes.HEATER_CMD: if op_code in OpCode.HEATER_CMD:
q.add_log_cmd("Heater Switching") q.add_log_cmd("Heater Switching")
heater_number = prompt_heater() heater_number = prompt_heater()
while True: while True:
@ -89,7 +89,7 @@ def pack_heater_cmds(object_id: bytearray, op_code: str, q: DefaultPusQueueHelpe
debug_string = f"Switching heater {heater_number} {act_str}" debug_string = f"Switching heater {heater_number} {act_str}"
q.add_log_cmd(debug_string) q.add_log_cmd(debug_string)
q.add_pus_tc(pack_switch_heater_command(object_id, heater_number, action)) q.add_pus_tc(pack_switch_heater_command(object_id, heater_number, action))
if op_code in OpCodes.HEATER_EXT_CTRL: if op_code in OpCode.HEATER_EXT_CTRL:
heater_number = prompt_heater() heater_number = prompt_heater()
obj_id = heater_idx_to_obj(heater_number) obj_id = heater_idx_to_obj(heater_number)
health_cmd( health_cmd(
@ -99,7 +99,7 @@ def pack_heater_cmds(object_id: bytearray, op_code: str, q: DefaultPusQueueHelpe
health_str="External Control", health_str="External Control",
heater_idx=heater_number, heater_idx=heater_number,
) )
if op_code in OpCodes.HEATER_FAULTY_CMD: if op_code in OpCode.HEATER_FAULTY_CMD:
heater_number = prompt_heater() heater_number = prompt_heater()
obj_id = heater_idx_to_obj(heater_number) obj_id = heater_idx_to_obj(heater_number)
health_cmd( health_cmd(
@ -109,7 +109,7 @@ def pack_heater_cmds(object_id: bytearray, op_code: str, q: DefaultPusQueueHelpe
health_str="Faulty", health_str="Faulty",
heater_idx=heater_number, heater_idx=heater_number,
) )
if op_code in OpCodes.HEATER_HEALTHY_CMD: if op_code in OpCode.HEATER_HEALTHY_CMD:
heater_number = prompt_heater() heater_number = prompt_heater()
obj_id = heater_idx_to_obj(heater_number) obj_id = heater_idx_to_obj(heater_number)
health_cmd( health_cmd(
@ -165,7 +165,7 @@ def prompt_heater() -> int:
print("Heater number not a digit") print("Heater number not a digit")
continue continue
heater_number = int(heater_number) heater_number = int(heater_number)
if heater_number >= SwitchNumbers.NUMBER_OF_SWITCHES or heater_number < 0: if heater_number >= SwitchNumber.NUMBER_OF_SWITCHES or heater_number < 0:
print("Invalid heater switch number") print("Invalid heater switch number")
continue continue
break break

View File

@ -1,9 +1,9 @@
import enum import enum
class MgmLis3SetIds(enum.IntEnum): class MgmLis3SetId(enum.IntEnum):
CORE_HK = 0 CORE_HK = 0
class MgmRm3100SetIds(enum.IntEnum): class MgmRm3100SetId(enum.IntEnum):
CORE_HK = 0 CORE_HK = 0

View File

@ -9,7 +9,7 @@ from spacepackets.ecss.tc import PusTelecommand
from tmtccmd.tc import DefaultPusQueueHelper from tmtccmd.tc import DefaultPusQueueHelper
class CommandIds: class CommandId:
# prints the clcw to the console. Useful for debugging # prints the clcw to the console. Useful for debugging
PRINT_CLCW = bytearray([0x0, 0x0, 0x0, 0x0]) PRINT_CLCW = bytearray([0x0, 0x0, 0x0, 0x0])
# Print PDEC monitor register # Print PDEC monitor register
@ -22,9 +22,9 @@ def pack_pdec_handler_test(
q.add_log_cmd(f"Testing PDEC handler with object id: {object_id.hex()}") q.add_log_cmd(f"Testing PDEC handler with object id: {object_id.hex()}")
if op_code == "0": if op_code == "0":
q.add_log_cmd("PDEC Handler: Print CLCW") q.add_log_cmd("PDEC Handler: Print CLCW")
command = object_id + CommandIds.PRINT_CLCW command = object_id + CommandId.PRINT_CLCW
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command))
if op_code == "1": if op_code == "1":
q.add_log_cmd("PDEC Handler: Print PDEC monitor register") q.add_log_cmd("PDEC Handler: Print PDEC monitor register")
command = object_id + CommandIds.PRINT_PDEC_MON command = object_id + CommandId.PRINT_PDEC_MON
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command))

View File

@ -31,7 +31,7 @@ from eive_tmtc.config.object_ids import PL_PCDU_ID
LOGGER = get_console_logger() LOGGER = get_console_logger()
class OpCodes: class OpCode:
SWITCH_HPA_ON_PROC = ["0", "proc_hpa"] SWITCH_HPA_ON_PROC = ["0", "proc_hpa"]
SWITCH_ON = ["2", "on"] SWITCH_ON = ["2", "on"]
SWITCH_OFF = ["3", "off"] SWITCH_OFF = ["3", "off"]
@ -70,7 +70,7 @@ class Info:
DISABLE_HK = "Disable HK" DISABLE_HK = "Disable HK"
class SetIds(enum.IntEnum): class SetId(enum.IntEnum):
ADC = 0 ADC = 0
@ -124,63 +124,63 @@ class ParamIds(enum.IntEnum):
@tmtc_definitions_provider @tmtc_definitions_provider
def add_pl_pcdu_cmds(defs: TmtcDefinitionWrapper): def add_pl_pcdu_cmds(defs: TmtcDefinitionWrapper):
oce = OpCodeEntry() oce = OpCodeEntry()
oce.add(keys=OpCodes.SWITCH_HPA_ON_PROC, info=Info.SWITCH_HPA_ON_PROC) oce.add(keys=OpCode.SWITCH_HPA_ON_PROC, info=Info.SWITCH_HPA_ON_PROC)
oce.add(keys=OpCodes.SWITCH_ON, info=Info.SWITCH_ON) oce.add(keys=OpCode.SWITCH_ON, info=Info.SWITCH_ON)
oce.add(keys=OpCodes.SWITCH_OFF, info=Info.SWITCH_OFF) oce.add(keys=OpCode.SWITCH_OFF, info=Info.SWITCH_OFF)
oce.add(keys=OpCodes.NORMAL_SSR, info=Info.NORMAL_SSR) oce.add(keys=OpCode.NORMAL_SSR, info=Info.NORMAL_SSR)
oce.add(keys=OpCodes.NORMAL_DRO, info=Info.NORMAL_DRO) oce.add(keys=OpCode.NORMAL_DRO, info=Info.NORMAL_DRO)
oce.add(keys=OpCodes.NORMAL_X8, info=Info.NORMAL_X8) oce.add(keys=OpCode.NORMAL_X8, info=Info.NORMAL_X8)
oce.add(keys=OpCodes.NORMAL_TX, info=Info.NORMAL_TX) oce.add(keys=OpCode.NORMAL_TX, info=Info.NORMAL_TX)
oce.add(keys=OpCodes.NORMAL_MPA, info=Info.NORMAL_MPA) oce.add(keys=OpCode.NORMAL_MPA, info=Info.NORMAL_MPA)
oce.add(keys=OpCodes.NORMAL_HPA, info=Info.NORMAL_HPA) oce.add(keys=OpCode.NORMAL_HPA, info=Info.NORMAL_HPA)
oce.add(keys=OpCodes.REQ_OS_HK, info=Info.REQ_OS_HK) oce.add(keys=OpCode.REQ_OS_HK, info=Info.REQ_OS_HK)
oce.add(keys=OpCodes.ENABLE_HK, info=Info.ENABLE_HK) oce.add(keys=OpCode.ENABLE_HK, info=Info.ENABLE_HK)
oce.add( oce.add(
keys=OpCodes.INJECT_SSR_TO_DRO_FAILURE, keys=OpCode.INJECT_SSR_TO_DRO_FAILURE,
info="Inject failure SSR to DRO transition", info="Inject failure SSR to DRO transition",
) )
oce.add( oce.add(
keys=OpCodes.INJECT_DRO_TO_X8_FAILURE, keys=OpCode.INJECT_DRO_TO_X8_FAILURE,
info="Inject failure in DRO to X8 transition", info="Inject failure in DRO to X8 transition",
) )
oce.add( oce.add(
keys=OpCodes.INJECT_X8_TO_TX_FAILURE, keys=OpCode.INJECT_X8_TO_TX_FAILURE,
info="Inject failure in X8 to TX transition", info="Inject failure in X8 to TX transition",
) )
oce.add( oce.add(
keys=OpCodes.INJECT_TX_TO_MPA_FAILURE, keys=OpCode.INJECT_TX_TO_MPA_FAILURE,
info="Inject failure in TX to MPA transition", info="Inject failure in TX to MPA transition",
) )
oce.add( oce.add(
keys=OpCodes.INJECT_MPA_TO_HPA_FAILURE, keys=OpCode.INJECT_MPA_TO_HPA_FAILURE,
info="Inject failure in MPA to HPA transition", info="Inject failure in MPA to HPA transition",
) )
oce.add(keys=OpCodes.INJECT_ALL_ON_FAILURE, info="Inject failure in all on mode") oce.add(keys=OpCode.INJECT_ALL_ON_FAILURE, info="Inject failure in all on mode")
defs.add_service(CustomServiceList.PL_PCDU.value, "PL PCDU", oce) defs.add_service(CustomServiceList.PL_PCDU.value, "PL PCDU", oce)
def pack_pl_pcdu_commands(q: DefaultPusQueueHelper, op_code: str): def pack_pl_pcdu_commands(q: DefaultPusQueueHelper, op_code: str):
if op_code in OpCodes.SWITCH_ON: if op_code in OpCode.SWITCH_ON:
pack_pl_pcdu_mode_cmd(q=q, info=Info.SWITCH_ON, mode=Modes.ON, submode=0) pack_pl_pcdu_mode_cmd(q=q, info=Info.SWITCH_ON, mode=Modes.ON, submode=0)
if op_code in OpCodes.SWITCH_OFF: if op_code in OpCode.SWITCH_OFF:
pack_pl_pcdu_mode_cmd(q=q, info=Info.SWITCH_OFF, mode=Modes.OFF, submode=0) pack_pl_pcdu_mode_cmd(q=q, info=Info.SWITCH_OFF, mode=Modes.OFF, submode=0)
if op_code in OpCodes.ENABLE_HK: if op_code in OpCode.ENABLE_HK:
interval = float( interval = float(
input("Please enter HK collection interval in floating point seconds: ") input("Please enter HK collection interval in floating point seconds: ")
) )
cmds = enable_periodic_hk_command_with_interval( cmds = enable_periodic_hk_command_with_interval(
diag=True, sid=make_sid(PL_PCDU_ID, SetIds.ADC), interval_seconds=interval diag=True, sid=make_sid(PL_PCDU_ID, SetId.ADC), interval_seconds=interval
) )
q.add_log_cmd(f"Enable PL PCDU HK with interval of {interval} seconds") q.add_log_cmd(f"Enable PL PCDU HK with interval of {interval} seconds")
for cmd in cmds: for cmd in cmds:
q.add_pus_tc(cmd) q.add_pus_tc(cmd)
if op_code in OpCodes.DISABLE_HK: if op_code in OpCode.DISABLE_HK:
cmd = disable_periodic_hk_command( cmd = disable_periodic_hk_command(
diag=True, sid=make_sid(PL_PCDU_ID, SetIds.ADC) diag=True, sid=make_sid(PL_PCDU_ID, SetId.ADC)
) )
q.add_log_cmd("Disabling PL PCDU HK") q.add_log_cmd("Disabling PL PCDU HK")
q.add_pus_tc(cmd) q.add_pus_tc(cmd)
if op_code in OpCodes.NORMAL_SSR: if op_code in OpCode.NORMAL_SSR:
pack_pl_pcdu_mode_cmd( pack_pl_pcdu_mode_cmd(
q=q, q=q,
info=Info.NORMAL_SSR, info=Info.NORMAL_SSR,
@ -189,51 +189,51 @@ def pack_pl_pcdu_commands(q: DefaultPusQueueHelper, op_code: str):
NormalSubmodesMask.SOLID_STATE_RELAYS_ADC_ON NormalSubmodesMask.SOLID_STATE_RELAYS_ADC_ON
), ),
) )
if op_code in OpCodes.NORMAL_DRO: if op_code in OpCode.NORMAL_DRO:
pack_pl_pcdu_mode_cmd( pack_pl_pcdu_mode_cmd(
q=q, q=q,
info=Info.NORMAL_DRO, info=Info.NORMAL_DRO,
mode=Modes.NORMAL, mode=Modes.NORMAL,
submode=submode_mask_to_submode(NormalSubmodesMask.DRO_ON), submode=submode_mask_to_submode(NormalSubmodesMask.DRO_ON),
) )
if op_code in OpCodes.NORMAL_X8: if op_code in OpCode.NORMAL_X8:
pack_pl_pcdu_mode_cmd( pack_pl_pcdu_mode_cmd(
q=q, q=q,
info=Info.NORMAL_X8, info=Info.NORMAL_X8,
mode=Modes.NORMAL, mode=Modes.NORMAL,
submode=submode_mask_to_submode(NormalSubmodesMask.X8_ON), submode=submode_mask_to_submode(NormalSubmodesMask.X8_ON),
) )
if op_code in OpCodes.NORMAL_TX: if op_code in OpCode.NORMAL_TX:
pack_pl_pcdu_mode_cmd( pack_pl_pcdu_mode_cmd(
q=q, q=q,
info=Info.NORMAL_TX, info=Info.NORMAL_TX,
mode=Modes.NORMAL, mode=Modes.NORMAL,
submode=submode_mask_to_submode(NormalSubmodesMask.TX_ON), submode=submode_mask_to_submode(NormalSubmodesMask.TX_ON),
) )
if op_code in OpCodes.NORMAL_MPA: if op_code in OpCode.NORMAL_MPA:
pack_pl_pcdu_mode_cmd( pack_pl_pcdu_mode_cmd(
q=q, q=q,
info=Info.NORMAL_MPA, info=Info.NORMAL_MPA,
mode=Modes.NORMAL, mode=Modes.NORMAL,
submode=submode_mask_to_submode(NormalSubmodesMask.MPA_ON), submode=submode_mask_to_submode(NormalSubmodesMask.MPA_ON),
) )
if op_code in OpCodes.NORMAL_HPA: if op_code in OpCode.NORMAL_HPA:
pack_pl_pcdu_mode_cmd( pack_pl_pcdu_mode_cmd(
q=q, q=q,
info=Info.NORMAL_HPA, info=Info.NORMAL_HPA,
mode=Modes.NORMAL, mode=Modes.NORMAL,
submode=submode_mask_to_submode(NormalSubmodesMask.HPA_ON), submode=submode_mask_to_submode(NormalSubmodesMask.HPA_ON),
) )
if op_code in OpCodes.REQ_OS_HK: if op_code in OpCode.REQ_OS_HK:
q.add_log_cmd(f"PL PCDU: {Info.REQ_OS_HK}") q.add_log_cmd(f"PL PCDU: {Info.REQ_OS_HK}")
q.add_pus_tc( q.add_pus_tc(
generate_one_diag_command( generate_one_diag_command(
sid=make_sid(object_id=PL_PCDU_ID, set_id=SetIds.ADC) sid=make_sid(object_id=PL_PCDU_ID, set_id=SetId.ADC)
) )
) )
if op_code in OpCodes.SWITCH_HPA_ON_PROC: if op_code in OpCode.SWITCH_HPA_ON_PROC:
hpa_on_procedure(q) hpa_on_procedure(q)
if op_code in OpCodes.INJECT_ALL_ON_FAILURE: if op_code in OpCode.INJECT_ALL_ON_FAILURE:
pack_failure_injection_cmd( pack_failure_injection_cmd(
q=q, q=q,
param_id=ParamIds.INJECT_ALL_ON_FAILURE, param_id=ParamIds.INJECT_ALL_ON_FAILURE,

View File

@ -18,11 +18,11 @@ from tmtccmd.tc.pus_3_fsfw_hk import generate_one_hk_command, make_sid
from tmtccmd.util import ObjectIdU32 from tmtccmd.util import ObjectIdU32
class SetIds: class SetId:
HK = 3 HK = 3
class OpCodes: class OpCode:
ON = ["0", "on"] ON = ["0", "on"]
NORMAL = ["1", "normal"] NORMAL = ["1", "normal"]
OFF = ["2", "off"] OFF = ["2", "off"]
@ -40,7 +40,7 @@ class Info:
DEBUG_OFF = "Switch debug output off" DEBUG_OFF = "Switch debug output off"
class CommandIds: class CommandId:
START_CONVERSIONS = 2 START_CONVERSIONS = 2
READ_CONVERSIONS = 3 READ_CONVERSIONS = 3
ENABLE_DEBUG_OUTPUT = 4 ENABLE_DEBUG_OUTPUT = 4
@ -50,12 +50,12 @@ class CommandIds:
@tmtc_definitions_provider @tmtc_definitions_provider
def add_rad_sens_cmds(defs: TmtcDefinitionWrapper): def add_rad_sens_cmds(defs: TmtcDefinitionWrapper):
oce = OpCodeEntry() oce = OpCodeEntry()
oce.add(info=Info.ON, keys=OpCodes.ON) oce.add(info=Info.ON, keys=OpCode.ON)
oce.add(info=Info.OFF, keys=OpCodes.OFF) oce.add(info=Info.OFF, keys=OpCode.OFF)
oce.add(info=Info.NORMAL, keys=OpCodes.NORMAL) oce.add(info=Info.NORMAL, keys=OpCode.NORMAL)
oce.add(info=Info.REQ_OS_HK, keys=OpCodes.REQ_HK_ONCE) oce.add(info=Info.REQ_OS_HK, keys=OpCode.REQ_HK_ONCE)
oce.add(info=Info.DEBUG_ON, keys=OpCodes.DEBUG_ON) oce.add(info=Info.DEBUG_ON, keys=OpCode.DEBUG_ON)
oce.add(info=Info.DEBUG_OFF, keys=OpCodes.DEBUG_OFF) oce.add(info=Info.DEBUG_OFF, keys=OpCode.DEBUG_OFF)
defs.add_service( defs.add_service(
name=CustomServiceList.RAD_SENSOR.value, name=CustomServiceList.RAD_SENSOR.value,
info="Radiation Sensor", info="Radiation Sensor",
@ -68,26 +68,24 @@ def pack_rad_sensor_test_into(
): ):
q.add_log_cmd(f"Commanding Radiation sensor handler {object_id}") q.add_log_cmd(f"Commanding Radiation sensor handler {object_id}")
if op_code in OpCodes.ON: if op_code in OpCode.ON:
rad_sensor_mode_cmd(object_id, Modes.ON, Info.ON, q) rad_sensor_mode_cmd(object_id, Modes.ON, Info.ON, q)
if op_code in OpCodes.NORMAL: if op_code in OpCode.NORMAL:
rad_sensor_mode_cmd(object_id, Modes.NORMAL, Info.NORMAL, q) rad_sensor_mode_cmd(object_id, Modes.NORMAL, Info.NORMAL, q)
if op_code in OpCodes.OFF: if op_code in OpCode.OFF:
rad_sensor_mode_cmd(object_id, Modes.OFF, Info.OFF, q) rad_sensor_mode_cmd(object_id, Modes.OFF, Info.OFF, q)
if op_code in OpCodes.REQ_HK_ONCE: if op_code in OpCode.REQ_HK_ONCE:
q.add_log_cmd(f"Rad sensor: {Info.REQ_OS_HK}") q.add_log_cmd(f"Rad sensor: {Info.REQ_OS_HK}")
q.add_pus_tc( q.add_pus_tc(
generate_one_hk_command(sid=make_sid(object_id.as_bytes, set_id=SetIds.HK)) generate_one_hk_command(sid=make_sid(object_id.as_bytes, set_id=SetId.HK))
) )
if op_code in OpCodes.DEBUG_ON: if op_code in OpCode.DEBUG_ON:
q.add_log_cmd(f"Rad sensor: {Info.DEBUG_ON}") q.add_log_cmd(f"Rad sensor: {Info.DEBUG_ON}")
command = object_id.as_bytes + struct.pack("!I", CommandIds.ENABLE_DEBUG_OUTPUT) command = object_id.as_bytes + struct.pack("!I", CommandId.ENABLE_DEBUG_OUTPUT)
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command))
if op_code in OpCodes.DEBUG_OFF: if op_code in OpCode.DEBUG_OFF:
q.add_log_cmd(f"Rad sensor: {Info.DEBUG_OFF}") q.add_log_cmd(f"Rad sensor: {Info.DEBUG_OFF}")
command = object_id.as_bytes + struct.pack( command = object_id.as_bytes + struct.pack("!I", CommandId.DISABLE_DEBUG_OUTPUT)
"!I", CommandIds.DISABLE_DEBUG_OUTPUT
)
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command))

View File

@ -1,7 +1,7 @@
from typing import Optional from typing import Optional
from eive_tmtc.config.definitions import CustomServiceList from eive_tmtc.config.definitions import CustomServiceList
from eive_tmtc.pus_tc.devs.pdec_handler import CommandIds from eive_tmtc.pus_tc.devs.pdec_handler import CommandId
from spacepackets.ecss import PusTelecommand from spacepackets.ecss import PusTelecommand
from tmtccmd.config import TmtcDefinitionWrapper, OpCodeEntry from tmtccmd.config import TmtcDefinitionWrapper, OpCodeEntry
from tmtccmd.config.tmtc import tmtc_definitions_provider from tmtccmd.config.tmtc import tmtc_definitions_provider
@ -32,7 +32,7 @@ RTD_IDS = [
] ]
class OpCodes: class OpCode:
ON = ["0", "on"] ON = ["0", "on"]
OFF = ["1", "off"] OFF = ["1", "off"]
NORMAL = ["2", "normal"] NORMAL = ["2", "normal"]
@ -49,9 +49,9 @@ class Info:
@tmtc_definitions_provider @tmtc_definitions_provider
def specify_rtd_cmds(defs: TmtcDefinitionWrapper): def specify_rtd_cmds(defs: TmtcDefinitionWrapper):
oce = OpCodeEntry() oce = OpCodeEntry()
oce.add(keys=OpCodes.ON, info=Info.ON) oce.add(keys=OpCode.ON, info=Info.ON)
oce.add(keys=OpCodes.NORMAL, info=Info.NORMAL) oce.add(keys=OpCode.NORMAL, info=Info.NORMAL)
oce.add(keys=OpCodes.OFF, info=Info.OFF) oce.add(keys=OpCode.OFF, info=Info.OFF)
defs.add_service( defs.add_service(
name=CustomServiceList.RTD.value, info="RTD commands", op_code_entry=oce name=CustomServiceList.RTD.value, info="RTD commands", op_code_entry=oce
) )
@ -67,7 +67,7 @@ def pack_rtd_commands(
tgt_rtd_idx = prompt_rtd_idx() tgt_rtd_idx = prompt_rtd_idx()
object_id_dict = get_object_ids() object_id_dict = get_object_ids()
object_id = object_id_dict.get(RTD_IDS[tgt_rtd_idx]) object_id = object_id_dict.get(RTD_IDS[tgt_rtd_idx])
if op_code in OpCodes.ON: if op_code in OpCode.ON:
app_data = pack_mode_data( app_data = pack_mode_data(
object_id=object_id.as_bytes, mode=Modes.ON, submode=0 object_id=object_id.as_bytes, mode=Modes.ON, submode=0
) )
@ -76,7 +76,7 @@ def pack_rtd_commands(
service=200, subservice=Subservices.TC_MODE_COMMAND, app_data=app_data service=200, subservice=Subservices.TC_MODE_COMMAND, app_data=app_data
) )
) )
if op_code in OpCodes.NORMAL: if op_code in OpCode.NORMAL:
app_data = pack_mode_data( app_data = pack_mode_data(
object_id=object_id.as_bytes, mode=Modes.NORMAL, submode=0 object_id=object_id.as_bytes, mode=Modes.NORMAL, submode=0
) )
@ -85,7 +85,7 @@ def pack_rtd_commands(
service=200, subservice=Subservices.TC_MODE_COMMAND, app_data=app_data service=200, subservice=Subservices.TC_MODE_COMMAND, app_data=app_data
) )
) )
if op_code in OpCodes.OFF: if op_code in OpCode.OFF:
app_data = pack_mode_data( app_data = pack_mode_data(
object_id=object_id.as_bytes, mode=Modes.OFF, submode=0 object_id=object_id.as_bytes, mode=Modes.OFF, submode=0
) )
@ -94,8 +94,8 @@ def pack_rtd_commands(
service=200, subservice=Subservices.TC_MODE_COMMAND, app_data=app_data service=200, subservice=Subservices.TC_MODE_COMMAND, app_data=app_data
) )
) )
if op_code in OpCodes.CONFIG_CMD: if op_code in OpCode.CONFIG_CMD:
command = object_id.as_bytes + CommandIds.PRINT_CLCW command = object_id.as_bytes + CommandId.PRINT_CLCW
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command))

View File

@ -16,7 +16,7 @@ from eive_tmtc.config.object_ids import SCEX_HANDLER_ID
USE_SCEX_CONF_FILE = True USE_SCEX_CONF_FILE = True
class OpCodes: class OpCode:
PING = ["0", "ping"] PING = ["0", "ping"]
ION_CMD = ["1", "ion"] ION_CMD = ["1", "ion"]
TEMP_CMD = ["2", "temp"] TEMP_CMD = ["2", "temp"]
@ -30,7 +30,7 @@ class OpCodes:
SWITCH_OFF = ["8", "off"] SWITCH_OFF = ["8", "off"]
class ActionIds(enum.IntEnum): class ActionId(enum.IntEnum):
PING = 7 PING = 7
ION_CMD = 4 ION_CMD = 4
TEMP_CMD = 3 TEMP_CMD = 3
@ -58,16 +58,16 @@ class Info:
@tmtc_definitions_provider @tmtc_definitions_provider
def add_scex_cmds(defs: TmtcDefinitionWrapper): def add_scex_cmds(defs: TmtcDefinitionWrapper):
oce = OpCodeEntry() oce = OpCodeEntry()
oce.add(keys=OpCodes.PING, info=Info.PING) oce.add(keys=OpCode.PING, info=Info.PING)
oce.add(keys=OpCodes.ION_CMD, info=Info.ION_CMD) oce.add(keys=OpCode.ION_CMD, info=Info.ION_CMD)
oce.add(keys=OpCodes.TEMP_CMD, info=Info.TEMP_CMD) oce.add(keys=OpCode.TEMP_CMD, info=Info.TEMP_CMD)
oce.add(keys=OpCodes.EXP_STATUS_CMD, info=Info.EXP_STATUS_CMD) oce.add(keys=OpCode.EXP_STATUS_CMD, info=Info.EXP_STATUS_CMD)
oce.add(keys=OpCodes.ONE_CELLS_CMD, info=Info.ONE_CELLS_CMD) oce.add(keys=OpCode.ONE_CELLS_CMD, info=Info.ONE_CELLS_CMD)
oce.add(keys=OpCodes.ALL_CELLS_CMD, info=Info.ALL_CELLS_CMD) oce.add(keys=OpCode.ALL_CELLS_CMD, info=Info.ALL_CELLS_CMD)
oce.add(keys=OpCodes.FRAM, info=Info.FRAM) oce.add(keys=OpCode.FRAM, info=Info.FRAM)
oce.add(keys=OpCodes.SWITCH_ON, info=Info.SWITCH_ON) oce.add(keys=OpCode.SWITCH_ON, info=Info.SWITCH_ON)
oce.add(keys=OpCodes.SWITCH_OFF, info=Info.SWITCH_OFF) oce.add(keys=OpCode.SWITCH_OFF, info=Info.SWITCH_OFF)
defs.add_service( defs.add_service(
name=CustomServiceList.SCEX.value, info="SCEX Device", op_code_entry=oce name=CustomServiceList.SCEX.value, info="SCEX Device", op_code_entry=oce
@ -78,7 +78,7 @@ def add_scex_cmds(defs: TmtcDefinitionWrapper):
def pack_scex_cmds(p: ServiceProviderParams): def pack_scex_cmds(p: ServiceProviderParams):
op_code = p.op_code op_code = p.op_code
q = p.queue_helper q = p.queue_helper
if op_code in OpCodes.SWITCH_ON: if op_code in OpCode.SWITCH_ON:
q.add_log_cmd(Info.SWITCH_ON) q.add_log_cmd(Info.SWITCH_ON)
q.add_pus_tc( q.add_pus_tc(
PusTelecommand( PusTelecommand(
@ -87,7 +87,7 @@ def pack_scex_cmds(p: ServiceProviderParams):
app_data=pack_mode_data(SCEX_HANDLER_ID, Modes.ON, 0), app_data=pack_mode_data(SCEX_HANDLER_ID, Modes.ON, 0),
) )
) )
if op_code in OpCodes.SWITCH_OFF: if op_code in OpCode.SWITCH_OFF:
q.add_log_cmd(Info.SWITCH_OFF) q.add_log_cmd(Info.SWITCH_OFF)
q.add_pus_tc( q.add_pus_tc(
PusTelecommand( PusTelecommand(
@ -96,30 +96,28 @@ def pack_scex_cmds(p: ServiceProviderParams):
app_data=pack_mode_data(SCEX_HANDLER_ID, Modes.OFF, 0), app_data=pack_mode_data(SCEX_HANDLER_ID, Modes.OFF, 0),
) )
) )
if op_code in OpCodes.PING: if op_code in OpCode.PING:
q.add_log_cmd(Info.PING) q.add_log_cmd(Info.PING)
app_data = bytes([0]) app_data = bytes([0])
q.add_pus_tc(make_fsfw_action_cmd(SCEX_HANDLER_ID, ActionIds.PING, app_data)) q.add_pus_tc(make_fsfw_action_cmd(SCEX_HANDLER_ID, ActionId.PING, app_data))
if op_code in OpCodes.ION_CMD: if op_code in OpCode.ION_CMD:
q.add_log_cmd(Info.ION_CMD) q.add_log_cmd(Info.ION_CMD)
app_data = bytes([0]) app_data = bytes([0])
q.add_pus_tc(make_fsfw_action_cmd(SCEX_HANDLER_ID, ActionIds.ION_CMD, app_data)) q.add_pus_tc(make_fsfw_action_cmd(SCEX_HANDLER_ID, ActionId.ION_CMD, app_data))
if op_code in OpCodes.TEMP_CMD: if op_code in OpCode.TEMP_CMD:
q.add_log_cmd(Info.TEMP_CMD) q.add_log_cmd(Info.TEMP_CMD)
app_data = bytes([0]) app_data = bytes([0])
q.add_pus_tc( q.add_pus_tc(make_fsfw_action_cmd(SCEX_HANDLER_ID, ActionId.TEMP_CMD, app_data))
make_fsfw_action_cmd(SCEX_HANDLER_ID, ActionIds.TEMP_CMD, app_data)
)
if op_code in OpCodes.EXP_STATUS_CMD: if op_code in OpCode.EXP_STATUS_CMD:
q.add_log_cmd(Info.EXP_STATUS_CMD) q.add_log_cmd(Info.EXP_STATUS_CMD)
app_data = bytes([0]) app_data = bytes([0])
q.add_pus_tc( q.add_pus_tc(
make_fsfw_action_cmd(SCEX_HANDLER_ID, ActionIds.EXP_STATUS_CMD, app_data) make_fsfw_action_cmd(SCEX_HANDLER_ID, ActionId.EXP_STATUS_CMD, app_data)
) )
# one cell # one cell
if op_code in OpCodes.ONE_CELLS_CMD: if op_code in OpCode.ONE_CELLS_CMD:
q.add_log_cmd(Info.ONE_CELLS_CMD) q.add_log_cmd(Info.ONE_CELLS_CMD)
app_data = bytearray([0]) app_data = bytearray([0])
@ -164,10 +162,10 @@ def pack_scex_cmds(p: ServiceProviderParams):
app_data.append(dac_weight3[cn]) app_data.append(dac_weight3[cn])
q.add_pus_tc( q.add_pus_tc(
make_fsfw_action_cmd(SCEX_HANDLER_ID, ActionIds.ONE_CELLS_CMD, app_data) make_fsfw_action_cmd(SCEX_HANDLER_ID, ActionId.ONE_CELLS_CMD, app_data)
) )
if op_code in OpCodes.ALL_CELLS_CMD: if op_code in OpCode.ALL_CELLS_CMD:
q.add_log_cmd(Info.ALL_CELLS_CMD) q.add_log_cmd(Info.ALL_CELLS_CMD)
app_data = bytearray([0]) app_data = bytearray([0])
@ -196,13 +194,13 @@ def pack_scex_cmds(p: ServiceProviderParams):
app_data.append(dac_weight3[cn]) app_data.append(dac_weight3[cn])
q.add_pus_tc( q.add_pus_tc(
make_fsfw_action_cmd(SCEX_HANDLER_ID, ActionIds.ALL_CELLS_CMD, app_data) make_fsfw_action_cmd(SCEX_HANDLER_ID, ActionId.ALL_CELLS_CMD, app_data)
) )
if op_code in OpCodes.FRAM: if op_code in OpCode.FRAM:
q.add_log_cmd(Info.FRAM) q.add_log_cmd(Info.FRAM)
app_data = bytes([0]) app_data = bytes([0])
q.add_pus_tc(make_fsfw_action_cmd(SCEX_HANDLER_ID, ActionIds.FRAM, app_data)) q.add_pus_tc(make_fsfw_action_cmd(SCEX_HANDLER_ID, ActionId.FRAM, app_data))
def append_16_bit_val(packet: bytearray, val: int): def append_16_bit_val(packet: bytearray, val: int):

View File

@ -5,6 +5,7 @@
@author J. Meier @author J. Meier
@date 14.08.2021 @date 14.08.2021
""" """
import enum
import struct import struct
from spacepackets.ecss.tc import PusTelecommand from spacepackets.ecss.tc import PusTelecommand
@ -19,7 +20,7 @@ from eive_tmtc.utility.input_helper import InputHelper
LOGGER = get_console_logger() LOGGER = get_console_logger()
class StarTrackerActionIds: class StarTrackerActionId(enum.IntEnum):
PING = 0 PING = 0
BOOT = 1 BOOT = 1
REQ_VERSION = 2 REQ_VERSION = 2
@ -183,57 +184,57 @@ def pack_star_tracker_commands(
q.add_pus_tc(PusTelecommand(service=200, subservice=1, app_data=data)) q.add_pus_tc(PusTelecommand(service=200, subservice=1, app_data=data))
if op_code == "5": if op_code == "5":
q.add_log_cmd("Star tracker: Ping") q.add_log_cmd("Star tracker: Ping")
data = obyt + struct.pack("!I", StarTrackerActionIds.PING) data = obyt + struct.pack("!I", StarTrackerActionId.PING)
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data))
if op_code == "6": if op_code == "6":
q.add_log_cmd("Star tracker: Switch to bootloader program") q.add_log_cmd("Star tracker: Switch to bootloader program")
data = obyt + struct.pack( data = obyt + struct.pack(
"!I", StarTrackerActionIds.SWITCH_TO_BOOTLOADER_PROGRAM "!I", StarTrackerActionId.SWITCH_TO_BOOTLOADER_PROGRAM
) )
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data))
if op_code == "7": if op_code == "7":
q.add_log_cmd("Star tracker: Temperature request") q.add_log_cmd("Star tracker: Temperature request")
data = obyt + struct.pack("!I", StarTrackerActionIds.REQ_TEMPERATURE) data = obyt + struct.pack("!I", StarTrackerActionId.REQ_TEMPERATURE)
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data))
if op_code == "8": if op_code == "8":
q.add_log_cmd("Star tracker: Request version") q.add_log_cmd("Star tracker: Request version")
data = obyt + struct.pack("!I", StarTrackerActionIds.REQ_VERSION) data = obyt + struct.pack("!I", StarTrackerActionId.REQ_VERSION)
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data))
if op_code == "9": if op_code == "9":
q.add_log_cmd("Star tracker: Request interface") q.add_log_cmd("Star tracker: Request interface")
data = obyt + struct.pack("!I", StarTrackerActionIds.REQ_INTERFACE) data = obyt + struct.pack("!I", StarTrackerActionId.REQ_INTERFACE)
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data))
if op_code == "10": if op_code == "10":
q.add_log_cmd("Star tracker: Request power") q.add_log_cmd("Star tracker: Request power")
data = obyt + struct.pack("!I", StarTrackerActionIds.REQ_POWER) data = obyt + struct.pack("!I", StarTrackerActionId.REQ_POWER)
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data))
if op_code == "11": if op_code == "11":
q.add_log_cmd("Star tracker: Set subscription parameters") q.add_log_cmd("Star tracker: Set subscription parameters")
json_file = get_config_file() json_file = get_config_file()
data = ( data = (
obyt obyt
+ struct.pack("!I", StarTrackerActionIds.SUBSCRIPTION) + struct.pack("!I", StarTrackerActionId.SUBSCRIPTION)
+ bytearray(json_file, "utf-8") + bytearray(json_file, "utf-8")
) )
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data))
if op_code == "12": if op_code == "12":
q.add_log_cmd("Star tracker: Boot") q.add_log_cmd("Star tracker: Boot")
data = obyt + struct.pack("!I", StarTrackerActionIds.BOOT) data = obyt + struct.pack("!I", StarTrackerActionId.BOOT)
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data))
if op_code == "13": if op_code == "13":
q.add_log_cmd("Star tracker: Request time") q.add_log_cmd("Star tracker: Request time")
data = obyt + struct.pack("!I", StarTrackerActionIds.REQ_TIME) data = obyt + struct.pack("!I", StarTrackerActionId.REQ_TIME)
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data))
if op_code == "14": if op_code == "14":
q.add_log_cmd("Star tracker: Request solution") q.add_log_cmd("Star tracker: Request solution")
data = obyt + struct.pack("!I", StarTrackerActionIds.REQ_SOLUTION) data = obyt + struct.pack("!I", StarTrackerActionId.REQ_SOLUTION)
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data))
if op_code == "15": if op_code == "15":
q.add_log_cmd("Star tracker: Upload image") q.add_log_cmd("Star tracker: Upload image")
image = get_upload_image() image = get_upload_image()
data = ( data = (
obyt obyt
+ struct.pack("!I", StarTrackerActionIds.UPLOAD_IMAGE) + struct.pack("!I", StarTrackerActionId.UPLOAD_IMAGE)
+ bytearray(image, "utf-8") + bytearray(image, "utf-8")
) )
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data))
@ -244,7 +245,7 @@ def pack_star_tracker_commands(
path = FileDefs.download_path path = FileDefs.download_path
data = ( data = (
obyt obyt
+ struct.pack("!I", StarTrackerActionIds.DOWNLOAD_IMAGE) + struct.pack("!I", StarTrackerActionId.DOWNLOAD_IMAGE)
+ bytearray(path, "utf-8") + bytearray(path, "utf-8")
) )
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data))
@ -253,7 +254,7 @@ def pack_star_tracker_commands(
json_file = get_config_file() json_file = get_config_file()
data = ( data = (
obyt obyt
+ struct.pack("!I", StarTrackerActionIds.LIMITS) + struct.pack("!I", StarTrackerActionId.LIMITS)
+ bytearray(json_file, "utf-8") + bytearray(json_file, "utf-8")
) )
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data))
@ -262,7 +263,7 @@ def pack_star_tracker_commands(
json_file = get_config_file() json_file = get_config_file()
data = ( data = (
obyt obyt
+ struct.pack("!I", StarTrackerActionIds.TRACKING) + struct.pack("!I", StarTrackerActionId.TRACKING)
+ bytearray(json_file, "utf-8") + bytearray(json_file, "utf-8")
) )
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data))
@ -271,7 +272,7 @@ def pack_star_tracker_commands(
json_file = get_config_file() json_file = get_config_file()
data = ( data = (
obyt obyt
+ struct.pack("!I", StarTrackerActionIds.MOUNTING) + struct.pack("!I", StarTrackerActionId.MOUNTING)
+ bytearray(json_file, "utf-8") + bytearray(json_file, "utf-8")
) )
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data))
@ -280,7 +281,7 @@ def pack_star_tracker_commands(
json_file = get_config_file() json_file = get_config_file()
data = ( data = (
obyt obyt
+ struct.pack("!I", StarTrackerActionIds.CAMERA) + struct.pack("!I", StarTrackerActionId.CAMERA)
+ bytearray(json_file, "utf-8") + bytearray(json_file, "utf-8")
) )
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data))
@ -289,7 +290,7 @@ def pack_star_tracker_commands(
json_file = get_config_file() json_file = get_config_file()
data = ( data = (
obyt obyt
+ struct.pack("!I", StarTrackerActionIds.CENTROIDING) + struct.pack("!I", StarTrackerActionId.CENTROIDING)
+ bytearray(json_file, "utf-8") + bytearray(json_file, "utf-8")
) )
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data))
@ -298,7 +299,7 @@ def pack_star_tracker_commands(
json_file = get_config_file() json_file = get_config_file()
data = ( data = (
obyt obyt
+ struct.pack("!I", StarTrackerActionIds.LISA) + struct.pack("!I", StarTrackerActionId.LISA)
+ bytearray(json_file, "utf-8") + bytearray(json_file, "utf-8")
) )
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data))
@ -307,7 +308,7 @@ def pack_star_tracker_commands(
json_file = get_config_file() json_file = get_config_file()
data = ( data = (
obyt obyt
+ struct.pack("!I", StarTrackerActionIds.MATCHING) + struct.pack("!I", StarTrackerActionId.MATCHING)
+ bytearray(json_file, "utf-8") + bytearray(json_file, "utf-8")
) )
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data))
@ -316,7 +317,7 @@ def pack_star_tracker_commands(
json_file = get_config_file() json_file = get_config_file()
data = ( data = (
obyt obyt
+ struct.pack("!I", StarTrackerActionIds.VALIDATION) + struct.pack("!I", StarTrackerActionId.VALIDATION)
+ bytearray(json_file, "utf-8") + bytearray(json_file, "utf-8")
) )
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data))
@ -325,7 +326,7 @@ def pack_star_tracker_commands(
json_file = get_config_file() json_file = get_config_file()
data = ( data = (
obyt obyt
+ struct.pack("!I", StarTrackerActionIds.ALGO) + struct.pack("!I", StarTrackerActionId.ALGO)
+ bytearray(json_file, "utf-8") + bytearray(json_file, "utf-8")
) )
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data))
@ -334,37 +335,37 @@ def pack_star_tracker_commands(
actionid = int(input("Specify parameter ID (take image - 4): ")) actionid = int(input("Specify parameter ID (take image - 4): "))
data = ( data = (
obyt obyt
+ struct.pack("!I", StarTrackerActionIds.TAKE_IMAGE) + struct.pack("!I", StarTrackerActionId.TAKE_IMAGE)
+ struct.pack("!B", actionid) + struct.pack("!B", actionid)
) )
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data))
if op_code == "28": if op_code == "28":
q.add_log_cmd("Star tracker: Stop str helper") q.add_log_cmd("Star tracker: Stop str helper")
data = obyt + struct.pack("!I", StarTrackerActionIds.STOP_STR_HELPER) data = obyt + struct.pack("!I", StarTrackerActionId.STOP_STR_HELPER)
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data))
if op_code == "30": if op_code == "30":
q.add_log_cmd("Star tracker: Set name of download image") q.add_log_cmd("Star tracker: Set name of download image")
filename = input("Specify download image name: ") filename = input("Specify download image name: ")
data = ( data = (
obyt obyt
+ struct.pack("!I", StarTrackerActionIds.CHANGE_DOWNLOAD_IMAGE) + struct.pack("!I", StarTrackerActionId.CHANGE_DOWNLOAD_IMAGE)
+ bytearray(filename, "utf-8") + bytearray(filename, "utf-8")
) )
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data))
if op_code == "31": if op_code == "31":
q.add_log_cmd("Star tracker: Request histogram") q.add_log_cmd("Star tracker: Request histogram")
data = obyt + struct.pack("!I", StarTrackerActionIds.REQ_HISTOGRAM) data = obyt + struct.pack("!I", StarTrackerActionId.REQ_HISTOGRAM)
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data))
if op_code == "32": if op_code == "32":
q.add_log_cmd("Star tracker: Request contrast") q.add_log_cmd("Star tracker: Request contrast")
data = obyt + struct.pack("!I", StarTrackerActionIds.REQ_CONTRAST) data = obyt + struct.pack("!I", StarTrackerActionId.REQ_CONTRAST)
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data))
if op_code == "33": if op_code == "33":
q.add_log_cmd("Star tracker: Set json filename") q.add_log_cmd("Star tracker: Set json filename")
json_file = get_config_file() json_file = get_config_file()
data = ( data = (
obyt obyt
+ struct.pack("!I", StarTrackerActionIds.SET_JSON_FILE_NAME) + struct.pack("!I", StarTrackerActionId.SET_JSON_FILE_NAME)
+ bytearray(json_file, "utf-8") + bytearray(json_file, "utf-8")
) )
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data))
@ -377,7 +378,7 @@ def pack_star_tracker_commands(
filename = input("Specify filename: ") filename = input("Specify filename: ")
data = ( data = (
obyt obyt
+ struct.pack("!I", StarTrackerActionIds.SET_FLASH_READ_FILENAME) + struct.pack("!I", StarTrackerActionId.SET_FLASH_READ_FILENAME)
+ bytearray(filename, "utf-8") + bytearray(filename, "utf-8")
) )
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data))
@ -390,7 +391,7 @@ def pack_star_tracker_commands(
unix_time = 1640783543 unix_time = 1640783543
data = ( data = (
obyt obyt
+ struct.pack("!I", StarTrackerActionIds.SET_TIME) + struct.pack("!I", StarTrackerActionId.SET_TIME)
+ struct.pack("!Q", unix_time) + struct.pack("!Q", unix_time)
) )
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data))
@ -399,7 +400,7 @@ def pack_star_tracker_commands(
id = 0 id = 0
data = ( data = (
obyt obyt
+ struct.pack("!I", StarTrackerActionIds.DOWNLOAD_CENTROID) + struct.pack("!I", StarTrackerActionId.DOWNLOAD_CENTROID)
+ struct.pack("!B", id) + struct.pack("!B", id)
) )
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data))
@ -408,7 +409,7 @@ def pack_star_tracker_commands(
id = 0 id = 0
data = ( data = (
obyt obyt
+ struct.pack("!I", StarTrackerActionIds.DOWNLOAD_MATCHED_STAR) + struct.pack("!I", StarTrackerActionId.DOWNLOAD_MATCHED_STAR)
+ struct.pack("!B", id) + struct.pack("!B", id)
) )
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data))
@ -417,7 +418,7 @@ def pack_star_tracker_commands(
id = 0 id = 0
data = ( data = (
obyt obyt
+ struct.pack("!I", StarTrackerActionIds.DOWNLOAD_DBIMAGE) + struct.pack("!I", StarTrackerActionId.DOWNLOAD_DBIMAGE)
+ struct.pack("!B", id) + struct.pack("!B", id)
) )
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data))
@ -427,7 +428,7 @@ def pack_star_tracker_commands(
type = 1 # 0 - normal, 1 - fast type = 1 # 0 - normal, 1 - fast
data = ( data = (
obyt obyt
+ struct.pack("!I", StarTrackerActionIds.DOWNLOAD_BLOBPIXEL) + struct.pack("!I", StarTrackerActionId.DOWNLOAD_BLOBPIXEL)
+ struct.pack("!B", id) + struct.pack("!B", id)
+ struct.pack("!B", type) + struct.pack("!B", type)
) )
@ -438,7 +439,7 @@ def pack_star_tracker_commands(
length = int(input("Size to download: ")) length = int(input("Size to download: "))
data = ( data = (
obyt obyt
+ struct.pack("!I", StarTrackerActionIds.DOWNLOAD_FPGA_IMAGE) + struct.pack("!I", StarTrackerActionId.DOWNLOAD_FPGA_IMAGE)
+ struct.pack("!I", position) + struct.pack("!I", position)
+ struct.pack("!I", length) + struct.pack("!I", length)
+ bytearray(FileDefs.downloadFpgaImagePath, "utf-8") + bytearray(FileDefs.downloadFpgaImagePath, "utf-8")
@ -448,7 +449,7 @@ def pack_star_tracker_commands(
q.add_log_cmd("Star tracker: Change donwload FPGA image file name") q.add_log_cmd("Star tracker: Change donwload FPGA image file name")
data = ( data = (
obyt obyt
+ struct.pack("!I", StarTrackerActionIds.CHANGE_FPGA_DOWNLOAD_FILE) + struct.pack("!I", StarTrackerActionId.CHANGE_FPGA_DOWNLOAD_FILE)
+ bytearray(FileDefs.downloadFpgaImageName, "utf-8") + bytearray(FileDefs.downloadFpgaImageName, "utf-8")
) )
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data))
@ -456,7 +457,7 @@ def pack_star_tracker_commands(
q.add_log_cmd("Star tracker: Upload FPGA image") q.add_log_cmd("Star tracker: Upload FPGA image")
data = ( data = (
obyt obyt
+ struct.pack("!I", StarTrackerActionIds.UPLOAD_FPGA_IMAGE) + struct.pack("!I", StarTrackerActionId.UPLOAD_FPGA_IMAGE)
+ bytearray(FileDefs.uploadFpgaImageName, "utf-8") + bytearray(FileDefs.uploadFpgaImageName, "utf-8")
) )
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data))
@ -465,28 +466,28 @@ def pack_star_tracker_commands(
id = 3 id = 3
data = ( data = (
obyt obyt
+ struct.pack("!I", StarTrackerActionIds.FPGA_ACTION) + struct.pack("!I", StarTrackerActionId.FPGA_ACTION)
+ struct.pack("!B", id) + struct.pack("!B", id)
) )
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data))
if op_code == "48": if op_code == "48":
q.add_log_cmd("Star tracker: Unlock") q.add_log_cmd("Star tracker: Unlock")
data = obyt + struct.pack("!I", StarTrackerActionIds.UNLOCK) data = obyt + struct.pack("!I", StarTrackerActionId.UNLOCK)
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data))
if op_code == "49": if op_code == "49":
q.add_log_cmd("Star tracker: Request camera parameters") q.add_log_cmd("Star tracker: Request camera parameters")
data = obyt + struct.pack("!I", StarTrackerActionIds.REQ_CAMERA_PARAMS) data = obyt + struct.pack("!I", StarTrackerActionId.REQ_CAMERA_PARAMS)
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data))
if op_code == "50": if op_code == "50":
q.add_log_cmd("Star tracker: Request limits") q.add_log_cmd("Star tracker: Request limits")
data = obyt + struct.pack("!I", StarTrackerActionIds.REQ_LIMITS) data = obyt + struct.pack("!I", StarTrackerActionId.REQ_LIMITS)
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data))
if op_code == "51": if op_code == "51":
q.add_log_cmd("Star tracker: Set image processor parameters") q.add_log_cmd("Star tracker: Set image processor parameters")
json_file = get_config_file() json_file = get_config_file()
data = ( data = (
obyt obyt
+ struct.pack("!I", StarTrackerActionIds.IMAGE_PROCESSOR) + struct.pack("!I", StarTrackerActionId.IMAGE_PROCESSOR)
+ bytearray(json_file, "utf-8") + bytearray(json_file, "utf-8")
) )
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data))
@ -494,7 +495,7 @@ def pack_star_tracker_commands(
q.add_log_cmd("Star tracker: EGSE load ground config camera parameters") q.add_log_cmd("Star tracker: EGSE load ground config camera parameters")
data = ( data = (
obyt obyt
+ struct.pack("!I", StarTrackerActionIds.CAMERA) + struct.pack("!I", StarTrackerActionId.CAMERA)
+ bytearray(FileDefs.egse_ground_config, "utf-8") + bytearray(FileDefs.egse_ground_config, "utf-8")
) )
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data))
@ -502,64 +503,64 @@ def pack_star_tracker_commands(
q.add_log_cmd("Star tracker: EGSE load flight config camera parameters") q.add_log_cmd("Star tracker: EGSE load flight config camera parameters")
data = ( data = (
obyt obyt
+ struct.pack("!I", StarTrackerActionIds.CAMERA) + struct.pack("!I", StarTrackerActionId.CAMERA)
+ bytearray(FileDefs.egse_flight_config, "utf-8") + bytearray(FileDefs.egse_flight_config, "utf-8")
) )
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data))
if op_code == "54": if op_code == "54":
q.add_log_cmd("Star tracker: Request log level parameters") q.add_log_cmd("Star tracker: Request log level parameters")
data = obyt + struct.pack("!I", StarTrackerActionIds.REQ_LOG_LEVEL) data = obyt + struct.pack("!I", StarTrackerActionId.REQ_LOG_LEVEL)
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data))
if op_code == "55": if op_code == "55":
q.add_log_cmd("Star tracker: Request mounting parameters") q.add_log_cmd("Star tracker: Request mounting parameters")
data = obyt + struct.pack("!I", StarTrackerActionIds.REQ_MOUNTING) data = obyt + struct.pack("!I", StarTrackerActionId.REQ_MOUNTING)
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data))
if op_code == "56": if op_code == "56":
q.add_log_cmd("Star tracker: Request image processor parameters") q.add_log_cmd("Star tracker: Request image processor parameters")
data = obyt + struct.pack("!I", StarTrackerActionIds.REQ_IMAGE_PROCESSOR) data = obyt + struct.pack("!I", StarTrackerActionId.REQ_IMAGE_PROCESSOR)
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data))
if op_code == "57": if op_code == "57":
q.add_log_cmd("Star tracker: Request centroiding parameters") q.add_log_cmd("Star tracker: Request centroiding parameters")
data = obyt + struct.pack("!I", StarTrackerActionIds.REQ_CENTROIDING) data = obyt + struct.pack("!I", StarTrackerActionId.REQ_CENTROIDING)
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data))
if op_code == "58": if op_code == "58":
q.add_log_cmd("Star tracker: Request lisa parameters") q.add_log_cmd("Star tracker: Request lisa parameters")
data = obyt + struct.pack("!I", StarTrackerActionIds.REQ_LISA) data = obyt + struct.pack("!I", StarTrackerActionId.REQ_LISA)
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data))
if op_code == "59": if op_code == "59":
q.add_log_cmd("Star tracker: Request matching parameters") q.add_log_cmd("Star tracker: Request matching parameters")
data = obyt + struct.pack("!I", StarTrackerActionIds.REQ_MATCHING) data = obyt + struct.pack("!I", StarTrackerActionId.REQ_MATCHING)
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data))
if op_code == "60": if op_code == "60":
q.add_log_cmd("Star tracker: Request tracking parameters") q.add_log_cmd("Star tracker: Request tracking parameters")
data = obyt + struct.pack("!I", StarTrackerActionIds.REQ_TRACKING) data = obyt + struct.pack("!I", StarTrackerActionId.REQ_TRACKING)
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data))
if op_code == "61": if op_code == "61":
q.add_log_cmd("Star tracker: Request validation parameters") q.add_log_cmd("Star tracker: Request validation parameters")
data = obyt + struct.pack("!I", StarTrackerActionIds.REQ_VALIDATION) data = obyt + struct.pack("!I", StarTrackerActionId.REQ_VALIDATION)
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data))
if op_code == "62": if op_code == "62":
q.add_log_cmd("Star tracker: Request algo parameters") q.add_log_cmd("Star tracker: Request algo parameters")
data = obyt + struct.pack("!I", StarTrackerActionIds.REQ_ALGO) data = obyt + struct.pack("!I", StarTrackerActionId.REQ_ALGO)
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data))
if op_code == "63": if op_code == "63":
q.add_log_cmd("Star tracker: Request subscription parameters") q.add_log_cmd("Star tracker: Request subscription parameters")
data = obyt + struct.pack("!I", StarTrackerActionIds.REQ_SUBSCRIPTION) data = obyt + struct.pack("!I", StarTrackerActionId.REQ_SUBSCRIPTION)
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data))
if op_code == "64": if op_code == "64":
q.add_log_cmd("Star tracker: Request log subscription parameters") q.add_log_cmd("Star tracker: Request log subscription parameters")
data = obyt + struct.pack("!I", StarTrackerActionIds.REQ_LOG_SUBSCRIPTION) data = obyt + struct.pack("!I", StarTrackerActionId.REQ_LOG_SUBSCRIPTION)
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data))
if op_code == "65": if op_code == "65":
q.add_log_cmd("Star tracker: Request debug camera parameters") q.add_log_cmd("Star tracker: Request debug camera parameters")
data = obyt + struct.pack("!I", StarTrackerActionIds.REQ_DEBUG_CAMERA) data = obyt + struct.pack("!I", StarTrackerActionId.REQ_DEBUG_CAMERA)
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data))
if op_code == "66": if op_code == "66":
q.add_log_cmd("Star tracker: Set log level parameters") q.add_log_cmd("Star tracker: Set log level parameters")
json_file = get_config_file() json_file = get_config_file()
data = ( data = (
obyt obyt
+ struct.pack("!I", StarTrackerActionIds.LOGLEVEL) + struct.pack("!I", StarTrackerActionId.LOGLEVEL)
+ bytearray(json_file, "utf-8") + bytearray(json_file, "utf-8")
) )
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data))
@ -569,7 +570,7 @@ def pack_star_tracker_commands(
json_file = get_config_file() json_file = get_config_file()
data = ( data = (
obyt obyt
+ struct.pack("!I", StarTrackerActionIds.LOG_SUBSCRIPTION) + struct.pack("!I", StarTrackerActionId.LOG_SUBSCRIPTION)
+ bytearray(json_file, "utf-8") + bytearray(json_file, "utf-8")
) )
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data))
@ -578,7 +579,7 @@ def pack_star_tracker_commands(
json_file = get_config_file() json_file = get_config_file()
data = ( data = (
obyt obyt
+ struct.pack("!I", StarTrackerActionIds.DEBUG_CAMERA) + struct.pack("!I", StarTrackerActionId.DEBUG_CAMERA)
+ bytearray(json_file, "utf-8") + bytearray(json_file, "utf-8")
) )
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data))
@ -587,20 +588,20 @@ def pack_star_tracker_commands(
firmware = get_firmware() firmware = get_firmware()
data = ( data = (
obyt obyt
+ struct.pack("!I", StarTrackerActionIds.FIRMWARE_UPDATE) + struct.pack("!I", StarTrackerActionId.FIRMWARE_UPDATE)
+ bytearray(firmware, "utf-8") + bytearray(firmware, "utf-8")
) )
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data))
if op_code == "70": if op_code == "70":
q.add_log_cmd("Star tracker: Disable timestamp generation") q.add_log_cmd("Star tracker: Disable timestamp generation")
command = obyt + struct.pack( command = obyt + struct.pack(
"!I", StarTrackerActionIds.DISBALE_TIMESTAMP_GENERATION "!I", StarTrackerActionId.DISBALE_TIMESTAMP_GENERATION
) )
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command))
if op_code == "71": if op_code == "71":
q.add_log_cmd("Star tracker: Enable timestamp generation") q.add_log_cmd("Star tracker: Enable timestamp generation")
command = obyt + struct.pack( command = obyt + struct.pack(
"!I", StarTrackerActionIds.ENABLE_TIMESTAMP_GENERATION "!I", StarTrackerActionId.ENABLE_TIMESTAMP_GENERATION
) )
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command))
@ -613,7 +614,7 @@ def pack_read_command(object_id: bytes) -> bytearray:
path = FileDefs.download_path path = FileDefs.download_path
data = ( data = (
object_id object_id
+ struct.pack("!I", StarTrackerActionIds.FLASH_READ) + struct.pack("!I", StarTrackerActionId.FLASH_READ)
+ struct.pack("!B", start_region) + struct.pack("!B", start_region)
+ struct.pack("!I", size) + struct.pack("!I", size)
+ bytearray(path, "utf-8") + bytearray(path, "utf-8")
@ -627,7 +628,7 @@ def pack_checksum_command(object_id: bytes) -> bytearray:
size = PartitionSize.STAR_TRACKER_FIRMWARE size = PartitionSize.STAR_TRACKER_FIRMWARE
data = ( data = (
object_id object_id
+ struct.pack("!I", StarTrackerActionIds.CHECKSUM) + struct.pack("!I", StarTrackerActionId.CHECKSUM)
+ struct.pack("!B", start_region) + struct.pack("!B", start_region)
+ struct.pack("!I", address) + struct.pack("!I", address)
+ struct.pack("!I", size) + struct.pack("!I", size)

View File

@ -1,2 +1,2 @@
class SetIds: class SetId:
HK = 3 HK = 3

View File

@ -5,6 +5,8 @@
@author J. Meier @author J. Meier
@date 13.12.2020 @date 13.12.2020
""" """
import enum
from eive_tmtc.config.definitions import CustomServiceList from eive_tmtc.config.definitions import CustomServiceList
from tmtccmd.config.tmtc import ( from tmtccmd.config.tmtc import (
tmtc_definitions_provider, tmtc_definitions_provider,
@ -20,12 +22,12 @@ import struct
from tmtccmd.util import ObjectIdU32 from tmtccmd.util import ObjectIdU32
class SetIds: class SetId:
RX_REGISTERS_DATASET = 1 RX_REGISTERS_DATASET = 1
TX_REGISTERS_DATASET = 2 TX_REGISTERS_DATASET = 2
class OpCodes: class OpCode:
OFF = "off" OFF = "off"
ON = "on" ON = "on"
NORMAL = "nml" NORMAL = "nml"
@ -46,7 +48,7 @@ class Info:
SET_CW = "Set TX carrier wave" SET_CW = "Set TX carrier wave"
class CommandIds: class CommandId(enum.IntEnum):
READ_RX_STATUS_REGISTERS = 2 READ_RX_STATUS_REGISTERS = 2
SET_TX_MODE_STANDBY = 3 SET_TX_MODE_STANDBY = 3
SET_TX_MODE_MODULATION = 4 SET_TX_MODE_MODULATION = 4
@ -67,16 +69,16 @@ class CommandIds:
@tmtc_definitions_provider @tmtc_definitions_provider
def add_syrlinks_cmds(defs: TmtcDefinitionWrapper): def add_syrlinks_cmds(defs: TmtcDefinitionWrapper):
oce = OpCodeEntry() oce = OpCodeEntry()
oce.add(OpCodes.OFF, "Syrlinks Handler: Set mode off") oce.add(OpCode.OFF, "Syrlinks Handler: Set mode off")
oce.add(OpCodes.ON, "Syrlinks Handler: Set mode on") oce.add(OpCode.ON, "Syrlinks Handler: Set mode on")
oce.add(OpCodes.NORMAL, "Syrlinks Handler: Set mode normal") oce.add(OpCode.NORMAL, "Syrlinks Handler: Set mode normal")
oce.add(OpCodes.STANDBY, "Syrlinks Handler: Set TX standby") oce.add(OpCode.STANDBY, "Syrlinks Handler: Set TX standby")
oce.add(OpCodes.MODULATION, "Syrlinks Handler: Set TX modulation") oce.add(OpCode.MODULATION, "Syrlinks Handler: Set TX modulation")
oce.add(OpCodes.HK_RX_REGS, Info.HK_RX_REGS) oce.add(OpCode.HK_RX_REGS, Info.HK_RX_REGS)
oce.add(OpCodes.HK_TX_REGS, Info.HK_TX_REGS) oce.add(OpCode.HK_TX_REGS, Info.HK_TX_REGS)
oce.add(OpCodes.SET_CW, Info.SET_CW) oce.add(OpCode.SET_CW, Info.SET_CW)
oce.add(OpCodes.TX_STATUS, Info.TX_STATUS) oce.add(OpCode.TX_STATUS, Info.TX_STATUS)
oce.add(OpCodes.RX_STATUS, Info.RX_STATUS) oce.add(OpCode.RX_STATUS, Info.RX_STATUS)
oce.add("7", "Syrlinks Handler: Read TX waveform") oce.add("7", "Syrlinks Handler: Read TX waveform")
oce.add("8", "Syrlinks Handler: Read TX AGC value high byte") oce.add("8", "Syrlinks Handler: Read TX AGC value high byte")
oce.add("9", "Syrlinks Handler: Read TX AGC value low byte") oce.add("9", "Syrlinks Handler: Read TX AGC value low byte")
@ -96,83 +98,83 @@ def pack_syrlinks_command(
obyt = object_id.as_bytes obyt = object_id.as_bytes
prefix = "Syrlinks" prefix = "Syrlinks"
q.add_log_cmd(f"Testing Syrlinks with object id: {object_id.as_hex_string}") q.add_log_cmd(f"Testing Syrlinks with object id: {object_id.as_hex_string}")
if op_code == OpCodes.OFF: if op_code == OpCode.OFF:
q.add_log_cmd(f"{prefix}: Set mode off") q.add_log_cmd(f"{prefix}: Set mode off")
data = pack_mode_data(obyt, Modes.OFF, 0) data = pack_mode_data(obyt, Modes.OFF, 0)
q.add_pus_tc(PusTelecommand(service=200, subservice=1, app_data=data)) q.add_pus_tc(PusTelecommand(service=200, subservice=1, app_data=data))
if op_code == OpCodes.ON: if op_code == OpCode.ON:
q.add_log_cmd(f"{prefix}: Set mode on") q.add_log_cmd(f"{prefix}: Set mode on")
data = pack_mode_data(obyt, Modes.ON, 0) data = pack_mode_data(obyt, Modes.ON, 0)
q.add_pus_tc(PusTelecommand(service=200, subservice=1, app_data=data)) q.add_pus_tc(PusTelecommand(service=200, subservice=1, app_data=data))
if op_code == OpCodes.NORMAL: if op_code == OpCode.NORMAL:
q.add_log_cmd(f"{prefix}: Mode Normal") q.add_log_cmd(f"{prefix}: Mode Normal")
data = pack_mode_data(obyt, Modes.NORMAL, 0) data = pack_mode_data(obyt, Modes.NORMAL, 0)
q.add_pus_tc(PusTelecommand(service=200, subservice=1, app_data=data)) q.add_pus_tc(PusTelecommand(service=200, subservice=1, app_data=data))
if op_code == OpCodes.STANDBY: if op_code == OpCode.STANDBY:
q.add_log_cmd(f"{prefix}: Set TX mode standby") q.add_log_cmd(f"{prefix}: Set TX mode standby")
data = obyt + struct.pack("!I", CommandIds.SET_TX_MODE_STANDBY) data = obyt + struct.pack("!I", CommandId.SET_TX_MODE_STANDBY)
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data))
if op_code == OpCodes.MODULATION: if op_code == OpCode.MODULATION:
q.add_log_cmd(f"{prefix}: Set TX mode modulation") q.add_log_cmd(f"{prefix}: Set TX mode modulation")
data = obyt + struct.pack("!I", CommandIds.SET_TX_MODE_MODULATION) data = obyt + struct.pack("!I", CommandId.SET_TX_MODE_MODULATION)
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data))
if op_code in OpCodes.SET_CW: if op_code in OpCode.SET_CW:
q.add_log_cmd(f"{prefix}: {Info.SET_CW}") q.add_log_cmd(f"{prefix}: {Info.SET_CW}")
data = obyt + struct.pack("!I", CommandIds.SET_TX_MODE_CW) data = obyt + struct.pack("!I", CommandId.SET_TX_MODE_CW)
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data))
if op_code in OpCodes.HK_RX_REGS: if op_code in OpCode.HK_RX_REGS:
q.add_log_cmd(f"{prefix}: {Info.HK_RX_REGS}") q.add_log_cmd(f"{prefix}: {Info.HK_RX_REGS}")
sid = make_sid(obyt, SetIds.RX_REGISTERS_DATASET) sid = make_sid(obyt, SetId.RX_REGISTERS_DATASET)
q.add_pus_tc(generate_one_hk_command(sid)) q.add_pus_tc(generate_one_hk_command(sid))
if op_code in OpCodes.HK_TX_REGS: if op_code in OpCode.HK_TX_REGS:
q.add_log_cmd(f"{prefix}: {Info.HK_TX_REGS}") q.add_log_cmd(f"{prefix}: {Info.HK_TX_REGS}")
sid = make_sid(obyt, SetIds.TX_REGISTERS_DATASET) sid = make_sid(obyt, SetId.TX_REGISTERS_DATASET)
q.add_pus_tc(generate_one_hk_command(sid)) q.add_pus_tc(generate_one_hk_command(sid))
if op_code in OpCodes.TX_STATUS: if op_code in OpCode.TX_STATUS:
q.add_log_cmd(f"{prefix}: {Info.TX_STATUS}") q.add_log_cmd(f"{prefix}: {Info.TX_STATUS}")
command = obyt + struct.pack("!I", CommandIds.READ_TX_STATUS) command = obyt + struct.pack("!I", CommandId.READ_TX_STATUS)
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command))
if op_code == "9": if op_code == "9":
q.add_log_cmd("Syrlinks: Read TX waveform") q.add_log_cmd("Syrlinks: Read TX waveform")
command = obyt + struct.pack("!I", CommandIds.READ_TX_WAVEFORM) command = obyt + struct.pack("!I", CommandId.READ_TX_WAVEFORM)
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command))
if op_code == "10": if op_code == "10":
q.add_log_cmd("Syrlinks: Read TX AGC value high byte") q.add_log_cmd("Syrlinks: Read TX AGC value high byte")
command = obyt + struct.pack("!I", CommandIds.READ_TX_AGC_VALUE_HIGH_BYTE) command = obyt + struct.pack("!I", CommandId.READ_TX_AGC_VALUE_HIGH_BYTE)
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command))
if op_code == "11": if op_code == "11":
q.add_log_cmd("Syrlinks: Read TX AGC value low byte") q.add_log_cmd("Syrlinks: Read TX AGC value low byte")
command = obyt + struct.pack("!I", CommandIds.READ_TX_AGC_VALUE_LOW_BYTE) command = obyt + struct.pack("!I", CommandId.READ_TX_AGC_VALUE_LOW_BYTE)
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command))
if op_code == "12": if op_code == "12":
q.add_log_cmd("Syrlinks: Write LCL config") q.add_log_cmd("Syrlinks: Write LCL config")
command = obyt + struct.pack("!I", CommandIds.WRITE_LCL_CONFIG) command = obyt + struct.pack("!I", CommandId.WRITE_LCL_CONFIG)
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command))
if op_code == "13": if op_code == "13":
q.add_log_cmd("Syrlinks: Read RX status registers") q.add_log_cmd("Syrlinks: Read RX status registers")
command = obyt + struct.pack("!I", CommandIds.READ_RX_STATUS_REGISTERS) command = obyt + struct.pack("!I", CommandId.READ_RX_STATUS_REGISTERS)
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command))
if op_code == "14": if op_code == "14":
q.add_log_cmd("Syrlinks: Read LCL config register") q.add_log_cmd("Syrlinks: Read LCL config register")
command = obyt + struct.pack("!I", CommandIds.READ_LCL_CONFIG_REGISTER) command = obyt + struct.pack("!I", CommandId.READ_LCL_CONFIG_REGISTER)
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command))
if op_code == "15": if op_code == "15":
q.add_log_cmd("Syrlinks: Set waveform OQPSK") q.add_log_cmd("Syrlinks: Set waveform OQPSK")
command = obyt + struct.pack("!I", CommandIds.SET_WAVEFORM_OQPSK) command = obyt + struct.pack("!I", CommandId.SET_WAVEFORM_OQPSK)
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command))
if op_code == "16": if op_code == "16":
q.add_log_cmd("Syrlinks: Set waveform BPSK") q.add_log_cmd("Syrlinks: Set waveform BPSK")
command = obyt + struct.pack("!I", CommandIds.SET_WAVEFORM_BPSK) command = obyt + struct.pack("!I", CommandId.SET_WAVEFORM_BPSK)
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command))
if op_code == "17": if op_code == "17":
q.add_log_cmd("Syrlinks: Set second config") q.add_log_cmd("Syrlinks: Set second config")
command = obyt + struct.pack("!I", CommandIds.SET_SECOND_CONFIG) command = obyt + struct.pack("!I", CommandId.SET_SECOND_CONFIG)
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command))
if op_code == "18": if op_code == "18":
q.add_log_cmd("Syrlinks: Enable debug printout") q.add_log_cmd("Syrlinks: Enable debug printout")
command = obyt + struct.pack("!I", CommandIds.ENABLE_DEBUG) command = obyt + struct.pack("!I", CommandId.ENABLE_DEBUG)
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command))
if op_code == "19": if op_code == "19":
q.add_log_cmd("Syrlinks: Disable debug printout") q.add_log_cmd("Syrlinks: Disable debug printout")
command = obyt + struct.pack("!I", CommandIds.DISABLE_DEBUG) command = obyt + struct.pack("!I", CommandId.DISABLE_DEBUG)
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command))

View File

@ -28,7 +28,7 @@ class Tmp1075TestProcedure:
set_mode_on = False # If mode is MODE_ON, temperature will only be read on command set_mode_on = False # If mode is MODE_ON, temperature will only be read on command
class Tmp1075ActionIds: class Tmp1075ActionId:
get_temp = bytearray([0x0, 0x0, 0x0, 0x01]) get_temp = bytearray([0x0, 0x0, 0x0, 0x01])
start_adc_conversion = bytearray([0x0, 0x0, 0x0, 0x02]) start_adc_conversion = bytearray([0x0, 0x0, 0x0, 0x02])
@ -42,11 +42,11 @@ def pack_tmp1075_test_into(
obyt = object_id.as_bytes obyt = object_id.as_bytes
if Tmp1075TestProcedure.all or Tmp1075TestProcedure.start_adc_conversion: if Tmp1075TestProcedure.all or Tmp1075TestProcedure.start_adc_conversion:
q.add_log_cmd("TMP1075: Starting new temperature conversion") q.add_log_cmd("TMP1075: Starting new temperature conversion")
command = obyt + Tmp1075ActionIds.start_adc_conversion command = obyt + Tmp1075ActionId.start_adc_conversion
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command))
if Tmp1075TestProcedure.all or Tmp1075TestProcedure.get_temp: if Tmp1075TestProcedure.all or Tmp1075TestProcedure.get_temp:
q.add_log_cmd("TMP1075: Read temperature") q.add_log_cmd("TMP1075: Read temperature")
command = obyt + Tmp1075ActionIds.get_temp command = obyt + Tmp1075ActionId.get_temp
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command))
if Tmp1075TestProcedure.set_mode_normal: if Tmp1075TestProcedure.set_mode_normal:

View File

@ -8,7 +8,7 @@ from eive_tmtc.tmtc.common import pack_mode_cmd_with_info
import eive_tmtc.config.object_ids as obj_ids import eive_tmtc.config.object_ids as obj_ids
class OpCodes: class OpCode:
THERMAL_CONTROLLER = [obj_ids.THERMAL_CONTROLLER_ID.hex(), "ctrl-th"] THERMAL_CONTROLLER = [obj_ids.THERMAL_CONTROLLER_ID.hex(), "ctrl-th"]
CORE_CONTROLLER = [obj_ids.CORE_CONTROLLER_ID.hex(), "ctrl-core"] CORE_CONTROLLER = [obj_ids.CORE_CONTROLLER_ID.hex(), "ctrl-core"]
@ -89,7 +89,7 @@ def get_object_from_op_code(op_code: str):
except: except:
pass pass
if op_code in OpCodes.THERMAL_CONTROLLER: if op_code in OpCode.THERMAL_CONTROLLER:
return obj_ids.THERMAL_CONTROLLER_ID return obj_ids.THERMAL_CONTROLLER_ID
if op_code in OpCodes.CORE_CONTROLLER: if op_code in OpCode.CORE_CONTROLLER:
return obj_ids.CORE_CONTROLLER_ID return obj_ids.CORE_CONTROLLER_ID

View File

@ -19,22 +19,22 @@ from tmtccmd.tc.pus_11_tc_sched import (
from tmtccmd.tc.pus_3_fsfw_hk import * from tmtccmd.tc.pus_3_fsfw_hk import *
import eive_tmtc.config.object_ids as oids import eive_tmtc.config.object_ids as oids
from eive_tmtc.pus_tc.system.tcs import OpCodes as TcsOpCodes from eive_tmtc.pus_tc.system.tcs import OpCode as TcsOpCodes
from eive_tmtc.pus_tc.devs.bpx_batt import BpxSetIds from eive_tmtc.pus_tc.devs.bpx_batt import BpxSetId
from eive_tmtc.tmtc.core import SetIds as CoreSetIds from eive_tmtc.tmtc.core import SetId as CoreSetIds
from eive_tmtc.tmtc.power.common_power import SetId as GsSetIds from eive_tmtc.tmtc.power.common_power import SetId as GsSetIds
from eive_tmtc.pus_tc.devs.rad_sensor import SetIds as RadSetIds from eive_tmtc.pus_tc.devs.rad_sensor import SetId as RadSetIds
from eive_tmtc.pus_tc.devs.mgms import MgmLis3SetIds as MgmLis3SetIds_0_2 from eive_tmtc.pus_tc.devs.mgms import MgmLis3SetId as MgmLis3SetIds_0_2
from eive_tmtc.pus_tc.devs.mgms import MgmRm3100SetIds as MgmRm3100SetIds_1_3 from eive_tmtc.pus_tc.devs.mgms import MgmRm3100SetId as MgmRm3100SetIds_1_3
from eive_tmtc.pus_tc.devs.gyros import AdisGyroSetIds as AdisGyroSetIds_0_2 from eive_tmtc.pus_tc.devs.gyros import AdisGyroSetId as AdisGyroSetIds_0_2
from eive_tmtc.pus_tc.devs.gyros import L3gGyroSetIds as L3gGyroSetIds_1_3 from eive_tmtc.pus_tc.devs.gyros import L3gGyroSetId as L3gGyroSetIds_1_3
from eive_tmtc.pus_tc.devs.syrlinks_hk_handler import SetIds as SyrlinksSetIds from eive_tmtc.pus_tc.devs.syrlinks_hk_handler import SetId as SyrlinksSetIds
from eive_tmtc.pus_tc.devs.gps import SetIds as GpsSetIds from eive_tmtc.pus_tc.devs.gps import SetId as GpsSetIds
from eive_tmtc.tmtc.acs.imtq import ImtqSetIds from eive_tmtc.tmtc.acs.imtq import ImtqSetId
from eive_tmtc.pus_tc.devs.sus import SetIds from eive_tmtc.pus_tc.devs.sus import SetId
from eive_tmtc.pus_tc.devs.star_tracker import SetIds as StrSetIds from eive_tmtc.pus_tc.devs.star_tracker import SetIds as StrSetIds
from eive_tmtc.tmtc.acs.reaction_wheels import ( from eive_tmtc.tmtc.acs.reaction_wheels import (
RwSetIds, RwSetId,
rw_speed_up_cmd_consec, rw_speed_up_cmd_consec,
rw_speed_down_cmd_consec, rw_speed_down_cmd_consec,
) )
@ -49,7 +49,7 @@ from eive_tmtc.pus_tc.devs.star_tracker import pack_star_tracker_commands
from eive_tmtc.tmtc.acs.reaction_wheels import pack_rw_ass_cmds, pack_set_speed_command from eive_tmtc.tmtc.acs.reaction_wheels import pack_rw_ass_cmds, pack_set_speed_command
class OpCodes: class OpCode:
"""FT: Functional Test""" """FT: Functional Test"""
TV_SETUP_TCS_FT_ON = ["s", "tcs-ft-on"] TV_SETUP_TCS_FT_ON = ["s", "tcs-ft-on"]
@ -93,34 +93,34 @@ KAI = KeyAndInfo
PROC_INFO_DICT = { PROC_INFO_DICT = {
KAI.TV_SETUP_TCS_FT_ON[0]: [ KAI.TV_SETUP_TCS_FT_ON[0]: [
OpCodes.TV_SETUP_TCS_FT_ON, OpCode.TV_SETUP_TCS_FT_ON,
KAI.TV_SETUP_TCS_FT_ON[1], KAI.TV_SETUP_TCS_FT_ON[1],
120.0, 120.0,
10.0, 10.0,
], ],
KAI.TV_TEARDOWN_TCS_FT_OFF[0]: [ KAI.TV_TEARDOWN_TCS_FT_OFF[0]: [
OpCodes.TV_TEARDOWN_TCS_FT_OFF, OpCode.TV_TEARDOWN_TCS_FT_OFF,
KAI.TV_TEARDOWN_TCS_FT_OFF[1], KAI.TV_TEARDOWN_TCS_FT_OFF[1],
120.0, 120.0,
10.0, 10.0,
], ],
KAI.BAT_FT[0]: [OpCodes.BAT_FT, KAI.BAT_FT[1], 120.0, 10.0], KAI.BAT_FT[0]: [OpCode.BAT_FT, KAI.BAT_FT[1], 120.0, 10.0],
KAI.CORE_FT[0]: [OpCodes.CORE_FT, KAI.CORE_FT[1], 120.0, 10.0], KAI.CORE_FT[0]: [OpCode.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.PCDU_FT[0]: [OpCode.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], KAI.RAD_SEN_FT[0]: [OpCode.RAD_SEN_FT, KAI.RAD_SEN_FT[1], 120.0, 10.0],
KAI.ACS_FT[0]: [OpCodes.ACS_FT, KAI.ACS_FT[1], 120.0, 10.0], KAI.ACS_FT[0]: [OpCode.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[0]: [OpCode.MGT_FT, KAI.MGT_FT[1], 120.0, 10.0],
# collection_time for KAI.MGT_FT_DP maybe be reduced as a full 120 # collection_time for KAI.MGT_FT_DP maybe be reduced as a full 120
# seconds is not needed after MGTs are tested # seconds 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.MGT_FT_DP[0]: [OpCode.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.SUS_FT[0]: [OpCode.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], KAI.STR_FT[0]: [OpCode.STR_FT, KAI.STR_FT[1], 120.0, 10.0],
# collection_time for KAI.RW_FT_ONE_RW maybe be reduced as a full 120 # collection_time for KAI.RW_FT_ONE_RW maybe be reduced as a full 120
# seconds is not needed after RWs are tested # seconds 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], KAI.RW_FT_ONE_RW[0]: [OpCode.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 120 # collection_time for KAI.RW_FT_ONE_RW maybe be reduced as a full 120
# seconds is not needed after RWs are tested # seconds 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], KAI.RW_FT_TWO_RWS[0]: [OpCode.RW_FT_TWO_RWS, KAI.RW_FT_TWO_RWS[1], 10.0, 1.0],
} }
@ -223,12 +223,12 @@ def pack_generic_hk_listening_cmds(
def pack_proc_commands(q: DefaultPusQueueHelper, op_code: str): def pack_proc_commands(q: DefaultPusQueueHelper, op_code: str):
sid_list = [] sid_list = []
obj_id_dict = get_object_ids() obj_id_dict = get_object_ids()
if op_code in OpCodes.RESET_SCHED: if op_code in OpCode.RESET_SCHED:
q.add_log_cmd("Resetting/Clearing TC schedule") q.add_log_cmd("Resetting/Clearing TC schedule")
q.add_pus_tc(generate_reset_tc_sched_cmd()) q.add_pus_tc(generate_reset_tc_sched_cmd())
if op_code in OpCodes.BAT_FT: if op_code in OpCode.BAT_FT:
key = KAI.BAT_FT[0] key = KAI.BAT_FT[0]
sid_list.append(make_sid(oids.BPX_HANDLER_ID, BpxSetIds.GET_HK_SET)) sid_list.append(make_sid(oids.BPX_HANDLER_ID, BpxSetId.GET_HK_SET))
diag_list = [False] diag_list = [False]
pack_generic_hk_listening_cmds( pack_generic_hk_listening_cmds(
q=q, q=q,
@ -238,7 +238,7 @@ def pack_proc_commands(q: DefaultPusQueueHelper, op_code: str):
cfg=GenericHkListeningCfg.default(), cfg=GenericHkListeningCfg.default(),
) )
if op_code in OpCodes.CORE_FT: if op_code in OpCode.CORE_FT:
key = KAI.CORE_FT[0] key = KAI.CORE_FT[0]
sid_list.append(make_sid(oids.CORE_CONTROLLER_ID, CoreSetIds.HK)) sid_list.append(make_sid(oids.CORE_CONTROLLER_ID, CoreSetIds.HK))
diag_list = [False] diag_list = [False]
@ -250,7 +250,7 @@ def pack_proc_commands(q: DefaultPusQueueHelper, op_code: str):
cfg=GenericHkListeningCfg.default(), cfg=GenericHkListeningCfg.default(),
) )
if op_code in OpCodes.PCDU_FT: if op_code in OpCode.PCDU_FT:
key = KAI.PCDU_FT[0] key = KAI.PCDU_FT[0]
pcdu_pairs = [ pcdu_pairs = [
(oids.P60_DOCK_HANDLER, GsSetIds.CORE), (oids.P60_DOCK_HANDLER, GsSetIds.CORE),
@ -286,7 +286,7 @@ def pack_proc_commands(q: DefaultPusQueueHelper, op_code: str):
cfg=GenericHkListeningCfg.default(), cfg=GenericHkListeningCfg.default(),
) )
if op_code in OpCodes.RAD_SEN_FT: if op_code in OpCode.RAD_SEN_FT:
key = KAI.RAD_SEN_FT[0] key = KAI.RAD_SEN_FT[0]
sid_list.append(make_sid(oids.RAD_SENSOR_ID, RadSetIds.HK)) sid_list.append(make_sid(oids.RAD_SENSOR_ID, RadSetIds.HK))
diag_list = [False] diag_list = [False]
@ -298,18 +298,18 @@ def pack_proc_commands(q: DefaultPusQueueHelper, op_code: str):
cfg=GenericHkListeningCfg.default(), cfg=GenericHkListeningCfg.default(),
) )
if op_code in OpCodes.TV_SETUP_TCS_FT_ON: if op_code in OpCode.TV_SETUP_TCS_FT_ON:
# Enable scheduling # Enable scheduling
q.add_pus_tc(generate_enable_tc_sched_cmd()) q.add_pus_tc(generate_enable_tc_sched_cmd())
# check whether tcs_assembly also has to be commanded to NORMAL Mode # check whether tcs_assembly also has to be commanded to NORMAL Mode
pack_tcs_sys_commands(q=q, op_code=TcsOpCodes.TCS_BOARD_ASS_NORMAL[0]) pack_tcs_sys_commands(q=q, op_code=TcsOpCodes.TCS_BOARD_ASS_NORMAL[0])
pack_cmd_ctrl_to_nml(q=q, object_id=obj_id_dict.get(oids.THERMAL_CONTROLLER_ID)) pack_cmd_ctrl_to_nml(q=q, object_id=obj_id_dict.get(oids.THERMAL_CONTROLLER_ID))
if op_code in OpCodes.TV_TEARDOWN_TCS_FT_OFF: if op_code in OpCode.TV_TEARDOWN_TCS_FT_OFF:
# TCS board should always be on anyway, do not command it off here # TCS board should always be on anyway, do not command it off here
pack_cmd_ctrl_to_off(q=q, object_id=obj_id_dict.get(oids.THERMAL_CONTROLLER_ID)) pack_cmd_ctrl_to_off(q=q, object_id=obj_id_dict.get(oids.THERMAL_CONTROLLER_ID))
if op_code in OpCodes.ACS_FT: if op_code in OpCode.ACS_FT:
key = KAI.ACS_FT[0] key = KAI.ACS_FT[0]
a_side_pairs = [ a_side_pairs = [
(oids.MGM_0_LIS3_HANDLER_ID, MgmLis3SetIds_0_2.CORE_HK), (oids.MGM_0_LIS3_HANDLER_ID, MgmLis3SetIds_0_2.CORE_HK),
@ -392,12 +392,12 @@ def pack_proc_commands(q: DefaultPusQueueHelper, op_code: str):
pack_acs_command(q=q, op_code="acs-off") pack_acs_command(q=q, op_code="acs-off")
if op_code in OpCodes.MGT_FT: if op_code in OpCode.MGT_FT:
key = KAI.MGT_FT[0] key = KAI.MGT_FT[0]
imtq_pairs = [ imtq_pairs = [
(oids.IMTQ_HANDLER_ID, ImtqSetIds.ENG_HK_SET), (oids.IMTQ_HANDLER_ID, ImtqSetId.ENG_HK_SET),
(oids.IMTQ_HANDLER_ID, ImtqSetIds.CAL_MTM_SET), (oids.IMTQ_HANDLER_ID, ImtqSetId.CAL_MTM_SET),
(oids.IMTQ_HANDLER_ID, ImtqSetIds.RAW_MTM_SET), (oids.IMTQ_HANDLER_ID, ImtqSetId.RAW_MTM_SET),
] ]
diag_list = [ diag_list = [
True, True,
@ -425,7 +425,7 @@ def pack_proc_commands(q: DefaultPusQueueHelper, op_code: str):
pack_imtq_test_into(oids.IMTQ_HANDLER_ID, q=q, op_code="0") pack_imtq_test_into(oids.IMTQ_HANDLER_ID, q=q, op_code="0")
if op_code in OpCodes.MGT_FT_DP: if op_code in OpCode.MGT_FT_DP:
key = KAI.MGT_FT_DP[0] key = KAI.MGT_FT_DP[0]
a_side_pairs = [ a_side_pairs = [
(oids.MGM_0_LIS3_HANDLER_ID, MgmLis3SetIds_0_2.CORE_HK), (oids.MGM_0_LIS3_HANDLER_ID, MgmLis3SetIds_0_2.CORE_HK),
@ -442,9 +442,9 @@ def pack_proc_commands(q: DefaultPusQueueHelper, op_code: str):
(oids.GPS_CONTROLLER, GpsSetIds.HK), (oids.GPS_CONTROLLER, GpsSetIds.HK),
] ]
imtq_pairs = [ imtq_pairs = [
(oids.IMTQ_HANDLER_ID, ImtqSetIds.ENG_HK_SET), (oids.IMTQ_HANDLER_ID, ImtqSetId.ENG_HK_SET),
(oids.IMTQ_HANDLER_ID, ImtqSetIds.CAL_MTM_SET), (oids.IMTQ_HANDLER_ID, ImtqSetId.CAL_MTM_SET),
(oids.IMTQ_HANDLER_ID, ImtqSetIds.RAW_MTM_SET), (oids.IMTQ_HANDLER_ID, ImtqSetId.RAW_MTM_SET),
] ]
d_side_and_imtq_pairs = a_side_pairs + b_side_pairs + imtq_pairs d_side_and_imtq_pairs = a_side_pairs + b_side_pairs + imtq_pairs
diag_list = [ diag_list = [
@ -487,7 +487,7 @@ def pack_proc_commands(q: DefaultPusQueueHelper, op_code: str):
pack_imtq_test_into(oids.IMTQ_HANDLER_ID, q=q, op_code="0") pack_imtq_test_into(oids.IMTQ_HANDLER_ID, q=q, op_code="0")
pack_acs_command(q=q, op_code="acs-off") pack_acs_command(q=q, op_code="acs-off")
if op_code in OpCodes.SUS_FT: if op_code in OpCode.SUS_FT:
key = KAI.SUS_FT[0] key = KAI.SUS_FT[0]
pack_sus_cmds(q=q, op_code="sus-nom") pack_sus_cmds(q=q, op_code="sus-nom")
@ -519,7 +519,7 @@ def pack_proc_commands(q: DefaultPusQueueHelper, op_code: str):
# SUSs # SUSs
for nom_sus in sus_n_ids: for nom_sus in sus_n_ids:
sid_list.append(make_sid(nom_sus, SetIds.HK)) sid_list.append(make_sid(nom_sus, SetId.HK))
pack_generic_hk_listening_cmds( pack_generic_hk_listening_cmds(
q=q, q=q,
proc_key=key, proc_key=key,
@ -543,7 +543,7 @@ def pack_proc_commands(q: DefaultPusQueueHelper, op_code: str):
# SUSs # SUSs
for red_sus in sus_r_ids: for red_sus in sus_r_ids:
sid_list.append(make_sid(red_sus, SetIds.HK)) sid_list.append(make_sid(red_sus, SetId.HK))
pack_generic_hk_listening_cmds( pack_generic_hk_listening_cmds(
q=q, q=q,
proc_key=key, proc_key=key,
@ -558,9 +558,9 @@ def pack_proc_commands(q: DefaultPusQueueHelper, op_code: str):
# SUSs # SUSs
for nom_sus in sus_n_ids: for nom_sus in sus_n_ids:
sid_list.append(make_sid(nom_sus, SetIds.HK)) sid_list.append(make_sid(nom_sus, SetId.HK))
for red_sus in sus_r_ids: for red_sus in sus_r_ids:
sid_list.append(make_sid(red_sus, SetIds.HK)) sid_list.append(make_sid(red_sus, SetId.HK))
diag_list = [ diag_list = [
True, True,
True, True,
@ -585,7 +585,7 @@ def pack_proc_commands(q: DefaultPusQueueHelper, op_code: str):
pack_acs_command(q=q, op_code="sus-off") pack_acs_command(q=q, op_code="sus-off")
if op_code in OpCodes.SYRLINKS_FT: if op_code in OpCode.SYRLINKS_FT:
key = KAI.SYRLINKS_FT[0] key = KAI.SYRLINKS_FT[0]
sid_list = [ sid_list = [
make_sid(oids.SYRLINKS_HANDLER_ID, SyrlinksSetIds.RX_REGISTERS_DATASET), make_sid(oids.SYRLINKS_HANDLER_ID, SyrlinksSetIds.RX_REGISTERS_DATASET),
@ -599,7 +599,7 @@ def pack_proc_commands(q: DefaultPusQueueHelper, op_code: str):
diag_list=[False], diag_list=[False],
cfg=GenericHkListeningCfg.default(), cfg=GenericHkListeningCfg.default(),
) )
if op_code in OpCodes.STR_FT: if op_code in OpCode.STR_FT:
key = KAI.STR_FT[0] key = KAI.STR_FT[0]
pack_star_tracker_commands(object_id=oids.STAR_TRACKER_ID, q=q, op_code="2") pack_star_tracker_commands(object_id=oids.STAR_TRACKER_ID, q=q, op_code="2")
@ -617,21 +617,21 @@ def pack_proc_commands(q: DefaultPusQueueHelper, op_code: str):
pack_star_tracker_commands(object_id=oids.STAR_TRACKER_ID, q=q, op_code="3") pack_star_tracker_commands(object_id=oids.STAR_TRACKER_ID, q=q, op_code="3")
if op_code in OpCodes.RW_FT_ONE_RW: if op_code in OpCode.RW_FT_ONE_RW:
key = KAI.RW_FT_ONE_RW[0] key = KAI.RW_FT_ONE_RW[0]
rw_pairs = [ rw_pairs = [
(oids.RW1_ID, RwSetIds.STATUS_SET_ID), (oids.RW1_ID, RwSetId.STATUS_SET_ID),
(oids.RW1_ID, RwSetIds.LAST_RESET), (oids.RW1_ID, RwSetId.LAST_RESET),
(oids.RW1_ID, RwSetIds.TM_SET), (oids.RW1_ID, RwSetId.TM_SET),
(oids.RW2_ID, RwSetIds.STATUS_SET_ID), (oids.RW2_ID, RwSetId.STATUS_SET_ID),
(oids.RW2_ID, RwSetIds.LAST_RESET), (oids.RW2_ID, RwSetId.LAST_RESET),
(oids.RW2_ID, RwSetIds.TM_SET), (oids.RW2_ID, RwSetId.TM_SET),
(oids.RW3_ID, RwSetIds.STATUS_SET_ID), (oids.RW3_ID, RwSetId.STATUS_SET_ID),
(oids.RW3_ID, RwSetIds.LAST_RESET), (oids.RW3_ID, RwSetId.LAST_RESET),
(oids.RW3_ID, RwSetIds.TM_SET), (oids.RW3_ID, RwSetId.TM_SET),
(oids.RW4_ID, RwSetIds.STATUS_SET_ID), (oids.RW4_ID, RwSetId.STATUS_SET_ID),
(oids.RW4_ID, RwSetIds.LAST_RESET), (oids.RW4_ID, RwSetId.LAST_RESET),
(oids.RW4_ID, RwSetIds.TM_SET), (oids.RW4_ID, RwSetId.TM_SET),
] ]
diag_list = [ diag_list = [
True, True,
@ -666,25 +666,25 @@ def pack_proc_commands(q: DefaultPusQueueHelper, op_code: str):
pack_rw_ass_cmds(object_id=oids.RW_ASSEMBLY, q=q, op_code="off") pack_rw_ass_cmds(object_id=oids.RW_ASSEMBLY, q=q, op_code="off")
# ass command with 2 rws to speed # ass command with 2 rws to speed
if op_code in OpCodes.RW_FT_TWO_RWS: if op_code in OpCode.RW_FT_TWO_RWS:
key = KAI.RW_FT_TWO_RWS[0] key = KAI.RW_FT_TWO_RWS[0]
rw_pairs = [ rw_pairs = [
(oids.RW1_ID, RwSetIds.STATUS_SET_ID), (oids.RW1_ID, RwSetId.STATUS_SET_ID),
(oids.RW1_ID, RwSetIds.TEMPERATURE_SET_ID), (oids.RW1_ID, RwSetId.TEMPERATURE_SET_ID),
(oids.RW1_ID, RwSetIds.LAST_RESET), (oids.RW1_ID, RwSetId.LAST_RESET),
(oids.RW1_ID, RwSetIds.TM_SET), (oids.RW1_ID, RwSetId.TM_SET),
(oids.RW2_ID, RwSetIds.STATUS_SET_ID), (oids.RW2_ID, RwSetId.STATUS_SET_ID),
(oids.RW2_ID, RwSetIds.TEMPERATURE_SET_ID), (oids.RW2_ID, RwSetId.TEMPERATURE_SET_ID),
(oids.RW2_ID, RwSetIds.LAST_RESET), (oids.RW2_ID, RwSetId.LAST_RESET),
(oids.RW2_ID, RwSetIds.TM_SET), (oids.RW2_ID, RwSetId.TM_SET),
(oids.RW3_ID, RwSetIds.STATUS_SET_ID), (oids.RW3_ID, RwSetId.STATUS_SET_ID),
(oids.RW3_ID, RwSetIds.TEMPERATURE_SET_ID), (oids.RW3_ID, RwSetId.TEMPERATURE_SET_ID),
(oids.RW3_ID, RwSetIds.LAST_RESET), (oids.RW3_ID, RwSetId.LAST_RESET),
(oids.RW3_ID, RwSetIds.TM_SET), (oids.RW3_ID, RwSetId.TM_SET),
(oids.RW4_ID, RwSetIds.STATUS_SET_ID), (oids.RW4_ID, RwSetId.STATUS_SET_ID),
(oids.RW4_ID, RwSetIds.TEMPERATURE_SET_ID), (oids.RW4_ID, RwSetId.TEMPERATURE_SET_ID),
(oids.RW4_ID, RwSetIds.LAST_RESET), (oids.RW4_ID, RwSetId.LAST_RESET),
(oids.RW4_ID, RwSetIds.TM_SET), (oids.RW4_ID, RwSetId.TM_SET),
] ]
diag_list = [ diag_list = [
False, False,

View File

@ -14,7 +14,7 @@ from eive_tmtc.tmtc.common import pack_mode_cmd_with_info
from eive_tmtc.config.object_ids import TCS_BOARD_ASS_ID, TCS_CONTROLLER from eive_tmtc.config.object_ids import TCS_BOARD_ASS_ID, TCS_CONTROLLER
class OpCodes: class OpCode:
TCS_BOARD_ASS_NORMAL = ["0", "normal"] TCS_BOARD_ASS_NORMAL = ["0", "normal"]
TCS_BOARD_ASS_OFF = ["1", "off"] TCS_BOARD_ASS_OFF = ["1", "off"]
REQUEST_SENSOR_TEMP_SET = ["2", "temps"] REQUEST_SENSOR_TEMP_SET = ["2", "temps"]
@ -26,7 +26,7 @@ class Info:
TCS_BOARD_ASS_OFF = "Switching TCS board assembly off" TCS_BOARD_ASS_OFF = "Switching TCS board assembly off"
class SetIds(enum.IntEnum): class SetId(enum.IntEnum):
PRIMARY_SENSORS = 0 PRIMARY_SENSORS = 0
DEVICE_SENSORS = 1 DEVICE_SENSORS = 1
SUS_TEMP_SENSORS = 2 SUS_TEMP_SENSORS = 2
@ -36,14 +36,14 @@ class SetIds(enum.IntEnum):
def add_tcs_cmds(defs: TmtcDefinitionWrapper): def add_tcs_cmds(defs: TmtcDefinitionWrapper):
oce = OpCodeEntry() oce = OpCodeEntry()
oce.add( oce.add(
keys=OpCodes.TCS_BOARD_ASS_NORMAL, keys=OpCode.TCS_BOARD_ASS_NORMAL,
info=Info.TCS_BOARD_ASS_NORMAL, info=Info.TCS_BOARD_ASS_NORMAL,
) )
oce.add( oce.add(
keys=OpCodes.TCS_BOARD_ASS_OFF, keys=OpCode.TCS_BOARD_ASS_OFF,
info=Info.TCS_BOARD_ASS_OFF, info=Info.TCS_BOARD_ASS_OFF,
) )
oce.add(keys=OpCodes.REQUEST_SENSOR_TEMP_SET, info=Info.REQUEST_SENSOR_TEMP_SET) oce.add(keys=OpCode.REQUEST_SENSOR_TEMP_SET, info=Info.REQUEST_SENSOR_TEMP_SET)
defs.add_service( defs.add_service(
name=CustomServiceList.TCS.value, name=CustomServiceList.TCS.value,
info="TCS Board Assembly", info="TCS Board Assembly",
@ -52,15 +52,15 @@ def add_tcs_cmds(defs: TmtcDefinitionWrapper):
def pack_tcs_sys_commands(q: DefaultPusQueueHelper, op_code: str): def pack_tcs_sys_commands(q: DefaultPusQueueHelper, op_code: str):
if op_code in OpCodes.REQUEST_SENSOR_TEMP_SET: if op_code in OpCode.REQUEST_SENSOR_TEMP_SET:
sensor_set_sid = make_sid(TCS_CONTROLLER, SetIds.PRIMARY_SENSORS) sensor_set_sid = make_sid(TCS_CONTROLLER, SetId.PRIMARY_SENSORS)
q.add_log_cmd(Info.REQUEST_SENSOR_TEMP_SET) q.add_log_cmd(Info.REQUEST_SENSOR_TEMP_SET)
q.add_pus_tc(generate_one_hk_command(sensor_set_sid)) q.add_pus_tc(generate_one_hk_command(sensor_set_sid))
pack_tcs_ass_cmds(q, op_code) pack_tcs_ass_cmds(q, op_code)
def pack_tcs_ass_cmds(q: DefaultPusQueueHelper, op_code: str): def pack_tcs_ass_cmds(q: DefaultPusQueueHelper, op_code: str):
if op_code in OpCodes.TCS_BOARD_ASS_NORMAL: if op_code in OpCode.TCS_BOARD_ASS_NORMAL:
pack_mode_cmd_with_info( pack_mode_cmd_with_info(
object_id=TCS_BOARD_ASS_ID, object_id=TCS_BOARD_ASS_ID,
mode=Modes.NORMAL, mode=Modes.NORMAL,
@ -68,7 +68,7 @@ def pack_tcs_ass_cmds(q: DefaultPusQueueHelper, op_code: str):
q=q, q=q,
info=Info.TCS_BOARD_ASS_NORMAL, info=Info.TCS_BOARD_ASS_NORMAL,
) )
if op_code in OpCodes.TCS_BOARD_ASS_OFF: if op_code in OpCode.TCS_BOARD_ASS_OFF:
pack_mode_cmd_with_info( pack_mode_cmd_with_info(
object_id=TCS_BOARD_ASS_ID, object_id=TCS_BOARD_ASS_ID,
mode=Modes.OFF, mode=Modes.OFF,

View File

@ -11,7 +11,7 @@ from tmtccmd.tc.decorator import ServiceProviderParams
LOGGER = get_console_logger() LOGGER = get_console_logger()
class OpCodes: class OpCode:
SET_CURRENT_TIME = ["0", "set-curr-time"] SET_CURRENT_TIME = ["0", "set-curr-time"]

View File

@ -1,10 +1,10 @@
import struct import struct
from eive_tmtc.config.object_ids import * from eive_tmtc.config.object_ids import *
from eive_tmtc.tmtc.acs.imtq import ImtqActionIds from eive_tmtc.tmtc.acs.imtq import ImtqActionId
from eive_tmtc.pus_tm.defs import PrintWrapper from eive_tmtc.pus_tm.defs import PrintWrapper
from eive_tmtc.tmtc.payload.ploc_mpsoc import PlocReplyIds from eive_tmtc.tmtc.payload.ploc_mpsoc import PlocReplyIds
from eive_tmtc.tmtc.payload.ploc_supervisor import SupvActionIds from eive_tmtc.tmtc.payload.ploc_supervisor import SupvActionId
from eive_tmtc.pus_tc.devs.star_tracker import StarTrackerActionIds from eive_tmtc.pus_tc.devs.star_tracker import StarTrackerActionId
from eive_tmtc.tmtc.power.tm import handle_get_param_data_reply from eive_tmtc.tmtc.power.tm import handle_get_param_data_reply
from tmtccmd.logging import get_console_logger from tmtccmd.logging import get_console_logger
from tmtccmd.tm import Service8FsfwTm from tmtccmd.tm import Service8FsfwTm
@ -52,7 +52,7 @@ def handle_action_reply(
def handle_imtq_replies( def handle_imtq_replies(
action_id: int, printer: FsfwTmTcPrinter, custom_data: bytearray action_id: int, printer: FsfwTmTcPrinter, custom_data: bytearray
): ):
if action_id == struct.unpack("!I", ImtqActionIds.get_commanded_dipole)[0]: if action_id == struct.unpack("!I", ImtqActionId.get_commanded_dipole)[0]:
header_list = [ header_list = [
"Commanded X-Dipole", "Commanded X-Dipole",
"Commanded Y-Dipole", "Commanded Y-Dipole",
@ -99,14 +99,14 @@ def handle_ploc_replies(
def handle_supervisor_replies( def handle_supervisor_replies(
action_id: int, printer: FsfwTmTcPrinter, custom_data: bytearray action_id: int, printer: FsfwTmTcPrinter, custom_data: bytearray
): ):
if action_id == SupvActionIds.DUMP_MRAM: if action_id == SupvActionId.DUMP_MRAM:
header_list = ["MRAM Dump"] header_list = ["MRAM Dump"]
content_list = [custom_data[: len(custom_data)]] content_list = [custom_data[: len(custom_data)]]
print(header_list) print(header_list)
print(content_list) print(content_list)
printer.file_logger.info(header_list) printer.file_logger.info(header_list)
printer.file_logger.info(content_list) printer.file_logger.info(content_list)
elif action_id == SupvActionIds.READ_GPIO: elif action_id == SupvActionId.READ_GPIO:
header_list = ["GPIO state"] header_list = ["GPIO state"]
content_list = [struct.unpack("!H", custom_data[:2])[0]] content_list = [struct.unpack("!H", custom_data[:2])[0]]
print(header_list) print(header_list)
@ -118,7 +118,7 @@ def handle_supervisor_replies(
def handle_startracker_replies( def handle_startracker_replies(
action_id: int, printer: FsfwTmTcPrinter, custom_data: bytearray action_id: int, printer: FsfwTmTcPrinter, custom_data: bytearray
): ):
if action_id == StarTrackerActionIds.CHECKSUM: if action_id == StarTrackerActionId.CHECKSUM:
if len(custom_data) != 5: if len(custom_data) != 5:
LOGGER.warning( LOGGER.warning(
"Star tracker reply has invalid length {0}".format(len(custom_data)) "Star tracker reply has invalid length {0}".format(len(custom_data))

View File

@ -1,6 +1,6 @@
import struct import struct
from eive_tmtc.pus_tc.devs.bpx_batt import BpxSetIds from eive_tmtc.pus_tc.devs.bpx_batt import BpxSetId
from eive_tmtc.pus_tm.defs import PrintWrapper from eive_tmtc.pus_tm.defs import PrintWrapper
from tmtccmd.util.tmtc_printer import FsfwTmTcPrinter from tmtccmd.util.tmtc_printer import FsfwTmTcPrinter
@ -21,7 +21,7 @@ HEADER_LIST = [
def handle_bpx_hk_data(printer: FsfwTmTcPrinter, set_id: int, hk_data: bytes): def handle_bpx_hk_data(printer: FsfwTmTcPrinter, set_id: int, hk_data: bytes):
pw = PrintWrapper(printer) pw = PrintWrapper(printer)
if set_id == BpxSetIds.GET_HK_SET: if set_id == BpxSetId.GET_HK_SET:
fmt_str = "!HHHHhhhhIB" fmt_str = "!HHHHhhhhIB"
inc_len = struct.calcsize(fmt_str) inc_len = struct.calcsize(fmt_str)
( (
@ -52,7 +52,7 @@ def handle_bpx_hk_data(printer: FsfwTmTcPrinter, set_id: int, hk_data: bytes):
pw.dlog(str(HEADER_LIST)) pw.dlog(str(HEADER_LIST))
pw.dlog(str(content_list)) pw.dlog(str(content_list))
printer.print_validity_buffer(validity_buffer=validity_buffer, num_vars=10) printer.print_validity_buffer(validity_buffer=validity_buffer, num_vars=10)
elif set_id == BpxSetIds.GET_CFG_SET: elif set_id == BpxSetId.GET_CFG_SET:
battheat_mode = hk_data[0] battheat_mode = hk_data[0]
battheat_low = struct.unpack("!b", hk_data[1:2])[0] battheat_low = struct.unpack("!b", hk_data[1:2])[0]
battheat_high = struct.unpack("!b", hk_data[2:3])[0] battheat_high = struct.unpack("!b", hk_data[2:3])[0]

View File

@ -4,7 +4,7 @@ from eive_tmtc.pus_tm.defs import PrintWrapper
from tmtccmd.util import ObjectIdU32 from tmtccmd.util import ObjectIdU32
from tmtccmd.util.tmtc_printer import FsfwTmTcPrinter from tmtccmd.util.tmtc_printer import FsfwTmTcPrinter
from eive_tmtc.pus_tc.devs.gyros import L3gGyroSetIds, AdisGyroSetIds from eive_tmtc.pus_tc.devs.gyros import L3gGyroSetId, AdisGyroSetId
import eive_tmtc.config.object_ids as obj_ids import eive_tmtc.config.object_ids as obj_ids
@ -30,7 +30,7 @@ def handle_gyros_hk_data(
def handle_adis_gyro_hk( def handle_adis_gyro_hk(
object_id: ObjectIdU32, printer: FsfwTmTcPrinter, set_id: int, hk_data: bytes object_id: ObjectIdU32, printer: FsfwTmTcPrinter, set_id: int, hk_data: bytes
): ):
if set_id == AdisGyroSetIds.CORE_HK: if set_id == AdisGyroSetId.CORE_HK:
pw = PrintWrapper(printer) pw = PrintWrapper(printer)
fmt_str = "!ddddddf" fmt_str = "!ddddddf"
inc_len = struct.calcsize(fmt_str) inc_len = struct.calcsize(fmt_str)
@ -44,7 +44,7 @@ def handle_adis_gyro_hk(
) )
pw.dlog(f"Acceleration (m/s^2): X {accelX} | Y {accelY} | Z {accelZ}") pw.dlog(f"Acceleration (m/s^2): X {accelX} | Y {accelY} | Z {accelZ}")
pw.dlog(f"Temperature {temp} C") pw.dlog(f"Temperature {temp} C")
if set_id == AdisGyroSetIds.CFG_HK: if set_id == AdisGyroSetId.CFG_HK:
pw = PrintWrapper(printer) pw = PrintWrapper(printer)
fmt_str = "!HBHH" fmt_str = "!HBHH"
inc_len = struct.calcsize(fmt_str) inc_len = struct.calcsize(fmt_str)
@ -60,7 +60,7 @@ def handle_adis_gyro_hk(
def handle_l3g_gyro_hk( def handle_l3g_gyro_hk(
object_id: ObjectIdU32, printer: FsfwTmTcPrinter, set_id: int, hk_data: bytes object_id: ObjectIdU32, printer: FsfwTmTcPrinter, set_id: int, hk_data: bytes
): ):
if set_id == L3gGyroSetIds.CORE_HK: if set_id == L3gGyroSetId.CORE_HK:
pw = PrintWrapper(printer) pw = PrintWrapper(printer)
fmt_str = "!ffff" fmt_str = "!ffff"
inc_len = struct.calcsize(fmt_str) inc_len = struct.calcsize(fmt_str)

View File

@ -1,7 +1,7 @@
import struct import struct
from eive_tmtc.pus_tm.defs import PrintWrapper from eive_tmtc.pus_tm.defs import PrintWrapper
from eive_tmtc.pus_tc.devs.mgms import MgmRm3100SetIds, MgmLis3SetIds from eive_tmtc.pus_tc.devs.mgms import MgmRm3100SetId, MgmLis3SetId
from tmtccmd.util import ObjectIdU32 from tmtccmd.util import ObjectIdU32
from tmtccmd.util.tmtc_printer import FsfwTmTcPrinter from tmtccmd.util.tmtc_printer import FsfwTmTcPrinter
import eive_tmtc.config.object_ids as obj_ids import eive_tmtc.config.object_ids as obj_ids
@ -26,7 +26,7 @@ def handle_mgm_hk_data(
def handle_mgm_lis3_hk_data( def handle_mgm_lis3_hk_data(
object_id: ObjectIdU32, printer: FsfwTmTcPrinter, set_id: int, hk_data: bytes object_id: ObjectIdU32, printer: FsfwTmTcPrinter, set_id: int, hk_data: bytes
): ):
if set_id == MgmLis3SetIds.CORE_HK: if set_id == MgmLis3SetId.CORE_HK:
pw = PrintWrapper(printer) pw = PrintWrapper(printer)
fmt_str = "!ffff" fmt_str = "!ffff"
inc_len = struct.calcsize(fmt_str) inc_len = struct.calcsize(fmt_str)
@ -43,7 +43,7 @@ def handle_mgm_lis3_hk_data(
def handle_mgm_rm3100_hk_data( def handle_mgm_rm3100_hk_data(
object_id: ObjectIdU32, printer: FsfwTmTcPrinter, set_id: int, hk_data: bytes object_id: ObjectIdU32, printer: FsfwTmTcPrinter, set_id: int, hk_data: bytes
): ):
if set_id == MgmRm3100SetIds.CORE_HK: if set_id == MgmRm3100SetId.CORE_HK:
pw = PrintWrapper(printer) pw = PrintWrapper(printer)
fmt_str = f"!fff" fmt_str = f"!fff"
inc_len = struct.calcsize(fmt_str) inc_len = struct.calcsize(fmt_str)

View File

@ -2,7 +2,7 @@ import struct
from eive_tmtc.pus_tm.defs import PrintWrapper from eive_tmtc.pus_tm.defs import PrintWrapper
from tmtccmd.util.tmtc_printer import FsfwTmTcPrinter from tmtccmd.util.tmtc_printer import FsfwTmTcPrinter
from eive_tmtc.pus_tc.devs.plpcdu import SetIds from eive_tmtc.pus_tc.devs.plpcdu import SetId
ADC_CHANNELS_NAMED = [ ADC_CHANNELS_NAMED = [
@ -22,7 +22,7 @@ ADC_CHANNELS_NAMED = [
def handle_plpcdu_hk(printer: FsfwTmTcPrinter, set_id: int, hk_data: bytes): def handle_plpcdu_hk(printer: FsfwTmTcPrinter, set_id: int, hk_data: bytes):
if set_id == SetIds.ADC: if set_id == SetId.ADC:
pw = PrintWrapper(printer) pw = PrintWrapper(printer)
current_idx = 0 current_idx = 0
pw.dlog("Received PL PCDU ADC HK data") pw.dlog("Received PL PCDU ADC HK data")

View File

@ -2,11 +2,11 @@ import struct
from eive_tmtc.pus_tm.defs import PrintWrapper from eive_tmtc.pus_tm.defs import PrintWrapper
from tmtccmd.util.tmtc_printer import FsfwTmTcPrinter from tmtccmd.util.tmtc_printer import FsfwTmTcPrinter
from eive_tmtc.pus_tc.devs.rad_sensor import SetIds from eive_tmtc.pus_tc.devs.rad_sensor import SetId
def handle_rad_sensor_data(printer: FsfwTmTcPrinter, set_id: int, hk_data: bytes): def handle_rad_sensor_data(printer: FsfwTmTcPrinter, set_id: int, hk_data: bytes):
if set_id == SetIds.HK: if set_id == SetId.HK:
pw = PrintWrapper(printer) pw = PrintWrapper(printer)
current_idx = 0 current_idx = 0
pw.dlog("Received Radiation Sensor HK data") pw.dlog("Received Radiation Sensor HK data")

View File

@ -1,7 +1,7 @@
import struct import struct
from eive_tmtc.pus_tm.defs import PrintWrapper from eive_tmtc.pus_tm.defs import PrintWrapper
from eive_tmtc.pus_tc.devs.sus import SetIds from eive_tmtc.pus_tc.devs.sus import SetId
from tmtccmd.util import ObjectIdU32 from tmtccmd.util import ObjectIdU32
from tmtccmd.util.tmtc_printer import FsfwTmTcPrinter from tmtccmd.util.tmtc_printer import FsfwTmTcPrinter
@ -11,7 +11,7 @@ def handle_sus_hk(
): ):
pw = PrintWrapper(printer) pw = PrintWrapper(printer)
pw.dlog(f"Received SUS HK data from {object_id}") pw.dlog(f"Received SUS HK data from {object_id}")
if set_id == SetIds.HK: if set_id == SetId.HK:
current_idx = 0 current_idx = 0
temperature = struct.unpack("!f", hk_data[current_idx : current_idx + 4])[0] temperature = struct.unpack("!f", hk_data[current_idx : current_idx + 4])[0]
current_idx += 4 current_idx += 4

View File

@ -1,14 +1,14 @@
import struct import struct
from eive_tmtc.pus_tm.defs import PrintWrapper from eive_tmtc.pus_tm.defs import PrintWrapper
from eive_tmtc.pus_tc.devs.syrlinks_hk_handler import SetIds from eive_tmtc.pus_tc.devs.syrlinks_hk_handler import SetId
from tmtccmd.util.tmtc_printer import FsfwTmTcPrinter from tmtccmd.util.tmtc_printer import FsfwTmTcPrinter
def handle_syrlinks_hk_data(printer: FsfwTmTcPrinter, set_id: int, hk_data: bytes): def handle_syrlinks_hk_data(printer: FsfwTmTcPrinter, set_id: int, hk_data: bytes):
if set_id == SetIds.RX_REGISTERS_DATASET: if set_id == SetId.RX_REGISTERS_DATASET:
return handle_syrlinks_rx_registers_dataset(printer, hk_data) return handle_syrlinks_rx_registers_dataset(printer, hk_data)
elif set_id == SetIds.TX_REGISTERS_DATASET: elif set_id == SetId.TX_REGISTERS_DATASET:
return handle_syrlinks_tx_registers_dataset(printer, hk_data) return handle_syrlinks_tx_registers_dataset(printer, hk_data)
else: else:
pw = PrintWrapper(printer) pw = PrintWrapper(printer)

View File

@ -4,7 +4,7 @@ from eive_tmtc.config.events import get_event_dict
from eive_tmtc.config.object_ids import get_object_ids from eive_tmtc.config.object_ids import get_object_ids
from eive_tmtc.pus_tm.defs import PrintWrapper from eive_tmtc.pus_tm.defs import PrintWrapper
from eive_tmtc.pus_tm.verification_handler import generic_retval_printout from eive_tmtc.pus_tm.verification_handler import generic_retval_printout
from eive_tmtc.tmtc.acs.acs_subsystem import AcsModes from eive_tmtc.tmtc.acs.acs_subsystem import AcsMode
from tmtccmd.tc.pus_200_fsfw_modes import Modes from tmtccmd.tc.pus_200_fsfw_modes import Modes
from tmtccmd.tm import Service5Tm from tmtccmd.tm import Service5Tm
@ -57,13 +57,13 @@ def handle_event_packet(raw_tm: bytes, printer: FsfwTmTcPrinter):
if obj_name == "ACS_SUBSYSTEM": if obj_name == "ACS_SUBSYSTEM":
if tm.param_1 == Modes.OFF: if tm.param_1 == Modes.OFF:
mode_name = "Off" mode_name = "Off"
elif tm.param_1 == AcsModes.IDLE: elif tm.param_1 == AcsMode.IDLE:
mode_name = "Idle" mode_name = "Idle"
elif tm.param_1 == AcsModes.DETUMBLE: elif tm.param_1 == AcsMode.DETUMBLE:
mode_name = "Detumble" mode_name = "Detumble"
elif tm.param_1 == AcsModes.SAFE: elif tm.param_1 == AcsMode.SAFE:
mode_name = "Safe" mode_name = "Safe"
elif tm.param_1 == AcsModes.TARGET_PT: elif tm.param_1 == AcsMode.TARGET_PT:
mode_name = "Target Pointing" mode_name = "Target Pointing"
else: else:
if tm.param_1 == Modes.OFF: if tm.param_1 == Modes.OFF:

View File

@ -25,7 +25,7 @@ from eive_tmtc.tmtc.power.tm import (
) )
from eive_tmtc.pus_tm.devs.syrlinks import handle_syrlinks_hk_data from eive_tmtc.pus_tm.devs.syrlinks import handle_syrlinks_hk_data
from eive_tmtc.tmtc.acs.imtq import ( from eive_tmtc.tmtc.acs.imtq import (
ImtqSetIds, ImtqSetId,
handle_self_test_data, handle_self_test_data,
handle_eng_set, handle_eng_set,
handle_calibrated_mtm_measurement, handle_calibrated_mtm_measurement,
@ -95,15 +95,15 @@ def handle_regular_hk_print(
elif objb == obj_ids.SYRLINKS_HANDLER_ID: elif objb == obj_ids.SYRLINKS_HANDLER_ID:
handle_syrlinks_hk_data(printer=printer, hk_data=hk_data, set_id=set_id) handle_syrlinks_hk_data(printer=printer, hk_data=hk_data, set_id=set_id)
elif objb == obj_ids.IMTQ_HANDLER_ID: elif objb == obj_ids.IMTQ_HANDLER_ID:
if (set_id >= ImtqSetIds.POSITIVE_X_TEST) and ( if (set_id >= ImtqSetId.POSITIVE_X_TEST) and (
set_id <= ImtqSetIds.NEGATIVE_Z_TEST set_id <= ImtqSetId.NEGATIVE_Z_TEST
): ):
return handle_self_test_data(printer, hk_data) return handle_self_test_data(printer, hk_data)
elif set_id == ImtqSetIds.ENG_HK_SET: elif set_id == ImtqSetId.ENG_HK_SET:
return handle_eng_set(printer, hk_data) return handle_eng_set(printer, hk_data)
elif set_id == ImtqSetIds.CAL_MTM_SET: elif set_id == ImtqSetId.CAL_MTM_SET:
return handle_calibrated_mtm_measurement(printer, hk_data) return handle_calibrated_mtm_measurement(printer, hk_data)
elif set_id == ImtqSetIds.RAW_MTM_SET: elif set_id == ImtqSetId.RAW_MTM_SET:
return handle_raw_mtm_measurement(printer, hk_data) return handle_raw_mtm_measurement(printer, hk_data)
else: else:
LOGGER.info("Service 3 TM: IMTQ handler reply with unknown set id") LOGGER.info("Service 3 TM: IMTQ handler reply with unknown set id")

View File

@ -7,7 +7,7 @@ from tmtccmd.util import ObjectIdU32
from tmtccmd.util.tmtc_printer import FsfwTmTcPrinter from tmtccmd.util.tmtc_printer import FsfwTmTcPrinter
class SetIds(enum.IntEnum): class SetId(enum.IntEnum):
SENSOR_TEMPERATURE_SET = 0 SENSOR_TEMPERATURE_SET = 0
DEVICE_TEMPERATURE_SET = 1 DEVICE_TEMPERATURE_SET = 1
SUS_TEMPERATURE_SET = 2 SUS_TEMPERATURE_SET = 2
@ -23,7 +23,7 @@ def handle_thermal_controller_hk_data(
if TCP_TEMP_DEV_SERVER: if TCP_TEMP_DEV_SERVER:
TCP_TEMP_DEV_SERVER = TmTcpServer("localhost", 7306) TCP_TEMP_DEV_SERVER = TmTcpServer("localhost", 7306)
""" """
if set_id == SetIds.SENSOR_TEMPERATURE_SET: if set_id == SetId.SENSOR_TEMPERATURE_SET:
pw = PrintWrapper(printer) pw = PrintWrapper(printer)
pw.dlog("Received sensor temperature data") pw.dlog("Received sensor temperature data")
@ -58,7 +58,7 @@ def handle_thermal_controller_hk_data(
# tcp_server_sensor_temperatures.report_parsed_hk_data( # tcp_server_sensor_temperatures.report_parsed_hk_data(
# object_id, set_id, parsed_data # object_id, set_id, parsed_data
# ) # )
elif set_id == SetIds.DEVICE_TEMPERATURE_SET: elif set_id == SetId.DEVICE_TEMPERATURE_SET:
pw = PrintWrapper(printer) pw = PrintWrapper(printer)
pw.dlog("Received device temperature data") pw.dlog("Received device temperature data")
fmt_str = "!fhhhhiiiifffhffffffffffffff" fmt_str = "!fhhhhiiiifffhffffffffffffff"
@ -99,7 +99,7 @@ def handle_thermal_controller_hk_data(
# tcp_server_device_temperatures.report_parsed_hk_data( # tcp_server_device_temperatures.report_parsed_hk_data(
# object_id, set_id, parsed_data # object_id, set_id, parsed_data
# ) # )
elif set_id == SetIds.SUS_TEMPERATURE_SET: elif set_id == SetId.SUS_TEMPERATURE_SET:
pass pass
# pw = PrintWrapper(printer) # pw = PrintWrapper(printer)
# pw.dlog("Received SUS temperature data") # pw.dlog("Received SUS temperature data")

View File

@ -24,7 +24,7 @@ class AcsOpCodes:
ACS_ASS_DUAL_ON = ["6", "do"] ACS_ASS_DUAL_ON = ["6", "do"]
class DualSideSubmodes(enum.IntEnum): class DualSideSubmode(enum.IntEnum):
A_SIDE = 0 A_SIDE = 0
B_SIDE = 1 B_SIDE = 1
DUAL_SIDE = 2 DUAL_SIDE = 2
@ -35,7 +35,7 @@ def pack_acs_command(q: DefaultPusQueueHelper, op_code: str):
pack_mode_cmd_with_info( pack_mode_cmd_with_info(
object_id=ACS_BOARD_ASS_ID, object_id=ACS_BOARD_ASS_ID,
mode=Modes.NORMAL, mode=Modes.NORMAL,
submode=DualSideSubmodes.A_SIDE, submode=DualSideSubmode.A_SIDE,
q=q, q=q,
info="Switching to ACS board assembly A side", info="Switching to ACS board assembly A side",
) )
@ -43,7 +43,7 @@ def pack_acs_command(q: DefaultPusQueueHelper, op_code: str):
pack_mode_cmd_with_info( pack_mode_cmd_with_info(
object_id=ACS_BOARD_ASS_ID, object_id=ACS_BOARD_ASS_ID,
mode=Modes.NORMAL, mode=Modes.NORMAL,
submode=DualSideSubmodes.B_SIDE, submode=DualSideSubmode.B_SIDE,
q=q, q=q,
info="Switching to ACS board assembly B side", info="Switching to ACS board assembly B side",
) )
@ -51,7 +51,7 @@ def pack_acs_command(q: DefaultPusQueueHelper, op_code: str):
pack_mode_cmd_with_info( pack_mode_cmd_with_info(
object_id=ACS_BOARD_ASS_ID, object_id=ACS_BOARD_ASS_ID,
mode=Modes.NORMAL, mode=Modes.NORMAL,
submode=DualSideSubmodes.DUAL_SIDE, submode=DualSideSubmode.DUAL_SIDE,
q=q, q=q,
info="Switching to ACS board assembly dual mode", info="Switching to ACS board assembly dual mode",
) )
@ -59,7 +59,7 @@ def pack_acs_command(q: DefaultPusQueueHelper, op_code: str):
pack_mode_cmd_with_info( pack_mode_cmd_with_info(
object_id=ACS_BOARD_ASS_ID, object_id=ACS_BOARD_ASS_ID,
mode=Modes.ON, mode=Modes.ON,
submode=DualSideSubmodes.A_SIDE, submode=DualSideSubmode.A_SIDE,
q=q, q=q,
info="Switching ACS board assembly A side on", info="Switching ACS board assembly A side on",
) )
@ -67,7 +67,7 @@ def pack_acs_command(q: DefaultPusQueueHelper, op_code: str):
pack_mode_cmd_with_info( pack_mode_cmd_with_info(
object_id=ACS_BOARD_ASS_ID, object_id=ACS_BOARD_ASS_ID,
mode=Modes.ON, mode=Modes.ON,
submode=DualSideSubmodes.B_SIDE, submode=DualSideSubmode.B_SIDE,
q=q, q=q,
info="Switching ACS board assembly B side on", info="Switching ACS board assembly B side on",
) )
@ -75,7 +75,7 @@ def pack_acs_command(q: DefaultPusQueueHelper, op_code: str):
pack_mode_cmd_with_info( pack_mode_cmd_with_info(
object_id=ACS_BOARD_ASS_ID, object_id=ACS_BOARD_ASS_ID,
mode=Modes.ON, mode=Modes.ON,
submode=DualSideSubmodes.B_SIDE, submode=DualSideSubmode.B_SIDE,
q=q, q=q,
info="Switching ACS board assembly dual side on", info="Switching ACS board assembly dual side on",
) )

View File

@ -15,6 +15,7 @@ from tmtccmd.config.tmtc import (
) )
from tmtccmd.tc.pus_20_params import pack_scalar_boolean_parameter_app_data from tmtccmd.tc.pus_20_params import pack_scalar_boolean_parameter_app_data
from tmtccmd.tc import service_provider from tmtccmd.tc import service_provider
from tmtccmd.tc.pus_200_fsfw_modes import Modes, pack_mode_data, Subservices
from tmtccmd.tc.decorator import ServiceProviderParams from tmtccmd.tc.decorator import ServiceProviderParams
from tmtccmd.tc.pus_3_fsfw_hk import ( from tmtccmd.tc.pus_3_fsfw_hk import (
generate_one_hk_command, generate_one_hk_command,
@ -28,7 +29,7 @@ from tmtccmd.util.tmtc_printer import FsfwTmTcPrinter
LOGGER = get_console_logger() LOGGER = get_console_logger()
class SetIds(enum.IntEnum): class SetId(enum.IntEnum):
MGM_RAW_SET = 0 MGM_RAW_SET = 0
MGM_PROC_SET = 1 MGM_PROC_SET = 1
SUS_RAW_SET = 2 SUS_RAW_SET = 2
@ -42,6 +43,8 @@ class SetIds(enum.IntEnum):
class OpCodes: class OpCodes:
OFF = ["off"]
NML = ["normal"]
REQUEST_RAW_MGM_HK = ["0", "mgm_raw_hk"] REQUEST_RAW_MGM_HK = ["0", "mgm_raw_hk"]
ENABLE_RAW_MGM_HK = ["1", "enable_mgm_raw_hk"] ENABLE_RAW_MGM_HK = ["1", "enable_mgm_raw_hk"]
DISABLE_RAW_MGM_HK = ["2", "disable_mgm_raw_hk"] DISABLE_RAW_MGM_HK = ["2", "disable_mgm_raw_hk"]
@ -75,6 +78,8 @@ class OpCodes:
class Info: class Info:
OFF = "Switch ACS CTRL off"
NML = "Switch ACS CTRL normal"
REQUEST_RAW_MGM_HK = "Request Raw MGM HK once" REQUEST_RAW_MGM_HK = "Request Raw MGM HK once"
ENABLE_RAW_MGM_HK = "Enable Raw MGM HK data generation" ENABLE_RAW_MGM_HK = "Enable Raw MGM HK data generation"
DISABLE_RAW_MGM_HK = "Disable Raw MGM HK data generation" DISABLE_RAW_MGM_HK = "Disable Raw MGM HK data generation"
@ -122,6 +127,8 @@ if PERFORM_MGM_CALIBRATION:
@tmtc_definitions_provider @tmtc_definitions_provider
def acs_cmd_defs(defs: TmtcDefinitionWrapper): def acs_cmd_defs(defs: TmtcDefinitionWrapper):
oce = OpCodeEntry() oce = OpCodeEntry()
oce.add(keys=OpCodes.OFF, info=Info.OFF)
oce.add(keys=OpCodes.NML, info=Info.NML)
oce.add(keys=OpCodes.REQUEST_RAW_MGM_HK, info=Info.REQUEST_RAW_MGM_HK) oce.add(keys=OpCodes.REQUEST_RAW_MGM_HK, info=Info.REQUEST_RAW_MGM_HK)
oce.add(keys=OpCodes.ENABLE_RAW_MGM_HK, info=Info.ENABLE_RAW_MGM_HK) oce.add(keys=OpCodes.ENABLE_RAW_MGM_HK, info=Info.ENABLE_RAW_MGM_HK)
oce.add(keys=OpCodes.DISABLE_RAW_MGM_HK, info=Info.DISABLE_RAW_MGM_HK) oce.add(keys=OpCodes.DISABLE_RAW_MGM_HK, info=Info.DISABLE_RAW_MGM_HK)
@ -161,15 +168,19 @@ def acs_cmd_defs(defs: TmtcDefinitionWrapper):
def pack_acs_ctrl_command(p: ServiceProviderParams): def pack_acs_ctrl_command(p: ServiceProviderParams):
op_code = p.op_code op_code = p.op_code
q = p.queue_helper q = p.queue_helper
if op_code in OpCodes.OFF:
pass
if op_code in OpCodes.NML:
pass
if op_code in OpCodes.REQUEST_RAW_MGM_HK: if op_code in OpCodes.REQUEST_RAW_MGM_HK:
q.add_log_cmd(Info.REQUEST_RAW_MGM_HK) q.add_log_cmd(Info.REQUEST_RAW_MGM_HK)
q.add_pus_tc( q.add_pus_tc(
generate_one_hk_command(make_sid(ACS_CONTROLLER, SetIds.MGM_RAW_SET)) generate_one_hk_command(make_sid(ACS_CONTROLLER, SetId.MGM_RAW_SET))
) )
elif op_code in OpCodes.ENABLE_RAW_MGM_HK: elif op_code in OpCodes.ENABLE_RAW_MGM_HK:
q.add_log_cmd(Info.ENABLE_RAW_MGM_HK) q.add_log_cmd(Info.ENABLE_RAW_MGM_HK)
cmd_tuple = enable_periodic_hk_command_with_interval( cmd_tuple = enable_periodic_hk_command_with_interval(
False, make_sid(ACS_CONTROLLER, SetIds.MGM_RAW_SET), 2.0 False, make_sid(ACS_CONTROLLER, SetId.MGM_RAW_SET), 2.0
) )
q.add_pus_tc(cmd_tuple[0]) q.add_pus_tc(cmd_tuple[0])
q.add_pus_tc(cmd_tuple[1]) q.add_pus_tc(cmd_tuple[1])
@ -177,18 +188,18 @@ def pack_acs_ctrl_command(p: ServiceProviderParams):
q.add_log_cmd(Info.DISABLE_RAW_MGM_HK) q.add_log_cmd(Info.DISABLE_RAW_MGM_HK)
q.add_pus_tc( q.add_pus_tc(
disable_periodic_hk_command( disable_periodic_hk_command(
False, make_sid(ACS_CONTROLLER, SetIds.MGM_RAW_SET) False, make_sid(ACS_CONTROLLER, SetId.MGM_RAW_SET)
) )
) )
elif op_code in OpCodes.REQUEST_PROC_MGM_HK: elif op_code in OpCodes.REQUEST_PROC_MGM_HK:
q.add_log_cmd(Info.REQUEST_PROC_MGM_HK) q.add_log_cmd(Info.REQUEST_PROC_MGM_HK)
q.add_pus_tc( q.add_pus_tc(
generate_one_hk_command(make_sid(ACS_CONTROLLER, SetIds.MGM_PROC_SET)) generate_one_hk_command(make_sid(ACS_CONTROLLER, SetId.MGM_PROC_SET))
) )
elif op_code in OpCodes.ENABLE_PROC_MGM_HK: elif op_code in OpCodes.ENABLE_PROC_MGM_HK:
q.add_log_cmd(Info.ENABLE_PROC_MGM_HK) q.add_log_cmd(Info.ENABLE_PROC_MGM_HK)
cmd_tuple = enable_periodic_hk_command_with_interval( cmd_tuple = enable_periodic_hk_command_with_interval(
False, make_sid(ACS_CONTROLLER, SetIds.MGM_PROC_SET), 2.0 False, make_sid(ACS_CONTROLLER, SetId.MGM_PROC_SET), 2.0
) )
q.add_pus_tc(cmd_tuple[0]) q.add_pus_tc(cmd_tuple[0])
q.add_pus_tc(cmd_tuple[1]) q.add_pus_tc(cmd_tuple[1])
@ -196,18 +207,18 @@ def pack_acs_ctrl_command(p: ServiceProviderParams):
q.add_log_cmd(Info.DISABLE_PROC_MGM_HK) q.add_log_cmd(Info.DISABLE_PROC_MGM_HK)
q.add_pus_tc( q.add_pus_tc(
disable_periodic_hk_command( disable_periodic_hk_command(
False, make_sid(ACS_CONTROLLER, SetIds.MGM_PROC_SET) False, make_sid(ACS_CONTROLLER, SetId.MGM_PROC_SET)
) )
) )
elif op_code in OpCodes.REQUEST_RAW_SUS_HK: elif op_code in OpCodes.REQUEST_RAW_SUS_HK:
q.add_log_cmd(Info.REQUEST_RAW_SUS_HK) q.add_log_cmd(Info.REQUEST_RAW_SUS_HK)
q.add_pus_tc( q.add_pus_tc(
generate_one_hk_command(make_sid(ACS_CONTROLLER, SetIds.SUS_RAW_SET)) generate_one_hk_command(make_sid(ACS_CONTROLLER, SetId.SUS_RAW_SET))
) )
elif op_code in OpCodes.ENABLE_RAW_SUS_HK: elif op_code in OpCodes.ENABLE_RAW_SUS_HK:
q.add_log_cmd(Info.ENABLE_RAW_SUS_HK) q.add_log_cmd(Info.ENABLE_RAW_SUS_HK)
cmd_tuple = enable_periodic_hk_command_with_interval( cmd_tuple = enable_periodic_hk_command_with_interval(
False, make_sid(ACS_CONTROLLER, SetIds.SUS_RAW_SET), 2.0 False, make_sid(ACS_CONTROLLER, SetId.SUS_RAW_SET), 2.0
) )
q.add_pus_tc(cmd_tuple[0]) q.add_pus_tc(cmd_tuple[0])
q.add_pus_tc(cmd_tuple[1]) q.add_pus_tc(cmd_tuple[1])
@ -215,18 +226,18 @@ def pack_acs_ctrl_command(p: ServiceProviderParams):
q.add_log_cmd(Info.DISABLE_RAW_SUS_HK) q.add_log_cmd(Info.DISABLE_RAW_SUS_HK)
q.add_pus_tc( q.add_pus_tc(
disable_periodic_hk_command( disable_periodic_hk_command(
False, make_sid(ACS_CONTROLLER, SetIds.SUS_RAW_SET) False, make_sid(ACS_CONTROLLER, SetId.SUS_RAW_SET)
) )
) )
elif op_code in OpCodes.REQUEST_PROC_SUS_HK: elif op_code in OpCodes.REQUEST_PROC_SUS_HK:
q.add_log_cmd(Info.REQUEST_PROC_SUS_HK) q.add_log_cmd(Info.REQUEST_PROC_SUS_HK)
q.add_pus_tc( q.add_pus_tc(
generate_one_hk_command(make_sid(ACS_CONTROLLER, SetIds.SUS_PROC_SET)) generate_one_hk_command(make_sid(ACS_CONTROLLER, SetId.SUS_PROC_SET))
) )
elif op_code in OpCodes.ENABLE_PROC_SUS_HK: elif op_code in OpCodes.ENABLE_PROC_SUS_HK:
q.add_log_cmd(Info.ENABLE_PROC_SUS_HK) q.add_log_cmd(Info.ENABLE_PROC_SUS_HK)
cmd_tuple = enable_periodic_hk_command_with_interval( cmd_tuple = enable_periodic_hk_command_with_interval(
False, make_sid(ACS_CONTROLLER, SetIds.SUS_PROC_SET), 2.0 False, make_sid(ACS_CONTROLLER, SetId.SUS_PROC_SET), 2.0
) )
q.add_pus_tc(cmd_tuple[0]) q.add_pus_tc(cmd_tuple[0])
q.add_pus_tc(cmd_tuple[1]) q.add_pus_tc(cmd_tuple[1])
@ -234,18 +245,18 @@ def pack_acs_ctrl_command(p: ServiceProviderParams):
q.add_log_cmd(Info.DISABLE_PROC_SUS_HK) q.add_log_cmd(Info.DISABLE_PROC_SUS_HK)
q.add_pus_tc( q.add_pus_tc(
disable_periodic_hk_command( disable_periodic_hk_command(
False, make_sid(ACS_CONTROLLER, SetIds.SUS_PROC_SET) False, make_sid(ACS_CONTROLLER, SetId.SUS_PROC_SET)
) )
) )
elif op_code in OpCodes.REQUEST_RAW_GYR_HK: elif op_code in OpCodes.REQUEST_RAW_GYR_HK:
q.add_log_cmd(Info.REQUEST_RAW_GYR_HK) q.add_log_cmd(Info.REQUEST_RAW_GYR_HK)
q.add_pus_tc( q.add_pus_tc(
generate_one_hk_command(make_sid(ACS_CONTROLLER, SetIds.GYR_RAW_SET)) generate_one_hk_command(make_sid(ACS_CONTROLLER, SetId.GYR_RAW_SET))
) )
elif op_code in OpCodes.ENABLE_RAW_GYR_HK: elif op_code in OpCodes.ENABLE_RAW_GYR_HK:
q.add_log_cmd(Info.ENABLE_RAW_GYR_HK) q.add_log_cmd(Info.ENABLE_RAW_GYR_HK)
cmd_tuple = enable_periodic_hk_command_with_interval( cmd_tuple = enable_periodic_hk_command_with_interval(
False, make_sid(ACS_CONTROLLER, SetIds.GYR_RAW_SET), 2.0 False, make_sid(ACS_CONTROLLER, SetId.GYR_RAW_SET), 2.0
) )
q.add_pus_tc(cmd_tuple[0]) q.add_pus_tc(cmd_tuple[0])
q.add_pus_tc(cmd_tuple[1]) q.add_pus_tc(cmd_tuple[1])
@ -253,18 +264,18 @@ def pack_acs_ctrl_command(p: ServiceProviderParams):
q.add_log_cmd(Info.DISABLE_RAW_GYR_HK) q.add_log_cmd(Info.DISABLE_RAW_GYR_HK)
q.add_pus_tc( q.add_pus_tc(
disable_periodic_hk_command( disable_periodic_hk_command(
False, make_sid(ACS_CONTROLLER, SetIds.GYR_RAW_SET) False, make_sid(ACS_CONTROLLER, SetId.GYR_RAW_SET)
) )
) )
elif op_code in OpCodes.REQUEST_PROC_GYR_HK: elif op_code in OpCodes.REQUEST_PROC_GYR_HK:
q.add_log_cmd(Info.REQUEST_PROC_GYR_HK) q.add_log_cmd(Info.REQUEST_PROC_GYR_HK)
q.add_pus_tc( q.add_pus_tc(
generate_one_hk_command(make_sid(ACS_CONTROLLER, SetIds.GYR_PROC_SET)) generate_one_hk_command(make_sid(ACS_CONTROLLER, SetId.GYR_PROC_SET))
) )
elif op_code in OpCodes.ENABLE_PROC_GYR_HK: elif op_code in OpCodes.ENABLE_PROC_GYR_HK:
q.add_log_cmd(Info.ENABLE_PROC_GYR_HK) q.add_log_cmd(Info.ENABLE_PROC_GYR_HK)
cmd_tuple = enable_periodic_hk_command_with_interval( cmd_tuple = enable_periodic_hk_command_with_interval(
False, make_sid(ACS_CONTROLLER, SetIds.GYR_PROC_SET), 2.0 False, make_sid(ACS_CONTROLLER, SetId.GYR_PROC_SET), 2.0
) )
q.add_pus_tc(cmd_tuple[0]) q.add_pus_tc(cmd_tuple[0])
q.add_pus_tc(cmd_tuple[1]) q.add_pus_tc(cmd_tuple[1])
@ -272,18 +283,18 @@ def pack_acs_ctrl_command(p: ServiceProviderParams):
q.add_log_cmd(Info.DISABLE_PROC_GYR_HK) q.add_log_cmd(Info.DISABLE_PROC_GYR_HK)
q.add_pus_tc( q.add_pus_tc(
disable_periodic_hk_command( disable_periodic_hk_command(
False, make_sid(ACS_CONTROLLER, SetIds.GYR_PROC_SET) False, make_sid(ACS_CONTROLLER, SetId.GYR_PROC_SET)
) )
) )
elif op_code in OpCodes.REQUEST_PROC_GPS_HK: elif op_code in OpCodes.REQUEST_PROC_GPS_HK:
q.add_log_cmd(Info.REQUEST_PROC_GPS_HK) q.add_log_cmd(Info.REQUEST_PROC_GPS_HK)
q.add_pus_tc( q.add_pus_tc(
generate_one_hk_command(make_sid(ACS_CONTROLLER, SetIds.GPS_PROC_SET)) generate_one_hk_command(make_sid(ACS_CONTROLLER, SetId.GPS_PROC_SET))
) )
elif op_code in OpCodes.ENABLE_PROC_GPS_HK: elif op_code in OpCodes.ENABLE_PROC_GPS_HK:
q.add_log_cmd(Info.ENABLE_PROC_GPS_HK) q.add_log_cmd(Info.ENABLE_PROC_GPS_HK)
cmd_tuple = enable_periodic_hk_command_with_interval( cmd_tuple = enable_periodic_hk_command_with_interval(
False, make_sid(ACS_CONTROLLER, SetIds.GPS_PROC_SET), 2.0 False, make_sid(ACS_CONTROLLER, SetId.GPS_PROC_SET), 2.0
) )
q.add_pus_tc(cmd_tuple[0]) q.add_pus_tc(cmd_tuple[0])
q.add_pus_tc(cmd_tuple[1]) q.add_pus_tc(cmd_tuple[1])
@ -291,18 +302,16 @@ def pack_acs_ctrl_command(p: ServiceProviderParams):
q.add_log_cmd(Info.DISABLE_PROC_GPS_HK) q.add_log_cmd(Info.DISABLE_PROC_GPS_HK)
q.add_pus_tc( q.add_pus_tc(
disable_periodic_hk_command( disable_periodic_hk_command(
False, make_sid(ACS_CONTROLLER, SetIds.GPS_PROC_SET) False, make_sid(ACS_CONTROLLER, SetId.GPS_PROC_SET)
) )
) )
elif op_code in OpCodes.REQUEST_MEKF_HK: elif op_code in OpCodes.REQUEST_MEKF_HK:
q.add_log_cmd(Info.REQUEST_MEKF_HK) q.add_log_cmd(Info.REQUEST_MEKF_HK)
q.add_pus_tc( q.add_pus_tc(generate_one_hk_command(make_sid(ACS_CONTROLLER, SetId.MEKF_DATA)))
generate_one_hk_command(make_sid(ACS_CONTROLLER, SetIds.MEKF_DATA))
)
elif op_code in OpCodes.ENABLE_MEKF_HK: elif op_code in OpCodes.ENABLE_MEKF_HK:
q.add_log_cmd(Info.ENABLE_MEKF_HK) q.add_log_cmd(Info.ENABLE_MEKF_HK)
cmd_tuple = enable_periodic_hk_command_with_interval( cmd_tuple = enable_periodic_hk_command_with_interval(
False, make_sid(ACS_CONTROLLER, SetIds.MEKF_DATA), 2.0 False, make_sid(ACS_CONTROLLER, SetId.MEKF_DATA), 2.0
) )
q.add_pus_tc(cmd_tuple[0]) q.add_pus_tc(cmd_tuple[0])
q.add_pus_tc(cmd_tuple[1]) q.add_pus_tc(cmd_tuple[1])
@ -310,18 +319,18 @@ def pack_acs_ctrl_command(p: ServiceProviderParams):
q.add_log_cmd(Info.DISABLE_MEKF_HK) q.add_log_cmd(Info.DISABLE_MEKF_HK)
q.add_pus_tc( q.add_pus_tc(
disable_periodic_hk_command( disable_periodic_hk_command(
False, make_sid(ACS_CONTROLLER, SetIds.MEKF_DATA) False, make_sid(ACS_CONTROLLER, SetId.MEKF_DATA)
) )
) )
elif op_code in OpCodes.REQUEST_CTRL_VAL_HK: elif op_code in OpCodes.REQUEST_CTRL_VAL_HK:
q.add_log_cmd(Info.REQUEST_CTRL_VAL_HK) q.add_log_cmd(Info.REQUEST_CTRL_VAL_HK)
q.add_pus_tc( q.add_pus_tc(
generate_one_hk_command(make_sid(ACS_CONTROLLER, SetIds.CTRL_VAL_DATA)) generate_one_hk_command(make_sid(ACS_CONTROLLER, SetId.CTRL_VAL_DATA))
) )
elif op_code in OpCodes.ENABLE_CTRL_VAL_HK: elif op_code in OpCodes.ENABLE_CTRL_VAL_HK:
q.add_log_cmd(Info.ENABLE_CTRL_VAL_HK) q.add_log_cmd(Info.ENABLE_CTRL_VAL_HK)
cmd_tuple = enable_periodic_hk_command_with_interval( cmd_tuple = enable_periodic_hk_command_with_interval(
False, make_sid(ACS_CONTROLLER, SetIds.CTRL_VAL_DATA), 2.0 False, make_sid(ACS_CONTROLLER, SetId.CTRL_VAL_DATA), 2.0
) )
q.add_pus_tc(cmd_tuple[0]) q.add_pus_tc(cmd_tuple[0])
q.add_pus_tc(cmd_tuple[1]) q.add_pus_tc(cmd_tuple[1])
@ -329,18 +338,18 @@ def pack_acs_ctrl_command(p: ServiceProviderParams):
q.add_log_cmd(Info.DISABLE_CTRL_VAL_HK) q.add_log_cmd(Info.DISABLE_CTRL_VAL_HK)
q.add_pus_tc( q.add_pus_tc(
disable_periodic_hk_command( disable_periodic_hk_command(
False, make_sid(ACS_CONTROLLER, SetIds.CTRL_VAL_DATA) False, make_sid(ACS_CONTROLLER, SetId.CTRL_VAL_DATA)
) )
) )
elif op_code in OpCodes.REQUEST_ACT_CMD_HK: elif op_code in OpCodes.REQUEST_ACT_CMD_HK:
q.add_log_cmd(Info.REQUEST_ACT_CMD_HK) q.add_log_cmd(Info.REQUEST_ACT_CMD_HK)
q.add_pus_tc( q.add_pus_tc(
generate_one_hk_command(make_sid(ACS_CONTROLLER, SetIds.ACTUATOR_CMD_DATA)) generate_one_hk_command(make_sid(ACS_CONTROLLER, SetId.ACTUATOR_CMD_DATA))
) )
elif op_code in OpCodes.ENABLE_ACT_CMD_HK: elif op_code in OpCodes.ENABLE_ACT_CMD_HK:
q.add_log_cmd(Info.ENABLE_ACT_CMD_HK) q.add_log_cmd(Info.ENABLE_ACT_CMD_HK)
cmd_tuple = enable_periodic_hk_command_with_interval( cmd_tuple = enable_periodic_hk_command_with_interval(
False, make_sid(ACS_CONTROLLER, SetIds.ACTUATOR_CMD_DATA), 2.0 False, make_sid(ACS_CONTROLLER, SetId.ACTUATOR_CMD_DATA), 2.0
) )
q.add_pus_tc(cmd_tuple[0]) q.add_pus_tc(cmd_tuple[0])
q.add_pus_tc(cmd_tuple[1]) q.add_pus_tc(cmd_tuple[1])
@ -348,7 +357,7 @@ def pack_acs_ctrl_command(p: ServiceProviderParams):
q.add_log_cmd(Info.DISABLE_ACT_CMD_HK) q.add_log_cmd(Info.DISABLE_ACT_CMD_HK)
q.add_pus_tc( q.add_pus_tc(
disable_periodic_hk_command( disable_periodic_hk_command(
False, make_sid(ACS_CONTROLLER, SetIds.ACTUATOR_CMD_DATA) False, make_sid(ACS_CONTROLLER, SetId.ACTUATOR_CMD_DATA)
) )
) )
else: else:
@ -358,25 +367,25 @@ def pack_acs_ctrl_command(p: ServiceProviderParams):
def handle_acs_ctrl_hk_data(printer: FsfwTmTcPrinter, set_id: int, hk_data: bytes): def handle_acs_ctrl_hk_data(printer: FsfwTmTcPrinter, set_id: int, hk_data: bytes):
pw = PrintWrapper(printer) pw = PrintWrapper(printer)
match set_id: match set_id:
case SetIds.MGM_RAW_SET: case SetId.MGM_RAW_SET:
handle_raw_mgm_data(pw, hk_data) handle_raw_mgm_data(pw, hk_data)
case SetIds.MGM_PROC_SET: case SetId.MGM_PROC_SET:
handle_mgm_data_processed(pw, hk_data) handle_mgm_data_processed(pw, hk_data)
case SetIds.SUS_RAW_SET: case SetId.SUS_RAW_SET:
handle_acs_ctrl_sus_raw_data(pw, hk_data) handle_acs_ctrl_sus_raw_data(pw, hk_data)
case SetIds.SUS_PROC_SET: case SetId.SUS_PROC_SET:
handle_acs_ctrl_sus_processed_data(pw, hk_data) handle_acs_ctrl_sus_processed_data(pw, hk_data)
case SetIds.GYR_RAW_SET: case SetId.GYR_RAW_SET:
handle_gyr_data_raw(pw, hk_data) handle_gyr_data_raw(pw, hk_data)
case SetIds.GYR_PROC_SET: case SetId.GYR_PROC_SET:
handle_gyr_data_processed(pw, hk_data) handle_gyr_data_processed(pw, hk_data)
case SetIds.GPS_PROC_SET: case SetId.GPS_PROC_SET:
handle_gps_data_processed(pw, hk_data) handle_gps_data_processed(pw, hk_data)
case SetIds.MEKF_DATA: case SetId.MEKF_DATA:
handle_mekf_data(pw, hk_data) handle_mekf_data(pw, hk_data)
case SetIds.CTRL_VAL_DATA: case SetId.CTRL_VAL_DATA:
handle_ctrl_val_data(pw, hk_data) handle_ctrl_val_data(pw, hk_data)
case SetIds.ACTUATOR_CMD_DATA: case SetId.ACTUATOR_CMD_DATA:
handle_act_cmd_data(pw, hk_data) handle_act_cmd_data(pw, hk_data)
@ -403,10 +412,10 @@ def handle_acs_ctrl_sus_raw_data(pw: PrintWrapper, hk_data: bytes):
def handle_acs_ctrl_sus_processed_data(pw: PrintWrapper, hk_data: bytes): def handle_acs_ctrl_sus_processed_data(pw: PrintWrapper, hk_data: bytes):
if len(hk_data) < 3 * 4 * 12: if len(hk_data) < 3 * 4 * 12 + 3 * 8 * 3:
pw.dlog( pw.dlog(
f"SUS Raw dataset with size {len(hk_data)} does not have expected size" f"SUS Processed dataset with size {len(hk_data)} does not have expected size"
f" of {3 * 4 * 12} bytes" f" of {3 * 4 * 12 + 3 * 8 * 3} bytes"
) )
return return
current_idx = 0 current_idx = 0
@ -437,7 +446,7 @@ def handle_acs_ctrl_sus_processed_data(pw: PrintWrapper, hk_data: bytes):
sun_ijk_model = [f"{val:8.3f}" for val in {sun_ijk_model}] sun_ijk_model = [f"{val:8.3f}" for val in {sun_ijk_model}]
current_idx += inc_len current_idx += inc_len
pw.dlog(f"SUS ijk Model: {sun_ijk_model}") pw.dlog(f"SUS ijk Model: {sun_ijk_model}")
pw.printer.print_validity_buffer(hk_data[current_idx:], num_vars=12) pw.printer.print_validity_buffer(hk_data[current_idx:], num_vars=15)
def handle_raw_mgm_data(pw: PrintWrapper, hk_data: bytes): def handle_raw_mgm_data(pw: PrintWrapper, hk_data: bytes):
@ -478,8 +487,8 @@ def handle_raw_mgm_data(pw: PrintWrapper, hk_data: bytes):
float_str_fmt = "[{:8.3f}, {:8.3f}, {:8.3f}]" float_str_fmt = "[{:8.3f}, {:8.3f}, {:8.3f}]"
for mgm_entry in mgm_lists[0:4]: for mgm_entry in mgm_lists[0:4]:
formatted_list.append(float_str_fmt.format(*mgm_entry)) formatted_list.append(float_str_fmt.format(*mgm_entry))
formatted_list.append(hk_data[current_idx])
formatted_list.append(float_str_fmt.format(*mgm_lists[4])) formatted_list.append(float_str_fmt.format(*mgm_lists[4]))
formatted_list.append(hk_data[current_idx])
print_str_list = [ print_str_list = [
"ACS Board MGM 0 LIS3MDL", "ACS Board MGM 0 LIS3MDL",
"ACS Board MGM 1 RM3100", "ACS Board MGM 1 RM3100",
@ -494,6 +503,7 @@ def handle_raw_mgm_data(pw: PrintWrapper, hk_data: bytes):
if PERFORM_MGM_CALIBRATION: if PERFORM_MGM_CALIBRATION:
perform_mgm_calibration(pw, mgm_0_lis3_floats_ut) perform_mgm_calibration(pw, mgm_0_lis3_floats_ut)
assert current_idx == 61 assert current_idx == 61
pw.printer.print_validity_buffer(hk_data[current_idx:], num_vars=6)
def handle_mgm_data_processed(pw: PrintWrapper, hk_data: bytes): def handle_mgm_data_processed(pw: PrintWrapper, hk_data: bytes):
@ -588,6 +598,7 @@ def handle_gyr_data_processed(pw: PrintWrapper, hk_data: bytes):
] ]
pw.dlog(f"GYR Vec Total: {gyr_vec_tot}") pw.dlog(f"GYR Vec Total: {gyr_vec_tot}")
current_idx += inc_len current_idx += inc_len
pw.printer.print_validity_buffer(hk_data[current_idx:], num_vars=5)
def handle_gps_data_processed(pw: PrintWrapper, hk_data: bytes): def handle_gps_data_processed(pw: PrintWrapper, hk_data: bytes):
@ -623,6 +634,7 @@ def handle_gps_data_processed(pw: PrintWrapper, hk_data: bytes):
pw.dlog(f"GPS Latitude: {lat} [rad]") pw.dlog(f"GPS Latitude: {lat} [rad]")
pw.dlog(f"GPS Longitude: {long} [rad]") pw.dlog(f"GPS Longitude: {long} [rad]")
pw.dlog(f"GPS Velocity: {velo} [m/s]") pw.dlog(f"GPS Velocity: {velo} [m/s]")
pw.printer.print_validity_buffer(hk_data[current_idx:], num_vars=3)
def handle_mekf_data(pw: PrintWrapper, hk_data: bytes): def handle_mekf_data(pw: PrintWrapper, hk_data: bytes):
@ -650,6 +662,7 @@ def handle_mekf_data(pw: PrintWrapper, hk_data: bytes):
] ]
pw.dlog(f"MEKF Quaternion: {quat}") pw.dlog(f"MEKF Quaternion: {quat}")
pw.dlog(f"MEKF Rotational Rate: {rate}") pw.dlog(f"MEKF Rotational Rate: {rate}")
pw.printer.print_validity_buffer(hk_data[current_idx:], num_vars=2)
def handle_ctrl_val_data(pw: PrintWrapper, hk_data: bytes): def handle_ctrl_val_data(pw: PrintWrapper, hk_data: bytes):
@ -685,6 +698,7 @@ def handle_ctrl_val_data(pw: PrintWrapper, hk_data: bytes):
pw.dlog(f"Control Values Target Quaternion: {tgt_quat}") pw.dlog(f"Control Values Target Quaternion: {tgt_quat}")
pw.dlog(f"Control Values Error Quaternion: {err_quat}") pw.dlog(f"Control Values Error Quaternion: {err_quat}")
pw.dlog(f"Control Values Error Angle: {err_ang} [rad]") pw.dlog(f"Control Values Error Angle: {err_ang} [rad]")
pw.printer.print_validity_buffer(hk_data[current_idx:], num_vars=3)
def handle_act_cmd_data(pw: PrintWrapper, hk_data: bytes): def handle_act_cmd_data(pw: PrintWrapper, hk_data: bytes):
@ -722,6 +736,7 @@ def handle_act_cmd_data(pw: PrintWrapper, hk_data: bytes):
pw.dlog(f"Actuator Commands RW Target Torque: {rw_tgt_torque}") pw.dlog(f"Actuator Commands RW Target Torque: {rw_tgt_torque}")
pw.dlog(f"Actuator Commands RW Target Speed: {rw_tgt_speed}") pw.dlog(f"Actuator Commands RW Target Speed: {rw_tgt_speed}")
pw.dlog(f"Actuator Commands MTQ Target Dipole: {mtq_tgt_dipole}") pw.dlog(f"Actuator Commands MTQ Target Dipole: {mtq_tgt_dipole}")
pw.printer.print_validity_buffer(hk_data[current_idx:], num_vars=3)
def perform_mgm_calibration(pw: PrintWrapper, mgm_tuple: Tuple): def perform_mgm_calibration(pw: PrintWrapper, mgm_tuple: Tuple):

View File

@ -15,7 +15,7 @@ from tmtccmd.tc import service_provider
from tmtccmd.tc.decorator import ServiceProviderParams from tmtccmd.tc.decorator import ServiceProviderParams
class OpCodes(str, enum.Enum): class OpCode(str, enum.Enum):
OFF = "off" OFF = "off"
SAFE = "safe" SAFE = "safe"
DETUMBLE = "detumble" DETUMBLE = "detumble"
@ -24,7 +24,7 @@ class OpCodes(str, enum.Enum):
REPORT_ALL_MODES = "all_modes" REPORT_ALL_MODES = "all_modes"
class AcsModes(enum.IntEnum): class AcsMode(enum.IntEnum):
OFF = 0 OFF = 0
SAFE = 1 << 24 SAFE = 1 << 24
DETUMBLE = 2 << 24 DETUMBLE = 2 << 24
@ -42,10 +42,10 @@ class Info(str, enum.Enum):
HANDLER_LIST: Dict[str, Tuple[int, str]] = { HANDLER_LIST: Dict[str, Tuple[int, str]] = {
OpCodes.OFF: (AcsModes.OFF, Info.OFF), OpCode.OFF: (AcsMode.OFF, Info.OFF),
OpCodes.IDLE: (AcsModes.IDLE, Info.IDLE), OpCode.IDLE: (AcsMode.IDLE, Info.IDLE),
OpCodes.SAFE: (AcsModes.SAFE, Info.SAFE), OpCode.SAFE: (AcsMode.SAFE, Info.SAFE),
OpCodes.DETUMBLE: (AcsModes.DETUMBLE, Info.DETUMBLE), OpCode.DETUMBLE: (AcsMode.DETUMBLE, Info.DETUMBLE),
} }
@ -54,7 +54,7 @@ def build_acs_subsystem_cmd(p: ServiceProviderParams):
op_code = p.op_code op_code = p.op_code
q = p.queue_helper q = p.queue_helper
info_prefix = "ACS Subsystem" info_prefix = "ACS Subsystem"
if op_code in OpCodes.REPORT_ALL_MODES: if op_code in OpCode.REPORT_ALL_MODES:
q.add_log_cmd(f"{info_prefix}: {Info.REPORT_ALL_MODES}") q.add_log_cmd(f"{info_prefix}: {Info.REPORT_ALL_MODES}")
q.add_pus_tc( q.add_pus_tc(
PusTelecommand( PusTelecommand(
@ -78,8 +78,8 @@ def build_acs_subsystem_cmd(p: ServiceProviderParams):
@tmtc_definitions_provider @tmtc_definitions_provider
def add_acs_subsystem_cmds(defs: TmtcDefinitionWrapper): def add_acs_subsystem_cmds(defs: TmtcDefinitionWrapper):
oce = OpCodeEntry() oce = OpCodeEntry()
oce.add(OpCodes.OFF, Info.OFF) oce.add(OpCode.OFF, Info.OFF)
oce.add(OpCodes.SAFE, Info.SAFE) oce.add(OpCode.SAFE, Info.SAFE)
oce.add(OpCodes.IDLE, Info.IDLE) oce.add(OpCode.IDLE, Info.IDLE)
oce.add(OpCodes.REPORT_ALL_MODES, Info.REPORT_ALL_MODES) oce.add(OpCode.REPORT_ALL_MODES, Info.REPORT_ALL_MODES)
defs.add_service(CustomServiceList.ACS_SS, "ACS Subsystem", oce) defs.add_service(CustomServiceList.ACS_SS, "ACS Subsystem", oce)

View File

@ -27,14 +27,14 @@ from tmtccmd.util import ObjectIdU32
from tmtccmd.util.tmtc_printer import FsfwTmTcPrinter from tmtccmd.util.tmtc_printer import FsfwTmTcPrinter
class OpCodes: class OpCode:
ON = ["on"] ON = ["on"]
NORMAL = ["normal"] NORMAL = ["normal"]
OFF = ["off"] OFF = ["off"]
SET_DIPOLE = ["set_dipole"] SET_DIPOLE = ["set_dipole"]
class ImtqSetIds: class ImtqSetId:
ENG_HK_SET = 1 ENG_HK_SET = 1
CAL_MTM_SET = 2 CAL_MTM_SET = 2
RAW_MTM_SET = 3 RAW_MTM_SET = 3
@ -46,7 +46,7 @@ class ImtqSetIds:
NEGATIVE_Z_TEST = 9 NEGATIVE_Z_TEST = 9
class ImtqActionIds: class ImtqActionId:
start_actuation_dipole = bytearray([0x0, 0x0, 0x0, 0x02]) start_actuation_dipole = bytearray([0x0, 0x0, 0x0, 0x02])
get_commanded_dipole = bytearray([0x0, 0x0, 0x0, 0x03]) get_commanded_dipole = bytearray([0x0, 0x0, 0x0, 0x03])
perform_positive_x_test = bytearray([0x0, 0x0, 0x0, 0x07]) perform_positive_x_test = bytearray([0x0, 0x0, 0x0, 0x07])
@ -63,16 +63,16 @@ class ImtqActionIds:
@tmtc_definitions_provider @tmtc_definitions_provider
def add_imtq_cmds(defs: TmtcDefinitionWrapper): def add_imtq_cmds(defs: TmtcDefinitionWrapper):
oce = OpCodeEntry() oce = OpCodeEntry()
oce.add(OpCodes.OFF, "Mode Off") oce.add(OpCode.OFF, "Mode Off")
oce.add(OpCodes.ON, "Mode On") oce.add(OpCode.ON, "Mode On")
oce.add(OpCodes.NORMAL, "Mode Normal") oce.add(OpCode.NORMAL, "Mode Normal")
oce.add("3", "IMTQ perform pos X self test") oce.add("3", "IMTQ perform pos X self test")
oce.add("4", "IMTQ perform neg X self test") oce.add("4", "IMTQ perform neg X self test")
oce.add("5", "IMTQ perform pos Y self test") oce.add("5", "IMTQ perform pos Y self test")
oce.add("6", "IMTQ perform neg Y self test") oce.add("6", "IMTQ perform neg Y self test")
oce.add("7", "IMTQ perform pos Z self test") oce.add("7", "IMTQ perform pos Z self test")
oce.add("8", "IMTQ perform neg Z self test") oce.add("8", "IMTQ perform neg Z self test")
oce.add(OpCodes.SET_DIPOLE, "IMTQ command dipole") oce.add(OpCode.SET_DIPOLE, "IMTQ command dipole")
oce.add("10", "IMTQ get commanded dipole") oce.add("10", "IMTQ get commanded dipole")
oce.add("11", "IMTQ get engineering hk set") oce.add("11", "IMTQ get engineering hk set")
oce.add("12", "IMTQ get calibrated MTM measurement one shot") oce.add("12", "IMTQ get calibrated MTM measurement one shot")
@ -85,92 +85,92 @@ def pack_imtq_test_into(object_id: ObjectIdU32, q: DefaultPusQueueHelper, op_cod
f"Testing ISIS IMTQ handler with object id: {object_id.as_hex_string}" f"Testing ISIS IMTQ handler with object id: {object_id.as_hex_string}"
) )
if op_code in OpCodes.OFF: if op_code in OpCode.OFF:
q.add_log_cmd("IMTQ: Set mode off") q.add_log_cmd("IMTQ: Set mode off")
command = pack_mode_data(object_id.as_bytes, Modes.OFF, 0) command = pack_mode_data(object_id.as_bytes, Modes.OFF, 0)
q.add_pus_tc(PusTelecommand(service=200, subservice=1, app_data=command)) q.add_pus_tc(PusTelecommand(service=200, subservice=1, app_data=command))
if op_code in OpCodes.ON: if op_code in OpCode.ON:
q.add_log_cmd("IMTQ: Set mode on") q.add_log_cmd("IMTQ: Set mode on")
command = pack_mode_data(object_id.as_bytes, Modes.ON, 0) command = pack_mode_data(object_id.as_bytes, Modes.ON, 0)
q.add_pus_tc(PusTelecommand(service=200, subservice=1, app_data=command)) q.add_pus_tc(PusTelecommand(service=200, subservice=1, app_data=command))
if op_code in OpCodes.NORMAL: if op_code in OpCode.NORMAL:
q.add_log_cmd("IMTQ: Mode Normal") q.add_log_cmd("IMTQ: Mode Normal")
command = pack_mode_data(object_id.as_bytes, Modes.NORMAL, 0) command = pack_mode_data(object_id.as_bytes, Modes.NORMAL, 0)
q.add_pus_tc(PusTelecommand(service=200, subservice=1, app_data=command)) q.add_pus_tc(PusTelecommand(service=200, subservice=1, app_data=command))
if op_code == "3": if op_code == "3":
q.add_log_cmd("IMTQ: Perform positive x self test") q.add_log_cmd("IMTQ: Perform positive x self test")
command = object_id.as_bytes + ImtqActionIds.perform_positive_x_test command = object_id.as_bytes + ImtqActionId.perform_positive_x_test
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command))
q.add_log_cmd("IMTQ: Initiate reading of positive x self test results") q.add_log_cmd("IMTQ: Initiate reading of positive x self test results")
command = object_id.as_bytes + ImtqActionIds.read_self_test_results command = object_id.as_bytes + ImtqActionId.read_self_test_results
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command))
q.add_log_cmd("IMTQ: Request dataset with positive x self test results") q.add_log_cmd("IMTQ: Request dataset with positive x self test results")
sid = make_sid(object_id.as_bytes, ImtqSetIds.POSITIVE_X_TEST) sid = make_sid(object_id.as_bytes, ImtqSetId.POSITIVE_X_TEST)
q.add_pus_tc(generate_one_hk_command(sid)) q.add_pus_tc(generate_one_hk_command(sid))
if op_code == "4": if op_code == "4":
q.add_log_cmd("IMTQ: Perform negative x self test") q.add_log_cmd("IMTQ: Perform negative x self test")
command = object_id.as_bytes + ImtqActionIds.perform_negative_x_test command = object_id.as_bytes + ImtqActionId.perform_negative_x_test
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command))
q.add_log_cmd("IMTQ: Initiate reading of negative x self test results") q.add_log_cmd("IMTQ: Initiate reading of negative x self test results")
command = object_id.as_bytes + ImtqActionIds.read_self_test_results command = object_id.as_bytes + ImtqActionId.read_self_test_results
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command))
q.add_log_cmd("IMTQ: Request dataset with negative x self test results") q.add_log_cmd("IMTQ: Request dataset with negative x self test results")
sid = make_sid(object_id.as_bytes, ImtqSetIds.NEGATIVE_X_TEST) sid = make_sid(object_id.as_bytes, ImtqSetId.NEGATIVE_X_TEST)
q.add_pus_tc(generate_one_hk_command(sid)) q.add_pus_tc(generate_one_hk_command(sid))
if op_code == "5": if op_code == "5":
q.add_log_cmd("IMTQ: Perform positive y self test") q.add_log_cmd("IMTQ: Perform positive y self test")
command = object_id.as_bytes + ImtqActionIds.perform_positive_y_test command = object_id.as_bytes + ImtqActionId.perform_positive_y_test
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command))
q.add_log_cmd("IMTQ: Initiate reading of positive y self test results") q.add_log_cmd("IMTQ: Initiate reading of positive y self test results")
command = object_id.as_bytes + ImtqActionIds.read_self_test_results command = object_id.as_bytes + ImtqActionId.read_self_test_results
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command))
q.add_log_cmd("IMTQ: Request dataset with positive y self test results") q.add_log_cmd("IMTQ: Request dataset with positive y self test results")
sid = make_sid(object_id.as_bytes, ImtqSetIds.POSITIVE_Y_TEST) sid = make_sid(object_id.as_bytes, ImtqSetId.POSITIVE_Y_TEST)
q.add_pus_tc(generate_one_hk_command(sid)) q.add_pus_tc(generate_one_hk_command(sid))
if op_code == "6": if op_code == "6":
q.add_log_cmd("IMTQ: Perform negative y self test") q.add_log_cmd("IMTQ: Perform negative y self test")
command = object_id.as_bytes + ImtqActionIds.perform_negative_y_test command = object_id.as_bytes + ImtqActionId.perform_negative_y_test
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command))
q.add_log_cmd("IMTQ: Initiate reading of negative y self test results") q.add_log_cmd("IMTQ: Initiate reading of negative y self test results")
command = object_id.as_bytes + ImtqActionIds.read_self_test_results command = object_id.as_bytes + ImtqActionId.read_self_test_results
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command))
q.add_log_cmd("IMTQ: Request dataset with negative y self test results") q.add_log_cmd("IMTQ: Request dataset with negative y self test results")
sid = make_sid(object_id.as_bytes, ImtqSetIds.NEGATIVE_Y_TEST) sid = make_sid(object_id.as_bytes, ImtqSetId.NEGATIVE_Y_TEST)
q.add_pus_tc(generate_one_hk_command(sid)) q.add_pus_tc(generate_one_hk_command(sid))
if op_code == "7": if op_code == "7":
q.add_log_cmd("IMTQ: Perform positive z self test") q.add_log_cmd("IMTQ: Perform positive z self test")
command = object_id.as_bytes + ImtqActionIds.perform_positive_z_test command = object_id.as_bytes + ImtqActionId.perform_positive_z_test
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command))
q.add_log_cmd("IMTQ: Initiate reading of positive z self test results") q.add_log_cmd("IMTQ: Initiate reading of positive z self test results")
command = object_id.as_bytes + ImtqActionIds.read_self_test_results command = object_id.as_bytes + ImtqActionId.read_self_test_results
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command))
q.add_log_cmd("IMTQ: Request dataset with positive z self test results") q.add_log_cmd("IMTQ: Request dataset with positive z self test results")
sid = make_sid(object_id.as_bytes, ImtqSetIds.POSITIVE_Y_TEST) sid = make_sid(object_id.as_bytes, ImtqSetId.POSITIVE_Y_TEST)
q.add_pus_tc(generate_one_hk_command(sid)) q.add_pus_tc(generate_one_hk_command(sid))
if op_code == "8": if op_code == "8":
q.add_log_cmd("IMTQ: Perform negative z self test") q.add_log_cmd("IMTQ: Perform negative z self test")
command = object_id.as_bytes + ImtqActionIds.perform_negative_z_test command = object_id.as_bytes + ImtqActionId.perform_negative_z_test
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command))
q.add_log_cmd("IMTQ: Initiate reading of negative z self test results") q.add_log_cmd("IMTQ: Initiate reading of negative z self test results")
command = object_id.as_bytes + ImtqActionIds.read_self_test_results command = object_id.as_bytes + ImtqActionId.read_self_test_results
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command))
q.add_log_cmd("IMTQ: Request dataset with negative z self test results") q.add_log_cmd("IMTQ: Request dataset with negative z self test results")
sid = make_sid(object_id.as_bytes, ImtqSetIds.NEGATIVE_Z_TEST) sid = make_sid(object_id.as_bytes, ImtqSetId.NEGATIVE_Z_TEST)
q.add_pus_tc(generate_one_hk_command(sid)) q.add_pus_tc(generate_one_hk_command(sid))
if op_code in OpCodes.SET_DIPOLE: if op_code in OpCode.SET_DIPOLE:
x_dipole = int(input("Specify X dipole [range [0, 2000] * 10^-4 * Am^2]: ")) x_dipole = int(input("Specify X dipole [range [0, 2000] * 10^-4 * Am^2]: "))
y_dipole = int(input("Specify Y dipole [range [0, 2000] * 10^-4 * Am^2]: ")) y_dipole = int(input("Specify Y dipole [range [0, 2000] * 10^-4 * Am^2]: "))
z_dipole = int(input("Specify Z dipole [range [0, 2000] * 10^-4 * Am^2]: ")) z_dipole = int(input("Specify Z dipole [range [0, 2000] * 10^-4 * Am^2]: "))
@ -192,14 +192,14 @@ def pack_imtq_test_into(object_id: ObjectIdU32, q: DefaultPusQueueHelper, op_cod
if op_code == "10": if op_code == "10":
q.add_log_cmd("IMTQ: Get commanded dipole") q.add_log_cmd("IMTQ: Get commanded dipole")
command = object_id.as_bytes + ImtqActionIds.get_commanded_dipole command = object_id.as_bytes + ImtqActionId.get_commanded_dipole
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command))
if op_code == "11": if op_code == "11":
q.add_log_cmd("IMTQ: Get engineering hk set") q.add_log_cmd("IMTQ: Get engineering hk set")
q.add_pus_tc( q.add_pus_tc(
generate_one_diag_command( generate_one_diag_command(
sid=make_sid(object_id=object_id.as_bytes, set_id=ImtqSetIds.ENG_HK_SET) sid=make_sid(object_id=object_id.as_bytes, set_id=ImtqSetId.ENG_HK_SET)
) )
) )
@ -207,9 +207,7 @@ def pack_imtq_test_into(object_id: ObjectIdU32, q: DefaultPusQueueHelper, op_cod
q.add_log_cmd("IMTQ: Get calibrated MTM hk set") q.add_log_cmd("IMTQ: Get calibrated MTM hk set")
q.add_pus_tc( q.add_pus_tc(
generate_one_diag_command( generate_one_diag_command(
sid=make_sid( sid=make_sid(object_id=object_id.as_bytes, set_id=ImtqSetId.CAL_MTM_SET)
object_id=object_id.as_bytes, set_id=ImtqSetIds.CAL_MTM_SET
)
) )
) )
@ -217,9 +215,7 @@ def pack_imtq_test_into(object_id: ObjectIdU32, q: DefaultPusQueueHelper, op_cod
q.add_log_cmd("IMTQ: Get raw MTM hk set") q.add_log_cmd("IMTQ: Get raw MTM hk set")
q.add_pus_tc( q.add_pus_tc(
generate_one_diag_command( generate_one_diag_command(
sid=make_sid( sid=make_sid(object_id=object_id.as_bytes, set_id=ImtqSetId.RAW_MTM_SET)
object_id=object_id.as_bytes, set_id=ImtqSetIds.RAW_MTM_SET
)
) )
) )
@ -236,7 +232,7 @@ def pack_dipole_command(
When set to 0, the dipole will be generated until a new dipole actuation When set to 0, the dipole will be generated until a new dipole actuation
command is sent. command is sent.
""" """
action_id = ImtqActionIds.start_actuation_dipole action_id = ImtqActionId.start_actuation_dipole
command = object_id + action_id command = object_id + action_id
x_dipole = int(round(x_dipole)) x_dipole = int(round(x_dipole))
y_dipole = int(round(y_dipole)) y_dipole = int(round(y_dipole))

View File

@ -26,7 +26,7 @@ from tmtccmd.util import ObjectIdU32
from tmtccmd.util.tmtc_printer import FsfwTmTcPrinter from tmtccmd.util.tmtc_printer import FsfwTmTcPrinter
class OpCodesDevs: class OpCodesDev:
SPEED = ["0", "speed"] SPEED = ["0", "speed"]
ON = ["1", "on"] ON = ["1", "on"]
NML = ["2", "nml"] NML = ["2", "nml"]
@ -37,7 +37,7 @@ class OpCodesDevs:
DISABLE_STATUS_HK = ["7", "disable_status_hk"] DISABLE_STATUS_HK = ["7", "disable_status_hk"]
class InfoDevs: class InfoDev:
SPEED = "Set speed" SPEED = "Set speed"
ON = "Set On" ON = "Set On"
NML = "Set Normal" NML = "Set Normal"
@ -64,14 +64,14 @@ class InfoAss:
ALL_SPEED_OFF = "Speed down to 0" ALL_SPEED_OFF = "Speed down to 0"
class RwSetIds: class RwSetId:
STATUS_SET_ID = 4 STATUS_SET_ID = 4
TEMPERATURE_SET_ID = 8 TEMPERATURE_SET_ID = 8
LAST_RESET = 2 LAST_RESET = 2
TM_SET = 9 TM_SET = 9
class RwCommandIds: class RwCommandId:
RESET_MCU = bytearray([0x0, 0x0, 0x0, 0x01]) RESET_MCU = bytearray([0x0, 0x0, 0x0, 0x01])
# Reads status information from reaction wheel into dataset with id 4 # Reads status information from reaction wheel into dataset with id 4
GET_RW_STATUS = bytearray([0x0, 0x0, 0x0, 0x04]) GET_RW_STATUS = bytearray([0x0, 0x0, 0x0, 0x04])
@ -94,14 +94,14 @@ class RampTime:
@tmtc_definitions_provider @tmtc_definitions_provider
def add_rw_cmds(defs: TmtcDefinitionWrapper): def add_rw_cmds(defs: TmtcDefinitionWrapper):
oce = OpCodeEntry() oce = OpCodeEntry()
oce.add(info=InfoDevs.SPEED, keys=OpCodesDevs.SPEED) oce.add(info=InfoDev.SPEED, keys=OpCodesDev.SPEED)
oce.add(info=InfoDevs.ON, keys=OpCodesDevs.ON) oce.add(info=InfoDev.ON, keys=OpCodesDev.ON)
oce.add(info=InfoDevs.OFF, keys=OpCodesDevs.OFF) oce.add(info=InfoDev.OFF, keys=OpCodesDev.OFF)
oce.add(info=InfoDevs.NML, keys=OpCodesDevs.NML) oce.add(info=InfoDev.NML, keys=OpCodesDev.NML)
oce.add(info=InfoDevs.GET_STATUS, keys=OpCodesDevs.GET_STATUS) oce.add(info=InfoDev.GET_STATUS, keys=OpCodesDev.GET_STATUS)
oce.add(info=InfoDevs.GET_TM, keys=OpCodesDevs.GET_TM) oce.add(info=InfoDev.GET_TM, keys=OpCodesDev.GET_TM)
oce.add(info=InfoDevs.ENABLE_STATUS_HK, keys=OpCodesDevs.ENABLE_STATUS_HK) oce.add(info=InfoDev.ENABLE_STATUS_HK, keys=OpCodesDev.ENABLE_STATUS_HK)
oce.add(info=InfoDevs.DISABLE_STATUS_HK, keys=OpCodesDevs.DISABLE_STATUS_HK) oce.add(info=InfoDev.DISABLE_STATUS_HK, keys=OpCodesDev.DISABLE_STATUS_HK)
defs.add_service( defs.add_service(
name=CustomServiceList.REACTION_WHEEL_1.value, name=CustomServiceList.REACTION_WHEEL_1.value,
info="Reaction Wheel 1", info="Reaction Wheel 1",
@ -138,56 +138,56 @@ def add_rw_cmds(defs: TmtcDefinitionWrapper):
def pack_single_rw_test_into( def pack_single_rw_test_into(
object_id: bytes, rw_idx: int, q: DefaultPusQueueHelper, op_code: str object_id: bytes, rw_idx: int, q: DefaultPusQueueHelper, op_code: str
): ):
if op_code in OpCodesDevs.SPEED: if op_code in OpCodesDev.SPEED:
speed, ramp_time = prompt_speed_ramp_time() speed, ramp_time = prompt_speed_ramp_time()
q.add_log_cmd( q.add_log_cmd(
f"RW {rw_idx}: {InfoDevs.SPEED} with target " f"RW {rw_idx}: {InfoDev.SPEED} with target "
f"speed {speed / 10.0} RPM and {ramp_time} ms ramp time" f"speed {speed / 10.0} RPM and {ramp_time} ms ramp time"
) )
q.add_pus_tc(pack_set_speed_command(object_id, speed, ramp_time)) q.add_pus_tc(pack_set_speed_command(object_id, speed, ramp_time))
if op_code in OpCodesDevs.ON: if op_code in OpCodesDev.ON:
q.add_log_cmd(f"RW {rw_idx}: {InfoDevs.ON}") q.add_log_cmd(f"RW {rw_idx}: {InfoDev.ON}")
mode_data = pack_mode_data(object_id, Modes.ON, 0) mode_data = pack_mode_data(object_id, Modes.ON, 0)
q.add_pus_tc(PusTelecommand(service=200, subservice=1, app_data=mode_data)) q.add_pus_tc(PusTelecommand(service=200, subservice=1, app_data=mode_data))
if op_code in OpCodesDevs.NML: if op_code in OpCodesDev.NML:
q.add_log_cmd(f"RW {rw_idx}: {InfoDevs.NML}") q.add_log_cmd(f"RW {rw_idx}: {InfoDev.NML}")
mode_data = pack_mode_data(object_id, Modes.NORMAL, 0) mode_data = pack_mode_data(object_id, Modes.NORMAL, 0)
q.add_pus_tc(PusTelecommand(service=200, subservice=1, app_data=mode_data)) q.add_pus_tc(PusTelecommand(service=200, subservice=1, app_data=mode_data))
if op_code in OpCodesDevs.OFF: if op_code in OpCodesDev.OFF:
q.add_log_cmd(f"RW {rw_idx}: {InfoDevs.OFF}") q.add_log_cmd(f"RW {rw_idx}: {InfoDev.OFF}")
mode_data = pack_mode_data(object_id, Modes.OFF, 0) mode_data = pack_mode_data(object_id, Modes.OFF, 0)
q.add_pus_tc(PusTelecommand(service=200, subservice=1, app_data=mode_data)) q.add_pus_tc(PusTelecommand(service=200, subservice=1, app_data=mode_data))
if op_code in OpCodesDevs.GET_TM: if op_code in OpCodesDev.GET_TM:
q.add_log_cmd(f"RW {rw_idx}: {InfoDevs.GET_TM}") q.add_log_cmd(f"RW {rw_idx}: {InfoDev.GET_TM}")
q.add_pus_tc( q.add_pus_tc(
generate_one_hk_command( generate_one_hk_command(
sid=make_sid(object_id=object_id, set_id=RwSetIds.TM_SET) sid=make_sid(object_id=object_id, set_id=RwSetId.TM_SET)
) )
) )
if op_code in OpCodesDevs.GET_STATUS: if op_code in OpCodesDev.GET_STATUS:
q.add_log_cmd(f"RW {rw_idx}: {InfoDevs.GET_STATUS}") q.add_log_cmd(f"RW {rw_idx}: {InfoDev.GET_STATUS}")
q.add_pus_tc( q.add_pus_tc(
generate_one_diag_command( generate_one_diag_command(
sid=make_sid(object_id=object_id, set_id=RwSetIds.STATUS_SET_ID) sid=make_sid(object_id=object_id, set_id=RwSetId.STATUS_SET_ID)
) )
) )
if op_code in OpCodesDevs.ENABLE_STATUS_HK: if op_code in OpCodesDev.ENABLE_STATUS_HK:
q.add_log_cmd(f"RW {rw_idx}: {InfoDevs.ENABLE_STATUS_HK}") q.add_log_cmd(f"RW {rw_idx}: {InfoDev.ENABLE_STATUS_HK}")
interval = float(input("Please enter HK interval in floating point seconds: ")) interval = float(input("Please enter HK interval in floating point seconds: "))
cmds = enable_periodic_hk_command_with_interval( cmds = enable_periodic_hk_command_with_interval(
True, make_sid(object_id, RwSetIds.STATUS_SET_ID), interval True, make_sid(object_id, RwSetId.STATUS_SET_ID), interval
) )
for cmd in cmds: for cmd in cmds:
q.add_pus_tc(cmd) q.add_pus_tc(cmd)
if op_code in OpCodesDevs.DISABLE_STATUS_HK: if op_code in OpCodesDev.DISABLE_STATUS_HK:
q.add_log_cmd(f"RW {rw_idx}: {InfoDevs.DISABLE_STATUS_HK}") q.add_log_cmd(f"RW {rw_idx}: {InfoDev.DISABLE_STATUS_HK}")
q.add_pus_tc( q.add_pus_tc(
disable_periodic_hk_command( disable_periodic_hk_command(
True, make_sid(object_id, RwSetIds.STATUS_SET_ID) True, make_sid(object_id, RwSetId.STATUS_SET_ID)
) )
) )
@ -264,7 +264,7 @@ def pack_set_speed_command(
ramp_time_ms > 0 and (ramp_time_ms > 20000 or ramp_time_ms < 10) ramp_time_ms > 0 and (ramp_time_ms > 20000 or ramp_time_ms < 10)
): ):
raise ValueError("Invalid Ramp Speed time. Allowed range is [10-20000] ms") raise ValueError("Invalid Ramp Speed time. Allowed range is [10-20000] ms")
command_id = RwCommandIds.SET_SPEED command_id = RwCommandId.SET_SPEED
command = bytearray() command = bytearray()
command += object_id + command_id command += object_id + command_id
command = command + struct.pack("!i", speed) command = command + struct.pack("!i", speed)
@ -279,7 +279,7 @@ def handle_rw_hk_data(
pw = PrintWrapper(printer) pw = PrintWrapper(printer)
current_idx = 0 current_idx = 0
if set_id == RwSetIds.STATUS_SET_ID: if set_id == RwSetId.STATUS_SET_ID:
pw.dlog( pw.dlog(
f"Received Status HK (ID {set_id}) from Reaction Wheel {object_id.name}" f"Received Status HK (ID {set_id}) from Reaction Wheel {object_id.name}"
) )
@ -303,7 +303,7 @@ def handle_rw_hk_data(
f"1: High Current Mode (0.6 A)" f"1: High Current Mode (0.6 A)"
) )
printer.print_validity_buffer(hk_data[current_idx:], 5) printer.print_validity_buffer(hk_data[current_idx:], 5)
if set_id == RwSetIds.LAST_RESET: if set_id == RwSetId.LAST_RESET:
pw.dlog( pw.dlog(
f"Received Last Reset HK (ID {set_id}) from Reaction Wheel {object_id.name}" f"Received Last Reset HK (ID {set_id}) from Reaction Wheel {object_id.name}"
) )
@ -317,7 +317,7 @@ def handle_rw_hk_data(
f"Last Non-Cleared (Cached) Reset Status {last_not_cleared_reset_status} | " f"Last Non-Cleared (Cached) Reset Status {last_not_cleared_reset_status} | "
f"Current Reset Status {current_reset_status}" f"Current Reset Status {current_reset_status}"
) )
if set_id == RwSetIds.TM_SET: if set_id == RwSetId.TM_SET:
pw.dlog(f"Received TM HK (ID {set_id}) from Reaction Wheel {object_id.name}") pw.dlog(f"Received TM HK (ID {set_id}) from Reaction Wheel {object_id.name}")
fmt_str = "!BiffBBiiIIIIIIIIIIIIIIII" fmt_str = "!BiffBBiiIIIIIIIIIIIIIIII"
inc_len = struct.calcsize(fmt_str) inc_len = struct.calcsize(fmt_str)

View File

@ -1,6 +1,6 @@
from eive_tmtc.config.definitions import CustomServiceList from eive_tmtc.config.definitions import CustomServiceList
from eive_tmtc.config.object_ids import SUS_BOARD_ASS_ID from eive_tmtc.config.object_ids import SUS_BOARD_ASS_ID
from eive_tmtc.tmtc.acs.acs_board import DualSideSubmodes from eive_tmtc.tmtc.acs.acs_board import DualSideSubmode
from eive_tmtc.tmtc.common import pack_mode_cmd_with_info from eive_tmtc.tmtc.common import pack_mode_cmd_with_info
from tmtccmd.config.tmtc import ( from tmtccmd.config.tmtc import (
tmtc_definitions_provider, tmtc_definitions_provider,
@ -12,7 +12,7 @@ from tmtccmd.tc.decorator import ServiceProviderParams
from tmtccmd.tc.pus_200_fsfw_modes import Modes from tmtccmd.tc.pus_200_fsfw_modes import Modes
class SusOpCodes: class SusOpCode:
SUS_ASS_NOM_SIDE = ["0", "nom"] SUS_ASS_NOM_SIDE = ["0", "nom"]
SUS_ASS_RED_SIDE = ["1", "red"] SUS_ASS_RED_SIDE = ["1", "red"]
SUS_ASS_DUAL_MODE = ["2", "dual"] SUS_ASS_DUAL_MODE = ["2", "dual"]
@ -20,23 +20,23 @@ class SusOpCodes:
def pack_sus_cmds(q: DefaultPusQueueHelper, op_code: str): def pack_sus_cmds(q: DefaultPusQueueHelper, op_code: str):
if op_code in SusOpCodes.SUS_ASS_NOM_SIDE: if op_code in SusOpCode.SUS_ASS_NOM_SIDE:
pack_mode_cmd_with_info( pack_mode_cmd_with_info(
object_id=SUS_BOARD_ASS_ID, object_id=SUS_BOARD_ASS_ID,
mode=Modes.NORMAL, mode=Modes.NORMAL,
submode=DualSideSubmodes.A_SIDE, submode=DualSideSubmode.A_SIDE,
q=q, q=q,
info="Switching to SUS board to nominal side", info="Switching to SUS board to nominal side",
) )
if op_code in SusOpCodes.SUS_ASS_RED_SIDE: if op_code in SusOpCode.SUS_ASS_RED_SIDE:
pack_mode_cmd_with_info( pack_mode_cmd_with_info(
object_id=SUS_BOARD_ASS_ID, object_id=SUS_BOARD_ASS_ID,
mode=Modes.NORMAL, mode=Modes.NORMAL,
submode=DualSideSubmodes.B_SIDE, submode=DualSideSubmode.B_SIDE,
q=q, q=q,
info="Switching to SUS board to redundant side", info="Switching to SUS board to redundant side",
) )
if op_code in SusOpCodes.SUS_ASS_OFF: if op_code in SusOpCode.SUS_ASS_OFF:
pack_mode_cmd_with_info( pack_mode_cmd_with_info(
object_id=SUS_BOARD_ASS_ID, object_id=SUS_BOARD_ASS_ID,
mode=Modes.OFF, mode=Modes.OFF,
@ -44,11 +44,11 @@ def pack_sus_cmds(q: DefaultPusQueueHelper, op_code: str):
q=q, q=q,
info="Switching SUS board off", info="Switching SUS board off",
) )
if op_code in SusOpCodes.SUS_ASS_DUAL_MODE: if op_code in SusOpCode.SUS_ASS_DUAL_MODE:
pack_mode_cmd_with_info( pack_mode_cmd_with_info(
object_id=SUS_BOARD_ASS_ID, object_id=SUS_BOARD_ASS_ID,
mode=Modes.NORMAL, mode=Modes.NORMAL,
submode=DualSideSubmodes.DUAL_SIDE, submode=DualSideSubmode.DUAL_SIDE,
q=q, q=q,
info="Switching to SUS board to dual side", info="Switching to SUS board to dual side",
) )
@ -65,19 +65,19 @@ def pack_sus_cmds_prvoider(p: ServiceProviderParams):
def add_sus_board_cmds(defs: TmtcDefinitionWrapper): def add_sus_board_cmds(defs: TmtcDefinitionWrapper):
oce = OpCodeEntry() oce = OpCodeEntry()
oce.add( oce.add(
keys=SusOpCodes.SUS_ASS_NOM_SIDE, keys=SusOpCode.SUS_ASS_NOM_SIDE,
info="Switch SUS board to nominal side", info="Switch SUS board to nominal side",
) )
oce.add( oce.add(
keys=SusOpCodes.SUS_ASS_RED_SIDE, keys=SusOpCode.SUS_ASS_RED_SIDE,
info="Switch SUS board to redundant side", info="Switch SUS board to redundant side",
) )
oce.add( oce.add(
keys=SusOpCodes.SUS_ASS_OFF, keys=SusOpCode.SUS_ASS_OFF,
info="Switch off SUS board", info="Switch off SUS board",
) )
oce.add( oce.add(
keys=SusOpCodes.SUS_ASS_DUAL_MODE, keys=SusOpCode.SUS_ASS_DUAL_MODE,
info="Switch SUS board to dual mode", info="Switch SUS board to dual mode",
) )
defs.add_service( defs.add_service(

View File

@ -18,7 +18,7 @@ from tmtccmd.util.tmtc_printer import FsfwTmTcPrinter
LOGGER = get_console_logger() LOGGER = get_console_logger()
class ActionIds(enum.IntEnum): class ActionId(enum.IntEnum):
LIST_DIR_INTO_FILE = 0 LIST_DIR_INTO_FILE = 0
SWITCH_REBOOT_FILE_HANDLING = 5 SWITCH_REBOOT_FILE_HANDLING = 5
RESET_REBOOT_COUNTER = 6 RESET_REBOOT_COUNTER = 6
@ -34,11 +34,11 @@ class ActionIds(enum.IntEnum):
FULL_REBOOT = 34 FULL_REBOOT = 34
class SetIds(enum.IntEnum): class SetId(enum.IntEnum):
HK = 5 HK = 5
class OpCodes: class OpCode:
REBOOT_XSC = ["0", "reboot_xsc"] REBOOT_XSC = ["0", "reboot_xsc"]
XSC_REBOOT_SELF = ["1", "reboot_self"] XSC_REBOOT_SELF = ["1", "reboot_self"]
XSC_REBOOT_0_0 = ["2", "reboot_00"] XSC_REBOOT_0_0 = ["2", "reboot_00"]
@ -89,60 +89,60 @@ class Copy(enum.IntEnum):
@tmtc_definitions_provider @tmtc_definitions_provider
def add_core_controller_definitions(defs: TmtcDefinitionWrapper): def add_core_controller_definitions(defs: TmtcDefinitionWrapper):
oce = OpCodeEntry() oce = OpCodeEntry()
oce.add(keys=OpCodes.REBOOT_XSC, info=Info.REBOOT_XSC) oce.add(keys=OpCode.REBOOT_XSC, info=Info.REBOOT_XSC)
oce.add(keys=OpCodes.REBOOT_XSC, info=Info.REBOOT_XSC) oce.add(keys=OpCode.REBOOT_XSC, info=Info.REBOOT_XSC)
oce.add(keys=OpCodes.REBOOT_FULL, info=Info.REBOOT_FULL) oce.add(keys=OpCode.REBOOT_FULL, info=Info.REBOOT_FULL)
oce.add(keys=OpCodes.XSC_REBOOT_SELF, info="Reboot Self") oce.add(keys=OpCode.XSC_REBOOT_SELF, info="Reboot Self")
oce.add(keys=OpCodes.XSC_REBOOT_0_0, info="Reboot 0 0") oce.add(keys=OpCode.XSC_REBOOT_0_0, info="Reboot 0 0")
oce.add(keys=OpCodes.XSC_REBOOT_0_1, info="Reboot 0 1") oce.add(keys=OpCode.XSC_REBOOT_0_1, info="Reboot 0 1")
oce.add(keys=OpCodes.XSC_REBOOT_1_0, info="Reboot 1 0") oce.add(keys=OpCode.XSC_REBOOT_1_0, info="Reboot 1 0")
oce.add(keys=OpCodes.XSC_REBOOT_1_1, info="Reboot 1 1") oce.add(keys=OpCode.XSC_REBOOT_1_1, info="Reboot 1 1")
oce.add(keys=OpCodes.OBSW_UPDATE_FROM_TMP, info=Info.OBSW_UPDATE_FROM_TMP) oce.add(keys=OpCode.OBSW_UPDATE_FROM_TMP, info=Info.OBSW_UPDATE_FROM_TMP)
oce.add(keys=OpCodes.OBSW_UPDATE_FROM_SD_0, info=Info.OBSW_UPDATE_FROM_SD_0) oce.add(keys=OpCode.OBSW_UPDATE_FROM_SD_0, info=Info.OBSW_UPDATE_FROM_SD_0)
oce.add(keys=OpCodes.OBSW_UPDATE_FROM_SD_1, info=Info.OBSW_UPDATE_FROM_SD_1) oce.add(keys=OpCode.OBSW_UPDATE_FROM_SD_1, info=Info.OBSW_UPDATE_FROM_SD_1)
oce.add( oce.add(
keys=OpCodes.GET_HK, keys=OpCode.GET_HK,
info="Request housekeeping set", info="Request housekeeping set",
) )
oce.add( oce.add(
keys=OpCodes.ENABLE_REBOOT_FILE_HANDLING, keys=OpCode.ENABLE_REBOOT_FILE_HANDLING,
info="Enable reboot file handling", info="Enable reboot file handling",
) )
oce.add( oce.add(
keys=OpCodes.DISABLE_REBOOT_FILE_HANDLING, keys=OpCode.DISABLE_REBOOT_FILE_HANDLING,
info="Disable reboot file handling", info="Disable reboot file handling",
) )
oce.add( oce.add(
keys=OpCodes.RESET_ALL_REBOOT_COUNTERS, keys=OpCode.RESET_ALL_REBOOT_COUNTERS,
info="Reset all reboot counters", info="Reset all reboot counters",
) )
oce.add( oce.add(
keys=OpCodes.RESET_REBOOT_COUNTER_00, keys=OpCode.RESET_REBOOT_COUNTER_00,
info="Reset reboot counter 0 0", info="Reset reboot counter 0 0",
) )
oce.add( oce.add(
keys=OpCodes.RESET_REBOOT_COUNTER_01, keys=OpCode.RESET_REBOOT_COUNTER_01,
info="Reset reboot counter 0 1", info="Reset reboot counter 0 1",
) )
oce.add( oce.add(
keys=OpCodes.RESET_REBOOT_COUNTER_10, keys=OpCode.RESET_REBOOT_COUNTER_10,
info="Reset reboot counter 1 0", info="Reset reboot counter 1 0",
) )
oce.add( oce.add(
keys=OpCodes.RESET_REBOOT_COUNTER_11, keys=OpCode.RESET_REBOOT_COUNTER_11,
info="Reset reboot counter 1 1", info="Reset reboot counter 1 1",
) )
oce.add(keys=OpCodes.OBSW_UPDATE_FROM_SD_0, info=Info.OBSW_UPDATE_FROM_SD_0) oce.add(keys=OpCode.OBSW_UPDATE_FROM_SD_0, info=Info.OBSW_UPDATE_FROM_SD_0)
oce.add(keys=OpCodes.OBSW_UPDATE_FROM_SD_1, info=Info.OBSW_UPDATE_FROM_SD_1) oce.add(keys=OpCode.OBSW_UPDATE_FROM_SD_1, info=Info.OBSW_UPDATE_FROM_SD_1)
oce.add(keys=OpCodes.OBSW_UPDATE_FROM_TMP, info=Info.OBSW_UPDATE_FROM_TMP) oce.add(keys=OpCode.OBSW_UPDATE_FROM_TMP, info=Info.OBSW_UPDATE_FROM_TMP)
oce.add(keys=OpCodes.SWITCH_TO_SD_0, info=Info.SWITCH_TO_SD_0) oce.add(keys=OpCode.SWITCH_TO_SD_0, info=Info.SWITCH_TO_SD_0)
oce.add(keys=OpCodes.SWITCH_TO_SD_1, info=Info.SWITCH_TO_SD_1) oce.add(keys=OpCode.SWITCH_TO_SD_1, info=Info.SWITCH_TO_SD_1)
oce.add(keys=OpCodes.SWITCH_TO_BOTH_SD_CARDS, info=Info.SWITCH_TO_BOTH_SD_CARDS) oce.add(keys=OpCode.SWITCH_TO_BOTH_SD_CARDS, info=Info.SWITCH_TO_BOTH_SD_CARDS)
defs.add_service(CustomServiceList.CORE.value, "Core Controller", oce) defs.add_service(CustomServiceList.CORE.value, "Core Controller", oce)
def pack_core_commands(q: DefaultPusQueueHelper, op_code: str): def pack_core_commands(q: DefaultPusQueueHelper, op_code: str):
if op_code in OpCodes.REBOOT_XSC: if op_code in OpCode.REBOOT_XSC:
reboot_self, chip_select, copy_select = determine_reboot_params() reboot_self, chip_select, copy_select = determine_reboot_params()
add_xsc_reboot_cmd( add_xsc_reboot_cmd(
q=q, q=q,
@ -150,93 +150,93 @@ def pack_core_commands(q: DefaultPusQueueHelper, op_code: str):
chip=chip_select, chip=chip_select,
copy=copy_select, copy=copy_select,
) )
if op_code in OpCodes.REBOOT_FULL: if op_code in OpCode.REBOOT_FULL:
q.add_log_cmd(f"Core Command: {Info.REBOOT_FULL}") q.add_log_cmd(f"Core Command: {Info.REBOOT_FULL}")
q.add_pus_tc(create_full_reboot_cmds()) q.add_pus_tc(create_full_reboot_cmds())
if op_code in OpCodes.XSC_REBOOT_SELF: if op_code in OpCode.XSC_REBOOT_SELF:
add_xsc_reboot_cmd(q=q, reboot_self=True) add_xsc_reboot_cmd(q=q, reboot_self=True)
if op_code in OpCodes.XSC_REBOOT_0_0: if op_code in OpCode.XSC_REBOOT_0_0:
add_xsc_reboot_cmd( add_xsc_reboot_cmd(
q=q, reboot_self=False, chip=Chip.CHIP_0, copy=Copy.COPY_0_NOM q=q, reboot_self=False, chip=Chip.CHIP_0, copy=Copy.COPY_0_NOM
) )
if op_code in OpCodes.XSC_REBOOT_0_1: if op_code in OpCode.XSC_REBOOT_0_1:
add_xsc_reboot_cmd( add_xsc_reboot_cmd(
q=q, q=q,
reboot_self=False, reboot_self=False,
chip=Chip.CHIP_0, chip=Chip.CHIP_0,
copy=Copy.COPY_1_GOLD, copy=Copy.COPY_1_GOLD,
) )
if op_code in OpCodes.XSC_REBOOT_1_0: if op_code in OpCode.XSC_REBOOT_1_0:
add_xsc_reboot_cmd( add_xsc_reboot_cmd(
q=q, reboot_self=False, chip=Chip.CHIP_1, copy=Copy.COPY_0_NOM q=q, reboot_self=False, chip=Chip.CHIP_1, copy=Copy.COPY_0_NOM
) )
if op_code in OpCodes.XSC_REBOOT_1_1: if op_code in OpCode.XSC_REBOOT_1_1:
add_xsc_reboot_cmd( add_xsc_reboot_cmd(
q=q, q=q,
reboot_self=False, reboot_self=False,
chip=Chip.CHIP_1, chip=Chip.CHIP_1,
copy=Copy.COPY_1_GOLD, copy=Copy.COPY_1_GOLD,
) )
if op_code in OpCodes.DISABLE_REBOOT_FILE_HANDLING: if op_code in OpCode.DISABLE_REBOOT_FILE_HANDLING:
q.add_log_cmd("Disabling reboot file handling") q.add_log_cmd("Disabling reboot file handling")
user_data = bytearray([0]) user_data = bytearray([0])
q.add_pus_tc( q.add_pus_tc(
make_fsfw_action_cmd( make_fsfw_action_cmd(
object_id=CORE_CONTROLLER_ID, object_id=CORE_CONTROLLER_ID,
action_id=ActionIds.SWITCH_REBOOT_FILE_HANDLING, action_id=ActionId.SWITCH_REBOOT_FILE_HANDLING,
user_data=user_data, user_data=user_data,
) )
) )
if op_code in OpCodes.ENABLE_REBOOT_FILE_HANDLING: if op_code in OpCode.ENABLE_REBOOT_FILE_HANDLING:
q.add_log_cmd("Enabling reboot file handling") q.add_log_cmd("Enabling reboot file handling")
user_data = bytearray([1]) user_data = bytearray([1])
q.add_pus_tc( q.add_pus_tc(
make_fsfw_action_cmd( make_fsfw_action_cmd(
object_id=CORE_CONTROLLER_ID, object_id=CORE_CONTROLLER_ID,
action_id=ActionIds.SWITCH_REBOOT_FILE_HANDLING, action_id=ActionId.SWITCH_REBOOT_FILE_HANDLING,
user_data=user_data, user_data=user_data,
) )
) )
if op_code in OpCodes.RESET_ALL_REBOOT_COUNTERS: if op_code in OpCode.RESET_ALL_REBOOT_COUNTERS:
q.add_log_cmd("Resetting all reboot counters") q.add_log_cmd("Resetting all reboot counters")
q.add_pus_tc( q.add_pus_tc(
make_fsfw_action_cmd( make_fsfw_action_cmd(
object_id=CORE_CONTROLLER_ID, object_id=CORE_CONTROLLER_ID,
action_id=ActionIds.RESET_REBOOT_COUNTER, action_id=ActionId.RESET_REBOOT_COUNTER,
) )
) )
if op_code in OpCodes.RESET_REBOOT_COUNTER_00: if op_code in OpCode.RESET_REBOOT_COUNTER_00:
reset_specific_boot_counter(q, 0, 0) reset_specific_boot_counter(q, 0, 0)
if op_code in OpCodes.RESET_REBOOT_COUNTER_01: if op_code in OpCode.RESET_REBOOT_COUNTER_01:
reset_specific_boot_counter(q, 0, 1) reset_specific_boot_counter(q, 0, 1)
if op_code in OpCodes.RESET_REBOOT_COUNTER_10: if op_code in OpCode.RESET_REBOOT_COUNTER_10:
reset_specific_boot_counter(q, 1, 0) reset_specific_boot_counter(q, 1, 0)
if op_code in OpCodes.RESET_REBOOT_COUNTER_11: if op_code in OpCode.RESET_REBOOT_COUNTER_11:
reset_specific_boot_counter(q, 1, 1) reset_specific_boot_counter(q, 1, 1)
if op_code in OpCodes.OBSW_UPDATE_FROM_SD_0: if op_code in OpCode.OBSW_UPDATE_FROM_SD_0:
q.add_log_cmd(Info.OBSW_UPDATE_FROM_SD_0) q.add_log_cmd(Info.OBSW_UPDATE_FROM_SD_0)
q.add_pus_tc(pack_obsw_update_cmd(ActionIds.UPDATE_OBSW_FROM_SD_0)) q.add_pus_tc(pack_obsw_update_cmd(ActionId.UPDATE_OBSW_FROM_SD_0))
if op_code in OpCodes.OBSW_UPDATE_FROM_SD_1: if op_code in OpCode.OBSW_UPDATE_FROM_SD_1:
q.add_log_cmd(Info.OBSW_UPDATE_FROM_SD_1) q.add_log_cmd(Info.OBSW_UPDATE_FROM_SD_1)
q.add_pus_tc(pack_obsw_update_cmd(ActionIds.UPDATE_OBSW_FROM_SD_1)) q.add_pus_tc(pack_obsw_update_cmd(ActionId.UPDATE_OBSW_FROM_SD_1))
if op_code in OpCodes.OBSW_UPDATE_FROM_TMP: if op_code in OpCode.OBSW_UPDATE_FROM_TMP:
q.add_log_cmd(Info.OBSW_UPDATE_FROM_TMP) q.add_log_cmd(Info.OBSW_UPDATE_FROM_TMP)
q.add_pus_tc(pack_obsw_update_cmd(ActionIds.UPDATE_OBSW_FROM_TMP)) q.add_pus_tc(pack_obsw_update_cmd(ActionId.UPDATE_OBSW_FROM_TMP))
if op_code in OpCodes.SWITCH_TO_SD_0: if op_code in OpCode.SWITCH_TO_SD_0:
q.add_log_cmd(Info.SWITCH_TO_SD_0) q.add_log_cmd(Info.SWITCH_TO_SD_0)
q.add_pus_tc( q.add_pus_tc(
make_fsfw_action_cmd( make_fsfw_action_cmd(
object_id=CORE_CONTROLLER_ID, action_id=ActionIds.SWITCH_TO_SD_0 object_id=CORE_CONTROLLER_ID, action_id=ActionId.SWITCH_TO_SD_0
) )
) )
if op_code in OpCodes.SWITCH_TO_SD_1: if op_code in OpCode.SWITCH_TO_SD_1:
q.add_log_cmd(Info.SWITCH_TO_SD_1) q.add_log_cmd(Info.SWITCH_TO_SD_1)
q.add_pus_tc( q.add_pus_tc(
make_fsfw_action_cmd( make_fsfw_action_cmd(
object_id=CORE_CONTROLLER_ID, action_id=ActionIds.SWITCH_TO_SD_1 object_id=CORE_CONTROLLER_ID, action_id=ActionId.SWITCH_TO_SD_1
) )
) )
if op_code in OpCodes.SWITCH_TO_BOTH_SD_CARDS: if op_code in OpCode.SWITCH_TO_BOTH_SD_CARDS:
while True: while True:
active_sd_card = int(input("Please specify active SD cqrd [0/1]: ")) active_sd_card = int(input("Please specify active SD cqrd [0/1]: "))
if active_sd_card not in [0, 1]: if active_sd_card not in [0, 1]:
@ -246,13 +246,13 @@ def pack_core_commands(q: DefaultPusQueueHelper, op_code: str):
q.add_pus_tc( q.add_pus_tc(
make_fsfw_action_cmd( make_fsfw_action_cmd(
object_id=CORE_CONTROLLER_ID, object_id=CORE_CONTROLLER_ID,
action_id=ActionIds.SWITCH_TO_BOTH_SD_CARDS, action_id=ActionId.SWITCH_TO_BOTH_SD_CARDS,
user_data=bytes([active_sd_card]), user_data=bytes([active_sd_card]),
) )
) )
if op_code in OpCodes.GET_HK: if op_code in OpCode.GET_HK:
q.add_log_cmd("Requesting housekeeping set") q.add_log_cmd("Requesting housekeeping set")
sid = make_sid(object_id=CORE_CONTROLLER_ID, set_id=SetIds.HK) sid = make_sid(object_id=CORE_CONTROLLER_ID, set_id=SetId.HK)
q.add_pus_tc(generate_one_hk_command(sid)) q.add_pus_tc(generate_one_hk_command(sid))
@ -261,7 +261,7 @@ def reset_specific_boot_counter(q: DefaultPusQueueHelper, chip: int, copy: int):
q.add_pus_tc( q.add_pus_tc(
make_fsfw_action_cmd( make_fsfw_action_cmd(
object_id=CORE_CONTROLLER_ID, object_id=CORE_CONTROLLER_ID,
action_id=ActionIds.RESET_REBOOT_COUNTER, action_id=ActionId.RESET_REBOOT_COUNTER,
user_data=bytes([chip, copy]), user_data=bytes([chip, copy]),
) )
) )
@ -269,7 +269,7 @@ def reset_specific_boot_counter(q: DefaultPusQueueHelper, chip: int, copy: int):
def create_full_reboot_cmds() -> PusTelecommand: def create_full_reboot_cmds() -> PusTelecommand:
return make_fsfw_action_cmd( return make_fsfw_action_cmd(
object_id=CORE_CONTROLLER_ID, action_id=ActionIds.FULL_REBOOT object_id=CORE_CONTROLLER_ID, action_id=ActionId.FULL_REBOOT
) )
@ -342,12 +342,12 @@ def create_xsc_reboot_cmds(
tc_data.append(chip) tc_data.append(chip)
tc_data.append(copy) tc_data.append(copy)
return make_fsfw_action_cmd( return make_fsfw_action_cmd(
object_id=CORE_CONTROLLER_ID, action_id=ActionIds.XSC_REBOOT, user_data=tc_data object_id=CORE_CONTROLLER_ID, action_id=ActionId.XSC_REBOOT, user_data=tc_data
) )
def handle_core_hk_data(printer: FsfwTmTcPrinter, set_id: int, hk_data: bytes): def handle_core_hk_data(printer: FsfwTmTcPrinter, set_id: int, hk_data: bytes):
if set_id == SetIds.HK: if set_id == SetId.HK:
pw = PrintWrapper(printer) pw = PrintWrapper(printer)
fmt_str = "!fff" fmt_str = "!fff"
inc_len = struct.calcsize(fmt_str) inc_len = struct.calcsize(fmt_str)

View File

@ -12,12 +12,12 @@ from tmtccmd.tc.decorator import ServiceProviderParams
from tmtccmd.tc.pus_200_fsfw_modes import Subservices as ModeSubservices from tmtccmd.tc.pus_200_fsfw_modes import Subservices as ModeSubservices
class OpCodes(str, enum.Enum): class OpCode(str, enum.Enum):
OFF = "off" OFF = "off"
REPORT_ALL_MODES = "report_modes" REPORT_ALL_MODES = "report_modes"
class PayloadModes(enum.IntEnum): class PayloadMode(enum.IntEnum):
OFF = 0 OFF = 0
@ -27,7 +27,7 @@ class Info(str, enum.Enum):
HANDLER_LIST: Dict[str, Tuple[int, str]] = { HANDLER_LIST: Dict[str, Tuple[int, str]] = {
OpCodes.OFF: (PayloadModes.OFF, Info.OFF), OpCode.OFF: (PayloadMode.OFF, Info.OFF),
} }
@ -36,7 +36,7 @@ def build_acs_subsystem_cmd(p: ServiceProviderParams):
op_code = p.op_code op_code = p.op_code
q = p.queue_helper q = p.queue_helper
info_prefix = "ACS Subsystem" info_prefix = "ACS Subsystem"
if op_code in OpCodes.REPORT_ALL_MODES: if op_code in OpCode.REPORT_ALL_MODES:
q.add_log_cmd(f"{info_prefix}: {Info.REPORT_ALL_MODES}") q.add_log_cmd(f"{info_prefix}: {Info.REPORT_ALL_MODES}")
q.add_pus_tc( q.add_pus_tc(
PusTelecommand( PusTelecommand(
@ -60,6 +60,6 @@ def build_acs_subsystem_cmd(p: ServiceProviderParams):
@tmtc_definitions_provider @tmtc_definitions_provider
def add_payload_subsystem_cmds(defs: TmtcDefinitionWrapper): def add_payload_subsystem_cmds(defs: TmtcDefinitionWrapper):
oce = OpCodeEntry() oce = OpCodeEntry()
oce.add(OpCodes.OFF, Info.OFF) oce.add(OpCode.OFF, Info.OFF)
oce.add(OpCodes.REPORT_ALL_MODES, Info.REPORT_ALL_MODES) oce.add(OpCode.REPORT_ALL_MODES, Info.REPORT_ALL_MODES)
defs.add_service(CustomServiceList.PL_SS, "Payload Subsystem", oce) defs.add_service(CustomServiceList.PL_SS, "Payload Subsystem", oce)

View File

@ -16,7 +16,7 @@ from tmtccmd.tc import DefaultPusQueueHelper
from tmtccmd.util import ObjectIdU32 from tmtccmd.util import ObjectIdU32
class ActionIds: class ActionId:
DUMP_MRAM = 1 DUMP_MRAM = 1
@ -43,7 +43,7 @@ def pack_ploc_memory_dumper_cmd(
def pack_mram_dump_cmd(object_id: bytes) -> bytearray: def pack_mram_dump_cmd(object_id: bytes) -> bytearray:
start = int(input("Start address: 0x"), 16) start = int(input("Start address: 0x"), 16)
end = int(input("End address: 0x"), 16) end = int(input("End address: 0x"), 16)
command = object_id + struct.pack("!I", ActionIds.DUMP_MRAM) command = object_id + struct.pack("!I", ActionId.DUMP_MRAM)
command = command + struct.pack("!I", start) command = command + struct.pack("!I", start)
command = command + struct.pack("!I", end) command = command + struct.pack("!I", end)
return bytearray(command) return bytearray(command)

View File

@ -50,7 +50,7 @@ SEQ_FILE_DICT = {
CARRIAGE_RETURN = 0xD CARRIAGE_RETURN = 0xD
class CommandIds(enum.IntEnum): class CommandId(enum.IntEnum):
TC_MEM_WRITE = 1 TC_MEM_WRITE = 1
TC_MEM_READ = 2 TC_MEM_READ = 2
FLASH_WRITE = 9 FLASH_WRITE = 9
@ -68,7 +68,7 @@ class CommandIds(enum.IntEnum):
RELEASE_UART_TX = 21 RELEASE_UART_TX = 21
class OpCodes: class OpCode:
ON = ["on"] ON = ["on"]
OFF = ["off"] OFF = ["off"]
NORMAL = ["normal"] NORMAL = ["normal"]
@ -104,22 +104,22 @@ class PlocReplyIds(enum.IntEnum):
@tmtc_definitions_provider @tmtc_definitions_provider
def add_ploc_mpsoc_cmds(defs: TmtcDefinitionWrapper): def add_ploc_mpsoc_cmds(defs: TmtcDefinitionWrapper):
oce = OpCodeEntry() oce = OpCodeEntry()
oce.add(OpCodes.OFF, Info.OFF) oce.add(OpCode.OFF, Info.OFF)
oce.add(OpCodes.ON, Info.ON) oce.add(OpCode.ON, Info.ON)
oce.add(OpCodes.NORMAL, Info.NORMAL) oce.add(OpCode.NORMAL, Info.NORMAL)
oce.add("3", "Ploc MPSoC: Memory write") oce.add("3", "Ploc MPSoC: Memory write")
oce.add("4", "Ploc MPSoC: Memory read") oce.add("4", "Ploc MPSoC: Memory read")
oce.add("5", "Ploc MPSoC: Flash write") oce.add("5", "Ploc MPSoC: Flash write")
oce.add("6", "Ploc MPSoC: Flash delete") oce.add("6", "Ploc MPSoC: Flash delete")
oce.add(OpCodes.REPLAY_START, Info.REPLAY_START) oce.add(OpCode.REPLAY_START, Info.REPLAY_START)
oce.add("8", "Ploc MPSoC: Replay stop") oce.add("8", "Ploc MPSoC: Replay stop")
oce.add(OpCodes.DOWNLINK_PWR_ON, Info.DOWNLINK_PWR_ON) oce.add(OpCode.DOWNLINK_PWR_ON, Info.DOWNLINK_PWR_ON)
oce.add("10", "Ploc MPSoC: Downlink pwr off") oce.add("10", "Ploc MPSoC: Downlink pwr off")
oce.add(OpCodes.REPLAY_WRITE_SEQ, Info.REPLAY_WRITE_SEQ) oce.add(OpCode.REPLAY_WRITE_SEQ, Info.REPLAY_WRITE_SEQ)
oce.add("12", "Ploc MPSoC: OBSW reset sequence count") oce.add("12", "Ploc MPSoC: OBSW reset sequence count")
oce.add(OpCodes.VERIFY_BOOT, "Ploc MPSoC: Read DEADBEEF address") oce.add(OpCode.VERIFY_BOOT, "Ploc MPSoC: Read DEADBEEF address")
oce.add(OpCodes.MODE_REPLAY, Info.MODE_REPLAY) oce.add(OpCode.MODE_REPLAY, Info.MODE_REPLAY)
oce.add(OpCodes.MODE_IDLE, Info.MODE_IDLE) oce.add(OpCode.MODE_IDLE, Info.MODE_IDLE)
oce.add("16", "Ploc MPSoC: Tc cam command send") oce.add("16", "Ploc MPSoC: Tc cam command send")
oce.add("17", "Ploc MPSoC: Set UART TX tristate") oce.add("17", "Ploc MPSoC: Set UART TX tristate")
oce.add("18", "Ploc MPSoC: Relesase UART TX") oce.add("18", "Ploc MPSoC: Relesase UART TX")
@ -136,15 +136,15 @@ def pack_ploc_mpsoc_commands(p: ServiceProviderParams):
f"Generate command for PLOC MPSoC with object id: {object_id.as_hex_string}" f"Generate command for PLOC MPSoC with object id: {object_id.as_hex_string}"
) )
obyt = object_id.as_bytes obyt = object_id.as_bytes
if op_code in OpCodes.OFF: if op_code in OpCode.OFF:
q.add_log_cmd(f"{prefix}: {Info.OFF}") q.add_log_cmd(f"{prefix}: {Info.OFF}")
command = pack_mode_data(obyt, Modes.OFF, 0) command = pack_mode_data(obyt, Modes.OFF, 0)
q.add_pus_tc(PusTelecommand(service=200, subservice=1, app_data=command)) q.add_pus_tc(PusTelecommand(service=200, subservice=1, app_data=command))
if op_code in OpCodes.ON: if op_code in OpCode.ON:
q.add_log_cmd(f"{prefix}: {Info.ON}") q.add_log_cmd(f"{prefix}: {Info.ON}")
data = pack_mode_data(obyt, Modes.ON, 0) data = pack_mode_data(obyt, Modes.ON, 0)
q.add_pus_tc(PusTelecommand(service=200, subservice=1, app_data=data)) q.add_pus_tc(PusTelecommand(service=200, subservice=1, app_data=data))
if op_code in OpCodes.NORMAL: if op_code in OpCode.NORMAL:
q.add_log_cmd(f"{prefix}: {Info.NORMAL}") q.add_log_cmd(f"{prefix}: {Info.NORMAL}")
data = pack_mode_data(object_id.as_bytes, Modes.NORMAL, 0) data = pack_mode_data(object_id.as_bytes, Modes.NORMAL, 0)
q.add_pus_tc(PusTelecommand(service=200, subservice=1, app_data=data)) q.add_pus_tc(PusTelecommand(service=200, subservice=1, app_data=data))
@ -172,64 +172,64 @@ def pack_ploc_mpsoc_commands(p: ServiceProviderParams):
q.add_log_cmd("PLOC MPSoC: Flash delete") q.add_log_cmd("PLOC MPSoC: Flash delete")
data = prepare_flash_delete_cmd(object_id.as_bytes) data = prepare_flash_delete_cmd(object_id.as_bytes)
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data))
if op_code in OpCodes.REPLAY_START: if op_code in OpCode.REPLAY_START:
q.add_log_cmd(f"{prefix}: {Info.REPLAY_START}") q.add_log_cmd(f"{prefix}: {Info.REPLAY_START}")
data = prepare_replay_start_cmd(object_id.as_bytes) data = prepare_replay_start_cmd(object_id.as_bytes)
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data))
if op_code == "8": if op_code == "8":
q.add_log_cmd("PLOC MPSoC: Replay stop") q.add_log_cmd("PLOC MPSoC: Replay stop")
data = object_id.as_bytes + struct.pack("!I", CommandIds.TC_REPLAY_STOP) data = object_id.as_bytes + struct.pack("!I", CommandId.TC_REPLAY_STOP)
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data))
if op_code in OpCodes.DOWNLINK_PWR_ON: if op_code in OpCode.DOWNLINK_PWR_ON:
q.add_log_cmd(f"{prefix}: {OpCodes.DOWNLINK_PWR_ON}") q.add_log_cmd(f"{prefix}: {OpCode.DOWNLINK_PWR_ON}")
data = prepare_downlink_pwr_on_cmd(object_id.as_bytes) data = prepare_downlink_pwr_on_cmd(object_id.as_bytes)
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data))
if op_code == "10": if op_code == "10":
q.add_log_cmd("PLOC MPSoC: Downlink pwr off") q.add_log_cmd("PLOC MPSoC: Downlink pwr off")
data = object_id.as_bytes + struct.pack("!I", CommandIds.TC_DOWNLINK_PWR_OFF) data = object_id.as_bytes + struct.pack("!I", CommandId.TC_DOWNLINK_PWR_OFF)
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data))
if op_code in OpCodes.REPLAY_WRITE_SEQ: if op_code in OpCode.REPLAY_WRITE_SEQ:
q.add_log_cmd(f"{prefix}: {Info.REPLAY_WRITE_SEQ}") q.add_log_cmd(f"{prefix}: {Info.REPLAY_WRITE_SEQ}")
data = prepare_replay_write_sequence_cmd(object_id.as_bytes) data = prepare_replay_write_sequence_cmd(object_id.as_bytes)
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data))
if op_code == "12": if op_code == "12":
q.add_log_cmd("PLOC MPSoC: Reset OBSW sequence count") q.add_log_cmd("PLOC MPSoC: Reset OBSW sequence count")
data = object_id.as_bytes + struct.pack("!I", CommandIds.OBSW_RESET_SEQ_COUNT) data = object_id.as_bytes + struct.pack("!I", CommandId.OBSW_RESET_SEQ_COUNT)
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data))
if op_code in OpCodes.VERIFY_BOOT: if op_code in OpCode.VERIFY_BOOT:
num_words = 1 num_words = 1
q.add_log_cmd(f"{prefix} {Info.VERIFY_BOOT}") q.add_log_cmd(f"{prefix} {Info.VERIFY_BOOT}")
data = ( data = (
object_id.as_bytes object_id.as_bytes
+ struct.pack("!I", CommandIds.TC_MEM_READ) + struct.pack("!I", CommandId.TC_MEM_READ)
+ struct.pack("!I", MemAddresses.DEADBEEF) + struct.pack("!I", MemAddresses.DEADBEEF)
+ struct.pack("!H", num_words) + struct.pack("!H", num_words)
) )
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data))
if op_code in OpCodes.MODE_REPLAY: if op_code in OpCode.MODE_REPLAY:
q.add_log_cmd("PLOC MPSoC: Tc mode replay") q.add_log_cmd("PLOC MPSoC: Tc mode replay")
data = object_id.as_bytes + struct.pack("!I", CommandIds.TC_MODE_REPLAY) data = object_id.as_bytes + struct.pack("!I", CommandId.TC_MODE_REPLAY)
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data))
if op_code in OpCodes.MODE_IDLE: if op_code in OpCode.MODE_IDLE:
q.add_log_cmd("PLOC MPSoC: Tc mode idle") q.add_log_cmd("PLOC MPSoC: Tc mode idle")
data = object_id.as_bytes + struct.pack("!I", CommandIds.TC_MODE_IDLE) data = object_id.as_bytes + struct.pack("!I", CommandId.TC_MODE_IDLE)
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data))
if op_code == "16": if op_code == "16":
q.add_log_cmd("PLOC MPSoC: Tc cam command send") q.add_log_cmd("PLOC MPSoC: Tc cam command send")
cam_cmd = input("Specify cam command string: ") cam_cmd = input("Specify cam command string: ")
data = ( data = (
object_id.as_bytes object_id.as_bytes
+ struct.pack("!I", CommandIds.TC_CAM_CMD_SEND) + struct.pack("!I", CommandId.TC_CAM_CMD_SEND)
+ bytearray(cam_cmd, "utf-8") + bytearray(cam_cmd, "utf-8")
) )
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data))
if op_code == "17": if op_code == "17":
q.add_log_cmd("PLOC MPSoC: Set UART TX tristate") q.add_log_cmd("PLOC MPSoC: Set UART TX tristate")
data = object_id.as_bytes + struct.pack("!I", CommandIds.SET_UART_TX_TRISTATE) data = object_id.as_bytes + struct.pack("!I", CommandId.SET_UART_TX_TRISTATE)
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data))
if op_code == "18": if op_code == "18":
q.add_log_cmd("PLOC MPSoC: Release UART TX") q.add_log_cmd("PLOC MPSoC: Release UART TX")
data = object_id.as_bytes + struct.pack("!I", CommandIds.RELEASE_UART_TX) data = object_id.as_bytes + struct.pack("!I", CommandId.RELEASE_UART_TX)
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data))
@ -246,7 +246,7 @@ def generate_write_mem_command(
""" """
command = ( command = (
object_id object_id
+ struct.pack("!I", CommandIds.TC_MEM_WRITE) + struct.pack("!I", CommandId.TC_MEM_WRITE)
+ struct.pack("!I", memory_address) + struct.pack("!I", memory_address)
+ struct.pack("!H", mem_len) + struct.pack("!H", mem_len)
+ struct.pack("!I", memory_data) + struct.pack("!I", memory_data)
@ -259,7 +259,7 @@ def prepare_mem_read_command(object_id: bytes) -> bytearray:
num_words = int(input("PLOC MPSoC specify number of words (32-bit) to read: ")) num_words = int(input("PLOC MPSoC specify number of words (32-bit) to read: "))
command = ( command = (
object_id object_id
+ struct.pack("!I", CommandIds.TC_MEM_READ) + struct.pack("!I", CommandId.TC_MEM_READ)
+ struct.pack("!I", memory_address) + struct.pack("!I", memory_address)
+ struct.pack("!H", num_words) + struct.pack("!H", num_words)
) )
@ -271,7 +271,7 @@ def prepare_flash_write_cmd(object_id: bytes) -> bytearray:
mpsocFile = get_mpsoc_file() mpsocFile = get_mpsoc_file()
command = ( command = (
object_id object_id
+ struct.pack("!I", CommandIds.FLASH_WRITE) + struct.pack("!I", CommandId.FLASH_WRITE)
+ bytearray(obcFile, "utf-8") + bytearray(obcFile, "utf-8")
+ bytearray(mpsocFile, "utf-8") + bytearray(mpsocFile, "utf-8")
) )
@ -282,7 +282,7 @@ def prepare_flash_delete_cmd(object_id: bytes) -> bytearray:
file = get_mpsoc_file() file = get_mpsoc_file()
command = ( command = (
object_id object_id
+ struct.pack("!I", CommandIds.TC_FLASH_DELETE) + struct.pack("!I", CommandId.TC_FLASH_DELETE)
+ bytearray(file, "utf-8") + bytearray(file, "utf-8")
) )
return bytearray(command) return bytearray(command)
@ -292,7 +292,7 @@ def prepare_replay_start_cmd(object_id: bytes) -> bytearray:
replay = int(input("Specify replay mode (0 - once, 1 - repeated): ")) replay = int(input("Specify replay mode (0 - once, 1 - repeated): "))
command = ( command = (
object_id object_id
+ struct.pack("!I", CommandIds.TC_REPLAY_START) + struct.pack("!I", CommandId.TC_REPLAY_START)
+ struct.pack("!B", replay) + struct.pack("!B", replay)
) )
return bytearray(command) return bytearray(command)
@ -303,7 +303,7 @@ def prepare_downlink_pwr_on_cmd(object_id: bytes) -> bytearray:
lane_rate = int(input("Specify lane rate (0 - 9): ")) lane_rate = int(input("Specify lane rate (0 - 9): "))
command = ( command = (
object_id object_id
+ struct.pack("!I", CommandIds.TC_DOWNLINK_PWR_ON) + struct.pack("!I", CommandId.TC_DOWNLINK_PWR_ON)
+ struct.pack("!B", mode) + struct.pack("!B", mode)
+ struct.pack("!B", lane_rate) + struct.pack("!B", lane_rate)
) )
@ -315,7 +315,7 @@ def prepare_replay_write_sequence_cmd(object_id: bytes) -> bytearray:
file = get_sequence_file() file = get_sequence_file()
command = ( command = (
object_id object_id
+ struct.pack("!I", CommandIds.TC_REPLAY_WRITE_SEQUENCE) + struct.pack("!I", CommandId.TC_REPLAY_WRITE_SEQUENCE)
+ struct.pack("!B", use_decoding) + struct.pack("!B", use_decoding)
+ bytearray(file, "utf-8") + bytearray(file, "utf-8")
# + bytes([0]) # + bytes([0])

View File

@ -83,7 +83,7 @@ FACTORY_RESET_OPS = {
} }
class SupvActionIds: class SupvActionId:
HK_REPORT = 1 HK_REPORT = 1
START_MPSOC = 3 START_MPSOC = 3
SHUTWOWN_MPSOC = 4 SHUTWOWN_MPSOC = 4
@ -244,7 +244,7 @@ def pack_ploc_supv_commands(p: ServiceProviderParams):
q.add_pus_tc(PusTelecommand(service=200, subservice=1, app_data=command)) q.add_pus_tc(PusTelecommand(service=200, subservice=1, app_data=command))
if op_code in OpCodes.HK_TO_OBC: if op_code in OpCodes.HK_TO_OBC:
q.add_log_cmd(f"{prefix}: {Info.HK_TO_OBC}") q.add_log_cmd(f"{prefix}: {Info.HK_TO_OBC}")
command = obyt + struct.pack("!I", SupvActionIds.HK_REPORT) command = obyt + struct.pack("!I", SupvActionId.HK_REPORT)
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command))
if op_code in OpCodes.REQUEST_HK: if op_code in OpCodes.REQUEST_HK:
q.add_log_cmd(f"{prefix}: {Info.REQUEST_HK}") q.add_log_cmd(f"{prefix}: {Info.REQUEST_HK}")
@ -253,11 +253,11 @@ def pack_ploc_supv_commands(p: ServiceProviderParams):
q.add_pus_tc(cmd) q.add_pus_tc(cmd)
elif op_code in OpCodes.START_MPSOC: elif op_code in OpCodes.START_MPSOC:
q.add_log_cmd("PLOC Supervisor: Start MPSoC") q.add_log_cmd("PLOC Supervisor: Start MPSoC")
command = obyt + struct.pack("!I", SupvActionIds.START_MPSOC) command = obyt + struct.pack("!I", SupvActionId.START_MPSOC)
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command))
if op_code in OpCodes.SHUTDOWN_MPSOC: if op_code in OpCodes.SHUTDOWN_MPSOC:
q.add_log_cmd("PLOC Supervisor: Shutdown MPSoC") q.add_log_cmd("PLOC Supervisor: Shutdown MPSoC")
command = object_id.as_bytes + struct.pack("!I", SupvActionIds.SHUTWOWN_MPSOC) command = object_id.as_bytes + struct.pack("!I", SupvActionId.SHUTWOWN_MPSOC)
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command))
if op_code in OpCodes.SEL_NVM: if op_code in OpCodes.SEL_NVM:
q.add_log_cmd("PLOC Supervisor: Select MPSoC boot image") q.add_log_cmd("PLOC Supervisor: Select MPSoC boot image")
@ -281,7 +281,7 @@ def pack_ploc_supv_commands(p: ServiceProviderParams):
q.add_pus_tc( q.add_pus_tc(
make_fsfw_action_cmd( make_fsfw_action_cmd(
object_id=PLOC_SUPV_ID, object_id=PLOC_SUPV_ID,
action_id=SupvActionIds.FACTORY_RESET, action_id=SupvActionId.FACTORY_RESET,
user_data=bytes([key]), user_data=bytes([key]),
) )
) )
@ -290,35 +290,35 @@ def pack_ploc_supv_commands(p: ServiceProviderParams):
restart_tries = int(input("Specify maximum restart tries: ")) restart_tries = int(input("Specify maximum restart tries: "))
command = ( command = (
object_id.as_bytes object_id.as_bytes
+ struct.pack("!I", SupvActionIds.SET_MAX_RESTART_TRIES) + struct.pack("!I", SupvActionId.SET_MAX_RESTART_TRIES)
+ struct.pack("!B", restart_tries) + struct.pack("!B", restart_tries)
) )
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command))
if op_code == "9": if op_code == "9":
q.add_log_cmd("PLOC Supervisor: Reset MPSoC") q.add_log_cmd("PLOC Supervisor: Reset MPSoC")
command = object_id.as_bytes + struct.pack("!I", SupvActionIds.RESET_MPSOC) command = object_id.as_bytes + struct.pack("!I", SupvActionId.RESET_MPSOC)
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command))
if op_code in OpCodes.SET_TIME_REF: if op_code in OpCodes.SET_TIME_REF:
q.add_log_cmd("PLOC Supervisor: Set time reference") q.add_log_cmd("PLOC Supervisor: Set time reference")
command = object_id.as_bytes + struct.pack("!I", SupvActionIds.SET_TIME_REF) command = object_id.as_bytes + struct.pack("!I", SupvActionId.SET_TIME_REF)
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command))
if op_code == "11": if op_code == "11":
q.add_log_cmd("PLOC Supervisor: Set boot timeout") q.add_log_cmd("PLOC Supervisor: Set boot timeout")
boot_timeout = int(input("Specify boot timeout [ms]: ")) boot_timeout = int(input("Specify boot timeout [ms]: "))
command = ( command = (
object_id.as_bytes object_id.as_bytes
+ struct.pack("!I", SupvActionIds.SET_BOOT_TIMEOUT) + struct.pack("!I", SupvActionId.SET_BOOT_TIMEOUT)
+ struct.pack("!I", boot_timeout) + struct.pack("!I", boot_timeout)
) )
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command))
if op_code == "12": if op_code == "12":
q.add_log_cmd("PLOC Supervisor: Disable HK") q.add_log_cmd("PLOC Supervisor: Disable HK")
command = object_id.as_bytes + struct.pack("!I", SupvActionIds.DISABLE_HK) command = object_id.as_bytes + struct.pack("!I", SupvActionId.DISABLE_HK)
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command))
if op_code in OpCodes.REQ_BOOT_STATUS_REPORT: if op_code in OpCodes.REQ_BOOT_STATUS_REPORT:
q.add_log_cmd(f"{prefix}: {Info.REQ_BOOT_STATUS_REPORT}") q.add_log_cmd(f"{prefix}: {Info.REQ_BOOT_STATUS_REPORT}")
command = object_id.as_bytes + struct.pack( command = object_id.as_bytes + struct.pack(
"!I", SupvActionIds.GET_BOOT_STATUS_REPORT "!I", SupvActionId.GET_BOOT_STATUS_REPORT
) )
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command))
q.add_wait_seconds(2.0) q.add_wait_seconds(2.0)
@ -352,13 +352,13 @@ def pack_ploc_supv_commands(p: ServiceProviderParams):
if op_code == "26": if op_code == "26":
q.add_log_cmd("PLOC Supervisor: Request latchup status report") q.add_log_cmd("PLOC Supervisor: Request latchup status report")
command = object_id.as_bytes + struct.pack( command = object_id.as_bytes + struct.pack(
"!I", SupvActionIds.GET_LATCHUP_STATUS_REPORT "!I", SupvActionId.GET_LATCHUP_STATUS_REPORT
) )
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command))
if op_code == "27": if op_code == "27":
q.add_log_cmd("PLOC Supervisor: Copy ADC data to MRAM") q.add_log_cmd("PLOC Supervisor: Copy ADC data to MRAM")
command = object_id.as_bytes + struct.pack( command = object_id.as_bytes + struct.pack(
"!I", SupvActionIds.COPY_ADC_DATA_TO_MRAM "!I", SupvActionId.COPY_ADC_DATA_TO_MRAM
) )
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command))
if op_code == "30": if op_code == "30":
@ -380,7 +380,7 @@ def pack_ploc_supv_commands(p: ServiceProviderParams):
if op_code == "37": if op_code == "37":
q.add_log_cmd("PLOC Supervisor: Restart supervisor") q.add_log_cmd("PLOC Supervisor: Restart supervisor")
command = object_id.as_bytes + struct.pack( command = object_id.as_bytes + struct.pack(
"!I", SupvActionIds.RESTART_SUPERVISOR "!I", SupvActionId.RESTART_SUPERVISOR
) )
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command))
if op_code in OpCodes.START_UPDATE: if op_code in OpCodes.START_UPDATE:
@ -394,14 +394,12 @@ def pack_ploc_supv_commands(p: ServiceProviderParams):
if op_code == "43": if op_code == "43":
q.add_log_cmd("PLOC Supervisor: Terminate supervisor process") q.add_log_cmd("PLOC Supervisor: Terminate supervisor process")
command = object_id.as_bytes + struct.pack( command = object_id.as_bytes + struct.pack(
"!I", SupvActionIds.TERMINATE_SUPV_HELPER "!I", SupvActionId.TERMINATE_SUPV_HELPER
) )
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command))
if op_code == "44": if op_code == "44":
q.add_log_cmd("PLOC Supervisor: Start MPSoC quiet") q.add_log_cmd("PLOC Supervisor: Start MPSoC quiet")
command = object_id.as_bytes + struct.pack( command = object_id.as_bytes + struct.pack("!I", SupvActionId.START_MPSOC_QUIET)
"!I", SupvActionIds.START_MPSOC_QUIET
)
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command))
if op_code == "45": if op_code == "45":
q.add_log_cmd("PLOC Supervisor: Set shutdown timeout") q.add_log_cmd("PLOC Supervisor: Set shutdown timeout")
@ -409,15 +407,15 @@ def pack_ploc_supv_commands(p: ServiceProviderParams):
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command))
if op_code in OpCodes.FACTORY_FLASH: if op_code in OpCodes.FACTORY_FLASH:
q.add_log_cmd(f"{prefix}: {Info.FACTORY_FLASH}") q.add_log_cmd(f"{prefix}: {Info.FACTORY_FLASH}")
command = object_id.as_bytes + struct.pack("!I", SupvActionIds.FACTORY_FLASH) command = object_id.as_bytes + struct.pack("!I", SupvActionId.FACTORY_FLASH)
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command))
if op_code == "47": if op_code == "47":
q.add_log_cmd("PLOC Supervisor: Enable auto TM") q.add_log_cmd("PLOC Supervisor: Enable auto TM")
command = object_id.as_bytes + struct.pack("!I", SupvActionIds.ENABLE_AUTO_TM) command = object_id.as_bytes + struct.pack("!I", SupvActionId.ENABLE_AUTO_TM)
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command))
if op_code == "48": if op_code == "48":
q.add_log_cmd("PLOC Supervisor: Disable auto TM") q.add_log_cmd("PLOC Supervisor: Disable auto TM")
command = object_id.as_bytes + struct.pack("!I", SupvActionIds.DISABLE_AUTO_TM) command = object_id.as_bytes + struct.pack("!I", SupvActionId.DISABLE_AUTO_TM)
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command))
if op_code == "51": if op_code == "51":
q.add_log_cmd("PLOC Supervisor: Logging request event buffers") q.add_log_cmd("PLOC Supervisor: Logging request event buffers")
@ -426,7 +424,7 @@ def pack_ploc_supv_commands(p: ServiceProviderParams):
if op_code == "52": if op_code == "52":
q.add_log_cmd("PLOC Supervisor: Logging clear counters") q.add_log_cmd("PLOC Supervisor: Logging clear counters")
command = object_id.as_bytes + struct.pack( command = object_id.as_bytes + struct.pack(
"!I", SupvActionIds.LOGGING_CLEAR_COUNTERS "!I", SupvActionId.LOGGING_CLEAR_COUNTERS
) )
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command))
if op_code == "53": if op_code == "53":
@ -436,18 +434,18 @@ def pack_ploc_supv_commands(p: ServiceProviderParams):
if op_code == "54": if op_code == "54":
q.add_log_cmd("PLOC Supervisor: Logging request counters") q.add_log_cmd("PLOC Supervisor: Logging request counters")
command = object_id.as_bytes + struct.pack( command = object_id.as_bytes + struct.pack(
"!I", SupvActionIds.LOGGING_REQUEST_COUNTERS "!I", SupvActionId.LOGGING_REQUEST_COUNTERS
) )
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command))
if op_code == "55": if op_code == "55":
q.add_log_cmd("PLOC Supervisor: Request ADC report") q.add_log_cmd("PLOC Supervisor: Request ADC report")
command = object_id.as_bytes + struct.pack( command = object_id.as_bytes + struct.pack(
"!I", SupvActionIds.REQUEST_ADC_REPORT "!I", SupvActionId.REQUEST_ADC_REPORT
) )
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command))
if op_code == "56": if op_code == "56":
q.add_log_cmd("PLOC Supervisor: Reset PL") q.add_log_cmd("PLOC Supervisor: Reset PL")
command = object_id.as_bytes + struct.pack("!I", SupvActionIds.RESET_PL) command = object_id.as_bytes + struct.pack("!I", SupvActionId.RESET_PL)
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command))
if op_code == "57": if op_code == "57":
q.add_log_cmd("PLOC Supervisor: Enable NVMs") q.add_log_cmd("PLOC Supervisor: Enable NVMs")
@ -455,14 +453,14 @@ def pack_ploc_supv_commands(p: ServiceProviderParams):
nvm3 = int(input("Enable (1) or disable(0) NVM 3: ")) nvm3 = int(input("Enable (1) or disable(0) NVM 3: "))
command = ( command = (
object_id.as_bytes object_id.as_bytes
+ struct.pack("!I", SupvActionIds.ENABLE_NVMS) + struct.pack("!I", SupvActionId.ENABLE_NVMS)
+ struct.pack("B", nvm01) + struct.pack("B", nvm01)
+ struct.pack("B", nvm3) + struct.pack("B", nvm3)
) )
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command))
if op_code == "58": if op_code == "58":
q.add_log_cmd("PLOC Supervisor: Continue update") q.add_log_cmd("PLOC Supervisor: Continue update")
command = object_id.as_bytes + struct.pack("!I", SupvActionIds.CONTINUE_UPDATE) command = object_id.as_bytes + struct.pack("!I", SupvActionId.CONTINUE_UPDATE)
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command))
if op_code in OpCodes.MEM_CHECK: if op_code in OpCodes.MEM_CHECK:
custom_data = bytearray() custom_data = bytearray()
@ -478,7 +476,7 @@ def pack_ploc_supv_commands(p: ServiceProviderParams):
f"address {start_address}" f"address {start_address}"
) )
command = make_fsfw_action_cmd( command = make_fsfw_action_cmd(
object_id.as_bytes, SupvActionIds.MEM_CHECK, custom_data object_id.as_bytes, SupvActionId.MEM_CHECK, custom_data
) )
q.add_pus_tc(command) q.add_pus_tc(command)
@ -493,7 +491,7 @@ def pack_sel_boot_image_cmd(
@param bp1 Partition pin 1 @param bp1 Partition pin 1
@param bp2 Partition pin 2 @param bp2 Partition pin 2
""" """
command = object_id + struct.pack("!I", SupvActionIds.SEL_MPSOC_BOOT_IMAGE) command = object_id + struct.pack("!I", SupvActionId.SEL_MPSOC_BOOT_IMAGE)
command = command + struct.pack("!B", mem) command = command + struct.pack("!B", mem)
command = command + struct.pack("!B", bp0) command = command + struct.pack("!B", bp0)
command = command + struct.pack("!B", bp1) command = command + struct.pack("!B", bp1)
@ -511,7 +509,7 @@ def pack_update_available_cmd(object_id: bytes) -> bytearray:
image_size = 222 image_size = 222
image_crc = 0x0 image_crc = 0x0
number_of_packets = 150 number_of_packets = 150
command = object_id + struct.pack("!I", SupvActionIds.UPDATE_AVAILABLE) command = object_id + struct.pack("!I", SupvActionId.UPDATE_AVAILABLE)
command = command + struct.pack("!B", image_select) command = command + struct.pack("!B", image_select)
command = command + struct.pack("!B", image_partition) command = command + struct.pack("!B", image_partition)
command = command + struct.pack("!I", image_size) command = command + struct.pack("!I", image_size)
@ -529,9 +527,9 @@ def pack_lachtup_alert_cmd(object_id: bytes, state: bool) -> bytearray:
latchup_id = get_latchup_id() latchup_id = get_latchup_id()
command = bytearray() command = bytearray()
if state: if state:
command = object_id + struct.pack("!I", SupvActionIds.ENABLE_LATCHUP_ALERT) command = object_id + struct.pack("!I", SupvActionId.ENABLE_LATCHUP_ALERT)
else: else:
command = object_id + struct.pack("!I", SupvActionIds.DISABLE_LATCHUP_ALERT) command = object_id + struct.pack("!I", SupvActionId.DISABLE_LATCHUP_ALERT)
command = command + struct.pack("!B", latchup_id) command = command + struct.pack("!B", latchup_id)
return bytearray(command) return bytearray(command)
@ -560,7 +558,7 @@ def pack_set_alert_limit_cmd(object_id: bytes) -> bytearray:
latchup_id = get_latchup_id() latchup_id = get_latchup_id()
dutycycle = int(input("Specify dutycycle: ")) dutycycle = int(input("Specify dutycycle: "))
command = bytearray() command = bytearray()
command = object_id + struct.pack("!I", SupvActionIds.SET_ALERT_LIMIT) command = object_id + struct.pack("!I", SupvActionId.SET_ALERT_LIMIT)
command = command + struct.pack("!B", latchup_id) command = command + struct.pack("!B", latchup_id)
command = command + struct.pack("!I", dutycycle) command = command + struct.pack("!I", dutycycle)
return bytearray(command) return bytearray(command)
@ -572,7 +570,7 @@ def pack_set_adc_enabled_channels_cmd(object_id: bytes) -> bytearray:
@param object_id The object id of the PLOC supervisor handler. @param object_id The object id of the PLOC supervisor handler.
""" """
ch = int(input("Specify ch: 0x"), 16) ch = int(input("Specify ch: 0x"), 16)
cmd = object_id + struct.pack("!I", SupvActionIds.SET_ADC_ENABLED_CHANNELS) cmd = object_id + struct.pack("!I", SupvActionId.SET_ADC_ENABLED_CHANNELS)
cmd = cmd + struct.pack("!H", ch) cmd = cmd + struct.pack("!H", ch)
return bytearray(cmd) return bytearray(cmd)
@ -580,7 +578,7 @@ def pack_set_adc_enabled_channels_cmd(object_id: bytes) -> bytearray:
def pack_set_adc_window_and_stride_cmd(object_id: bytes) -> bytearray: def pack_set_adc_window_and_stride_cmd(object_id: bytes) -> bytearray:
window_size = int(input("Specify window size: ")) window_size = int(input("Specify window size: "))
striding_step_size = int(input("Specify striding step size: ")) striding_step_size = int(input("Specify striding step size: "))
command = object_id + struct.pack("!I", SupvActionIds.SET_ADC_WINDOW_AND_STRIDE) command = object_id + struct.pack("!I", SupvActionId.SET_ADC_WINDOW_AND_STRIDE)
command = command + struct.pack("!H", window_size) command = command + struct.pack("!H", window_size)
command = command + struct.pack("!H", striding_step_size) command = command + struct.pack("!H", striding_step_size)
return bytearray(command) return bytearray(command)
@ -588,21 +586,21 @@ def pack_set_adc_window_and_stride_cmd(object_id: bytes) -> bytearray:
def pack_set_adc_threshold_cmd(object_id: bytes) -> bytearray: def pack_set_adc_threshold_cmd(object_id: bytes) -> bytearray:
threshold = int(input("Specify threshold: ")) threshold = int(input("Specify threshold: "))
command = object_id + struct.pack("!I", SupvActionIds.SET_ADC_THRESHOLD) command = object_id + struct.pack("!I", SupvActionId.SET_ADC_THRESHOLD)
command = command + struct.pack("!I", threshold) command = command + struct.pack("!I", threshold)
return bytearray(command) return bytearray(command)
def pack_select_nvm_cmd(object_id: bytes) -> bytearray: def pack_select_nvm_cmd(object_id: bytes) -> bytearray:
mem = int(input("Specify NVM (0 - NVM0, 1 - MVM1): ")) mem = int(input("Specify NVM (0 - NVM0, 1 - MVM1): "))
command = object_id + struct.pack("!I", SupvActionIds.SELECT_NVM) command = object_id + struct.pack("!I", SupvActionId.SELECT_NVM)
command = command + struct.pack("!B", mem) command = command + struct.pack("!B", mem)
return bytearray(command) return bytearray(command)
def pack_auto_em_tests_cmd(object_id: bytes) -> bytearray: def pack_auto_em_tests_cmd(object_id: bytes) -> bytearray:
test = int(input("Specify test (1 - complete, 2 - short): ")) test = int(input("Specify test (1 - complete, 2 - short): "))
command = object_id + struct.pack("!I", SupvActionIds.RUN_AUTO_EM_TESTS) command = object_id + struct.pack("!I", SupvActionId.RUN_AUTO_EM_TESTS)
command = command + struct.pack("!B", test) command = command + struct.pack("!B", test)
return bytearray(command) return bytearray(command)
@ -610,7 +608,7 @@ def pack_auto_em_tests_cmd(object_id: bytes) -> bytearray:
def pack_mram_wipe_cmd(object_id: bytes) -> bytearray: def pack_mram_wipe_cmd(object_id: bytes) -> bytearray:
start = int(input("Start address: 0x"), 16) start = int(input("Start address: 0x"), 16)
stop = int(input("Stop address: 0x"), 16) stop = int(input("Stop address: 0x"), 16)
command = object_id + struct.pack("!I", SupvActionIds.WIPE_MRAM) command = object_id + struct.pack("!I", SupvActionId.WIPE_MRAM)
command = command + struct.pack("!I", start) command = command + struct.pack("!I", start)
command = command + struct.pack("!I", stop) command = command + struct.pack("!I", stop)
return bytearray(command) return bytearray(command)
@ -642,7 +640,7 @@ def pack_update_command(object_id: bytes, new_update: bool) -> bytearray:
else: else:
raise ValueError("Invalid input, use y or n") raise ValueError("Invalid input, use y or n")
command += object_id command += object_id
command += struct.pack("!I", SupvActionIds.PERFORM_UPDATE) command += struct.pack("!I", SupvActionId.PERFORM_UPDATE)
command += bytearray(update_file, "utf-8") command += bytearray(update_file, "utf-8")
# Adding null terminator # Adding null terminator
command += struct.pack("!B", 0) command += struct.pack("!B", 0)
@ -657,7 +655,7 @@ def pack_update_command(object_id: bytes, new_update: bool) -> bytearray:
def pack_set_shutdown_timeout_command(object_id: bytes) -> bytearray: def pack_set_shutdown_timeout_command(object_id: bytes) -> bytearray:
command = bytearray() command = bytearray()
command += object_id command += object_id
command += struct.pack("!I", SupvActionIds.SET_SHUTDOWN_TIMEOUT) command += struct.pack("!I", SupvActionId.SET_SHUTDOWN_TIMEOUT)
timeout = int(input("Specify shutdown timeout (ms): ")) timeout = int(input("Specify shutdown timeout (ms): "))
command += struct.pack("!I", timeout) command += struct.pack("!I", timeout)
return command return command
@ -666,7 +664,7 @@ def pack_set_shutdown_timeout_command(object_id: bytes) -> bytearray:
def pack_logging_buffer_request(object_id: bytes) -> bytearray: def pack_logging_buffer_request(object_id: bytes) -> bytearray:
command = bytearray() command = bytearray()
command += object_id command += object_id
command += struct.pack("!I", SupvActionIds.LOGGING_REQUEST_EVENT_BUFFERS) command += struct.pack("!I", SupvActionId.LOGGING_REQUEST_EVENT_BUFFERS)
path = get_event_buffer_path() path = get_event_buffer_path()
command += bytearray(path, "utf-8") command += bytearray(path, "utf-8")
return command return command
@ -676,7 +674,7 @@ def pack_set_gpio_cmd(object_id: bytes) -> bytearray:
port = int(input("Specify port: 0x"), 16) port = int(input("Specify port: 0x"), 16)
pin = int(input("Specify pin: 0x"), 16) pin = int(input("Specify pin: 0x"), 16)
val = int(input("Specify val: 0x"), 16) val = int(input("Specify val: 0x"), 16)
command = object_id + struct.pack("!I", SupvActionIds.SET_GPIO) command = object_id + struct.pack("!I", SupvActionId.SET_GPIO)
command = command + struct.pack("!B", port) command = command + struct.pack("!B", port)
command = command + struct.pack("!B", pin) command = command + struct.pack("!B", pin)
command = command + struct.pack("!B", val) command = command + struct.pack("!B", val)
@ -686,14 +684,14 @@ def pack_set_gpio_cmd(object_id: bytes) -> bytearray:
def pack_read_gpio_cmd(object_id: bytes) -> bytearray: def pack_read_gpio_cmd(object_id: bytes) -> bytearray:
port = int(input("Specify port: 0x"), 16) port = int(input("Specify port: 0x"), 16)
pin = int(input("Specify pin: 0x"), 16) pin = int(input("Specify pin: 0x"), 16)
command = object_id + struct.pack("!I", SupvActionIds.READ_GPIO) command = object_id + struct.pack("!I", SupvActionId.READ_GPIO)
command = command + struct.pack("!B", port) command = command + struct.pack("!B", port)
command = command + struct.pack("!B", pin) command = command + struct.pack("!B", pin)
return bytearray(command) return bytearray(command)
def pack_logging_set_topic(object_id: bytes) -> bytearray: def pack_logging_set_topic(object_id: bytes) -> bytearray:
command = object_id + struct.pack("!I", SupvActionIds.LOGGING_SET_TOPIC) command = object_id + struct.pack("!I", SupvActionId.LOGGING_SET_TOPIC)
tpc = int(input("Specify logging topic: ")) tpc = int(input("Specify logging topic: "))
command += struct.pack("!B", tpc) command += struct.pack("!B", tpc)
return bytearray(command) return bytearray(command)

View File

@ -42,7 +42,7 @@ class ACUHkTable:
wdt_gnd_left = gs.TableEntry(bytearray([0x00, 0x74]), gs.TableEntry.uint32_size) wdt_gnd_left = gs.TableEntry(bytearray([0x00, 0x74]), gs.TableEntry.uint32_size)
class OpCodes: class OpCode:
TEST = ["0", "test"] TEST = ["0", "test"]
@ -55,7 +55,7 @@ def add_acu_cmds(defs: TmtcDefinitionWrapper):
oce = OpCodeEntry() oce = OpCodeEntry()
add_gomspace_cmd_defs(oce) add_gomspace_cmd_defs(oce)
oce.add(keys=OpCodes.TEST, info=Info.TEST) oce.add(keys=OpCode.TEST, info=Info.TEST)
defs.add_service( defs.add_service(
name=CustomServiceList.ACU.value, name=CustomServiceList.ACU.value,
info="ACU Device", info="ACU Device",

View File

@ -4,7 +4,7 @@ from typing import List
from eive_tmtc.gomspace.gomspace_common import ( from eive_tmtc.gomspace.gomspace_common import (
pack_set_u8_param_command, pack_set_u8_param_command,
Channel, Channel,
GomspaceDeviceActionIds, GomspaceDeviceActionId,
prompt_and_pack_set_integer_param_command, prompt_and_pack_set_integer_param_command,
prompt_and_pack_get_param_command, prompt_and_pack_get_param_command,
pack_request_config_command, pack_request_config_command,
@ -27,7 +27,7 @@ from tmtccmd.tc.pus_8_funccmd import make_fsfw_action_cmd
from tmtccmd.util import ObjectIdU32, ObjectIdBase from tmtccmd.util import ObjectIdU32, ObjectIdBase
class GomspaceOpCodes: class GomspaceOpCode:
GET_PARAM = ["get_param"] GET_PARAM = ["get_param"]
SET_INTEGER_PARAM = ["set_int_param"] SET_INTEGER_PARAM = ["set_int_param"]
SAVE_TABLE = ["save_table"] SAVE_TABLE = ["save_table"]
@ -144,7 +144,7 @@ def pack_common_gomspace_cmds(
q.add_log_cmd(f"{prefix}: {PowerInfo.PRINT_SWITCH_V_I}") q.add_log_cmd(f"{prefix}: {PowerInfo.PRINT_SWITCH_V_I}")
q.add_pus_tc( q.add_pus_tc(
make_fsfw_action_cmd( make_fsfw_action_cmd(
object_id=objb, action_id=GomspaceDeviceActionIds.PRINT_SWITCH_V_I object_id=objb, action_id=GomspaceDeviceActionId.PRINT_SWITCH_V_I
) )
) )
if op_code in PowerOpCodes.REBOOT: if op_code in PowerOpCodes.REBOOT:
@ -154,23 +154,23 @@ def pack_common_gomspace_cmds(
q.add_log_cmd(f"{prefix}: {PowerInfo.PRINT_LATCHUPS}") q.add_log_cmd(f"{prefix}: {PowerInfo.PRINT_LATCHUPS}")
q.add_pus_tc( q.add_pus_tc(
make_fsfw_action_cmd( make_fsfw_action_cmd(
object_id=objb, action_id=GomspaceDeviceActionIds.PRINT_LATCHUPS object_id=objb, action_id=GomspaceDeviceActionId.PRINT_LATCHUPS
) )
) )
if op_code in GomspaceOpCodes.SET_INTEGER_PARAM: if op_code in GomspaceOpCode.SET_INTEGER_PARAM:
q.add_log_cmd(f"{prefix}: {GsInfo.SET_PARAMETER}") q.add_log_cmd(f"{prefix}: {GsInfo.SET_PARAMETER}")
print("Please specify the parameter type from index") print("Please specify the parameter type from index")
for idx, v in enumerate(ParamTypes): for idx, v in enumerate(ParamTypes):
print(f"{idx}: {v.name}") print(f"{idx}: {v.name}")
ptype = int(input("Index: ")) ptype = int(input("Index: "))
prompt_and_pack_set_integer_param_command(q, object_id, ParamTypes(ptype)) prompt_and_pack_set_integer_param_command(q, object_id, ParamTypes(ptype))
if op_code in GomspaceOpCodes.GET_PARAM: if op_code in GomspaceOpCode.GET_PARAM:
q.add_log_cmd(f"{prefix}: {GsInfo.GET_PARAMETER}") q.add_log_cmd(f"{prefix}: {GsInfo.GET_PARAMETER}")
prompt_and_pack_get_param_command(q, object_id) prompt_and_pack_get_param_command(q, object_id)
if op_code in GomspaceOpCodes.REQUEST_CONFIG_TABLE: if op_code in GomspaceOpCode.REQUEST_CONFIG_TABLE:
q.add_log_cmd(f"{prefix}: {GsInfo.REQUEST_CONFIG_TABLE}") q.add_log_cmd(f"{prefix}: {GsInfo.REQUEST_CONFIG_TABLE}")
q.add_pus_tc(pack_request_config_command(object_id.as_bytes)) q.add_pus_tc(pack_request_config_command(object_id.as_bytes))
if op_code in GomspaceOpCodes.SAVE_TABLE: if op_code in GomspaceOpCode.SAVE_TABLE:
q.add_log_cmd(f"{prefix}: {GsInfo.SAVE_TABLE}") q.add_log_cmd(f"{prefix}: {GsInfo.SAVE_TABLE}")
source_table = int( source_table = int(
input( input(
@ -189,11 +189,11 @@ def pack_common_gomspace_cmds(
q.add_pus_tc( q.add_pus_tc(
make_fsfw_action_cmd( make_fsfw_action_cmd(
object_id=object_id.as_bytes, object_id=object_id.as_bytes,
action_id=GomspaceDeviceActionIds.SAVE_TABLE, action_id=GomspaceDeviceActionId.SAVE_TABLE,
user_data=bytes([source_table]), user_data=bytes([source_table]),
) )
) )
if op_code in GomspaceOpCodes.SAVE_TABLE_DEFAULT: if op_code in GomspaceOpCode.SAVE_TABLE_DEFAULT:
source_table = int( source_table = int(
input( input(
"Source table [0: Board Config, 1: Module Config, 2: Calibration Parameter]: " "Source table [0: Board Config, 1: Module Config, 2: Calibration Parameter]: "
@ -204,11 +204,11 @@ def pack_common_gomspace_cmds(
q.add_pus_tc( q.add_pus_tc(
make_fsfw_action_cmd( make_fsfw_action_cmd(
object_id=object_id.as_bytes, object_id=object_id.as_bytes,
action_id=GomspaceDeviceActionIds.SAVE_TABLE_DEFAULT, action_id=GomspaceDeviceActionId.SAVE_TABLE_DEFAULT,
user_data=bytes([source_table]), user_data=bytes([source_table]),
) )
) )
if op_code in GomspaceOpCodes.LOAD_TABLE: if op_code in GomspaceOpCode.LOAD_TABLE:
target_table = int( target_table = int(
input( input(
"Target table ID [0: Board Config, 1: Module Config, 2: Calibration Parameter, " "Target table ID [0: Board Config, 1: Module Config, 2: Calibration Parameter, "
@ -232,11 +232,11 @@ def pack_common_gomspace_cmds(
q.add_pus_tc( q.add_pus_tc(
make_fsfw_action_cmd( make_fsfw_action_cmd(
object_id=object_id.as_bytes, object_id=object_id.as_bytes,
action_id=GomspaceDeviceActionIds.LOAD_TABLE, action_id=GomspaceDeviceActionId.LOAD_TABLE,
user_data=bytes([source_table, target_table]), user_data=bytes([source_table, target_table]),
) )
) )
if op_code in GomspaceOpCodes.RESET_GND_WATCHDOG: if op_code in GomspaceOpCode.RESET_GND_WATCHDOG:
q.add_log_cmd(f"{prefix}: {GsInfo.RESET_GND_WATCHDOG}") q.add_log_cmd(f"{prefix}: {GsInfo.RESET_GND_WATCHDOG}")
q.add_pus_tc(pack_gnd_wdt_reset_command(object_id)) q.add_pus_tc(pack_gnd_wdt_reset_command(object_id))
@ -316,14 +316,14 @@ def add_gomspace_cmd_defs(oce: OpCodeEntry):
info=PowerInfo.REQUEST_AUX_HK_ONCE, info=PowerInfo.REQUEST_AUX_HK_ONCE,
) )
oce.add(keys=PowerOpCodes.PRINT_LATCHUPS, info=PowerInfo.PRINT_LATCHUPS) oce.add(keys=PowerOpCodes.PRINT_LATCHUPS, info=PowerInfo.PRINT_LATCHUPS)
oce.add(keys=GomspaceOpCodes.GET_PARAM, info=GsInfo.GET_PARAMETER) oce.add(keys=GomspaceOpCode.GET_PARAM, info=GsInfo.GET_PARAMETER)
oce.add(keys=GomspaceOpCodes.REBOOT, info=GsInfo.REBOOT) oce.add(keys=GomspaceOpCode.REBOOT, info=GsInfo.REBOOT)
oce.add(keys=GomspaceOpCodes.SET_INTEGER_PARAM, info=GsInfo.SET_PARAMETER) oce.add(keys=GomspaceOpCode.SET_INTEGER_PARAM, info=GsInfo.SET_PARAMETER)
oce.add(keys=GomspaceOpCodes.REQUEST_CONFIG_TABLE, info=GsInfo.REQUEST_CONFIG_TABLE) oce.add(keys=GomspaceOpCode.REQUEST_CONFIG_TABLE, info=GsInfo.REQUEST_CONFIG_TABLE)
oce.add(keys=GomspaceOpCodes.SAVE_TABLE, info=GsInfo.SAVE_TABLE) oce.add(keys=GomspaceOpCode.SAVE_TABLE, info=GsInfo.SAVE_TABLE)
oce.add(keys=GomspaceOpCodes.SAVE_TABLE_DEFAULT, info=GsInfo.SAVE_TABLE_DEFAULT) oce.add(keys=GomspaceOpCode.SAVE_TABLE_DEFAULT, info=GsInfo.SAVE_TABLE_DEFAULT)
oce.add(keys=GomspaceOpCodes.LOAD_TABLE, info=GsInfo.LOAD_TABLE) oce.add(keys=GomspaceOpCode.LOAD_TABLE, info=GsInfo.LOAD_TABLE)
oce.add(keys=GomspaceOpCodes.RESET_GND_WATCHDOG, info=GsInfo.RESET_GND_WATCHDOG) oce.add(keys=GomspaceOpCode.RESET_GND_WATCHDOG, info=GsInfo.RESET_GND_WATCHDOG)
OBC_ENDIANNESS = "<" OBC_ENDIANNESS = "<"

View File

@ -27,7 +27,7 @@ from eive_tmtc.config.object_ids import P60_DOCK_HANDLER
from tmtccmd.util import ObjectIdU32 from tmtccmd.util import ObjectIdU32
class P60OpCodes: class P60OpCode:
STACK_3V3_ON = ["stack_3v3_on", "1"] STACK_3V3_ON = ["stack_3v3_on", "1"]
STACK_3V3_OFF = ["stack_3v3_off", "2"] STACK_3V3_OFF = ["stack_3v3_off", "2"]
STACK_5V_ON = ["stack_5v_on", "3"] STACK_5V_ON = ["stack_5v_on", "3"]
@ -103,7 +103,7 @@ def pack_p60dock_cmds(object_id: ObjectIdU32, q: DefaultPusQueueHelper, op_code:
pack_common_power_cmds("P60 Dock", object_id, q, op_code) pack_common_power_cmds("P60 Dock", object_id, q, op_code)
pack_common_gomspace_cmds("P60 Dock", object_id, q, op_code) pack_common_gomspace_cmds("P60 Dock", object_id, q, op_code)
p60_dock_req_hk_cmds(q, op_code) p60_dock_req_hk_cmds(q, op_code)
if op_code in P60OpCodes.STACK_3V3_ON: if op_code in P60OpCode.STACK_3V3_ON:
q.add_log_cmd(P60Info.STACK_3V3_ON) q.add_log_cmd(P60Info.STACK_3V3_ON)
q.add_pus_tc( q.add_pus_tc(
pack_set_u8_param_command( pack_set_u8_param_command(
@ -112,7 +112,7 @@ def pack_p60dock_cmds(object_id: ObjectIdU32, q: DefaultPusQueueHelper, op_code:
Channel.on, Channel.on,
) )
) )
if op_code in P60OpCodes.STACK_3V3_OFF: if op_code in P60OpCode.STACK_3V3_OFF:
q.add_log_cmd(P60Info.STACK_3V3_OFF) q.add_log_cmd(P60Info.STACK_3V3_OFF)
q.add_pus_tc( q.add_pus_tc(
pack_set_u8_param_command( pack_set_u8_param_command(
@ -121,7 +121,7 @@ def pack_p60dock_cmds(object_id: ObjectIdU32, q: DefaultPusQueueHelper, op_code:
Channel.off, Channel.off,
) )
) )
if op_code in P60OpCodes.STACK_5V_ON: if op_code in P60OpCode.STACK_5V_ON:
q.add_log_cmd(P60Info.STACK_5V_ON) q.add_log_cmd(P60Info.STACK_5V_ON)
q.add_pus_tc( q.add_pus_tc(
pack_set_u8_param_command( pack_set_u8_param_command(
@ -130,7 +130,7 @@ def pack_p60dock_cmds(object_id: ObjectIdU32, q: DefaultPusQueueHelper, op_code:
Channel.on, Channel.on,
) )
) )
if op_code in P60OpCodes.STACK_5V_OFF: if op_code in P60OpCode.STACK_5V_OFF:
q.add_log_cmd(P60Info.STACK_5V_OFF) q.add_log_cmd(P60Info.STACK_5V_OFF)
q.add_pus_tc( q.add_pus_tc(
pack_set_u8_param_command( pack_set_u8_param_command(

View File

@ -15,7 +15,7 @@ from eive_tmtc.tmtc.power.common_power import (
create_generic_on_cmd, create_generic_on_cmd,
create_generic_off_cmd, create_generic_off_cmd,
pack_common_power_cmds, pack_common_power_cmds,
GomspaceOpCodes, GomspaceOpCode,
GsInfo, GsInfo,
PowerInfo, PowerInfo,
add_common_power_defs, add_common_power_defs,
@ -166,7 +166,7 @@ def add_pdu1_cmds(defs: TmtcDefinitionWrapper):
keys=PowerOpCodes.PRINT_SWITCH_V_I, keys=PowerOpCodes.PRINT_SWITCH_V_I,
info="PDU1: Print Switches, Voltages, Currents", info="PDU1: Print Switches, Voltages, Currents",
) )
oce.add(keys=GomspaceOpCodes.GET_PARAM, info=GsInfo.GET_PARAMETER) oce.add(keys=GomspaceOpCode.GET_PARAM, info=GsInfo.GET_PARAMETER)
defs.add_service( defs.add_service(
name=CustomServiceList.PDU1.value, name=CustomServiceList.PDU1.value,

View File

@ -27,7 +27,7 @@ from eive_tmtc.tmtc.power.pdu2 import (
from tmtccmd import get_console_logger from tmtccmd import get_console_logger
from tmtccmd.config import TmtcDefinitionWrapper, OpCodeEntry from tmtccmd.config import TmtcDefinitionWrapper, OpCodeEntry
from eive_tmtc.tmtc.power.p60dock import P60OpCodes, P60Info, p60_dock_req_hk_cmds from eive_tmtc.tmtc.power.p60dock import P60OpCode, P60Info, p60_dock_req_hk_cmds
from eive_tmtc.tmtc.power.acu import add_acu_cmds, acu_req_hk_cmds from eive_tmtc.tmtc.power.acu import add_acu_cmds, acu_req_hk_cmds
from tmtccmd.config.tmtc import tmtc_definitions_provider from tmtccmd.config.tmtc import tmtc_definitions_provider
from tmtccmd.tc import DefaultPusQueueHelper from tmtccmd.tc import DefaultPusQueueHelper
@ -75,12 +75,12 @@ def pack_power_commands(q: DefaultPusQueueHelper, op_code: str):
@tmtc_definitions_provider @tmtc_definitions_provider
def add_p60_cmds(defs: TmtcDefinitionWrapper): def add_p60_cmds(defs: TmtcDefinitionWrapper):
oce = OpCodeEntry() oce = OpCodeEntry()
oce.add(keys=P60OpCodes.STACK_3V3_ON, info=P60Info.STACK_3V3_ON) oce.add(keys=P60OpCode.STACK_3V3_ON, info=P60Info.STACK_3V3_ON)
oce.add(keys=P60OpCodes.STACK_3V3_OFF, info=P60Info.STACK_3V3_OFF) oce.add(keys=P60OpCode.STACK_3V3_OFF, info=P60Info.STACK_3V3_OFF)
oce.add(keys=P60OpCodes.STACK_5V_ON, info=P60Info.STACK_5V_ON) oce.add(keys=P60OpCode.STACK_5V_ON, info=P60Info.STACK_5V_ON)
oce.add(keys=P60OpCodes.STACK_5V_OFF, info=P60Info.STACK_5V_OFF) oce.add(keys=P60OpCode.STACK_5V_OFF, info=P60Info.STACK_5V_OFF)
add_gomspace_cmd_defs(oce) add_gomspace_cmd_defs(oce)
oce.add(keys=P60OpCodes.TEST, info="P60 Tests") oce.add(keys=P60OpCode.TEST, info="P60 Tests")
defs.add_service( defs.add_service(
name=CustomServiceList.P60DOCK.value, info="P60 Device", op_code_entry=oce name=CustomServiceList.P60DOCK.value, info="P60 Device", op_code_entry=oce
) )

View File

@ -10,7 +10,7 @@ from eive_tmtc.tmtc.power.common_power import (
from tmtccmd.util import ObjectIdBase from tmtccmd.util import ObjectIdBase
from tmtccmd.util.tmtc_printer import FsfwTmTcPrinter from tmtccmd.util.tmtc_printer import FsfwTmTcPrinter
from eive_tmtc.pus_tm.defs import PrintWrapper from eive_tmtc.pus_tm.defs import PrintWrapper
from eive_tmtc.gomspace.gomspace_common import GomspaceDeviceActionIds from eive_tmtc.gomspace.gomspace_common import GomspaceDeviceActionId
from eive_tmtc.config.object_ids import ( from eive_tmtc.config.object_ids import (
PDU_1_HANDLER_ID, PDU_1_HANDLER_ID,
PDU_2_HANDLER_ID, PDU_2_HANDLER_ID,
@ -439,7 +439,7 @@ def handle_acu_hk_data(printer: FsfwTmTcPrinter, set_id: int, hk_data: bytes):
def handle_get_param_data_reply( def handle_get_param_data_reply(
obj_id: ObjectIdBase, action_id: int, pw: PrintWrapper, custom_data: bytearray obj_id: ObjectIdBase, action_id: int, pw: PrintWrapper, custom_data: bytearray
): ):
if action_id == GomspaceDeviceActionIds.PARAM_GET: if action_id == GomspaceDeviceActionId.PARAM_GET:
pw.dlog(f"Parameter Get Request received for object {obj_id}") pw.dlog(f"Parameter Get Request received for object {obj_id}")
header_list = [ header_list = [
"Gomspace Request Code", "Gomspace Request Code",
@ -461,7 +461,7 @@ def handle_get_param_data_reply(
] ]
pw.dlog(f"{header_list}") pw.dlog(f"{header_list}")
pw.dlog(f"{content_list}") pw.dlog(f"{content_list}")
elif action_id == GomspaceDeviceActionIds.REQUEST_CONFIG_TABLE: elif action_id == GomspaceDeviceActionId.REQUEST_CONFIG_TABLE:
print(f"Received config table with size {len(custom_data)} for object {obj_id}") print(f"Received config table with size {len(custom_data)} for object {obj_id}")
if obj_id.as_bytes == PDU_1_HANDLER_ID or obj_id.as_bytes == PDU_2_HANDLER_ID: if obj_id.as_bytes == PDU_1_HANDLER_ID or obj_id.as_bytes == PDU_2_HANDLER_ID:
pdu_config_table_handler(pw, custom_data, obj_id) pdu_config_table_handler(pw, custom_data, obj_id)

View File

@ -22,7 +22,7 @@ from tmtccmd import get_console_logger
LOGGER = get_console_logger() LOGGER = get_console_logger()
class OpCodes: class OpCode:
MANUAL_DEPLOYMENT = "man_depl" MANUAL_DEPLOYMENT = "man_depl"
@ -30,14 +30,14 @@ class Info:
MANUAL_DEPLOYMENT = "Manual Solar Array Deployment" MANUAL_DEPLOYMENT = "Manual Solar Array Deployment"
class ActionIds: class ActionId:
MANUAL_DEPLOYMENT = 5 MANUAL_DEPLOYMENT = 5
@tmtc_definitions_provider @tmtc_definitions_provider
def pack_sa_depl_cmds(defs: TmtcDefinitionWrapper): def pack_sa_depl_cmds(defs: TmtcDefinitionWrapper):
oce = OpCodeEntry() oce = OpCodeEntry()
oce.add(keys=OpCodes.MANUAL_DEPLOYMENT, info=Info.MANUAL_DEPLOYMENT) oce.add(keys=OpCode.MANUAL_DEPLOYMENT, info=Info.MANUAL_DEPLOYMENT)
defs.add_service( defs.add_service(
name=CustomServiceList.SA_DEPLYOMENT, name=CustomServiceList.SA_DEPLYOMENT,
info="Solar Array Deployment", info="Solar Array Deployment",
@ -73,6 +73,6 @@ def pack_solar_array_deployment_test_into(p: ServiceProviderParams):
dry_run_str = "" dry_run_str = ""
q.add_log_cmd(f"Testing S/A Deployment with burn time {burn_time}{dry_run_str}") q.add_log_cmd(f"Testing S/A Deployment with burn time {burn_time}{dry_run_str}")
command = make_fsfw_action_cmd( command = make_fsfw_action_cmd(
SOLAR_ARRAY_DEPLOYMENT_ID, ActionIds.MANUAL_DEPLOYMENT, user_data SOLAR_ARRAY_DEPLOYMENT_ID, ActionId.MANUAL_DEPLOYMENT, user_data
) )
q.add_pus_tc(command) q.add_pus_tc(command)

View File

@ -5,7 +5,7 @@ version = attr: eive_tmtc.__version__
long_description = file: README.md long_description = file: README.md
long_description_content_type = text/markdown long_description_content_type = text/markdown
license = Apache-2.0 license = Apache-2.0
author = Robin Mueller author = Robin Mueller, Jakob Meier
author_email = muellerr@irs.uni-stuttgart.de author_email = muellerr@irs.uni-stuttgart.de
platform = any platform = any
@ -30,7 +30,7 @@ install_requires =
# tmtccmd @ git+https://github.com/robamu-org/tmtccmd@v4.0.0a1 # tmtccmd @ git+https://github.com/robamu-org/tmtccmd@v4.0.0a1
tmtccmd @ git+https://github.com/robamu-org/tmtccmd@vd5635e6#egg=tmtccmd tmtccmd @ git+https://github.com/robamu-org/tmtccmd@vd5635e6#egg=tmtccmd
packages = find: packages = find:
python_requires = >=3.8 python_requires = >=3.10
include_package_data = True include_package_data = True
[options.extras_require] [options.extras_require]