Compare commits

...

20 Commits

Author SHA1 Message Date
66867ad9d2 prep v2.11.0 2023-02-06 14:51:32 +01:00
e617faa4df some tweaks 2023-02-06 14:49:50 +01:00
fc5e3c88ff update for tmp1075 code 2023-02-06 14:44:37 +01:00
b474841d69 add TMP1075 dev prompt 2023-02-06 14:27:00 +01:00
5e27a22a85 minor gps update 2023-02-05 12:52:43 +01:00
04f5a76962 prepare for v2.10.0 2023-02-03 16:41:09 +01:00
5ed3cec20b Merge pull request 'update ACS SS commands' (#130) from update_acs_ss_cmds into main
Reviewed-on: #130
2023-02-03 14:21:41 +01:00
c3c58b95ad minor fixes for ACS SS commanding 2023-02-03 14:21:22 +01:00
5b309e4013 acs ctrl bugfix 2023-02-03 13:39:05 +01:00
a39e94279b update events 2023-02-03 10:53:09 +01:00
b9f58e0612 bump changelog 2023-02-03 10:50:17 +01:00
d9c202c68e update ACS SS commands 2023-02-03 10:47:18 +01:00
28c367c6fb bump tmtccmd again 2023-02-02 19:24:09 +01:00
15adb9bf2e bump tmtccmd 2023-02-02 18:37:08 +01:00
b4e4228040 bump tmtccmd 2023-02-02 18:20:50 +01:00
26ebe9ab67 Merge pull request 'ACS Ctrl fixes' (#129) from acs-ctrl-validitiy-flag-fixes into main
Reviewed-on: #129
Reviewed-by: Robin Müller <muellerr@irs.uni-stuttgart.de>
2023-02-02 17:28:45 +01:00
a680bf28f0 changelog update 2023-02-02 17:28:51 +01:00
17486fdca7 updated gps data with new value. fixed validity flag output because someone (me) was to stupid to do it right in the first place 2023-02-02 11:11:22 +01:00
c633893df4 small fix in event handler 2023-02-01 20:42:21 +01:00
bf16fa14ad month correction 2023-02-01 20:19:54 +01:00
15 changed files with 155 additions and 90 deletions

View File

@ -8,7 +8,30 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/).
The [milestone](https://egit.irs.uni-stuttgart.de/eive/eive-obsw/milestones)
list yields a list of all related PRs for each release.
# [v2.9.0] 2023-01-01
# [unreleased]
# [v2.11.0] 2023-02-06
## Fixed
- TMP1075 comands: Implement proper prompt for device select.
- TMP1075 commands: Add OFF, ON, NORMAL, and HK command
# [v2.10.0] 2023-02-03
tmtccmd v4.0.0rc0
## Changed
- Updated ACS SS commands for OBSW ACS SS update.
PR: https://egit.irs.uni-stuttgart.de/eive/eive-tmtc/pulls/130
## Fixed
- Fixed parsing of processed GPS data
PR: https://egit.irs.uni-stuttgart.de/eive/eive-tmtc/pulls/129
# [v2.9.0] 2023-02-01
## Fixed
@ -21,7 +44,7 @@ list yields a list of all related PRs for each release.
- Add time dump command.
- Time event handling.
# [v2.8.0] 2023-01-01
# [v2.8.0] 2023-02-01
- Move all device modules inside `pus_tc` and `pus_tm` to `tmtc` module and respective
subsystem submodules.

View File

@ -3,10 +3,10 @@ from pathlib import Path
SW_NAME = "eive-tmtc"
VERSION_MAJOR = 2
VERSION_MINOR = 9
VERSION_MINOR = 11
VERSION_REVISION = 0
__version__ = "2.9.0"
__version__ = "2.11.0"
EIVE_TMTC_ROOT = Path(__file__).parent
PACKAGE_ROOT = EIVE_TMTC_ROOT.parent

View File

@ -38,8 +38,6 @@ class CustomServiceList(str, enum.Enum):
ACS = "acs"
COM_SS = "com"
BPX_BATTERY = "bpx"
TMP1075_1 = "tmp1075_1"
TMP1075_2 = "tmp1075_2"
HEATER = "heater"
IMTQ = "imtq"
PLOC_SUPV = "ploc_supv"
@ -53,7 +51,7 @@ class CustomServiceList(str, enum.Enum):
REACTION_WHEEL_4 = "rw_4"
RW_ASSEMBLY = "rw_ass"
RAD_SENSOR = "rad_sensor"
GPS_CTRL = "gnss-ctrl"
GPS_CTRL = "gps"
PLOC_MEMORY_DUMPER = "ploc_memory_dumper"
CORE = "core"
STAR_TRACKER = "star_tracker"
@ -71,6 +69,7 @@ class CustomServiceList(str, enum.Enum):
TIME = "time"
PROCEDURE = "proc"
RTD = "rtd"
TMP1075 = "tcs_tmp"
TVTTESTPROCEDURE = "tvtestproc"
CONTROLLERS = "controllers"
SCEX = "scex"

View File

@ -84,7 +84,8 @@ Event ID (dec); Event ID (hex); Name; Severity; Description; File Path
10800;0x2a30;STORE_ERROR;LOW;;fsfw/src/fsfw/cfdp/handler/defs.h
10801;0x2a31;MSG_QUEUE_ERROR;LOW;;fsfw/src/fsfw/cfdp/handler/defs.h
10802;0x2a32;SERIALIZATION_ERROR;LOW;;fsfw/src/fsfw/cfdp/handler/defs.h
11200;0x2bc0;SAFE_RATE_VIOLATION;MEDIUM;;mission/controller/AcsController.h
11200;0x2bc0;SAFE_RATE_VIOLATION;MEDIUM;;mission/acsDefs.h
11201;0x2bc1;SAFE_RATE_RECOVERY;MEDIUM;;mission/acsDefs.h
11300;0x2c24;SWITCH_CMD_SENT;INFO;Indicates that a FSFW object requested setting a switch P1: 1 if on was requested, 0 for off | P2: Switch Index;mission/devices/devicedefinitions/powerDefinitions.h
11301;0x2c25;SWITCH_HAS_CHANGED;INFO;Indicated that a switch state has changed P1: New switch state, 1 for on, 0 for off | P2: Switch Index;mission/devices/devicedefinitions/powerDefinitions.h
11302;0x2c26;SWITCHING_Q7S_DENIED;MEDIUM;;mission/devices/devicedefinitions/powerDefinitions.h

1 Event ID (dec) Event ID (hex) Name Severity Description File Path
84 10800 0x2a30 STORE_ERROR LOW fsfw/src/fsfw/cfdp/handler/defs.h
85 10801 0x2a31 MSG_QUEUE_ERROR LOW fsfw/src/fsfw/cfdp/handler/defs.h
86 10802 0x2a32 SERIALIZATION_ERROR LOW fsfw/src/fsfw/cfdp/handler/defs.h
87 11200 0x2bc0 SAFE_RATE_VIOLATION MEDIUM mission/controller/AcsController.h mission/acsDefs.h
88 11201 0x2bc1 SAFE_RATE_RECOVERY MEDIUM mission/acsDefs.h
89 11300 0x2c24 SWITCH_CMD_SENT INFO Indicates that a FSFW object requested setting a switch P1: 1 if on was requested, 0 for off | P2: Switch Index mission/devices/devicedefinitions/powerDefinitions.h
90 11301 0x2c25 SWITCH_HAS_CHANGED INFO Indicated that a switch state has changed P1: New switch state, 1 for on, 0 for off | P2: Switch Index mission/devices/devicedefinitions/powerDefinitions.h
91 11302 0x2c26 SWITCHING_Q7S_DENIED MEDIUM mission/devices/devicedefinitions/powerDefinitions.h

View File

@ -5,9 +5,10 @@
"""
import logging
import os.path
from typing import Dict
from eive_tmtc import EIVE_TMTC_ROOT
from tmtccmd.util.obj_id import ObjectIdDictT
from tmtccmd.util.obj_id import ObjectIdDictT, ObjectIdU32
from tmtccmd.fsfw import parse_fsfw_objects_csv
@ -30,8 +31,10 @@ SCEX_HANDLER_ID = bytes([0x44, 0x33, 0x00, 0x32])
# Thermal Object IDs
THERMAL_CONTROLLER_ID = bytes([0x43, 0x40, 0x00, 0x01])
HEATER_CONTROLLER_ID = bytes([0x44, 0x41, 0x00, 0xA4])
TMP_1075_1_HANDLER_ID = bytes([0x44, 0x42, 0x00, 0x04])
TMP_1075_2_HANDLER_ID = bytes([0x44, 0x42, 0x00, 0x05])
TMP1075_HANDLER_TCS_BRD_0_ID = bytes([0x44, 0x42, 0x00, 0x04])
TMP1075_HANDLER_TCS_BRD_1_ID = bytes([0x44, 0x42, 0x00, 0x05])
TMP1075_HANDLER_PLPCDU_0_ID = bytes([0x44, 0x42, 0x00, 0x06])
TMP1075_HANDLER_IF_BRD_ID = bytes([0x44, 0x42, 0x00, 0x08])
# Communication Object IDs
SYRLINKS_HANDLER_ID = bytes([0x44, 0x53, 0x00, 0xA3])
@ -139,7 +142,10 @@ ACS_CONTROLLER = bytes([0x43, 0x00, 0x00, 0x02])
CORE_CONTROLLER_ID = bytes([0x43, 0x00, 0x00, 0x03])
def get_object_ids() -> ObjectIdDictT:
ObjectIdDict = Dict[bytes, ObjectIdU32]
def get_object_ids() -> ObjectIdDict:
global __OBJECT_ID_DICT
if not os.path.exists(DEFAULT_OBJECTS_CSV_PATH):
logging.getLogger(__name__).warning(

View File

@ -23,14 +23,6 @@ def get_eive_service_op_code_dict() -> TmtcDefinitionWrapper:
return def_wrapper
@tmtc_definitions_provider
def add_tmp_sens_cmds(defs: TmtcDefinitionWrapper):
oce = OpCodeEntry()
oce.add("0", "TMP1075 Tests")
defs.add_service(CustomServiceList.TMP1075_1.value, "TMP1075 1", oce)
defs.add_service(CustomServiceList.TMP1075_2.value, "TMP1075 2", oce)
@tmtc_definitions_provider
def add_pdec_cmds(defs: TmtcDefinitionWrapper):
oce = OpCodeEntry()

View File

@ -45,8 +45,10 @@ from eive_tmtc.config.object_ids import (
PDU_1_HANDLER_ID,
PDU_2_HANDLER_ID,
ACU_HANDLER_ID,
TMP_1075_1_HANDLER_ID,
TMP_1075_2_HANDLER_ID,
TMP1075_HANDLER_TCS_BRD_0_ID,
TMP1075_HANDLER_TCS_BRD_1_ID,
TMP1075_HANDLER_PLPCDU_0_ID,
TMP1075_HANDLER_IF_BRD_ID,
HEATER_CONTROLLER_ID,
IMTQ_HANDLER_ID,
RW1_ID,
@ -74,6 +76,8 @@ from eive_tmtc.pus_tc.system.proc import pack_proc_commands
import eive_tmtc.config.object_ids as oids
from tmtccmd.util import ObjectIdU32
from eive_tmtc.utility.input_helper import InputHelper
def handle_default_procedure(
tc_base: TcHandlerBase,
@ -103,13 +107,16 @@ def handle_default_procedure(
return pack_acu_commands(object_id=object_id, q=queue_helper, op_code=op_code)
if service == CustomServiceList.TCS.value:
return pack_tcs_sys_commands(q=queue_helper, op_code=op_code)
if service == CustomServiceList.TMP1075_1.value:
object_id = cast(ObjectIdU32, obj_id_man.get(TMP_1075_1_HANDLER_ID))
return pack_tmp1075_test_into(
object_id=object_id, q=queue_helper, op_code=op_code
)
if service == CustomServiceList.TMP1075_2.value:
object_id = cast(ObjectIdU32, obj_id_man.get(TMP_1075_2_HANDLER_ID))
if service == CustomServiceList.TMP1075.value:
menu_dict = {
"0": ("TMP1075 TCS Board 0", TMP1075_HANDLER_TCS_BRD_0_ID),
"1": ("TMP1075 TCS Board 1", TMP1075_HANDLER_TCS_BRD_1_ID),
"2": ("TMP1075 PL PCDU 0", TMP1075_HANDLER_PLPCDU_0_ID),
"4": ("TMP1075 IF Board", TMP1075_HANDLER_IF_BRD_ID),
}
input_helper = InputHelper(menu_dict)
tmp_select = input_helper.get_key()
object_id = obj_id_man.get(menu_dict[tmp_select][1])
return pack_tmp1075_test_into(
object_id=object_id, q=queue_helper, op_code=op_code
)

View File

@ -19,7 +19,7 @@ _LOGGER = logging.getLogger(__name__)
def handle_event_packet(raw_tm: bytes, printer: FsfwTmTcPrinter):
pw = PrintWrapper(printer)
tm = Service5Tm.unpack(raw_telemetry=raw_tm, time_reader=CdsShortTimestamp.empty())
tm = Service5Tm.unpack(data=raw_tm, time_reader=CdsShortTimestamp.empty())
event_dict = get_event_dict()
event_def = tm.event_definition
info = event_dict.get(event_def.event_id)
@ -35,10 +35,10 @@ def handle_event_packet(raw_tm: bytes, printer: FsfwTmTcPrinter):
else:
obj_name = obj_id_obj.name
generic_event_string = f"Object {obj_name} generated Event {info.name} (ID: {event_def.event_id:#04x}) at {tm.time_provider.as_date_time()}"
_LOGGER.info(generic_event_string)
pw.printer.file_logger.info(
f"{datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')}: {generic_event_string}"
)
pw.ilog(_LOGGER, generic_event_string)
specific_handler = True
if info.name == "MODE_TRANSITION_FAILED":
reason = generic_retval_printout(event_def.param1)
@ -56,16 +56,13 @@ def handle_event_packet(raw_tm: bytes, printer: FsfwTmTcPrinter):
if info.name == "MODE_INFO":
mode_name = "Unknown"
if obj_name == "ACS_SUBSYSTEM":
if event_def.param1 == Mode.OFF:
mode_name = "Off"
elif event_def.param1 == AcsMode.IDLE:
mode_name = "Idle"
elif event_def.param1 == AcsMode.DETUMBLE:
mode_name = "Detumble"
elif event_def.param1 == AcsMode.SAFE:
mode_name = "Safe"
elif event_def.param1 == AcsMode.TARGET_PT:
mode_name = "Target Pointing"
acs_mode = AcsMode(event_def.param1)
pw.dlog(f"ACS Mode: {acs_mode!r}")
elif obj_name == "ACS_CONTROLLER_ID":
mode_name = Mode(event_def.param1)
submode = AcsMode(event_def.param2)
pw.dlog(f"Mode: {mode_name!r}")
pw.dlog(f"ACS Mode: {submode!r}")
else:
if event_def.param1 == Mode.OFF:
mode_name = "Off"
@ -75,8 +72,8 @@ def handle_event_packet(raw_tm: bytes, printer: FsfwTmTcPrinter):
mode_name = "Normal"
elif event_def.param1 == Mode.RAW:
mode_name = "Raw"
pw.dlog(f"Mode Number {event_def.param1}, Mode Name {mode_name}")
pw.dlog(f"Submode: {event_def.param2}")
pw.dlog(f"Mode Number {event_def.param1}, Mode Name {mode_name}")
pw.dlog(f"Submode: {event_def.param2}")
elif info.name == "CLOCK_SET":
old_time = event_def.param1
new_time = event_def.param2

View File

@ -53,7 +53,7 @@ def pus_factory_hook(
handle_action_reply(raw_tm=packet, printer=printer, obj_id_dict=obj_id_dict)
elif service == 17:
tm_packet = Service17Tm.unpack(
raw_telemetry=packet, time_reader=CdsShortTimestamp.empty()
data=packet, time_reader=CdsShortTimestamp.empty()
)
if tm_packet.subservice == 2:
verif_wrapper.dlog("Received Ping Reply TM[17,2]")

View File

@ -21,6 +21,7 @@ from tmtccmd.tc.pus_3_fsfw_hk import (
make_sid,
enable_periodic_hk_command_with_interval,
disable_periodic_hk_command,
create_request_one_diag_command,
)
from tmtccmd.util.tmtc_printer import FsfwTmTcPrinter
@ -286,7 +287,9 @@ def pack_acs_ctrl_command(p: ServiceProviderParams):
elif op_code in OpCodes.REQUEST_PROC_GYR_HK:
q.add_log_cmd(Info.REQUEST_PROC_GYR_HK)
q.add_pus_tc(
generate_one_hk_command(make_sid(ACS_CONTROLLER, SetId.GYR_PROC_SET))
create_request_one_diag_command(
make_sid(ACS_CONTROLLER, SetId.GYR_PROC_SET)
)
)
elif op_code in OpCodes.ENABLE_PROC_GYR_HK:
q.add_log_cmd(Info.ENABLE_PROC_GYR_HK)
@ -619,7 +622,7 @@ def handle_gps_data_processed(pw: PrintWrapper, hk_data: bytes):
fmt_vec = "!ddd"
inc_len_scalar = struct.calcsize(fmt_scalar)
inc_len_vec = struct.calcsize(fmt_vec)
if len(hk_data) < 2 * inc_len_scalar + inc_len_vec:
if len(hk_data) < 2 * inc_len_scalar + 2 * inc_len_vec:
pw.dlog("Received HK set too small")
return
current_idx = 0
@ -637,14 +640,22 @@ def handle_gps_data_processed(pw: PrintWrapper, hk_data: bytes):
)
]
current_idx += inc_len_scalar
pos = [
f"{val:8.3f}"
for val in struct.unpack(
fmt_vec, hk_data[current_idx : current_idx + inc_len_vec]
)
]
velo = [
f"{val:8.3f}"
for val in struct.unpack(
fmt_vec, hk_data[current_idx : current_idx + inc_len_vec]
)
]
current_idx += inc_len_vec
pw.dlog(f"GPS Latitude: {lat} [rad]")
pw.dlog(f"GPS Longitude: {long} [rad]")
pw.dlog(f"GPS Position: {pos} [m]")
pw.dlog(f"GPS Velocity: {velo} [m/s]")
pw.printer.print_validity_buffer(hk_data[current_idx:], num_vars=3)
@ -672,6 +683,7 @@ def handle_mekf_data(pw: PrintWrapper, hk_data: bytes):
fmt_vec, hk_data[current_idx : current_idx + inc_len_vec]
)
]
current_idx += inc_len_vec
pw.dlog(f"MEKF Quaternion: {quat}")
pw.dlog(f"MEKF Rotational Rate: {rate}")
pw.printer.print_validity_buffer(hk_data[current_idx:], num_vars=2)
@ -707,6 +719,7 @@ def handle_ctrl_val_data(pw: PrintWrapper, hk_data: bytes):
fmt_scalar, hk_data[current_idx : current_idx + inc_len_scalar]
)
]
current_idx += inc_len_scalar
pw.dlog(f"Control Values Target Quaternion: {tgt_quat}")
pw.dlog(f"Control Values Error Quaternion: {err_quat}")
pw.dlog(f"Control Values Error Angle: {err_ang} [rad]")
@ -745,6 +758,7 @@ def handle_act_cmd_data(pw: PrintWrapper, hk_data: bytes):
fmt_vec3_int16, hk_data[current_idx : current_idx + inc_len_vec3_int16]
)
]
current_idx += inc_len_vec3_int16
pw.dlog(f"Actuator Commands RW Target Torque: {rw_tgt_torque}")
pw.dlog(f"Actuator Commands RW Target Speed: {rw_tgt_speed}")
pw.dlog(f"Actuator Commands MTQ Target Dipole: {mtq_tgt_dipole}")

View File

@ -13,8 +13,8 @@ _LOGGER = logging.getLogger(__name__)
class OpCode:
REQ_OS_HK = ["0", "hk-os"]
RESET_GNSS = ["5", "reset"]
REQ_OS_HK = ["hk"]
RESET_GNSS = ["reset"]
class Info:

View File

@ -20,16 +20,22 @@ class OpCode(str, enum.Enum):
SAFE = "safe"
DETUMBLE = "detumble"
IDLE = "idle"
TARGET_PT = "target"
PTG_TARGET = "ptg_target"
PTG_TARGET_NADIR = "ptg_nadir"
PTG_TARGET_GS = "ptg_target_gs"
PTG_TARGET_INERTIAL = "ptg_inertial"
REPORT_ALL_MODES = "all_modes"
class AcsMode(enum.IntEnum):
OFF = 0
SAFE = 1 << 24
DETUMBLE = 2 << 24
IDLE = 3 << 24
TARGET_PT = 4 << 24
SAFE = 2
DETUMBLE = 3
IDLE = 4
PTG_TARGET_NADIR = 5
PTG_TARGET = 6
PTG_TARGET_GS = 7
PTG_TARGET_INERTIAL = 8
class Info(str, enum.Enum):
@ -37,15 +43,22 @@ class Info(str, enum.Enum):
SAFE = "Safe Mode Command"
DETUMBLE = "Detumble Mode Command"
IDLE = "Idle Mode Command"
TARGET_PT = "Target Pointing Mode Command"
PTG_TARGET_NADIR = "Target Pointing Nadir"
PTG_TARGET = "Target Pointing"
PTG_TARGET_GS = "Target Pointing Ground Station"
PTG_TARGET_INERTIAL = "Target Pointing Inertial"
REPORT_ALL_MODES = "Report All Modes Recursively"
HANDLER_LIST: Dict[str, Tuple[int, str]] = {
OpCode.OFF: (AcsMode.OFF, Info.OFF),
OpCode.IDLE: (AcsMode.IDLE, Info.IDLE),
OpCode.SAFE: (AcsMode.SAFE, Info.SAFE),
OpCode.DETUMBLE: (AcsMode.DETUMBLE, Info.DETUMBLE),
OpCode.IDLE: (AcsMode.IDLE, Info.IDLE),
OpCode.PTG_TARGET: (AcsMode.PTG_TARGET, Info.PTG_TARGET),
OpCode.PTG_TARGET_GS: (AcsMode.PTG_TARGET_GS, Info.PTG_TARGET_GS),
OpCode.PTG_TARGET_NADIR: (AcsMode.PTG_TARGET_NADIR, Info.PTG_TARGET_NADIR),
OpCode.PTG_TARGET_INERTIAL: (AcsMode.PTG_TARGET_INERTIAL, Info.PTG_TARGET_INERTIAL),
}
@ -78,8 +91,7 @@ def build_acs_subsystem_cmd(p: ServiceProviderParams):
@tmtc_definitions_provider
def add_acs_subsystem_cmds(defs: TmtcDefinitionWrapper):
oce = OpCodeEntry()
oce.add(OpCode.OFF, Info.OFF)
oce.add(OpCode.SAFE, Info.SAFE)
oce.add(OpCode.IDLE, Info.IDLE)
for op_code, (_, info) in HANDLER_LIST.items():
oce.add(op_code, info)
oce.add(OpCode.REPORT_ALL_MODES, Info.REPORT_ALL_MODES)
defs.add_service(CustomServiceList.ACS_SS, "ACS Subsystem", oce)

View File

@ -7,27 +7,31 @@
"""
import enum
from eive_tmtc.config.definitions import CustomServiceList
from spacepackets.ecss.tc import PusTelecommand
from tmtccmd.config.tmtc import (
tmtc_definitions_provider,
TmtcDefinitionWrapper,
OpCodeEntry,
)
from tmtccmd.tc import DefaultPusQueueHelper
from tmtccmd.tc.pus_200_fsfw_mode import Mode, pack_mode_data
from tmtccmd.pus.s8_fsfw_funccmd import make_action_id
from tmtccmd.tc.pus_3_fsfw_hk import create_request_one_hk_command, make_sid
from tmtccmd.util import ObjectIdU32
class Tmp1075TestProcedure:
"""
@brief Use this class to define the tests to perform for the Tmp1075.
@details Setting all to True will run all tests.
Setting all to False will only run the tests set to True.
"""
class OpCode:
OFF = "off"
ON = "on"
NML = "nml"
HK = "hk"
all = False
start_adc_conversion = False
get_temp = False
set_mode_normal = (
True # Setting mode to normal starts continuous temperature reading
)
set_mode_on = False # If mode is MODE_ON, temperature will only be read on command
class Info:
OFF = "Off"
ON = "On"
NML = "Normal"
HK = "HK"
class Tmp1075ActionId(enum.IntEnum):
@ -35,30 +39,40 @@ class Tmp1075ActionId(enum.IntEnum):
START_ADC_CONV = 2
class SetId:
TMEPERATURE = 1
def pack_tmp1075_test_into(
object_id: ObjectIdU32, op_code: str, q: DefaultPusQueueHelper
):
q.add_log_cmd(
f"Testing Tmp1075 Temperature Sensor Handler with object id: {object_id.as_hex_string}"
f"Testing Tmp1075 Temperature Sensor Handler with object id: {object_id}"
)
obyt = object_id.as_bytes
if Tmp1075TestProcedure.all or Tmp1075TestProcedure.start_adc_conversion:
q.add_log_cmd("TMP1075: Starting new temperature conversion")
command = obyt + make_action_id(Tmp1075ActionId.GET_TEMP)
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command))
if Tmp1075TestProcedure.all or Tmp1075TestProcedure.get_temp:
q.add_log_cmd("TMP1075: Read temperature")
command = obyt + make_action_id(Tmp1075ActionId.START_ADC_CONV)
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command))
if Tmp1075TestProcedure.set_mode_normal:
if op_code == OpCode.OFF:
q.add_log_cmd("TMP1075: Set Normal Off")
mode_data = pack_mode_data(obyt, Mode.OFF, 0)
q.add_pus_tc(PusTelecommand(service=200, subservice=1, app_data=mode_data))
if op_code == OpCode.NML:
q.add_log_cmd("TMP1075: Set Mode Normal")
mode_data = pack_mode_data(obyt, Mode.NORMAL, 0)
q.add_pus_tc(PusTelecommand(service=200, subservice=1, app_data=mode_data))
if Tmp1075TestProcedure.set_mode_on:
if op_code == OpCode.ON:
q.add_log_cmd("TMP1075: Set Mode On")
mode_data = pack_mode_data(obyt, Mode.ON, 0)
q.add_pus_tc(PusTelecommand(service=200, subservice=1, app_data=mode_data))
if op_code == OpCode.HK:
q.add_log_cmd("TMP1075: Request One-Shot HK")
q.add_pus_tc(create_request_one_hk_command(make_sid(obyt, SetId.TMEPERATURE)))
return q
@tmtc_definitions_provider
def add_tmp_sens_cmds(defs: TmtcDefinitionWrapper):
oce = OpCodeEntry()
oce.add(OpCode.OFF, Info.OFF)
oce.add(OpCode.ON, Info.ON)
oce.add(OpCode.NML, Info.NML)
oce.add(OpCode.HK, Info.HK)
defs.add_service(CustomServiceList.TMP1075.value, "TMP1075 Temperature Sensor", oce)

View File

@ -6,13 +6,13 @@
@date 13.02.2021
"""
import logging
from typing import Tuple, Dict
_LOGGER = logging.getLogger(__name__)
class InputHelper:
def __init__(self, menu: dict):
def __init__(self, menu: Dict[str, Tuple[str, ...]]):
"""
@brief Constructor
@param menu The menu describing the input options

View File

@ -27,8 +27,8 @@ classifiers =
[options]
install_requires =
# tmtccmd @ git+https://github.com/robamu-org/tmtccmd@v4.0.0a3
tmtccmd @ git+https://github.com/robamu-org/tmtccmd@d6938b2adf0c5cbf3fe8621292b805ed2a66071e#egg=tmtccmd
tmtccmd @ git+https://github.com/robamu-org/tmtccmd@v4.0.0rc0
# tmtccmd @ git+https://github.com/robamu-org/tmtccmd@<gitRev>#egg=tmtccmd
packages = find:
python_requires = >=3.10
include_package_data = True