Compare commits

...

8 Commits

Author SHA1 Message Date
85fc106a9b add commanding nodes
All checks were successful
EIVE/-/pipeline/head This commit looks good
2024-02-19 15:58:34 +01:00
d35bc01397 added command to select STR slot
All checks were successful
EIVE/-/pipeline/head This commit looks good
2024-02-19 15:27:27 +01:00
d811735b8d add som enums
All checks were successful
EIVE/-/pipeline/head This commit looks good
2024-02-19 12:20:32 +01:00
265077a758 add command for second slot update
All checks were successful
EIVE/-/pipeline/head This commit looks good
2024-02-19 12:17:34 +01:00
1cd566a94c Merge pull request 'Fix the Errors of muellerr' (#275) from tm-store-fix into main
All checks were successful
EIVE/-/pipeline/head This commit looks good
Reviewed-on: #275
Reviewed-by: Robin Müller <muellerr@irs.uni-stuttgart.de>
2024-02-12 10:40:34 +01:00
9aa891ef78 fix the errors of muellerr
All checks were successful
EIVE/-/pipeline/head This commit looks good
EIVE/-/pipeline/pr-main This commit looks good
2024-02-09 12:06:38 +01:00
329aa76fbf Merge pull request 'prep v6.0.0' (#274) from prep-v6.0.0 into main
All checks were successful
EIVE/-/pipeline/head This commit looks good
Reviewed-on: #274
Reviewed-by: Marius Eggert <eggertm@irs.uni-stuttgart.de>
2024-02-08 13:07:09 +01:00
4633e0cb13 prep v6.0.0
All checks were successful
EIVE/-/pipeline/head This commit looks good
2024-02-08 12:18:33 +01:00
5 changed files with 100 additions and 37 deletions

View File

@ -10,7 +10,7 @@ list yields a list of all related PRs for each release.
# [unreleased] # [unreleased]
# [v6.0.0] 2024-01-31 # [v6.0.0] 2024-02-08
## Changed ## Changed

View File

@ -70,6 +70,7 @@ from eive_tmtc.tmtc.tcs.subsystem import pack_tcs_sys_commands
from eive_tmtc.tmtc.tcs.tmp1075 import pack_tmp1075_test_into from eive_tmtc.tmtc.tcs.tmp1075 import pack_tmp1075_test_into
from eive_tmtc.tmtc.test import build_test_commands from eive_tmtc.tmtc.test import build_test_commands
from eive_tmtc.tmtc.time import pack_time_management_cmd from eive_tmtc.tmtc.time import pack_time_management_cmd
from eive_tmtc.tmtc.tm_store import pack_tm_store_commands
from eive_tmtc.tmtc.wdt import pack_wdt_commands from eive_tmtc.tmtc.wdt import pack_wdt_commands
from eive_tmtc.utility.input_helper import InputHelper from eive_tmtc.utility.input_helper import InputHelper
@ -281,6 +282,8 @@ def handle_obdh_procedure(
return pack_wdt_commands(queue_helper, cmd_path_list[1]) return pack_wdt_commands(queue_helper, cmd_path_list[1])
if cmd_path_list[0] == "time": if cmd_path_list[0] == "time":
return pack_time_management_cmd(queue_helper, cmd_path_list[1]) return pack_time_management_cmd(queue_helper, cmd_path_list[1])
if cmd_path_list[0] == "tm_store":
return pack_tm_store_commands(queue_helper, cmd_path_list[1])
def handle_com_procedure(queue_helper: DefaultPusQueueHelper, cmd_path_list: List[str]): def handle_com_procedure(queue_helper: DefaultPusQueueHelper, cmd_path_list: List[str]):

View File

@ -10,12 +10,10 @@ import enum
import logging import logging
import struct import struct
from eive_tmtc.config.definitions import CustomServiceList
from eive_tmtc.pus_tm.defs import PrintWrapper from eive_tmtc.pus_tm.defs import PrintWrapper
from eive_tmtc.utility.input_helper import InputHelper from eive_tmtc.utility.input_helper import InputHelper
from spacepackets.ecss.tc import PusTelecommand from spacepackets.ecss.tc import PusTelecommand
from tmtccmd.config import CmdTreeNode, TmtcDefinitionWrapper, OpCodeEntry from tmtccmd.config import CmdTreeNode
from tmtccmd.config.tmtc import tmtc_definitions_provider
from tmtccmd.pus.tc.s3_fsfw_hk import ( from tmtccmd.pus.tc.s3_fsfw_hk import (
create_request_one_diag_command, create_request_one_diag_command,
create_request_one_hk_command, create_request_one_hk_command,
@ -23,6 +21,7 @@ from tmtccmd.pus.tc.s3_fsfw_hk import (
disable_periodic_hk_command, disable_periodic_hk_command,
make_sid, make_sid,
) )
from tmtccmd.pus.s20_fsfw_param import create_load_param_cmd, create_scalar_u8_parameter
from tmtccmd.pus.s8_fsfw_action import create_action_cmd from tmtccmd.pus.s8_fsfw_action import create_action_cmd
from tmtccmd.tmtc import DefaultPusQueueHelper from tmtccmd.tmtc import DefaultPusQueueHelper
from tmtccmd.pus.s200_fsfw_mode import pack_mode_data, Mode from tmtccmd.pus.s200_fsfw_mode import pack_mode_data, Mode
@ -33,6 +32,16 @@ from eive_tmtc.config.object_ids import STR_ASSEMBLY, STAR_TRACKER_ID
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)
class FirmwareTarget(enum.IntEnum):
MAIN = 1
BACKUP = 10
class ParamId(enum.IntEnum):
FIRMWARE_TARGET = 1
FIRMWARE_TARGET_PERSISTENT = 2
class StarTrackerActionId(enum.IntEnum): class StarTrackerActionId(enum.IntEnum):
PING = 0 PING = 0
BOOT = 1 BOOT = 1
@ -95,7 +104,10 @@ class StarTrackerActionId(enum.IntEnum):
LOGLEVEL = 81 LOGLEVEL = 81
LOG_SUBSCRIPTION = 82 LOG_SUBSCRIPTION = 82
DEBUG_CAMERA = 83 DEBUG_CAMERA = 83
# Legacy variable.
FIRMWARE_UPDATE = 84 FIRMWARE_UPDATE = 84
FIRMWARE_UPDATE_MAIN = 84
FIRMWARE_UPDATE_BACKUP = 101
SET_TIME_FROM_SYS_TIME = 87 SET_TIME_FROM_SYS_TIME = 87
ADD_SECONDARY_TM_TO_NORMAL_MODE = 95 ADD_SECONDARY_TM_TO_NORMAL_MODE = 95
RESET_SECONDARY_TM_SET = 96 RESET_SECONDARY_TM_SET = 96
@ -119,9 +131,14 @@ class OpCode:
UPLOAD_IMAGE = "upload_image" UPLOAD_IMAGE = "upload_image"
DOWNLOAD_IMAGE = "download_image" DOWNLOAD_IMAGE = "download_image"
SET_IMG_PROCESSOR_MODE = "set_img_proc_mode" SET_IMG_PROCESSOR_MODE = "set_img_proc_mode"
FW_UPDATE = "fw_update" FW_UPDATE_MAIN = "fw_update_main"
SET_TIME_FROM_SYS_TIME = "set_time" SET_TIME_FROM_SYS_TIME = "set_time"
RELOAD_JSON_CFG_FILE = "reload_json_cfg" RELOAD_JSON_CFG_FILE = "reload_json_cfg"
FW_UPDATE_BACKUP = "fw_update_backup"
SELECT_TARGET_FIRMWARE_MAIN = "fw_main"
SELECT_TARGET_FIRMWARE_BACKUP = "fw_backup"
SELECT_TARGET_FIRMWARE_MAIN_PERSISTENT = "fw_main_persistent"
SELECT_TARGET_FIRMWARE_BACKUP_PERSISTENT = "fw_backup_persistent"
class Info: class Info:
@ -135,9 +152,16 @@ class Info:
DOWNLOAD_IMAGE = "Download Optical Image" DOWNLOAD_IMAGE = "Download Optical Image"
TAKE_IMAGE = "Take Image" TAKE_IMAGE = "Take Image"
SET_IMG_PROCESSOR_MODE = "Set Image Processor Mode" SET_IMG_PROCESSOR_MODE = "Set Image Processor Mode"
FW_UPDATE = "Firmware Update" FW_UPDATE_MAIN = "Update Main Firmware Slot"
FW_UPDATE_BACKUP = "Update Backup Firmware Slot"
SET_TIME_FROM_SYS_TIME = "Set time from system time" SET_TIME_FROM_SYS_TIME = "Set time from system time"
RELOAD_JSON_CFG_FILE = "Reload JSON configuration file. Reboot still required." RELOAD_JSON_CFG_FILE = "Reload JSON configuration file. Reboot still required."
SELECT_TARGET_FIRMWARE_MAIN = "Select main firmware slot"
SELECT_TARGET_FIRMWARE_BACKUP = "Select backup firmware slot"
SELECT_TARGET_FIRMWARE_MAIN_PERSISTENT = "Select main firmware slot persistently"
SELECT_TARGET_FIRMWARE_BACKUP_PERSISTENT = (
"Select backup firmware slot persistently"
)
class SetId(enum.IntEnum): class SetId(enum.IntEnum):
@ -642,12 +666,21 @@ def pack_star_tracker_commands( # noqa C901
+ 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 cmd_str == OpCode.FW_UPDATE: if cmd_str == OpCode.FW_UPDATE_MAIN:
q.add_log_cmd(Info.FW_UPDATE) q.add_log_cmd(Info.FW_UPDATE_MAIN)
firmware = get_firmware() firmware = get_firmware()
data = ( data = (
obyt obyt
+ struct.pack("!I", StarTrackerActionId.FIRMWARE_UPDATE) + struct.pack("!I", StarTrackerActionId.FIRMWARE_UPDATE_MAIN)
+ firmware.encode()
)
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data))
if cmd_str == OpCode.FW_UPDATE_BACKUP:
q.add_log_cmd(Info.FW_UPDATE_BACKUP)
firmware = get_firmware()
data = (
obyt
+ struct.pack("!I", StarTrackerActionId.FIRMWARE_UPDATE_BACKUP)
+ firmware.encode() + firmware.encode()
) )
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data)) q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data))
@ -683,6 +716,35 @@ def pack_star_tracker_commands( # noqa C901
q.add_pus_tc( q.add_pus_tc(
create_action_cmd(STAR_TRACKER_ID, StarTrackerActionId.RELOAD_JSON_CFG_FILE) create_action_cmd(STAR_TRACKER_ID, StarTrackerActionId.RELOAD_JSON_CFG_FILE)
) )
if cmd_str == OpCode.SELECT_TARGET_FIRMWARE_MAIN:
q.add_log_cmd(Info.SELECT_TARGET_FIRMWARE_MAIN)
q.add_pus_tc(create_update_firmware_target_cmd(False, FirmwareTarget.MAIN))
if cmd_str == OpCode.SELECT_TARGET_FIRMWARE_BACKUP:
q.add_log_cmd(Info.SELECT_TARGET_FIRMWARE_BACKUP)
q.add_pus_tc(create_update_firmware_target_cmd(False, FirmwareTarget.BACKUP))
if cmd_str == OpCode.SELECT_TARGET_FIRMWARE_MAIN_PERSISTENT:
q.add_log_cmd(Info.SELECT_TARGET_FIRMWARE_BACKUP)
q.add_pus_tc(create_update_firmware_target_cmd(True, FirmwareTarget.MAIN))
if cmd_str == OpCode.SELECT_TARGET_FIRMWARE_BACKUP_PERSISTENT:
q.add_log_cmd(Info.SELECT_TARGET_FIRMWARE_BACKUP)
q.add_pus_tc(create_update_firmware_target_cmd(True, FirmwareTarget.BACKUP))
def create_update_firmware_target_cmd(
persistent: bool, fw_target: FirmwareTarget
) -> PusTelecommand:
if persistent:
param_id = ParamId.FIRMWARE_TARGET_PERSISTENT
else:
param_id = ParamId.FIRMWARE_TARGET
return create_load_param_cmd(
create_scalar_u8_parameter(
STAR_TRACKER_ID,
0,
param_id,
fw_target,
)
)
def request_dataset(q: DefaultPusQueueHelper, req_type: DataSetRequest): def request_dataset(q: DefaultPusQueueHelper, req_type: DataSetRequest):
@ -1185,34 +1247,31 @@ def create_str_node() -> CmdTreeNode:
node.add_child( node.add_child(
CmdTreeNode(OpCode.RESET_SECONDARY_TM_SET, Info.RESET_SECONDARY_TM_SET) CmdTreeNode(OpCode.RESET_SECONDARY_TM_SET, Info.RESET_SECONDARY_TM_SET)
) )
node.add_child(CmdTreeNode(OpCode.FW_UPDATE, Info.FW_UPDATE)) node.add_child(CmdTreeNode(OpCode.FW_UPDATE_MAIN, Info.FW_UPDATE_MAIN))
node.add_child(CmdTreeNode(OpCode.FW_UPDATE_BACKUP, Info.FW_UPDATE_BACKUP))
node.add_child(
CmdTreeNode(
OpCode.SELECT_TARGET_FIRMWARE_MAIN, Info.SELECT_TARGET_FIRMWARE_MAIN
)
)
node.add_child(
CmdTreeNode(
OpCode.SELECT_TARGET_FIRMWARE_BACKUP, Info.SELECT_TARGET_FIRMWARE_BACKUP
)
)
node.add_child(
CmdTreeNode(
OpCode.SELECT_TARGET_FIRMWARE_MAIN_PERSISTENT,
Info.SELECT_TARGET_FIRMWARE_MAIN_PERSISTENT,
)
)
node.add_child(
CmdTreeNode(
OpCode.SELECT_TARGET_FIRMWARE_BACKUP_PERSISTENT,
Info.SELECT_TARGET_FIRMWARE_BACKUP_PERSISTENT,
)
)
node.add_child( node.add_child(
CmdTreeNode(OpCode.SET_TIME_FROM_SYS_TIME, Info.SET_TIME_FROM_SYS_TIME) CmdTreeNode(OpCode.SET_TIME_FROM_SYS_TIME, Info.SET_TIME_FROM_SYS_TIME)
) )
return node return node
@tmtc_definitions_provider
def add_str_cmds(defs: TmtcDefinitionWrapper):
oce = OpCodeEntry()
oce.add(OpCode.ON_BOOTLOADER, "Mode On, Submode Bootloader")
oce.add(OpCode.ON_FIRMWARE, "Mode On, Submode Firmware")
oce.add(OpCode.NORMAL, "Mode Normal")
oce.add(OpCode.OFF, "Mode Off")
oce.add(OpCode.PING, "Star Tracker: Ping")
oce.add(OpCode.TAKE_IMAGE, "Take Image")
oce.add(OpCode.UPLOAD_IMAGE, Info.UPLOAD_IMAGE)
oce.add(OpCode.DOWNLOAD_IMAGE, Info.DOWNLOAD_IMAGE)
oce.add(OpCode.ONE_SHOOT_HK, Info.ONE_SHOOT_HK)
oce.add(OpCode.ENABLE_HK, Info.ENABLE_HK)
oce.add(OpCode.DISABLE_HK, Info.DISABLE_HK)
oce.add(OpCode.SET_IMG_PROCESSOR_MODE, Info.SET_IMG_PROCESSOR_MODE)
oce.add(
OpCode.ADD_SECONDARY_TM_TO_NORMAL_MODE, Info.ADD_SECONDARY_TM_TO_NORMAL_MODE
)
oce.add(OpCode.READ_SECONDARY_TM_SET, Info.READ_SECONDARY_TM_SET)
oce.add(OpCode.RESET_SECONDARY_TM_SET, Info.RESET_SECONDARY_TM_SET)
oce.add(OpCode.FW_UPDATE, Info.FW_UPDATE)
oce.add(OpCode.SET_TIME_FROM_SYS_TIME, Info.SET_TIME_FROM_SYS_TIME)
oce.add(OpCode.RELOAD_JSON_CFG_FILE, Info.RELOAD_JSON_CFG_FILE)
defs.add_service(CustomServiceList.STAR_TRACKER.value, "Star Tracker", oce)

View File

@ -107,6 +107,7 @@ def pack_tm_store_commands(q: DefaultPusQueueHelper, cmd_path: str):
def create_persistent_tm_store_node() -> CmdTreeNode: def create_persistent_tm_store_node() -> CmdTreeNode:
node = CmdTreeNode("tm_store", "Persistent TM Store") node = CmdTreeNode("tm_store", "Persistent TM Store")
node.add_child(CmdTreeNode(OpCode.DELETE_UP_TO, Info.DELETE_UP_TO)) node.add_child(CmdTreeNode(OpCode.DELETE_UP_TO, Info.DELETE_UP_TO))
node.add_child(CmdTreeNode(OpCode.DELETE_BY_TIME_RANGE, Info.DELETE_BY_TIME_RANGE))
node.add_child( node.add_child(
CmdTreeNode(OpCode.RETRIEVAL_BY_TIME_RANGE, Info.RETRIEVAL_BY_TIME_RANGE) CmdTreeNode(OpCode.RETRIEVAL_BY_TIME_RANGE, Info.RETRIEVAL_BY_TIME_RANGE)
) )

View File

@ -6,7 +6,7 @@ build-backend = "setuptools.build_meta"
name = "eive-tmtc" name = "eive-tmtc"
description = "TMTC Commander EIVE" description = "TMTC Commander EIVE"
readme = "README.md" readme = "README.md"
version = "5.13.0" version = "6.0.0"
requires-python = ">=3.10" requires-python = ">=3.10"
license = {text = "Apache-2.0"} license = {text = "Apache-2.0"}
authors = [ authors = [