Compare commits
26 Commits
77fbcede10
...
v2.17.0
Author | SHA1 | Date | |
---|---|---|---|
bf31810f25 | |||
9462a6e245 | |||
208d328683 | |||
90ea903c0a | |||
2aa1ecd3a7 | |||
f18a7f49cf | |||
7f872c92c4 | |||
82352bc5fa | |||
a5bfee076a | |||
0c17203825 | |||
beb8e61e2c | |||
e9d10dae1b | |||
b959f60f0a | |||
3e666d76b7 | |||
7eafefc93b | |||
09c694cf9c | |||
94ae2d16e2 | |||
68a4764a56 | |||
a9e59ae42b | |||
3522405e8a | |||
783d5a8ed5 | |||
fc9b4efecf | |||
2468998dbd | |||
74e6d6fe5f | |||
cd393a1596 | |||
8747333880 |
15
CHANGELOG.md
15
CHANGELOG.md
@ -10,6 +10,21 @@ list yields a list of all related PRs for each release.
|
|||||||
|
|
||||||
# [unreleased]
|
# [unreleased]
|
||||||
|
|
||||||
|
# [v2.17.0] 2023-03-07
|
||||||
|
|
||||||
|
## Added
|
||||||
|
|
||||||
|
- Health set and health announce commands
|
||||||
|
- Camera Switcher, Syrlinks Assembly, IMTQ assembly and Star Tracker assembly object IDs added
|
||||||
|
|
||||||
|
# [v2.16.4] 2023-03-04
|
||||||
|
|
||||||
|
## Added
|
||||||
|
|
||||||
|
- Some more IMTQ commands
|
||||||
|
|
||||||
|
# [v2.16.3] 2023-03-03
|
||||||
|
|
||||||
## Added
|
## Added
|
||||||
|
|
||||||
- Syrlinks ASSY object ID
|
- Syrlinks ASSY object ID
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
__version__ = "2.16.2"
|
__version__ = "2.17.0"
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
SW_NAME = "eive-tmtc"
|
SW_NAME = "eive-tmtc"
|
||||||
VERSION_MAJOR = 2
|
VERSION_MAJOR = 2
|
||||||
VERSION_MINOR = 16
|
VERSION_MINOR = 17
|
||||||
VERSION_REVISION = 2
|
VERSION_REVISION = 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
|
||||||
|
@ -136,6 +136,10 @@ ACS_BOARD_ASS_ID = bytes([0x73, 0x00, 0x00, 0x01])
|
|||||||
SUS_BOARD_ASS_ID = bytes([0x73, 0x00, 0x00, 0x02])
|
SUS_BOARD_ASS_ID = bytes([0x73, 0x00, 0x00, 0x02])
|
||||||
TCS_BOARD_ASS_ID = bytes([0x73, 0x00, 0x00, 0x03])
|
TCS_BOARD_ASS_ID = bytes([0x73, 0x00, 0x00, 0x03])
|
||||||
RW_ASSEMBLY = bytes([0x73, 0x00, 0x00, 0x04])
|
RW_ASSEMBLY = bytes([0x73, 0x00, 0x00, 0x04])
|
||||||
|
CAM_SWITCHER = bytes([0x73, 0x00, 0x00, 0x06])
|
||||||
|
SYRLINKS_ASSEMBLY = bytes([0x73, 0x00, 0x00, 0x07])
|
||||||
|
IMTQ_ASSEMBLY = bytes([0x73, 0x00, 0x00, 0x08])
|
||||||
|
STR_ASSEMBLY = bytes([0x73, 0x00, 0x00, 0x09])
|
||||||
|
|
||||||
# Controllers
|
# Controllers
|
||||||
TCS_CONTROLLER = bytes([0x43, 0x40, 0x00, 0x01])
|
TCS_CONTROLLER = bytes([0x43, 0x40, 0x00, 0x01])
|
||||||
|
@ -142,6 +142,7 @@
|
|||||||
0x73000004;RW_ASSY
|
0x73000004;RW_ASSY
|
||||||
0x73000006;CAM_SWITCHER
|
0x73000006;CAM_SWITCHER
|
||||||
0x73000007;SYRLINKS_ASSY
|
0x73000007;SYRLINKS_ASSY
|
||||||
|
0x73000008;IMTQ_ASSY
|
||||||
0x73000100;TM_FUNNEL
|
0x73000100;TM_FUNNEL
|
||||||
0x73000101;PUS_TM_FUNNEL
|
0x73000101;PUS_TM_FUNNEL
|
||||||
0x73000102;CFDP_TM_FUNNEL
|
0x73000102;CFDP_TM_FUNNEL
|
||||||
|
|
@ -21,68 +21,3 @@ def get_eive_service_op_code_dict() -> TmtcDefinitionWrapper:
|
|||||||
)
|
)
|
||||||
call_all_definitions_providers(def_wrapper)
|
call_all_definitions_providers(def_wrapper)
|
||||||
return def_wrapper
|
return def_wrapper
|
||||||
|
|
||||||
|
|
||||||
@tmtc_definitions_provider
|
|
||||||
def add_str_cmds(defs: TmtcDefinitionWrapper):
|
|
||||||
oce = OpCodeEntry()
|
|
||||||
oce.add("0", "Star Tracker: Mode On, Submode Bootloader")
|
|
||||||
oce.add("1", "Star Tracker: Mode On, Submode Firmware")
|
|
||||||
oce.add("2", "Star Tracker: Mode Normal")
|
|
||||||
oce.add("3", "Star Tracker: Mode Off")
|
|
||||||
oce.add("4", "Star Tracker: Mode Raw")
|
|
||||||
oce.add("5", "Star Tracker: Ping")
|
|
||||||
oce.add("6", "Star Tracker: Switch to bootloader program")
|
|
||||||
oce.add("7", "Star Tracker: Request temperature")
|
|
||||||
oce.add("8", "Star Tracker: Request version")
|
|
||||||
oce.add("9", "Star Tracker: Request interface")
|
|
||||||
oce.add("10", "Star Tracker: Request power")
|
|
||||||
oce.add("11", "Star Tracker: Set subscription parameters")
|
|
||||||
oce.add("12", "Star Tracker: Boot image (requires bootloader mode)")
|
|
||||||
oce.add("13", "Star Tracker: Request time")
|
|
||||||
oce.add("14", "Star Tracker: Request solution")
|
|
||||||
oce.add("15", "Star Tracker: Upload image")
|
|
||||||
oce.add("16", "Star Tracker: Download image")
|
|
||||||
oce.add("17", "Star Tracker: Set limit parameters")
|
|
||||||
oce.add("17", "Star Tracker: Set limit parameters")
|
|
||||||
oce.add("18", "Star Tracker: Set tracking parameters")
|
|
||||||
oce.add("19", "Star Tracker: Set mounting parameters")
|
|
||||||
oce.add("20", "Star Tracker: Set camera parameters")
|
|
||||||
oce.add("22", "Star Tracker: Set centroiding parameters")
|
|
||||||
oce.add("23", "Star Tracker: Set LISA parameters")
|
|
||||||
oce.add("24", "Star Tracker: Set matching parameters")
|
|
||||||
oce.add("25", "Star Tracker: Set validation parameters")
|
|
||||||
oce.add("26", "Star Tracker: Set algo parameters")
|
|
||||||
oce.add("27", "Star Tracker: Take image")
|
|
||||||
oce.add("28", "Star Tracker: Stop str helper")
|
|
||||||
oce.add("30", "Star Tracker: Set name of download image")
|
|
||||||
oce.add("31", "Star Tracker: Request histogram")
|
|
||||||
oce.add("32", "Star Tracker: Request contrast")
|
|
||||||
oce.add("33", "Star Tracker: Set json filename")
|
|
||||||
oce.add("35", "Star Tracker: Flash read")
|
|
||||||
oce.add("36", "Star Tracker: Set flash read filename")
|
|
||||||
oce.add("37", "Star Tracker: Get checksum")
|
|
||||||
oce.add("49", "Star Tracker: Request camera parameter")
|
|
||||||
oce.add("50", "Star Tracker: Request limits")
|
|
||||||
oce.add("51", "Star Tracker: Set image processor parameters")
|
|
||||||
oce.add("52", "Star Tracker: (EGSE only) Load camera ground config")
|
|
||||||
oce.add("53", "Star Tracker: (EGSE only) Load camera flight config")
|
|
||||||
oce.add("54", "Star Tracker: Request log level parameters")
|
|
||||||
oce.add("55", "Star Tracker: Request mounting parameters")
|
|
||||||
oce.add("56", "Star Tracker: Request image processor parameters")
|
|
||||||
oce.add("57", "Star Tracker: Request centroiding parameters")
|
|
||||||
oce.add("58", "Star Tracker: Request lisa parameters")
|
|
||||||
oce.add("59", "Star Tracker: Request matching parameters")
|
|
||||||
oce.add("60", "Star Tracker: Request tracking parameters")
|
|
||||||
oce.add("61", "Star Tracker: Request validation parameters")
|
|
||||||
oce.add("62", "Star Tracker: Request algo parameters")
|
|
||||||
oce.add("63", "Star Tracker: Request subscription parameters")
|
|
||||||
oce.add("64", "Star Tracker: Request log subscription parameters")
|
|
||||||
oce.add("65", "Star Tracker: Request debug camera parameters")
|
|
||||||
oce.add("66", "Star Tracker: Set log level parameters")
|
|
||||||
oce.add("67", "Star Tracker: Set log subscription parameters")
|
|
||||||
oce.add("68", "Star Tracker: Set debug camera parameters")
|
|
||||||
oce.add("69", "Star Tracker: Firmware update")
|
|
||||||
oce.add("70", "Star Tracker: Disable timestamp generation")
|
|
||||||
oce.add("71", "Star Tracker: Enable timestamp generation")
|
|
||||||
defs.add_service(CustomServiceList.STAR_TRACKER.value, "Star Tracker", oce)
|
|
||||||
|
@ -41,12 +41,18 @@ class OpCode:
|
|||||||
NORMAL = "normal"
|
NORMAL = "normal"
|
||||||
OFF = "off"
|
OFF = "off"
|
||||||
SET_DIPOLE = "set_dipole"
|
SET_DIPOLE = "set_dipole"
|
||||||
REQUEST_ENG_HK_NO_TORQUE = "hk_os_eng_hk"
|
REQUEST_ENG_HK_NO_TORQUE = "hk_os_eng_hk_no_torque"
|
||||||
REQUEST_MGM_RAW_NO_TORQUE = "hk_os_mgm_raw"
|
REQUEST_ENG_HK_WITH_TORQUE = "hk_os_eng_hk_with_torque"
|
||||||
|
REQUEST_MGM_RAW_NO_TORQUE = "hk_os_mgm_raw_no_torque"
|
||||||
ENABLE_MGM_RAW_NO_TORQUE = "enb_mgm_raw_no_torque"
|
ENABLE_MGM_RAW_NO_TORQUE = "enb_mgm_raw_no_torque"
|
||||||
DISABLE_MGM_RAW_NO_TORQUE = "dis_mgm_raw_no_torque"
|
DISABLE_MGM_RAW_NO_TORQUE = "dis_mgm_raw_no_torque"
|
||||||
|
REQUEST_MGM_RAW_WITH_TORQUE = "hk_os_mgm_raw_with_torque"
|
||||||
|
ENABLE_MGM_RAW_WITH_TORQUE = "enb_mgm_raw_with_torque"
|
||||||
|
DISABLE_MGM_RAW_WITH_TORQUE = "dis_mgm_raw_with_torque"
|
||||||
ENABLE_ENG_HK_NO_TORQUE = "enb_eng_hk_no_torque"
|
ENABLE_ENG_HK_NO_TORQUE = "enb_eng_hk_no_torque"
|
||||||
DISABLE_ENG_HK_NO_TORQUE = "dis_eng_hk_no_torque"
|
DISABLE_ENG_HK_NO_TORQUE = "dis_eng_hk_no_torque"
|
||||||
|
ENABLE_ENG_HK_WITH_TORQUE = "enb_eng_hk_with_torque"
|
||||||
|
DISABLE_ENG_HK_WITH_TORQUE = "dis_eng_hk_with_torque"
|
||||||
POS_X_SELF_TEST = "self_test_pos_x"
|
POS_X_SELF_TEST = "self_test_pos_x"
|
||||||
NEG_X_SELF_TEST = "self_test_neg_x"
|
NEG_X_SELF_TEST = "self_test_neg_x"
|
||||||
POS_Y_SELF_TEST = "self_test_pos_y"
|
POS_Y_SELF_TEST = "self_test_pos_y"
|
||||||
@ -70,7 +76,6 @@ class ImtqSetId(enum.IntEnum):
|
|||||||
NEGATIVE_Y_TEST = 13
|
NEGATIVE_Y_TEST = 13
|
||||||
POSITIVE_Z_TEST = 14
|
POSITIVE_Z_TEST = 14
|
||||||
NEGATIVE_Z_TEST = 15
|
NEGATIVE_Z_TEST = 15
|
||||||
SELF_TEST_SET = 16
|
|
||||||
|
|
||||||
|
|
||||||
class ImtqActionId:
|
class ImtqActionId:
|
||||||
@ -94,7 +99,24 @@ def add_imtq_cmds(defs: TmtcDefinitionWrapper):
|
|||||||
oce.add(OpCode.ON, "Mode On")
|
oce.add(OpCode.ON, "Mode On")
|
||||||
oce.add(OpCode.NORMAL, "Mode Normal")
|
oce.add(OpCode.NORMAL, "Mode Normal")
|
||||||
oce.add(OpCode.REQUEST_ENG_HK_NO_TORQUE, "Request Engineering HK One Shot")
|
oce.add(OpCode.REQUEST_ENG_HK_NO_TORQUE, "Request Engineering HK One Shot")
|
||||||
oce.add(OpCode.REQUEST_MGM_RAW_NO_TORQUE, "Request MGM Raw HK One Shot")
|
oce.add(
|
||||||
|
OpCode.REQUEST_ENG_HK_WITH_TORQUE,
|
||||||
|
"Request Engineering HK One Shot during Torque",
|
||||||
|
)
|
||||||
|
oce.add(OpCode.ENABLE_ENG_HK_NO_TORQUE, "Enable ENG HK not torque")
|
||||||
|
oce.add(OpCode.ENABLE_ENG_HK_WITH_TORQUE, "Enable ENG HK with torque")
|
||||||
|
oce.add(OpCode.DISABLE_ENG_HK_NO_TORQUE, "Disable ENG HK not torque")
|
||||||
|
oce.add(OpCode.DISABLE_ENG_HK_WITH_TORQUE, "Disable ENG HK with torque")
|
||||||
|
oce.add(
|
||||||
|
OpCode.REQUEST_MGM_RAW_NO_TORQUE, "Request MGM Raw Without Torque HK One Shot"
|
||||||
|
)
|
||||||
|
oce.add(OpCode.ENABLE_MGM_RAW_NO_TORQUE, "Enable MGM Raw Without Torque HK")
|
||||||
|
oce.add(OpCode.DISABLE_MGM_RAW_NO_TORQUE, "Disable MGM Raw Without Torque HK")
|
||||||
|
oce.add(
|
||||||
|
OpCode.REQUEST_MGM_RAW_WITH_TORQUE, "Request MGM Raw With Torque HK One Shot"
|
||||||
|
)
|
||||||
|
oce.add(OpCode.ENABLE_MGM_RAW_WITH_TORQUE, "Enable MGM Raw With Torque HK")
|
||||||
|
oce.add(OpCode.DISABLE_MGM_RAW_WITH_TORQUE, "Disable MGM Raw With Torque HK")
|
||||||
oce.add(OpCode.POS_X_SELF_TEST, "IMTQ perform pos X self test")
|
oce.add(OpCode.POS_X_SELF_TEST, "IMTQ perform pos X self test")
|
||||||
oce.add(OpCode.NEG_X_SELF_TEST, "IMTQ perform neg X self test")
|
oce.add(OpCode.NEG_X_SELF_TEST, "IMTQ perform neg X self test")
|
||||||
oce.add(OpCode.POS_Y_SELF_TEST, "IMTQ perform pos Y self test")
|
oce.add(OpCode.POS_Y_SELF_TEST, "IMTQ perform pos Y self test")
|
||||||
@ -217,21 +239,11 @@ def pack_imtq_test_into(object_id: ObjectIdU32, q: DefaultPusQueueHelper, op_cod
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
if op_code == "10":
|
if op_code == "10": # doesnt seem to work anymore
|
||||||
q.add_log_cmd("IMTQ: Get commanded dipole")
|
q.add_log_cmd("IMTQ: Get commanded dipole")
|
||||||
command = object_id.as_bytes + ImtqActionId.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 == OpCode.ENABLE_MGM_RAW_NO_TORQUE:
|
|
||||||
q.add_log_cmd("IMTQ: Eable MGM RAW HK (No Torque)")
|
|
||||||
interval = float(input("Please enter collection interval in seconds: "))
|
|
||||||
cmds = create_enable_periodic_hk_command_with_interval(
|
|
||||||
diag=True,
|
|
||||||
sid=make_sid(object_id.as_bytes, ImtqSetId.RAW_MTM_NO_TORQUE),
|
|
||||||
interval_seconds=interval,
|
|
||||||
)
|
|
||||||
for cmd in cmds:
|
|
||||||
q.add_pus_tc(cmd)
|
|
||||||
if op_code == OpCode.ENABLE_ENG_HK_NO_TORQUE:
|
if op_code == OpCode.ENABLE_ENG_HK_NO_TORQUE:
|
||||||
q.add_log_cmd("IMTQ: Enable ENG HK")
|
q.add_log_cmd("IMTQ: Enable ENG HK")
|
||||||
interval = float(input("Please enter collection interval in seconds: "))
|
interval = float(input("Please enter collection interval in seconds: "))
|
||||||
@ -242,13 +254,6 @@ def pack_imtq_test_into(object_id: ObjectIdU32, q: DefaultPusQueueHelper, op_cod
|
|||||||
)
|
)
|
||||||
for cmd in cmds:
|
for cmd in cmds:
|
||||||
q.add_pus_tc(cmd)
|
q.add_pus_tc(cmd)
|
||||||
if op_code == OpCode.DISABLE_MGM_RAW_NO_TORQUE:
|
|
||||||
q.add_log_cmd("IMTQ: Disable MGM RAW HK (No Torque)")
|
|
||||||
q.add_pus_tc(
|
|
||||||
create_disable_periodic_hk_command(
|
|
||||||
True, make_sid(object_id.as_bytes, ImtqSetId.RAW_MTM_NO_TORQUE)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
if op_code == OpCode.DISABLE_ENG_HK_NO_TORQUE:
|
if op_code == OpCode.DISABLE_ENG_HK_NO_TORQUE:
|
||||||
q.add_log_cmd("IMTQ: Disable ENG HK (No Torque)")
|
q.add_log_cmd("IMTQ: Disable ENG HK (No Torque)")
|
||||||
q.add_pus_tc(
|
q.add_pus_tc(
|
||||||
@ -256,8 +261,35 @@ def pack_imtq_test_into(object_id: ObjectIdU32, q: DefaultPusQueueHelper, op_cod
|
|||||||
True, make_sid(object_id.as_bytes, ImtqSetId.ENG_HK_NO_TORQUE)
|
True, make_sid(object_id.as_bytes, ImtqSetId.ENG_HK_NO_TORQUE)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
if op_code == OpCode.REQUEST_ENG_HK_WITH_TORQUE:
|
||||||
|
q.add_log_cmd("IMTQ: Get engineering hk set with torque")
|
||||||
|
q.add_pus_tc(
|
||||||
|
create_request_one_diag_command(
|
||||||
|
sid=make_sid(
|
||||||
|
object_id=object_id.as_bytes,
|
||||||
|
set_id=ImtqSetId.ENG_HK_SET_WITH_TORQUE,
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
if op_code == OpCode.ENABLE_ENG_HK_WITH_TORQUE:
|
||||||
|
q.add_log_cmd("IMTQ: Enable ENG HK with torque")
|
||||||
|
interval = float(input("Please enter collection interval in seconds: "))
|
||||||
|
cmds = create_enable_periodic_hk_command_with_interval(
|
||||||
|
diag=True,
|
||||||
|
sid=make_sid(object_id.as_bytes, ImtqSetId.ENG_HK_SET_WITH_TORQUE),
|
||||||
|
interval_seconds=interval,
|
||||||
|
)
|
||||||
|
for cmd in cmds:
|
||||||
|
q.add_pus_tc(cmd)
|
||||||
|
if op_code == OpCode.DISABLE_ENG_HK_WITH_TORQUE:
|
||||||
|
q.add_log_cmd("IMTQ: Disable ENG HK with Torque")
|
||||||
|
q.add_pus_tc(
|
||||||
|
create_disable_periodic_hk_command(
|
||||||
|
True, make_sid(object_id.as_bytes, ImtqSetId.ENG_HK_SET_WITH_TORQUE)
|
||||||
|
)
|
||||||
|
)
|
||||||
if op_code == OpCode.REQUEST_ENG_HK_NO_TORQUE:
|
if op_code == OpCode.REQUEST_ENG_HK_NO_TORQUE:
|
||||||
q.add_log_cmd("IMTQ: Get engineering hk set")
|
q.add_log_cmd("IMTQ: Get engineering hk set (no torque)")
|
||||||
q.add_pus_tc(
|
q.add_pus_tc(
|
||||||
generate_one_diag_command(
|
generate_one_diag_command(
|
||||||
sid=make_sid(
|
sid=make_sid(
|
||||||
@ -284,6 +316,50 @@ def pack_imtq_test_into(object_id: ObjectIdU32, q: DefaultPusQueueHelper, op_cod
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if op_code == OpCode.DISABLE_MGM_RAW_NO_TORQUE:
|
||||||
|
q.add_log_cmd("IMTQ: Disable MGM RAW HK (No Torque)")
|
||||||
|
q.add_pus_tc(
|
||||||
|
create_disable_periodic_hk_command(
|
||||||
|
True, make_sid(object_id.as_bytes, ImtqSetId.RAW_MTM_NO_TORQUE)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
if op_code == OpCode.ENABLE_MGM_RAW_NO_TORQUE:
|
||||||
|
q.add_log_cmd("IMTQ: Enable MGM RAW HK (No Torque)")
|
||||||
|
interval = float(input("Please enter collection interval in seconds: "))
|
||||||
|
cmds = create_enable_periodic_hk_command_with_interval(
|
||||||
|
diag=True,
|
||||||
|
sid=make_sid(object_id.as_bytes, ImtqSetId.RAW_MTM_NO_TORQUE),
|
||||||
|
interval_seconds=interval,
|
||||||
|
)
|
||||||
|
for cmd in cmds:
|
||||||
|
q.add_pus_tc(cmd)
|
||||||
|
if op_code == OpCode.REQUEST_MGM_RAW_WITH_TORQUE:
|
||||||
|
q.add_log_cmd("IMTQ: Get raw MTM hk set")
|
||||||
|
q.add_pus_tc(
|
||||||
|
create_request_one_diag_command(
|
||||||
|
sid=make_sid(
|
||||||
|
object_id=object_id.as_bytes, set_id=ImtqSetId.RAW_MTM_WITH_TORQUE
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
if op_code == OpCode.ENABLE_MGM_RAW_WITH_TORQUE:
|
||||||
|
q.add_log_cmd("IMTQ: Enable MGM RAW HK (No Torque)")
|
||||||
|
interval = float(input("Please enter collection interval in seconds: "))
|
||||||
|
cmds = create_enable_periodic_hk_command_with_interval(
|
||||||
|
diag=True,
|
||||||
|
sid=make_sid(object_id.as_bytes, ImtqSetId.RAW_MTM_WITH_TORQUE),
|
||||||
|
interval_seconds=interval,
|
||||||
|
)
|
||||||
|
for cmd in cmds:
|
||||||
|
q.add_pus_tc(cmd)
|
||||||
|
if op_code == OpCode.DISABLE_MGM_RAW_WITH_TORQUE:
|
||||||
|
q.add_log_cmd("IMTQ: Disable MGM RAW HK (No Torque)")
|
||||||
|
q.add_pus_tc(
|
||||||
|
create_disable_periodic_hk_command(
|
||||||
|
True, make_sid(object_id.as_bytes, ImtqSetId.RAW_MTM_WITH_TORQUE)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def pack_dipole_command(
|
def pack_dipole_command(
|
||||||
object_id: bytes, x_dipole: int, y_dipole: int, z_dipole: int, duration: int
|
object_id: bytes, x_dipole: int, y_dipole: int, z_dipole: int, duration: int
|
||||||
@ -351,22 +427,18 @@ ENG_HK_HEADERS = [
|
|||||||
|
|
||||||
|
|
||||||
def handle_imtq_hk(printer: FsfwTmTcPrinter, hk_data: bytes, set_id: int):
|
def handle_imtq_hk(printer: FsfwTmTcPrinter, hk_data: bytes, set_id: int):
|
||||||
if set_id == ImtqSetId.SELF_TEST_SET:
|
if (set_id >= ImtqSetId.POSITIVE_X_TEST) and (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 == ImtqSetId.ENG_HK_NO_TORQUE:
|
elif set_id == ImtqSetId.ENG_HK_NO_TORQUE:
|
||||||
_LOGGER.info("Found engineering HK without torque")
|
return handle_eng_set(printer, hk_data, False)
|
||||||
return handle_eng_set(printer, hk_data)
|
|
||||||
elif set_id == ImtqSetId.ENG_HK_SET_WITH_TORQUE:
|
elif set_id == ImtqSetId.ENG_HK_SET_WITH_TORQUE:
|
||||||
_LOGGER.info("Found engineering HK during torque")
|
return handle_eng_set(printer, hk_data, True)
|
||||||
return handle_eng_set(printer, hk_data)
|
|
||||||
elif set_id == ImtqSetId.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 == ImtqSetId.RAW_MTM_NO_TORQUE:
|
elif set_id == ImtqSetId.RAW_MTM_NO_TORQUE:
|
||||||
_LOGGER.info("Found raw MTM measurement without torque")
|
return handle_raw_mtm_measurement(printer, hk_data, False)
|
||||||
return handle_raw_mtm_measurement(printer, hk_data)
|
|
||||||
elif set_id == ImtqSetId.RAW_MTM_WITH_TORQUE:
|
elif set_id == ImtqSetId.RAW_MTM_WITH_TORQUE:
|
||||||
_LOGGER.info("Found raw MTM measurement during torque")
|
return handle_raw_mtm_measurement(printer, hk_data, True)
|
||||||
return handle_raw_mtm_measurement(printer, hk_data)
|
|
||||||
elif set_id == ImtqSetId.STATUS_SET:
|
elif set_id == ImtqSetId.STATUS_SET:
|
||||||
return handle_status_set(printer, hk_data)
|
return handle_status_set(printer, hk_data)
|
||||||
else:
|
else:
|
||||||
@ -411,8 +483,9 @@ def unpack_eng_hk(hk_data: bytes) -> List:
|
|||||||
return content_list
|
return content_list
|
||||||
|
|
||||||
|
|
||||||
def handle_eng_set(printer: FsfwTmTcPrinter, hk_data: bytes):
|
def handle_eng_set(printer: FsfwTmTcPrinter, hk_data: bytes, torque_on: bool):
|
||||||
pw = PrintWrapper(printer)
|
pw = PrintWrapper(printer)
|
||||||
|
pw.dlog(f"Found engineering HK. Torque Status: {torque_on}")
|
||||||
content_list = unpack_eng_hk(hk_data)
|
content_list = unpack_eng_hk(hk_data)
|
||||||
validity_buffer = hk_data[32:]
|
validity_buffer = hk_data[32:]
|
||||||
|
|
||||||
@ -453,8 +526,11 @@ def handle_calibrated_mtm_measurement(printer: FsfwTmTcPrinter, hk_data: bytes):
|
|||||||
printer.print_validity_buffer(validity_buffer=validity_buffer, num_vars=num_of_vars)
|
printer.print_validity_buffer(validity_buffer=validity_buffer, num_vars=num_of_vars)
|
||||||
|
|
||||||
|
|
||||||
def handle_raw_mtm_measurement(printer: FsfwTmTcPrinter, hk_data: bytes):
|
def handle_raw_mtm_measurement(
|
||||||
|
printer: FsfwTmTcPrinter, hk_data: bytes, torque_status: bool
|
||||||
|
):
|
||||||
pw = PrintWrapper(printer)
|
pw = PrintWrapper(printer)
|
||||||
|
pw.dlog(f"Found raw MTM measurement. Torque Status: {torque_status}")
|
||||||
header_list = [
|
header_list = [
|
||||||
"Raw MTM X [nT]",
|
"Raw MTM X [nT]",
|
||||||
"Raw MTM Y [nT]",
|
"Raw MTM Y [nT]",
|
||||||
|
@ -9,7 +9,10 @@ import enum
|
|||||||
import logging
|
import logging
|
||||||
import struct
|
import struct
|
||||||
|
|
||||||
|
from eive_tmtc.config.definitions import CustomServiceList
|
||||||
from spacepackets.ecss.tc import PusTelecommand
|
from spacepackets.ecss.tc import PusTelecommand
|
||||||
|
from tmtccmd.config import TmtcDefinitionWrapper, OpCodeEntry
|
||||||
|
from tmtccmd.config.tmtc import tmtc_definitions_provider
|
||||||
from tmtccmd.tc.pus_200_fsfw_mode import pack_mode_data, Mode
|
from tmtccmd.tc.pus_200_fsfw_mode import pack_mode_data, Mode
|
||||||
|
|
||||||
from tmtccmd.tc import DefaultPusQueueHelper
|
from tmtccmd.tc import DefaultPusQueueHelper
|
||||||
@ -87,7 +90,11 @@ class StarTrackerActionId(enum.IntEnum):
|
|||||||
|
|
||||||
|
|
||||||
class OpCodes:
|
class OpCodes:
|
||||||
NORMAL = ["2", "nml"]
|
ON_BOOTLOADER = "on_bootloader"
|
||||||
|
ON_FIRMWARE = "on_firmware"
|
||||||
|
NORMAL = "nml"
|
||||||
|
OFF = "off"
|
||||||
|
PING = "ping"
|
||||||
|
|
||||||
|
|
||||||
class SetId(enum.IntEnum):
|
class SetId(enum.IntEnum):
|
||||||
@ -172,19 +179,19 @@ def pack_star_tracker_commands(
|
|||||||
f"Generate command for star tracker with object id: {object_id.as_hex_string}"
|
f"Generate command for star tracker with object id: {object_id.as_hex_string}"
|
||||||
)
|
)
|
||||||
obyt = object_id.as_bytes
|
obyt = object_id.as_bytes
|
||||||
if op_code == "0":
|
if op_code == OpCodes.ON_BOOTLOADER:
|
||||||
q.add_log_cmd("Star tracker: Mode On, Submode Bootloader")
|
q.add_log_cmd("Star tracker: Mode On, Submode Bootloader")
|
||||||
data = pack_mode_data(obyt, Mode.ON, Submode.BOOTLOADER)
|
data = pack_mode_data(obyt, Mode.ON, Submode.BOOTLOADER)
|
||||||
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 == "1":
|
if op_code == OpCodes.ON_FIRMWARE:
|
||||||
q.add_log_cmd("Star tracker: Mode On, Submode Firmware")
|
q.add_log_cmd("Star tracker: Mode On, Submode Firmware")
|
||||||
data = pack_mode_data(obyt, Mode.ON, Submode.FIRMWARE)
|
data = pack_mode_data(obyt, Mode.ON, Submode.FIRMWARE)
|
||||||
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 == "2":
|
if op_code == OpCodes.NORMAL:
|
||||||
q.add_log_cmd("Star tracker: Mode Normal")
|
q.add_log_cmd("Star tracker: Mode Normal")
|
||||||
data = pack_mode_data(obyt, Mode.NORMAL, 0)
|
data = pack_mode_data(obyt, Mode.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 == "3":
|
if op_code == OpCodes.OFF:
|
||||||
q.add_log_cmd("Star tracker: Mode Off")
|
q.add_log_cmd("Star tracker: Mode Off")
|
||||||
data = pack_mode_data(obyt, Mode.OFF, 0)
|
data = pack_mode_data(obyt, Mode.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))
|
||||||
@ -192,7 +199,7 @@ def pack_star_tracker_commands(
|
|||||||
q.add_log_cmd("Star tracker: Mode Raw")
|
q.add_log_cmd("Star tracker: Mode Raw")
|
||||||
data = pack_mode_data(obyt, Mode.RAW, 0)
|
data = pack_mode_data(obyt, Mode.RAW, 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 == "5":
|
if op_code == OpCodes.PING:
|
||||||
q.add_log_cmd("Star tracker: Ping")
|
q.add_log_cmd("Star tracker: Ping")
|
||||||
data = obyt + struct.pack("!I", StarTrackerActionId.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))
|
||||||
@ -668,3 +675,68 @@ def get_upload_image() -> str:
|
|||||||
key = input_helper.get_key()
|
key = input_helper.get_key()
|
||||||
image = upload_image_dict[key][1]
|
image = upload_image_dict[key][1]
|
||||||
return image
|
return image
|
||||||
|
|
||||||
|
|
||||||
|
@tmtc_definitions_provider
|
||||||
|
def add_str_cmds(defs: TmtcDefinitionWrapper):
|
||||||
|
oce = OpCodeEntry()
|
||||||
|
oce.add(OpCodes.ON_BOOTLOADER, "Star Tracker: Mode On, Submode Bootloader")
|
||||||
|
oce.add(OpCodes.ON_FIRMWARE, "Star Tracker: Mode On, Submode Firmware")
|
||||||
|
oce.add(OpCodes.NORMAL, "Star Tracker: Mode Normal")
|
||||||
|
oce.add(OpCodes.OFF, "Star Tracker: Mode Off")
|
||||||
|
oce.add("4", "Star Tracker: Mode Raw")
|
||||||
|
oce.add(OpCodes.PING, "Star Tracker: Ping")
|
||||||
|
oce.add("6", "Star Tracker: Switch to bootloader program")
|
||||||
|
oce.add("7", "Star Tracker: Request temperature")
|
||||||
|
oce.add("8", "Star Tracker: Request version")
|
||||||
|
oce.add("9", "Star Tracker: Request interface")
|
||||||
|
oce.add("10", "Star Tracker: Request power")
|
||||||
|
oce.add("11", "Star Tracker: Set subscription parameters")
|
||||||
|
oce.add("12", "Star Tracker: Boot image (requires bootloader mode)")
|
||||||
|
oce.add("13", "Star Tracker: Request time")
|
||||||
|
oce.add("14", "Star Tracker: Request solution")
|
||||||
|
oce.add("15", "Star Tracker: Upload image")
|
||||||
|
oce.add("16", "Star Tracker: Download image")
|
||||||
|
oce.add("17", "Star Tracker: Set limit parameters")
|
||||||
|
oce.add("17", "Star Tracker: Set limit parameters")
|
||||||
|
oce.add("18", "Star Tracker: Set tracking parameters")
|
||||||
|
oce.add("19", "Star Tracker: Set mounting parameters")
|
||||||
|
oce.add("20", "Star Tracker: Set camera parameters")
|
||||||
|
oce.add("22", "Star Tracker: Set centroiding parameters")
|
||||||
|
oce.add("23", "Star Tracker: Set LISA parameters")
|
||||||
|
oce.add("24", "Star Tracker: Set matching parameters")
|
||||||
|
oce.add("25", "Star Tracker: Set validation parameters")
|
||||||
|
oce.add("26", "Star Tracker: Set algo parameters")
|
||||||
|
oce.add("27", "Star Tracker: Take image")
|
||||||
|
oce.add("28", "Star Tracker: Stop str helper")
|
||||||
|
oce.add("30", "Star Tracker: Set name of download image")
|
||||||
|
oce.add("31", "Star Tracker: Request histogram")
|
||||||
|
oce.add("32", "Star Tracker: Request contrast")
|
||||||
|
oce.add("33", "Star Tracker: Set json filename")
|
||||||
|
oce.add("35", "Star Tracker: Flash read")
|
||||||
|
oce.add("36", "Star Tracker: Set flash read filename")
|
||||||
|
oce.add("37", "Star Tracker: Get checksum")
|
||||||
|
oce.add("49", "Star Tracker: Request camera parameter")
|
||||||
|
oce.add("50", "Star Tracker: Request limits")
|
||||||
|
oce.add("51", "Star Tracker: Set image processor parameters")
|
||||||
|
oce.add("52", "Star Tracker: (EGSE only) Load camera ground config")
|
||||||
|
oce.add("53", "Star Tracker: (EGSE only) Load camera flight config")
|
||||||
|
oce.add("54", "Star Tracker: Request log level parameters")
|
||||||
|
oce.add("55", "Star Tracker: Request mounting parameters")
|
||||||
|
oce.add("56", "Star Tracker: Request image processor parameters")
|
||||||
|
oce.add("57", "Star Tracker: Request centroiding parameters")
|
||||||
|
oce.add("58", "Star Tracker: Request lisa parameters")
|
||||||
|
oce.add("59", "Star Tracker: Request matching parameters")
|
||||||
|
oce.add("60", "Star Tracker: Request tracking parameters")
|
||||||
|
oce.add("61", "Star Tracker: Request validation parameters")
|
||||||
|
oce.add("62", "Star Tracker: Request algo parameters")
|
||||||
|
oce.add("63", "Star Tracker: Request subscription parameters")
|
||||||
|
oce.add("64", "Star Tracker: Request log subscription parameters")
|
||||||
|
oce.add("65", "Star Tracker: Request debug camera parameters")
|
||||||
|
oce.add("66", "Star Tracker: Set log level parameters")
|
||||||
|
oce.add("67", "Star Tracker: Set log subscription parameters")
|
||||||
|
oce.add("68", "Star Tracker: Set debug camera parameters")
|
||||||
|
oce.add("69", "Star Tracker: Firmware update")
|
||||||
|
oce.add("70", "Star Tracker: Disable timestamp generation")
|
||||||
|
oce.add("71", "Star Tracker: Enable timestamp generation")
|
||||||
|
defs.add_service(CustomServiceList.STAR_TRACKER.value, "Star Tracker", oce)
|
||||||
|
@ -1,4 +1,7 @@
|
|||||||
|
import struct
|
||||||
|
|
||||||
from eive_tmtc.config.definitions import CustomServiceList
|
from eive_tmtc.config.definitions import CustomServiceList
|
||||||
|
from eive_tmtc.tmtc.obj_prompt import prompt_object
|
||||||
from spacepackets.ecss import PusTelecommand
|
from spacepackets.ecss import PusTelecommand
|
||||||
from tmtccmd.config.tmtc import (
|
from tmtccmd.config.tmtc import (
|
||||||
tmtc_definitions_provider,
|
tmtc_definitions_provider,
|
||||||
@ -6,33 +9,58 @@ from tmtccmd.config.tmtc import (
|
|||||||
OpCodeEntry,
|
OpCodeEntry,
|
||||||
)
|
)
|
||||||
from tmtccmd.tc import service_provider
|
from tmtccmd.tc import service_provider
|
||||||
from tmtccmd.pus.s201_fsfw_health import Subservice
|
from tmtccmd.pus.s201_fsfw_health import Subservice, FsfwHealth
|
||||||
from tmtccmd.tc.decorator import ServiceProviderParams
|
from tmtccmd.tc.decorator import ServiceProviderParams
|
||||||
|
|
||||||
|
|
||||||
class OpCode:
|
class OpCode:
|
||||||
|
SET_HEALTH = "set_health"
|
||||||
ANNOUNCE_HEALTH_ALL = "read_health_all"
|
ANNOUNCE_HEALTH_ALL = "read_health_all"
|
||||||
ANNOUNCE_HEALTH = "read_health"
|
ANNOUNCE_HEALTH = "read_health"
|
||||||
|
|
||||||
|
|
||||||
class Info:
|
class Info:
|
||||||
|
SET_HEALTH = "Set health of specific object"
|
||||||
ANNOUNCE_HEALTH_ALL = "Read all health states"
|
ANNOUNCE_HEALTH_ALL = "Read all health states"
|
||||||
ANNOUNCE_HEALTH = "Read health state of one object"
|
ANNOUNCE_HEALTH = "Read health state of one object"
|
||||||
|
|
||||||
|
|
||||||
|
def prompt_health() -> FsfwHealth:
|
||||||
|
for item in FsfwHealth:
|
||||||
|
print(f"{item}: {item.name}")
|
||||||
|
health_idx = int(input("Please enter health by index: "))
|
||||||
|
return FsfwHealth(health_idx)
|
||||||
|
|
||||||
|
|
||||||
@service_provider(CustomServiceList.HEALTH)
|
@service_provider(CustomServiceList.HEALTH)
|
||||||
def pack_test_command(p: ServiceProviderParams):
|
def pack_test_command(p: ServiceProviderParams):
|
||||||
o = p.op_code
|
o = p.op_code
|
||||||
q = p.queue_helper
|
q = p.queue_helper
|
||||||
if o == OpCode.ANNOUNCE_HEALTH:
|
if o == OpCode.SET_HEALTH:
|
||||||
raise NotImplementedError()
|
app_data = bytearray(prompt_object())
|
||||||
|
health = prompt_health()
|
||||||
|
app_data.append(health)
|
||||||
|
q.add_log_cmd(Info.SET_HEALTH)
|
||||||
|
q.add_pus_tc(
|
||||||
|
PusTelecommand(
|
||||||
|
service=201, subservice=Subservice.TC_SET_HEALTH, app_data=app_data
|
||||||
|
)
|
||||||
|
)
|
||||||
|
elif o == OpCode.ANNOUNCE_HEALTH:
|
||||||
|
app_data = bytearray(prompt_object())
|
||||||
|
q.add_log_cmd(Info.ANNOUNCE_HEALTH)
|
||||||
|
q.add_pus_tc(
|
||||||
|
PusTelecommand(
|
||||||
|
service=201, subservice=Subservice.TC_ANNOUNCE_HEALTH, app_data=app_data
|
||||||
|
)
|
||||||
|
)
|
||||||
elif o == OpCode.ANNOUNCE_HEALTH_ALL:
|
elif o == OpCode.ANNOUNCE_HEALTH_ALL:
|
||||||
q.add_log_cmd(Info.ANNOUNCE_HEALTH_ALL)
|
q.add_log_cmd(Info.ANNOUNCE_HEALTH_ALL)
|
||||||
q.add_pus_tc(
|
q.add_pus_tc(
|
||||||
PusTelecommand(service=201, subservice=Subservice.TC_ANNOUNCE_HEALTH_ALL)
|
PusTelecommand(service=201, subservice=Subservice.TC_ANNOUNCE_HEALTH_ALL)
|
||||||
)
|
)
|
||||||
return
|
else:
|
||||||
raise ValueError(f"unknown op code {o} for service {CustomServiceList.HEALTH}")
|
raise ValueError(f"unknown op code {o} for service {CustomServiceList.HEALTH}")
|
||||||
|
|
||||||
|
|
||||||
@tmtc_definitions_provider
|
@tmtc_definitions_provider
|
||||||
@ -40,4 +68,5 @@ def add_health_cmd_defs(defs: TmtcDefinitionWrapper):
|
|||||||
oce = OpCodeEntry()
|
oce = OpCodeEntry()
|
||||||
oce.add(OpCode.ANNOUNCE_HEALTH_ALL, Info.ANNOUNCE_HEALTH_ALL)
|
oce.add(OpCode.ANNOUNCE_HEALTH_ALL, Info.ANNOUNCE_HEALTH_ALL)
|
||||||
oce.add(OpCode.ANNOUNCE_HEALTH, Info.ANNOUNCE_HEALTH)
|
oce.add(OpCode.ANNOUNCE_HEALTH, Info.ANNOUNCE_HEALTH)
|
||||||
|
oce.add(OpCode.SET_HEALTH, Info.SET_HEALTH)
|
||||||
defs.add_service(CustomServiceList.HEALTH, info="Health Service", op_code_entry=oce)
|
defs.add_service(CustomServiceList.HEALTH, info="Health Service", op_code_entry=oce)
|
||||||
|
43
eive_tmtc/tmtc/obj_prompt.py
Normal file
43
eive_tmtc/tmtc/obj_prompt.py
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
from eive_tmtc.config.object_ids import (
|
||||||
|
ACS_SUBSYSTEM_ID,
|
||||||
|
ACS_CONTROLLER,
|
||||||
|
IMTQ_HANDLER_ID,
|
||||||
|
GYRO_0_ADIS_HANDLER_ID,
|
||||||
|
GYRO_1_L3G_HANDLER_ID,
|
||||||
|
ACS_BOARD_ASS_ID,
|
||||||
|
RW_ASSEMBLY,
|
||||||
|
SUS_BOARD_ASS_ID,
|
||||||
|
)
|
||||||
|
|
||||||
|
SUBSYSTEM_DICT = {
|
||||||
|
0: "acs",
|
||||||
|
1: "tcs",
|
||||||
|
2: "com",
|
||||||
|
}
|
||||||
|
|
||||||
|
ACS_OBJ_DICT = {
|
||||||
|
0: ("Subsystem", ACS_SUBSYSTEM_ID),
|
||||||
|
1: ("SUS Assembly", SUS_BOARD_ASS_ID),
|
||||||
|
2: ("ACS Board Assembly", ACS_BOARD_ASS_ID),
|
||||||
|
3: ("RW Assembly", RW_ASSEMBLY),
|
||||||
|
4: ("iMTQ MGT", IMTQ_HANDLER_ID),
|
||||||
|
5: ("GYR 0 ADIS", GYRO_0_ADIS_HANDLER_ID),
|
||||||
|
6: ("GYR 1 L3G", GYRO_1_L3G_HANDLER_ID)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def prompt_object() -> bytes:
|
||||||
|
for k, v in SUBSYSTEM_DICT.items():
|
||||||
|
print(f"{k}: {v}")
|
||||||
|
subsystem_key = int(input("Please specify target subsystem by key: "))
|
||||||
|
subsystem = SUBSYSTEM_DICT[subsystem_key]
|
||||||
|
if subsystem is None:
|
||||||
|
raise ValueError("invalid key")
|
||||||
|
if subsystem == "acs":
|
||||||
|
for k, v in ACS_OBJ_DICT.items():
|
||||||
|
print(f"{k}: {v[0]}")
|
||||||
|
obj_key = int(input("Please specify target object by key: "))
|
||||||
|
acs_obj = ACS_OBJ_DICT[obj_key]
|
||||||
|
if acs_obj is None:
|
||||||
|
raise ValueError("invalid key")
|
||||||
|
return acs_obj[1]
|
@ -40,7 +40,7 @@ class Tmp1075ActionId(enum.IntEnum):
|
|||||||
|
|
||||||
|
|
||||||
class SetId:
|
class SetId:
|
||||||
TMEPERATURE = 1
|
TEMPERATURE = 1
|
||||||
|
|
||||||
|
|
||||||
def pack_tmp1075_test_into(
|
def pack_tmp1075_test_into(
|
||||||
@ -64,7 +64,7 @@ def pack_tmp1075_test_into(
|
|||||||
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 == OpCode.HK:
|
if op_code == OpCode.HK:
|
||||||
q.add_log_cmd("TMP1075: Request One-Shot HK")
|
q.add_log_cmd("TMP1075: Request One-Shot HK")
|
||||||
q.add_pus_tc(create_request_one_hk_command(make_sid(obyt, SetId.TMEPERATURE)))
|
q.add_pus_tc(create_request_one_hk_command(make_sid(obyt, SetId.TEMPERATURE)))
|
||||||
return q
|
return q
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user