Compare commits
32 Commits
v2.15.1
...
0ce32521f4
Author | SHA1 | Date | |
---|---|---|---|
0ce32521f4 | |||
649c019eb8 | |||
fa5c24df6b | |||
a13454851b | |||
78b55f919c | |||
3259cf0807 | |||
8919f5c8e9 | |||
02797ffc5b | |||
9720fcddec | |||
47fef53ac1 | |||
13014eb250 | |||
d47e9039a5 | |||
60c88fd21c | |||
fd649ff1bb | |||
da960b5344 | |||
24f0d8e1a6 | |||
86c1fc96d1 | |||
fda044c2ff | |||
75a8712f91 | |||
0bb1f57599 | |||
![]() |
446e38ed57 | ||
a04bd8aa73 | |||
![]() |
e47eb577fa | ||
1dd667ae25 | |||
![]() |
24e9c25ba4 | ||
fb676dc90f | |||
4917ddbbe4 | |||
9686701c2e | |||
d87361ae75 | |||
8f5f7064e9 | |||
6a6d9c0a7a | |||
db1dbe9661 |
@@ -13,7 +13,7 @@
|
|||||||
<option name="ADD_SOURCE_ROOTS" value="true" />
|
<option name="ADD_SOURCE_ROOTS" value="true" />
|
||||||
<EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
|
<EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
|
||||||
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/tmtcc.py" />
|
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/tmtcc.py" />
|
||||||
<option name="PARAMETERS" value="cfdp filetest/obsw_update.bin /tmp/obsw_update.bin -d 0.3" />
|
<option name="PARAMETERS" value="cfdp filetest/obsw_update.bin /tmp/obsw_update.bin -d 0.1" />
|
||||||
<option name="SHOW_COMMAND_LINE" value="false" />
|
<option name="SHOW_COMMAND_LINE" value="false" />
|
||||||
<option name="EMULATE_TERMINAL" value="false" />
|
<option name="EMULATE_TERMINAL" value="false" />
|
||||||
<option name="MODULE_MODE" value="false" />
|
<option name="MODULE_MODE" value="false" />
|
||||||
|
24
.run/CFDP Test File Small Closure.run.xml
Normal file
24
.run/CFDP Test File Small Closure.run.xml
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="CFDP Test File Small Closure" type="PythonConfigurationType" factoryName="Python" folderName="CFDP">
|
||||||
|
<module name="tmtc" />
|
||||||
|
<option name="INTERPRETER_OPTIONS" value="" />
|
||||||
|
<option name="PARENT_ENVS" value="true" />
|
||||||
|
<envs>
|
||||||
|
<env name="PYTHONUNBUFFERED" value="1" />
|
||||||
|
</envs>
|
||||||
|
<option name="SDK_HOME" value="" />
|
||||||
|
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
||||||
|
<option name="IS_MODULE_SDK" value="true" />
|
||||||
|
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||||
|
<option name="ADD_SOURCE_ROOTS" value="true" />
|
||||||
|
<EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
|
||||||
|
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/tmtcc.py" />
|
||||||
|
<option name="PARAMETERS" value="cfdp filetest/cfdp_test.txt /tmp/cfdp_test.txt -d 0.2" />
|
||||||
|
<option name="SHOW_COMMAND_LINE" value="false" />
|
||||||
|
<option name="EMULATE_TERMINAL" value="false" />
|
||||||
|
<option name="MODULE_MODE" value="false" />
|
||||||
|
<option name="REDIRECT_INPUT" value="false" />
|
||||||
|
<option name="INPUT_FILE" value="" />
|
||||||
|
<method v="2" />
|
||||||
|
</configuration>
|
||||||
|
</component>
|
22
CHANGELOG.md
22
CHANGELOG.md
@@ -10,6 +10,28 @@ list yields a list of all related PRs for each release.
|
|||||||
|
|
||||||
# [unreleased]
|
# [unreleased]
|
||||||
|
|
||||||
|
## Fixed
|
||||||
|
|
||||||
|
- Correction for ACS CTRL raw data requests HK type
|
||||||
|
|
||||||
|
# [v2.16.1] 2023-02-24
|
||||||
|
|
||||||
|
- Updated CSVs for new persistent TM store
|
||||||
|
|
||||||
|
# [v2.16.0] 2023-02-23
|
||||||
|
|
||||||
|
## Added
|
||||||
|
|
||||||
|
- PDEC parameter commands to change size of positive and negative window of AD frames.
|
||||||
|
|
||||||
|
## Fixed
|
||||||
|
|
||||||
|
- Added missing skip directive for private resultcode.
|
||||||
|
|
||||||
|
# [v2.15.2] 2023-02-23
|
||||||
|
|
||||||
|
- Update of generated returnvalue and event files.
|
||||||
|
|
||||||
# [v2.15.1] 2023-02-23
|
# [v2.15.1] 2023-02-23
|
||||||
|
|
||||||
- Actually use `tmtccmd` 4.1 in requirements.
|
- Actually use `tmtccmd` 4.1 in requirements.
|
||||||
|
@@ -1,11 +1,11 @@
|
|||||||
__version__ = "2.15.1"
|
__version__ = "2.16.1"
|
||||||
|
|
||||||
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 = 15
|
VERSION_MINOR = 16
|
||||||
VERSION_REVISION = 1
|
VERSION_REVISION = 1
|
||||||
|
|
||||||
EIVE_TMTC_ROOT = Path(__file__).parent
|
EIVE_TMTC_ROOT = Path(__file__).parent
|
||||||
|
@@ -37,6 +37,7 @@ class CustomServiceList(str, enum.Enum):
|
|||||||
ACU = "acu"
|
ACU = "acu"
|
||||||
ACS = "acs"
|
ACS = "acs"
|
||||||
GYRO = "gyro"
|
GYRO = "gyro"
|
||||||
|
MGMS = "mgms"
|
||||||
COM_SS = "com"
|
COM_SS = "com"
|
||||||
BPX_BATTERY = "bpx"
|
BPX_BATTERY = "bpx"
|
||||||
HEATER = "heater"
|
HEATER = "heater"
|
||||||
|
@@ -84,9 +84,13 @@ Event ID (dec); Event ID (hex); Name; Severity; Description; File Path
|
|||||||
10800;0x2a30;STORE_ERROR;LOW;No description;fsfw/src/fsfw/cfdp/handler/defs.h
|
10800;0x2a30;STORE_ERROR;LOW;No description;fsfw/src/fsfw/cfdp/handler/defs.h
|
||||||
10801;0x2a31;MSG_QUEUE_ERROR;LOW;No description;fsfw/src/fsfw/cfdp/handler/defs.h
|
10801;0x2a31;MSG_QUEUE_ERROR;LOW;No description;fsfw/src/fsfw/cfdp/handler/defs.h
|
||||||
10802;0x2a32;SERIALIZATION_ERROR;LOW;No description;fsfw/src/fsfw/cfdp/handler/defs.h
|
10802;0x2a32;SERIALIZATION_ERROR;LOW;No description;fsfw/src/fsfw/cfdp/handler/defs.h
|
||||||
|
10803;0x2a33;FILESTORE_ERROR;LOW;No description;fsfw/src/fsfw/cfdp/handler/defs.h
|
||||||
|
10804;0x2a34;FILENAME_TOO_LARGE_ERROR;LOW;P1: Transaction step ID, P2: 0 for source file name, 1 for dest file name;fsfw/src/fsfw/cfdp/handler/defs.h
|
||||||
11200;0x2bc0;SAFE_RATE_VIOLATION;MEDIUM;No description;mission/acsDefs.h
|
11200;0x2bc0;SAFE_RATE_VIOLATION;MEDIUM;No description;mission/acsDefs.h
|
||||||
11201;0x2bc1;SAFE_RATE_RECOVERY;MEDIUM;No description;mission/acsDefs.h
|
11201;0x2bc1;SAFE_RATE_RECOVERY;MEDIUM;No description;mission/acsDefs.h
|
||||||
11202;0x2bc2;MULTIPLE_RW_INVALID;HIGH;No description;mission/acsDefs.h
|
11202;0x2bc2;MULTIPLE_RW_INVALID;HIGH;No description;mission/acsDefs.h
|
||||||
|
11203;0x2bc3;MEKF_INVALID_INFO;INFO;No description;mission/acsDefs.h
|
||||||
|
11204;0x2bc4;MEKF_INVALID_MODE_VIOLATION;HIGH;No description;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
|
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
|
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;No description;mission/devices/devicedefinitions/powerDefinitions.h
|
11302;0x2c26;SWITCHING_Q7S_DENIED;MEDIUM;No description;mission/devices/devicedefinitions/powerDefinitions.h
|
||||||
@@ -250,10 +254,11 @@ Event ID (dec); Event ID (hex); Name; Severity; Description; File Path
|
|||||||
14004;0x36b4;NO_SD_CARD_ACTIVE;HIGH;No SD card was active. Core controller will attempt to re-initialize a SD card.;bsp_q7s/core/CoreController.h
|
14004;0x36b4;NO_SD_CARD_ACTIVE;HIGH;No SD card was active. Core controller will attempt to re-initialize a SD card.;bsp_q7s/core/CoreController.h
|
||||||
14005;0x36b5;VERSION_INFO;INFO;P1: Byte 0: Major, Byte 1: Minor, Byte 2: Patch, Byte 3: Has Git Hash P2: First four letters of Git SHA is the last byte of P1 is set.;bsp_q7s/core/CoreController.h
|
14005;0x36b5;VERSION_INFO;INFO;P1: Byte 0: Major, Byte 1: Minor, Byte 2: Patch, Byte 3: Has Git Hash P2: First four letters of Git SHA is the last byte of P1 is set.;bsp_q7s/core/CoreController.h
|
||||||
14006;0x36b6;CURRENT_IMAGE_INFO;INFO;P1: Current Chip, P2: Current Copy;bsp_q7s/core/CoreController.h
|
14006;0x36b6;CURRENT_IMAGE_INFO;INFO;P1: Current Chip, P2: Current Copy;bsp_q7s/core/CoreController.h
|
||||||
14100;0x3714;NO_VALID_SENSOR_TEMPERATURE;MEDIUM;No description;mission/controller/ThermalController.h
|
14100;0x3714;POSSIBLE_FILE_CORRUPTION;LOW;P1: Result code of TM packet parser. P2: Timestamp of possibly corrupt file as a unix timestamp.;mission/tmtc/PersistentTmStore.h
|
||||||
14101;0x3715;NO_HEALTHY_HEATER_AVAILABLE;MEDIUM;No description;mission/controller/ThermalController.h
|
14200;0x3778;NO_VALID_SENSOR_TEMPERATURE;MEDIUM;No description;mission/controller/ThermalController.h
|
||||||
14102;0x3716;SYRLINKS_OVERHEATING;HIGH;No description;mission/controller/ThermalController.h
|
14201;0x3779;NO_HEALTHY_HEATER_AVAILABLE;MEDIUM;No description;mission/controller/ThermalController.h
|
||||||
14103;0x3717;PLOC_OVERHEATING;HIGH;No description;mission/controller/ThermalController.h
|
14202;0x377a;SYRLINKS_OVERHEATING;HIGH;No description;mission/controller/ThermalController.h
|
||||||
14104;0x3718;OBC_OVERHEATING;HIGH;No description;mission/controller/ThermalController.h
|
14203;0x377b;PLOC_OVERHEATING;HIGH;No description;mission/controller/ThermalController.h
|
||||||
14105;0x3719;HPA_OVERHEATING;HIGH;No description;mission/controller/ThermalController.h
|
14204;0x377c;OBC_OVERHEATING;HIGH;No description;mission/controller/ThermalController.h
|
||||||
14106;0x371a;PLPCDU_OVERHEATING;HIGH;No description;mission/controller/ThermalController.h
|
14205;0x377d;HPA_OVERHEATING;HIGH;No description;mission/controller/ThermalController.h
|
||||||
|
14206;0x377e;PLPCDU_OVERHEATING;HIGH;No description;mission/controller/ThermalController.h
|
||||||
|
|
@@ -102,6 +102,7 @@
|
|||||||
0x53000008;PUS_SERVICE_8_FUNCTION_MGMT
|
0x53000008;PUS_SERVICE_8_FUNCTION_MGMT
|
||||||
0x53000009;PUS_SERVICE_9_TIME_MGMT
|
0x53000009;PUS_SERVICE_9_TIME_MGMT
|
||||||
0x53000011;PUS_SERVICE_11_TC_SCHEDULER
|
0x53000011;PUS_SERVICE_11_TC_SCHEDULER
|
||||||
|
0x53000015;PUS_SERVICE_15_TM_STORAGE
|
||||||
0x53000017;PUS_SERVICE_17_TEST
|
0x53000017;PUS_SERVICE_17_TEST
|
||||||
0x53000020;PUS_SERVICE_20_PARAMETERS
|
0x53000020;PUS_SERVICE_20_PARAMETERS
|
||||||
0x53000200;PUS_SERVICE_200_MODE_MGMT
|
0x53000200;PUS_SERVICE_200_MODE_MGMT
|
||||||
@@ -148,6 +149,11 @@
|
|||||||
0x73010002;PL_SUBSYSTEM
|
0x73010002;PL_SUBSYSTEM
|
||||||
0x73010003;TCS_SUBSYSTEM
|
0x73010003;TCS_SUBSYSTEM
|
||||||
0x73010004;COM_SUBSYSTEM
|
0x73010004;COM_SUBSYSTEM
|
||||||
|
0x73020001;MISC_TM_STORE
|
||||||
|
0x73020002;OK_TM_STORE
|
||||||
|
0x73020003;NOT_OK_TM_STORE
|
||||||
|
0x73020004;HK_TM_STORE
|
||||||
|
0x73030000;CFDP_TM_STORE
|
||||||
0x73500000;CCSDS_IP_CORE_BRIDGE
|
0x73500000;CCSDS_IP_CORE_BRIDGE
|
||||||
0x90000003;THERMAL_TEMP_INSERTER
|
0x90000003;THERMAL_TEMP_INSERTER
|
||||||
0xFFFFFFFF;NO_OBJECT
|
0xFFFFFFFF;NO_OBJECT
|
||||||
|
|
@@ -2,7 +2,6 @@ Full ID (hex); Name; Description; Unique ID; Subsytem Name; File Path
|
|||||||
0x0000;OK;System-wide code for ok.;0;HasReturnvaluesIF;fsfw/returnvalues/returnvalue.h
|
0x0000;OK;System-wide code for ok.;0;HasReturnvaluesIF;fsfw/returnvalues/returnvalue.h
|
||||||
0x0001;Failed;Unspecified system-wide code for failed.;1;HasReturnvaluesIF;fsfw/returnvalues/returnvalue.h
|
0x0001;Failed;Unspecified system-wide code for failed.;1;HasReturnvaluesIF;fsfw/returnvalues/returnvalue.h
|
||||||
0x63a0;NVMB_KeyNotExists;Specified key does not exist in json file;160;NVM_PARAM_BASE;mission/memory/NVMParameterBase.h
|
0x63a0;NVMB_KeyNotExists;Specified key does not exist in json file;160;NVM_PARAM_BASE;mission/memory/NVMParameterBase.h
|
||||||
0x6300;NVMB_Busy;No description;0;NVM_PARAM_BASE;mission/system/objects/Stack5VHandler.h
|
|
||||||
0x5100;IMTQ_InvalidCommandCode;No description;0;IMTQ_HANDLER;mission/devices/devicedefinitions/imtqHelpers.h
|
0x5100;IMTQ_InvalidCommandCode;No description;0;IMTQ_HANDLER;mission/devices/devicedefinitions/imtqHelpers.h
|
||||||
0x5101;IMTQ_MgmMeasurementLowLevelError;No description;1;IMTQ_HANDLER;mission/devices/devicedefinitions/imtqHelpers.h
|
0x5101;IMTQ_MgmMeasurementLowLevelError;No description;1;IMTQ_HANDLER;mission/devices/devicedefinitions/imtqHelpers.h
|
||||||
0x5102;IMTQ_ActuateCmdLowLevelError;No description;2;IMTQ_HANDLER;mission/devices/devicedefinitions/imtqHelpers.h
|
0x5102;IMTQ_ActuateCmdLowLevelError;No description;2;IMTQ_HANDLER;mission/devices/devicedefinitions/imtqHelpers.h
|
||||||
@@ -50,12 +49,17 @@ Full ID (hex); Name; Description; Unique ID; Subsytem Name; File Path
|
|||||||
0x4fa4;HEATER_MainSwitchSetTimeout;No description;164;HEATER_HANDLER;mission/devices/HeaterHandler.h
|
0x4fa4;HEATER_MainSwitchSetTimeout;No description;164;HEATER_HANDLER;mission/devices/HeaterHandler.h
|
||||||
0x4fa5;HEATER_CommandAlreadyWaiting;No description;165;HEATER_HANDLER;mission/devices/HeaterHandler.h
|
0x4fa5;HEATER_CommandAlreadyWaiting;No description;165;HEATER_HANDLER;mission/devices/HeaterHandler.h
|
||||||
0x60a0;CCSDS_CommandNotImplemented;Received action message with unknown action id;160;CCSDS_HANDLER;mission/tmtc/CcsdsIpCoreHandler.h
|
0x60a0;CCSDS_CommandNotImplemented;Received action message with unknown action id;160;CCSDS_HANDLER;mission/tmtc/CcsdsIpCoreHandler.h
|
||||||
0x6a01;ACSSAF_SafectrlMekfInputInvalid;No description;1;ACS_SAFE;mission/controller/acs/control/SafeCtrl.h
|
0x6b01;ACSSAF_SafectrlMekfInputInvalid;No description;1;ACS_SAFE;mission/controller/acs/control/SafeCtrl.h
|
||||||
0x6b01;ACSPTG_PtgctrlMekfInputInvalid;No description;1;ACS_PTG;mission/controller/acs/control/PtgCtrl.h
|
0x6c01;ACSPTG_PtgctrlMekfInputInvalid;No description;1;ACS_PTG;mission/controller/acs/control/PtgCtrl.h
|
||||||
0x6c01;ACSDTB_DetumbleNoSensordata;No description;1;ACS_DETUMBLE;mission/controller/acs/control/Detumble.h
|
0x6d01;ACSDTB_DetumbleNoSensordata;No description;1;ACS_DETUMBLE;mission/controller/acs/control/Detumble.h
|
||||||
0x6901;ACSKAL_KalmanNoGyrMeas;No description;1;ACS_KALMAN;mission/controller/acs/MultiplicativeKalmanFilter.h
|
0x6a02;ACSMEKF_MekfUninitialized;No description;2;ACS_MEKF;mission/controller/acs/MultiplicativeKalmanFilter.h
|
||||||
0x6902;ACSKAL_KalmanNoModel;No description;2;ACS_KALMAN;mission/controller/acs/MultiplicativeKalmanFilter.h
|
0x6a03;ACSMEKF_MekfNoGyrData;No description;3;ACS_MEKF;mission/controller/acs/MultiplicativeKalmanFilter.h
|
||||||
0x6903;ACSKAL_KalmanInversionFailed;No description;3;ACS_KALMAN;mission/controller/acs/MultiplicativeKalmanFilter.h
|
0x6a04;ACSMEKF_MekfNoModelVectors;No description;4;ACS_MEKF;mission/controller/acs/MultiplicativeKalmanFilter.h
|
||||||
|
0x6a05;ACSMEKF_MekfNoSusMgmStrData;No description;5;ACS_MEKF;mission/controller/acs/MultiplicativeKalmanFilter.h
|
||||||
|
0x6a06;ACSMEKF_MekfCovarianceInversionFailed;No description;6;ACS_MEKF;mission/controller/acs/MultiplicativeKalmanFilter.h
|
||||||
|
0x6a07;ACSMEKF_MekfInitialized;No description;7;ACS_MEKF;mission/controller/acs/MultiplicativeKalmanFilter.h
|
||||||
|
0x6a08;ACSMEKF_MekfRunning;No description;8;ACS_MEKF;mission/controller/acs/MultiplicativeKalmanFilter.h
|
||||||
|
0x6900;ACSCTRL_FileDeletionFailed;No description;0;ACS_CTRL;mission/controller/AcsController.h
|
||||||
0x4500;HSPI_OpeningFileFailed;No description;0;HAL_SPI;fsfw/src/fsfw_hal/linux/spi/SpiComIF.h
|
0x4500;HSPI_OpeningFileFailed;No description;0;HAL_SPI;fsfw/src/fsfw_hal/linux/spi/SpiComIF.h
|
||||||
0x4501;HSPI_FullDuplexTransferFailed;No description;1;HAL_SPI;fsfw/src/fsfw_hal/linux/spi/SpiComIF.h
|
0x4501;HSPI_FullDuplexTransferFailed;No description;1;HAL_SPI;fsfw/src/fsfw_hal/linux/spi/SpiComIF.h
|
||||||
0x4502;HSPI_HalfDuplexTransferFailed;No description;2;HAL_SPI;fsfw/src/fsfw_hal/linux/spi/SpiComIF.h
|
0x4502;HSPI_HalfDuplexTransferFailed;No description;2;HAL_SPI;fsfw/src/fsfw_hal/linux/spi/SpiComIF.h
|
||||||
|
|
@@ -23,14 +23,6 @@ def get_eive_service_op_code_dict() -> TmtcDefinitionWrapper:
|
|||||||
return def_wrapper
|
return def_wrapper
|
||||||
|
|
||||||
|
|
||||||
@tmtc_definitions_provider
|
|
||||||
def add_pdec_cmds(defs: TmtcDefinitionWrapper):
|
|
||||||
oce = OpCodeEntry()
|
|
||||||
oce.add("0", "PDEC Handler: Print CLCW")
|
|
||||||
oce.add("1", "PDEC Handler: Print PDEC monitor")
|
|
||||||
defs.add_service(CustomServiceList.PDEC_HANDLER.value, "PDEC Handler", oce)
|
|
||||||
|
|
||||||
|
|
||||||
@tmtc_definitions_provider
|
@tmtc_definitions_provider
|
||||||
def add_str_cmds(defs: TmtcDefinitionWrapper):
|
def add_str_cmds(defs: TmtcDefinitionWrapper):
|
||||||
oce = OpCodeEntry()
|
oce = OpCodeEntry()
|
||||||
|
@@ -4,6 +4,7 @@ import logging
|
|||||||
from typing import cast
|
from typing import cast
|
||||||
|
|
||||||
from eive_tmtc.tmtc.acs.gyros import handle_gyr_cmd
|
from eive_tmtc.tmtc.acs.gyros import handle_gyr_cmd
|
||||||
|
from eive_tmtc.tmtc.acs.mgms import handle_mgm_cmd
|
||||||
from eive_tmtc.tmtc.power.power import pack_power_commands
|
from eive_tmtc.tmtc.power.power import pack_power_commands
|
||||||
from eive_tmtc.tmtc.tcs.rtd import pack_rtd_commands
|
from eive_tmtc.tmtc.tcs.rtd import pack_rtd_commands
|
||||||
from eive_tmtc.tmtc.payload.scex import pack_scex_cmds
|
from eive_tmtc.tmtc.payload.scex import pack_scex_cmds
|
||||||
@@ -32,6 +33,7 @@ from eive_tmtc.tmtc.com.ccsds_handler import pack_ccsds_handler_test
|
|||||||
from eive_tmtc.tmtc.core import pack_core_commands
|
from eive_tmtc.tmtc.core import pack_core_commands
|
||||||
from eive_tmtc.tmtc.acs.star_tracker import pack_star_tracker_commands
|
from eive_tmtc.tmtc.acs.star_tracker import pack_star_tracker_commands
|
||||||
from eive_tmtc.tmtc.com.syrlinks_handler import pack_syrlinks_command
|
from eive_tmtc.tmtc.com.syrlinks_handler import pack_syrlinks_command
|
||||||
|
from eive_tmtc.tmtc.com.pdec_handler import pack_pdec_handler_test
|
||||||
from eive_tmtc.tmtc.acs.acs_board import pack_acs_command
|
from eive_tmtc.tmtc.acs.acs_board import pack_acs_command
|
||||||
from eive_tmtc.config.definitions import CustomServiceList
|
from eive_tmtc.config.definitions import CustomServiceList
|
||||||
from eive_tmtc.config.object_ids import (
|
from eive_tmtc.config.object_ids import (
|
||||||
@@ -134,6 +136,8 @@ def handle_default_procedure(
|
|||||||
return pack_single_rw_test_into(
|
return pack_single_rw_test_into(
|
||||||
object_id=RW4_ID, rw_idx=4, q=queue_helper, op_code=op_code
|
object_id=RW4_ID, rw_idx=4, q=queue_helper, op_code=op_code
|
||||||
)
|
)
|
||||||
|
if service == CustomServiceList.MGMS.value:
|
||||||
|
return handle_mgm_cmd(q=queue_helper, op_code=op_code)
|
||||||
if service == CustomServiceList.RAD_SENSOR.value:
|
if service == CustomServiceList.RAD_SENSOR.value:
|
||||||
object_id = cast(ObjectIdU32, obj_id_man.get(RAD_SENSOR_ID))
|
object_id = cast(ObjectIdU32, obj_id_man.get(RAD_SENSOR_ID))
|
||||||
return pack_rad_sensor_test_into(
|
return pack_rad_sensor_test_into(
|
||||||
@@ -170,7 +174,7 @@ def handle_default_procedure(
|
|||||||
object_id=object_id, q=queue_helper, op_code=op_code
|
object_id=object_id, q=queue_helper, op_code=op_code
|
||||||
)
|
)
|
||||||
if service == CustomServiceList.PDEC_HANDLER.value:
|
if service == CustomServiceList.PDEC_HANDLER.value:
|
||||||
return pack_ccsds_handler_test(
|
return pack_pdec_handler_test(
|
||||||
object_id=PDEC_HANDLER_ID, q=queue_helper, op_code=op_code
|
object_id=PDEC_HANDLER_ID, q=queue_helper, op_code=op_code
|
||||||
)
|
)
|
||||||
if service == CustomServiceList.SYRLINKS.value:
|
if service == CustomServiceList.SYRLINKS.value:
|
||||||
|
@@ -273,7 +273,7 @@ def pack_acs_ctrl_command(p: ServiceProviderParams):
|
|||||||
elif op_code in OpCodes.REQUEST_RAW_GYR_HK:
|
elif op_code in OpCodes.REQUEST_RAW_GYR_HK:
|
||||||
q.add_log_cmd(Info.REQUEST_RAW_GYR_HK)
|
q.add_log_cmd(Info.REQUEST_RAW_GYR_HK)
|
||||||
q.add_pus_tc(
|
q.add_pus_tc(
|
||||||
generate_one_hk_command(make_sid(ACS_CONTROLLER, SetId.GYR_RAW_SET))
|
create_request_one_diag_command(make_sid(ACS_CONTROLLER, SetId.GYR_RAW_SET))
|
||||||
)
|
)
|
||||||
elif op_code in OpCodes.ENABLE_RAW_GYR_HK:
|
elif op_code in OpCodes.ENABLE_RAW_GYR_HK:
|
||||||
q.add_log_cmd(Info.ENABLE_RAW_GYR_HK)
|
q.add_log_cmd(Info.ENABLE_RAW_GYR_HK)
|
||||||
|
@@ -2,9 +2,13 @@ import enum
|
|||||||
import logging
|
import logging
|
||||||
import struct
|
import struct
|
||||||
|
|
||||||
|
from spacepackets.ecss import PusTelecommand
|
||||||
from tmtccmd.tc import DefaultPusQueueHelper
|
from tmtccmd.tc import DefaultPusQueueHelper
|
||||||
|
from tmtccmd.tc.pus_201_fsfw_health import pack_set_health_cmd_data, FsfwHealth
|
||||||
|
from tmtccmd.pus.s201_fsfw_health import Subservice
|
||||||
|
|
||||||
import eive_tmtc.config.object_ids as obj_ids
|
import eive_tmtc.config.object_ids as obj_ids
|
||||||
|
from tmtccmd.tc.pus_200_fsfw_mode import create_mode_command, Mode
|
||||||
from tmtccmd.tc.pus_3_fsfw_hk import create_request_one_hk_command, make_sid
|
from tmtccmd.tc.pus_3_fsfw_hk import create_request_one_hk_command, make_sid
|
||||||
from tmtccmd.config.tmtc import (
|
from tmtccmd.config.tmtc import (
|
||||||
tmtc_definitions_provider,
|
tmtc_definitions_provider,
|
||||||
@@ -25,8 +29,11 @@ from tmtccmd.util.tmtc_printer import FsfwTmTcPrinter
|
|||||||
|
|
||||||
|
|
||||||
class OpCode:
|
class OpCode:
|
||||||
|
NML = "normal"
|
||||||
|
OFF = "off"
|
||||||
CORE_HK = "core_hk"
|
CORE_HK = "core_hk"
|
||||||
CFG_HK = "cfg_hk"
|
CFG_HK = "cfg_hk"
|
||||||
|
SET_FAULTY = "set_faulty"
|
||||||
|
|
||||||
|
|
||||||
class AdisGyroSetId(enum.IntEnum):
|
class AdisGyroSetId(enum.IntEnum):
|
||||||
@@ -66,7 +73,13 @@ def handle_gyr_cmd(q: DefaultPusQueueHelper, op_code: str):
|
|||||||
core_hk_id = AdisGyroSetId.CORE_HK
|
core_hk_id = AdisGyroSetId.CORE_HK
|
||||||
else:
|
else:
|
||||||
core_hk_id = L3gGyroSetId.CORE_HK
|
core_hk_id = L3gGyroSetId.CORE_HK
|
||||||
if op_code == OpCode.CORE_HK:
|
if op_code == OpCode.NML:
|
||||||
|
q.add_log_cmd(f"Gyro {gyr_info[0]} NORMAL mode")
|
||||||
|
q.add_pus_tc(create_mode_command(gyr_obj_id, Mode.NORMAL, 0))
|
||||||
|
if op_code == OpCode.OFF:
|
||||||
|
q.add_log_cmd(f"Gyro {gyr_info[0]} OFF mode")
|
||||||
|
q.add_pus_tc(create_mode_command(gyr_obj_id, Mode.OFF, 0))
|
||||||
|
elif op_code == OpCode.CORE_HK:
|
||||||
q.add_log_cmd(f"Gyro {gyr_info[0]} Core HK")
|
q.add_log_cmd(f"Gyro {gyr_info[0]} Core HK")
|
||||||
q.add_pus_tc(create_request_one_hk_command(make_sid(gyr_obj_id, core_hk_id)))
|
q.add_pus_tc(create_request_one_hk_command(make_sid(gyr_obj_id, core_hk_id)))
|
||||||
elif op_code == OpCode.CFG_HK:
|
elif op_code == OpCode.CFG_HK:
|
||||||
@@ -76,6 +89,15 @@ def handle_gyr_cmd(q: DefaultPusQueueHelper, op_code: str):
|
|||||||
q.add_pus_tc(
|
q.add_pus_tc(
|
||||||
create_request_one_hk_command(make_sid(gyr_obj_id, AdisGyroSetId.CFG_HK))
|
create_request_one_hk_command(make_sid(gyr_obj_id, AdisGyroSetId.CFG_HK))
|
||||||
)
|
)
|
||||||
|
elif op_code == OpCode.SET_FAULTY:
|
||||||
|
q.add_log_cmd(f"Gyro {gyr_info[0]} set faulty")
|
||||||
|
q.add_pus_tc(
|
||||||
|
PusTelecommand(
|
||||||
|
service=201,
|
||||||
|
subservice=Subservice.TC_SET_HEALTH,
|
||||||
|
app_data=pack_set_health_cmd_data(object_id=gyr_obj_id, health=FsfwHealth.FAULTY)
|
||||||
|
)
|
||||||
|
)
|
||||||
else:
|
else:
|
||||||
logging.getLogger(__name__).warning(
|
logging.getLogger(__name__).warning(
|
||||||
f"invalid op code {op_code} for gyro command"
|
f"invalid op code {op_code} for gyro command"
|
||||||
@@ -166,4 +188,7 @@ def add_gyr_cmd_defs(defs: TmtcDefinitionWrapper):
|
|||||||
oce = OpCodeEntry()
|
oce = OpCodeEntry()
|
||||||
oce.add(keys=OpCode.CORE_HK, info="Request Core HK")
|
oce.add(keys=OpCode.CORE_HK, info="Request Core HK")
|
||||||
oce.add(keys=OpCode.CFG_HK, info="Request CFG HK")
|
oce.add(keys=OpCode.CFG_HK, info="Request CFG HK")
|
||||||
|
oce.add(keys=OpCode.NML, info="Normal Mode")
|
||||||
|
oce.add(keys=OpCode.OFF, info="Off Mode")
|
||||||
|
oce.add(keys=OpCode.SET_FAULTY, info="Set Faulty")
|
||||||
defs.add_service(CustomServiceList.GYRO, info="Gyro", op_code_entry=oce)
|
defs.add_service(CustomServiceList.GYRO, info="Gyro", op_code_entry=oce)
|
||||||
|
@@ -61,6 +61,7 @@ class ImtqSetId:
|
|||||||
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:
|
||||||
@@ -307,7 +308,7 @@ 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.POSITIVE_X_TEST) and (set_id <= ImtqSetId.NEGATIVE_Z_TEST):
|
if set_id == ImtqSetId.SELF_TEST_SET:
|
||||||
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")
|
_LOGGER.info("Found engineering HK without torque")
|
||||||
|
@@ -1,13 +1,25 @@
|
|||||||
import enum
|
import enum
|
||||||
import struct
|
import struct
|
||||||
|
|
||||||
|
from eive_tmtc.config.definitions import CustomServiceList
|
||||||
|
from tmtccmd.config import OpCodeEntry
|
||||||
|
|
||||||
import eive_tmtc.config.object_ids as obj_ids
|
import eive_tmtc.config.object_ids as obj_ids
|
||||||
|
from eive_tmtc.config.object_ids import MGM_0_LIS3_HANDLER_ID, MGM_1_RM3100_HANDLER_ID, MGM_2_LIS3_HANDLER_ID, MGM_3_RM3100_HANDLER_ID
|
||||||
|
|
||||||
from eive_tmtc.pus_tm.defs import PrintWrapper
|
from eive_tmtc.pus_tm.defs import PrintWrapper
|
||||||
|
from tmtccmd.config.tmtc import tmtc_definitions_provider, TmtcDefinitionWrapper
|
||||||
|
from tmtccmd.tc import DefaultPusQueueHelper
|
||||||
|
from tmtccmd.tc.pus_200_fsfw_mode import create_mode_command, Mode
|
||||||
from tmtccmd.util import ObjectIdU32
|
from tmtccmd.util import ObjectIdU32
|
||||||
from tmtccmd.util.tmtc_printer import FsfwTmTcPrinter
|
from tmtccmd.util.tmtc_printer import FsfwTmTcPrinter
|
||||||
|
|
||||||
|
|
||||||
|
class OpCode:
|
||||||
|
NORMAL = "normal"
|
||||||
|
OFF = "off"
|
||||||
|
|
||||||
|
|
||||||
class MgmLis3SetId(enum.IntEnum):
|
class MgmLis3SetId(enum.IntEnum):
|
||||||
CORE_HK = 0
|
CORE_HK = 0
|
||||||
|
|
||||||
@@ -16,6 +28,36 @@ class MgmRm3100SetId(enum.IntEnum):
|
|||||||
CORE_HK = 0
|
CORE_HK = 0
|
||||||
|
|
||||||
|
|
||||||
|
class MgmSel(enum.IntEnum):
|
||||||
|
MGM_0_LIS3 = 0
|
||||||
|
MGM_1_RM3100 = 1
|
||||||
|
MGM_2_LIS3 = 2
|
||||||
|
MGM_3_RM3100 = 3
|
||||||
|
|
||||||
|
|
||||||
|
MGM_SEL_DICT = {
|
||||||
|
MgmSel.MGM_0_LIS3: ("MGM_0_LIS3", MGM_0_LIS3_HANDLER_ID),
|
||||||
|
MgmSel.MGM_1_RM3100: ("MGM_1_RM3100", MGM_1_RM3100_HANDLER_ID),
|
||||||
|
MgmSel.MGM_2_LIS3: ("MGM_2_LIS3", MGM_2_LIS3_HANDLER_ID),
|
||||||
|
MgmSel.MGM_3_RM3100: ("MGM_3_RM3100", MGM_3_RM3100_HANDLER_ID),
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def handle_mgm_cmd(q: DefaultPusQueueHelper, op_code: str):
|
||||||
|
print("Please select the MGM Device")
|
||||||
|
for (k, v) in MGM_SEL_DICT.items():
|
||||||
|
print(f"{k}: {v[0]}")
|
||||||
|
sel_idx = int(input("Select MGM device by index: "))
|
||||||
|
mgm_info = MGM_SEL_DICT[MgmSel(sel_idx)]
|
||||||
|
mgm_obj_id = mgm_info[1]
|
||||||
|
if op_code == OpCode.NORMAL:
|
||||||
|
q.add_log_cmd(f"Gyro {mgm_info[0]} NORMAL mode")
|
||||||
|
q.add_pus_tc(create_mode_command(mgm_obj_id, Mode.NORMAL, 0))
|
||||||
|
if op_code == OpCode.OFF:
|
||||||
|
q.add_log_cmd(f"Gyro {mgm_info[0]} OFF mode")
|
||||||
|
q.add_pus_tc(create_mode_command(mgm_obj_id, Mode.OFF, 0))
|
||||||
|
|
||||||
|
|
||||||
def handle_mgm_hk_data(
|
def handle_mgm_hk_data(
|
||||||
object_id: ObjectIdU32, printer: FsfwTmTcPrinter, set_id: int, hk_data: bytes
|
object_id: ObjectIdU32, printer: FsfwTmTcPrinter, set_id: int, hk_data: bytes
|
||||||
):
|
):
|
||||||
@@ -61,3 +103,11 @@ def handle_mgm_rm3100_hk_data(
|
|||||||
pw.dlog(
|
pw.dlog(
|
||||||
f"Field strengths in micro Tesla X {field_x} | Y {field_y} | Z {field_z}"
|
f"Field strengths in micro Tesla X {field_x} | Y {field_y} | Z {field_z}"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@tmtc_definitions_provider
|
||||||
|
def add_mgm_cmd_defs(defs: TmtcDefinitionWrapper):
|
||||||
|
oce = OpCodeEntry()
|
||||||
|
oce.add(keys=OpCode.NORMAL, info="Normal Mode")
|
||||||
|
oce.add(keys=OpCode.OFF, info="Off Mode")
|
||||||
|
defs.add_service(CustomServiceList.MGMS, info="MGMs", op_code_entry=oce)
|
||||||
|
@@ -8,6 +8,22 @@
|
|||||||
from spacepackets.ecss.tc import PusTelecommand
|
from spacepackets.ecss.tc import PusTelecommand
|
||||||
from tmtccmd.tc import DefaultPusQueueHelper
|
from tmtccmd.tc import DefaultPusQueueHelper
|
||||||
|
|
||||||
|
from tmtccmd.tc.pus_20_fsfw_param import (
|
||||||
|
create_load_param_cmd
|
||||||
|
)
|
||||||
|
|
||||||
|
from tmtccmd.pus.s20_fsfw_param_defs import (
|
||||||
|
create_scalar_u8_parameter
|
||||||
|
)
|
||||||
|
|
||||||
|
from tmtccmd.config.tmtc import (
|
||||||
|
tmtc_definitions_provider,
|
||||||
|
TmtcDefinitionWrapper,
|
||||||
|
OpCodeEntry,
|
||||||
|
)
|
||||||
|
|
||||||
|
from eive_tmtc.config.definitions import CustomServiceList
|
||||||
|
|
||||||
|
|
||||||
class CommandId:
|
class CommandId:
|
||||||
# prints the clcw to the console. Useful for debugging
|
# prints the clcw to the console. Useful for debugging
|
||||||
@@ -16,15 +32,71 @@ class CommandId:
|
|||||||
PRINT_PDEC_MON = bytearray([0x0, 0x0, 0x0, 0x1])
|
PRINT_PDEC_MON = bytearray([0x0, 0x0, 0x0, 0x1])
|
||||||
|
|
||||||
|
|
||||||
|
class ParameterId:
|
||||||
|
POSITIVE_WINDOW = 0
|
||||||
|
NEGATIVE_WINDOW = 1
|
||||||
|
|
||||||
|
|
||||||
|
class OpCode:
|
||||||
|
PRINT_CLCW = "print_clcw"
|
||||||
|
PRINT_MON_REG = "print_mon_reg"
|
||||||
|
POSITIVE_WINDOW = "positive_window"
|
||||||
|
NEGATIVE_WINDOW = "negative_window"
|
||||||
|
|
||||||
|
|
||||||
|
class Info:
|
||||||
|
PRINT_CLCW = "Will cause the OBSW to print the current CLCW to the debug console"
|
||||||
|
PRINT_MON_REG = "Will cause the OBSW to print the PDEC monitor register to the console"
|
||||||
|
POSITIVE_WINDOW = "Change positive window parameter for AD frames"
|
||||||
|
NEGATIVE_WINDOW = "Change negative window parameter for AD frames"
|
||||||
|
|
||||||
|
|
||||||
def pack_pdec_handler_test(
|
def pack_pdec_handler_test(
|
||||||
object_id: bytearray, q: DefaultPusQueueHelper, op_code: str
|
object_id: bytearray, q: DefaultPusQueueHelper, op_code: str
|
||||||
):
|
):
|
||||||
q.add_log_cmd(f"Testing PDEC handler with object id: {object_id.hex()}")
|
q.add_log_cmd(f"Testing PDEC handler with object id: {object_id.hex()}")
|
||||||
if op_code == "0":
|
prefix = "PDEC Handler "
|
||||||
q.add_log_cmd("PDEC Handler: Print CLCW")
|
if op_code == OpCode.PRINT_CLCW:
|
||||||
|
q.add_log_cmd(f"{prefix}: {Info.PRINT_CLCW}")
|
||||||
command = object_id + CommandId.PRINT_CLCW
|
command = object_id + CommandId.PRINT_CLCW
|
||||||
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 == "1":
|
if op_code == OpCode.PRINT_MON_REG:
|
||||||
q.add_log_cmd("PDEC Handler: Print PDEC monitor register")
|
q.add_log_cmd(f"{prefix}: {Info.PRINT_MON_REG}")
|
||||||
command = object_id + CommandId.PRINT_PDEC_MON
|
command = object_id + CommandId.PRINT_PDEC_MON
|
||||||
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.POSITIVE_WINDOW:
|
||||||
|
q.add_log_cmd(f"{prefix}: {Info.POSITIVE_WINDOW}")
|
||||||
|
pw = int(input("Specify positive window to set: "))
|
||||||
|
q.add_pus_tc(
|
||||||
|
create_load_param_cmd(
|
||||||
|
create_scalar_u8_parameter(
|
||||||
|
object_id,
|
||||||
|
0,
|
||||||
|
ParameterId.POSITIVE_WINDOW,
|
||||||
|
pw,
|
||||||
|
).pack()
|
||||||
|
)
|
||||||
|
)
|
||||||
|
if op_code == OpCode.NEGATIVE_WINDOW:
|
||||||
|
q.add_log_cmd(f"{prefix}: {Info.NEGATIVE_WINDOW}")
|
||||||
|
nw = int(input("Specify negative window to set: "))
|
||||||
|
q.add_pus_tc(
|
||||||
|
create_load_param_cmd(
|
||||||
|
create_scalar_u8_parameter(
|
||||||
|
object_id,
|
||||||
|
0,
|
||||||
|
ParameterId.NEGATIVE_WINDOW,
|
||||||
|
nw,
|
||||||
|
).pack()
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@tmtc_definitions_provider
|
||||||
|
def add_pdec_cmds(defs: TmtcDefinitionWrapper):
|
||||||
|
oce = OpCodeEntry()
|
||||||
|
oce.add(OpCode.PRINT_CLCW, Info.PRINT_CLCW)
|
||||||
|
oce.add(OpCode.PRINT_MON_REG, Info.PRINT_MON_REG)
|
||||||
|
oce.add(OpCode.POSITIVE_WINDOW, Info.POSITIVE_WINDOW)
|
||||||
|
oce.add(OpCode.NEGATIVE_WINDOW, Info.NEGATIVE_WINDOW)
|
||||||
|
defs.add_service(CustomServiceList.PDEC_HANDLER.value, "PDEC Handler", oce)
|
||||||
|
@@ -45,7 +45,7 @@ class SetId(enum.IntEnum):
|
|||||||
SWITCHER_SET = 0
|
SWITCHER_SET = 0
|
||||||
|
|
||||||
|
|
||||||
class PcduSetIds:
|
class PcduSetIds(enum.IntEnum):
|
||||||
SWITCHER_SET = 0
|
SWITCHER_SET = 0
|
||||||
|
|
||||||
|
|
||||||
|
@@ -45,15 +45,12 @@ def pack_tm_store_commands(p: ServiceProviderParams):
|
|||||||
if o == OpCode.DELETE_UP_TO:
|
if o == OpCode.DELETE_UP_TO:
|
||||||
obj_id, store_string = store_select_prompt()
|
obj_id, store_string = store_select_prompt()
|
||||||
app_data = bytearray(obj_id.as_bytes)
|
app_data = bytearray(obj_id.as_bytes)
|
||||||
delete_up_to_time = time_prompt()
|
delete_up_to_time = time_prompt("Determining deletion end time")
|
||||||
end_stamp = int(math.floor(delete_up_to_time.timestamp()))
|
end_stamp = int(math.floor(delete_up_to_time.timestamp()))
|
||||||
app_data.extend(struct.pack("!I", end_stamp))
|
app_data.extend(struct.pack("!I", end_stamp))
|
||||||
q.add_log_cmd(Info.DELETE_UP_TO)
|
q.add_log_cmd(Info.DELETE_UP_TO)
|
||||||
q.add_log_cmd(f"Selected Store: {obj_id}")
|
q.add_log_cmd(f"Selected Store: {obj_id}")
|
||||||
q.add_log_cmd(
|
q.add_log_cmd(f"Deletion up to time {delete_up_to_time}")
|
||||||
f"Deletion up to time "
|
|
||||||
f"{datetime.datetime.fromtimestamp(end_stamp, tz=datetime.timezone.utc)}"
|
|
||||||
)
|
|
||||||
q.add_pus_tc(
|
q.add_pus_tc(
|
||||||
PusTelecommand(
|
PusTelecommand(
|
||||||
service=15, subservice=Subservice.DELETE_UP_TO, app_data=app_data
|
service=15, subservice=Subservice.DELETE_UP_TO, app_data=app_data
|
||||||
@@ -61,7 +58,26 @@ def pack_tm_store_commands(p: ServiceProviderParams):
|
|||||||
)
|
)
|
||||||
elif o == OpCode.RETRIEVAL_BY_TIME_RANGE:
|
elif o == OpCode.RETRIEVAL_BY_TIME_RANGE:
|
||||||
q.add_log_cmd(Info.RETRIEVAL_BY_TIME_RANGE)
|
q.add_log_cmd(Info.RETRIEVAL_BY_TIME_RANGE)
|
||||||
pass
|
obj_id, store_string = store_select_prompt()
|
||||||
|
app_data = bytearray(obj_id.as_bytes)
|
||||||
|
start_of_dump_time = time_prompt("Determining retrieval start time")
|
||||||
|
start_stamp = int(math.floor(start_of_dump_time.timestamp()))
|
||||||
|
end_of_dump_time = time_prompt("Determining retrieval end time")
|
||||||
|
end_stamp = int(math.floor(end_of_dump_time.timestamp()))
|
||||||
|
app_data.extend(struct.pack("!I", start_stamp))
|
||||||
|
app_data.extend(struct.pack("!I", end_stamp))
|
||||||
|
q.add_log_cmd(Info.RETRIEVAL_BY_TIME_RANGE)
|
||||||
|
q.add_log_cmd(f"Selected Store: {obj_id}")
|
||||||
|
q.add_log_cmd(
|
||||||
|
f"Retrieval from time {start_of_dump_time} up to time {end_of_dump_time}"
|
||||||
|
)
|
||||||
|
q.add_pus_tc(
|
||||||
|
PusTelecommand(
|
||||||
|
service=15,
|
||||||
|
subservice=Subservice.RETRIEVAL_BY_TIME_RANGE,
|
||||||
|
app_data=app_data,
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
@tmtc_definitions_provider
|
@tmtc_definitions_provider
|
||||||
@@ -100,8 +116,8 @@ TIME_INPUT_DICT = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
def time_prompt() -> datetime.datetime:
|
def time_prompt(info_str: str) -> datetime.datetime:
|
||||||
print("Available time input types: ")
|
print(f"{info_str}. Available time input types: ")
|
||||||
for k, v in TIME_INPUT_DICT.items():
|
for k, v in TIME_INPUT_DICT.items():
|
||||||
print(f" {k}: {v}")
|
print(f" {k}: {v}")
|
||||||
while True:
|
while True:
|
||||||
@@ -146,7 +162,6 @@ def time_prompt_offset_from_now() -> datetime.datetime:
|
|||||||
def store_select_prompt() -> (ObjectIdU32, str):
|
def store_select_prompt() -> (ObjectIdU32, str):
|
||||||
obj_id_dict = get_object_ids()
|
obj_id_dict = get_object_ids()
|
||||||
print("Available TM stores:")
|
print("Available TM stores:")
|
||||||
idx_to_obj_id = dict()
|
|
||||||
for k, v in STORE_DICT.items():
|
for k, v in STORE_DICT.items():
|
||||||
print(f" {k}: {v[1]}")
|
print(f" {k}: {v[1]}")
|
||||||
while True:
|
while True:
|
||||||
|
BIN
filetest/eive-sw-update.tar.xz
Normal file
BIN
filetest/eive-sw-update.tar.xz
Normal file
Binary file not shown.
2
tmtcc.py
2
tmtcc.py
@@ -371,7 +371,7 @@ def setup_cfdp_handler() -> CfdpInCcsdsWrapper:
|
|||||||
remote_cfg = RemoteEntityCfg(
|
remote_cfg = RemoteEntityCfg(
|
||||||
closure_requested=False,
|
closure_requested=False,
|
||||||
entity_id=CFDP_REMOTE_ENTITY_ID,
|
entity_id=CFDP_REMOTE_ENTITY_ID,
|
||||||
max_file_segment_len=1024,
|
max_file_segment_len=990,
|
||||||
check_limit=None,
|
check_limit=None,
|
||||||
crc_on_transmission=False,
|
crc_on_transmission=False,
|
||||||
crc_type=ChecksumType.CRC_32,
|
crc_type=ChecksumType.CRC_32,
|
||||||
|
Reference in New Issue
Block a user