Compare commits

..

5 Commits

6 changed files with 56 additions and 26 deletions

View File

@ -10,6 +10,12 @@ list yields a list of all related PRs for each release.
# [unreleased] # [unreleased]
# [v2.12.0] 2023-02-06
## Changed
- Updated the subsystem IDs to avoid value clashes with regular device handler mode IDs.
# [v2.11.0] 2023-02-06 # [v2.11.0] 2023-02-06
## Fixed ## Fixed

View File

@ -3,10 +3,10 @@ from pathlib import Path
SW_NAME = "eive-tmtc" SW_NAME = "eive-tmtc"
VERSION_MAJOR = 2 VERSION_MAJOR = 2
VERSION_MINOR = 11 VERSION_MINOR = 12
VERSION_REVISION = 0 VERSION_REVISION = 0
__version__ = "2.11.0" __version__ = "2.12.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

View File

@ -514,8 +514,6 @@ def handle_raw_mgm_data(pw: PrintWrapper, hk_data: bytes):
for entry in zip(print_str_list, formatted_list): for entry in zip(print_str_list, formatted_list):
pw.dlog(f"{entry[0].ljust(28)}: {entry[1]}") pw.dlog(f"{entry[0].ljust(28)}: {entry[1]}")
current_idx += 1 current_idx += 1
if PERFORM_MGM_CALIBRATION:
perform_mgm_calibration(pw, mgm_0_lis3_floats_ut)
assert current_idx == 61 assert current_idx == 61
pw.printer.print_validity_buffer(hk_data[current_idx:], num_vars=6) pw.printer.print_validity_buffer(hk_data[current_idx:], num_vars=6)
@ -528,31 +526,48 @@ def handle_mgm_data_processed(pw: PrintWrapper, hk_data: bytes):
pw.dlog("Recieved HK set too small") pw.dlog("Recieved HK set too small")
return return
current_idx = 0 current_idx = 0
for i in range(5): fmt_str = "!fff"
fmt_str = "!fff" inc_len = struct.calcsize(fmt_str)
inc_len = struct.calcsize(fmt_str) mgm_0 = struct.unpack(fmt_str, hk_data[current_idx: current_idx + inc_len])
mgm_vec = struct.unpack(fmt_str, hk_data[current_idx : current_idx + inc_len]) mgm_0_str = [f"{val:8.3f}" for val in mgm_0]
mgm_vec = [f"{val:8.3f}" for val in mgm_vec] pw.dlog(f"MGM 0 Vec: {mgm_0_str}")
pw.dlog(f"MGM {i}: {mgm_vec}") current_idx += inc_len
current_idx += inc_len mgm_1 = struct.unpack(fmt_str, hk_data[current_idx: current_idx + inc_len])
mgm_1_str = [f"{val:8.3f}" for val in mgm_1]
pw.dlog(f"MGM 1 Vec: {mgm_1_str}")
current_idx += inc_len
mgm_2 = struct.unpack(fmt_str, hk_data[current_idx: current_idx + inc_len])
mgm_2_str = [f"{val:8.3f}" for val in mgm_2]
pw.dlog(f"MGM 2 Vec: {mgm_2_str}")
current_idx += inc_len
mgm_3 = struct.unpack(fmt_str, hk_data[current_idx: current_idx + inc_len])
mgm_3_str = [f"{val:8.3f}" for val in mgm_3]
pw.dlog(f"MGM 3 Vec: {mgm_3_str}")
current_idx += inc_len
mgm_4 = struct.unpack(fmt_str, hk_data[current_idx: current_idx + inc_len])
mgm_4_str = [f"{val:8.3f}" for val in mgm_4]
pw.dlog(f"MGM 4 Vec: {mgm_4_str}")
current_idx += inc_len
fmt_str = "!ddd" fmt_str = "!ddd"
inc_len = struct.calcsize(fmt_str) inc_len = struct.calcsize(fmt_str)
mgm_vec_tot = struct.unpack(fmt_str, hk_data[current_idx : current_idx + inc_len]) mgm_vec_tot = struct.unpack(fmt_str, hk_data[current_idx: current_idx + inc_len])
mgm_vec_tot = [f"{val:8.3f}" for val in mgm_vec_tot] mgm_vec_tot = [f"{val:8.3f}" for val in mgm_vec_tot]
current_idx += inc_len current_idx += inc_len
pw.dlog(f"MGM Total Vec: {mgm_vec_tot}") pw.dlog(f"MGM Total Vec: {mgm_vec_tot}")
mgm_vec_tot_deriv = struct.unpack( mgm_vec_tot_deriv = struct.unpack(
fmt_str, hk_data[current_idx : current_idx + inc_len] fmt_str, hk_data[current_idx: current_idx + inc_len]
) )
mgm_vec_tot_deriv = [f"{val:8.3f}" for val in mgm_vec_tot_deriv] mgm_vec_tot_deriv = [f"{val:8.3f}" for val in mgm_vec_tot_deriv]
pw.dlog(f"MGM Total Vec Deriv: {mgm_vec_tot_deriv}") pw.dlog(f"MGM Total Vec Deriv: {mgm_vec_tot_deriv}")
current_idx += inc_len current_idx += inc_len
mag_igrf_model = struct.unpack( mag_igrf_model = struct.unpack(
fmt_str, hk_data[current_idx : current_idx + inc_len] fmt_str, hk_data[current_idx: current_idx + inc_len]
) )
mag_igrf_model = [f"{val:8.3f}" for val in mag_igrf_model] mag_igrf_model = [f"{val:8.3f}" for val in mag_igrf_model]
pw.dlog(f"MAG IGRF Model: {mag_igrf_model}") pw.dlog(f"MAG IGRF Model: {mag_igrf_model}")
current_idx += inc_len current_idx += inc_len
if PERFORM_MGM_CALIBRATION:
perform_mgm_calibration(pw, mgm_3)
pw.printer.print_validity_buffer(hk_data[current_idx:], num_vars=8) pw.printer.print_validity_buffer(hk_data[current_idx:], num_vars=8)

