Compare commits
2 Commits
01b3a894e6
...
33fd280e51
Author | SHA1 | Date | |
---|---|---|---|
33fd280e51 | |||
a5178e2bb0 |
@@ -103,6 +103,7 @@ class OpCodes:
|
|||||||
TAKE_IMAGE = "take_image"
|
TAKE_IMAGE = "take_image"
|
||||||
UPLOAD_IMAGE = "upload_image"
|
UPLOAD_IMAGE = "upload_image"
|
||||||
SET_IMG_PROCESSOR_MODE = "set_img_proc_mode"
|
SET_IMG_PROCESSOR_MODE = "set_img_proc_mode"
|
||||||
|
FW_UPDATE = "fw_update"
|
||||||
|
|
||||||
|
|
||||||
class Info:
|
class Info:
|
||||||
@@ -111,6 +112,7 @@ class Info:
|
|||||||
UPLOAD_IMAGE = "Upload Image"
|
UPLOAD_IMAGE = "Upload 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"
|
||||||
|
|
||||||
|
|
||||||
class SetId(enum.IntEnum):
|
class SetId(enum.IntEnum):
|
||||||
@@ -141,6 +143,7 @@ class FileDefs:
|
|||||||
firmware2_1 = "/home/pi/arcsec/firmware/sagitta-2-1.bin"
|
firmware2_1 = "/home/pi/arcsec/firmware/sagitta-2-1.bin"
|
||||||
firmware22_1 = "/home/pi/arcsec/firmware/sagitta-22-1.bin"
|
firmware22_1 = "/home/pi/arcsec/firmware/sagitta-22-1.bin"
|
||||||
firmware_origin = "/home/pi/arcsec/firmware/sagitta-origin.bin"
|
firmware_origin = "/home/pi/arcsec/firmware/sagitta-origin.bin"
|
||||||
|
FW_SLOT_Q7S = "/mnt/sd0/startracker/updates/sagitta-update.bin"
|
||||||
|
|
||||||
|
|
||||||
json_dict = {
|
json_dict = {
|
||||||
@@ -158,7 +161,8 @@ json_dict = {
|
|||||||
),
|
),
|
||||||
}
|
}
|
||||||
|
|
||||||
firmware_dict = {
|
FW_DICT = {
|
||||||
|
"0": ("Firmware Update Q7S", FileDefs.FW_SLOT_Q7S),
|
||||||
"1": ("Firmware Major = 2, Minor = 1", FileDefs.firmware2_1),
|
"1": ("Firmware Major = 2, Minor = 1", FileDefs.firmware2_1),
|
||||||
"2": ("Firmware Major = 22, Minor = 1", FileDefs.firmware22_1),
|
"2": ("Firmware Major = 22, Minor = 1", FileDefs.firmware22_1),
|
||||||
"3": ("Firmware Origin", FileDefs.firmware_origin),
|
"3": ("Firmware Origin", FileDefs.firmware_origin),
|
||||||
@@ -630,13 +634,13 @@ def pack_star_tracker_commands(
|
|||||||
+ 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 == "69":
|
if op_code == OpCodes.FW_UPDATE:
|
||||||
q.add_log_cmd("Star tracker: Firmware update")
|
q.add_log_cmd(Info.FW_UPDATE)
|
||||||
firmware = get_firmware()
|
firmware = get_firmware()
|
||||||
data = (
|
data = (
|
||||||
obyt
|
obyt
|
||||||
+ struct.pack("!I", StarTrackerActionId.FIRMWARE_UPDATE)
|
+ struct.pack("!I", StarTrackerActionId.FIRMWARE_UPDATE)
|
||||||
+ bytearray(firmware, "utf-8")
|
+ 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))
|
||||||
|
|
||||||
@@ -681,9 +685,13 @@ def get_config_file() -> str:
|
|||||||
|
|
||||||
def get_firmware() -> str:
|
def get_firmware() -> str:
|
||||||
_LOGGER.info("Specify firmware file")
|
_LOGGER.info("Specify firmware file")
|
||||||
input_helper = InputHelper(firmware_dict)
|
bin_select = int(input("Use hardcoded paths (0) or specify path manually (1) ?: "))
|
||||||
key = input_helper.get_key()
|
if bin_select == 0:
|
||||||
firmware = firmware_dict[key][1]
|
input_helper = InputHelper(FW_DICT)
|
||||||
|
key = input_helper.get_key()
|
||||||
|
firmware = FW_DICT[key][1]
|
||||||
|
else:
|
||||||
|
firmware = input("Specify absolute path of the firmware update file: ")
|
||||||
return firmware
|
return firmware
|
||||||
|
|
||||||
|
|
||||||
@@ -870,7 +878,7 @@ def add_str_cmds(defs: TmtcDefinitionWrapper):
|
|||||||
oce.add("66", "Star Tracker: Set log level parameters")
|
oce.add("66", "Star Tracker: Set log level parameters")
|
||||||
oce.add("67", "Star Tracker: Set log subscription parameters")
|
oce.add("67", "Star Tracker: Set log subscription parameters")
|
||||||
oce.add("68", "Star Tracker: Set debug camera parameters")
|
oce.add("68", "Star Tracker: Set debug camera parameters")
|
||||||
oce.add("69", "Star Tracker: Firmware update")
|
oce.add(OpCodes.FW_UPDATE, Info.FW_UPDATE)
|
||||||
oce.add("70", "Star Tracker: Disable timestamp generation")
|
oce.add("70", "Star Tracker: Disable timestamp generation")
|
||||||
oce.add("71", "Star Tracker: Enable timestamp generation")
|
oce.add("71", "Star Tracker: Enable timestamp generation")
|
||||||
defs.add_service(CustomServiceList.STAR_TRACKER.value, "Star Tracker", oce)
|
defs.add_service(CustomServiceList.STAR_TRACKER.value, "Star Tracker", oce)
|
||||||
|
@@ -11,6 +11,10 @@ from tmtccmd.config import TmtcDefinitionWrapper
|
|||||||
from tmtccmd.tc import DefaultPusQueueHelper
|
from tmtccmd.tc import DefaultPusQueueHelper
|
||||||
from tmtccmd.pus.s8_fsfw_funccmd import create_action_cmd
|
from tmtccmd.pus.s8_fsfw_funccmd import create_action_cmd
|
||||||
from tmtccmd.tc.pus_3_fsfw_hk import make_sid, generate_one_hk_command
|
from tmtccmd.tc.pus_3_fsfw_hk import make_sid, generate_one_hk_command
|
||||||
|
from tmtccmd.tc.pus_20_fsfw_param import (
|
||||||
|
create_scalar_u8_parameter,
|
||||||
|
create_load_param_cmd,
|
||||||
|
)
|
||||||
from tmtccmd.config.tmtc import OpCodeEntry, tmtc_definitions_provider
|
from tmtccmd.config.tmtc import OpCodeEntry, tmtc_definitions_provider
|
||||||
from eive_tmtc.config.object_ids import CORE_CONTROLLER_ID
|
from eive_tmtc.config.object_ids import CORE_CONTROLLER_ID
|
||||||
from tmtccmd.util.tmtc_printer import FsfwTmTcPrinter
|
from tmtccmd.util.tmtc_printer import FsfwTmTcPrinter
|
||||||
@@ -37,6 +41,10 @@ class ActionId(enum.IntEnum):
|
|||||||
FULL_REBOOT = 34
|
FULL_REBOOT = 34
|
||||||
|
|
||||||
|
|
||||||
|
class ParamId(enum.IntEnum):
|
||||||
|
PREF_SD = 0
|
||||||
|
|
||||||
|
|
||||||
class SetId(enum.IntEnum):
|
class SetId(enum.IntEnum):
|
||||||
HK = 5
|
HK = 5
|
||||||
|
|
||||||
@@ -45,6 +53,7 @@ class OpCode:
|
|||||||
ANNOUNCE_VERSION = "announce_version"
|
ANNOUNCE_VERSION = "announce_version"
|
||||||
ANNOUNCE_CURRENT_IMAGE = "announce_current_image"
|
ANNOUNCE_CURRENT_IMAGE = "announce_current_image"
|
||||||
ANNOUNCE_BOOT_COUNTS = "announce_boot_counts"
|
ANNOUNCE_BOOT_COUNTS = "announce_boot_counts"
|
||||||
|
SET_PREF_SD = "set_pref_sd"
|
||||||
REBOOT_XSC = ["reboot_xsc"]
|
REBOOT_XSC = ["reboot_xsc"]
|
||||||
XSC_REBOOT_SELF = ["reboot_self"]
|
XSC_REBOOT_SELF = ["reboot_self"]
|
||||||
XSC_REBOOT_0_0 = ["reboot_00"]
|
XSC_REBOOT_0_0 = ["reboot_00"]
|
||||||
@@ -73,6 +82,7 @@ class Info:
|
|||||||
ANNOUNCE_VERSION = "Announce version"
|
ANNOUNCE_VERSION = "Announce version"
|
||||||
ANNOUNCE_CURRENT_IMAGE = "Announce current image"
|
ANNOUNCE_CURRENT_IMAGE = "Announce current image"
|
||||||
ANNOUNCE_BOOT_COUNTS = "Announce boot counts"
|
ANNOUNCE_BOOT_COUNTS = "Announce boot counts"
|
||||||
|
SET_PREF_SD = "Set preferred SD card"
|
||||||
REBOOT_XSC = "XSC reboot with prompt"
|
REBOOT_XSC = "XSC reboot with prompt"
|
||||||
REBOOT_FULL = "Full regular reboot"
|
REBOOT_FULL = "Full regular reboot"
|
||||||
OBSW_UPDATE_FROM_SD_0 = "Update OBSW from SD Card 0"
|
OBSW_UPDATE_FROM_SD_0 = "Update OBSW from SD Card 0"
|
||||||
@@ -109,6 +119,7 @@ def add_core_controller_definitions(defs: TmtcDefinitionWrapper):
|
|||||||
oce.add(keys=OpCode.XSC_REBOOT_0_1, info="Reboot 0 1")
|
oce.add(keys=OpCode.XSC_REBOOT_0_1, info="Reboot 0 1")
|
||||||
oce.add(keys=OpCode.XSC_REBOOT_1_0, info="Reboot 1 0")
|
oce.add(keys=OpCode.XSC_REBOOT_1_0, info="Reboot 1 0")
|
||||||
oce.add(keys=OpCode.XSC_REBOOT_1_1, info="Reboot 1 1")
|
oce.add(keys=OpCode.XSC_REBOOT_1_1, info="Reboot 1 1")
|
||||||
|
oce.add(keys=OpCode.SET_PREF_SD, info=Info.SET_PREF_SD)
|
||||||
oce.add(keys=OpCode.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=OpCode.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=OpCode.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)
|
||||||
@@ -283,6 +294,23 @@ def pack_core_commands(q: DefaultPusQueueHelper, op_code: str):
|
|||||||
q.add_log_cmd("Requesting housekeeping set")
|
q.add_log_cmd("Requesting housekeeping set")
|
||||||
sid = make_sid(object_id=CORE_CONTROLLER_ID, set_id=SetId.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))
|
||||||
|
elif op_code in OpCode.SET_PREF_SD:
|
||||||
|
q.add_log_cmd("Set preferred SD card")
|
||||||
|
pref_sd = int(
|
||||||
|
input("Specify which SD card to set as the preferred one (0/1): ")
|
||||||
|
)
|
||||||
|
if pref_sd not in [0, 1]:
|
||||||
|
raise ValueError("Only 0 or 1 allowed for preferred SD card")
|
||||||
|
q.add_pus_tc(
|
||||||
|
create_load_param_cmd(
|
||||||
|
create_scalar_u8_parameter(
|
||||||
|
object_id=CORE_CONTROLLER_ID,
|
||||||
|
domain_id=0,
|
||||||
|
unique_id=ParamId.PREF_SD,
|
||||||
|
parameter=pref_sd,
|
||||||
|
).pack()
|
||||||
|
)
|
||||||
|
)
|
||||||
else:
|
else:
|
||||||
_LOGGER.warning(
|
_LOGGER.warning(
|
||||||
f"Unknown operation code {op_code} for core controller commands"
|
f"Unknown operation code {op_code} for core controller commands"
|
||||||
|
Reference in New Issue
Block a user