Compare commits
11 Commits
Author | SHA1 | Date | |
---|---|---|---|
a4a4a6b666 | |||
f99a3ab74a | |||
a9c23a4453 | |||
407163397d | |||
65839f5aec | |||
14ed2415a4 | |||
fb6d5eeb80 | |||
39a9497494 | |||
f4702eb701 | |||
b7e6a79704 | |||
b8376c6f48 |
11
CHANGELOG.md
11
CHANGELOG.md
@ -10,6 +10,17 @@ list yields a list of all related PRs for each release.
|
|||||||
|
|
||||||
# [unreleased]
|
# [unreleased]
|
||||||
|
|
||||||
|
# [v2.6.0] 2023-01-28
|
||||||
|
|
||||||
|
## Changed
|
||||||
|
|
||||||
|
- Reworked and improved PUS 20 parameter reply handling
|
||||||
|
|
||||||
|
## Added
|
||||||
|
|
||||||
|
- COM subsystem commanding. Default datarate parameter commanding
|
||||||
|
was moved to the subsystem as well.
|
||||||
|
|
||||||
# [v2.5.0] 2023-01-26
|
# [v2.5.0] 2023-01-26
|
||||||
|
|
||||||
## Fixed
|
## Fixed
|
||||||
|
@ -2,10 +2,10 @@ from pathlib import Path
|
|||||||
|
|
||||||
SW_NAME = "eive-tmtc"
|
SW_NAME = "eive-tmtc"
|
||||||
VERSION_MAJOR = 2
|
VERSION_MAJOR = 2
|
||||||
VERSION_MINOR = 5
|
VERSION_MINOR = 6
|
||||||
VERSION_REVISION = 0
|
VERSION_REVISION = 0
|
||||||
|
|
||||||
__version__ = "2.5.0"
|
__version__ = "2.6.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
|
||||||
|
@ -35,6 +35,7 @@ class CustomServiceList(str, enum.Enum):
|
|||||||
POWER = "power"
|
POWER = "power"
|
||||||
ACU = "acu"
|
ACU = "acu"
|
||||||
ACS = "acs"
|
ACS = "acs"
|
||||||
|
COM_SS = "com"
|
||||||
BPX_BATTERY = "bpx"
|
BPX_BATTERY = "bpx"
|
||||||
TMP1075_1 = "tmp1075_1"
|
TMP1075_1 = "tmp1075_1"
|
||||||
TMP1075_2 = "tmp1075_2"
|
TMP1075_2 = "tmp1075_2"
|
||||||
|
@ -127,6 +127,8 @@ SUS_11_R_LOC_XBYMZB_PT_ZB = bytes([0x44, 0x12, 0x00, 0x43])
|
|||||||
ACS_SUBSYSTEM_ID = bytes([0x73, 0x01, 0x00, 0x01])
|
ACS_SUBSYSTEM_ID = bytes([0x73, 0x01, 0x00, 0x01])
|
||||||
PL_SUBSYSTEM_ID = bytes([0x73, 0x01, 0x00, 0x02])
|
PL_SUBSYSTEM_ID = bytes([0x73, 0x01, 0x00, 0x02])
|
||||||
TCS_SUBSYSTEM_ID = bytes([0x73, 0x01, 0x00, 0x03])
|
TCS_SUBSYSTEM_ID = bytes([0x73, 0x01, 0x00, 0x03])
|
||||||
|
COM_SUBSYSTEM_ID = bytes([0x73, 0x01, 0x00, 0x04])
|
||||||
|
|
||||||
ACS_BOARD_ASS_ID = bytes([0x73, 0x00, 0x00, 0x01])
|
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])
|
||||||
|
@ -72,7 +72,7 @@
|
|||||||
0x44420029;RTD_13_IC16_PLPCDU_HEATSPREADER
|
0x44420029;RTD_13_IC16_PLPCDU_HEATSPREADER
|
||||||
0x44420030;RTD_14_IC17_TCS_BOARD
|
0x44420030;RTD_14_IC17_TCS_BOARD
|
||||||
0x44420031;RTD_15_IC18_IMTQ
|
0x44420031;RTD_15_IC18_IMTQ
|
||||||
0x445300A3;SYRLINKS_HK_HANDLER
|
0x445300A3;SYRLINKS_HANDLER
|
||||||
0x49000000;ARDUINO_COM_IF
|
0x49000000;ARDUINO_COM_IF
|
||||||
0x49010005;GPIO_IF
|
0x49010005;GPIO_IF
|
||||||
0x49010006;SCEX_UART_READER
|
0x49010006;SCEX_UART_READER
|
||||||
@ -147,5 +147,6 @@
|
|||||||
0x73010001;ACS_SUBSYSTEM
|
0x73010001;ACS_SUBSYSTEM
|
||||||
0x73010002;PL_SUBSYSTEM
|
0x73010002;PL_SUBSYSTEM
|
||||||
0x73010003;TCS_SUBSYSTEM
|
0x73010003;TCS_SUBSYSTEM
|
||||||
|
0x73010004;COM_SUBSYSTEM
|
||||||
0x73500000;CCSDS_IP_CORE_BRIDGE
|
0x73500000;CCSDS_IP_CORE_BRIDGE
|
||||||
0xFFFFFFFF;NO_OBJECT
|
0xFFFFFFFF;NO_OBJECT
|
||||||
|
|
@ -4,7 +4,7 @@ from eive_tmtc.config.events import get_event_dict
|
|||||||
from eive_tmtc.config.object_ids import get_object_ids
|
from eive_tmtc.config.object_ids import get_object_ids
|
||||||
from eive_tmtc.pus_tm.defs import PrintWrapper
|
from eive_tmtc.pus_tm.defs import PrintWrapper
|
||||||
from eive_tmtc.pus_tm.verification_handler import generic_retval_printout
|
from eive_tmtc.pus_tm.verification_handler import generic_retval_printout
|
||||||
from eive_tmtc.tmtc.acs.acs_subsystem import AcsMode
|
from eive_tmtc.tmtc.acs.subsystem import AcsMode
|
||||||
from tmtccmd.tc.pus_200_fsfw_modes import Mode
|
from tmtccmd.tc.pus_200_fsfw_modes import Mode
|
||||||
|
|
||||||
from tmtccmd.tm import Service5Tm
|
from tmtccmd.tm import Service5Tm
|
||||||
|
@ -9,7 +9,9 @@ from tmtccmd import get_console_logger
|
|||||||
from tmtccmd.logging.pus import RawTmtcTimedLogWrapper
|
from tmtccmd.logging.pus import RawTmtcTimedLogWrapper
|
||||||
from tmtccmd.pus import VerificationWrapper
|
from tmtccmd.pus import VerificationWrapper
|
||||||
from tmtccmd.tm import Service20FsfwTm, Service200FsfwTm
|
from tmtccmd.tm import Service20FsfwTm, Service200FsfwTm
|
||||||
from tmtccmd.tm.pus_200_fsfw_modes import Subservice as ModeSubservices
|
from tmtccmd.tm.pus_20_fsfw_params import Service20ParamDumpWrapper
|
||||||
|
from tmtccmd.pus.s20_fsfw_params_defs import CustomSubservice as ParamSubservice
|
||||||
|
from tmtccmd.tm.pus_200_fsfw_modes import Subservice as ModeSubservice
|
||||||
from tmtccmd.util.tmtc_printer import FsfwTmTcPrinter
|
from tmtccmd.util.tmtc_printer import FsfwTmTcPrinter
|
||||||
from .defs import PrintWrapper
|
from .defs import PrintWrapper
|
||||||
|
|
||||||
@ -56,15 +58,42 @@ def pus_factory_hook(
|
|||||||
verif_wrapper.dlog("Received Ping Reply TM[17,2]")
|
verif_wrapper.dlog("Received Ping Reply TM[17,2]")
|
||||||
dedicated_handler = True
|
dedicated_handler = True
|
||||||
elif service == 20:
|
elif service == 20:
|
||||||
tm_packet = Service20FsfwTm.unpack(
|
param_packet = Service20FsfwTm.unpack(
|
||||||
raw_telemetry=packet, time_reader=CdsShortTimestamp.empty()
|
raw_telemetry=packet, time_reader=CdsShortTimestamp.empty()
|
||||||
)
|
)
|
||||||
dedicated_handler = False
|
if tm_packet.subservice == ParamSubservice.TM_DUMP_REPLY:
|
||||||
|
param_wrapper = Service20ParamDumpWrapper(param_tm=param_packet)
|
||||||
|
try:
|
||||||
|
param = param_wrapper.get_param()
|
||||||
|
obj = obj_id_dict.get(param_wrapper.param_tm.object_id)
|
||||||
|
pw.dlog(f"Received parameter dump TM from {obj}")
|
||||||
|
pw.dlog(f"Parameter: {param}")
|
||||||
|
if param.row == 1 and param.column == 1:
|
||||||
|
try:
|
||||||
|
scalar_param = param.parse_scalar_param()
|
||||||
|
if isinstance(scalar_param, int):
|
||||||
|
pw.dlog(f"Scalar integer parameter: {scalar_param}")
|
||||||
|
elif isinstance(scalar_param, float):
|
||||||
|
pw.dlog(f"Scalar floating point parameter: {scalar_param}")
|
||||||
|
except ValueError as e:
|
||||||
|
pw.dlog("received {e} trying to parse scalar parameter")
|
||||||
|
else:
|
||||||
|
# TODO: Could improve display further by actually displaying a matrix as a
|
||||||
|
# matrix using row and column information
|
||||||
|
pw.dlog(
|
||||||
|
f"Received vector or matrix data: {param.param_data.hex(sep=',')}"
|
||||||
|
)
|
||||||
|
except ValueError as e:
|
||||||
|
pw.dlog(f"received {e} when trying to parse parameters")
|
||||||
|
except NotImplementedError as e:
|
||||||
|
pw.dlog(f"received {e} when trying to parse parameters")
|
||||||
|
else:
|
||||||
|
pw.dlog(f"unknown subservice {tm_packet.subservice} for parameter service")
|
||||||
elif service == 200:
|
elif service == 200:
|
||||||
tm_packet = Service200FsfwTm.unpack(
|
tm_packet = Service200FsfwTm.unpack(
|
||||||
raw_telemetry=packet, time_reader=CdsShortTimestamp.empty()
|
raw_telemetry=packet, time_reader=CdsShortTimestamp.empty()
|
||||||
)
|
)
|
||||||
if tm_packet.subservice == ModeSubservices.TM_CANT_REACH_MODE:
|
if tm_packet.subservice == ModeSubservice.TM_CANT_REACH_MODE:
|
||||||
obj_id = tm_packet.object_id
|
obj_id = tm_packet.object_id
|
||||||
obj_id_obj = obj_id_dict.get(obj_id)
|
obj_id_obj = obj_id_dict.get(obj_id)
|
||||||
retval = tm_packet.return_value
|
retval = tm_packet.return_value
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
from .payload.pl_subsystem import add_payload_subsystem_cmds
|
from .payload.subsystem import add_payload_subsystem_cmds
|
||||||
from .solar_array_deployment import add_sa_depl_cmds
|
from .solar_array_deployment import add_sa_depl_cmds
|
||||||
from .test import add_test_defs
|
from .test import add_test_defs
|
||||||
|
@ -0,0 +1 @@
|
|||||||
|
from .subsystem import add_com_subsystem_cmds
|
||||||
|
115
eive_tmtc/tmtc/com/subsystem.py
Normal file
115
eive_tmtc/tmtc/com/subsystem.py
Normal file
@ -0,0 +1,115 @@
|
|||||||
|
import enum
|
||||||
|
|
||||||
|
from eive_tmtc.config.definitions import CustomServiceList
|
||||||
|
from eive_tmtc.config.object_ids import COM_SUBSYSTEM_ID
|
||||||
|
from eive_tmtc.tmtc.com.syrlinks_handler import Datarate
|
||||||
|
from tmtccmd.config.tmtc import (
|
||||||
|
tmtc_definitions_provider,
|
||||||
|
TmtcDefinitionWrapper,
|
||||||
|
OpCodeEntry,
|
||||||
|
)
|
||||||
|
from tmtccmd.tc import service_provider
|
||||||
|
from tmtccmd.tc.decorator import ServiceProviderParams
|
||||||
|
from tmtccmd.tc.pus_200_fsfw_modes import create_mode_command
|
||||||
|
from tmtccmd.tc.pus_20_fsfw_params import (
|
||||||
|
create_load_param_cmd,
|
||||||
|
pack_scalar_u8_parameter_app_data,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class ParameterId(enum.IntEnum):
|
||||||
|
DATARATE = 0
|
||||||
|
|
||||||
|
|
||||||
|
class Submode(enum.IntEnum):
|
||||||
|
RX_ONLY = 0
|
||||||
|
RX_AND_TX_DEF_DATARATE = 1
|
||||||
|
RX_AND_TX_LOW_DATARATE = 2
|
||||||
|
RX_AND_TX_HIGH_DATARATE = 3
|
||||||
|
RX_AND_TX_CARRIER_WAVE = 4
|
||||||
|
|
||||||
|
|
||||||
|
class OpCode:
|
||||||
|
RX_ONLY = "rx_only"
|
||||||
|
TX_AND_RX_DEF_RATE = "rx_and_tx_default_rate"
|
||||||
|
TX_AND_RX_LOW_RATE = "rx_and_tx_low_rate"
|
||||||
|
TX_AND_RX_HIGH_RATE = "rx_and_tx_high_rate"
|
||||||
|
TX_AND_RX_CARRIER_WAVE = "rx_and_tx_carrier_wave"
|
||||||
|
UPDATE_DEFAULT_DATARATE_LOW = "update_default_rate_low"
|
||||||
|
UPDATE_DEFAULT_DATARATE_HIGH = "update_default_rate_high"
|
||||||
|
|
||||||
|
|
||||||
|
class Info:
|
||||||
|
RX_ONLY = "Syrlinks RX Only"
|
||||||
|
TX_AND_RX_DEF_DATARATE = "Syrlinks with TX default datarate"
|
||||||
|
TX_AND_RX_LOW_DATARATE = "Syrlinks with TX low datarate (BPSK modulation)"
|
||||||
|
TX_AND_RX_HIGH_DATARATE = "Syrlinks with TX high datarate (0QPSK modulation)"
|
||||||
|
TX_AND_RX_CARRIER_WAVE = "Syrlinks with TX carrier wave"
|
||||||
|
UPDATE_DEFAULT_DATARATE_LOW = "Configure default low datarate (BPSK modulation)"
|
||||||
|
UPDATE_DEFAULT_DATARATE_HIGH = "Configure default high datarate (0QPSK modulation)"
|
||||||
|
|
||||||
|
|
||||||
|
@service_provider(CustomServiceList.COM_SS)
|
||||||
|
def build_com_subsystem_cmd(p: ServiceProviderParams):
|
||||||
|
q = p.queue_helper
|
||||||
|
o = p.op_code
|
||||||
|
prefix = "COM Subsystem"
|
||||||
|
if o == OpCode.RX_ONLY:
|
||||||
|
q.add_log_cmd(Info.RX_ONLY)
|
||||||
|
q.add_pus_tc(create_mode_command(COM_SUBSYSTEM_ID, Submode.RX_ONLY, 0))
|
||||||
|
elif o == OpCode.TX_AND_RX_DEF_RATE:
|
||||||
|
q.add_log_cmd(Info.TX_AND_RX_DEF_DATARATE)
|
||||||
|
q.add_pus_tc(
|
||||||
|
create_mode_command(COM_SUBSYSTEM_ID, Submode.RX_AND_TX_DEF_DATARATE, 0)
|
||||||
|
)
|
||||||
|
elif o == OpCode.TX_AND_RX_LOW_RATE:
|
||||||
|
q.add_log_cmd(Info.TX_AND_RX_LOW_DATARATE)
|
||||||
|
q.add_pus_tc(
|
||||||
|
create_mode_command(COM_SUBSYSTEM_ID, Submode.RX_AND_TX_LOW_DATARATE, 0)
|
||||||
|
)
|
||||||
|
elif o == OpCode.TX_AND_RX_HIGH_RATE:
|
||||||
|
q.add_log_cmd(Info.TX_AND_RX_HIGH_DATARATE)
|
||||||
|
q.add_pus_tc(
|
||||||
|
create_mode_command(COM_SUBSYSTEM_ID, Submode.RX_AND_TX_HIGH_DATARATE, 0)
|
||||||
|
)
|
||||||
|
if o == OpCode.UPDATE_DEFAULT_DATARATE_LOW:
|
||||||
|
q.add_log_cmd(f"{prefix}: {Info.UPDATE_DEFAULT_DATARATE_LOW}")
|
||||||
|
q.add_pus_tc(
|
||||||
|
create_load_param_cmd(
|
||||||
|
pack_scalar_u8_parameter_app_data(
|
||||||
|
COM_SUBSYSTEM_ID,
|
||||||
|
0,
|
||||||
|
ParameterId.DATARATE,
|
||||||
|
Datarate.LOW_RATE_MODULATION_BPSK,
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
if o == OpCode.UPDATE_DEFAULT_DATARATE_HIGH:
|
||||||
|
q.add_log_cmd(f"{prefix}: {Info.UPDATE_DEFAULT_DATARATE_HIGH}")
|
||||||
|
q.add_pus_tc(
|
||||||
|
create_load_param_cmd(
|
||||||
|
pack_scalar_u8_parameter_app_data(
|
||||||
|
COM_SUBSYSTEM_ID,
|
||||||
|
0,
|
||||||
|
ParameterId.DATARATE,
|
||||||
|
Datarate.HIGH_RATE_MODULATION_0QPSK,
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
elif o == OpCode.TX_AND_RX_CARRIER_WAVE:
|
||||||
|
q.add_log_cmd(Info.TX_AND_RX_CARRIER_WAVE)
|
||||||
|
q.add_pus_tc(
|
||||||
|
create_mode_command(COM_SUBSYSTEM_ID, Submode.RX_AND_TX_CARRIER_WAVE, 0)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@tmtc_definitions_provider
|
||||||
|
def add_com_subsystem_cmds(defs: TmtcDefinitionWrapper):
|
||||||
|
oce = OpCodeEntry()
|
||||||
|
oce.add(OpCode.RX_ONLY, Info.RX_ONLY)
|
||||||
|
oce.add(OpCode.TX_AND_RX_LOW_RATE, Info.TX_AND_RX_LOW_DATARATE)
|
||||||
|
oce.add(OpCode.TX_AND_RX_HIGH_RATE, Info.TX_AND_RX_HIGH_DATARATE)
|
||||||
|
oce.add(OpCode.TX_AND_RX_DEF_RATE, Info.TX_AND_RX_DEF_DATARATE)
|
||||||
|
oce.add(OpCode.UPDATE_DEFAULT_DATARATE_LOW, Info.UPDATE_DEFAULT_DATARATE_LOW)
|
||||||
|
oce.add(OpCode.UPDATE_DEFAULT_DATARATE_HIGH, Info.UPDATE_DEFAULT_DATARATE_HIGH)
|
||||||
|
defs.add_service(CustomServiceList.COM_SS, "COM Subsystem", oce)
|
@ -24,10 +24,6 @@ from tmtccmd.tc.pus_3_fsfw_hk import (
|
|||||||
)
|
)
|
||||||
from spacepackets.ecss.tc import PusTelecommand
|
from spacepackets.ecss.tc import PusTelecommand
|
||||||
from tmtccmd.tc.pus_200_fsfw_modes import Mode, create_mode_command
|
from tmtccmd.tc.pus_200_fsfw_modes import Mode, create_mode_command
|
||||||
from tmtccmd.tc.pus_20_fsfw_params import (
|
|
||||||
pack_scalar_u8_parameter_app_data,
|
|
||||||
create_load_param_cmd,
|
|
||||||
)
|
|
||||||
from eive_tmtc.config.object_ids import SYRLINKS_HANDLER_ID
|
from eive_tmtc.config.object_ids import SYRLINKS_HANDLER_ID
|
||||||
import struct
|
import struct
|
||||||
|
|
||||||
@ -49,8 +45,6 @@ class OpCode:
|
|||||||
NORMAL_RX_AND_TX_DEF_DATARATE = "nml_default_datarate"
|
NORMAL_RX_AND_TX_DEF_DATARATE = "nml_default_datarate"
|
||||||
NORMAL_RX_AND_TX_LOW_DATARATE = "nml_low_datarate"
|
NORMAL_RX_AND_TX_LOW_DATARATE = "nml_low_datarate"
|
||||||
NORMAL_RX_AND_TX_HIGH_DATARATE = "nml_high_datarate"
|
NORMAL_RX_AND_TX_HIGH_DATARATE = "nml_high_datarate"
|
||||||
UPDATE_DEFAULT_DATARATE_LOW_RATE = "param_low_datarate"
|
|
||||||
UPDATE_DEFAULT_DATARATE_HIGH_RATE = "param_high_datarate"
|
|
||||||
HK_RX_REGS = "hk_rx_regs"
|
HK_RX_REGS = "hk_rx_regs"
|
||||||
ENABLE_HK_RX_REGS = "enable_hk_rx"
|
ENABLE_HK_RX_REGS = "enable_hk_rx"
|
||||||
DISABLE_HK_RX_REGS = "disable_hk_rx"
|
DISABLE_HK_RX_REGS = "disable_hk_rx"
|
||||||
@ -69,8 +63,6 @@ class Info:
|
|||||||
NORMAL_RX_AND_TX_DEF_DATARATE = "NORMAL RX and TX, TX with default datarate"
|
NORMAL_RX_AND_TX_DEF_DATARATE = "NORMAL RX and TX, TX with default datarate"
|
||||||
NORMAL_RX_AND_TX_LOW_DATARATE = "NORMAL RX and TX, TX with low datarate"
|
NORMAL_RX_AND_TX_LOW_DATARATE = "NORMAL RX and TX, TX with low datarate"
|
||||||
NORMAL_RX_AND_TX_HIGH_DATARATE = "NORMAL RX and TX, TX with high datarate"
|
NORMAL_RX_AND_TX_HIGH_DATARATE = "NORMAL RX and TX, TX with high datarate"
|
||||||
UPDATE_DEFAULT_DATARATE_LOW_RATE = "Update default datarate to low rate (BPSK)"
|
|
||||||
UPDATE_DEFAULT_DATARATE_HIGH_RATE = "Update default datarate to high rate (0QPSK)"
|
|
||||||
HK_RX_REGS = "Request RX register set"
|
HK_RX_REGS = "Request RX register set"
|
||||||
HK_TX_REGS = "Request TX register set"
|
HK_TX_REGS = "Request TX register set"
|
||||||
ENABLE_HK_RX_REGS = "Enable periodic RX register HK"
|
ENABLE_HK_RX_REGS = "Enable periodic RX register HK"
|
||||||
@ -108,10 +100,6 @@ class Submode(enum.IntEnum):
|
|||||||
RX_AND_TX_CW = 4
|
RX_AND_TX_CW = 4
|
||||||
|
|
||||||
|
|
||||||
class ParameterId(enum.IntEnum):
|
|
||||||
DATARATE = 0
|
|
||||||
|
|
||||||
|
|
||||||
class Datarate(enum.IntEnum):
|
class Datarate(enum.IntEnum):
|
||||||
LOW_RATE_MODULATION_BPSK = 0
|
LOW_RATE_MODULATION_BPSK = 0
|
||||||
HIGH_RATE_MODULATION_0QPSK = 1
|
HIGH_RATE_MODULATION_0QPSK = 1
|
||||||
@ -127,12 +115,6 @@ def add_syrlinks_cmds(defs: TmtcDefinitionWrapper):
|
|||||||
oce.add(OpCode.NORMAL_RX_AND_TX_DEF_DATARATE, Info.NORMAL_RX_AND_TX_DEF_DATARATE)
|
oce.add(OpCode.NORMAL_RX_AND_TX_DEF_DATARATE, Info.NORMAL_RX_AND_TX_DEF_DATARATE)
|
||||||
oce.add(OpCode.NORMAL_RX_AND_TX_LOW_DATARATE, Info.NORMAL_RX_AND_TX_LOW_DATARATE)
|
oce.add(OpCode.NORMAL_RX_AND_TX_LOW_DATARATE, Info.NORMAL_RX_AND_TX_LOW_DATARATE)
|
||||||
oce.add(OpCode.NORMAL_RX_AND_TX_HIGH_DATARATE, Info.NORMAL_RX_AND_TX_HIGH_DATARATE)
|
oce.add(OpCode.NORMAL_RX_AND_TX_HIGH_DATARATE, Info.NORMAL_RX_AND_TX_HIGH_DATARATE)
|
||||||
oce.add(
|
|
||||||
OpCode.UPDATE_DEFAULT_DATARATE_LOW_RATE, Info.UPDATE_DEFAULT_DATARATE_LOW_RATE
|
|
||||||
)
|
|
||||||
oce.add(
|
|
||||||
OpCode.UPDATE_DEFAULT_DATARATE_HIGH_RATE, Info.UPDATE_DEFAULT_DATARATE_HIGH_RATE
|
|
||||||
)
|
|
||||||
oce.add(OpCode.HK_RX_REGS, Info.HK_RX_REGS)
|
oce.add(OpCode.HK_RX_REGS, Info.HK_RX_REGS)
|
||||||
oce.add(OpCode.HK_TX_REGS, Info.HK_TX_REGS)
|
oce.add(OpCode.HK_TX_REGS, Info.HK_TX_REGS)
|
||||||
oce.add(OpCode.TX_STATUS, Info.TX_STATUS)
|
oce.add(OpCode.TX_STATUS, Info.TX_STATUS)
|
||||||
@ -188,24 +170,6 @@ def pack_syrlinks_command(
|
|||||||
normal_mode_cmd(
|
normal_mode_cmd(
|
||||||
q, Info.NORMAL_RX_AND_TX_HIGH_DATARATE, Submode.RX_AND_TX_HIGH_DATARATE
|
q, Info.NORMAL_RX_AND_TX_HIGH_DATARATE, Submode.RX_AND_TX_HIGH_DATARATE
|
||||||
)
|
)
|
||||||
if op_code == OpCode.UPDATE_DEFAULT_DATARATE_LOW_RATE:
|
|
||||||
q.add_log_cmd(f"{prefix}: {Info.UPDATE_DEFAULT_DATARATE_LOW_RATE}")
|
|
||||||
q.add_pus_tc(
|
|
||||||
create_load_param_cmd(
|
|
||||||
pack_scalar_u8_parameter_app_data(
|
|
||||||
obyt, 0, ParameterId.DATARATE, Datarate.LOW_RATE_MODULATION_BPSK
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
if op_code == OpCode.UPDATE_DEFAULT_DATARATE_HIGH_RATE:
|
|
||||||
q.add_log_cmd(f"{prefix}: {Info.UPDATE_DEFAULT_DATARATE_HIGH_RATE}")
|
|
||||||
q.add_pus_tc(
|
|
||||||
create_load_param_cmd(
|
|
||||||
pack_scalar_u8_parameter_app_data(
|
|
||||||
obyt, 0, ParameterId.DATARATE, Datarate.HIGH_RATE_MODULATION_0QPSK
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
if op_code in OpCode.NORMAL_RX_AND_TX_CW:
|
if op_code in OpCode.NORMAL_RX_AND_TX_CW:
|
||||||
normal_mode_cmd(q, Info.NORMAL_RX_AND_TX_CW, Submode.RX_AND_TX_CW)
|
normal_mode_cmd(q, Info.NORMAL_RX_AND_TX_CW, Submode.RX_AND_TX_CW)
|
||||||
if op_code in OpCode.HK_RX_REGS:
|
if op_code in OpCode.HK_RX_REGS:
|
||||||
|
@ -28,7 +28,7 @@ classifiers =
|
|||||||
[options]
|
[options]
|
||||||
install_requires =
|
install_requires =
|
||||||
# tmtccmd @ git+https://github.com/robamu-org/tmtccmd@v4.0.0a2
|
# tmtccmd @ git+https://github.com/robamu-org/tmtccmd@v4.0.0a2
|
||||||
tmtccmd @ git+https://github.com/robamu-org/tmtccmd@c978286a856a2f3a59efc96887dd15c2c17bac6e#egg=tmtccmd
|
tmtccmd @ git+https://github.com/robamu-org/tmtccmd@ad526b915b58d4decdc3868be28edf0bdc12a50c#egg=tmtccmd
|
||||||
packages = find:
|
packages = find:
|
||||||
python_requires = >=3.10
|
python_requires = >=3.10
|
||||||
include_package_data = True
|
include_package_data = True
|
||||||
|
Reference in New Issue
Block a user