Compare commits
26 Commits
Author | SHA1 | Date | |
---|---|---|---|
ce155e7629 | |||
1fb50d84c6 | |||
71bc121deb | |||
0202c93252 | |||
de1188c1bb | |||
5f87092465 | |||
fb7b273485 | |||
8a69507d05 | |||
6c367aab32 | |||
f899d169b2 | |||
2b2d920540 | |||
d7e1a69e75 | |||
b72dad49a9 | |||
cef8d623c9 | |||
523dd9b759 | |||
ce5ae8a713 | |||
be7b3f54c7 | |||
7fe45d51dd | |||
536fd81bf8 | |||
e612e086ab | |||
7296344730 | |||
d3f9a83af8 | |||
a54e5a8e14 | |||
5e17ea9bf0 | |||
99d2c0e0ca | |||
98617b5ce5 |
10
CHANGELOG.md
10
CHANGELOG.md
@ -10,6 +10,16 @@ list yields a list of all related PRs for each release.
|
||||
|
||||
# [unreleased]
|
||||
|
||||
# [v2.21.0] 2023-04-04
|
||||
|
||||
## Added
|
||||
|
||||
- Add boot mode command for EIVE system.
|
||||
|
||||
## Changed
|
||||
|
||||
- PCDU switcher set now includes the 3V3 stack switcher state.
|
||||
|
||||
# [v2.20.1] 2023-04-01
|
||||
|
||||
## Fixed
|
||||
|
@ -1,12 +1,12 @@
|
||||
__version__ = "2.20.1"
|
||||
__version__ = "2.21.0"
|
||||
|
||||
import logging
|
||||
from pathlib import Path
|
||||
|
||||
SW_NAME = "eive-tmtc"
|
||||
VERSION_MAJOR = 2
|
||||
VERSION_MINOR = 20
|
||||
VERSION_REVISION = 1
|
||||
VERSION_MINOR = 21
|
||||
VERSION_REVISION = 0
|
||||
|
||||
EIVE_TMTC_ROOT = Path(__file__).parent
|
||||
PACKAGE_ROOT = EIVE_TMTC_ROOT.parent
|
||||
|
@ -261,13 +261,13 @@ Event ID (dec); Event ID (hex); Name; Severity; Description; File Path
|
||||
14007;0x36b7;REBOOT_COUNTER;INFO;Total reboot counter, which is the sum of the boot count of all individual images.;bsp_q7s/core/CoreController.h
|
||||
14008;0x36b8;INDIVIDUAL_BOOT_COUNTS;INFO;Get the boot count of the individual images. P1: First 16 bits boot count of image 0 0, last 16 bits boot count of image 0 1. P2: First 16 bits boot count of image 1 0, last 16 bits boot count of image 1 1.;bsp_q7s/core/CoreController.h
|
||||
14010;0x36ba;I2C_UNAVAILABLE_REBOOT;MEDIUM;No description;bsp_q7s/core/CoreController.h
|
||||
14100;0x3714;NO_VALID_SENSOR_TEMPERATURE;MEDIUM;No description;mission/controller/ThermalController.h
|
||||
14101;0x3715;NO_HEALTHY_HEATER_AVAILABLE;MEDIUM;No description;mission/controller/ThermalController.h
|
||||
14102;0x3716;SYRLINKS_OVERHEATING;HIGH;No description;mission/controller/ThermalController.h
|
||||
14103;0x3717;PLOC_OVERHEATING;HIGH;No description;mission/controller/ThermalController.h
|
||||
14104;0x3718;OBC_OVERHEATING;HIGH;No description;mission/controller/ThermalController.h
|
||||
14105;0x3719;HPA_OVERHEATING;HIGH;No description;mission/controller/ThermalController.h
|
||||
14106;0x371a;PLPCDU_OVERHEATING;HIGH;No description;mission/controller/ThermalController.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
|
||||
14102;0x3716;SYRLINKS_OVERHEATING;HIGH;No description;mission/controller/tcsDefs.h
|
||||
14104;0x3718;OBC_OVERHEATING;HIGH;No description;mission/controller/tcsDefs.h
|
||||
14105;0x3719;CAMERA_OVERHEATING;HIGH;No description;mission/controller/tcsDefs.h
|
||||
14106;0x371a;PCDU_SYSTEM_OVERHEATING;HIGH;No description;mission/controller/tcsDefs.h
|
||||
14107;0x371b;HEATER_NOT_OFF_FOR_OFF_MODE;MEDIUM;No description;mission/controller/tcsDefs.h
|
||||
14201;0x3779;TX_TIMER_EXPIRED;INFO;The transmit timer to protect the Syrlinks expired P1: The current timer value;mission/system/com/ComSubsystem.h
|
||||
14202;0x377a;BIT_LOCK_TX_ON;INFO;Transmitter will be turned on due to detection of bitlock;mission/system/com/ComSubsystem.h
|
||||
14300;0x37dc;POSSIBLE_FILE_CORRUPTION;LOW;P1: Result code of TM packet parser. P2: Timestamp of possibly corrupt file as a unix timestamp.;mission/persistentTmStoreDefs.h
|
||||
|
|
@ -21,6 +21,7 @@ from tmtccmd.tc import DefaultPusQueueHelper
|
||||
from tmtccmd.tc.pus_200_fsfw_mode import pack_mode_data, Mode
|
||||
from tmtccmd.util import ObjectIdU32
|
||||
from tmtccmd.util.tmtc_printer import FsfwTmTcPrinter
|
||||
from eive_tmtc.config.object_ids import STR_ASSEMBLY, STAR_TRACKER_ID
|
||||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
|
||||
@ -188,6 +189,14 @@ class Submode(enum.IntEnum):
|
||||
FIRMWARE = 2
|
||||
|
||||
|
||||
def prompt_object_id_mode_cmd() -> bytes:
|
||||
cmd_assy = input("Command Assembly (0) or Device Handler (1) ?: ")
|
||||
if cmd_assy == "0":
|
||||
return STR_ASSEMBLY
|
||||
else:
|
||||
return STAR_TRACKER_ID
|
||||
|
||||
|
||||
def pack_star_tracker_commands(
|
||||
object_id: ObjectIdU32, q: DefaultPusQueueHelper, op_code: str
|
||||
):
|
||||
@ -197,19 +206,19 @@ def pack_star_tracker_commands(
|
||||
obyt = object_id.as_bytes
|
||||
if op_code == OpCodes.ON_BOOTLOADER:
|
||||
q.add_log_cmd("Star tracker: Mode On, Submode Bootloader")
|
||||
data = pack_mode_data(obyt, Mode.ON, Submode.BOOTLOADER)
|
||||
data = pack_mode_data(prompt_object_id_mode_cmd(), Mode.ON, Submode.BOOTLOADER)
|
||||
q.add_pus_tc(PusTelecommand(service=200, subservice=1, app_data=data))
|
||||
if op_code == OpCodes.ON_FIRMWARE:
|
||||
q.add_log_cmd("Star tracker: Mode On, Submode Firmware")
|
||||
data = pack_mode_data(obyt, Mode.ON, Submode.FIRMWARE)
|
||||
data = pack_mode_data(prompt_object_id_mode_cmd(), Mode.ON, Submode.FIRMWARE)
|
||||
q.add_pus_tc(PusTelecommand(service=200, subservice=1, app_data=data))
|
||||
if op_code == OpCodes.NORMAL:
|
||||
q.add_log_cmd("Star tracker: Mode Normal")
|
||||
data = pack_mode_data(obyt, Mode.NORMAL, 0)
|
||||
data = pack_mode_data(prompt_object_id_mode_cmd(), Mode.NORMAL, 0)
|
||||
q.add_pus_tc(PusTelecommand(service=200, subservice=1, app_data=data))
|
||||
if op_code == OpCodes.OFF:
|
||||
q.add_log_cmd("Star tracker: Mode Off")
|
||||
data = pack_mode_data(obyt, Mode.OFF, 0)
|
||||
data = pack_mode_data(prompt_object_id_mode_cmd(), Mode.OFF, 0)
|
||||
q.add_pus_tc(PusTelecommand(service=200, subservice=1, app_data=data))
|
||||
if op_code == OpCodes.REQUEST_SOLUTION_SET_HK:
|
||||
q.add_log_cmd(Info.REQUEST_SOLUTION_SET_HK)
|
||||
|
@ -2,6 +2,8 @@ from eive_tmtc.config.object_ids import (
|
||||
ACS_SUBSYSTEM_ID,
|
||||
ACS_CONTROLLER,
|
||||
IMTQ_HANDLER_ID,
|
||||
GPS_0_HEALTH_DEV,
|
||||
GPS_1_HEALTH_DEV,
|
||||
GYRO_0_ADIS_HANDLER_ID,
|
||||
GYRO_1_L3G_HANDLER_ID,
|
||||
ACS_BOARD_ASS_ID,
|
||||
@ -27,6 +29,7 @@ ACS_OBJ_DICT = {
|
||||
6: ("GYR 1 L3G", GYRO_1_L3G_HANDLER_ID),
|
||||
7: ("MGM 0 LIS3", MGM_0_LIS3_HANDLER_ID),
|
||||
8: ("MGM 1 RM3100", MGM_1_RM3100_HANDLER_ID),
|
||||
9: ("GPS 0 Health Device", GPS_0_HEALTH_DEV),
|
||||
}
|
||||
|
||||
|
||||
|
@ -71,6 +71,7 @@ class PcduSwitches(enum.IntEnum):
|
||||
PDU2_CH8_PAYLOAD_CAMERA = 17
|
||||
|
||||
P60_DOCK_5V_STACK = 18
|
||||
P60_DOCK_3V3_STACK = 19
|
||||
|
||||
|
||||
def pack_power_commands(q: DefaultPusQueueHelper, op_code: str):
|
||||
|
@ -566,7 +566,9 @@ def handle_pcdu_hk(printer: FsfwTmTcPrinter, set_id: int, hk_data: bytes):
|
||||
current_idx += len(PDU1_CHANNELS_NAMES)
|
||||
pdu2_vals = [hk_data[i + current_idx] for i in range(len(PDU2_CHANNELS_NAMES))]
|
||||
current_idx += len(PDU2_CHANNELS_NAMES)
|
||||
p60_stack_val = hk_data[current_idx]
|
||||
p60_stack_5v_val = hk_data[current_idx]
|
||||
current_idx += 1
|
||||
p60_stack_3v3_val = hk_data[current_idx]
|
||||
current_idx += 1
|
||||
pw.dlog("PDU1 Switcher States")
|
||||
for name, val in zip(PDU1_CHANNELS_NAMES, pdu1_vals):
|
||||
@ -574,5 +576,6 @@ def handle_pcdu_hk(printer: FsfwTmTcPrinter, set_id: int, hk_data: bytes):
|
||||
pw.dlog("PDU2 Switcher States")
|
||||
for name, val in zip(PDU2_CHANNELS_NAMES, pdu2_vals):
|
||||
pw.dlog(f"{name.ljust(25)}: {val}")
|
||||
pw.dlog(f"{'P60 Dock 5V Stack'.ljust(25)}: {p60_stack_val}")
|
||||
pw.printer.print_validity_buffer(hk_data[current_idx:], 3)
|
||||
pw.dlog(f"{'P60 Dock 5V Stack'.ljust(25)}: {p60_stack_5v_val}")
|
||||
pw.dlog(f"{'P60 Dock 3V3 Stack'.ljust(25)}: {p60_stack_3v3_val}")
|
||||
pw.printer.print_validity_buffer(hk_data[current_idx:], 4)
|
||||
|
@ -15,13 +15,21 @@ from tmtccmd.tc.pus_200_fsfw_mode import (
|
||||
from tmtccmd.tc.decorator import ServiceProviderParams
|
||||
|
||||
|
||||
class SystemMode:
|
||||
BOOT = 5
|
||||
SAFE = AcsMode.SAFE
|
||||
IDLE = AcsMode.IDLE
|
||||
|
||||
|
||||
class OpCode:
|
||||
BOOT_MODE = "boot"
|
||||
SAFE_MODE = "safe"
|
||||
IDLE_MODE = "idle"
|
||||
ANNOUNCE_MODES = "announce_modes"
|
||||
|
||||
|
||||
class Info:
|
||||
BOOT_MODE = "Command System into Boot Mode"
|
||||
SAFE_MODE = "Command System into Safe Mode"
|
||||
IDLE_MODE = "Command System into Idle Pointing Mode"
|
||||
ANNOUNCE_MODES = "Announce mode recursively"
|
||||
@ -34,18 +42,22 @@ def build_system_cmds(p: ServiceProviderParams):
|
||||
prefix = "EIVE System"
|
||||
if o == OpCode.SAFE_MODE:
|
||||
q.add_log_cmd(f"{prefix}: {Info.SAFE_MODE}")
|
||||
q.add_pus_tc(create_mode_command(EIVE_SYSTEM_ID, AcsMode.SAFE, 0))
|
||||
q.add_pus_tc(create_mode_command(EIVE_SYSTEM_ID, SystemMode.SAFE, 0))
|
||||
elif o == OpCode.IDLE_MODE:
|
||||
q.add_log_cmd(f"{prefix}: {Info.IDLE_MODE}")
|
||||
q.add_pus_tc(create_mode_command(EIVE_SYSTEM_ID, AcsMode.IDLE, 0))
|
||||
q.add_pus_tc(create_mode_command(EIVE_SYSTEM_ID, SystemMode.IDLE, 0))
|
||||
elif o == OpCode.ANNOUNCE_MODES:
|
||||
q.add_log_cmd(f"{prefix}: {Info.ANNOUNCE_MODES}")
|
||||
q.add_pus_tc(create_announce_mode_recursive_command(EIVE_SYSTEM_ID))
|
||||
elif o == OpCode.BOOT_MODE:
|
||||
q.add_log_cmd(f"{prefix}: {Info.BOOT_MODE}")
|
||||
q.add_pus_tc(create_mode_command(EIVE_SYSTEM_ID, SystemMode.BOOT, 0))
|
||||
|
||||
|
||||
@tmtc_definitions_provider
|
||||
def add_system_cmd_defs(defs: TmtcDefinitionWrapper):
|
||||
oce = OpCodeEntry()
|
||||
oce.add(keys=OpCode.BOOT_MODE, info=Info.BOOT_MODE)
|
||||
oce.add(keys=OpCode.SAFE_MODE, info=Info.SAFE_MODE)
|
||||
oce.add(keys=OpCode.IDLE_MODE, info=Info.IDLE_MODE)
|
||||
oce.add(keys=OpCode.ANNOUNCE_MODES, info=Info.ANNOUNCE_MODES)
|
||||
|
Reference in New Issue
Block a user