View File

@ -29,13 +29,13 @@ class OpCode(str, enum.Enum):
class AcsMode(enum.IntEnum): class AcsMode(enum.IntEnum):
OFF = 0 OFF = 0
SAFE = 2 SAFE = 10
DETUMBLE = 3 DETUMBLE = 11
IDLE = 4 IDLE = 12
PTG_TARGET_NADIR = 5 PTG_TARGET_NADIR = 13
PTG_TARGET = 6 PTG_TARGET = 14
PTG_TARGET_GS = 7 PTG_TARGET_GS = 15
PTG_TARGET_INERTIAL = 8 PTG_TARGET_INERTIAL = 16
class Info(str, enum.Enum): class Info(str, enum.Enum):

View File

@ -22,11 +22,11 @@ class ParameterId(enum.IntEnum):
class Submode(enum.IntEnum): class Submode(enum.IntEnum):
RX_ONLY = 0 RX_ONLY = 10
RX_AND_TX_DEF_DATARATE = 1 RX_AND_TX_DEF_DATARATE = 11
RX_AND_TX_LOW_DATARATE = 2 RX_AND_TX_LOW_DATARATE = 12
RX_AND_TX_HIGH_DATARATE = 3 RX_AND_TX_HIGH_DATARATE = 13
RX_AND_TX_CARRIER_WAVE = 4 RX_AND_TX_CARRIER_WAVE = 14
class OpCode: class OpCode:

View File

@ -12,6 +12,15 @@ from tmtccmd.tc.decorator import ServiceProviderParams
from tmtccmd.tc.pus_200_fsfw_mode import Subservice as ModeSubservice from tmtccmd.tc.pus_200_fsfw_mode import Subservice as ModeSubservice
class ModeId:
OFF = 0
SUPV_ONLY = 10
MPSOC_STREAM = 11
CAM_STREAM = 12
EARTH_OBSV = 13
SCEX = 14
class OpCode(str, enum.Enum): class OpCode(str, enum.Enum):
OFF = "off" OFF = "off"
REPORT_ALL_MODES = "report_modes" REPORT_ALL_MODES = "report_modes"