Compare commits
15 Commits
5f44cb96be
...
v5.0.0
Author | SHA1 | Date | |
---|---|---|---|
c9f4a8070d | |||
b917358b9f | |||
5db9f383a6 | |||
fe3accb9ad | |||
68d74a4748 | |||
b6ec7da7fa | |||
c7df13fa68 | |||
daceb6bc1d | |||
8239e610cc | |||
b28d938468 | |||
e0457831d7 | |||
96fab88a55 | |||
50f2eb42f3 | |||
1bb8bea8d9 | |||
80d231586e |
@ -10,6 +10,12 @@ list yields a list of all related PRs for each release.
|
|||||||
|
|
||||||
# [unreleased]
|
# [unreleased]
|
||||||
|
|
||||||
|
# [v5.0.0]
|
||||||
|
|
||||||
|
## Changed
|
||||||
|
|
||||||
|
- Force flag for copy helper.
|
||||||
|
|
||||||
# [v4.1.0] 2023-06-14
|
# [v4.1.0] 2023-06-14
|
||||||
|
|
||||||
## Added
|
## Added
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
__version__ = "4.1.0"
|
__version__ = "5.0.0"
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
SW_NAME = "eive-tmtc"
|
SW_NAME = "eive-tmtc"
|
||||||
VERSION_MAJOR = 4
|
VERSION_MAJOR = 5
|
||||||
VERSION_MINOR = 1
|
VERSION_MINOR = 0
|
||||||
VERSION_REVISION = 0
|
VERSION_REVISION = 0
|
||||||
|
|
||||||
EIVE_TMTC_ROOT = Path(__file__).parent
|
EIVE_TMTC_ROOT = Path(__file__).parent
|
||||||
|
@ -271,6 +271,7 @@ Event ID (dec); Event ID (hex); Name; Severity; Description; File Path
|
|||||||
14010;0x36ba;TRYING_I2C_RECOVERY;HIGH;I2C is unavailable. Trying recovery of I2C bus by power cycling all I2C devices.;mission/sysDefs.h
|
14010;0x36ba;TRYING_I2C_RECOVERY;HIGH;I2C is unavailable. Trying recovery of I2C bus by power cycling all I2C devices.;mission/sysDefs.h
|
||||||
14011;0x36bb;I2C_REBOOT;HIGH;I2C is unavailable. Recovery did not work, performing full reboot.;mission/sysDefs.h
|
14011;0x36bb;I2C_REBOOT;HIGH;I2C is unavailable. Recovery did not work, performing full reboot.;mission/sysDefs.h
|
||||||
14012;0x36bc;PDEC_REBOOT;HIGH;PDEC recovery through reset was not possible, performing full reboot.;mission/sysDefs.h
|
14012;0x36bc;PDEC_REBOOT;HIGH;PDEC recovery through reset was not possible, performing full reboot.;mission/sysDefs.h
|
||||||
|
14013;0x36bd;FIRMWARE_INFO;INFO;Version information of the firmware (not OBSW). P1: Byte 0: Major, Byte 1: Minor, Byte 2: Patch, Byte 3: Has Git Hash P2: First four letters of Git SHA is the last byte of P1 is set.;mission/sysDefs.h
|
||||||
14100;0x3714;NO_VALID_SENSOR_TEMPERATURE;MEDIUM;No description;mission/controller/tcsDefs.h
|
14100;0x3714;NO_VALID_SENSOR_TEMPERATURE;MEDIUM;No description;mission/controller/tcsDefs.h
|
||||||
14101;0x3715;NO_HEALTHY_HEATER_AVAILABLE;MEDIUM;No description;mission/controller/tcsDefs.h
|
14101;0x3715;NO_HEALTHY_HEATER_AVAILABLE;MEDIUM;No description;mission/controller/tcsDefs.h
|
||||||
14102;0x3716;SYRLINKS_OVERHEATING;HIGH;No description;mission/controller/tcsDefs.h
|
14102;0x3716;SYRLINKS_OVERHEATING;HIGH;No description;mission/controller/tcsDefs.h
|
||||||
|
|
@ -44,6 +44,8 @@ _LOGGER = logging.getLogger(__name__)
|
|||||||
|
|
||||||
|
|
||||||
FORWARD_SENSOR_TEMPS = False
|
FORWARD_SENSOR_TEMPS = False
|
||||||
|
# TODO: Transform this into a CLI argument
|
||||||
|
HK_OUTPUT_LEVEL = 1
|
||||||
|
|
||||||
|
|
||||||
def handle_hk_packet(
|
def handle_hk_packet(
|
||||||
@ -70,6 +72,7 @@ def handle_hk_packet(
|
|||||||
hk_data=hk_data,
|
hk_data=hk_data,
|
||||||
)
|
)
|
||||||
try:
|
try:
|
||||||
|
if HK_OUTPUT_LEVEL > 0:
|
||||||
handle_regular_hk_print(
|
handle_regular_hk_print(
|
||||||
printer=printer,
|
printer=printer,
|
||||||
object_id=named_obj_id,
|
object_id=named_obj_id,
|
||||||
@ -177,6 +180,7 @@ def handle_regular_hk_print( # noqa C901: Complexity okay here
|
|||||||
obj_ids.TMP1075_HANDLER_TCS_BRD_1_ID,
|
obj_ids.TMP1075_HANDLER_TCS_BRD_1_ID,
|
||||||
obj_ids.TMP1075_HANDLER_IF_BRD_ID,
|
obj_ids.TMP1075_HANDLER_IF_BRD_ID,
|
||||||
obj_ids.TMP1075_HANDLER_PLPCDU_0_ID,
|
obj_ids.TMP1075_HANDLER_PLPCDU_0_ID,
|
||||||
|
obj_ids.TMP1075_HANDLER_PLPCDU_1_ID,
|
||||||
]:
|
]:
|
||||||
return handle_tmp_1075_hk_data(set_id=set_id, hk_data=hk_data, pw=pw)
|
return handle_tmp_1075_hk_data(set_id=set_id, hk_data=hk_data, pw=pw)
|
||||||
elif objb == obj_ids.ACS_CONTROLLER:
|
elif objb == obj_ids.ACS_CONTROLLER:
|
||||||
|
@ -32,6 +32,7 @@ class ActionId(enum.IntEnum):
|
|||||||
RESET_REBOOT_COUNTER = 6
|
RESET_REBOOT_COUNTER = 6
|
||||||
SWITCH_IMG_LOCK = 7
|
SWITCH_IMG_LOCK = 7
|
||||||
SET_MAX_REBOOT_CNT = 8
|
SET_MAX_REBOOT_CNT = 8
|
||||||
|
READ_REBOOT_MECHANISM_INFO = 9
|
||||||
UPDATE_OBSW_FROM_SD_0 = 10
|
UPDATE_OBSW_FROM_SD_0 = 10
|
||||||
UPDATE_OBSW_FROM_SD_1 = 11
|
UPDATE_OBSW_FROM_SD_1 = 11
|
||||||
UPDATE_OBSW_FROM_TMP = 12
|
UPDATE_OBSW_FROM_TMP = 12
|
||||||
@ -87,13 +88,14 @@ class OpCode:
|
|||||||
SWITCH_TO_SD_0 = ["switch_to_sd_0"]
|
SWITCH_TO_SD_0 = ["switch_to_sd_0"]
|
||||||
SWITCH_TO_SD_1 = ["switch_to_sd_1"]
|
SWITCH_TO_SD_1 = ["switch_to_sd_1"]
|
||||||
SWITCH_TO_BOTH_SD_CARDS = ["switch_to_both_sd_cards"]
|
SWITCH_TO_BOTH_SD_CARDS = ["switch_to_both_sd_cards"]
|
||||||
ENABLE_REBOOT_FILE_HANDLING = ["rbh_off"]
|
READ_REBOOT_MECHANISM_INFO = "rbh_info"
|
||||||
DISABLE_REBOOT_FILE_HANDLING = ["rbh_on"]
|
ENABLE_REBOOT_FILE_HANDLING = "rbh_off"
|
||||||
RESET_ALL_REBOOT_COUNTERS = ["rbh_reset_a"]
|
DISABLE_REBOOT_FILE_HANDLING = "rbh_on"
|
||||||
RESET_REBOOT_COUNTER_00 = ["rbh_reset_00"]
|
RESET_ALL_REBOOT_COUNTERS = "rbh_reset_a"
|
||||||
RESET_REBOOT_COUNTER_01 = ["rbh_reset_01"]
|
RESET_REBOOT_COUNTER_00 = "rbh_reset_00"
|
||||||
RESET_REBOOT_COUNTER_10 = ["rbh_reset_10"]
|
RESET_REBOOT_COUNTER_01 = "rbh_reset_01"
|
||||||
RESET_REBOOT_COUNTER_11 = ["rbh_reset_11"]
|
RESET_REBOOT_COUNTER_10 = "rbh_reset_10"
|
||||||
|
RESET_REBOOT_COUNTER_11 = "rbh_reset_11"
|
||||||
SET_MAX_REBOOT_CNT = ["rbh_max_cnt"]
|
SET_MAX_REBOOT_CNT = ["rbh_max_cnt"]
|
||||||
|
|
||||||
|
|
||||||
@ -110,6 +112,7 @@ class Info:
|
|||||||
OBSW_UPDATE_FROM_SD_0 = "Update OBSW from SD Card 0"
|
OBSW_UPDATE_FROM_SD_0 = "Update OBSW from SD Card 0"
|
||||||
OBSW_UPDATE_FROM_SD_1 = "Update OBSW from SD Card 1"
|
OBSW_UPDATE_FROM_SD_1 = "Update OBSW from SD Card 1"
|
||||||
OBSW_UPDATE_FROM_TMP = "Update OBSW from tmp folder"
|
OBSW_UPDATE_FROM_TMP = "Update OBSW from tmp folder"
|
||||||
|
READ_REBOOT_MECHANISM_INFO = "Read reboot mechansm information"
|
||||||
SWITCH_TO_SD_0 = "Switch to SD card 0"
|
SWITCH_TO_SD_0 = "Switch to SD card 0"
|
||||||
SWITCH_TO_SD_1 = "Switch to SD card 1"
|
SWITCH_TO_SD_1 = "Switch to SD card 1"
|
||||||
SWITCH_TO_BOTH_SD_CARDS = "Switch to both SD cards with specified active card"
|
SWITCH_TO_BOTH_SD_CARDS = "Switch to both SD cards with specified active card"
|
||||||
@ -154,6 +157,9 @@ def add_core_controller_definitions(defs: TmtcDefinitionWrapper):
|
|||||||
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.SET_PREF_SD, info=Info.SET_PREF_SD)
|
||||||
|
oce.add(
|
||||||
|
keys=OpCode.READ_REBOOT_MECHANISM_INFO, info=Info.READ_REBOOT_MECHANISM_INFO
|
||||||
|
)
|
||||||
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)
|
||||||
@ -294,7 +300,15 @@ def pack_core_commands( # noqa C901
|
|||||||
chip=Chip.CHIP_1,
|
chip=Chip.CHIP_1,
|
||||||
copy=Copy.COPY_1_GOLD,
|
copy=Copy.COPY_1_GOLD,
|
||||||
)
|
)
|
||||||
elif op_code in OpCode.DISABLE_REBOOT_FILE_HANDLING:
|
elif op_code == OpCode.READ_REBOOT_MECHANISM_INFO:
|
||||||
|
q.add_log_cmd(Info.READ_REBOOT_MECHANISM_INFO)
|
||||||
|
q.add_pus_tc(
|
||||||
|
create_action_cmd(
|
||||||
|
object_id=CORE_CONTROLLER_ID,
|
||||||
|
action_id=ActionId.READ_REBOOT_MECHANISM_INFO,
|
||||||
|
)
|
||||||
|
)
|
||||||
|
elif op_code == 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(
|
||||||
@ -304,7 +318,7 @@ def pack_core_commands( # noqa C901
|
|||||||
user_data=user_data,
|
user_data=user_data,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
elif op_code in OpCode.ENABLE_REBOOT_FILE_HANDLING:
|
elif op_code == 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(
|
||||||
@ -314,7 +328,7 @@ def pack_core_commands( # noqa C901
|
|||||||
user_data=user_data,
|
user_data=user_data,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
elif op_code in OpCode.RESET_ALL_REBOOT_COUNTERS:
|
elif op_code == 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(
|
||||||
create_action_cmd(
|
create_action_cmd(
|
||||||
@ -322,13 +336,13 @@ def pack_core_commands( # noqa C901
|
|||||||
action_id=ActionId.RESET_REBOOT_COUNTER,
|
action_id=ActionId.RESET_REBOOT_COUNTER,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
elif op_code in OpCode.RESET_REBOOT_COUNTER_00:
|
elif op_code == OpCode.RESET_REBOOT_COUNTER_00:
|
||||||
reset_specific_boot_counter(q, 0, 0)
|
reset_specific_boot_counter(q, 0, 0)
|
||||||
elif op_code in OpCode.RESET_REBOOT_COUNTER_01:
|
elif op_code == OpCode.RESET_REBOOT_COUNTER_01:
|
||||||
reset_specific_boot_counter(q, 0, 1)
|
reset_specific_boot_counter(q, 0, 1)
|
||||||
elif op_code in OpCode.RESET_REBOOT_COUNTER_10:
|
elif op_code == OpCode.RESET_REBOOT_COUNTER_10:
|
||||||
reset_specific_boot_counter(q, 1, 0)
|
reset_specific_boot_counter(q, 1, 0)
|
||||||
elif op_code in OpCode.RESET_REBOOT_COUNTER_11:
|
elif op_code == OpCode.RESET_REBOOT_COUNTER_11:
|
||||||
reset_specific_boot_counter(q, 1, 1)
|
reset_specific_boot_counter(q, 1, 1)
|
||||||
elif op_code in OpCode.OBSW_UPDATE_FROM_SD_0:
|
elif 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)
|
||||||
@ -385,14 +399,17 @@ def pack_core_commands( # noqa C901
|
|||||||
domain_id=0,
|
domain_id=0,
|
||||||
unique_id=ParamId.PREF_SD,
|
unique_id=ParamId.PREF_SD,
|
||||||
parameter=pref_sd,
|
parameter=pref_sd,
|
||||||
).pack()
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
elif op_code == OpCode.CP_HELPER:
|
elif op_code == OpCode.CP_HELPER:
|
||||||
cp_recursive = int(input("Copy recursively (0/1) ?: "))
|
cp_recursive = int(input("Copy recursively (0/1) ?: "))
|
||||||
if cp_recursive not in [0, 1]:
|
if cp_recursive not in [0, 1]:
|
||||||
raise ValueError("Invalid value, only 0 or 1 allowed")
|
raise ValueError("Invalid value, only 0 or 1 allowed")
|
||||||
user_data = bytearray([cp_recursive])
|
cp_force = int(input("Copy with force option(0/1) ?: "))
|
||||||
|
if cp_force not in [0, 1]:
|
||||||
|
raise ValueError("Invalid value, only 0 or 1 allowed")
|
||||||
|
user_data = bytearray([cp_recursive, cp_force])
|
||||||
user_data.extend(packet_source_dest_path("Copy"))
|
user_data.extend(packet_source_dest_path("Copy"))
|
||||||
q.add_log_cmd(Info.CP_HELPER)
|
q.add_log_cmd(Info.CP_HELPER)
|
||||||
q.add_pus_tc(
|
q.add_pus_tc(
|
||||||
@ -603,7 +620,51 @@ def handle_core_hk_data(pw: PrintWrapper, set_id: int, hk_data: bytes):
|
|||||||
def handle_core_ctrl_action_replies(
|
def handle_core_ctrl_action_replies(
|
||||||
action_id: int, pw: PrintWrapper, custom_data: bytes
|
action_id: int, pw: PrintWrapper, custom_data: bytes
|
||||||
):
|
):
|
||||||
if action_id == ActionId.LIST_DIR_DUMP_DIRECTLY:
|
if action_id == ActionId.READ_REBOOT_MECHANISM_INFO:
|
||||||
|
handle_reboot_mechanism_info_reply(pw, custom_data)
|
||||||
|
elif action_id == ActionId.LIST_DIR_DUMP_DIRECTLY:
|
||||||
|
handle_list_dir_dump_reply(pw, custom_data)
|
||||||
|
|
||||||
|
|
||||||
|
def handle_reboot_mechanism_info_reply(pw: PrintWrapper, custom_data: bytes):
|
||||||
|
pw.dlog("Received reboot mechansm information")
|
||||||
|
fmt_str = "!BIIIIIBBBBBBBB"
|
||||||
|
inc_len = struct.calcsize(fmt_str)
|
||||||
|
if len(custom_data) < inc_len:
|
||||||
|
raise ValueError(f"Received custom data shorter than expected {inc_len}")
|
||||||
|
(
|
||||||
|
enabled,
|
||||||
|
max_count,
|
||||||
|
img00_count,
|
||||||
|
img01_count,
|
||||||
|
img10_count,
|
||||||
|
img11_count,
|
||||||
|
img00_lock,
|
||||||
|
img01_lock,
|
||||||
|
img10_lock,
|
||||||
|
img11_lock,
|
||||||
|
last_chip,
|
||||||
|
last_copy,
|
||||||
|
next_chip,
|
||||||
|
next_copy,
|
||||||
|
) = struct.unpack(fmt_str, custom_data[:inc_len])
|
||||||
|
pw.dlog(f"Enabled: {enabled}")
|
||||||
|
pw.dlog(f"Max Count: {max_count}")
|
||||||
|
pw.dlog(f"Count 00: {img00_count}")
|
||||||
|
pw.dlog(f"Count 01: {img01_count}")
|
||||||
|
pw.dlog(f"Count 10: {img10_count}")
|
||||||
|
pw.dlog(f"Count 11: {img11_count}")
|
||||||
|
pw.dlog(f"Lock 00: {img00_lock}")
|
||||||
|
pw.dlog(f"Lock 01: {img01_lock}")
|
||||||
|
pw.dlog(f"Lock 10: {img10_lock}")
|
||||||
|
pw.dlog(f"Lock 11: {img11_lock}")
|
||||||
|
pw.dlog(f"Last Chip: {last_chip}")
|
||||||
|
pw.dlog(f"Last Copy: {last_copy}")
|
||||||
|
pw.dlog(f"Next Chip: {next_chip}")
|
||||||
|
pw.dlog(f"Next Copy: {next_copy}")
|
||||||
|
|
||||||
|
|
||||||
|
def handle_list_dir_dump_reply(pw: PrintWrapper, custom_data: bytes):
|
||||||
if len(custom_data) < 4:
|
if len(custom_data) < 4:
|
||||||
_LOGGER.warning("Data unexpectedly small")
|
_LOGGER.warning("Data unexpectedly small")
|
||||||
return
|
return
|
||||||
@ -633,9 +694,7 @@ def handle_core_ctrl_action_replies(
|
|||||||
else:
|
else:
|
||||||
path = Path("dir_listing.txt")
|
path = Path("dir_listing.txt")
|
||||||
remove_if_exists_and_new(seq_idx, path)
|
remove_if_exists_and_new(seq_idx, path)
|
||||||
pw.dlog(
|
pw.dlog(f"Compression option: {compressed}. Dumping file into dir_listing.txt")
|
||||||
f"Compression option: {compressed}. Dumping file into dir_listing.txt"
|
|
||||||
)
|
|
||||||
with open(path, "a") as listing_file:
|
with open(path, "a") as listing_file:
|
||||||
listing_file_str = custom_data[file_data_offset:].decode()
|
listing_file_str = custom_data[file_data_offset:].decode()
|
||||||
listing_file.write(listing_file_str)
|
listing_file.write(listing_file_str)
|
||||||
|
@ -13,6 +13,7 @@ from tmtccmd.tc.pus_200_fsfw_mode import Mode, create_announce_mode_recursive_co
|
|||||||
from tmtccmd.tc.pus_3_fsfw_hk import (
|
from tmtccmd.tc.pus_3_fsfw_hk import (
|
||||||
make_sid,
|
make_sid,
|
||||||
generate_one_hk_command,
|
generate_one_hk_command,
|
||||||
|
create_enable_periodic_hk_command_with_interval,
|
||||||
create_request_one_diag_command,
|
create_request_one_diag_command,
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -21,6 +22,7 @@ class OpCodeSys:
|
|||||||
OFF = ["off"]
|
OFF = ["off"]
|
||||||
NML = ["nml"]
|
NML = ["nml"]
|
||||||
REQUEST_PRIMARY_TEMP_SET = ["temp"]
|
REQUEST_PRIMARY_TEMP_SET = ["temp"]
|
||||||
|
ENABLE_TEMP_SET = "enable_temp_set"
|
||||||
REQUEST_DEVICE_TEMP_SET = ["temp_devs"]
|
REQUEST_DEVICE_TEMP_SET = ["temp_devs"]
|
||||||
REQUEST_DEVICE_SUS_SET = ["temp_sus"]
|
REQUEST_DEVICE_SUS_SET = ["temp_sus"]
|
||||||
REQUEST_HEATER_INFO = "heater_info"
|
REQUEST_HEATER_INFO = "heater_info"
|
||||||
@ -30,6 +32,7 @@ class OpCodeSys:
|
|||||||
class InfoSys:
|
class InfoSys:
|
||||||
OFF = "Switch TCS subsystem OFF"
|
OFF = "Switch TCS subsystem OFF"
|
||||||
NML = "Switch TCS subsystem NORMAL (nominal)"
|
NML = "Switch TCS subsystem NORMAL (nominal)"
|
||||||
|
ENABLE_TEMP_SET = "Enable Primary Temperature Set"
|
||||||
REQUEST_PRIMARY_TEMP_SET = "Request HK set of primary sensor temperatures"
|
REQUEST_PRIMARY_TEMP_SET = "Request HK set of primary sensor temperatures"
|
||||||
REQUEST_DEVICE_TEMP_SET = "Request HK set of device sensor temperatures"
|
REQUEST_DEVICE_TEMP_SET = "Request HK set of device sensor temperatures"
|
||||||
REQUEST_DEVICE_SUS_SET = "Request HK set of the SUS temperatures"
|
REQUEST_DEVICE_SUS_SET = "Request HK set of the SUS temperatures"
|
||||||
@ -67,6 +70,13 @@ def pack_tcs_sys_commands(q: DefaultPusQueueHelper, op_code: str):
|
|||||||
if op_code in OpCodeSys.NML:
|
if op_code in OpCodeSys.NML:
|
||||||
q.add_log_cmd(InfoSys.NML)
|
q.add_log_cmd(InfoSys.NML)
|
||||||
pack_mode_cmd_with_info(TCS_SUBSYSTEM_ID, Mode.NORMAL, 0, q, InfoSys.OFF)
|
pack_mode_cmd_with_info(TCS_SUBSYSTEM_ID, Mode.NORMAL, 0, q, InfoSys.OFF)
|
||||||
|
if op_code == OpCodeSys.ENABLE_TEMP_SET:
|
||||||
|
interval_seconds = float(input("Please specify interval in seconds: "))
|
||||||
|
cmds = create_enable_periodic_hk_command_with_interval(
|
||||||
|
False, make_sid(TCS_CONTROLLER, CtrlSetId.PRIMARY_SENSORS), interval_seconds
|
||||||
|
)
|
||||||
|
for cmd in cmds:
|
||||||
|
q.add_pus_tc(cmd)
|
||||||
if op_code == OpCodeSys.ANNOUNCE_MODES:
|
if op_code == OpCodeSys.ANNOUNCE_MODES:
|
||||||
q.add_log_cmd(InfoSys.ANNOUNCE_MODES)
|
q.add_log_cmd(InfoSys.ANNOUNCE_MODES)
|
||||||
q.add_pus_tc(create_announce_mode_recursive_command(TCS_SUBSYSTEM_ID))
|
q.add_pus_tc(create_announce_mode_recursive_command(TCS_SUBSYSTEM_ID))
|
||||||
@ -87,8 +97,9 @@ def add_tcs_subsystem_cmds(defs: TmtcDefinitionWrapper):
|
|||||||
oce.add(keys=OpCodeSys.REQUEST_DEVICE_SUS_SET, info=InfoSys.REQUEST_DEVICE_SUS_SET)
|
oce.add(keys=OpCodeSys.REQUEST_DEVICE_SUS_SET, info=InfoSys.REQUEST_DEVICE_SUS_SET)
|
||||||
oce.add(keys=OpCodeSys.REQUEST_HEATER_INFO, info=InfoSys.REQUEST_HEATER_INFO)
|
oce.add(keys=OpCodeSys.REQUEST_HEATER_INFO, info=InfoSys.REQUEST_HEATER_INFO)
|
||||||
oce.add(keys=OpCodeSys.ANNOUNCE_MODES, info=InfoSys.ANNOUNCE_MODES)
|
oce.add(keys=OpCodeSys.ANNOUNCE_MODES, info=InfoSys.ANNOUNCE_MODES)
|
||||||
|
oce.add(keys=OpCodeSys.ENABLE_TEMP_SET, info=InfoSys.ENABLE_TEMP_SET)
|
||||||
defs.add_service(
|
defs.add_service(
|
||||||
name=CustomServiceList.TCS,
|
name=CustomServiceList.TCS,
|
||||||
info="TCS Board",
|
info="TCS",
|
||||||
op_code_entry=oce,
|
op_code_entry=oce,
|
||||||
)
|
)
|
||||||
|
Reference in New Issue
Block a user