Compare commits
129 Commits
ca9f85de1b
...
v1.13.0
Author | SHA1 | Date | |
---|---|---|---|
cb2772328d | |||
50abe69f26 | |||
4c3f5f2825 | |||
656a534ba7 | |||
f35c96eecc | |||
9cc079d71c | |||
bcdc0615c1 | |||
b73f2fa4e6 | |||
8c48255eb3 | |||
c8eaf180dc | |||
648779e8b6 | |||
52d91fe857 | |||
a19b659939 | |||
a0f346332f | |||
439ca2a471 | |||
3b5e484de1 | |||
5a49e76ad9 | |||
debbe9813b | |||
6caf06248b | |||
a7714747bc | |||
135afdff3b | |||
f8e8f9a125 | |||
a2991988f5 | |||
02730f9070 | |||
aae1fbddf4 | |||
801afb9550 | |||
eaf79ba03d | |||
4307620a56 | |||
947f377147 | |||
847a9dc000 | |||
8c9fe8f4d2 | |||
e2811947dc | |||
2210ddb168 | |||
611855e347 | |||
91f85537ce | |||
d3e3acc152 | |||
603b7e8574 | |||
f366b1c3f6 | |||
6085c6543c | |||
e162e5c51b | |||
abecbe4401 | |||
cc31a75685 | |||
9418b92df4 | |||
f5a83db43d | |||
e1d84c5b99 | |||
395dbe9df3 | |||
c84f2c2b35 | |||
b4d4a51164 | |||
b1eafd92c2 | |||
05dd173860 | |||
729e945013 | |||
e402b456bf | |||
cc5def04cb | |||
602e2cf4a8 | |||
cd21267796 | |||
ce837353ca | |||
a53bfd22c4 | |||
abc3d6bd62 | |||
efc8e3b4b2 | |||
6c59fb95d3 | |||
0f9aed4ee2 | |||
e4e7308962 | |||
079a0f9472 | |||
d61af604fe | |||
df5d68315b | |||
5c0def704f | |||
4f5559c50f | |||
3321123581 | |||
f22aba3e65 | |||
6b5c005b73 | |||
d19cdfa566 | |||
cf8284e518 | |||
7e0bb3e93a | |||
3151557b1d | |||
02b78cc48b | |||
aadcd2b061 | |||
ae29619018 | |||
7885b29d22 | |||
ac7821575c | |||
254f980d53 | |||
1cdd0bf3fe | |||
71aa79528e | |||
85a113986e | |||
aec55035d7 | |||
613759562e | |||
7dfe92be8c | |||
1325621133 | |||
f58806c88c | |||
88c2d9fe52 | |||
db67483a4a | |||
bb23e4f021 | |||
3479f5607d | |||
5651475955 | |||
425870d161 | |||
b3f0c08bd7 | |||
edb71ad90b | |||
d51fb53f0e | |||
820bd9e428 | |||
57dbef741b | |||
9ed2593a54 | |||
1b39bb2ad2 | |||
00e99292cc | |||
26e656faf0 | |||
d8b0d81ef3 | |||
deea9d39cf | |||
95b27b889d | |||
7e2ea08277 | |||
7a309b4dc1 | |||
ee85033e6a | |||
a72025c79c | |||
aef9af3096 | |||
1f5baabf31 | |||
8dfe9e63fb | |||
77a4f49305 | |||
a3826edd61 | |||
7e1eeb85fc | |||
2d2702381a | |||
8ead0b06d6 | |||
75c28cc7e5 | |||
7c84f49830 | |||
d2144aab26 | |||
631dc9ea9c | |||
77a2f82d82 | |||
0d75dfe44a | |||
22c57bd0ed | |||
6cb629c3c3 | |||
219116a773 | |||
937eb48298 | |||
88f319bed4 |
.gitignore
.run
CFDP Help.run.xmlCFDP Test File Large.run.xmlCFDP Test File Small.run.xmlInfo All.run.xmlOBSW Switch to Both SDs.run.xmlOBSW Switch to SD 0.run.xmlOBSW Switch to SD 1.run.xmlOBSW Update from SD 0.run.xmlOBSW Update from SD 1.run.xmlOBSW Update from tmp.run.xmlP60_Dock_Commanding.run.xmlPDU1 Aux Info.run.xmlPDU1 Commanding.run.xmlPDU1 Info.run.xmlPDU2 Commanding.run.xmlPLOC SUPV Normal.run.xmlPLOC SUPV On.run.xmlPLOC SUPV.run.xmlPLOC_MPSoC.run.xmlPLOC_SUPV.run.xmlPing Command.run.xmlPower Info All.run.xmlPower.run.xmlReboot 0 0.run.xmlReboot 0 1.run.xmlReboot 1 0.run.xmlReboot 1 1.run.xmlReset GND WDTs.run.xmlSCEX FRAM .run.xmlSCEX .run.xmlSCEX Ping.run.xmlSCEX oneCell.run.xmlSet Current Time.run.xmlTCS Off.run.xmlTCS On.run.xmlTest Service w Listener.run.xmlTest Service.run.xmlTransfer OBSW CFDP.run.xmltmtccli.run.xml
CHANGELOG.mdconfig
deps
filetest
gomspace
pus_tc
cmd_definitions.py
devs
__init__.pybpx_batt.pycommon_power.pyheater.pypdu1.pypdu2.pypower.pyscex.pystar_tracker.pysyrlinks_hk_handler.py
procedure_packer.pysystem
pus_tm
action_reply_handler.pyevent_handler.pyfactory_hook.pyhk_handling.py
system
tcp_server_objects.pyverification_handler.pytmtc
tmtcc.py
2
.gitignore
vendored
2
.gitignore
vendored
@ -8,4 +8,4 @@ log
|
|||||||
|
|
||||||
/scex_conf.json
|
/scex_conf.json
|
||||||
/tmtc_conf.json
|
/tmtc_conf.json
|
||||||
/seqcnt.txt
|
/seqcnt*.txt
|
||||||
|
24
.run/CFDP Help.run.xml
Normal file
24
.run/CFDP Help.run.xml
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="CFDP Help" 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 -h" />
|
||||||
|
<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>
|
24
.run/CFDP Test File Large.run.xml
Normal file
24
.run/CFDP Test File Large.run.xml
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="CFDP Test File Large" 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/obsw_update.bin /tmp/obsw_update.bin -d 0.3" />
|
||||||
|
<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>
|
24
.run/CFDP Test File Small.run.xml
Normal file
24
.run/CFDP Test File Small.run.xml
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="CFDP Test File Small" 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>
|
24
.run/Info All.run.xml
Normal file
24
.run/Info All.run.xml
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="Info All" type="PythonConfigurationType" factoryName="Python" folderName="Power">
|
||||||
|
<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="-s power -o info_all" />
|
||||||
|
<option name="SHOW_COMMAND_LINE" value="false" />
|
||||||
|
<option name="EMULATE_TERMINAL" value="true" />
|
||||||
|
<option name="MODULE_MODE" value="false" />
|
||||||
|
<option name="REDIRECT_INPUT" value="false" />
|
||||||
|
<option name="INPUT_FILE" value="" />
|
||||||
|
<method v="2" />
|
||||||
|
</configuration>
|
||||||
|
</component>
|
24
.run/OBSW Switch to Both SDs.run.xml
Normal file
24
.run/OBSW Switch to Both SDs.run.xml
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="OBSW Switch to Both SDs" type="PythonConfigurationType" factoryName="Python" folderName="Core">
|
||||||
|
<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="-s core -o switch_to_both_sd_cards -d 8" />
|
||||||
|
<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>
|
24
.run/OBSW Switch to SD 0.run.xml
Normal file
24
.run/OBSW Switch to SD 0.run.xml
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="OBSW Switch to SD 0" type="PythonConfigurationType" factoryName="Python" folderName="Core">
|
||||||
|
<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="-s core -o switch_to_sd_0 -d 8" />
|
||||||
|
<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>
|
24
.run/OBSW Switch to SD 1.run.xml
Normal file
24
.run/OBSW Switch to SD 1.run.xml
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="OBSW Switch to SD 1" type="PythonConfigurationType" factoryName="Python" folderName="Core">
|
||||||
|
<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="-s core -o switch_to_sd_1 -d 8" />
|
||||||
|
<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>
|
24
.run/OBSW Update from SD 0.run.xml
Normal file
24
.run/OBSW Update from SD 0.run.xml
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="OBSW Update from SD 0" type="PythonConfigurationType" factoryName="Python" folderName="Core">
|
||||||
|
<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="-s core -o obsw_update_sd0 -d 20" />
|
||||||
|
<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>
|
24
.run/OBSW Update from SD 1.run.xml
Normal file
24
.run/OBSW Update from SD 1.run.xml
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="OBSW Update from SD 1" type="PythonConfigurationType" factoryName="Python" folderName="Core">
|
||||||
|
<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="-s core -o obsw_update_sd1 -d 20" />
|
||||||
|
<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>
|
24
.run/OBSW Update from tmp.run.xml
Normal file
24
.run/OBSW Update from tmp.run.xml
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="OBSW Update from tmp" type="PythonConfigurationType" factoryName="Python" folderName="Core">
|
||||||
|
<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="-s core -o obsw_update_tmp -d 20" />
|
||||||
|
<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>
|
@ -1,5 +1,5 @@
|
|||||||
<component name="ProjectRunConfigurationManager">
|
<component name="ProjectRunConfigurationManager">
|
||||||
<configuration default="false" name="P60 Dock Commanding" type="PythonConfigurationType" factoryName="Python" folderName="Core">
|
<configuration default="false" name="P60 Dock Commanding" type="PythonConfigurationType" factoryName="Python" folderName="Power">
|
||||||
<module name="tmtc" />
|
<module name="tmtc" />
|
||||||
<option name="INTERPRETER_OPTIONS" value="" />
|
<option name="INTERPRETER_OPTIONS" value="" />
|
||||||
<option name="PARENT_ENVS" value="true" />
|
<option name="PARENT_ENVS" value="true" />
|
||||||
|
24
.run/PDU1 Aux Info.run.xml
Normal file
24
.run/PDU1 Aux Info.run.xml
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="PDU1 Aux Info" type="PythonConfigurationType" factoryName="Python" folderName="Power">
|
||||||
|
<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="-s power -o info-aux -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>
|
@ -1,5 +1,5 @@
|
|||||||
<component name="ProjectRunConfigurationManager">
|
<component name="ProjectRunConfigurationManager">
|
||||||
<configuration default="false" name="PDU1 Commanding" type="PythonConfigurationType" factoryName="Python" folderName="Core">
|
<configuration default="false" name="PDU1 Commanding" type="PythonConfigurationType" factoryName="Python" folderName="Power">
|
||||||
<module name="tmtc" />
|
<module name="tmtc" />
|
||||||
<option name="INTERPRETER_OPTIONS" value="" />
|
<option name="INTERPRETER_OPTIONS" value="" />
|
||||||
<option name="PARENT_ENVS" value="true" />
|
<option name="PARENT_ENVS" value="true" />
|
||||||
@ -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="-s pdu1 -d 6" />
|
<option name="PARAMETERS" value="-s pdu1 -l" />
|
||||||
<option name="SHOW_COMMAND_LINE" value="false" />
|
<option name="SHOW_COMMAND_LINE" value="false" />
|
||||||
<option name="EMULATE_TERMINAL" value="true" />
|
<option name="EMULATE_TERMINAL" value="true" />
|
||||||
<option name="MODULE_MODE" value="false" />
|
<option name="MODULE_MODE" value="false" />
|
24
.run/PDU1 Info.run.xml
Normal file
24
.run/PDU1 Info.run.xml
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="PDU1 Info" type="PythonConfigurationType" factoryName="Python" folderName="Power">
|
||||||
|
<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="-s power -o info -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>
|
@ -1,5 +1,5 @@
|
|||||||
<component name="ProjectRunConfigurationManager">
|
<component name="ProjectRunConfigurationManager">
|
||||||
<configuration default="false" name="PDU2 Commanding" type="PythonConfigurationType" factoryName="Python" folderName="Core">
|
<configuration default="false" name="PDU2 Commanding" type="PythonConfigurationType" factoryName="Python" folderName="Power">
|
||||||
<module name="tmtc" />
|
<module name="tmtc" />
|
||||||
<option name="INTERPRETER_OPTIONS" value="" />
|
<option name="INTERPRETER_OPTIONS" value="" />
|
||||||
<option name="PARENT_ENVS" value="true" />
|
<option name="PARENT_ENVS" value="true" />
|
||||||
@ -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="-s pdu2 -l -d 6" />
|
<option name="PARAMETERS" value="-s pdu2 -l" />
|
||||||
<option name="SHOW_COMMAND_LINE" value="false" />
|
<option name="SHOW_COMMAND_LINE" value="false" />
|
||||||
<option name="EMULATE_TERMINAL" value="true" />
|
<option name="EMULATE_TERMINAL" value="true" />
|
||||||
<option name="MODULE_MODE" value="false" />
|
<option name="MODULE_MODE" value="false" />
|
24
.run/PLOC SUPV Normal.run.xml
Normal file
24
.run/PLOC SUPV Normal.run.xml
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="PLOC SUPV Normal" type="PythonConfigurationType" factoryName="Python" folderName="PLOC">
|
||||||
|
<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="tmtc -s ploc_supv -o nml" />
|
||||||
|
<option name="SHOW_COMMAND_LINE" value="false" />
|
||||||
|
<option name="EMULATE_TERMINAL" value="true" />
|
||||||
|
<option name="MODULE_MODE" value="false" />
|
||||||
|
<option name="REDIRECT_INPUT" value="false" />
|
||||||
|
<option name="INPUT_FILE" value="" />
|
||||||
|
<method v="2" />
|
||||||
|
</configuration>
|
||||||
|
</component>
|
24
.run/PLOC SUPV On.run.xml
Normal file
24
.run/PLOC SUPV On.run.xml
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="PLOC SUPV On" type="PythonConfigurationType" factoryName="Python" folderName="PLOC">
|
||||||
|
<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="tmtc -s ploc_supv -o on" />
|
||||||
|
<option name="SHOW_COMMAND_LINE" value="false" />
|
||||||
|
<option name="EMULATE_TERMINAL" value="true" />
|
||||||
|
<option name="MODULE_MODE" value="false" />
|
||||||
|
<option name="REDIRECT_INPUT" value="false" />
|
||||||
|
<option name="INPUT_FILE" value="" />
|
||||||
|
<method v="2" />
|
||||||
|
</configuration>
|
||||||
|
</component>
|
46
.run/PLOC SUPV.run.xml
Normal file
46
.run/PLOC SUPV.run.xml
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="PLOC SUPV" type="PythonConfigurationType" factoryName="Python" folderName="PLOC">
|
||||||
|
<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="tmtc -s ploc_supv -d 6" />
|
||||||
|
<option name="SHOW_COMMAND_LINE" value="false" />
|
||||||
|
<option name="EMULATE_TERMINAL" value="true" />
|
||||||
|
<option name="MODULE_MODE" value="false" />
|
||||||
|
<option name="REDIRECT_INPUT" value="false" />
|
||||||
|
<option name="INPUT_FILE" value="" />
|
||||||
|
<method v="2" />
|
||||||
|
</configuration>
|
||||||
|
<configuration default="false" name="PLOC SUPV" type="PythonConfigurationType" factoryName="Python" folderName="PLOC">
|
||||||
|
<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="tmtc -s ploc_supv -d 6" />
|
||||||
|
<option name="SHOW_COMMAND_LINE" value="false" />
|
||||||
|
<option name="EMULATE_TERMINAL" value="true" />
|
||||||
|
<option name="MODULE_MODE" value="false" />
|
||||||
|
<option name="REDIRECT_INPUT" value="false" />
|
||||||
|
<option name="INPUT_FILE" value="" />
|
||||||
|
<method v="2" />
|
||||||
|
</configuration>
|
||||||
|
</component>
|
@ -1,5 +1,5 @@
|
|||||||
<component name="ProjectRunConfigurationManager">
|
<component name="ProjectRunConfigurationManager">
|
||||||
<configuration default="false" name="PLOC MPSoC" type="PythonConfigurationType" factoryName="Python" folderName="Devices">
|
<configuration default="false" name="PLOC MPSoC" type="PythonConfigurationType" factoryName="Python" folderName="PLOC">
|
||||||
<module name="tmtc" />
|
<module name="tmtc" />
|
||||||
<option name="INTERPRETER_OPTIONS" value="" />
|
<option name="INTERPRETER_OPTIONS" value="" />
|
||||||
<option name="PARENT_ENVS" value="true" />
|
<option name="PARENT_ENVS" value="true" />
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<component name="ProjectRunConfigurationManager">
|
<component name="ProjectRunConfigurationManager">
|
||||||
<configuration default="false" name="PLOC SUPV" type="PythonConfigurationType" factoryName="Python" folderName="Devices">
|
<configuration default="false" name="PLOC SUPV" type="PythonConfigurationType" factoryName="Python" folderName="PLOC">
|
||||||
<module name="tmtc" />
|
<module name="tmtc" />
|
||||||
<option name="INTERPRETER_OPTIONS" value="" />
|
<option name="INTERPRETER_OPTIONS" value="" />
|
||||||
<option name="PARENT_ENVS" value="true" />
|
<option name="PARENT_ENVS" value="true" />
|
||||||
|
@ -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="-s 17 -o 0 -d 3" />
|
<option name="PARAMETERS" value="tmtc -s test -o ping -d 3" />
|
||||||
<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/Power Info All.run.xml
Normal file
24
.run/Power Info All.run.xml
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="Power Info All" type="PythonConfigurationType" factoryName="Python" folderName="Power">
|
||||||
|
<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="-s power -o info_all -d 0.2" />
|
||||||
|
<option name="SHOW_COMMAND_LINE" value="false" />
|
||||||
|
<option name="EMULATE_TERMINAL" value="true" />
|
||||||
|
<option name="MODULE_MODE" value="false" />
|
||||||
|
<option name="REDIRECT_INPUT" value="false" />
|
||||||
|
<option name="INPUT_FILE" value="" />
|
||||||
|
<method v="2" />
|
||||||
|
</configuration>
|
||||||
|
</component>
|
@ -1,5 +1,5 @@
|
|||||||
<component name="ProjectRunConfigurationManager">
|
<component name="ProjectRunConfigurationManager">
|
||||||
<configuration default="false" name="Service 17" type="PythonConfigurationType" factoryName="Python" folderName="PUS">
|
<configuration default="false" name="Power" type="PythonConfigurationType" factoryName="Python" folderName="Power">
|
||||||
<module name="tmtc" />
|
<module name="tmtc" />
|
||||||
<option name="INTERPRETER_OPTIONS" value="" />
|
<option name="INTERPRETER_OPTIONS" value="" />
|
||||||
<option name="PARENT_ENVS" value="true" />
|
<option name="PARENT_ENVS" value="true" />
|
||||||
@ -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="-s 17" />
|
<option name="PARAMETERS" value="-s power" />
|
||||||
<option name="SHOW_COMMAND_LINE" value="false" />
|
<option name="SHOW_COMMAND_LINE" value="false" />
|
||||||
<option name="EMULATE_TERMINAL" value="true" />
|
<option name="EMULATE_TERMINAL" value="true" />
|
||||||
<option name="MODULE_MODE" value="false" />
|
<option name="MODULE_MODE" value="false" />
|
@ -12,8 +12,8 @@
|
|||||||
<option name="ADD_CONTENT_ROOTS" value="true" />
|
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||||
<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$/tmtccli.py" />
|
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/tmtcc.py" />
|
||||||
<option name="PARAMETERS" value="-s core -o reboot_0_0 -d 4" />
|
<option name="PARAMETERS" value="tmtc -s core -o reboot_00 -d 4" />
|
||||||
<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" />
|
@ -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="-s core -o reboot_0_1 -d 4" />
|
<option name="PARAMETERS" value="tmtc -s core -o reboot_01 -d 4" />
|
||||||
<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" />
|
@ -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="-s core -o reboot_1_0 -d 4" />
|
<option name="PARAMETERS" value="tmtc -s core -o reboot_10 -d 4" />
|
||||||
<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" />
|
@ -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="-s core -o reboot_1_1 -d 4" />
|
<option name="PARAMETERS" value="tmtc -s core -o reboot_11 -d 4" />
|
||||||
<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/Reset GND WDTs.run.xml
Normal file
24
.run/Reset GND WDTs.run.xml
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="Reset GND WDTs" type="PythonConfigurationType" factoryName="Python" folderName="Power">
|
||||||
|
<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="-s power -o reset_gnd_wdts -d 0" />
|
||||||
|
<option name="SHOW_COMMAND_LINE" value="false" />
|
||||||
|
<option name="EMULATE_TERMINAL" value="true" />
|
||||||
|
<option name="MODULE_MODE" value="false" />
|
||||||
|
<option name="REDIRECT_INPUT" value="false" />
|
||||||
|
<option name="INPUT_FILE" value="" />
|
||||||
|
<method v="2" />
|
||||||
|
</configuration>
|
||||||
|
</component>
|
@ -1,5 +1,5 @@
|
|||||||
<component name="ProjectRunConfigurationManager">
|
<component name="ProjectRunConfigurationManager">
|
||||||
<configuration default="false" name="Service 17 w Listener" type="PythonConfigurationType" factoryName="Python" folderName="PUS">
|
<configuration default="false" name="SCEX FRAM " type="PythonConfigurationType" factoryName="Python" folderName="SCEX">
|
||||||
<module name="tmtc" />
|
<module name="tmtc" />
|
||||||
<option name="INTERPRETER_OPTIONS" value="" />
|
<option name="INTERPRETER_OPTIONS" value="" />
|
||||||
<option name="PARENT_ENVS" value="true" />
|
<option name="PARENT_ENVS" value="true" />
|
||||||
@ -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="-s 17 -l" />
|
<option name="PARAMETERS" value="-s scex -o fram -l" />
|
||||||
<option name="SHOW_COMMAND_LINE" value="false" />
|
<option name="SHOW_COMMAND_LINE" value="false" />
|
||||||
<option name="EMULATE_TERMINAL" value="true" />
|
<option name="EMULATE_TERMINAL" value="true" />
|
||||||
<option name="MODULE_MODE" value="false" />
|
<option name="MODULE_MODE" value="false" />
|
@ -1,5 +1,5 @@
|
|||||||
<component name="ProjectRunConfigurationManager">
|
<component name="ProjectRunConfigurationManager">
|
||||||
<configuration default="false" name="SCEX " type="PythonConfigurationType" factoryName="Python" folderName="Devices">
|
<configuration default="false" name="SCEX " type="PythonConfigurationType" factoryName="Python" folderName="SCEX">
|
||||||
<module name="tmtc" />
|
<module name="tmtc" />
|
||||||
<option name="INTERPRETER_OPTIONS" value="" />
|
<option name="INTERPRETER_OPTIONS" value="" />
|
||||||
<option name="PARENT_ENVS" value="true" />
|
<option name="PARENT_ENVS" value="true" />
|
||||||
@ -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="-s scex" />
|
<option name="PARAMETERS" value="-s scex -d 8" />
|
||||||
<option name="SHOW_COMMAND_LINE" value="false" />
|
<option name="SHOW_COMMAND_LINE" value="false" />
|
||||||
<option name="EMULATE_TERMINAL" value="true" />
|
<option name="EMULATE_TERMINAL" value="true" />
|
||||||
<option name="MODULE_MODE" value="false" />
|
<option name="MODULE_MODE" value="false" />
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<component name="ProjectRunConfigurationManager">
|
<component name="ProjectRunConfigurationManager">
|
||||||
<configuration default="false" name="SCEX Ping" type="PythonConfigurationType" factoryName="Python" folderName="Devices">
|
<configuration default="false" name="SCEX Ping" type="PythonConfigurationType" factoryName="Python" folderName="SCEX">
|
||||||
<module name="tmtc" />
|
<module name="tmtc" />
|
||||||
<option name="INTERPRETER_OPTIONS" value="" />
|
<option name="INTERPRETER_OPTIONS" value="" />
|
||||||
<option name="PARENT_ENVS" value="true" />
|
<option name="PARENT_ENVS" value="true" />
|
||||||
@ -12,7 +12,7 @@
|
|||||||
<option name="ADD_CONTENT_ROOTS" value="true" />
|
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||||
<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$/tmtccli.py" />
|
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/tmtcc.py" />
|
||||||
<option name="PARAMETERS" value="-s scex -o ping" />
|
<option name="PARAMETERS" value="-s scex -o ping" />
|
||||||
<option name="SHOW_COMMAND_LINE" value="false" />
|
<option name="SHOW_COMMAND_LINE" value="false" />
|
||||||
<option name="EMULATE_TERMINAL" value="true" />
|
<option name="EMULATE_TERMINAL" value="true" />
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<component name="ProjectRunConfigurationManager">
|
<component name="ProjectRunConfigurationManager">
|
||||||
<configuration default="false" name="SCEX oneCell" type="PythonConfigurationType" factoryName="Python" folderName="Devices">
|
<configuration default="false" name="SCEX oneCell" type="PythonConfigurationType" factoryName="Python" folderName="SCEX">
|
||||||
<module name="tmtc" />
|
<module name="tmtc" />
|
||||||
<option name="INTERPRETER_OPTIONS" value="" />
|
<option name="INTERPRETER_OPTIONS" value="" />
|
||||||
<option name="PARENT_ENVS" value="true" />
|
<option name="PARENT_ENVS" value="true" />
|
||||||
@ -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="-s scex -o 4 -d 4" />
|
<option name="PARAMETERS" value="-s scex -o onecell -l" />
|
||||||
<option name="SHOW_COMMAND_LINE" value="false" />
|
<option name="SHOW_COMMAND_LINE" value="false" />
|
||||||
<option name="EMULATE_TERMINAL" value="true" />
|
<option name="EMULATE_TERMINAL" value="true" />
|
||||||
<option name="MODULE_MODE" value="false" />
|
<option name="MODULE_MODE" value="false" />
|
||||||
|
24
.run/Set Current Time.run.xml
Normal file
24
.run/Set Current Time.run.xml
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="Set Current Time" type="PythonConfigurationType" factoryName="Python" folderName="Core">
|
||||||
|
<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="-s time -o set-curr-time" />
|
||||||
|
<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>
|
24
.run/TCS Off.run.xml
Normal file
24
.run/TCS Off.run.xml
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="TCS Off" type="PythonConfigurationType" factoryName="Python" folderName="Power">
|
||||||
|
<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="-s pdu1 -o tcs-off -d 3" />
|
||||||
|
<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>
|
24
.run/TCS On.run.xml
Normal file
24
.run/TCS On.run.xml
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="TCS On" type="PythonConfigurationType" factoryName="Python" folderName="Power">
|
||||||
|
<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="-s pdu1 -o tcs-on -d 3" />
|
||||||
|
<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>
|
24
.run/Test Service w Listener.run.xml
Normal file
24
.run/Test Service w Listener.run.xml
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="Test Service w Listener" type="PythonConfigurationType" factoryName="Python" folderName="PUS">
|
||||||
|
<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="-s test -l" />
|
||||||
|
<option name="SHOW_COMMAND_LINE" value="false" />
|
||||||
|
<option name="EMULATE_TERMINAL" value="true" />
|
||||||
|
<option name="MODULE_MODE" value="false" />
|
||||||
|
<option name="REDIRECT_INPUT" value="false" />
|
||||||
|
<option name="INPUT_FILE" value="" />
|
||||||
|
<method v="2" />
|
||||||
|
</configuration>
|
||||||
|
</component>
|
24
.run/Test Service.run.xml
Normal file
24
.run/Test Service.run.xml
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="Test Service" type="PythonConfigurationType" factoryName="Python" folderName="PUS">
|
||||||
|
<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="-s test" />
|
||||||
|
<option name="SHOW_COMMAND_LINE" value="false" />
|
||||||
|
<option name="EMULATE_TERMINAL" value="true" />
|
||||||
|
<option name="MODULE_MODE" value="false" />
|
||||||
|
<option name="REDIRECT_INPUT" value="false" />
|
||||||
|
<option name="INPUT_FILE" value="" />
|
||||||
|
<method v="2" />
|
||||||
|
</configuration>
|
||||||
|
</component>
|
24
.run/Transfer OBSW CFDP.run.xml
Normal file
24
.run/Transfer OBSW CFDP.run.xml
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="Transfer OBSW CFDP" type="PythonConfigurationType" factoryName="Python" folderName="Core">
|
||||||
|
<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 ../cmake-build-release-q7s/eive-sw-update.tar.xz /tmp/eive-sw-update.tar.xz -d 0.3" />
|
||||||
|
<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>
|
@ -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="" />
|
<option name="PARAMETERS" value="tmtc -d 6" />
|
||||||
<option name="SHOW_COMMAND_LINE" value="false" />
|
<option name="SHOW_COMMAND_LINE" value="false" />
|
||||||
<option name="EMULATE_TERMINAL" value="true" />
|
<option name="EMULATE_TERMINAL" value="true" />
|
||||||
<option name="MODULE_MODE" value="false" />
|
<option name="MODULE_MODE" value="false" />
|
||||||
|
@ -12,9 +12,16 @@ list yields a list of all related PRs for each release.
|
|||||||
|
|
||||||
# [v1.13.0]
|
# [v1.13.0]
|
||||||
|
|
||||||
|
- CFDP integration
|
||||||
|
PR: https://egit.irs.uni-stuttgart.de/eive/eive-tmtc/pulls/113
|
||||||
- Major Update for `tmtccmd` and `spacepackets` dependencies which improves user API significantly.
|
- Major Update for `tmtccmd` and `spacepackets` dependencies which improves user API significantly.
|
||||||
PR: https://egit.irs.uni-stuttgart.de/eive/eive-tmtc/pulls/102
|
PR: https://egit.irs.uni-stuttgart.de/eive/eive-tmtc/pulls/102
|
||||||
- Add commands to request MGM HK or enable/disable periodic HK for it
|
- Add commands to request MGM HK or enable/disable periodic HK for it
|
||||||
|
- Update power commands: Extend param get and set to all
|
||||||
|
gomspace devices.
|
||||||
|
PR: https://egit.irs.uni-stuttgart.de/eive/eive-tmtc/pulls/108
|
||||||
|
- Update PLOC supervisor commands
|
||||||
|
PR: https://egit.irs.uni-stuttgart.de/eive/eive-tmtc/pulls/107
|
||||||
|
|
||||||
# [v1.12.0] 05.07.2022
|
# [v1.12.0] 05.07.2022
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
SW_NAME = "eive"
|
SW_NAME = "eive"
|
||||||
VERSION_MAJOR = 1
|
VERSION_MAJOR = 1
|
||||||
VERSION_MINOR = 11
|
VERSION_MINOR = 13
|
||||||
VERSION_SUBMINOR = 0
|
VERSION_SUBMINOR = 0
|
||||||
|
|
||||||
__version__ = "1.11.0"
|
__version__ = "1.13.0"
|
||||||
|
@ -6,12 +6,19 @@
|
|||||||
|
|
||||||
import enum
|
import enum
|
||||||
|
|
||||||
|
from spacepackets.util import UnsignedByteField
|
||||||
|
|
||||||
PUS_APID = 0x65
|
PUS_APID = 0x65
|
||||||
SPACE_PACKET_IDS = (0x08 << 8 | PUS_APID,)
|
SPACE_PACKET_IDS = (0x08 << 8 | PUS_APID,)
|
||||||
|
CFDP_APID = 0x66
|
||||||
|
|
||||||
|
CFDP_LOCAL_ENTITY_ID = UnsignedByteField(byte_len=2, val=1)
|
||||||
|
CFDP_REMOTE_ENTITY_ID = UnsignedByteField(byte_len=2, val=CFDP_APID)
|
||||||
|
|
||||||
|
|
||||||
class CustomServiceList(enum.Enum):
|
class CustomServiceList(str, enum.Enum):
|
||||||
|
value: str
|
||||||
|
|
||||||
TEST_DEVICE = "test"
|
TEST_DEVICE = "test"
|
||||||
P60DOCK = "p60dock"
|
P60DOCK = "p60dock"
|
||||||
PDU1 = "pdu1"
|
PDU1 = "pdu1"
|
||||||
@ -29,11 +36,11 @@ class CustomServiceList(enum.Enum):
|
|||||||
PCDU = "pcdu"
|
PCDU = "pcdu"
|
||||||
PL_PCDU = "plpcdu"
|
PL_PCDU = "plpcdu"
|
||||||
SA_DEPLYOMENT = "sa_depl"
|
SA_DEPLYOMENT = "sa_depl"
|
||||||
REACTION_WHEEL_1 = "rw-1"
|
REACTION_WHEEL_1 = "rw_1"
|
||||||
REACTION_WHEEL_2 = "rw-2"
|
REACTION_WHEEL_2 = "rw_2"
|
||||||
REACTION_WHEEL_3 = "rw-3"
|
REACTION_WHEEL_3 = "rw_3"
|
||||||
REACTION_WHEEL_4 = "rw-4"
|
REACTION_WHEEL_4 = "rw_4"
|
||||||
RW_ASSEMBLY = "rw-ass"
|
RW_ASSEMBLY = "rw_ass"
|
||||||
RAD_SENSOR = "rad_sensor"
|
RAD_SENSOR = "rad_sensor"
|
||||||
GPS_CTRL = "gnss-ctrl"
|
GPS_CTRL = "gnss-ctrl"
|
||||||
PLOC_MEMORY_DUMPER = "ploc_memory_dumper"
|
PLOC_MEMORY_DUMPER = "ploc_memory_dumper"
|
||||||
@ -43,11 +50,11 @@ class CustomServiceList(enum.Enum):
|
|||||||
PDEC_HANDLER = "pdec_handler"
|
PDEC_HANDLER = "pdec_handler"
|
||||||
STR_IMG_HELPER = "str_img_helper"
|
STR_IMG_HELPER = "str_img_helper"
|
||||||
SYRLINKS = "syrlinks"
|
SYRLINKS = "syrlinks"
|
||||||
ACS_CTRL = "acs-ctrl"
|
ACS_CTRL = "acs_ctrl"
|
||||||
ACS_ASS = "acs-ass"
|
ACS_ASS = "acs_ass"
|
||||||
SUS_ASS = "sus-ass"
|
SUS_ASS = "sus_ass"
|
||||||
TCS = "tcs"
|
TCS = "tcs"
|
||||||
TCS_ASS = "tcs-ass"
|
TCS_ASS = "tcs_ass"
|
||||||
TIME = "time"
|
TIME = "time"
|
||||||
PROCEDURE = "proc"
|
PROCEDURE = "proc"
|
||||||
RTD = "rtd"
|
RTD = "rtd"
|
||||||
|
@ -69,6 +69,7 @@ Event ID (dec); Event ID (hex); Name; Severity; Description; File Path
|
|||||||
7510;0x1d56;TRYING_RECOVERY;MEDIUM;;fsfw/src/fsfw/health/HasHealthIF.h
|
7510;0x1d56;TRYING_RECOVERY;MEDIUM;;fsfw/src/fsfw/health/HasHealthIF.h
|
||||||
7511;0x1d57;RECOVERY_STEP;MEDIUM;;fsfw/src/fsfw/health/HasHealthIF.h
|
7511;0x1d57;RECOVERY_STEP;MEDIUM;;fsfw/src/fsfw/health/HasHealthIF.h
|
||||||
7512;0x1d58;RECOVERY_DONE;MEDIUM;;fsfw/src/fsfw/health/HasHealthIF.h
|
7512;0x1d58;RECOVERY_DONE;MEDIUM;;fsfw/src/fsfw/health/HasHealthIF.h
|
||||||
|
7600;0x1db0;HANDLE_PACKET_FAILED;LOW;;fsfw/src/fsfw/tcdistribution/definitions.h
|
||||||
7900;0x1edc;RF_AVAILABLE;INFO;A RF available signal was detected. P1: raw RFA state, P2: 0;fsfw/src/fsfw/datalinklayer/DataLinkLayer.h
|
7900;0x1edc;RF_AVAILABLE;INFO;A RF available signal was detected. P1: raw RFA state, P2: 0;fsfw/src/fsfw/datalinklayer/DataLinkLayer.h
|
||||||
7901;0x1edd;RF_LOST;INFO;A previously found RF available signal was lost. P1: raw RFA state, P2: 0;fsfw/src/fsfw/datalinklayer/DataLinkLayer.h
|
7901;0x1edd;RF_LOST;INFO;A previously found RF available signal was lost. P1: raw RFA state, P2: 0;fsfw/src/fsfw/datalinklayer/DataLinkLayer.h
|
||||||
7902;0x1ede;BIT_LOCK;INFO;A Bit Lock signal. Was detected. P1: raw BLO state, P2: 0;fsfw/src/fsfw/datalinklayer/DataLinkLayer.h
|
7902;0x1ede;BIT_LOCK;INFO;A Bit Lock signal. Was detected. P1: raw BLO state, P2: 0;fsfw/src/fsfw/datalinklayer/DataLinkLayer.h
|
||||||
@ -119,8 +120,8 @@ Event ID (dec); Event ID (hex); Name; Severity; Description; File Path
|
|||||||
12003;0x2ee3;SUPV_EXE_FAILURE;LOW;PLOC received execution failure report P1: ID of command for which the execution failed P2: Status code sent by the supervisor handler;linux/devices/ploc/PlocSupervisorHandler.h
|
12003;0x2ee3;SUPV_EXE_FAILURE;LOW;PLOC received execution failure report P1: ID of command for which the execution failed P2: Status code sent by the supervisor handler;linux/devices/ploc/PlocSupervisorHandler.h
|
||||||
12004;0x2ee4;SUPV_CRC_FAILURE_EVENT;LOW;PLOC supervisor reply has invalid crc;linux/devices/ploc/PlocSupervisorHandler.h
|
12004;0x2ee4;SUPV_CRC_FAILURE_EVENT;LOW;PLOC supervisor reply has invalid crc;linux/devices/ploc/PlocSupervisorHandler.h
|
||||||
12005;0x2ee5;SUPV_MPSOC_SHUWDOWN_BUILD_FAILED;LOW;Failed to build the command to shutdown the MPSoC;linux/devices/ploc/PlocSupervisorHandler.h
|
12005;0x2ee5;SUPV_MPSOC_SHUWDOWN_BUILD_FAILED;LOW;Failed to build the command to shutdown the MPSoC;linux/devices/ploc/PlocSupervisorHandler.h
|
||||||
12100;0x2f44;SANITIZATION_FAILED;LOW;;bsp_q7s/memory/SdCardManager.h
|
12100;0x2f44;SANITIZATION_FAILED;LOW;;bsp_q7s/fs/SdCardManager.h
|
||||||
12101;0x2f45;MOUNTED_SD_CARD;INFO;;bsp_q7s/memory/SdCardManager.h
|
12101;0x2f45;MOUNTED_SD_CARD;INFO;;bsp_q7s/fs/SdCardManager.h
|
||||||
12300;0x300c;SEND_MRAM_DUMP_FAILED;LOW;Failed to send mram dump command to supervisor handler P1: Return value of commandAction function P2: Start address of MRAM to dump with this command;linux/devices/ploc/PlocMemoryDumper.h
|
12300;0x300c;SEND_MRAM_DUMP_FAILED;LOW;Failed to send mram dump command to supervisor handler P1: Return value of commandAction function P2: Start address of MRAM to dump with this command;linux/devices/ploc/PlocMemoryDumper.h
|
||||||
12301;0x300d;MRAM_DUMP_FAILED;LOW;Received completion failure report form PLOC supervisor handler P1: MRAM start address of failing dump command;linux/devices/ploc/PlocMemoryDumper.h
|
12301;0x300d;MRAM_DUMP_FAILED;LOW;Received completion failure report form PLOC supervisor handler P1: MRAM start address of failing dump command;linux/devices/ploc/PlocMemoryDumper.h
|
||||||
12302;0x300e;MRAM_DUMP_FINISHED;LOW;MRAM dump finished successfully;linux/devices/ploc/PlocMemoryDumper.h
|
12302;0x300e;MRAM_DUMP_FINISHED;LOW;MRAM dump finished successfully;linux/devices/ploc/PlocMemoryDumper.h
|
||||||
@ -159,6 +160,8 @@ Event ID (dec); Event ID (hex); Name; Severity; Description; File Path
|
|||||||
12609;0x3141;MPSOC_ACK_INVALID_APID;LOW;Expected acknowledgment report but received space packet with other apid P1: Apid of received space packet P2: Internal state of MPSoC;linux/devices/ploc/PlocMPSoCHelper.h
|
12609;0x3141;MPSOC_ACK_INVALID_APID;LOW;Expected acknowledgment report but received space packet with other apid P1: Apid of received space packet P2: Internal state of MPSoC;linux/devices/ploc/PlocMPSoCHelper.h
|
||||||
12610;0x3142;MPSOC_EXE_INVALID_APID;LOW;Expected execution report but received space packet with other apid P1: Apid of received space packet P2: Internal state of MPSoC;linux/devices/ploc/PlocMPSoCHelper.h
|
12610;0x3142;MPSOC_EXE_INVALID_APID;LOW;Expected execution report but received space packet with other apid P1: Apid of received space packet P2: Internal state of MPSoC;linux/devices/ploc/PlocMPSoCHelper.h
|
||||||
12611;0x3143;MPSOC_HELPER_SEQ_CNT_MISMATCH;LOW;Received sequence count does not match expected sequence count P1: Expected sequence count P2: Received sequence count;linux/devices/ploc/PlocMPSoCHelper.h
|
12611;0x3143;MPSOC_HELPER_SEQ_CNT_MISMATCH;LOW;Received sequence count does not match expected sequence count P1: Expected sequence count P2: Received sequence count;linux/devices/ploc/PlocMPSoCHelper.h
|
||||||
|
12612;0x3144;MPSOC_TM_SIZE_ERROR;LOW;;linux/devices/ploc/PlocMPSoCHelper.h
|
||||||
|
12613;0x3145;MPSOC_TM_CRC_MISSMATCH;LOW;;linux/devices/ploc/PlocMPSoCHelper.h
|
||||||
12700;0x319c;TRANSITION_BACK_TO_OFF;MEDIUM;Could not transition properly and went back to ALL OFF;mission/devices/PayloadPcduHandler.h
|
12700;0x319c;TRANSITION_BACK_TO_OFF;MEDIUM;Could not transition properly and went back to ALL OFF;mission/devices/PayloadPcduHandler.h
|
||||||
12701;0x319d;NEG_V_OUT_OF_BOUNDS;MEDIUM;P1: 0 -> too low, 1 -> too high P2: Float value;mission/devices/PayloadPcduHandler.h
|
12701;0x319d;NEG_V_OUT_OF_BOUNDS;MEDIUM;P1: 0 -> too low, 1 -> too high P2: Float value;mission/devices/PayloadPcduHandler.h
|
||||||
12702;0x319e;U_DRO_OUT_OF_BOUNDS;MEDIUM;P1: 0 -> too low, 1 -> too high P2: Float value;mission/devices/PayloadPcduHandler.h
|
12702;0x319e;U_DRO_OUT_OF_BOUNDS;MEDIUM;P1: 0 -> too low, 1 -> too high P2: Float value;mission/devices/PayloadPcduHandler.h
|
||||||
@ -192,19 +195,32 @@ Event ID (dec); Event ID (hex); Name; Severity; Description; File Path
|
|||||||
13605;0x3525;SUPV_EVENT_BUFFER_REQUEST_SUCCESSFUL;LOW;Requesting event buffer was successful;linux/devices/ploc/PlocSupvHelper.h
|
13605;0x3525;SUPV_EVENT_BUFFER_REQUEST_SUCCESSFUL;LOW;Requesting event buffer was successful;linux/devices/ploc/PlocSupvHelper.h
|
||||||
13606;0x3526;SUPV_EVENT_BUFFER_REQUEST_FAILED;LOW;Requesting event buffer failed;linux/devices/ploc/PlocSupvHelper.h
|
13606;0x3526;SUPV_EVENT_BUFFER_REQUEST_FAILED;LOW;Requesting event buffer failed;linux/devices/ploc/PlocSupvHelper.h
|
||||||
13607;0x3527;SUPV_EVENT_BUFFER_REQUEST_TERMINATED;LOW;Terminated event buffer request by command P1: Number of packets read before process was terminated;linux/devices/ploc/PlocSupvHelper.h
|
13607;0x3527;SUPV_EVENT_BUFFER_REQUEST_TERMINATED;LOW;Terminated event buffer request by command P1: Number of packets read before process was terminated;linux/devices/ploc/PlocSupvHelper.h
|
||||||
13608;0x3528;SUPV_SENDING_COMMAND_FAILED;LOW;;linux/devices/ploc/PlocSupvHelper.h
|
13608;0x3528;SUPV_MEM_CHECK_OK;INFO;;linux/devices/ploc/PlocSupvHelper.h
|
||||||
13609;0x3529;SUPV_HELPER_REQUESTING_REPLY_FAILED;LOW;Request receive message of communication interface failed P1: Return value returned by the communication interface requestReceiveMessage function P2: Internal state of supervisor helper;linux/devices/ploc/PlocSupvHelper.h
|
13609;0x3529;SUPV_MEM_CHECK_FAIL;INFO;;linux/devices/ploc/PlocSupvHelper.h
|
||||||
13610;0x352a;SUPV_HELPER_READING_REPLY_FAILED;LOW;Reading receive message of communication interface failed P1: Return value returned by the communication interface readingReceivedMessage function P2: Internal state of supervisor helper;linux/devices/ploc/PlocSupvHelper.h
|
13616;0x3530;SUPV_SENDING_COMMAND_FAILED;LOW;;linux/devices/ploc/PlocSupvHelper.h
|
||||||
13611;0x352b;SUPV_MISSING_ACK;LOW;Did not receive acknowledgement report P1: Number of bytes missing P2: Internal state of MPSoC helper;linux/devices/ploc/PlocSupvHelper.h
|
13617;0x3531;SUPV_HELPER_REQUESTING_REPLY_FAILED;LOW;Request receive message of communication interface failed P1: Return value returned by the communication interface requestReceiveMessage function P2: Internal state of supervisor helper;linux/devices/ploc/PlocSupvHelper.h
|
||||||
13612;0x352c;SUPV_MISSING_EXE;LOW;Supervisor did not receive execution report P1: Number of bytes missing P2: Internal state of supervisor helper;linux/devices/ploc/PlocSupvHelper.h
|
13618;0x3532;SUPV_HELPER_READING_REPLY_FAILED;LOW;Reading receive message of communication interface failed P1: Return value returned by the communication interface readingReceivedMessage function P2: Internal state of supervisor helper;linux/devices/ploc/PlocSupvHelper.h
|
||||||
13613;0x352d;SUPV_ACK_FAILURE_REPORT;LOW;Supervisor received acknowledgment failure report P1: Internal state of supervisor helper;linux/devices/ploc/PlocSupvHelper.h
|
13619;0x3533;SUPV_MISSING_ACK;LOW;Did not receive acknowledgement report P1: Number of bytes missing P2: Internal state of MPSoC helper;linux/devices/ploc/PlocSupvHelper.h
|
||||||
13614;0x352e;SUPV_EXE_FAILURE_REPORT;LOW;Execution report failure P1:;linux/devices/ploc/PlocSupvHelper.h
|
13620;0x3534;SUPV_MISSING_EXE;LOW;Supervisor did not receive execution report P1: Number of bytes missing P2: Internal state of supervisor helper;linux/devices/ploc/PlocSupvHelper.h
|
||||||
13615;0x352f;SUPV_ACK_INVALID_APID;LOW;Supervisor expected acknowledgment report but received space packet with other apid P1: Apid of received space packet P2: Internal state of supervisor helper;linux/devices/ploc/PlocSupvHelper.h
|
13621;0x3535;SUPV_ACK_FAILURE_REPORT;LOW;Supervisor received acknowledgment failure report P1: Internal state of supervisor helper;linux/devices/ploc/PlocSupvHelper.h
|
||||||
13616;0x3530;SUPV_EXE_INVALID_APID;LOW;Supervisor helper expected execution report but received space packet with other apid P1: Apid of received space packet P2: Internal state of supervisor helper;linux/devices/ploc/PlocSupvHelper.h
|
13622;0x3536;SUPV_EXE_FAILURE_REPORT;LOW;Execution report failure P1:;linux/devices/ploc/PlocSupvHelper.h
|
||||||
13617;0x3531;ACK_RECEPTION_FAILURE;LOW;Failed to receive acknowledgment report P1: Return value P2: Apid of command for which the reception of the acknowledgment report failed;linux/devices/ploc/PlocSupvHelper.h
|
13623;0x3537;SUPV_ACK_INVALID_APID;LOW;Supervisor expected acknowledgment report but received space packet with other apid P1: Apid of received space packet P2: Internal state of supervisor helper;linux/devices/ploc/PlocSupvHelper.h
|
||||||
13618;0x3532;EXE_RECEPTION_FAILURE;LOW;Failed to receive execution report P1: Return value P2: Apid of command for which the reception of the execution report failed;linux/devices/ploc/PlocSupvHelper.h
|
13624;0x3538;SUPV_EXE_INVALID_APID;LOW;Supervisor helper expected execution report but received space packet with other apid P1: Apid of received space packet P2: Internal state of supervisor helper;linux/devices/ploc/PlocSupvHelper.h
|
||||||
13619;0x3533;WRITE_MEMORY_FAILED;LOW;Update procedure failed when sending packet with number P1 P1: Packet number for which the memory write command fails;linux/devices/ploc/PlocSupvHelper.h
|
13625;0x3539;ACK_RECEPTION_FAILURE;LOW;Failed to receive acknowledgment report P1: Return value P2: Apid of command for which the reception of the acknowledgment report failed;linux/devices/ploc/PlocSupvHelper.h
|
||||||
|
13626;0x353a;EXE_RECEPTION_FAILURE;LOW;Failed to receive execution report P1: Return value P2: Apid of command for which the reception of the execution report failed;linux/devices/ploc/PlocSupvHelper.h
|
||||||
|
13627;0x353b;WRITE_MEMORY_FAILED;LOW;Update procedure failed when sending packet. P1: First byte percent, third and fourth byte Sequence Count, P2: Bytes written;linux/devices/ploc/PlocSupvHelper.h
|
||||||
|
13628;0x353c;SUPV_REPLY_SIZE_MISSMATCH;LOW;;linux/devices/ploc/PlocSupvHelper.h
|
||||||
|
13629;0x353d;SUPV_REPLY_CRC_MISSMATCH;LOW;;linux/devices/ploc/PlocSupvHelper.h
|
||||||
|
13630;0x353e;SUPV_UPDATE_PROGRESS;INFO;Will be triggered every 5 percent of the update progress. P1: First byte percent, third and fourth byte Sequence Count, P2: Bytes written;linux/devices/ploc/PlocSupvHelper.h
|
||||||
13700;0x3584;ALLOC_FAILURE;MEDIUM;;bsp_q7s/core/CoreController.h
|
13700;0x3584;ALLOC_FAILURE;MEDIUM;;bsp_q7s/core/CoreController.h
|
||||||
13701;0x3585;REBOOT_SW;MEDIUM; Software reboot occurred. Can also be a systemd reboot. P1: Current Chip, P2: Current Copy;bsp_q7s/core/CoreController.h
|
13701;0x3585;REBOOT_SW;MEDIUM; Software reboot occurred. Can also be a systemd reboot. P1: Current Chip, P2: Current Copy;bsp_q7s/core/CoreController.h
|
||||||
13702;0x3586;REBOOT_MECHANISM_TRIGGERED;MEDIUM;The reboot mechanism was triggered. P1: First 16 bits: Last Chip, Last 16 bits: Last Copy, P2: Each byte is the respective reboot count for the slots;bsp_q7s/core/CoreController.h
|
13702;0x3586;REBOOT_MECHANISM_TRIGGERED;MEDIUM;The reboot mechanism was triggered. P1: First 16 bits: Last Chip, Last 16 bits: Last Copy, P2: Each byte is the respective reboot count for the slots;bsp_q7s/core/CoreController.h
|
||||||
13703;0x3587;REBOOT_HW;MEDIUM;;bsp_q7s/core/CoreController.h
|
13703;0x3587;REBOOT_HW;MEDIUM;;bsp_q7s/core/CoreController.h
|
||||||
|
13800;0x35e8;MISSING_PACKET;LOW;;mission/devices/devicedefinitions/ScexDefinitions.h
|
||||||
|
13801;0x35e9;EXPERIMENT_TIMEDOUT;LOW;;mission/devices/devicedefinitions/ScexDefinitions.h
|
||||||
|
13802;0x35ea;MULTI_PACKET_COMMAND_DONE;INFO;;mission/devices/devicedefinitions/ScexDefinitions.h
|
||||||
|
13901;0x364d;SET_CONFIGFILEVALUE_FAILED;MEDIUM;;mission/utility/GlobalConfigHandler.h
|
||||||
|
13902;0x364e;GET_CONFIGFILEVALUE_FAILED;MEDIUM;;mission/utility/GlobalConfigHandler.h
|
||||||
|
13903;0x364f;INSERT_CONFIGFILEVALUE_FAILED;MEDIUM;;mission/utility/GlobalConfigHandler.h
|
||||||
|
13904;0x3650;WRITE_CONFIGFILE_FAILED;MEDIUM;;mission/utility/GlobalConfigHandler.h
|
||||||
|
13905;0x3651;READ_CONFIGFILE_FAILED;MEDIUM;;mission/utility/GlobalConfigHandler.h
|
||||||
|
|
@ -25,7 +25,7 @@ class EiveHookObject(TmTcCfgHookBase):
|
|||||||
|
|
||||||
cfg = create_com_interface_cfg_default(
|
cfg = create_com_interface_cfg_default(
|
||||||
com_if_key=com_if_key,
|
com_if_key=com_if_key,
|
||||||
json_cfg_path=self.json_cfg_path,
|
json_cfg_path=self.cfg_path,
|
||||||
space_packet_ids=SPACE_PACKET_IDS,
|
space_packet_ids=SPACE_PACKET_IDS,
|
||||||
)
|
)
|
||||||
return create_com_interface_default(cfg)
|
return create_com_interface_default(cfg)
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
0x00005060;P60DOCK_TEST_TASK
|
0x00005060;P60DOCK_TEST_TASK
|
||||||
|
0x43000002;ACS_CONTROLLER
|
||||||
0x43000003;CORE_CONTROLLER
|
0x43000003;CORE_CONTROLLER
|
||||||
0x43100002;ACS_CONTROLLER
|
0x43000006;GLOBAL_JSON_CFG
|
||||||
0x43400001;THERMAL_CONTROLLER
|
0x43400001;THERMAL_CONTROLLER
|
||||||
0x44120006;MGM_0_LIS3_HANDLER
|
0x44120006;MGM_0_LIS3_HANDLER
|
||||||
0x44120010;GYRO_0_ADIS_HANDLER
|
0x44120010;GYRO_0_ADIS_HANDLER
|
||||||
@ -46,6 +47,7 @@
|
|||||||
0x44330015;PLOC_MPSOC_HANDLER
|
0x44330015;PLOC_MPSOC_HANDLER
|
||||||
0x44330016;PLOC_SUPERVISOR_HANDLER
|
0x44330016;PLOC_SUPERVISOR_HANDLER
|
||||||
0x44330017;PLOC_SUPERVISOR_HELPER
|
0x44330017;PLOC_SUPERVISOR_HELPER
|
||||||
|
0x44330032;SCEX
|
||||||
0x444100A2;SOLAR_ARRAY_DEPL_HANDLER
|
0x444100A2;SOLAR_ARRAY_DEPL_HANDLER
|
||||||
0x444100A4;HEATER_HANDLER
|
0x444100A4;HEATER_HANDLER
|
||||||
0x44420004;TMP1075_HANDLER_1
|
0x44420004;TMP1075_HANDLER_1
|
||||||
@ -69,6 +71,7 @@
|
|||||||
0x445300A3;SYRLINKS_HK_HANDLER
|
0x445300A3;SYRLINKS_HK_HANDLER
|
||||||
0x49000000;ARDUINO_COM_IF
|
0x49000000;ARDUINO_COM_IF
|
||||||
0x49010005;GPIO_IF
|
0x49010005;GPIO_IF
|
||||||
|
0x49010006;SCEX_UART_READER
|
||||||
0x49020004;SPI_MAIN_COM_IF
|
0x49020004;SPI_MAIN_COM_IF
|
||||||
0x49020005;SPI_RW_COM_IF
|
0x49020005;SPI_RW_COM_IF
|
||||||
0x49020006;SPI_RTD_COM_IF
|
0x49020006;SPI_RTD_COM_IF
|
||||||
@ -106,6 +109,7 @@
|
|||||||
0x534f0200;TM_STORE
|
0x534f0200;TM_STORE
|
||||||
0x534f0300;IPC_STORE
|
0x534f0300;IPC_STORE
|
||||||
0x53500010;TIME_STAMPER
|
0x53500010;TIME_STAMPER
|
||||||
|
0x53500020;VERIFICATION_REPORTER
|
||||||
0x53ffffff;FSFW_OBJECTS_END
|
0x53ffffff;FSFW_OBJECTS_END
|
||||||
0x54000010;SPI_TEST
|
0x54000010;SPI_TEST
|
||||||
0x54000020;UART_TEST
|
0x54000020;UART_TEST
|
||||||
@ -127,6 +131,8 @@
|
|||||||
0x73000002;SUS_BOARD_ASS
|
0x73000002;SUS_BOARD_ASS
|
||||||
0x73000003;TCS_BOARD_ASS
|
0x73000003;TCS_BOARD_ASS
|
||||||
0x73000004;RW_ASS
|
0x73000004;RW_ASS
|
||||||
|
0x73000005;CFDP_HANDLER
|
||||||
|
0x73000006;CFDP_DISTRIBUTOR
|
||||||
0x73000100;TM_FUNNEL
|
0x73000100;TM_FUNNEL
|
||||||
0x73500000;CCSDS_IP_CORE_BRIDGE
|
0x73500000;CCSDS_IP_CORE_BRIDGE
|
||||||
0xFFFFFFFF;NO_OBJECT
|
0xFFFFFFFF;NO_OBJECT
|
||||||
|
|
@ -1,169 +1,158 @@
|
|||||||
Full ID (hex); Name; Description; Unique ID; Subsytem Name; File Path
|
Full ID (hex); Name; Description; Unique ID; Subsytem Name; File Path
|
||||||
0x0000;OK;System-wide code for ok.;0;HasReturnvaluesIF;fsfw/returnvalues/HasReturnvaluesIF.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/HasReturnvaluesIF.h
|
0x0001;Failed;Unspecified system-wide code for failed.;1;HasReturnvaluesIF;fsfw/returnvalues/returnvalue.h
|
||||||
0x5fa0;CCSDS_CommandNotImplemented;Received action message with unknown action id;160;CCSDS_HANDLER;mission/tmtc/CCSDSHandler.h
|
0x63a0;NVMB_KeyNotExists;Specified key does not exist in json file;160;NVM_PARAM_BASE;mission/memory/NVMParameterBase.h
|
||||||
0x5c00;GOMS_PacketTooLong;;0;GOM_SPACE_HANDLER;mission/devices/GomspaceDeviceHandler.h
|
0x58a0;SUSS_ErrorUnlockMutex;;160;SUS_HANDLER;mission/devices/SusHandler.h
|
||||||
0x5c01;GOMS_InvalidTableId;;1;GOM_SPACE_HANDLER;mission/devices/GomspaceDeviceHandler.h
|
0x58a1;SUSS_ErrorLockMutex;;161;SUS_HANDLER;mission/devices/SusHandler.h
|
||||||
0x5c02;GOMS_InvalidAddress;;2;GOM_SPACE_HANDLER;mission/devices/GomspaceDeviceHandler.h
|
0x66a0;SADPL_CommandNotSupported;;160;SA_DEPL_HANDLER;mission/devices/SolarArrayDeploymentHandler.h
|
||||||
0x5c03;GOMS_InvalidParamSize;;3;GOM_SPACE_HANDLER;mission/devices/GomspaceDeviceHandler.h
|
0x66a1;SADPL_DeploymentAlreadyExecuting;;161;SA_DEPL_HANDLER;mission/devices/SolarArrayDeploymentHandler.h
|
||||||
0x5c04;GOMS_InvalidPayloadSize;;4;GOM_SPACE_HANDLER;mission/devices/GomspaceDeviceHandler.h
|
0x66a2;SADPL_MainSwitchTimeoutFailure;;162;SA_DEPL_HANDLER;mission/devices/SolarArrayDeploymentHandler.h
|
||||||
0x5c05;GOMS_UnknownReplyId;;5;GOM_SPACE_HANDLER;mission/devices/GomspaceDeviceHandler.h
|
0x66a3;SADPL_SwitchingDeplSa1Failed;;163;SA_DEPL_HANDLER;mission/devices/SolarArrayDeploymentHandler.h
|
||||||
0x51b0;RWHA_SpiWriteFailure;;176;RW_HANDLER;mission/devices/RwHandler.h
|
0x66a4;SADPL_SwitchingDeplSa2Failed;;164;SA_DEPL_HANDLER;mission/devices/SolarArrayDeploymentHandler.h
|
||||||
0x51b1;RWHA_SpiReadFailure;Used by the spi send function to tell a failing read call;177;RW_HANDLER;mission/devices/RwHandler.h
|
0x52b0;RWHA_SpiWriteFailure;;176;RW_HANDLER;mission/devices/RwHandler.h
|
||||||
0x51b2;RWHA_MissingStartSign;Can be used by the HDLC decoding mechanism to inform about a missing start sign 0x7E;178;RW_HANDLER;mission/devices/RwHandler.h
|
0x52b1;RWHA_SpiReadFailure;Used by the spi send function to tell a failing read call;177;RW_HANDLER;mission/devices/RwHandler.h
|
||||||
0x51b3;RWHA_InvalidSubstitute;Can be used by the HDLC decoding mechanism to inform about an invalid substitution combination;179;RW_HANDLER;mission/devices/RwHandler.h
|
0x52b2;RWHA_MissingStartSign;Can be used by the HDLC decoding mechanism to inform about a missing start sign 0x7E;178;RW_HANDLER;mission/devices/RwHandler.h
|
||||||
0x51b4;RWHA_MissingEndSign;HDLC decoding mechanism never receives the end sign 0x7E;180;RW_HANDLER;mission/devices/RwHandler.h
|
0x52b3;RWHA_InvalidSubstitute;Can be used by the HDLC decoding mechanism to inform about an invalid substitution combination;179;RW_HANDLER;mission/devices/RwHandler.h
|
||||||
0x51b5;RWHA_NoReply;Reaction wheel only responds with empty frames.;181;RW_HANDLER;mission/devices/RwHandler.h
|
0x52b4;RWHA_MissingEndSign;HDLC decoding mechanism never receives the end sign 0x7E;180;RW_HANDLER;mission/devices/RwHandler.h
|
||||||
0x51b6;RWHA_NoStartMarker;Expected a start marker as first byte;182;RW_HANDLER;mission/devices/RwHandler.h
|
0x52b5;RWHA_NoReply;Reaction wheel only responds with empty frames.;181;RW_HANDLER;mission/devices/RwHandler.h
|
||||||
0x51a0;RWHA_InvalidSpeed;Action Message with invalid speed was received. Valid speeds must be in the range of [-65000, 1000] or [1000, 65000];160;RW_HANDLER;mission/devices/RwHandler.h
|
0x52b6;RWHA_NoStartMarker;Expected a start marker as first byte;182;RW_HANDLER;mission/devices/RwHandler.h
|
||||||
0x51a1;RWHA_InvalidRampTime;Action Message with invalid ramp time was received.;161;RW_HANDLER;mission/devices/RwHandler.h
|
0x52a0;RWHA_InvalidSpeed;Action Message with invalid speed was received. Valid speeds must be in the range of [-65000, 1000] or [1000, 65000];160;RW_HANDLER;mission/devices/RwHandler.h
|
||||||
0x51a2;RWHA_SetSpeedCommandInvalidLength;Received set speed command has invalid length. Should be 6.;162;RW_HANDLER;mission/devices/RwHandler.h
|
0x52a1;RWHA_InvalidRampTime;Action Message with invalid ramp time was received.;161;RW_HANDLER;mission/devices/RwHandler.h
|
||||||
0x51a3;RWHA_ExecutionFailed;Command execution failed;163;RW_HANDLER;mission/devices/RwHandler.h
|
0x52a2;RWHA_SetSpeedCommandInvalidLength;Received set speed command has invalid length. Should be 6.;162;RW_HANDLER;mission/devices/RwHandler.h
|
||||||
0x51a4;RWHA_CrcError;Reaction wheel reply has invalid crc;164;RW_HANDLER;mission/devices/RwHandler.h
|
0x52a3;RWHA_ExecutionFailed;Command execution failed;163;RW_HANDLER;mission/devices/RwHandler.h
|
||||||
0x4ea1;HEATER_CommandNotSupported;;161;HEATER_HANDLER;mission/devices/HeaterHandler.h
|
0x52a4;RWHA_CrcError;Reaction wheel reply has invalid crc;164;RW_HANDLER;mission/devices/RwHandler.h
|
||||||
0x4ea2;HEATER_InitFailed;;162;HEATER_HANDLER;mission/devices/HeaterHandler.h
|
0x5d00;GOMS_PacketTooLong;;0;GOM_SPACE_HANDLER;mission/devices/GomspaceDeviceHandler.h
|
||||||
0x4ea3;HEATER_InvalidSwitchNr;;163;HEATER_HANDLER;mission/devices/HeaterHandler.h
|
0x5d01;GOMS_InvalidTableId;;1;GOM_SPACE_HANDLER;mission/devices/GomspaceDeviceHandler.h
|
||||||
0x4ea4;HEATER_MainSwitchSetTimeout;;164;HEATER_HANDLER;mission/devices/HeaterHandler.h
|
0x5d02;GOMS_InvalidAddress;;2;GOM_SPACE_HANDLER;mission/devices/GomspaceDeviceHandler.h
|
||||||
0x4ea5;HEATER_CommandAlreadyWaiting;;165;HEATER_HANDLER;mission/devices/HeaterHandler.h
|
0x5d03;GOMS_InvalidParamSize;;3;GOM_SPACE_HANDLER;mission/devices/GomspaceDeviceHandler.h
|
||||||
0x57a0;SUSS_ErrorUnlockMutex;;160;SUS_HANDLER;mission/devices/SusHandler.h
|
0x5d04;GOMS_InvalidPayloadSize;;4;GOM_SPACE_HANDLER;mission/devices/GomspaceDeviceHandler.h
|
||||||
0x57a1;SUSS_ErrorLockMutex;;161;SUS_HANDLER;mission/devices/SusHandler.h
|
0x5d05;GOMS_UnknownReplyId;;5;GOM_SPACE_HANDLER;mission/devices/GomspaceDeviceHandler.h
|
||||||
0x50a0;IMTQ_InvalidCommandCode;;160;IMTQ_HANDLER;mission/devices/IMTQHandler.h
|
0x51a0;IMTQ_InvalidCommandCode;;160;IMTQ_HANDLER;mission/devices/IMTQHandler.h
|
||||||
0x50a1;IMTQ_ParameterMissing;;161;IMTQ_HANDLER;mission/devices/IMTQHandler.h
|
0x51a1;IMTQ_ParameterMissing;;161;IMTQ_HANDLER;mission/devices/IMTQHandler.h
|
||||||
0x50a2;IMTQ_ParameterInvalid;;162;IMTQ_HANDLER;mission/devices/IMTQHandler.h
|
0x51a2;IMTQ_ParameterInvalid;;162;IMTQ_HANDLER;mission/devices/IMTQHandler.h
|
||||||
0x50a3;IMTQ_CcUnavailable;;163;IMTQ_HANDLER;mission/devices/IMTQHandler.h
|
0x51a3;IMTQ_CcUnavailable;;163;IMTQ_HANDLER;mission/devices/IMTQHandler.h
|
||||||
0x50a4;IMTQ_InternalProcessingError;;164;IMTQ_HANDLER;mission/devices/IMTQHandler.h
|
0x51a4;IMTQ_InternalProcessingError;;164;IMTQ_HANDLER;mission/devices/IMTQHandler.h
|
||||||
0x50a5;IMTQ_RejectedWithoutReason;;165;IMTQ_HANDLER;mission/devices/IMTQHandler.h
|
0x51a5;IMTQ_RejectedWithoutReason;;165;IMTQ_HANDLER;mission/devices/IMTQHandler.h
|
||||||
0x50a6;IMTQ_CmdErrUnknown;;166;IMTQ_HANDLER;mission/devices/IMTQHandler.h
|
0x51a6;IMTQ_CmdErrUnknown;;166;IMTQ_HANDLER;mission/devices/IMTQHandler.h
|
||||||
0x50a7;IMTQ_UnexpectedSelfTestReply;The status reply to a self test command was received but no self test command has been sent. This should normally never happen.;167;IMTQ_HANDLER;mission/devices/IMTQHandler.h
|
0x51a7;IMTQ_UnexpectedSelfTestReply;The status reply to a self test command was received but no self test command has been sent. This should normally never happen.;167;IMTQ_HANDLER;mission/devices/IMTQHandler.h
|
||||||
0x4fa0;SYRLINKS_CrcFailure;;160;SYRLINKS_HANDLER;mission/devices/SyrlinksHkHandler.h
|
0x50a0;SYRLINKS_CrcFailure;;160;SYRLINKS_HANDLER;mission/devices/SyrlinksHkHandler.h
|
||||||
0x4fa1;SYRLINKS_UartFraminOrParityErrorAck;;161;SYRLINKS_HANDLER;mission/devices/SyrlinksHkHandler.h
|
0x50a1;SYRLINKS_UartFraminOrParityErrorAck;;161;SYRLINKS_HANDLER;mission/devices/SyrlinksHkHandler.h
|
||||||
0x4fa2;SYRLINKS_BadCharacterAck;;162;SYRLINKS_HANDLER;mission/devices/SyrlinksHkHandler.h
|
0x50a2;SYRLINKS_BadCharacterAck;;162;SYRLINKS_HANDLER;mission/devices/SyrlinksHkHandler.h
|
||||||
0x4fa3;SYRLINKS_BadParameterValueAck;;163;SYRLINKS_HANDLER;mission/devices/SyrlinksHkHandler.h
|
0x50a3;SYRLINKS_BadParameterValueAck;;163;SYRLINKS_HANDLER;mission/devices/SyrlinksHkHandler.h
|
||||||
0x4fa4;SYRLINKS_BadEndOfFrameAck;;164;SYRLINKS_HANDLER;mission/devices/SyrlinksHkHandler.h
|
0x50a4;SYRLINKS_BadEndOfFrameAck;;164;SYRLINKS_HANDLER;mission/devices/SyrlinksHkHandler.h
|
||||||
0x4fa5;SYRLINKS_UnknownCommandIdAck;;165;SYRLINKS_HANDLER;mission/devices/SyrlinksHkHandler.h
|
0x50a5;SYRLINKS_UnknownCommandIdAck;;165;SYRLINKS_HANDLER;mission/devices/SyrlinksHkHandler.h
|
||||||
0x4fa6;SYRLINKS_BadCrcAck;;166;SYRLINKS_HANDLER;mission/devices/SyrlinksHkHandler.h
|
0x50a6;SYRLINKS_BadCrcAck;;166;SYRLINKS_HANDLER;mission/devices/SyrlinksHkHandler.h
|
||||||
0x4fa7;SYRLINKS_ReplyWrongSize;;167;SYRLINKS_HANDLER;mission/devices/SyrlinksHkHandler.h
|
0x50a7;SYRLINKS_ReplyWrongSize;;167;SYRLINKS_HANDLER;mission/devices/SyrlinksHkHandler.h
|
||||||
0x4fa8;SYRLINKS_MissingStartFrameCharacter;;168;SYRLINKS_HANDLER;mission/devices/SyrlinksHkHandler.h
|
0x50a8;SYRLINKS_MissingStartFrameCharacter;;168;SYRLINKS_HANDLER;mission/devices/SyrlinksHkHandler.h
|
||||||
0x65a0;SADPL_CommandNotSupported;;160;SA_DEPL_HANDLER;mission/devices/SolarArrayDeploymentHandler.h
|
0x4fa1;HEATER_CommandNotSupported;;161;HEATER_HANDLER;mission/devices/HeaterHandler.h
|
||||||
0x65a1;SADPL_DeploymentAlreadyExecuting;;161;SA_DEPL_HANDLER;mission/devices/SolarArrayDeploymentHandler.h
|
0x4fa2;HEATER_InitFailed;;162;HEATER_HANDLER;mission/devices/HeaterHandler.h
|
||||||
0x65a2;SADPL_MainSwitchTimeoutFailure;;162;SA_DEPL_HANDLER;mission/devices/SolarArrayDeploymentHandler.h
|
0x4fa3;HEATER_InvalidSwitchNr;;163;HEATER_HANDLER;mission/devices/HeaterHandler.h
|
||||||
0x65a3;SADPL_SwitchingDeplSa1Failed;;163;SA_DEPL_HANDLER;mission/devices/SolarArrayDeploymentHandler.h
|
0x4fa4;HEATER_MainSwitchSetTimeout;;164;HEATER_HANDLER;mission/devices/HeaterHandler.h
|
||||||
0x65a4;SADPL_SwitchingDeplSa2Failed;;164;SA_DEPL_HANDLER;mission/devices/SolarArrayDeploymentHandler.h
|
0x4fa5;HEATER_CommandAlreadyWaiting;;165;HEATER_HANDLER;mission/devices/HeaterHandler.h
|
||||||
0x62a0;NVMB_KeyNotExists;Specified key does not exist in json file;160;NVM_PARAM_BASE;mission/memory/NVMParameterBase.h
|
0x60a0;CCSDS_CommandNotImplemented;Received action message with unknown action id;160;CCSDS_HANDLER;mission/tmtc/CCSDSHandler.h
|
||||||
0x2b01;CCS_BcIsSetVrCommand;;1;CCSDS_HANDLER_IF;fsfw/src/fsfw/datalinklayer/CCSDSReturnValuesIF.h
|
0x4500;HSPI_OpeningFileFailed;;0;HAL_SPI;fsfw/src/fsfw_hal/linux/spi/SpiComIF.h
|
||||||
0x2b02;CCS_BcIsUnlockCommand;;2;CCSDS_HANDLER_IF;fsfw/src/fsfw/datalinklayer/CCSDSReturnValuesIF.h
|
0x4501;HSPI_FullDuplexTransferFailed;;1;HAL_SPI;fsfw/src/fsfw_hal/linux/spi/SpiComIF.h
|
||||||
0x2bb0;CCS_BcIllegalCommand;;176;CCSDS_HANDLER_IF;fsfw/src/fsfw/datalinklayer/CCSDSReturnValuesIF.h
|
0x4502;HSPI_HalfDuplexTransferFailed;;2;HAL_SPI;fsfw/src/fsfw_hal/linux/spi/SpiComIF.h
|
||||||
0x2bb1;CCS_BoardReadingNotFinished;;177;CCSDS_HANDLER_IF;fsfw/src/fsfw/datalinklayer/CCSDSReturnValuesIF.h
|
0x4801;HGIO_UnknownGpioId;;1;HAL_GPIO;fsfw/src/fsfw_hal/linux/gpio/LinuxLibgpioIF.h
|
||||||
0x2bf0;CCS_NsPositiveW;;240;CCSDS_HANDLER_IF;fsfw/src/fsfw/datalinklayer/CCSDSReturnValuesIF.h
|
0x4802;HGIO_DriveGpioFailure;;2;HAL_GPIO;fsfw/src/fsfw_hal/linux/gpio/LinuxLibgpioIF.h
|
||||||
0x2bf1;CCS_NsNegativeW;;241;CCSDS_HANDLER_IF;fsfw/src/fsfw/datalinklayer/CCSDSReturnValuesIF.h
|
0x4803;HGIO_GpioTypeFailure;;3;HAL_GPIO;fsfw/src/fsfw_hal/linux/gpio/LinuxLibgpioIF.h
|
||||||
0x2bf2;CCS_NsLockout;;242;CCSDS_HANDLER_IF;fsfw/src/fsfw/datalinklayer/CCSDSReturnValuesIF.h
|
0x4804;HGIO_GpioInvalidInstance;;4;HAL_GPIO;fsfw/src/fsfw_hal/linux/gpio/LinuxLibgpioIF.h
|
||||||
0x2bf3;CCS_FarmInLockout;;243;CCSDS_HANDLER_IF;fsfw/src/fsfw/datalinklayer/CCSDSReturnValuesIF.h
|
0x4805;HGIO_GpioDuplicateDetected;;5;HAL_GPIO;fsfw/src/fsfw_hal/linux/gpio/LinuxLibgpioIF.h
|
||||||
0x2bf4;CCS_FarmInWait;;244;CCSDS_HANDLER_IF;fsfw/src/fsfw/datalinklayer/CCSDSReturnValuesIF.h
|
0x4806;HGIO_GpioInitFailed;;6;HAL_GPIO;fsfw/src/fsfw_hal/linux/gpio/LinuxLibgpioIF.h
|
||||||
0x2be0;CCS_WrongSymbol;;224;CCSDS_HANDLER_IF;fsfw/src/fsfw/datalinklayer/CCSDSReturnValuesIF.h
|
0x4807;HGIO_GpioGetValueFailed;;7;HAL_GPIO;fsfw/src/fsfw_hal/linux/gpio/LinuxLibgpioIF.h
|
||||||
0x2be1;CCS_DoubleStart;;225;CCSDS_HANDLER_IF;fsfw/src/fsfw/datalinklayer/CCSDSReturnValuesIF.h
|
0x4601;HURT_UartReadFailure;;1;HAL_UART;fsfw/src/fsfw_hal/linux/uart/UartComIF.h
|
||||||
0x2be2;CCS_StartSymbolMissed;;226;CCSDS_HANDLER_IF;fsfw/src/fsfw/datalinklayer/CCSDSReturnValuesIF.h
|
0x4602;HURT_UartReadSizeMissmatch;;2;HAL_UART;fsfw/src/fsfw_hal/linux/uart/UartComIF.h
|
||||||
0x2be3;CCS_EndWithoutStart;;227;CCSDS_HANDLER_IF;fsfw/src/fsfw/datalinklayer/CCSDSReturnValuesIF.h
|
0x4603;HURT_UartRxBufferTooSmall;;3;HAL_UART;fsfw/src/fsfw_hal/linux/uart/UartComIF.h
|
||||||
0x2be4;CCS_TooLarge;;228;CCSDS_HANDLER_IF;fsfw/src/fsfw/datalinklayer/CCSDSReturnValuesIF.h
|
0x4400;UXOS_ExecutionFinished;Execution of the current command has finished;0;LINUX_OSAL;fsfw/src/fsfw_hal/linux/CommandExecutor.h
|
||||||
0x2be5;CCS_TooShort;;229;CCSDS_HANDLER_IF;fsfw/src/fsfw/datalinklayer/CCSDSReturnValuesIF.h
|
0x4401;UXOS_CommandPending;Command is pending. This will also be returned if the user tries to load another command but a command is still pending;1;LINUX_OSAL;fsfw/src/fsfw_hal/linux/CommandExecutor.h
|
||||||
0x2be6;CCS_WrongTfVersion;;230;CCSDS_HANDLER_IF;fsfw/src/fsfw/datalinklayer/CCSDSReturnValuesIF.h
|
0x4402;UXOS_BytesRead;Some bytes have been read from the executing process;2;LINUX_OSAL;fsfw/src/fsfw_hal/linux/CommandExecutor.h
|
||||||
0x2be7;CCS_WrongSpacecraftId;;231;CCSDS_HANDLER_IF;fsfw/src/fsfw/datalinklayer/CCSDSReturnValuesIF.h
|
0x4403;UXOS_CommandError;Command execution failed;3;LINUX_OSAL;fsfw/src/fsfw_hal/linux/CommandExecutor.h
|
||||||
0x2be8;CCS_NoValidFrameType;;232;CCSDS_HANDLER_IF;fsfw/src/fsfw/datalinklayer/CCSDSReturnValuesIF.h
|
0x4404;UXOS_NoCommandLoadedOrPending;;4;LINUX_OSAL;fsfw/src/fsfw_hal/linux/CommandExecutor.h
|
||||||
0x2be9;CCS_CrcFailed;;233;CCSDS_HANDLER_IF;fsfw/src/fsfw/datalinklayer/CCSDSReturnValuesIF.h
|
0x4406;UXOS_PcloseCallError;;6;LINUX_OSAL;fsfw/src/fsfw_hal/linux/CommandExecutor.h
|
||||||
0x2bea;CCS_VcNotFound;;234;CCSDS_HANDLER_IF;fsfw/src/fsfw/datalinklayer/CCSDSReturnValuesIF.h
|
0x2801;SM_DataTooLarge;;1;STORAGE_MANAGER_IF;fsfw/src/fsfw/storagemanager/StorageManagerIF.h
|
||||||
0x2beb;CCS_ForwardingFailed;;235;CCSDS_HANDLER_IF;fsfw/src/fsfw/datalinklayer/CCSDSReturnValuesIF.h
|
0x2802;SM_DataStorageFull;;2;STORAGE_MANAGER_IF;fsfw/src/fsfw/storagemanager/StorageManagerIF.h
|
||||||
0x2bec;CCS_ContentTooLarge;;236;CCSDS_HANDLER_IF;fsfw/src/fsfw/datalinklayer/CCSDSReturnValuesIF.h
|
0x2803;SM_IllegalStorageId;;3;STORAGE_MANAGER_IF;fsfw/src/fsfw/storagemanager/StorageManagerIF.h
|
||||||
0x2bed;CCS_ResidualData;;237;CCSDS_HANDLER_IF;fsfw/src/fsfw/datalinklayer/CCSDSReturnValuesIF.h
|
0x2804;SM_DataDoesNotExist;;4;STORAGE_MANAGER_IF;fsfw/src/fsfw/storagemanager/StorageManagerIF.h
|
||||||
0x2bee;CCS_DataCorrupted;;238;CCSDS_HANDLER_IF;fsfw/src/fsfw/datalinklayer/CCSDSReturnValuesIF.h
|
0x2805;SM_IllegalAddress;;5;STORAGE_MANAGER_IF;fsfw/src/fsfw/storagemanager/StorageManagerIF.h
|
||||||
0x2bef;CCS_IllegalSegmentationFlag;;239;CCSDS_HANDLER_IF;fsfw/src/fsfw/datalinklayer/CCSDSReturnValuesIF.h
|
0x2806;SM_PoolTooLarge;;6;STORAGE_MANAGER_IF;fsfw/src/fsfw/storagemanager/StorageManagerIF.h
|
||||||
0x2bd0;CCS_IllegalFlagCombination;;208;CCSDS_HANDLER_IF;fsfw/src/fsfw/datalinklayer/CCSDSReturnValuesIF.h
|
0x0601;PP_DoItMyself;;1;HAS_MEMORY_IF;fsfw/src/fsfw/memory/HasMemoryIF.h
|
||||||
0x2bd1;CCS_ShorterThanHeader;;209;CCSDS_HANDLER_IF;fsfw/src/fsfw/datalinklayer/CCSDSReturnValuesIF.h
|
0x0602;PP_PointsToVariable;;2;HAS_MEMORY_IF;fsfw/src/fsfw/memory/HasMemoryIF.h
|
||||||
0x2bd2;CCS_TooShortBlockedPacket;;210;CCSDS_HANDLER_IF;fsfw/src/fsfw/datalinklayer/CCSDSReturnValuesIF.h
|
0x0603;PP_PointsToMemory;;3;HAS_MEMORY_IF;fsfw/src/fsfw/memory/HasMemoryIF.h
|
||||||
0x2bd3;CCS_TooShortMapExtraction;;211;CCSDS_HANDLER_IF;fsfw/src/fsfw/datalinklayer/CCSDSReturnValuesIF.h
|
0x0604;PP_ActivityCompleted;;4;HAS_MEMORY_IF;fsfw/src/fsfw/memory/HasMemoryIF.h
|
||||||
0x3a00;SPH_ConnBroken;;0;SEMAPHORE_IF;fsfw/src/fsfw/osal/common/TcpTmTcServer.h
|
0x0605;PP_PointsToVectorUint8;;5;HAS_MEMORY_IF;fsfw/src/fsfw/memory/HasMemoryIF.h
|
||||||
0x2901;IEC_NoConfigurationTable;;1;INTERNAL_ERROR_CODES;fsfw/src/fsfw/osal/InternalErrorCodes.h
|
0x0606;PP_PointsToVectorUint16;;6;HAS_MEMORY_IF;fsfw/src/fsfw/memory/HasMemoryIF.h
|
||||||
0x2902;IEC_NoCpuTable;;2;INTERNAL_ERROR_CODES;fsfw/src/fsfw/osal/InternalErrorCodes.h
|
0x0607;PP_PointsToVectorUint32;;7;HAS_MEMORY_IF;fsfw/src/fsfw/memory/HasMemoryIF.h
|
||||||
0x2903;IEC_InvalidWorkspaceAddress;;3;INTERNAL_ERROR_CODES;fsfw/src/fsfw/osal/InternalErrorCodes.h
|
0x0608;PP_PointsToVectorFloat;;8;HAS_MEMORY_IF;fsfw/src/fsfw/memory/HasMemoryIF.h
|
||||||
0x2904;IEC_TooLittleWorkspace;;4;INTERNAL_ERROR_CODES;fsfw/src/fsfw/osal/InternalErrorCodes.h
|
0x06a0;PP_DumpNotSupported;;160;HAS_MEMORY_IF;fsfw/src/fsfw/memory/HasMemoryIF.h
|
||||||
0x2905;IEC_WorkspaceAllocation;;5;INTERNAL_ERROR_CODES;fsfw/src/fsfw/osal/InternalErrorCodes.h
|
0x06e0;PP_InvalidSize;;224;HAS_MEMORY_IF;fsfw/src/fsfw/memory/HasMemoryIF.h
|
||||||
0x2906;IEC_InterruptStackTooSmall;;6;INTERNAL_ERROR_CODES;fsfw/src/fsfw/osal/InternalErrorCodes.h
|
0x06e1;PP_InvalidAddress;;225;HAS_MEMORY_IF;fsfw/src/fsfw/memory/HasMemoryIF.h
|
||||||
0x2907;IEC_ThreadExitted;;7;INTERNAL_ERROR_CODES;fsfw/src/fsfw/osal/InternalErrorCodes.h
|
0x06e2;PP_InvalidContent;;226;HAS_MEMORY_IF;fsfw/src/fsfw/memory/HasMemoryIF.h
|
||||||
0x2908;IEC_InconsistentMpInformation;;8;INTERNAL_ERROR_CODES;fsfw/src/fsfw/osal/InternalErrorCodes.h
|
0x06e3;PP_UnalignedAccess;;227;HAS_MEMORY_IF;fsfw/src/fsfw/memory/HasMemoryIF.h
|
||||||
0x2909;IEC_InvalidNode;;9;INTERNAL_ERROR_CODES;fsfw/src/fsfw/osal/InternalErrorCodes.h
|
0x06e4;PP_WriteProtected;;228;HAS_MEMORY_IF;fsfw/src/fsfw/memory/HasMemoryIF.h
|
||||||
0x290a;IEC_NoMpci;;10;INTERNAL_ERROR_CODES;fsfw/src/fsfw/osal/InternalErrorCodes.h
|
0x13e0;MH_UnknownCmd;;224;MEMORY_HELPER;fsfw/src/fsfw/memory/MemoryHelper.h
|
||||||
0x290b;IEC_BadPacket;;11;INTERNAL_ERROR_CODES;fsfw/src/fsfw/osal/InternalErrorCodes.h
|
0x13e1;MH_InvalidAddress;;225;MEMORY_HELPER;fsfw/src/fsfw/memory/MemoryHelper.h
|
||||||
0x290c;IEC_OutOfPackets;;12;INTERNAL_ERROR_CODES;fsfw/src/fsfw/osal/InternalErrorCodes.h
|
0x13e2;MH_InvalidSize;;226;MEMORY_HELPER;fsfw/src/fsfw/memory/MemoryHelper.h
|
||||||
0x290d;IEC_OutOfGlobalObjects;;13;INTERNAL_ERROR_CODES;fsfw/src/fsfw/osal/InternalErrorCodes.h
|
0x13e3;MH_StateMismatch;;227;MEMORY_HELPER;fsfw/src/fsfw/memory/MemoryHelper.h
|
||||||
0x290e;IEC_OutOfProxies;;14;INTERNAL_ERROR_CODES;fsfw/src/fsfw/osal/InternalErrorCodes.h
|
0x38a1;SGP4_InvalidEccentricity;;161;SGP4PROPAGATOR_CLASS;fsfw/src/fsfw/coordinates/Sgp4Propagator.h
|
||||||
0x290f;IEC_InvalidGlobalId;;15;INTERNAL_ERROR_CODES;fsfw/src/fsfw/osal/InternalErrorCodes.h
|
0x38a2;SGP4_InvalidMeanMotion;;162;SGP4PROPAGATOR_CLASS;fsfw/src/fsfw/coordinates/Sgp4Propagator.h
|
||||||
0x2910;IEC_BadStackHook;;16;INTERNAL_ERROR_CODES;fsfw/src/fsfw/osal/InternalErrorCodes.h
|
0x38a3;SGP4_InvalidPerturbationElements;;163;SGP4PROPAGATOR_CLASS;fsfw/src/fsfw/coordinates/Sgp4Propagator.h
|
||||||
0x2911;IEC_BadAttributes;;17;INTERNAL_ERROR_CODES;fsfw/src/fsfw/osal/InternalErrorCodes.h
|
0x38a4;SGP4_InvalidSemiLatusRectum;;164;SGP4PROPAGATOR_CLASS;fsfw/src/fsfw/coordinates/Sgp4Propagator.h
|
||||||
0x2912;IEC_ImplementationKeyCreateInconsistency;;18;INTERNAL_ERROR_CODES;fsfw/src/fsfw/osal/InternalErrorCodes.h
|
0x38a5;SGP4_InvalidEpochElements;;165;SGP4PROPAGATOR_CLASS;fsfw/src/fsfw/coordinates/Sgp4Propagator.h
|
||||||
0x2913;IEC_ImplementationBlockingOperationCancel;;19;INTERNAL_ERROR_CODES;fsfw/src/fsfw/osal/InternalErrorCodes.h
|
0x38a6;SGP4_SatelliteHasDecayed;;166;SGP4PROPAGATOR_CLASS;fsfw/src/fsfw/coordinates/Sgp4Propagator.h
|
||||||
0x2914;IEC_MutexObtainFromBadState;;20;INTERNAL_ERROR_CODES;fsfw/src/fsfw/osal/InternalErrorCodes.h
|
0x38b1;SGP4_TleTooOld;;177;SGP4PROPAGATOR_CLASS;fsfw/src/fsfw/coordinates/Sgp4Propagator.h
|
||||||
0x2915;IEC_UnlimitedAndMaximumIs0;;21;INTERNAL_ERROR_CODES;fsfw/src/fsfw/osal/InternalErrorCodes.h
|
0x38b2;SGP4_TleNotInitialized;;178;SGP4PROPAGATOR_CLASS;fsfw/src/fsfw/coordinates/Sgp4Propagator.h
|
||||||
|
0x1101;AL_Full;;1;ARRAY_LIST;fsfw/src/fsfw/container/ArrayList.h
|
||||||
|
0x1501;FM_KeyAlreadyExists;;1;FIXED_MAP;fsfw/src/fsfw/container/FixedMap.h
|
||||||
|
0x1502;FM_MapFull;;2;FIXED_MAP;fsfw/src/fsfw/container/FixedMap.h
|
||||||
|
0x1503;FM_KeyDoesNotExist;;3;FIXED_MAP;fsfw/src/fsfw/container/FixedMap.h
|
||||||
|
0x1801;FF_Full;;1;FIFO_CLASS;fsfw/src/fsfw/container/FIFOBase.h
|
||||||
|
0x1802;FF_Empty;;2;FIFO_CLASS;fsfw/src/fsfw/container/FIFOBase.h
|
||||||
|
0x1601;FMM_MapFull;;1;FIXED_MULTIMAP;fsfw/src/fsfw/container/FixedOrderedMultimap.h
|
||||||
|
0x1602;FMM_KeyDoesNotExist;;2;FIXED_MULTIMAP;fsfw/src/fsfw/container/FixedOrderedMultimap.h
|
||||||
|
0x3901;MUX_NotEnoughResources;;1;MUTEX_IF;fsfw/src/fsfw/ipc/MutexIF.h
|
||||||
|
0x3902;MUX_InsufficientMemory;;2;MUTEX_IF;fsfw/src/fsfw/ipc/MutexIF.h
|
||||||
|
0x3903;MUX_NoPrivilege;;3;MUTEX_IF;fsfw/src/fsfw/ipc/MutexIF.h
|
||||||
|
0x3904;MUX_WrongAttributeSetting;;4;MUTEX_IF;fsfw/src/fsfw/ipc/MutexIF.h
|
||||||
|
0x3905;MUX_MutexAlreadyLocked;;5;MUTEX_IF;fsfw/src/fsfw/ipc/MutexIF.h
|
||||||
|
0x3906;MUX_MutexNotFound;;6;MUTEX_IF;fsfw/src/fsfw/ipc/MutexIF.h
|
||||||
|
0x3907;MUX_MutexMaxLocks;;7;MUTEX_IF;fsfw/src/fsfw/ipc/MutexIF.h
|
||||||
|
0x3908;MUX_CurrThreadAlreadyOwnsMutex;;8;MUTEX_IF;fsfw/src/fsfw/ipc/MutexIF.h
|
||||||
|
0x3909;MUX_CurrThreadDoesNotOwnMutex;;9;MUTEX_IF;fsfw/src/fsfw/ipc/MutexIF.h
|
||||||
|
0x390a;MUX_MutexTimeout;;10;MUTEX_IF;fsfw/src/fsfw/ipc/MutexIF.h
|
||||||
|
0x390b;MUX_MutexInvalidId;;11;MUTEX_IF;fsfw/src/fsfw/ipc/MutexIF.h
|
||||||
|
0x390c;MUX_MutexDestroyedWhileWaiting;;12;MUTEX_IF;fsfw/src/fsfw/ipc/MutexIF.h
|
||||||
|
0x3a01;MQI_Empty;;1;MESSAGE_QUEUE_IF;fsfw/src/fsfw/ipc/MessageQueueIF.h
|
||||||
|
0x3a02;MQI_Full;No space left for more messages;2;MESSAGE_QUEUE_IF;fsfw/src/fsfw/ipc/MessageQueueIF.h
|
||||||
|
0x3a03;MQI_NoReplyPartner;Returned if a reply method was called without partner;3;MESSAGE_QUEUE_IF;fsfw/src/fsfw/ipc/MessageQueueIF.h
|
||||||
|
0x3a04;MQI_DestinationInvalid;Returned if the target destination is invalid.;4;MESSAGE_QUEUE_IF;fsfw/src/fsfw/ipc/MessageQueueIF.h
|
||||||
|
0x0f01;CM_UnknownCommand;;1;COMMAND_MESSAGE;fsfw/src/fsfw/ipc/CommandMessageIF.h
|
||||||
0x0e01;HM_InvalidMode;;1;HAS_MODES_IF;fsfw/src/fsfw/modes/HasModesIF.h
|
0x0e01;HM_InvalidMode;;1;HAS_MODES_IF;fsfw/src/fsfw/modes/HasModesIF.h
|
||||||
0x0e02;HM_TransNotAllowed;;2;HAS_MODES_IF;fsfw/src/fsfw/modes/HasModesIF.h
|
0x0e02;HM_TransNotAllowed;;2;HAS_MODES_IF;fsfw/src/fsfw/modes/HasModesIF.h
|
||||||
0x0e03;HM_InTransition;;3;HAS_MODES_IF;fsfw/src/fsfw/modes/HasModesIF.h
|
0x0e03;HM_InTransition;;3;HAS_MODES_IF;fsfw/src/fsfw/modes/HasModesIF.h
|
||||||
0x0e04;HM_InvalidSubmode;;4;HAS_MODES_IF;fsfw/src/fsfw/modes/HasModesIF.h
|
0x0e04;HM_InvalidSubmode;;4;HAS_MODES_IF;fsfw/src/fsfw/modes/HasModesIF.h
|
||||||
0x2d01;HPA_InvalidIdentifierId;;1;HAS_PARAMETERS_IF;fsfw/src/fsfw/parameters/HasParametersIF.h
|
0x0c02;MS_InvalidEntry;;2;MODE_STORE_IF;fsfw/src/fsfw/subsystem/modes/ModeStoreIF.h
|
||||||
0x2d02;HPA_InvalidDomainId;;2;HAS_PARAMETERS_IF;fsfw/src/fsfw/parameters/HasParametersIF.h
|
0x0c03;MS_TooManyElements;;3;MODE_STORE_IF;fsfw/src/fsfw/subsystem/modes/ModeStoreIF.h
|
||||||
0x2d03;HPA_InvalidValue;;3;HAS_PARAMETERS_IF;fsfw/src/fsfw/parameters/HasParametersIF.h
|
0x0c04;MS_CantStoreEmpty;;4;MODE_STORE_IF;fsfw/src/fsfw/subsystem/modes/ModeStoreIF.h
|
||||||
0x2d05;HPA_ReadOnly;;5;HAS_PARAMETERS_IF;fsfw/src/fsfw/parameters/HasParametersIF.h
|
0x0b01;SB_ChildNotFound;;1;SUBSYSTEM_BASE;fsfw/src/fsfw/subsystem/SubsystemBase.h
|
||||||
0x2c01;PAW_UnknownDatatype;;1;PARAMETER_WRAPPER;fsfw/src/fsfw/parameters/ParameterWrapper.h
|
0x0b02;SB_ChildInfoUpdated;;2;SUBSYSTEM_BASE;fsfw/src/fsfw/subsystem/SubsystemBase.h
|
||||||
0x2c02;PAW_DatatypeMissmatch;;2;PARAMETER_WRAPPER;fsfw/src/fsfw/parameters/ParameterWrapper.h
|
0x0b03;SB_ChildDoesntHaveModes;;3;SUBSYSTEM_BASE;fsfw/src/fsfw/subsystem/SubsystemBase.h
|
||||||
0x2c03;PAW_Readonly;;3;PARAMETER_WRAPPER;fsfw/src/fsfw/parameters/ParameterWrapper.h
|
0x0b04;SB_CouldNotInsertChild;;4;SUBSYSTEM_BASE;fsfw/src/fsfw/subsystem/SubsystemBase.h
|
||||||
0x2c04;PAW_TooBig;;4;PARAMETER_WRAPPER;fsfw/src/fsfw/parameters/ParameterWrapper.h
|
0x0b05;SB_TableContainsInvalidObjectId;;5;SUBSYSTEM_BASE;fsfw/src/fsfw/subsystem/SubsystemBase.h
|
||||||
0x2c05;PAW_SourceNotSet;;5;PARAMETER_WRAPPER;fsfw/src/fsfw/parameters/ParameterWrapper.h
|
0x0d01;SS_SequenceAlreadyExists;;1;SUBSYSTEM;fsfw/src/fsfw/subsystem/Subsystem.h
|
||||||
0x2c06;PAW_OutOfBounds;;6;PARAMETER_WRAPPER;fsfw/src/fsfw/parameters/ParameterWrapper.h
|
0x0d02;SS_TableAlreadyExists;;2;SUBSYSTEM;fsfw/src/fsfw/subsystem/Subsystem.h
|
||||||
0x2c07;PAW_NotSet;;7;PARAMETER_WRAPPER;fsfw/src/fsfw/parameters/ParameterWrapper.h
|
0x0d03;SS_TableDoesNotExist;;3;SUBSYSTEM;fsfw/src/fsfw/subsystem/Subsystem.h
|
||||||
0x2c08;PAW_ColumnOrRowsZero;;8;PARAMETER_WRAPPER;fsfw/src/fsfw/parameters/ParameterWrapper.h
|
0x0d04;SS_TableOrSequenceLengthInvalid;;4;SUBSYSTEM;fsfw/src/fsfw/subsystem/Subsystem.h
|
||||||
0x3101;CF_ObjectHasNoFunctions;;1;COMMANDS_ACTIONS_IF;fsfw/src/fsfw/action/CommandsActionsIF.h
|
0x0d05;SS_SequenceDoesNotExist;;5;SUBSYSTEM;fsfw/src/fsfw/subsystem/Subsystem.h
|
||||||
0x3102;CF_AlreadyCommanding;;2;COMMANDS_ACTIONS_IF;fsfw/src/fsfw/action/CommandsActionsIF.h
|
0x0d06;SS_TableContainsInvalidObjectId;;6;SUBSYSTEM;fsfw/src/fsfw/subsystem/Subsystem.h
|
||||||
0x3201;HF_IsBusy;;1;HAS_ACTIONS_IF;fsfw/src/fsfw/action/HasActionsIF.h
|
0x0d07;SS_FallbackSequenceDoesNotExist;;7;SUBSYSTEM;fsfw/src/fsfw/subsystem/Subsystem.h
|
||||||
0x3202;HF_InvalidParameters;;2;HAS_ACTIONS_IF;fsfw/src/fsfw/action/HasActionsIF.h
|
0x0d08;SS_NoTargetTable;;8;SUBSYSTEM;fsfw/src/fsfw/subsystem/Subsystem.h
|
||||||
0x3203;HF_ExecutionFinished;;3;HAS_ACTIONS_IF;fsfw/src/fsfw/action/HasActionsIF.h
|
0x0d09;SS_SequenceOrTableTooLong;;9;SUBSYSTEM;fsfw/src/fsfw/subsystem/Subsystem.h
|
||||||
0x3204;HF_InvalidActionId;;4;HAS_ACTIONS_IF;fsfw/src/fsfw/action/HasActionsIF.h
|
0x0d0b;SS_IsFallbackSequence;;11;SUBSYSTEM;fsfw/src/fsfw/subsystem/Subsystem.h
|
||||||
0x0201;OM_InsertionFailed;;1;OBJECT_MANAGER_IF;fsfw/src/fsfw/objectmanager/ObjectManagerIF.h
|
0x0d0c;SS_AccessDenied;;12;SUBSYSTEM;fsfw/src/fsfw/subsystem/Subsystem.h
|
||||||
0x0202;OM_NotFound;;2;OBJECT_MANAGER_IF;fsfw/src/fsfw/objectmanager/ObjectManagerIF.h
|
0x0d0e;SS_TableInUse;;14;SUBSYSTEM;fsfw/src/fsfw/subsystem/Subsystem.h
|
||||||
0x0203;OM_ChildInitFailed;;3;OBJECT_MANAGER_IF;fsfw/src/fsfw/objectmanager/ObjectManagerIF.h
|
0x0da1;SS_TargetTableNotReached;;161;SUBSYSTEM;fsfw/src/fsfw/subsystem/Subsystem.h
|
||||||
0x0204;OM_InternalErrReporterUninit;;4;OBJECT_MANAGER_IF;fsfw/src/fsfw/objectmanager/ObjectManagerIF.h
|
0x0da2;SS_TableCheckFailed;;162;SUBSYSTEM;fsfw/src/fsfw/subsystem/Subsystem.h
|
||||||
0x2500;FDI_YourFault;;0;HANDLES_FAILURES_IF;fsfw/src/fsfw/fdir/ConfirmsFailuresIF.h
|
0x2501;EV_ListenerNotFound;;1;EVENT_MANAGER_IF;fsfw/src/fsfw/events/EventManagerIF.h
|
||||||
0x2501;FDI_MyFault;;1;HANDLES_FAILURES_IF;fsfw/src/fsfw/fdir/ConfirmsFailuresIF.h
|
|
||||||
0x2502;FDI_ConfirmLater;;2;HANDLES_FAILURES_IF;fsfw/src/fsfw/fdir/ConfirmsFailuresIF.h
|
|
||||||
0x2101;TMF_Busy;;1;TM_STORE_FRONTEND_IF;fsfw/src/fsfw/tmstorage/TmStoreFrontendIF.h
|
|
||||||
0x2102;TMF_LastPacketFound;;2;TM_STORE_FRONTEND_IF;fsfw/src/fsfw/tmstorage/TmStoreFrontendIF.h
|
|
||||||
0x2103;TMF_StopFetch;;3;TM_STORE_FRONTEND_IF;fsfw/src/fsfw/tmstorage/TmStoreFrontendIF.h
|
|
||||||
0x2104;TMF_Timeout;;4;TM_STORE_FRONTEND_IF;fsfw/src/fsfw/tmstorage/TmStoreFrontendIF.h
|
|
||||||
0x2105;TMF_TmChannelFull;;5;TM_STORE_FRONTEND_IF;fsfw/src/fsfw/tmstorage/TmStoreFrontendIF.h
|
|
||||||
0x2106;TMF_NotStored;;6;TM_STORE_FRONTEND_IF;fsfw/src/fsfw/tmstorage/TmStoreFrontendIF.h
|
|
||||||
0x2107;TMF_AllDeleted;;7;TM_STORE_FRONTEND_IF;fsfw/src/fsfw/tmstorage/TmStoreFrontendIF.h
|
|
||||||
0x2108;TMF_InvalidData;;8;TM_STORE_FRONTEND_IF;fsfw/src/fsfw/tmstorage/TmStoreFrontendIF.h
|
|
||||||
0x2109;TMF_NotReady;;9;TM_STORE_FRONTEND_IF;fsfw/src/fsfw/tmstorage/TmStoreFrontendIF.h
|
|
||||||
0x2001;TMB_Busy;;1;TM_STORE_BACKEND_IF;fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
|
||||||
0x2002;TMB_Full;;2;TM_STORE_BACKEND_IF;fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
|
||||||
0x2003;TMB_Empty;;3;TM_STORE_BACKEND_IF;fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
|
||||||
0x2004;TMB_NullRequested;;4;TM_STORE_BACKEND_IF;fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
|
||||||
0x2005;TMB_TooLarge;;5;TM_STORE_BACKEND_IF;fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
|
||||||
0x2006;TMB_NotReady;;6;TM_STORE_BACKEND_IF;fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
|
||||||
0x2007;TMB_DumpError;;7;TM_STORE_BACKEND_IF;fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
|
||||||
0x2008;TMB_CrcError;;8;TM_STORE_BACKEND_IF;fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
|
||||||
0x2009;TMB_Timeout;;9;TM_STORE_BACKEND_IF;fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
|
||||||
0x200a;TMB_IdlePacketFound;;10;TM_STORE_BACKEND_IF;fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
|
||||||
0x200b;TMB_TelecommandFound;;11;TM_STORE_BACKEND_IF;fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
|
||||||
0x200c;TMB_NoPusATm;;12;TM_STORE_BACKEND_IF;fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
|
||||||
0x200d;TMB_TooSmall;;13;TM_STORE_BACKEND_IF;fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
|
||||||
0x200e;TMB_BlockNotFound;;14;TM_STORE_BACKEND_IF;fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
|
||||||
0x200f;TMB_InvalidRequest;;15;TM_STORE_BACKEND_IF;fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
|
||||||
0x1c01;TCD_PacketLost;;1;PACKET_DISTRIBUTION;fsfw/src/fsfw/tcdistribution/TcDistributor.h
|
|
||||||
0x1c02;TCD_DestinationNotFound;;2;PACKET_DISTRIBUTION;fsfw/src/fsfw/tcdistribution/TcDistributor.h
|
|
||||||
0x1c03;TCD_ServiceIdAlreadyExists;;3;PACKET_DISTRIBUTION;fsfw/src/fsfw/tcdistribution/TcDistributor.h
|
|
||||||
0x1b00;TCC_IllegalApid;;0;TC_PACKET_CHECK;fsfw/src/fsfw/tcdistribution/TcPacketCheckPUS.h
|
|
||||||
0x1b01;TCC_IncompletePacket;;1;TC_PACKET_CHECK;fsfw/src/fsfw/tcdistribution/TcPacketCheckPUS.h
|
|
||||||
0x1b02;TCC_IncorrectChecksum;;2;TC_PACKET_CHECK;fsfw/src/fsfw/tcdistribution/TcPacketCheckPUS.h
|
|
||||||
0x1b03;TCC_IllegalPacketType;;3;TC_PACKET_CHECK;fsfw/src/fsfw/tcdistribution/TcPacketCheckPUS.h
|
|
||||||
0x1b04;TCC_IllegalPacketSubtype;;4;TC_PACKET_CHECK;fsfw/src/fsfw/tcdistribution/TcPacketCheckPUS.h
|
|
||||||
0x1b05;TCC_IncorrectPrimaryHeader;;5;TC_PACKET_CHECK;fsfw/src/fsfw/tcdistribution/TcPacketCheckPUS.h
|
|
||||||
0x1b06;TCC_IncorrectSecondaryHeader;;6;TC_PACKET_CHECK;fsfw/src/fsfw/tcdistribution/TcPacketCheckPUS.h
|
|
||||||
0x04e1;RMP_CommandNoDescriptorsAvailable;;225;RMAP_CHANNEL;fsfw/src/fsfw/rmap/RMAP.h
|
0x04e1;RMP_CommandNoDescriptorsAvailable;;225;RMAP_CHANNEL;fsfw/src/fsfw/rmap/RMAP.h
|
||||||
0x04e2;RMP_CommandBufferFull;;226;RMAP_CHANNEL;fsfw/src/fsfw/rmap/RMAP.h
|
0x04e2;RMP_CommandBufferFull;;226;RMAP_CHANNEL;fsfw/src/fsfw/rmap/RMAP.h
|
||||||
0x04e3;RMP_CommandChannelOutOfRange;;227;RMAP_CHANNEL;fsfw/src/fsfw/rmap/RMAP.h
|
0x04e3;RMP_CommandChannelOutOfRange;;227;RMAP_CHANNEL;fsfw/src/fsfw/rmap/RMAP.h
|
||||||
@ -204,195 +193,191 @@ Full ID (hex); Name; Description; Unique ID; Subsytem Name; File Path
|
|||||||
0x040a;RMP_ReplyCommandNotImplementedOrNotAuthorised;;10;RMAP_CHANNEL;fsfw/src/fsfw/rmap/RMAP.h
|
0x040a;RMP_ReplyCommandNotImplementedOrNotAuthorised;;10;RMAP_CHANNEL;fsfw/src/fsfw/rmap/RMAP.h
|
||||||
0x040b;RMP_ReplyRmwDataLengthError;;11;RMAP_CHANNEL;fsfw/src/fsfw/rmap/RMAP.h
|
0x040b;RMP_ReplyRmwDataLengthError;;11;RMAP_CHANNEL;fsfw/src/fsfw/rmap/RMAP.h
|
||||||
0x040c;RMP_ReplyInvalidTargetLogicalAddress;;12;RMAP_CHANNEL;fsfw/src/fsfw/rmap/RMAP.h
|
0x040c;RMP_ReplyInvalidTargetLogicalAddress;;12;RMAP_CHANNEL;fsfw/src/fsfw/rmap/RMAP.h
|
||||||
0x2701;SM_DataTooLarge;;1;STORAGE_MANAGER_IF;fsfw/src/fsfw/storagemanager/StorageManagerIF.h
|
0x1401;SE_BufferTooShort;;1;SERIALIZE_IF;fsfw/src/fsfw/serialize/SerializeIF.h
|
||||||
0x2702;SM_DataStorageFull;;2;STORAGE_MANAGER_IF;fsfw/src/fsfw/storagemanager/StorageManagerIF.h
|
0x1402;SE_StreamTooShort;;2;SERIALIZE_IF;fsfw/src/fsfw/serialize/SerializeIF.h
|
||||||
0x2703;SM_IllegalStorageId;;3;STORAGE_MANAGER_IF;fsfw/src/fsfw/storagemanager/StorageManagerIF.h
|
0x1403;SE_TooManyElements;;3;SERIALIZE_IF;fsfw/src/fsfw/serialize/SerializeIF.h
|
||||||
0x2704;SM_DataDoesNotExist;;4;STORAGE_MANAGER_IF;fsfw/src/fsfw/storagemanager/StorageManagerIF.h
|
0x3da0;PVA_InvalidReadWriteMode;;160;POOL_VARIABLE_IF;fsfw/src/fsfw/datapool/PoolVariableIF.h
|
||||||
0x2705;SM_IllegalAddress;;5;STORAGE_MANAGER_IF;fsfw/src/fsfw/storagemanager/StorageManagerIF.h
|
0x3da1;PVA_InvalidPoolEntry;;161;POOL_VARIABLE_IF;fsfw/src/fsfw/datapool/PoolVariableIF.h
|
||||||
0x2706;SM_PoolTooLarge;;6;STORAGE_MANAGER_IF;fsfw/src/fsfw/storagemanager/StorageManagerIF.h
|
|
||||||
0x37a1;SGP4_InvalidEccentricity;;161;SGP4PROPAGATOR_CLASS;fsfw/src/fsfw/coordinates/Sgp4Propagator.h
|
|
||||||
0x37a2;SGP4_InvalidMeanMotion;;162;SGP4PROPAGATOR_CLASS;fsfw/src/fsfw/coordinates/Sgp4Propagator.h
|
|
||||||
0x37a3;SGP4_InvalidPerturbationElements;;163;SGP4PROPAGATOR_CLASS;fsfw/src/fsfw/coordinates/Sgp4Propagator.h
|
|
||||||
0x37a4;SGP4_InvalidSemiLatusRectum;;164;SGP4PROPAGATOR_CLASS;fsfw/src/fsfw/coordinates/Sgp4Propagator.h
|
|
||||||
0x37a5;SGP4_InvalidEpochElements;;165;SGP4PROPAGATOR_CLASS;fsfw/src/fsfw/coordinates/Sgp4Propagator.h
|
|
||||||
0x37a6;SGP4_SatelliteHasDecayed;;166;SGP4PROPAGATOR_CLASS;fsfw/src/fsfw/coordinates/Sgp4Propagator.h
|
|
||||||
0x37b1;SGP4_TleTooOld;;177;SGP4PROPAGATOR_CLASS;fsfw/src/fsfw/coordinates/Sgp4Propagator.h
|
|
||||||
0x37b2;SGP4_TleNotInitialized;;178;SGP4PROPAGATOR_CLASS;fsfw/src/fsfw/coordinates/Sgp4Propagator.h
|
|
||||||
0x2301;MT_TooDetailedRequest;;1;MATCH_TREE_CLASS;fsfw/src/fsfw/globalfunctions/matching/MatchTree.h
|
|
||||||
0x2302;MT_TooGeneralRequest;;2;MATCH_TREE_CLASS;fsfw/src/fsfw/globalfunctions/matching/MatchTree.h
|
|
||||||
0x2303;MT_NoMatch;;3;MATCH_TREE_CLASS;fsfw/src/fsfw/globalfunctions/matching/MatchTree.h
|
|
||||||
0x2304;MT_Full;;4;MATCH_TREE_CLASS;fsfw/src/fsfw/globalfunctions/matching/MatchTree.h
|
|
||||||
0x2305;MT_NewNodeCreated;;5;MATCH_TREE_CLASS;fsfw/src/fsfw/globalfunctions/matching/MatchTree.h
|
|
||||||
0x3e01;DLEE_StreamTooShort;;1;DLE_ENCODER;fsfw/src/fsfw/globalfunctions/DleEncoder.h
|
|
||||||
0x3e02;DLEE_DecodingError;;2;DLE_ENCODER;fsfw/src/fsfw/globalfunctions/DleEncoder.h
|
|
||||||
0x2e01;ASC_TooLongForTargetType;;1;ASCII_CONVERTER;fsfw/src/fsfw/globalfunctions/AsciiConverter.h
|
|
||||||
0x2e02;ASC_InvalidCharacters;;2;ASCII_CONVERTER;fsfw/src/fsfw/globalfunctions/AsciiConverter.h
|
|
||||||
0x2e03;ASC_BufferTooSmall;;3;ASCII_CONVERTER;fsfw/src/fsfw/globalfunctions/AsciiConverter.h
|
|
||||||
0x0f01;CM_UnknownCommand;;1;COMMAND_MESSAGE;fsfw/src/fsfw/ipc/CommandMessageIF.h
|
|
||||||
0x3901;MQI_Empty;;1;MESSAGE_QUEUE_IF;fsfw/src/fsfw/ipc/MessageQueueIF.h
|
|
||||||
0x3902;MQI_Full;No space left for more messages;2;MESSAGE_QUEUE_IF;fsfw/src/fsfw/ipc/MessageQueueIF.h
|
|
||||||
0x3903;MQI_NoReplyPartner;Returned if a reply method was called without partner;3;MESSAGE_QUEUE_IF;fsfw/src/fsfw/ipc/MessageQueueIF.h
|
|
||||||
0x3904;MQI_DestinationInvalid;Returned if the target destination is invalid.;4;MESSAGE_QUEUE_IF;fsfw/src/fsfw/ipc/MessageQueueIF.h
|
|
||||||
0x3801;MUX_NotEnoughResources;;1;MUTEX_IF;fsfw/src/fsfw/ipc/MutexIF.h
|
|
||||||
0x3802;MUX_InsufficientMemory;;2;MUTEX_IF;fsfw/src/fsfw/ipc/MutexIF.h
|
|
||||||
0x3803;MUX_NoPrivilege;;3;MUTEX_IF;fsfw/src/fsfw/ipc/MutexIF.h
|
|
||||||
0x3804;MUX_WrongAttributeSetting;;4;MUTEX_IF;fsfw/src/fsfw/ipc/MutexIF.h
|
|
||||||
0x3805;MUX_MutexAlreadyLocked;;5;MUTEX_IF;fsfw/src/fsfw/ipc/MutexIF.h
|
|
||||||
0x3806;MUX_MutexNotFound;;6;MUTEX_IF;fsfw/src/fsfw/ipc/MutexIF.h
|
|
||||||
0x3807;MUX_MutexMaxLocks;;7;MUTEX_IF;fsfw/src/fsfw/ipc/MutexIF.h
|
|
||||||
0x3808;MUX_CurrThreadAlreadyOwnsMutex;;8;MUTEX_IF;fsfw/src/fsfw/ipc/MutexIF.h
|
|
||||||
0x3809;MUX_CurrThreadDoesNotOwnMutex;;9;MUTEX_IF;fsfw/src/fsfw/ipc/MutexIF.h
|
|
||||||
0x380a;MUX_MutexTimeout;;10;MUTEX_IF;fsfw/src/fsfw/ipc/MutexIF.h
|
|
||||||
0x380b;MUX_MutexInvalidId;;11;MUTEX_IF;fsfw/src/fsfw/ipc/MutexIF.h
|
|
||||||
0x380c;MUX_MutexDestroyedWhileWaiting;;12;MUTEX_IF;fsfw/src/fsfw/ipc/MutexIF.h
|
|
||||||
0x3a01;SPH_SemaphoreTimeout;;1;SEMAPHORE_IF;fsfw/src/fsfw/tasks/SemaphoreIF.h
|
|
||||||
0x3a02;SPH_SemaphoreNotOwned;;2;SEMAPHORE_IF;fsfw/src/fsfw/tasks/SemaphoreIF.h
|
|
||||||
0x3a03;SPH_SemaphoreInvalid;;3;SEMAPHORE_IF;fsfw/src/fsfw/tasks/SemaphoreIF.h
|
|
||||||
0x3501;CFDP_InvalidTlvType;;1;CFDP;fsfw/src/fsfw/cfdp/definitions.h
|
|
||||||
0x3502;CFDP_InvalidDirectiveFields;;2;CFDP;fsfw/src/fsfw/cfdp/definitions.h
|
|
||||||
0x3503;CFDP_InvalidPduDatafieldLen;;3;CFDP;fsfw/src/fsfw/cfdp/definitions.h
|
|
||||||
0x3504;CFDP_InvalidAckDirectiveFields;;4;CFDP;fsfw/src/fsfw/cfdp/definitions.h
|
|
||||||
0x3505;CFDP_MetadataCantParseOptions;;5;CFDP;fsfw/src/fsfw/cfdp/definitions.h
|
|
||||||
0x3506;CFDP_FinishedCantParseFsResponses;;6;CFDP;fsfw/src/fsfw/cfdp/definitions.h
|
|
||||||
0x3508;CFDP_FilestoreRequiresSecondFile;;8;CFDP;fsfw/src/fsfw/cfdp/definitions.h
|
|
||||||
0x3509;CFDP_FilestoreResponseCantParseFsMessage;;9;CFDP;fsfw/src/fsfw/cfdp/definitions.h
|
|
||||||
0x2801;TC_InvalidTargetState;;1;THERMAL_COMPONENT_IF;fsfw/src/fsfw/thermal/ThermalComponentIF.h
|
|
||||||
0x28f1;TC_AboveOperationalLimit;;241;THERMAL_COMPONENT_IF;fsfw/src/fsfw/thermal/ThermalComponentIF.h
|
|
||||||
0x28f2;TC_BelowOperationalLimit;;242;THERMAL_COMPONENT_IF;fsfw/src/fsfw/thermal/ThermalComponentIF.h
|
|
||||||
0x0c02;MS_InvalidEntry;;2;MODE_STORE_IF;fsfw/src/fsfw/subsystem/modes/ModeStoreIF.h
|
|
||||||
0x0c03;MS_TooManyElements;;3;MODE_STORE_IF;fsfw/src/fsfw/subsystem/modes/ModeStoreIF.h
|
|
||||||
0x0c04;MS_CantStoreEmpty;;4;MODE_STORE_IF;fsfw/src/fsfw/subsystem/modes/ModeStoreIF.h
|
|
||||||
0x0d01;SS_SequenceAlreadyExists;;1;SUBSYSTEM;fsfw/src/fsfw/subsystem/Subsystem.h
|
|
||||||
0x0d02;SS_TableAlreadyExists;;2;SUBSYSTEM;fsfw/src/fsfw/subsystem/Subsystem.h
|
|
||||||
0x0d03;SS_TableDoesNotExist;;3;SUBSYSTEM;fsfw/src/fsfw/subsystem/Subsystem.h
|
|
||||||
0x0d04;SS_TableOrSequenceLengthInvalid;;4;SUBSYSTEM;fsfw/src/fsfw/subsystem/Subsystem.h
|
|
||||||
0x0d05;SS_SequenceDoesNotExist;;5;SUBSYSTEM;fsfw/src/fsfw/subsystem/Subsystem.h
|
|
||||||
0x0d06;SS_TableContainsInvalidObjectId;;6;SUBSYSTEM;fsfw/src/fsfw/subsystem/Subsystem.h
|
|
||||||
0x0d07;SS_FallbackSequenceDoesNotExist;;7;SUBSYSTEM;fsfw/src/fsfw/subsystem/Subsystem.h
|
|
||||||
0x0d08;SS_NoTargetTable;;8;SUBSYSTEM;fsfw/src/fsfw/subsystem/Subsystem.h
|
|
||||||
0x0d09;SS_SequenceOrTableTooLong;;9;SUBSYSTEM;fsfw/src/fsfw/subsystem/Subsystem.h
|
|
||||||
0x0d0b;SS_IsFallbackSequence;;11;SUBSYSTEM;fsfw/src/fsfw/subsystem/Subsystem.h
|
|
||||||
0x0d0c;SS_AccessDenied;;12;SUBSYSTEM;fsfw/src/fsfw/subsystem/Subsystem.h
|
|
||||||
0x0d0e;SS_TableInUse;;14;SUBSYSTEM;fsfw/src/fsfw/subsystem/Subsystem.h
|
|
||||||
0x0da1;SS_TargetTableNotReached;;161;SUBSYSTEM;fsfw/src/fsfw/subsystem/Subsystem.h
|
|
||||||
0x0da2;SS_TableCheckFailed;;162;SUBSYSTEM;fsfw/src/fsfw/subsystem/Subsystem.h
|
|
||||||
0x0b01;SB_ChildNotFound;;1;SUBSYSTEM_BASE;fsfw/src/fsfw/subsystem/SubsystemBase.h
|
|
||||||
0x0b02;SB_ChildInfoUpdated;;2;SUBSYSTEM_BASE;fsfw/src/fsfw/subsystem/SubsystemBase.h
|
|
||||||
0x0b03;SB_ChildDoesntHaveModes;;3;SUBSYSTEM_BASE;fsfw/src/fsfw/subsystem/SubsystemBase.h
|
|
||||||
0x0b04;SB_CouldNotInsertChild;;4;SUBSYSTEM_BASE;fsfw/src/fsfw/subsystem/SubsystemBase.h
|
|
||||||
0x0b05;SB_TableContainsInvalidObjectId;;5;SUBSYSTEM_BASE;fsfw/src/fsfw/subsystem/SubsystemBase.h
|
|
||||||
0x3d00;HKM_QueueOrDestinationInvalid;;0;HOUSEKEEPING_MANAGER;fsfw/src/fsfw/datapoollocal/LocalDataPoolManager.h
|
|
||||||
0x3d01;HKM_WrongHkPacketType;;1;HOUSEKEEPING_MANAGER;fsfw/src/fsfw/datapoollocal/LocalDataPoolManager.h
|
|
||||||
0x3d02;HKM_ReportingStatusUnchanged;;2;HOUSEKEEPING_MANAGER;fsfw/src/fsfw/datapoollocal/LocalDataPoolManager.h
|
|
||||||
0x3d03;HKM_PeriodicHelperInvalid;;3;HOUSEKEEPING_MANAGER;fsfw/src/fsfw/datapoollocal/LocalDataPoolManager.h
|
|
||||||
0x3d04;HKM_PoolobjectNotFound;;4;HOUSEKEEPING_MANAGER;fsfw/src/fsfw/datapoollocal/LocalDataPoolManager.h
|
|
||||||
0x3d05;HKM_DatasetNotFound;;5;HOUSEKEEPING_MANAGER;fsfw/src/fsfw/datapoollocal/LocalDataPoolManager.h
|
|
||||||
0x3b00;LPIF_PoolEntryNotFound;;0;LOCAL_POOL_OWNER_IF;fsfw/src/fsfw/datapoollocal/localPoolDefinitions.h
|
|
||||||
0x3b01;LPIF_PoolEntryTypeConflict;;1;LOCAL_POOL_OWNER_IF;fsfw/src/fsfw/datapoollocal/localPoolDefinitions.h
|
|
||||||
0x3ca0;PVA_InvalidReadWriteMode;;160;POOL_VARIABLE_IF;fsfw/src/fsfw/datapool/PoolVariableIF.h
|
|
||||||
0x3ca1;PVA_InvalidPoolEntry;;161;POOL_VARIABLE_IF;fsfw/src/fsfw/datapool/PoolVariableIF.h
|
|
||||||
0x0801;DPS_InvalidParameterDefinition;;1;DATA_SET_CLASS;fsfw/src/fsfw/datapool/DataSetIF.h
|
0x0801;DPS_InvalidParameterDefinition;;1;DATA_SET_CLASS;fsfw/src/fsfw/datapool/DataSetIF.h
|
||||||
0x0802;DPS_SetWasAlreadyRead;;2;DATA_SET_CLASS;fsfw/src/fsfw/datapool/DataSetIF.h
|
0x0802;DPS_SetWasAlreadyRead;;2;DATA_SET_CLASS;fsfw/src/fsfw/datapool/DataSetIF.h
|
||||||
0x0803;DPS_CommitingWithoutReading;;3;DATA_SET_CLASS;fsfw/src/fsfw/datapool/DataSetIF.h
|
0x0803;DPS_CommitingWithoutReading;;3;DATA_SET_CLASS;fsfw/src/fsfw/datapool/DataSetIF.h
|
||||||
0x0804;DPS_DataSetUninitialised;;4;DATA_SET_CLASS;fsfw/src/fsfw/datapool/DataSetIF.h
|
0x0804;DPS_DataSetUninitialised;;4;DATA_SET_CLASS;fsfw/src/fsfw/datapool/DataSetIF.h
|
||||||
0x0805;DPS_DataSetFull;;5;DATA_SET_CLASS;fsfw/src/fsfw/datapool/DataSetIF.h
|
0x0805;DPS_DataSetFull;;5;DATA_SET_CLASS;fsfw/src/fsfw/datapool/DataSetIF.h
|
||||||
0x0806;DPS_PoolVarNull;;6;DATA_SET_CLASS;fsfw/src/fsfw/datapool/DataSetIF.h
|
0x0806;DPS_PoolVarNull;;6;DATA_SET_CLASS;fsfw/src/fsfw/datapool/DataSetIF.h
|
||||||
0x1000;TIM_UnsupportedTimeFormat;;0;CCSDS_TIME_HELPER_CLASS;fsfw/src/fsfw/timemanager/CCSDSTime.h
|
0x1c01;TCD_PacketLost;;1;PACKET_DISTRIBUTION;fsfw/src/fsfw/tcdistribution/TcDistributorBase.h
|
||||||
0x1001;TIM_NotEnoughInformationForTargetFormat;;1;CCSDS_TIME_HELPER_CLASS;fsfw/src/fsfw/timemanager/CCSDSTime.h
|
0x1c02;TCD_DestinationNotFound;;2;PACKET_DISTRIBUTION;fsfw/src/fsfw/tcdistribution/TcDistributorBase.h
|
||||||
0x1002;TIM_LengthMismatch;;2;CCSDS_TIME_HELPER_CLASS;fsfw/src/fsfw/timemanager/CCSDSTime.h
|
0x1c03;TCD_ServiceIdAlreadyExists;;3;PACKET_DISTRIBUTION;fsfw/src/fsfw/tcdistribution/TcDistributorBase.h
|
||||||
0x1003;TIM_InvalidTimeFormat;;3;CCSDS_TIME_HELPER_CLASS;fsfw/src/fsfw/timemanager/CCSDSTime.h
|
0x1b00;TCC_NoDestinationFound;;0;TMTC_DISTRIBUTION;fsfw/src/fsfw/tcdistribution/definitions.h
|
||||||
0x1004;TIM_InvalidDayOfYear;;4;CCSDS_TIME_HELPER_CLASS;fsfw/src/fsfw/timemanager/CCSDSTime.h
|
0x1b01;TCC_InvalidCcsdsVersion;;1;TMTC_DISTRIBUTION;fsfw/src/fsfw/tcdistribution/definitions.h
|
||||||
0x1005;TIM_TimeDoesNotFitFormat;;5;CCSDS_TIME_HELPER_CLASS;fsfw/src/fsfw/timemanager/CCSDSTime.h
|
0x1b02;TCC_InvalidApid;;2;TMTC_DISTRIBUTION;fsfw/src/fsfw/tcdistribution/definitions.h
|
||||||
0x3601;TSI_BadTimestamp;;1;TIME_STAMPER_IF;fsfw/src/fsfw/timemanager/TimeStamperIF.h
|
0x1b03;TCC_InvalidPacketType;;3;TMTC_DISTRIBUTION;fsfw/src/fsfw/tcdistribution/definitions.h
|
||||||
0x1d01;PUS_ActivityStarted;;1;ACCEPTS_TELECOMMANDS_IF;fsfw/src/fsfw/tmtcservices/AcceptsTelecommandsIF.h
|
0x1b04;TCC_InvalidSecHeaderField;;4;TMTC_DISTRIBUTION;fsfw/src/fsfw/tcdistribution/definitions.h
|
||||||
0x1d02;PUS_InvalidSubservice;;2;ACCEPTS_TELECOMMANDS_IF;fsfw/src/fsfw/tmtcservices/AcceptsTelecommandsIF.h
|
0x1b05;TCC_IncorrectPrimaryHeader;;5;TMTC_DISTRIBUTION;fsfw/src/fsfw/tcdistribution/definitions.h
|
||||||
0x1d03;PUS_IllegalApplicationData;;3;ACCEPTS_TELECOMMANDS_IF;fsfw/src/fsfw/tmtcservices/AcceptsTelecommandsIF.h
|
0x1b07;TCC_IncompletePacket;;7;TMTC_DISTRIBUTION;fsfw/src/fsfw/tcdistribution/definitions.h
|
||||||
0x1d04;PUS_SendTmFailed;;4;ACCEPTS_TELECOMMANDS_IF;fsfw/src/fsfw/tmtcservices/AcceptsTelecommandsIF.h
|
0x1b08;TCC_InvalidPusVersion;;8;TMTC_DISTRIBUTION;fsfw/src/fsfw/tcdistribution/definitions.h
|
||||||
0x1d05;PUS_Timeout;;5;ACCEPTS_TELECOMMANDS_IF;fsfw/src/fsfw/tmtcservices/AcceptsTelecommandsIF.h
|
0x1b09;TCC_IncorrectChecksum;;9;TMTC_DISTRIBUTION;fsfw/src/fsfw/tcdistribution/definitions.h
|
||||||
0x4b00;SPPA_NoPacketFound;;0;SPACE_PACKET_PARSER;fsfw/src/fsfw/tmtcservices/SpacePacketParser.h
|
0x1b0a;TCC_IllegalPacketSubtype;;10;TMTC_DISTRIBUTION;fsfw/src/fsfw/tcdistribution/definitions.h
|
||||||
0x4b01;SPPA_SplitPacket;;1;SPACE_PACKET_PARSER;fsfw/src/fsfw/tmtcservices/SpacePacketParser.h
|
0x1b0b;TCC_IncorrectSecondaryHeader;;11;TMTC_DISTRIBUTION;fsfw/src/fsfw/tcdistribution/definitions.h
|
||||||
0x1f01;CSB_ExecutionComplete;;1;COMMAND_SERVICE_BASE;fsfw/src/fsfw/tmtcservices/CommandingServiceBase.h
|
0x3001;POS_InPowerTransition;;1;POWER_SWITCHER;fsfw/src/fsfw/power/PowerSwitcher.h
|
||||||
0x1f02;CSB_NoStepMessage;;2;COMMAND_SERVICE_BASE;fsfw/src/fsfw/tmtcservices/CommandingServiceBase.h
|
0x3002;POS_SwitchStateMismatch;;2;POWER_SWITCHER;fsfw/src/fsfw/power/PowerSwitcher.h
|
||||||
0x1f03;CSB_ObjectBusy;;3;COMMAND_SERVICE_BASE;fsfw/src/fsfw/tmtcservices/CommandingServiceBase.h
|
|
||||||
0x1f04;CSB_Busy;;4;COMMAND_SERVICE_BASE;fsfw/src/fsfw/tmtcservices/CommandingServiceBase.h
|
|
||||||
0x1f05;CSB_InvalidTc;;5;COMMAND_SERVICE_BASE;fsfw/src/fsfw/tmtcservices/CommandingServiceBase.h
|
|
||||||
0x1f06;CSB_InvalidObject;;6;COMMAND_SERVICE_BASE;fsfw/src/fsfw/tmtcservices/CommandingServiceBase.h
|
|
||||||
0x1f07;CSB_InvalidReply;;7;COMMAND_SERVICE_BASE;fsfw/src/fsfw/tmtcservices/CommandingServiceBase.h
|
|
||||||
0x1101;AL_Full;;1;ARRAY_LIST;fsfw/src/fsfw/container/ArrayList.h
|
|
||||||
0x1801;FF_Full;;1;FIFO_CLASS;fsfw/src/fsfw/container/FIFOBase.h
|
|
||||||
0x1802;FF_Empty;;2;FIFO_CLASS;fsfw/src/fsfw/container/FIFOBase.h
|
|
||||||
0x1601;FMM_MapFull;;1;FIXED_MULTIMAP;fsfw/src/fsfw/container/FixedOrderedMultimap.h
|
|
||||||
0x1602;FMM_KeyDoesNotExist;;2;FIXED_MULTIMAP;fsfw/src/fsfw/container/FixedOrderedMultimap.h
|
|
||||||
0x1501;FM_KeyAlreadyExists;;1;FIXED_MAP;fsfw/src/fsfw/container/FixedMap.h
|
|
||||||
0x1502;FM_MapFull;;2;FIXED_MAP;fsfw/src/fsfw/container/FixedMap.h
|
|
||||||
0x1503;FM_KeyDoesNotExist;;3;FIXED_MAP;fsfw/src/fsfw/container/FixedMap.h
|
|
||||||
0x2401;EV_ListenerNotFound;;1;EVENT_MANAGER_IF;fsfw/src/fsfw/events/EventManagerIF.h
|
|
||||||
0x1701;HHI_ObjectNotHealthy;;1;HAS_HEALTH_IF;fsfw/src/fsfw/health/HasHealthIF.h
|
|
||||||
0x1702;HHI_InvalidHealthState;;2;HAS_HEALTH_IF;fsfw/src/fsfw/health/HasHealthIF.h
|
|
||||||
0x1703;HHI_IsExternallyControlled;;3;HAS_HEALTH_IF;fsfw/src/fsfw/health/HasHealthIF.h
|
|
||||||
0x2f01;POS_InPowerTransition;;1;POWER_SWITCHER;fsfw/src/fsfw/power/PowerSwitcher.h
|
|
||||||
0x2f02;POS_SwitchStateMismatch;;2;POWER_SWITCHER;fsfw/src/fsfw/power/PowerSwitcher.h
|
|
||||||
0x0501;PS_SwitchOn;;1;POWER_SWITCH_IF;fsfw/src/fsfw/power/PowerSwitchIF.h
|
0x0501;PS_SwitchOn;;1;POWER_SWITCH_IF;fsfw/src/fsfw/power/PowerSwitchIF.h
|
||||||
0x0500;PS_SwitchOff;;0;POWER_SWITCH_IF;fsfw/src/fsfw/power/PowerSwitchIF.h
|
0x0500;PS_SwitchOff;;0;POWER_SWITCH_IF;fsfw/src/fsfw/power/PowerSwitchIF.h
|
||||||
0x0502;PS_SwitchTimeout;;2;POWER_SWITCH_IF;fsfw/src/fsfw/power/PowerSwitchIF.h
|
0x0502;PS_SwitchTimeout;;2;POWER_SWITCH_IF;fsfw/src/fsfw/power/PowerSwitchIF.h
|
||||||
0x0503;PS_FuseOn;;3;POWER_SWITCH_IF;fsfw/src/fsfw/power/PowerSwitchIF.h
|
0x0503;PS_FuseOn;;3;POWER_SWITCH_IF;fsfw/src/fsfw/power/PowerSwitchIF.h
|
||||||
0x0504;PS_FuseOff;;4;POWER_SWITCH_IF;fsfw/src/fsfw/power/PowerSwitchIF.h
|
0x0504;PS_FuseOff;;4;POWER_SWITCH_IF;fsfw/src/fsfw/power/PowerSwitchIF.h
|
||||||
|
0x3b00;SPH_ConnBroken;;0;SEMAPHORE_IF;fsfw/src/fsfw/osal/common/TcpTmTcServer.h
|
||||||
|
0x2a01;IEC_NoConfigurationTable;;1;INTERNAL_ERROR_CODES;fsfw/src/fsfw/osal/InternalErrorCodes.h
|
||||||
|
0x2a02;IEC_NoCpuTable;;2;INTERNAL_ERROR_CODES;fsfw/src/fsfw/osal/InternalErrorCodes.h
|
||||||
|
0x2a03;IEC_InvalidWorkspaceAddress;;3;INTERNAL_ERROR_CODES;fsfw/src/fsfw/osal/InternalErrorCodes.h
|
||||||
|
0x2a04;IEC_TooLittleWorkspace;;4;INTERNAL_ERROR_CODES;fsfw/src/fsfw/osal/InternalErrorCodes.h
|
||||||
|
0x2a05;IEC_WorkspaceAllocation;;5;INTERNAL_ERROR_CODES;fsfw/src/fsfw/osal/InternalErrorCodes.h
|
||||||
|
0x2a06;IEC_InterruptStackTooSmall;;6;INTERNAL_ERROR_CODES;fsfw/src/fsfw/osal/InternalErrorCodes.h
|
||||||
|
0x2a07;IEC_ThreadExitted;;7;INTERNAL_ERROR_CODES;fsfw/src/fsfw/osal/InternalErrorCodes.h
|
||||||
|
0x2a08;IEC_InconsistentMpInformation;;8;INTERNAL_ERROR_CODES;fsfw/src/fsfw/osal/InternalErrorCodes.h
|
||||||
|
0x2a09;IEC_InvalidNode;;9;INTERNAL_ERROR_CODES;fsfw/src/fsfw/osal/InternalErrorCodes.h
|
||||||
|
0x2a0a;IEC_NoMpci;;10;INTERNAL_ERROR_CODES;fsfw/src/fsfw/osal/InternalErrorCodes.h
|
||||||
|
0x2a0b;IEC_BadPacket;;11;INTERNAL_ERROR_CODES;fsfw/src/fsfw/osal/InternalErrorCodes.h
|
||||||
|
0x2a0c;IEC_OutOfPackets;;12;INTERNAL_ERROR_CODES;fsfw/src/fsfw/osal/InternalErrorCodes.h
|
||||||
|
0x2a0d;IEC_OutOfGlobalObjects;;13;INTERNAL_ERROR_CODES;fsfw/src/fsfw/osal/InternalErrorCodes.h
|
||||||
|
0x2a0e;IEC_OutOfProxies;;14;INTERNAL_ERROR_CODES;fsfw/src/fsfw/osal/InternalErrorCodes.h
|
||||||
|
0x2a0f;IEC_InvalidGlobalId;;15;INTERNAL_ERROR_CODES;fsfw/src/fsfw/osal/InternalErrorCodes.h
|
||||||
|
0x2a10;IEC_BadStackHook;;16;INTERNAL_ERROR_CODES;fsfw/src/fsfw/osal/InternalErrorCodes.h
|
||||||
|
0x2a11;IEC_BadAttributes;;17;INTERNAL_ERROR_CODES;fsfw/src/fsfw/osal/InternalErrorCodes.h
|
||||||
|
0x2a12;IEC_ImplementationKeyCreateInconsistency;;18;INTERNAL_ERROR_CODES;fsfw/src/fsfw/osal/InternalErrorCodes.h
|
||||||
|
0x2a13;IEC_ImplementationBlockingOperationCancel;;19;INTERNAL_ERROR_CODES;fsfw/src/fsfw/osal/InternalErrorCodes.h
|
||||||
|
0x2a14;IEC_MutexObtainFromBadState;;20;INTERNAL_ERROR_CODES;fsfw/src/fsfw/osal/InternalErrorCodes.h
|
||||||
|
0x2a15;IEC_UnlimitedAndMaximumIs0;;21;INTERNAL_ERROR_CODES;fsfw/src/fsfw/osal/InternalErrorCodes.h
|
||||||
|
0x2600;FDI_YourFault;;0;HANDLES_FAILURES_IF;fsfw/src/fsfw/fdir/ConfirmsFailuresIF.h
|
||||||
|
0x2601;FDI_MyFault;;1;HANDLES_FAILURES_IF;fsfw/src/fsfw/fdir/ConfirmsFailuresIF.h
|
||||||
|
0x2602;FDI_ConfirmLater;;2;HANDLES_FAILURES_IF;fsfw/src/fsfw/fdir/ConfirmsFailuresIF.h
|
||||||
|
0x1e00;PUS_InvalidPusVersion;;0;PUS_IF;fsfw/src/fsfw/tmtcpacket/pus/PusIF.h
|
||||||
|
0x1e01;PUS_InvalidCrc16;;1;PUS_IF;fsfw/src/fsfw/tmtcpacket/pus/PusIF.h
|
||||||
|
0x0201;OM_InsertionFailed;;1;OBJECT_MANAGER_IF;fsfw/src/fsfw/objectmanager/ObjectManagerIF.h
|
||||||
|
0x0202;OM_NotFound;;2;OBJECT_MANAGER_IF;fsfw/src/fsfw/objectmanager/ObjectManagerIF.h
|
||||||
|
0x0203;OM_ChildInitFailed;;3;OBJECT_MANAGER_IF;fsfw/src/fsfw/objectmanager/ObjectManagerIF.h
|
||||||
|
0x0204;OM_InternalErrReporterUninit;;4;OBJECT_MANAGER_IF;fsfw/src/fsfw/objectmanager/ObjectManagerIF.h
|
||||||
|
0x2201;TMF_Busy;;1;TM_STORE_FRONTEND_IF;fsfw/src/fsfw/tmstorage/TmStoreFrontendIF.h
|
||||||
|
0x2202;TMF_LastPacketFound;;2;TM_STORE_FRONTEND_IF;fsfw/src/fsfw/tmstorage/TmStoreFrontendIF.h
|
||||||
|
0x2203;TMF_StopFetch;;3;TM_STORE_FRONTEND_IF;fsfw/src/fsfw/tmstorage/TmStoreFrontendIF.h
|
||||||
|
0x2204;TMF_Timeout;;4;TM_STORE_FRONTEND_IF;fsfw/src/fsfw/tmstorage/TmStoreFrontendIF.h
|
||||||
|
0x2205;TMF_TmChannelFull;;5;TM_STORE_FRONTEND_IF;fsfw/src/fsfw/tmstorage/TmStoreFrontendIF.h
|
||||||
|
0x2206;TMF_NotStored;;6;TM_STORE_FRONTEND_IF;fsfw/src/fsfw/tmstorage/TmStoreFrontendIF.h
|
||||||
|
0x2207;TMF_AllDeleted;;7;TM_STORE_FRONTEND_IF;fsfw/src/fsfw/tmstorage/TmStoreFrontendIF.h
|
||||||
|
0x2208;TMF_InvalidData;;8;TM_STORE_FRONTEND_IF;fsfw/src/fsfw/tmstorage/TmStoreFrontendIF.h
|
||||||
|
0x2209;TMF_NotReady;;9;TM_STORE_FRONTEND_IF;fsfw/src/fsfw/tmstorage/TmStoreFrontendIF.h
|
||||||
|
0x2101;TMB_Busy;;1;TM_STORE_BACKEND_IF;fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
||||||
|
0x2102;TMB_Full;;2;TM_STORE_BACKEND_IF;fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
||||||
|
0x2103;TMB_Empty;;3;TM_STORE_BACKEND_IF;fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
||||||
|
0x2104;TMB_NullRequested;;4;TM_STORE_BACKEND_IF;fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
||||||
|
0x2105;TMB_TooLarge;;5;TM_STORE_BACKEND_IF;fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
||||||
|
0x2106;TMB_NotReady;;6;TM_STORE_BACKEND_IF;fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
||||||
|
0x2107;TMB_DumpError;;7;TM_STORE_BACKEND_IF;fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
||||||
|
0x2108;TMB_CrcError;;8;TM_STORE_BACKEND_IF;fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
||||||
|
0x2109;TMB_Timeout;;9;TM_STORE_BACKEND_IF;fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
||||||
|
0x210a;TMB_IdlePacketFound;;10;TM_STORE_BACKEND_IF;fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
||||||
|
0x210b;TMB_TelecommandFound;;11;TM_STORE_BACKEND_IF;fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
||||||
|
0x210c;TMB_NoPusATm;;12;TM_STORE_BACKEND_IF;fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
||||||
|
0x210d;TMB_TooSmall;;13;TM_STORE_BACKEND_IF;fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
||||||
|
0x210e;TMB_BlockNotFound;;14;TM_STORE_BACKEND_IF;fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
||||||
|
0x210f;TMB_InvalidRequest;;15;TM_STORE_BACKEND_IF;fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
||||||
|
0x2d01;PAW_UnknownDatatype;;1;PARAMETER_WRAPPER;fsfw/src/fsfw/parameters/ParameterWrapper.h
|
||||||
|
0x2d02;PAW_DatatypeMissmatch;;2;PARAMETER_WRAPPER;fsfw/src/fsfw/parameters/ParameterWrapper.h
|
||||||
|
0x2d03;PAW_Readonly;;3;PARAMETER_WRAPPER;fsfw/src/fsfw/parameters/ParameterWrapper.h
|
||||||
|
0x2d04;PAW_TooBig;;4;PARAMETER_WRAPPER;fsfw/src/fsfw/parameters/ParameterWrapper.h
|
||||||
|
0x2d05;PAW_SourceNotSet;;5;PARAMETER_WRAPPER;fsfw/src/fsfw/parameters/ParameterWrapper.h
|
||||||
|
0x2d06;PAW_OutOfBounds;;6;PARAMETER_WRAPPER;fsfw/src/fsfw/parameters/ParameterWrapper.h
|
||||||
|
0x2d07;PAW_NotSet;;7;PARAMETER_WRAPPER;fsfw/src/fsfw/parameters/ParameterWrapper.h
|
||||||
|
0x2d08;PAW_ColumnOrRowsZero;;8;PARAMETER_WRAPPER;fsfw/src/fsfw/parameters/ParameterWrapper.h
|
||||||
|
0x2e01;HPA_InvalidIdentifierId;;1;HAS_PARAMETERS_IF;fsfw/src/fsfw/parameters/HasParametersIF.h
|
||||||
|
0x2e02;HPA_InvalidDomainId;;2;HAS_PARAMETERS_IF;fsfw/src/fsfw/parameters/HasParametersIF.h
|
||||||
|
0x2e03;HPA_InvalidValue;;3;HAS_PARAMETERS_IF;fsfw/src/fsfw/parameters/HasParametersIF.h
|
||||||
|
0x2e05;HPA_ReadOnly;;5;HAS_PARAMETERS_IF;fsfw/src/fsfw/parameters/HasParametersIF.h
|
||||||
|
0x3b01;SPH_SemaphoreTimeout;;1;SEMAPHORE_IF;fsfw/src/fsfw/tasks/SemaphoreIF.h
|
||||||
|
0x3b02;SPH_SemaphoreNotOwned;;2;SEMAPHORE_IF;fsfw/src/fsfw/tasks/SemaphoreIF.h
|
||||||
|
0x3b03;SPH_SemaphoreInvalid;;3;SEMAPHORE_IF;fsfw/src/fsfw/tasks/SemaphoreIF.h
|
||||||
0x1a01;TRC_NotEnoughSensors;;1;TRIPLE_REDUNDACY_CHECK;fsfw/src/fsfw/monitoring/TriplexMonitor.h
|
0x1a01;TRC_NotEnoughSensors;;1;TRIPLE_REDUNDACY_CHECK;fsfw/src/fsfw/monitoring/TriplexMonitor.h
|
||||||
0x1a02;TRC_LowestValueOol;;2;TRIPLE_REDUNDACY_CHECK;fsfw/src/fsfw/monitoring/TriplexMonitor.h
|
0x1a02;TRC_LowestValueOol;;2;TRIPLE_REDUNDACY_CHECK;fsfw/src/fsfw/monitoring/TriplexMonitor.h
|
||||||
0x1a03;TRC_HighestValueOol;;3;TRIPLE_REDUNDACY_CHECK;fsfw/src/fsfw/monitoring/TriplexMonitor.h
|
0x1a03;TRC_HighestValueOol;;3;TRIPLE_REDUNDACY_CHECK;fsfw/src/fsfw/monitoring/TriplexMonitor.h
|
||||||
0x1a04;TRC_BothValuesOol;;4;TRIPLE_REDUNDACY_CHECK;fsfw/src/fsfw/monitoring/TriplexMonitor.h
|
0x1a04;TRC_BothValuesOol;;4;TRIPLE_REDUNDACY_CHECK;fsfw/src/fsfw/monitoring/TriplexMonitor.h
|
||||||
0x1a05;TRC_DuplexOol;;5;TRIPLE_REDUNDACY_CHECK;fsfw/src/fsfw/monitoring/TriplexMonitor.h
|
0x1a05;TRC_DuplexOol;;5;TRIPLE_REDUNDACY_CHECK;fsfw/src/fsfw/monitoring/TriplexMonitor.h
|
||||||
0x3001;LIM_Unchecked;;1;LIMITS_IF;fsfw/src/fsfw/monitoring/MonitoringIF.h
|
0x3101;LIM_Unchecked;;1;LIMITS_IF;fsfw/src/fsfw/monitoring/MonitoringIF.h
|
||||||
0x3002;LIM_Invalid;;2;LIMITS_IF;fsfw/src/fsfw/monitoring/MonitoringIF.h
|
0x3102;LIM_Invalid;;2;LIMITS_IF;fsfw/src/fsfw/monitoring/MonitoringIF.h
|
||||||
0x3003;LIM_Unselected;;3;LIMITS_IF;fsfw/src/fsfw/monitoring/MonitoringIF.h
|
0x3103;LIM_Unselected;;3;LIMITS_IF;fsfw/src/fsfw/monitoring/MonitoringIF.h
|
||||||
0x3004;LIM_BelowLowLimit;;4;LIMITS_IF;fsfw/src/fsfw/monitoring/MonitoringIF.h
|
0x3104;LIM_BelowLowLimit;;4;LIMITS_IF;fsfw/src/fsfw/monitoring/MonitoringIF.h
|
||||||
0x3005;LIM_AboveHighLimit;;5;LIMITS_IF;fsfw/src/fsfw/monitoring/MonitoringIF.h
|
0x3105;LIM_AboveHighLimit;;5;LIMITS_IF;fsfw/src/fsfw/monitoring/MonitoringIF.h
|
||||||
0x3006;LIM_UnexpectedValue;;6;LIMITS_IF;fsfw/src/fsfw/monitoring/MonitoringIF.h
|
0x3106;LIM_UnexpectedValue;;6;LIMITS_IF;fsfw/src/fsfw/monitoring/MonitoringIF.h
|
||||||
0x3007;LIM_OutOfRange;;7;LIMITS_IF;fsfw/src/fsfw/monitoring/MonitoringIF.h
|
0x3107;LIM_OutOfRange;;7;LIMITS_IF;fsfw/src/fsfw/monitoring/MonitoringIF.h
|
||||||
0x30a0;LIM_FirstSample;;160;LIMITS_IF;fsfw/src/fsfw/monitoring/MonitoringIF.h
|
0x31a0;LIM_FirstSample;;160;LIMITS_IF;fsfw/src/fsfw/monitoring/MonitoringIF.h
|
||||||
0x30e0;LIM_InvalidSize;;224;LIMITS_IF;fsfw/src/fsfw/monitoring/MonitoringIF.h
|
0x31e0;LIM_InvalidSize;;224;LIMITS_IF;fsfw/src/fsfw/monitoring/MonitoringIF.h
|
||||||
0x30e1;LIM_WrongType;;225;LIMITS_IF;fsfw/src/fsfw/monitoring/MonitoringIF.h
|
0x31e1;LIM_WrongType;;225;LIMITS_IF;fsfw/src/fsfw/monitoring/MonitoringIF.h
|
||||||
0x30e2;LIM_WrongPid;;226;LIMITS_IF;fsfw/src/fsfw/monitoring/MonitoringIF.h
|
0x31e2;LIM_WrongPid;;226;LIMITS_IF;fsfw/src/fsfw/monitoring/MonitoringIF.h
|
||||||
0x30e3;LIM_WrongLimitId;;227;LIMITS_IF;fsfw/src/fsfw/monitoring/MonitoringIF.h
|
0x31e3;LIM_WrongLimitId;;227;LIMITS_IF;fsfw/src/fsfw/monitoring/MonitoringIF.h
|
||||||
0x30ee;LIM_MonitorNotFound;;238;LIMITS_IF;fsfw/src/fsfw/monitoring/MonitoringIF.h
|
0x31ee;LIM_MonitorNotFound;;238;LIMITS_IF;fsfw/src/fsfw/monitoring/MonitoringIF.h
|
||||||
0x4101;PUS11_InvalidTypeTimeWindow;;1;PUS_SERVICE_11;fsfw/src/fsfw/pus/Service11TelecommandScheduling.h
|
0x3601;CFDP_InvalidTlvType;;1;CFDP;fsfw/src/fsfw/cfdp/definitions.h
|
||||||
0x4102;PUS11_TimeshiftingNotPossible;;2;PUS_SERVICE_11;fsfw/src/fsfw/pus/Service11TelecommandScheduling.h
|
0x3602;CFDP_InvalidDirectiveField;;2;CFDP;fsfw/src/fsfw/cfdp/definitions.h
|
||||||
0x4103;PUS11_InvalidRelativeTime;;3;PUS_SERVICE_11;fsfw/src/fsfw/pus/Service11TelecommandScheduling.h
|
0x3603;CFDP_InvalidPduDatafieldLen;;3;CFDP;fsfw/src/fsfw/cfdp/definitions.h
|
||||||
0x4200;FILS_GenericFileError;;0;FILE_SYSTEM;fsfw/src/fsfw/memory/HasFileSystemIF.h
|
0x3604;CFDP_InvalidAckDirectiveFields;;4;CFDP;fsfw/src/fsfw/cfdp/definitions.h
|
||||||
0x4201;FILS_IsBusy;;1;FILE_SYSTEM;fsfw/src/fsfw/memory/HasFileSystemIF.h
|
0x3605;CFDP_MetadataCantParseOptions;;5;CFDP;fsfw/src/fsfw/cfdp/definitions.h
|
||||||
0x4202;FILS_InvalidParameters;;2;FILE_SYSTEM;fsfw/src/fsfw/memory/HasFileSystemIF.h
|
0x3606;CFDP_NakCantParseOptions;;6;CFDP;fsfw/src/fsfw/cfdp/definitions.h
|
||||||
0x4205;FILS_FileDoesNotExist;;5;FILE_SYSTEM;fsfw/src/fsfw/memory/HasFileSystemIF.h
|
0x3607;CFDP_FinishedCantParseFsResponses;;7;CFDP;fsfw/src/fsfw/cfdp/definitions.h
|
||||||
0x4206;FILS_FileAlreadyExists;;6;FILE_SYSTEM;fsfw/src/fsfw/memory/HasFileSystemIF.h
|
0x3608;CFDP_FilestoreRequiresSecondFile;;8;CFDP;fsfw/src/fsfw/cfdp/definitions.h
|
||||||
0x4207;FILS_FileLocked;;7;FILE_SYSTEM;fsfw/src/fsfw/memory/HasFileSystemIF.h
|
0x3609;CFDP_FilestoreResponseCantParseFsMessage;;9;CFDP;fsfw/src/fsfw/cfdp/definitions.h
|
||||||
0x420a;FILS_DirectoryDoesNotExist;;10;FILE_SYSTEM;fsfw/src/fsfw/memory/HasFileSystemIF.h
|
0x360a;CFDP_InvalidPduFormat;;10;CFDP;fsfw/src/fsfw/cfdp/definitions.h
|
||||||
0x420b;FILS_DirectoryAlreadyExists;;11;FILE_SYSTEM;fsfw/src/fsfw/memory/HasFileSystemIF.h
|
0x4300;FILS_GenericFileError;;0;FILE_SYSTEM;fsfw/src/fsfw/filesystem/HasFileSystemIF.h
|
||||||
0x420c;FILS_DirectoryNotEmpty;;12;FILE_SYSTEM;fsfw/src/fsfw/memory/HasFileSystemIF.h
|
0x4301;FILS_GenericDirError;;1;FILE_SYSTEM;fsfw/src/fsfw/filesystem/HasFileSystemIF.h
|
||||||
0x420f;FILS_SequencePacketMissingWrite;;15;FILE_SYSTEM;fsfw/src/fsfw/memory/HasFileSystemIF.h
|
0x4303;FILS_GenericRenameError;;3;FILE_SYSTEM;fsfw/src/fsfw/filesystem/HasFileSystemIF.h
|
||||||
0x4210;FILS_SequencePacketMissingRead;;16;FILE_SYSTEM;fsfw/src/fsfw/memory/HasFileSystemIF.h
|
0x4304;FILS_IsBusy;;4;FILE_SYSTEM;fsfw/src/fsfw/filesystem/HasFileSystemIF.h
|
||||||
0x0601;PP_DoItMyself;;1;HAS_MEMORY_IF;fsfw/src/fsfw/memory/HasMemoryIF.h
|
0x4305;FILS_InvalidParameters;;5;FILE_SYSTEM;fsfw/src/fsfw/filesystem/HasFileSystemIF.h
|
||||||
0x0602;PP_PointsToVariable;;2;HAS_MEMORY_IF;fsfw/src/fsfw/memory/HasMemoryIF.h
|
0x430a;FILS_FileDoesNotExist;;10;FILE_SYSTEM;fsfw/src/fsfw/filesystem/HasFileSystemIF.h
|
||||||
0x0603;PP_PointsToMemory;;3;HAS_MEMORY_IF;fsfw/src/fsfw/memory/HasMemoryIF.h
|
0x430b;FILS_FileAlreadyExists;;11;FILE_SYSTEM;fsfw/src/fsfw/filesystem/HasFileSystemIF.h
|
||||||
0x0604;PP_ActivityCompleted;;4;HAS_MEMORY_IF;fsfw/src/fsfw/memory/HasMemoryIF.h
|
0x430c;FILS_NotAFile;;12;FILE_SYSTEM;fsfw/src/fsfw/filesystem/HasFileSystemIF.h
|
||||||
0x0605;PP_PointsToVectorUint8;;5;HAS_MEMORY_IF;fsfw/src/fsfw/memory/HasMemoryIF.h
|
0x430d;FILS_FileLocked;;13;FILE_SYSTEM;fsfw/src/fsfw/filesystem/HasFileSystemIF.h
|
||||||
0x0606;PP_PointsToVectorUint16;;6;HAS_MEMORY_IF;fsfw/src/fsfw/memory/HasMemoryIF.h
|
0x430e;FILS_PermissionDenied;;14;FILE_SYSTEM;fsfw/src/fsfw/filesystem/HasFileSystemIF.h
|
||||||
0x0607;PP_PointsToVectorUint32;;7;HAS_MEMORY_IF;fsfw/src/fsfw/memory/HasMemoryIF.h
|
0x4315;FILS_DirectoryDoesNotExist;;21;FILE_SYSTEM;fsfw/src/fsfw/filesystem/HasFileSystemIF.h
|
||||||
0x0608;PP_PointsToVectorFloat;;8;HAS_MEMORY_IF;fsfw/src/fsfw/memory/HasMemoryIF.h
|
0x4316;FILS_DirectoryAlreadyExists;;22;FILE_SYSTEM;fsfw/src/fsfw/filesystem/HasFileSystemIF.h
|
||||||
0x06a0;PP_DumpNotSupported;;160;HAS_MEMORY_IF;fsfw/src/fsfw/memory/HasMemoryIF.h
|
0x4317;FILS_NotADirectory;;23;FILE_SYSTEM;fsfw/src/fsfw/filesystem/HasFileSystemIF.h
|
||||||
0x06e0;PP_InvalidSize;;224;HAS_MEMORY_IF;fsfw/src/fsfw/memory/HasMemoryIF.h
|
0x4318;FILS_DirectoryNotEmpty;;24;FILE_SYSTEM;fsfw/src/fsfw/filesystem/HasFileSystemIF.h
|
||||||
0x06e1;PP_InvalidAddress;;225;HAS_MEMORY_IF;fsfw/src/fsfw/memory/HasMemoryIF.h
|
0x431e;FILS_SequencePacketMissingWrite;;30;FILE_SYSTEM;fsfw/src/fsfw/filesystem/HasFileSystemIF.h
|
||||||
0x06e2;PP_InvalidContent;;226;HAS_MEMORY_IF;fsfw/src/fsfw/memory/HasMemoryIF.h
|
0x431f;FILS_SequencePacketMissingRead;;31;FILE_SYSTEM;fsfw/src/fsfw/filesystem/HasFileSystemIF.h
|
||||||
0x06e3;PP_UnalignedAccess;;227;HAS_MEMORY_IF;fsfw/src/fsfw/memory/HasMemoryIF.h
|
0x2c01;CCS_BcIsSetVrCommand;;1;CCSDS_HANDLER_IF;fsfw/src/fsfw/datalinklayer/CCSDSReturnValuesIF.h
|
||||||
0x06e4;PP_WriteProtected;;228;HAS_MEMORY_IF;fsfw/src/fsfw/memory/HasMemoryIF.h
|
0x2c02;CCS_BcIsUnlockCommand;;2;CCSDS_HANDLER_IF;fsfw/src/fsfw/datalinklayer/CCSDSReturnValuesIF.h
|
||||||
0x13e0;MH_UnknownCmd;;224;MEMORY_HELPER;fsfw/src/fsfw/memory/MemoryHelper.h
|
0x2cb0;CCS_BcIllegalCommand;;176;CCSDS_HANDLER_IF;fsfw/src/fsfw/datalinklayer/CCSDSReturnValuesIF.h
|
||||||
0x13e1;MH_InvalidAddress;;225;MEMORY_HELPER;fsfw/src/fsfw/memory/MemoryHelper.h
|
0x2cb1;CCS_BoardReadingNotFinished;;177;CCSDS_HANDLER_IF;fsfw/src/fsfw/datalinklayer/CCSDSReturnValuesIF.h
|
||||||
0x13e2;MH_InvalidSize;;226;MEMORY_HELPER;fsfw/src/fsfw/memory/MemoryHelper.h
|
0x2cf0;CCS_NsPositiveW;;240;CCSDS_HANDLER_IF;fsfw/src/fsfw/datalinklayer/CCSDSReturnValuesIF.h
|
||||||
0x13e3;MH_StateMismatch;;227;MEMORY_HELPER;fsfw/src/fsfw/memory/MemoryHelper.h
|
0x2cf1;CCS_NsNegativeW;;241;CCSDS_HANDLER_IF;fsfw/src/fsfw/datalinklayer/CCSDSReturnValuesIF.h
|
||||||
0x1201;AB_NeedSecondStep;;1;ASSEMBLY_BASE;fsfw/src/fsfw/devicehandlers/AssemblyBase.h
|
0x2cf2;CCS_NsLockout;;242;CCSDS_HANDLER_IF;fsfw/src/fsfw/datalinklayer/CCSDSReturnValuesIF.h
|
||||||
0x1202;AB_NeedToReconfigure;;2;ASSEMBLY_BASE;fsfw/src/fsfw/devicehandlers/AssemblyBase.h
|
0x2cf3;CCS_FarmInLockout;;243;CCSDS_HANDLER_IF;fsfw/src/fsfw/datalinklayer/CCSDSReturnValuesIF.h
|
||||||
0x1203;AB_ModeFallback;;3;ASSEMBLY_BASE;fsfw/src/fsfw/devicehandlers/AssemblyBase.h
|
0x2cf4;CCS_FarmInWait;;244;CCSDS_HANDLER_IF;fsfw/src/fsfw/datalinklayer/CCSDSReturnValuesIF.h
|
||||||
0x1204;AB_ChildNotCommandable;;4;ASSEMBLY_BASE;fsfw/src/fsfw/devicehandlers/AssemblyBase.h
|
0x2ce0;CCS_WrongSymbol;;224;CCSDS_HANDLER_IF;fsfw/src/fsfw/datalinklayer/CCSDSReturnValuesIF.h
|
||||||
0x1205;AB_NeedToChangeHealth;;5;ASSEMBLY_BASE;fsfw/src/fsfw/devicehandlers/AssemblyBase.h
|
0x2ce1;CCS_DoubleStart;;225;CCSDS_HANDLER_IF;fsfw/src/fsfw/datalinklayer/CCSDSReturnValuesIF.h
|
||||||
0x12a1;AB_NotEnoughChildrenInCorrectState;;161;ASSEMBLY_BASE;fsfw/src/fsfw/devicehandlers/AssemblyBase.h
|
0x2ce2;CCS_StartSymbolMissed;;226;CCSDS_HANDLER_IF;fsfw/src/fsfw/datalinklayer/CCSDSReturnValuesIF.h
|
||||||
|
0x2ce3;CCS_EndWithoutStart;;227;CCSDS_HANDLER_IF;fsfw/src/fsfw/datalinklayer/CCSDSReturnValuesIF.h
|
||||||
|
0x2ce4;CCS_TooLarge;;228;CCSDS_HANDLER_IF;fsfw/src/fsfw/datalinklayer/CCSDSReturnValuesIF.h
|
||||||
|
0x2ce5;CCS_TooShort;;229;CCSDS_HANDLER_IF;fsfw/src/fsfw/datalinklayer/CCSDSReturnValuesIF.h
|
||||||
|
0x2ce6;CCS_WrongTfVersion;;230;CCSDS_HANDLER_IF;fsfw/src/fsfw/datalinklayer/CCSDSReturnValuesIF.h
|
||||||
|
0x2ce7;CCS_WrongSpacecraftId;;231;CCSDS_HANDLER_IF;fsfw/src/fsfw/datalinklayer/CCSDSReturnValuesIF.h
|
||||||
|
0x2ce8;CCS_NoValidFrameType;;232;CCSDS_HANDLER_IF;fsfw/src/fsfw/datalinklayer/CCSDSReturnValuesIF.h
|
||||||
|
0x2ce9;CCS_CrcFailed;;233;CCSDS_HANDLER_IF;fsfw/src/fsfw/datalinklayer/CCSDSReturnValuesIF.h
|
||||||
|
0x2cea;CCS_VcNotFound;;234;CCSDS_HANDLER_IF;fsfw/src/fsfw/datalinklayer/CCSDSReturnValuesIF.h
|
||||||
|
0x2ceb;CCS_ForwardingFailed;;235;CCSDS_HANDLER_IF;fsfw/src/fsfw/datalinklayer/CCSDSReturnValuesIF.h
|
||||||
|
0x2cec;CCS_ContentTooLarge;;236;CCSDS_HANDLER_IF;fsfw/src/fsfw/datalinklayer/CCSDSReturnValuesIF.h
|
||||||
|
0x2ced;CCS_ResidualData;;237;CCSDS_HANDLER_IF;fsfw/src/fsfw/datalinklayer/CCSDSReturnValuesIF.h
|
||||||
|
0x2cee;CCS_DataCorrupted;;238;CCSDS_HANDLER_IF;fsfw/src/fsfw/datalinklayer/CCSDSReturnValuesIF.h
|
||||||
|
0x2cef;CCS_IllegalSegmentationFlag;;239;CCSDS_HANDLER_IF;fsfw/src/fsfw/datalinklayer/CCSDSReturnValuesIF.h
|
||||||
|
0x2cd0;CCS_IllegalFlagCombination;;208;CCSDS_HANDLER_IF;fsfw/src/fsfw/datalinklayer/CCSDSReturnValuesIF.h
|
||||||
|
0x2cd1;CCS_ShorterThanHeader;;209;CCSDS_HANDLER_IF;fsfw/src/fsfw/datalinklayer/CCSDSReturnValuesIF.h
|
||||||
|
0x2cd2;CCS_TooShortBlockedPacket;;210;CCSDS_HANDLER_IF;fsfw/src/fsfw/datalinklayer/CCSDSReturnValuesIF.h
|
||||||
|
0x2cd3;CCS_TooShortMapExtraction;;211;CCSDS_HANDLER_IF;fsfw/src/fsfw/datalinklayer/CCSDSReturnValuesIF.h
|
||||||
|
0x4201;PUS11_InvalidTypeTimeWindow;;1;PUS_SERVICE_11;fsfw/src/fsfw/pus/Service11TelecommandScheduling.h
|
||||||
|
0x4202;PUS11_InvalidTimeWindow;;2;PUS_SERVICE_11;fsfw/src/fsfw/pus/Service11TelecommandScheduling.h
|
||||||
|
0x4203;PUS11_TimeshiftingNotPossible;;3;PUS_SERVICE_11;fsfw/src/fsfw/pus/Service11TelecommandScheduling.h
|
||||||
|
0x4204;PUS11_InvalidRelativeTime;;4;PUS_SERVICE_11;fsfw/src/fsfw/pus/Service11TelecommandScheduling.h
|
||||||
|
0x3401;DC_NoReplyReceived;;1;DEVICE_COMMUNICATION_IF;fsfw/src/fsfw/devicehandlers/DeviceCommunicationIF.h
|
||||||
|
0x3402;DC_ProtocolError;;2;DEVICE_COMMUNICATION_IF;fsfw/src/fsfw/devicehandlers/DeviceCommunicationIF.h
|
||||||
|
0x3403;DC_Nullpointer;;3;DEVICE_COMMUNICATION_IF;fsfw/src/fsfw/devicehandlers/DeviceCommunicationIF.h
|
||||||
|
0x3404;DC_InvalidCookieType;;4;DEVICE_COMMUNICATION_IF;fsfw/src/fsfw/devicehandlers/DeviceCommunicationIF.h
|
||||||
|
0x3405;DC_NotActive;;5;DEVICE_COMMUNICATION_IF;fsfw/src/fsfw/devicehandlers/DeviceCommunicationIF.h
|
||||||
|
0x3406;DC_TooMuchData;;6;DEVICE_COMMUNICATION_IF;fsfw/src/fsfw/devicehandlers/DeviceCommunicationIF.h
|
||||||
0x03a0;DHB_InvalidChannel;;160;DEVICE_HANDLER_BASE;fsfw/src/fsfw/devicehandlers/DeviceHandlerBase.h
|
0x03a0;DHB_InvalidChannel;;160;DEVICE_HANDLER_BASE;fsfw/src/fsfw/devicehandlers/DeviceHandlerBase.h
|
||||||
0x03b0;DHB_AperiodicReply;;176;DEVICE_HANDLER_BASE;fsfw/src/fsfw/devicehandlers/DeviceHandlerBase.h
|
0x03b0;DHB_AperiodicReply;;176;DEVICE_HANDLER_BASE;fsfw/src/fsfw/devicehandlers/DeviceHandlerBase.h
|
||||||
0x03b1;DHB_IgnoreReplyData;;177;DEVICE_HANDLER_BASE;fsfw/src/fsfw/devicehandlers/DeviceHandlerBase.h
|
0x03b1;DHB_IgnoreReplyData;;177;DEVICE_HANDLER_BASE;fsfw/src/fsfw/devicehandlers/DeviceHandlerBase.h
|
||||||
@ -402,65 +387,94 @@ Full ID (hex); Name; Description; Unique ID; Subsytem Name; File Path
|
|||||||
0x03d0;DHB_NoSwitch;;208;DEVICE_HANDLER_BASE;fsfw/src/fsfw/devicehandlers/DeviceHandlerBase.h
|
0x03d0;DHB_NoSwitch;;208;DEVICE_HANDLER_BASE;fsfw/src/fsfw/devicehandlers/DeviceHandlerBase.h
|
||||||
0x03e0;DHB_ChildTimeout;;224;DEVICE_HANDLER_BASE;fsfw/src/fsfw/devicehandlers/DeviceHandlerBase.h
|
0x03e0;DHB_ChildTimeout;;224;DEVICE_HANDLER_BASE;fsfw/src/fsfw/devicehandlers/DeviceHandlerBase.h
|
||||||
0x03e1;DHB_SwitchFailed;;225;DEVICE_HANDLER_BASE;fsfw/src/fsfw/devicehandlers/DeviceHandlerBase.h
|
0x03e1;DHB_SwitchFailed;;225;DEVICE_HANDLER_BASE;fsfw/src/fsfw/devicehandlers/DeviceHandlerBase.h
|
||||||
0x3301;DC_NoReplyReceived;;1;DEVICE_COMMUNICATION_IF;fsfw/src/fsfw/devicehandlers/DeviceCommunicationIF.h
|
0x1201;AB_NeedSecondStep;;1;ASSEMBLY_BASE;fsfw/src/fsfw/devicehandlers/AssemblyBase.h
|
||||||
0x3302;DC_ProtocolError;;2;DEVICE_COMMUNICATION_IF;fsfw/src/fsfw/devicehandlers/DeviceCommunicationIF.h
|
0x1202;AB_NeedToReconfigure;;2;ASSEMBLY_BASE;fsfw/src/fsfw/devicehandlers/AssemblyBase.h
|
||||||
0x3303;DC_Nullpointer;;3;DEVICE_COMMUNICATION_IF;fsfw/src/fsfw/devicehandlers/DeviceCommunicationIF.h
|
0x1203;AB_ModeFallback;;3;ASSEMBLY_BASE;fsfw/src/fsfw/devicehandlers/AssemblyBase.h
|
||||||
0x3304;DC_InvalidCookieType;;4;DEVICE_COMMUNICATION_IF;fsfw/src/fsfw/devicehandlers/DeviceCommunicationIF.h
|
0x1204;AB_ChildNotCommandable;;4;ASSEMBLY_BASE;fsfw/src/fsfw/devicehandlers/AssemblyBase.h
|
||||||
0x3305;DC_NotActive;;5;DEVICE_COMMUNICATION_IF;fsfw/src/fsfw/devicehandlers/DeviceCommunicationIF.h
|
0x1205;AB_NeedToChangeHealth;;5;ASSEMBLY_BASE;fsfw/src/fsfw/devicehandlers/AssemblyBase.h
|
||||||
0x3306;DC_TooMuchData;;6;DEVICE_COMMUNICATION_IF;fsfw/src/fsfw/devicehandlers/DeviceCommunicationIF.h
|
0x12a1;AB_NotEnoughChildrenInCorrectState;;161;ASSEMBLY_BASE;fsfw/src/fsfw/devicehandlers/AssemblyBase.h
|
||||||
0x26a0;DHI_NoCommandData;;160;DEVICE_HANDLER_IF;fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
|
0x27a0;DHI_NoCommandData;;160;DEVICE_HANDLER_IF;fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
|
||||||
0x26a1;DHI_CommandNotSupported;;161;DEVICE_HANDLER_IF;fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
|
0x27a1;DHI_CommandNotSupported;;161;DEVICE_HANDLER_IF;fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
|
||||||
0x26a2;DHI_CommandAlreadySent;;162;DEVICE_HANDLER_IF;fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
|
0x27a2;DHI_CommandAlreadySent;;162;DEVICE_HANDLER_IF;fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
|
||||||
0x26a3;DHI_CommandWasNotSent;;163;DEVICE_HANDLER_IF;fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
|
0x27a3;DHI_CommandWasNotSent;;163;DEVICE_HANDLER_IF;fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
|
||||||
0x26a4;DHI_CantSwitchAddress;;164;DEVICE_HANDLER_IF;fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
|
0x27a4;DHI_CantSwitchAddress;;164;DEVICE_HANDLER_IF;fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
|
||||||
0x26a5;DHI_WrongModeForCommand;;165;DEVICE_HANDLER_IF;fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
|
0x27a5;DHI_WrongModeForCommand;;165;DEVICE_HANDLER_IF;fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
|
||||||
0x26a6;DHI_Timeout;;166;DEVICE_HANDLER_IF;fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
|
0x27a6;DHI_Timeout;;166;DEVICE_HANDLER_IF;fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
|
||||||
0x26a7;DHI_Busy;;167;DEVICE_HANDLER_IF;fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
|
0x27a7;DHI_Busy;;167;DEVICE_HANDLER_IF;fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
|
||||||
0x26a8;DHI_NoReplyExpected;;168;DEVICE_HANDLER_IF;fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
|
0x27a8;DHI_NoReplyExpected;;168;DEVICE_HANDLER_IF;fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
|
||||||
0x26a9;DHI_NonOpTemperature;;169;DEVICE_HANDLER_IF;fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
|
0x27a9;DHI_NonOpTemperature;;169;DEVICE_HANDLER_IF;fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
|
||||||
0x26aa;DHI_CommandNotImplemented;;170;DEVICE_HANDLER_IF;fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
|
0x27aa;DHI_CommandNotImplemented;;170;DEVICE_HANDLER_IF;fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
|
||||||
0x26b0;DHI_ChecksumError;;176;DEVICE_HANDLER_IF;fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
|
0x27b0;DHI_ChecksumError;;176;DEVICE_HANDLER_IF;fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
|
||||||
0x26b1;DHI_LengthMissmatch;;177;DEVICE_HANDLER_IF;fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
|
0x27b1;DHI_LengthMissmatch;;177;DEVICE_HANDLER_IF;fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
|
||||||
0x26b2;DHI_InvalidData;;178;DEVICE_HANDLER_IF;fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
|
0x27b2;DHI_InvalidData;;178;DEVICE_HANDLER_IF;fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
|
||||||
0x26b3;DHI_ProtocolError;;179;DEVICE_HANDLER_IF;fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
|
0x27b3;DHI_ProtocolError;;179;DEVICE_HANDLER_IF;fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
|
||||||
0x26c0;DHI_DeviceDidNotExecute;;192;DEVICE_HANDLER_IF;fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
|
0x27c0;DHI_DeviceDidNotExecute;;192;DEVICE_HANDLER_IF;fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
|
||||||
0x26c1;DHI_DeviceReportedError;;193;DEVICE_HANDLER_IF;fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
|
0x27c1;DHI_DeviceReportedError;;193;DEVICE_HANDLER_IF;fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
|
||||||
0x26c2;DHI_UnknownDeviceReply;;194;DEVICE_HANDLER_IF;fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
|
0x27c2;DHI_UnknownDeviceReply;;194;DEVICE_HANDLER_IF;fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
|
||||||
0x26c3;DHI_DeviceReplyInvalid;;195;DEVICE_HANDLER_IF;fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
|
0x27c3;DHI_DeviceReplyInvalid;;195;DEVICE_HANDLER_IF;fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
|
||||||
0x26d0;DHI_InvalidCommandParameter;;208;DEVICE_HANDLER_IF;fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
|
0x27d0;DHI_InvalidCommandParameter;;208;DEVICE_HANDLER_IF;fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
|
||||||
0x26d1;DHI_InvalidNumberOrLengthOfParameters;;209;DEVICE_HANDLER_IF;fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
|
0x27d1;DHI_InvalidNumberOrLengthOfParameters;;209;DEVICE_HANDLER_IF;fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
|
||||||
0x1401;SE_BufferTooShort;;1;SERIALIZE_IF;fsfw/src/fsfw/serialize/SerializeIF.h
|
0x2401;MT_TooDetailedRequest;;1;MATCH_TREE_CLASS;fsfw/src/fsfw/globalfunctions/matching/MatchTree.h
|
||||||
0x1402;SE_StreamTooShort;;2;SERIALIZE_IF;fsfw/src/fsfw/serialize/SerializeIF.h
|
0x2402;MT_TooGeneralRequest;;2;MATCH_TREE_CLASS;fsfw/src/fsfw/globalfunctions/matching/MatchTree.h
|
||||||
0x1403;SE_TooManyElements;;3;SERIALIZE_IF;fsfw/src/fsfw/serialize/SerializeIF.h
|
0x2403;MT_NoMatch;;3;MATCH_TREE_CLASS;fsfw/src/fsfw/globalfunctions/matching/MatchTree.h
|
||||||
0x4400;HSPI_HalTimeoutRetval;;0;HAL_SPI;fsfw/src/fsfw_hal/stm32h7/spi/spiDefinitions.h
|
0x2404;MT_Full;;4;MATCH_TREE_CLASS;fsfw/src/fsfw/globalfunctions/matching/MatchTree.h
|
||||||
0x4401;HSPI_HalBusyRetval;;1;HAL_SPI;fsfw/src/fsfw_hal/stm32h7/spi/spiDefinitions.h
|
0x2405;MT_NewNodeCreated;;5;MATCH_TREE_CLASS;fsfw/src/fsfw/globalfunctions/matching/MatchTree.h
|
||||||
0x4402;HSPI_HalErrorRetval;;2;HAL_SPI;fsfw/src/fsfw_hal/stm32h7/spi/spiDefinitions.h
|
0x3f01;DLEE_NoPacketFound;;1;DLE_ENCODER;fsfw/src/fsfw/globalfunctions/DleParser.h
|
||||||
0x4501;HURT_UartReadFailure;;1;HAL_UART;fsfw/src/fsfw_hal/linux/uart/UartComIF.h
|
0x3f02;DLEE_PossiblePacketLoss;;2;DLE_ENCODER;fsfw/src/fsfw/globalfunctions/DleParser.h
|
||||||
0x4502;HURT_UartReadSizeMissmatch;;2;HAL_UART;fsfw/src/fsfw_hal/linux/uart/UartComIF.h
|
0x2f01;ASC_TooLongForTargetType;;1;ASCII_CONVERTER;fsfw/src/fsfw/globalfunctions/AsciiConverter.h
|
||||||
0x4503;HURT_UartRxBufferTooSmall;;3;HAL_UART;fsfw/src/fsfw_hal/linux/uart/UartComIF.h
|
0x2f02;ASC_InvalidCharacters;;2;ASCII_CONVERTER;fsfw/src/fsfw/globalfunctions/AsciiConverter.h
|
||||||
0x4701;HGIO_UnknownGpioId;;1;HAL_GPIO;fsfw/src/fsfw_hal/linux/gpio/LinuxLibgpioIF.h
|
0x2f03;ASC_BufferTooSmall;;3;ASCII_CONVERTER;fsfw/src/fsfw/globalfunctions/AsciiConverter.h
|
||||||
0x4702;HGIO_DriveGpioFailure;;2;HAL_GPIO;fsfw/src/fsfw_hal/linux/gpio/LinuxLibgpioIF.h
|
0x1701;HHI_ObjectNotHealthy;;1;HAS_HEALTH_IF;fsfw/src/fsfw/health/HasHealthIF.h
|
||||||
0x4703;HGIO_GpioTypeFailure;;3;HAL_GPIO;fsfw/src/fsfw_hal/linux/gpio/LinuxLibgpioIF.h
|
0x1702;HHI_InvalidHealthState;;2;HAS_HEALTH_IF;fsfw/src/fsfw/health/HasHealthIF.h
|
||||||
0x4704;HGIO_GpioInvalidInstance;;4;HAL_GPIO;fsfw/src/fsfw_hal/linux/gpio/LinuxLibgpioIF.h
|
0x1703;HHI_IsExternallyControlled;;3;HAS_HEALTH_IF;fsfw/src/fsfw/health/HasHealthIF.h
|
||||||
0x4705;HGIO_GpioDuplicateDetected;;5;HAL_GPIO;fsfw/src/fsfw_hal/linux/gpio/LinuxLibgpioIF.h
|
0x3201;CF_ObjectHasNoFunctions;;1;COMMANDS_ACTIONS_IF;fsfw/src/fsfw/action/CommandsActionsIF.h
|
||||||
0x4706;HGIO_GpioInitFailed;;6;HAL_GPIO;fsfw/src/fsfw_hal/linux/gpio/LinuxLibgpioIF.h
|
0x3202;CF_AlreadyCommanding;;2;COMMANDS_ACTIONS_IF;fsfw/src/fsfw/action/CommandsActionsIF.h
|
||||||
0x4707;HGIO_GpioGetValueFailed;;7;HAL_GPIO;fsfw/src/fsfw_hal/linux/gpio/LinuxLibgpioIF.h
|
0x3301;HF_IsBusy;;1;HAS_ACTIONS_IF;fsfw/src/fsfw/action/HasActionsIF.h
|
||||||
0x4300;UXOS_ExecutionFinished;Execution of the current command has finished;0;LINUX_OSAL;fsfw/src/fsfw_hal/linux/CommandExecutor.h
|
0x3302;HF_InvalidParameters;;2;HAS_ACTIONS_IF;fsfw/src/fsfw/action/HasActionsIF.h
|
||||||
0x4301;UXOS_CommandPending;Command is pending. This will also be returned if the user tries to load another command but a command is still pending;1;LINUX_OSAL;fsfw/src/fsfw_hal/linux/CommandExecutor.h
|
0x3303;HF_ExecutionFinished;;3;HAS_ACTIONS_IF;fsfw/src/fsfw/action/HasActionsIF.h
|
||||||
0x4302;UXOS_BytesRead;Some bytes have been read from the executing process;2;LINUX_OSAL;fsfw/src/fsfw_hal/linux/CommandExecutor.h
|
0x3304;HF_InvalidActionId;;4;HAS_ACTIONS_IF;fsfw/src/fsfw/action/HasActionsIF.h
|
||||||
0x4303;UXOS_CommandError;Command execution failed;3;LINUX_OSAL;fsfw/src/fsfw_hal/linux/CommandExecutor.h
|
0x1000;TIM_UnsupportedTimeFormat;;0;CCSDS_TIME_HELPER_CLASS;fsfw/src/fsfw/timemanager/CCSDSTime.h
|
||||||
0x4304;UXOS_NoCommandLoadedOrPending;;4;LINUX_OSAL;fsfw/src/fsfw_hal/linux/CommandExecutor.h
|
0x1001;TIM_NotEnoughInformationForTargetFormat;;1;CCSDS_TIME_HELPER_CLASS;fsfw/src/fsfw/timemanager/CCSDSTime.h
|
||||||
0x4306;UXOS_PcloseCallError;;6;LINUX_OSAL;fsfw/src/fsfw_hal/linux/CommandExecutor.h
|
0x1002;TIM_LengthMismatch;;2;CCSDS_TIME_HELPER_CLASS;fsfw/src/fsfw/timemanager/CCSDSTime.h
|
||||||
0x63a0;FSHLP_SdNotMounted;SD card specified with path string not mounted;160;FILE_SYSTEM_HELPER;bsp_q7s/memory/FilesystemHelper.h
|
0x1003;TIM_InvalidTimeFormat;;3;CCSDS_TIME_HELPER_CLASS;fsfw/src/fsfw/timemanager/CCSDSTime.h
|
||||||
0x63a1;FSHLP_FileNotExists;Specified file does not exist on filesystem;161;FILE_SYSTEM_HELPER;bsp_q7s/memory/FilesystemHelper.h
|
0x1004;TIM_InvalidDayOfYear;;4;CCSDS_TIME_HELPER_CLASS;fsfw/src/fsfw/timemanager/CCSDSTime.h
|
||||||
0x6900;SDMA_OpOngoing;;0;SD_CARD_MANAGER;bsp_q7s/memory/SdCardManager.h
|
0x1005;TIM_TimeDoesNotFitFormat;;5;CCSDS_TIME_HELPER_CLASS;fsfw/src/fsfw/timemanager/CCSDSTime.h
|
||||||
0x6901;SDMA_AlreadyOn;;1;SD_CARD_MANAGER;bsp_q7s/memory/SdCardManager.h
|
0x3701;TSI_BadTimestamp;;1;TIME_STAMPER_IF;fsfw/src/fsfw/timemanager/TimeStampIF.h
|
||||||
0x6902;SDMA_AlreadyMounted;;2;SD_CARD_MANAGER;bsp_q7s/memory/SdCardManager.h
|
0x3c00;LPIF_PoolEntryNotFound;;0;LOCAL_POOL_OWNER_IF;fsfw/src/fsfw/datapoollocal/localPoolDefinitions.h
|
||||||
0x6903;SDMA_AlreadyOff;;3;SD_CARD_MANAGER;bsp_q7s/memory/SdCardManager.h
|
0x3c01;LPIF_PoolEntryTypeConflict;;1;LOCAL_POOL_OWNER_IF;fsfw/src/fsfw/datapoollocal/localPoolDefinitions.h
|
||||||
0x690a;SDMA_StatusFileNexists;;10;SD_CARD_MANAGER;bsp_q7s/memory/SdCardManager.h
|
0x3e00;HKM_QueueOrDestinationInvalid;;0;HOUSEKEEPING_MANAGER;fsfw/src/fsfw/datapoollocal/LocalDataPoolManager.h
|
||||||
0x690b;SDMA_StatusFileFormatInvalid;;11;SD_CARD_MANAGER;bsp_q7s/memory/SdCardManager.h
|
0x3e01;HKM_WrongHkPacketType;;1;HOUSEKEEPING_MANAGER;fsfw/src/fsfw/datapoollocal/LocalDataPoolManager.h
|
||||||
0x690c;SDMA_MountError;;12;SD_CARD_MANAGER;bsp_q7s/memory/SdCardManager.h
|
0x3e02;HKM_ReportingStatusUnchanged;;2;HOUSEKEEPING_MANAGER;fsfw/src/fsfw/datapoollocal/LocalDataPoolManager.h
|
||||||
0x690d;SDMA_UnmountError;;13;SD_CARD_MANAGER;bsp_q7s/memory/SdCardManager.h
|
0x3e03;HKM_PeriodicHelperInvalid;;3;HOUSEKEEPING_MANAGER;fsfw/src/fsfw/datapoollocal/LocalDataPoolManager.h
|
||||||
0x690e;SDMA_SystemCallError;;14;SD_CARD_MANAGER;bsp_q7s/memory/SdCardManager.h
|
0x3e04;HKM_PoolobjectNotFound;;4;HOUSEKEEPING_MANAGER;fsfw/src/fsfw/datapoollocal/LocalDataPoolManager.h
|
||||||
0x690f;SDMA_PopenCallError;;15;SD_CARD_MANAGER;bsp_q7s/memory/SdCardManager.h
|
0x3e05;HKM_DatasetNotFound;;5;HOUSEKEEPING_MANAGER;fsfw/src/fsfw/datapoollocal/LocalDataPoolManager.h
|
||||||
0x6a00;SCBU_KeyNotFound;;0;SCRATCH_BUFFER;bsp_q7s/memory/scratchApi.h
|
0x2901;TC_InvalidTargetState;;1;THERMAL_COMPONENT_IF;fsfw/src/fsfw/thermal/ThermalComponentIF.h
|
||||||
|
0x29f1;TC_AboveOperationalLimit;;241;THERMAL_COMPONENT_IF;fsfw/src/fsfw/thermal/ThermalComponentIF.h
|
||||||
|
0x29f2;TC_BelowOperationalLimit;;242;THERMAL_COMPONENT_IF;fsfw/src/fsfw/thermal/ThermalComponentIF.h
|
||||||
|
0x2001;CSB_ExecutionComplete;;1;COMMAND_SERVICE_BASE;fsfw/src/fsfw/tmtcservices/CommandingServiceBase.h
|
||||||
|
0x2002;CSB_NoStepMessage;;2;COMMAND_SERVICE_BASE;fsfw/src/fsfw/tmtcservices/CommandingServiceBase.h
|
||||||
|
0x2003;CSB_ObjectBusy;;3;COMMAND_SERVICE_BASE;fsfw/src/fsfw/tmtcservices/CommandingServiceBase.h
|
||||||
|
0x2004;CSB_Busy;;4;COMMAND_SERVICE_BASE;fsfw/src/fsfw/tmtcservices/CommandingServiceBase.h
|
||||||
|
0x2005;CSB_InvalidTc;;5;COMMAND_SERVICE_BASE;fsfw/src/fsfw/tmtcservices/CommandingServiceBase.h
|
||||||
|
0x2006;CSB_InvalidObject;;6;COMMAND_SERVICE_BASE;fsfw/src/fsfw/tmtcservices/CommandingServiceBase.h
|
||||||
|
0x2007;CSB_InvalidReply;;7;COMMAND_SERVICE_BASE;fsfw/src/fsfw/tmtcservices/CommandingServiceBase.h
|
||||||
|
0x4c00;SPPA_NoPacketFound;;0;SPACE_PACKET_PARSER;fsfw/src/fsfw/tmtcservices/SpacePacketParser.h
|
||||||
|
0x4c01;SPPA_SplitPacket;;1;SPACE_PACKET_PARSER;fsfw/src/fsfw/tmtcservices/SpacePacketParser.h
|
||||||
|
0x1d01;ATC_ActivityStarted;;1;ACCEPTS_TELECOMMANDS_IF;fsfw/src/fsfw/tmtcservices/AcceptsTelecommandsIF.h
|
||||||
|
0x1d02;ATC_InvalidSubservice;;2;ACCEPTS_TELECOMMANDS_IF;fsfw/src/fsfw/tmtcservices/AcceptsTelecommandsIF.h
|
||||||
|
0x1d03;ATC_IllegalApplicationData;;3;ACCEPTS_TELECOMMANDS_IF;fsfw/src/fsfw/tmtcservices/AcceptsTelecommandsIF.h
|
||||||
|
0x1d04;ATC_SendTmFailed;;4;ACCEPTS_TELECOMMANDS_IF;fsfw/src/fsfw/tmtcservices/AcceptsTelecommandsIF.h
|
||||||
|
0x1d05;ATC_Timeout;;5;ACCEPTS_TELECOMMANDS_IF;fsfw/src/fsfw/tmtcservices/AcceptsTelecommandsIF.h
|
||||||
|
0x6b00;SCBU_KeyNotFound;;0;SCRATCH_BUFFER;bsp_q7s/memory/scratchApi.h
|
||||||
|
0x64a0;FSHLP_SdNotMounted;SD card specified with path string not mounted;160;FILE_SYSTEM_HELPER;bsp_q7s/fs/FilesystemHelper.h
|
||||||
|
0x64a1;FSHLP_FileNotExists;Specified file does not exist on filesystem;161;FILE_SYSTEM_HELPER;bsp_q7s/fs/FilesystemHelper.h
|
||||||
|
0x6a00;SDMA_OpOngoing;;0;SD_CARD_MANAGER;bsp_q7s/fs/SdCardManager.h
|
||||||
|
0x6a01;SDMA_AlreadyOn;;1;SD_CARD_MANAGER;bsp_q7s/fs/SdCardManager.h
|
||||||
|
0x6a02;SDMA_AlreadyMounted;;2;SD_CARD_MANAGER;bsp_q7s/fs/SdCardManager.h
|
||||||
|
0x6a03;SDMA_AlreadyOff;;3;SD_CARD_MANAGER;bsp_q7s/fs/SdCardManager.h
|
||||||
|
0x6a0a;SDMA_StatusFileNexists;;10;SD_CARD_MANAGER;bsp_q7s/fs/SdCardManager.h
|
||||||
|
0x6a0b;SDMA_StatusFileFormatInvalid;;11;SD_CARD_MANAGER;bsp_q7s/fs/SdCardManager.h
|
||||||
|
0x6a0c;SDMA_MountError;;12;SD_CARD_MANAGER;bsp_q7s/fs/SdCardManager.h
|
||||||
|
0x6a0d;SDMA_UnmountError;;13;SD_CARD_MANAGER;bsp_q7s/fs/SdCardManager.h
|
||||||
|
0x6a0e;SDMA_SystemCallError;;14;SD_CARD_MANAGER;bsp_q7s/fs/SdCardManager.h
|
||||||
|
0x6a0f;SDMA_PopenCallError;;15;SD_CARD_MANAGER;bsp_q7s/fs/SdCardManager.h
|
||||||
|
|
2
deps/spacepackets
vendored
2
deps/spacepackets
vendored
Submodule deps/spacepackets updated: 13a54713ae...84f1af27d4
2
deps/tmtccmd
vendored
2
deps/tmtccmd
vendored
Submodule deps/tmtccmd updated: 403c5fd2b1...f3ea4108bd
1
filetest/cfdp_test.txt
Normal file
1
filetest/cfdp_test.txt
Normal file
@ -0,0 +1 @@
|
|||||||
|
hello world
|
BIN
filetest/obsw_update.bin
Normal file
BIN
filetest/obsw_update.bin
Normal file
Binary file not shown.
@ -11,8 +11,9 @@ import struct
|
|||||||
from typing import Union
|
from typing import Union
|
||||||
|
|
||||||
from spacepackets.ecss import PusTelecommand
|
from spacepackets.ecss import PusTelecommand
|
||||||
from tmtccmd.tc.pus_8_funccmd import generate_action_command
|
from tmtccmd.tc import DefaultPusQueueHelper
|
||||||
from tmtccmd.util import ObjectIdU32
|
from tmtccmd.tc.pus_8_funccmd import make_fsfw_action_cmd
|
||||||
|
from tmtccmd.util import ObjectIdU32, ObjectIdBase
|
||||||
|
|
||||||
|
|
||||||
class GomspaceDeviceActionIds(enum.IntEnum):
|
class GomspaceDeviceActionIds(enum.IntEnum):
|
||||||
@ -22,26 +23,41 @@ class GomspaceDeviceActionIds(enum.IntEnum):
|
|||||||
PARAM_SET = 255
|
PARAM_SET = 255
|
||||||
WDT_RESET = 9
|
WDT_RESET = 9
|
||||||
REQUEST_HK_TABLE = 16
|
REQUEST_HK_TABLE = 16
|
||||||
|
REQUEST_CONFIG_TABLE = 17
|
||||||
|
SAVE_TABLE = 18
|
||||||
|
SAVE_TABLE_DEFAULT = 19
|
||||||
|
LOAD_TABLE = 20
|
||||||
PRINT_SWITCH_V_I = 32
|
PRINT_SWITCH_V_I = 32
|
||||||
PRINT_LATCHUPS = 33
|
PRINT_LATCHUPS = 33
|
||||||
|
|
||||||
|
|
||||||
class GomspaceOpCodes:
|
class GomspaceOpCodes:
|
||||||
# Request HK
|
# Request HK
|
||||||
REQUEST_CORE_HK_ONCE = ["hk-core", "128"]
|
REQUEST_CORE_HK_ONCE = ["hk_core"]
|
||||||
REQUEST_AUX_HK_ONCE = ["hk-aux", "129"]
|
REQUEST_AUX_HK_ONCE = ["hk_aux"]
|
||||||
PRINT_SWITCH_V_I = ["print-switch-vi", "130"]
|
PRINT_SWITCH_V_I = ["print_switch_vi"]
|
||||||
PRINT_LATCHUPS = ["print-latchups", "131"]
|
PRINT_LATCHUPS = ["print_latchups"]
|
||||||
GET_PARAM = ["get-param", "132"]
|
GET_PARAM = ["get_param"]
|
||||||
SET_PARAM = ["set-param", "133"]
|
SET_INTEGER_PARAM = ["set_int_param"]
|
||||||
|
SAVE_TABLE = ["save_table"]
|
||||||
|
RESET_GND_WATCHDOG = ["reset_gnd_wdt"]
|
||||||
|
SAVE_TABLE_DEFAULT = ["save_table_default"]
|
||||||
|
LOAD_TABLE = ["load_table"]
|
||||||
|
REQUEST_CONFIG_TABLE = ["cfg_table"]
|
||||||
|
|
||||||
|
|
||||||
class GsInfo:
|
class GsInfo:
|
||||||
REQUEST_CORE_HK_ONCE = "Requesting Core HK once"
|
REQUEST_CORE_HK_ONCE = "Requesting Core HK once"
|
||||||
REQUEST_AUX_HK_ONCE = "Requesting Aux HK once"
|
REQUEST_AUX_HK_ONCE = "Requesting Aux HK once"
|
||||||
PRINT_SWITCH_V_I = "Print Switch V I Info"
|
PRINT_SWITCH_V_I = "Print Switch V I Info"
|
||||||
|
PRINT_LATCHUPS = "Print latchups"
|
||||||
GET_PARAMETER = "Get parameter"
|
GET_PARAMETER = "Get parameter"
|
||||||
SET_PARAMETER = "Set parameter"
|
SET_PARAMETER = "Set integer parameter"
|
||||||
|
REQUEST_CONFIG_TABLE = "Request Config Table"
|
||||||
|
RESET_GND_WATCHDOG = "Reset GND watchdog"
|
||||||
|
SAVE_TABLE = "Save table non-volatile (file)"
|
||||||
|
SAVE_TABLE_DEFAULT = "Save table non-volatile (default)"
|
||||||
|
LOAD_TABLE = "Load Table"
|
||||||
|
|
||||||
|
|
||||||
class SetIds:
|
class SetIds:
|
||||||
@ -55,9 +71,20 @@ class SetIds:
|
|||||||
ACU_AUX = 8
|
ACU_AUX = 8
|
||||||
|
|
||||||
|
|
||||||
|
class ParamTypes(enum.Enum):
|
||||||
|
U8 = 0
|
||||||
|
U16 = 1
|
||||||
|
U32 = 2
|
||||||
|
I8 = 3
|
||||||
|
I16 = 4
|
||||||
|
I32 = 5
|
||||||
|
FLOAT = 6
|
||||||
|
STR = 7
|
||||||
|
|
||||||
|
|
||||||
class TableIds:
|
class TableIds:
|
||||||
config = 1
|
CONFIG = 1
|
||||||
hk = 4
|
HK = 4
|
||||||
|
|
||||||
|
|
||||||
class TableEntry:
|
class TableEntry:
|
||||||
@ -65,7 +92,7 @@ class TableEntry:
|
|||||||
uint16_size = 2
|
uint16_size = 2
|
||||||
uint32_size = 4
|
uint32_size = 4
|
||||||
|
|
||||||
def __init__(self, parameter_address: bytearray, parameter_size):
|
def __init__(self, parameter_address: bytes, parameter_size):
|
||||||
self.parameter_address = parameter_address
|
self.parameter_address = parameter_address
|
||||||
self.parameter_size = parameter_size
|
self.parameter_size = parameter_size
|
||||||
|
|
||||||
@ -75,6 +102,12 @@ class Channel:
|
|||||||
off = 0
|
off = 0
|
||||||
|
|
||||||
|
|
||||||
|
def pack_request_config_command(object_id: bytes) -> PusTelecommand:
|
||||||
|
return make_fsfw_action_cmd(
|
||||||
|
object_id=object_id, action_id=GomspaceDeviceActionIds.REQUEST_CONFIG_TABLE
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def pack_get_param_command(
|
def pack_get_param_command(
|
||||||
object_id: bytes,
|
object_id: bytes,
|
||||||
table_id: int,
|
table_id: int,
|
||||||
@ -95,51 +128,134 @@ def pack_get_param_command(
|
|||||||
else:
|
else:
|
||||||
app_data += memory_address
|
app_data += memory_address
|
||||||
app_data += struct.pack("!B", parameter_size)
|
app_data += struct.pack("!B", parameter_size)
|
||||||
return generate_action_command(
|
return make_fsfw_action_cmd(
|
||||||
object_id=object_id,
|
object_id=object_id,
|
||||||
action_id=GomspaceDeviceActionIds.PARAM_GET,
|
action_id=GomspaceDeviceActionIds.PARAM_GET,
|
||||||
app_data=app_data,
|
user_data=app_data,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def pack_set_param_command(
|
def pack_set_float_param_command(
|
||||||
object_id: bytes,
|
object_id: bytes, memory_address: bytes, parameter: float
|
||||||
memory_address: bytes,
|
|
||||||
parameter_size: int,
|
|
||||||
parameter: int,
|
|
||||||
ssc: int = 0,
|
|
||||||
) -> PusTelecommand:
|
) -> PusTelecommand:
|
||||||
"""Function to generate a command to set a parameter
|
|
||||||
:param object_id: The object id of the gomspace device handler.
|
|
||||||
:param memory_address: Address offset within table of the value to set.
|
|
||||||
:param parameter: The parameter value to set.
|
|
||||||
:param parameter_size: Size of the value to set. There are uint8_t, uint16_t and uint32_t
|
|
||||||
in the device tables.
|
|
||||||
:param ssc:
|
|
||||||
:return: The command as bytearray.
|
|
||||||
"""
|
|
||||||
action_id = GomspaceDeviceActionIds.PARAM_SET
|
action_id = GomspaceDeviceActionIds.PARAM_SET
|
||||||
app_data = bytearray()
|
app_data = bytearray()
|
||||||
app_data += memory_address
|
app_data += memory_address
|
||||||
app_data.append(parameter_size)
|
app_data.append(4)
|
||||||
if parameter_size == 1:
|
app_data += struct.pack("!f", parameter)
|
||||||
app_data.append(parameter)
|
return make_fsfw_action_cmd(
|
||||||
elif parameter_size == 2:
|
object_id=object_id, action_id=action_id, user_data=app_data
|
||||||
app_data += struct.pack("!H", parameter)
|
|
||||||
elif parameter_size == 4:
|
|
||||||
byte_one = 0xFF000000 & parameter >> 24
|
|
||||||
byte_two = 0xFF0000 & parameter >> 16
|
|
||||||
byte_three = 0xFF00 & parameter >> 8
|
|
||||||
byte_four = 0xFF & parameter
|
|
||||||
app_data.append(byte_one)
|
|
||||||
app_data.append(byte_two)
|
|
||||||
app_data.append(byte_three)
|
|
||||||
app_data.append(byte_four)
|
|
||||||
return generate_action_command(
|
|
||||||
object_id=object_id, action_id=action_id, app_data=app_data, ssc=ssc
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def pack_set_u8_param_command(
|
||||||
|
object_id: bytes, memory_address: bytes, parameter: int
|
||||||
|
) -> PusTelecommand:
|
||||||
|
action_id = GomspaceDeviceActionIds.PARAM_SET
|
||||||
|
app_data = bytearray()
|
||||||
|
app_data += memory_address
|
||||||
|
app_data.append(1)
|
||||||
|
app_data.append(parameter)
|
||||||
|
return make_fsfw_action_cmd(
|
||||||
|
object_id=object_id, action_id=action_id, user_data=app_data
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def pack_set_i8_param_command(
|
||||||
|
object_id: bytes, memory_address: bytes, parameter: int
|
||||||
|
) -> PusTelecommand:
|
||||||
|
action_id = GomspaceDeviceActionIds.PARAM_SET
|
||||||
|
app_data = bytearray()
|
||||||
|
app_data += memory_address
|
||||||
|
app_data.append(1)
|
||||||
|
app_data += struct.pack("!b", parameter)
|
||||||
|
return make_fsfw_action_cmd(
|
||||||
|
object_id=object_id, action_id=action_id, user_data=app_data
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def pack_set_u16_param_command(
|
||||||
|
object_id: bytes, memory_address: bytes, parameter: int
|
||||||
|
) -> PusTelecommand:
|
||||||
|
action_id = GomspaceDeviceActionIds.PARAM_SET
|
||||||
|
app_data = bytearray()
|
||||||
|
app_data += memory_address
|
||||||
|
app_data.append(2)
|
||||||
|
app_data += struct.pack("!H", parameter)
|
||||||
|
return make_fsfw_action_cmd(
|
||||||
|
object_id=object_id, action_id=action_id, user_data=app_data
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def pack_set_i16_param_command(
|
||||||
|
object_id: bytes, memory_address: bytes, parameter: int
|
||||||
|
) -> PusTelecommand:
|
||||||
|
action_id = GomspaceDeviceActionIds.PARAM_SET
|
||||||
|
app_data = bytearray()
|
||||||
|
app_data += memory_address
|
||||||
|
app_data.append(2)
|
||||||
|
app_data += struct.pack("!h", parameter)
|
||||||
|
return make_fsfw_action_cmd(
|
||||||
|
object_id=object_id, action_id=action_id, user_data=app_data
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def pack_set_u32_param_command(object_id: bytes, memory_address: bytes, parameter: int):
|
||||||
|
action_id = GomspaceDeviceActionIds.PARAM_SET
|
||||||
|
app_data = bytearray()
|
||||||
|
app_data += memory_address
|
||||||
|
app_data.append(4)
|
||||||
|
app_data += struct.pack("!I", parameter)
|
||||||
|
return make_fsfw_action_cmd(
|
||||||
|
object_id=object_id, action_id=action_id, user_data=app_data
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def pack_set_i32_param_command(object_id: bytes, memory_address: bytes, parameter: int):
|
||||||
|
action_id = GomspaceDeviceActionIds.PARAM_SET
|
||||||
|
app_data = bytearray()
|
||||||
|
app_data += memory_address
|
||||||
|
app_data.append(4)
|
||||||
|
app_data += struct.pack("!i", parameter)
|
||||||
|
return make_fsfw_action_cmd(
|
||||||
|
object_id=object_id, action_id=action_id, user_data=app_data
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def prompt_and_pack_get_param_command(q: DefaultPusQueueHelper, object_id: ObjectIdU32):
|
||||||
|
table_id = int(input("Specify table ID: "))
|
||||||
|
memory_address = int(input("Specify memory address: 0x"), 16)
|
||||||
|
parameter_size = int(input("Specify parameter size: "))
|
||||||
|
q.add_pus_tc(
|
||||||
|
pack_get_param_command(
|
||||||
|
object_id.as_bytes, table_id, memory_address, parameter_size
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def prompt_and_pack_set_integer_param_command(
|
||||||
|
q: DefaultPusQueueHelper, object_id: ObjectIdU32, ptype: ParamTypes
|
||||||
|
):
|
||||||
|
memory_address = int(input("Specify memory address: 0x"), 16)
|
||||||
|
memory_address = struct.pack("!H", memory_address)
|
||||||
|
parameter = int(input("Specify parameter: "))
|
||||||
|
if ptype == ParamTypes.U8:
|
||||||
|
cmd = pack_set_u8_param_command(object_id.as_bytes, memory_address, parameter)
|
||||||
|
elif ptype == ParamTypes.U16:
|
||||||
|
cmd = pack_set_u16_param_command(object_id.as_bytes, memory_address, parameter)
|
||||||
|
elif ptype == ParamTypes.U32:
|
||||||
|
cmd = pack_set_u16_param_command(object_id.as_bytes, memory_address, parameter)
|
||||||
|
elif ptype == ParamTypes.I8:
|
||||||
|
cmd = pack_set_i8_param_command(object_id.as_bytes, memory_address, parameter)
|
||||||
|
elif ptype == ParamTypes.I16:
|
||||||
|
cmd = pack_set_i16_param_command(object_id.as_bytes, memory_address, parameter)
|
||||||
|
elif ptype == ParamTypes.I32:
|
||||||
|
cmd = pack_set_i32_param_command(object_id.as_bytes, memory_address, parameter)
|
||||||
|
else:
|
||||||
|
raise ValueError(f"Invalid parameter type {ptype} for this function")
|
||||||
|
q.add_pus_tc(cmd)
|
||||||
|
|
||||||
|
|
||||||
def pack_ping_command(object_id: ObjectIdU32, data: bytearray) -> PusTelecommand:
|
def pack_ping_command(object_id: ObjectIdU32, data: bytearray) -> PusTelecommand:
|
||||||
""" " Function to generate the command to ping a gomspace device
|
""" " Function to generate the command to ping a gomspace device
|
||||||
@param object_id Object Id of the gomspace device handler.
|
@param object_id Object Id of the gomspace device handler.
|
||||||
@ -148,18 +264,18 @@ def pack_ping_command(object_id: ObjectIdU32, data: bytearray) -> PusTelecommand
|
|||||||
@note The ping request sends the specified data to a gompsace device. These
|
@note The ping request sends the specified data to a gompsace device. These
|
||||||
data are simply copied by the device and then sent back.
|
data are simply copied by the device and then sent back.
|
||||||
"""
|
"""
|
||||||
return generate_action_command(
|
return make_fsfw_action_cmd(
|
||||||
object_id=object_id.as_bytes,
|
object_id=object_id.as_bytes,
|
||||||
action_id=GomspaceDeviceActionIds.PING,
|
action_id=GomspaceDeviceActionIds.PING,
|
||||||
app_data=data,
|
user_data=data,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def pack_gnd_wdt_reset_command(object_id: ObjectIdU32) -> PusTelecommand:
|
def pack_gnd_wdt_reset_command(object_id: ObjectIdBase) -> PusTelecommand:
|
||||||
""" " Function to generate the command to reset the watchdog of a gomspace device.
|
""" " Function to generate the command to reset the watchdog of a gomspace device.
|
||||||
@param object_id Object Id of the gomspace device handler.
|
@param object_id Object Id of the gomspace device handler.
|
||||||
"""
|
"""
|
||||||
return generate_action_command(
|
return make_fsfw_action_cmd(
|
||||||
object_id=object_id.as_bytes, action_id=GomspaceDeviceActionIds.WDT_RESET
|
object_id=object_id.as_bytes, action_id=GomspaceDeviceActionIds.WDT_RESET
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -168,7 +284,7 @@ def pack_reboot_command(object_id: ObjectIdU32) -> PusTelecommand:
|
|||||||
"""Function to generate the command which triggers a reboot of a gomspace device
|
"""Function to generate the command which triggers a reboot of a gomspace device
|
||||||
@param object_id The object id of the gomspace device handler.
|
@param object_id The object id of the gomspace device handler.
|
||||||
"""
|
"""
|
||||||
return generate_action_command(
|
return make_fsfw_action_cmd(
|
||||||
object_id=object_id.as_bytes, action_id=GomspaceDeviceActionIds.REBOOT
|
object_id=object_id.as_bytes, action_id=GomspaceDeviceActionIds.REBOOT
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -178,6 +294,6 @@ def pack_request_full_hk_table_command(object_id: ObjectIdU32) -> PusTelecommand
|
|||||||
device.
|
device.
|
||||||
@param object_id The object id of the gomspace device handler.
|
@param object_id The object id of the gomspace device handler.
|
||||||
"""
|
"""
|
||||||
return generate_action_command(
|
return make_fsfw_action_cmd(
|
||||||
object_id=object_id.as_bytes, action_id=GomspaceDeviceActionIds.REQUEST_HK_TABLE
|
object_id=object_id.as_bytes, action_id=GomspaceDeviceActionIds.REQUEST_HK_TABLE
|
||||||
)
|
)
|
||||||
|
@ -2,20 +2,30 @@ from gomspace.gomspace_common import TableEntry
|
|||||||
|
|
||||||
|
|
||||||
class PduConfigTable:
|
class PduConfigTable:
|
||||||
out_en_0 = TableEntry(bytearray([0x00, 0x48]), TableEntry.uint8_size)
|
out_en_0 = TableEntry(bytes([0x00, 0x48]), TableEntry.uint8_size)
|
||||||
out_en_1 = TableEntry(bytearray([0x00, 0x49]), TableEntry.uint8_size)
|
out_en_1 = TableEntry(bytes([0x00, 0x49]), TableEntry.uint8_size)
|
||||||
out_en_2 = TableEntry(bytearray([0x00, 0x4A]), TableEntry.uint8_size)
|
out_en_2 = TableEntry(bytes([0x00, 0x4A]), TableEntry.uint8_size)
|
||||||
out_en_3 = TableEntry(bytearray([0x00, 0x4B]), TableEntry.uint8_size)
|
out_en_3 = TableEntry(bytes([0x00, 0x4B]), TableEntry.uint8_size)
|
||||||
out_en_4 = TableEntry(bytearray([0x00, 0x4C]), TableEntry.uint8_size)
|
out_en_4 = TableEntry(bytes([0x00, 0x4C]), TableEntry.uint8_size)
|
||||||
out_en_5 = TableEntry(bytearray([0x00, 0x4D]), TableEntry.uint8_size)
|
out_en_5 = TableEntry(bytes([0x00, 0x4D]), TableEntry.uint8_size)
|
||||||
out_en_6 = TableEntry(bytearray([0x00, 0x4E]), TableEntry.uint8_size)
|
out_en_6 = TableEntry(bytes([0x00, 0x4E]), TableEntry.uint8_size)
|
||||||
out_en_7 = TableEntry(bytearray([0x00, 0x4F]), TableEntry.uint8_size)
|
out_en_7 = TableEntry(bytes([0x00, 0x4F]), TableEntry.uint8_size)
|
||||||
out_en_8 = TableEntry(bytearray([0x00, 0x50]), TableEntry.uint8_size)
|
out_en_8 = TableEntry(bytes([0x00, 0x50]), TableEntry.uint8_size)
|
||||||
# When channel consumes more than cur_lu_lim, channel is turned of immediately
|
|
||||||
|
# When channel consumes more than cur_lu_lim, channel is turned off immediately
|
||||||
cur_lu_lim_0 = TableEntry(bytearray([0x00, 0xB8]), TableEntry.uint16_size)
|
cur_lu_lim_0 = TableEntry(bytearray([0x00, 0xB8]), TableEntry.uint16_size)
|
||||||
|
INIT_OUT_SAFE_CH_0 = TableEntry(bytes([0x00, 0x80]), TableEntry.uint8_size)
|
||||||
|
INIT_OUT_SAFE_CH_1 = TableEntry(bytes([0x00, 0x80 + 1]), TableEntry.uint8_size)
|
||||||
|
INIT_OUT_SAFE_CH_2 = TableEntry(bytes([0x00, 0x80 + 2]), TableEntry.uint8_size)
|
||||||
|
INIT_OUT_SAFE_CH_3 = TableEntry(bytes([0x00, 0x80 + 3]), TableEntry.uint8_size)
|
||||||
|
INIT_OUT_SAFE_CH_4 = TableEntry(bytes([0x00, 0x80 + 4]), TableEntry.uint8_size)
|
||||||
|
INIT_OUT_SAFE_CH_5 = TableEntry(bytes([0x00, 0x80 + 5]), TableEntry.uint8_size)
|
||||||
|
INIT_OUT_SAFE_CH_6 = TableEntry(bytes([0x00, 0x80 + 6]), TableEntry.uint8_size)
|
||||||
|
INIT_OUT_SAFE_CH_7 = TableEntry(bytes([0x00, 0x80 + 7]), TableEntry.uint8_size)
|
||||||
|
INIT_OUT_SAFE_CH_8 = TableEntry(bytes([0x00, 0x80 + 8]), TableEntry.uint8_size)
|
||||||
|
|
||||||
|
|
||||||
PDU_CONFIG_LIST = [
|
OUT_ENABLE_LIST = [
|
||||||
PduConfigTable.out_en_0,
|
PduConfigTable.out_en_0,
|
||||||
PduConfigTable.out_en_1,
|
PduConfigTable.out_en_1,
|
||||||
PduConfigTable.out_en_2,
|
PduConfigTable.out_en_2,
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
from pus_tc.devs.bpx_batt import BpxOpCodes
|
from pus_tc.devs.bpx_batt import BpxOpCodes
|
||||||
|
|
||||||
from config.definitions import CustomServiceList
|
from config.definitions import CustomServiceList
|
||||||
from tmtccmd.config import TmtcDefinitionWrapper, OpCodeEntry
|
from tmtccmd.config import TmtcDefinitionWrapper, OpCodeEntry, CoreServiceList
|
||||||
from tmtccmd.config.tmtc import (
|
from tmtccmd.config.tmtc import (
|
||||||
tmtc_definitions_provider,
|
tmtc_definitions_provider,
|
||||||
call_all_definitions_providers,
|
call_all_definitions_providers,
|
||||||
@ -14,6 +14,20 @@ def get_eive_service_op_code_dict() -> TmtcDefinitionWrapper:
|
|||||||
the :py:func:`tmtc_definitions_provider` decorator.
|
the :py:func:`tmtc_definitions_provider` decorator.
|
||||||
"""
|
"""
|
||||||
def_wrapper = get_default_tmtc_defs()
|
def_wrapper = get_default_tmtc_defs()
|
||||||
|
srv_5 = OpCodeEntry()
|
||||||
|
srv_5.add("0", "Event Test")
|
||||||
|
def_wrapper.add_service(
|
||||||
|
name=CoreServiceList.SERVICE_5.value,
|
||||||
|
info="PUS Service 5 Event",
|
||||||
|
op_code_entry=srv_5,
|
||||||
|
)
|
||||||
|
srv_17 = OpCodeEntry()
|
||||||
|
srv_17.add("0", "Ping Test")
|
||||||
|
def_wrapper.add_service(
|
||||||
|
name=CoreServiceList.SERVICE_17_ALT,
|
||||||
|
info="PUS Service 17 Test",
|
||||||
|
op_code_entry=srv_17,
|
||||||
|
)
|
||||||
call_all_definitions_providers(def_wrapper)
|
call_all_definitions_providers(def_wrapper)
|
||||||
return def_wrapper
|
return def_wrapper
|
||||||
|
|
||||||
@ -191,89 +205,9 @@ def add_imtq_cmds(defs: TmtcDefinitionWrapper):
|
|||||||
defs.add_service(CustomServiceList.IMTQ.value, "IMQT Device", oce)
|
defs.add_service(CustomServiceList.IMTQ.value, "IMQT Device", oce)
|
||||||
|
|
||||||
|
|
||||||
@tmtc_definitions_provider
|
|
||||||
def add_ploc_mpsoc_cmds(defs: TmtcDefinitionWrapper):
|
|
||||||
oce = OpCodeEntry()
|
|
||||||
oce.add("0", "Ploc MPSoC: Set mode off")
|
|
||||||
oce.add("1", "Ploc MPSoC: Set mode on")
|
|
||||||
oce.add("2", "Ploc MPSoC: Set mode normal")
|
|
||||||
oce.add("3", "Ploc MPSoC: Memory write")
|
|
||||||
oce.add("4", "Ploc MPSoC: Memory read")
|
|
||||||
oce.add("5", "Ploc MPSoC: Flash write")
|
|
||||||
oce.add("6", "Ploc MPSoC: Flash delete")
|
|
||||||
oce.add("7", "Ploc MPSoC: Replay start")
|
|
||||||
oce.add("8", "Ploc MPSoC: Replay stop")
|
|
||||||
oce.add("9", "Ploc MPSoC: Downlink pwr on")
|
|
||||||
oce.add("10", "Ploc MPSoC: Downlink pwr off")
|
|
||||||
oce.add("11", "Ploc MPSoC: Replay write sequence")
|
|
||||||
oce.add("12", "Ploc MPSoC: OBSW reset sequence count")
|
|
||||||
oce.add("13", "Ploc MPSoC: Read DEADBEEF address")
|
|
||||||
oce.add("14", "Ploc MPSoC: Mode replay")
|
|
||||||
oce.add("15", "Ploc MPSoC: Mode idle")
|
|
||||||
oce.add("16", "Ploc MPSoC: Tc cam command send")
|
|
||||||
oce.add("17", "Ploc MPSoC: Set UART TX tristate")
|
|
||||||
oce.add("18", "Ploc MPSoC: Relesase UART TX")
|
|
||||||
defs.add_service(CustomServiceList.PLOC_MPSOC.value, "Ploc MPSoC", oce)
|
|
||||||
|
|
||||||
|
|
||||||
@tmtc_definitions_provider
|
|
||||||
def add_ploc_supv_cmds(defs: TmtcDefinitionWrapper):
|
|
||||||
oce = OpCodeEntry()
|
|
||||||
oce.add("0", "PLOC Memory Dumper: MRAM dump")
|
|
||||||
defs.add_service(
|
|
||||||
CustomServiceList.PLOC_MEMORY_DUMPER.value, "PLOC Memory Dumper", oce
|
|
||||||
)
|
|
||||||
oce = OpCodeEntry()
|
|
||||||
oce.add("1", "PLOC Supervisor: Set mode off")
|
|
||||||
oce.add("2", "PLOC Supervisor: Set mode normal")
|
|
||||||
oce.add("3", "PLOC Supervisor: Get HK Report")
|
|
||||||
oce.add("5", "PLOC Supervisor: Start MPSoC")
|
|
||||||
oce.add("6", "PLOC Supervisor: Shutdown MPSoC")
|
|
||||||
oce.add("7", "PLOC Supervisor: Select MPSoC boot image")
|
|
||||||
oce.add("8", "PLOC Supervisor: Set max restart tries")
|
|
||||||
oce.add("9", "PLOC Supervisor: Reset MPSoC")
|
|
||||||
oce.add("10", "PLOC Supervisor: Set time reference")
|
|
||||||
oce.add("11", "PLOC Supervisor: Set boot timeout")
|
|
||||||
oce.add("12", "PLOC Supervisor: Disable Hk")
|
|
||||||
oce.add("13", "PLOC Supervisor: Request boot status report")
|
|
||||||
oce.add("17", "PLOC Supervisor: Enable latchup alert")
|
|
||||||
oce.add("18", "PLOC Supervisor: Disable latchup alert")
|
|
||||||
oce.add("20", "PLOC Supervisor: Set alert limit")
|
|
||||||
oce.add("23", "PLOC Supervisor: Set ADC enabled channels")
|
|
||||||
oce.add("24", "PLOC Supervisor: Set ADC window and stride")
|
|
||||||
oce.add("25", "PLOC Supervisor: Set ADC threshold")
|
|
||||||
oce.add("26", "PLOC Supervisor: Request latchup status report")
|
|
||||||
oce.add("27", "PLOC Supervisor: Copy ADC data to MRAM")
|
|
||||||
oce.add("30", "PLOC Supervisor: Run auto EM tests")
|
|
||||||
oce.add("31", "PLOC Supervisor: MRAM Wipe")
|
|
||||||
oce.add("35", "PLOC Supervisor: Set GPIO")
|
|
||||||
oce.add("36", "PLOC Supervisor: Read GPIO")
|
|
||||||
oce.add("37", "PLOC Supervisor: Restart supervisor")
|
|
||||||
oce.add("38", "PLOC Supervisor: Factory reset clear all")
|
|
||||||
oce.add("39", "PLOC Supervisor: Factory reset clear mirror entries")
|
|
||||||
oce.add("40", "PLOC Supervisor: Factory reset clear circular entries")
|
|
||||||
oce.add("42", "PLOC Supervisor: Perform update")
|
|
||||||
oce.add("43", "PLOC Supervisor: Terminate supervisor process")
|
|
||||||
oce.add("44", "PLOC Supervisor: Start MPSoC quiet")
|
|
||||||
oce.add("45", "PLOC Supervisor: Set shutdown timeout")
|
|
||||||
oce.add("46", "PLOC Supervisor: Factory flash")
|
|
||||||
oce.add("47", "PLOC Supervisor: Enable auto TM")
|
|
||||||
oce.add("48", "PLOC Supervisor: Disable auto TM")
|
|
||||||
oce.add("51", "PLOC Supervisor: Logging request event buffers")
|
|
||||||
oce.add("52", "PLOC Supervisor: Logging clear counters")
|
|
||||||
oce.add("53", "PLOC Supervisor: Logging set topic")
|
|
||||||
oce.add("54", "PLOC Supervisor: Logging request counters")
|
|
||||||
oce.add("55", "PLOC Supervisor: Request ADC Report")
|
|
||||||
oce.add("56", "PLOC Supervisor: Reset PL")
|
|
||||||
oce.add("57", "PLOC Supervisor: Enable NVMs")
|
|
||||||
oce.add("58", "PLOC Supervisor: Continue update")
|
|
||||||
defs.add_service(CustomServiceList.PLOC_SUPV.value, "PLOC Supervisor", oce)
|
|
||||||
|
|
||||||
|
|
||||||
@tmtc_definitions_provider
|
@tmtc_definitions_provider
|
||||||
def add_system_cmds(defs: TmtcDefinitionWrapper):
|
def add_system_cmds(defs: TmtcDefinitionWrapper):
|
||||||
from pus_tc.system.acs import AcsOpCodes, SusOpCodes
|
from pus_tc.system.acs import AcsOpCodes, SusOpCodes
|
||||||
import pus_tc.system.tcs as tcs
|
|
||||||
import pus_tc.system.controllers as controllers
|
import pus_tc.system.controllers as controllers
|
||||||
|
|
||||||
oce = OpCodeEntry()
|
oce = OpCodeEntry()
|
||||||
|
@ -0,0 +1 @@
|
|||||||
|
|
||||||
|
@ -1,8 +1,9 @@
|
|||||||
from config.definitions import CustomServiceList
|
from config.definitions import CustomServiceList
|
||||||
from config.object_ids import BPX_HANDLER_ID
|
from config.object_ids import BPX_HANDLER_ID
|
||||||
from tmtccmd import DefaultProcedureInfo
|
from tmtccmd import DefaultProcedureInfo, TcHandlerBase
|
||||||
from tmtccmd.tc import DefaultPusQueueHelper, service_provider
|
from tmtccmd.tc import DefaultPusQueueHelper, service_provider
|
||||||
from tmtccmd.tc.pus_8_funccmd import generate_action_command
|
from tmtccmd.tc.decorator import ServiceProviderParams
|
||||||
|
from tmtccmd.tc.pus_8_funccmd import make_fsfw_action_cmd
|
||||||
from tmtccmd.tc.pus_3_fsfw_hk import generate_one_hk_command, make_sid
|
from tmtccmd.tc.pus_3_fsfw_hk import generate_one_hk_command, make_sid
|
||||||
|
|
||||||
|
|
||||||
@ -27,9 +28,9 @@ class BpxOpCodes:
|
|||||||
|
|
||||||
|
|
||||||
@service_provider(CustomServiceList.BPX_BATTERY.value)
|
@service_provider(CustomServiceList.BPX_BATTERY.value)
|
||||||
def pack_bpx_commands(
|
def pack_bpx_commands(p: ServiceProviderParams):
|
||||||
_info: DefaultProcedureInfo, q: DefaultPusQueueHelper, op_code: str
|
op_code = p.op_code
|
||||||
):
|
q = p.queue_helper
|
||||||
if op_code in BpxOpCodes.HK:
|
if op_code in BpxOpCodes.HK:
|
||||||
q.add_log_cmd("Requesting BPX battery HK set")
|
q.add_log_cmd("Requesting BPX battery HK set")
|
||||||
sid = make_sid(object_id=BPX_HANDLER_ID, set_id=BpxSetIds.GET_HK_SET)
|
sid = make_sid(object_id=BPX_HANDLER_ID, set_id=BpxSetIds.GET_HK_SET)
|
||||||
@ -37,14 +38,14 @@ def pack_bpx_commands(
|
|||||||
if op_code in BpxOpCodes.RST_BOOT_CNT:
|
if op_code in BpxOpCodes.RST_BOOT_CNT:
|
||||||
q.add_log_cmd("Resetting reboot counters")
|
q.add_log_cmd("Resetting reboot counters")
|
||||||
q.add_pus_tc(
|
q.add_pus_tc(
|
||||||
generate_action_command(
|
make_fsfw_action_cmd(
|
||||||
object_id=BPX_HANDLER_ID, action_id=BpxActionIds.RESET_COUNTERS
|
object_id=BPX_HANDLER_ID, action_id=BpxActionIds.RESET_COUNTERS
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
if op_code in BpxOpCodes.REQUEST_CFG:
|
if op_code in BpxOpCodes.REQUEST_CFG:
|
||||||
q.add_log_cmd("Requesting configuration struct")
|
q.add_log_cmd("Requesting configuration struct")
|
||||||
q.add_pus_tc(
|
q.add_pus_tc(
|
||||||
generate_action_command(
|
make_fsfw_action_cmd(
|
||||||
object_id=BPX_HANDLER_ID, action_id=BpxActionIds.GET_CFG
|
object_id=BPX_HANDLER_ID, action_id=BpxActionIds.GET_CFG
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@ -55,7 +56,7 @@ def pack_bpx_commands(
|
|||||||
if op_code in BpxOpCodes.REBOOT:
|
if op_code in BpxOpCodes.REBOOT:
|
||||||
q.add_log_cmd("Rebooting BPX battery")
|
q.add_log_cmd("Rebooting BPX battery")
|
||||||
q.add_pus_tc(
|
q.add_pus_tc(
|
||||||
generate_action_command(
|
make_fsfw_action_cmd(
|
||||||
object_id=BPX_HANDLER_ID, action_id=BpxActionIds.REBOOT
|
object_id=BPX_HANDLER_ID, action_id=BpxActionIds.REBOOT
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
@ -1,461 +0,0 @@
|
|||||||
import enum
|
|
||||||
|
|
||||||
from config.object_ids import PDU_1_HANDLER_ID, PDU_2_HANDLER_ID
|
|
||||||
from gomspace.gomspace_common import (
|
|
||||||
pack_set_param_command,
|
|
||||||
Channel,
|
|
||||||
GomspaceOpCodes,
|
|
||||||
GsInfo,
|
|
||||||
SetIds,
|
|
||||||
)
|
|
||||||
from gomspace.gomspace_pdu_definitions import PDU_CONFIG_LIST
|
|
||||||
from tmtccmd.config import OpCodeEntry
|
|
||||||
from tmtccmd.tc import DefaultPusQueueHelper
|
|
||||||
from tmtccmd.tc.pus_3_fsfw_hk import (
|
|
||||||
make_sid,
|
|
||||||
generate_one_diag_command,
|
|
||||||
generate_one_hk_command,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
class Pdu1ChIndex(enum.IntEnum):
|
|
||||||
TCS = 0
|
|
||||||
SYRLINKS = 1
|
|
||||||
STR = 2
|
|
||||||
MGT = 3
|
|
||||||
SUS_N = 4
|
|
||||||
SCEX = 5
|
|
||||||
PLOC = 6
|
|
||||||
ACS_A = 7
|
|
||||||
|
|
||||||
|
|
||||||
class Pdu1InfoBase:
|
|
||||||
TCS = "Switch TCS Board"
|
|
||||||
SYRLINKS = "Switch Syrlinks (COM)"
|
|
||||||
STR = "Switch Startracker"
|
|
||||||
MGT = "Switch Magnetorquer"
|
|
||||||
SUS_N = "Switch Sun Sensor Board Nominal"
|
|
||||||
SCEX = "Switch Solar Cell Experiment"
|
|
||||||
PLOC = "Switch Payload On-Board Computer"
|
|
||||||
ACS_A = "Switch ACS Board A-Side"
|
|
||||||
|
|
||||||
|
|
||||||
class Pdu2InfoBase:
|
|
||||||
PL_PCDU_BAT_NOM = "Switch PL PCDU Nominal Battery Channel"
|
|
||||||
RW = "Switch Reaction Wheel"
|
|
||||||
HEATER = "Switch Heater"
|
|
||||||
SUS_R = "Switch Sun Sensor Board Redundant"
|
|
||||||
SOLAR_ARRAY_DEPL = "Switch Solar Array Deployment"
|
|
||||||
PL_PCDU_BAT_RED = "Switch PL PCDU Redundant Battery Channel"
|
|
||||||
ACS_B = "Switch ACS Board B-Side"
|
|
||||||
PL_CAM = "Switch Payload Camera"
|
|
||||||
|
|
||||||
|
|
||||||
class PowerInfo:
|
|
||||||
INFO_CORE = "Core Information"
|
|
||||||
INFO_AUX = "Auxiliary Information"
|
|
||||||
INFO_ALL = "All Information"
|
|
||||||
|
|
||||||
|
|
||||||
class Pdu2ChIndex(enum.IntEnum):
|
|
||||||
PL_PCDU_BAT_NOM = 1
|
|
||||||
RW = 2
|
|
||||||
HEATER = 3
|
|
||||||
SUS_R = 4
|
|
||||||
SOLAR_ARRAY_DEPL = 5
|
|
||||||
PL_PCDU_BAT_RED = 6
|
|
||||||
ACS_B = 7
|
|
||||||
PL_CAM = 8
|
|
||||||
|
|
||||||
|
|
||||||
class PowerOpCodes:
|
|
||||||
# PDU 1
|
|
||||||
TCS_ON = ["tcs-on"]
|
|
||||||
TCS_OFF = ["tcs-off"]
|
|
||||||
SYRLINKS_ON = ["syrlinks-on"]
|
|
||||||
SYRLINKS_OFF = ["syrlinks-off"]
|
|
||||||
STAR_TRACKER_ON = ["str-on"]
|
|
||||||
STAR_TRACKER_OFF = ["str-off"]
|
|
||||||
MGT_ON = ["mgt-on"]
|
|
||||||
MGT_OFF = ["mgt-off"]
|
|
||||||
SUS_N_ON = ["sus-nom-on"]
|
|
||||||
SUS_N_OFF = ["sus-nom-off"]
|
|
||||||
SCEX_ON = ["scex-on"]
|
|
||||||
SCEX_OFF = ["scex-off"]
|
|
||||||
PLOC_ON = ["ploc-on"]
|
|
||||||
PLOC_OFF = ["ploc-off"]
|
|
||||||
ACS_A_ON = ["acs-a-on"]
|
|
||||||
ACS_A_OFF = ["acs-a-off"]
|
|
||||||
|
|
||||||
# PDU 2
|
|
||||||
PL_PCDU_VBAT_NOM_ON = ["plpcdu-vbat-nom-on"]
|
|
||||||
PL_PCDU_VBAT_NOM_OFF = ["plpcdu-vbat-nom-off"]
|
|
||||||
RW_ON = ["rw-on"]
|
|
||||||
RW_OFF = ["rw-off"]
|
|
||||||
HEATER_ON = ["heater-on"]
|
|
||||||
HEATER_OFF = ["heater-off"]
|
|
||||||
SUS_R_ON = ["sus-red-on"]
|
|
||||||
SUS_R_OFF = ["sus-red-off"]
|
|
||||||
SOLAR_ARRAY_DEPL_ON = ["sa-depl-on"]
|
|
||||||
SOLAR_ARRAY_DEPL_OFF = ["sa-depl-off"]
|
|
||||||
PL_PCDU_VBAT_RED_ON = ["plpcdu-vbat-red-on"]
|
|
||||||
PL_PCDU_VBAT_RED_OFF = ["plpcdu-vbat-red-off"]
|
|
||||||
ACS_B_ON = ["acs-b-on"]
|
|
||||||
ACS_B_OFF = ["acs-b-off"]
|
|
||||||
PL_CAM_ON = ["cam-on"]
|
|
||||||
PL_CAM_OFF = ["cam-off"]
|
|
||||||
|
|
||||||
INFO_CORE = ["info"]
|
|
||||||
INFO_AUX = ["info-aux"]
|
|
||||||
INFO_ALL = ["info-all"]
|
|
||||||
|
|
||||||
|
|
||||||
def info_on_pdu1(base: str) -> str:
|
|
||||||
return "PDU1: " + base + " on"
|
|
||||||
|
|
||||||
|
|
||||||
def info_off_pdu1(base: str) -> str:
|
|
||||||
return "PDU1: " + base + " off"
|
|
||||||
|
|
||||||
|
|
||||||
def info_on_pdu2(base: str) -> str:
|
|
||||||
return "PDU2: " + base + " on"
|
|
||||||
|
|
||||||
|
|
||||||
def info_off_pdu2(base: str) -> str:
|
|
||||||
return "PDU2: " + base + " off"
|
|
||||||
|
|
||||||
|
|
||||||
def add_pdu1_common_defs(oce: OpCodeEntry):
|
|
||||||
oce.add(keys=PowerOpCodes.TCS_ON, info=info_on_pdu1(Pdu1InfoBase.TCS))
|
|
||||||
oce.add(keys=PowerOpCodes.TCS_OFF, info=info_off_pdu1(Pdu1InfoBase.TCS))
|
|
||||||
oce.add(keys=PowerOpCodes.STAR_TRACKER_ON, info=info_on_pdu1(Pdu1InfoBase.STR))
|
|
||||||
oce.add(keys=PowerOpCodes.STAR_TRACKER_OFF, info=info_off_pdu1(Pdu1InfoBase.STR))
|
|
||||||
oce.add(keys=PowerOpCodes.SUS_N_ON, info=info_on_pdu1(Pdu1InfoBase.SUS_N))
|
|
||||||
oce.add(keys=PowerOpCodes.SUS_N_OFF, info=info_off_pdu1(Pdu1InfoBase.SUS_N))
|
|
||||||
oce.add(keys=PowerOpCodes.ACS_A_ON, info=info_on_pdu1(Pdu1InfoBase.ACS_A))
|
|
||||||
oce.add(keys=PowerOpCodes.ACS_A_OFF, info=info_off_pdu1(Pdu1InfoBase.ACS_A))
|
|
||||||
oce.add(keys=PowerOpCodes.SYRLINKS_ON, info=info_on_pdu1(Pdu1InfoBase.SYRLINKS))
|
|
||||||
oce.add(keys=PowerOpCodes.SYRLINKS_OFF, info=info_off_pdu1(Pdu1InfoBase.SYRLINKS))
|
|
||||||
oce.add(keys=PowerOpCodes.MGT_ON, info=info_on_pdu1(Pdu1InfoBase.MGT))
|
|
||||||
oce.add(keys=PowerOpCodes.MGT_OFF, info=info_off_pdu1(Pdu1InfoBase.MGT))
|
|
||||||
oce.add(keys=PowerOpCodes.PLOC_ON, info=info_on_pdu1(Pdu1InfoBase.PLOC))
|
|
||||||
oce.add(keys=PowerOpCodes.PLOC_OFF, info=info_off_pdu1(Pdu1InfoBase.PLOC))
|
|
||||||
oce.add(keys=PowerOpCodes.SCEX_ON, info=info_on_pdu1(Pdu1InfoBase.SCEX))
|
|
||||||
oce.add(keys=PowerOpCodes.SCEX_OFF, info=info_off_pdu1(Pdu1InfoBase.SCEX))
|
|
||||||
|
|
||||||
|
|
||||||
def add_pdu2_common_defs(oce: OpCodeEntry):
|
|
||||||
oce.add(keys=PowerOpCodes.ACS_B_ON, info=info_on_pdu2(Pdu2InfoBase.ACS_B))
|
|
||||||
oce.add(keys=PowerOpCodes.ACS_B_OFF, info=info_off_pdu2(Pdu2InfoBase.ACS_B))
|
|
||||||
oce.add(keys=PowerOpCodes.SUS_R_ON, info=info_on_pdu2(Pdu2InfoBase.SUS_R))
|
|
||||||
oce.add(keys=PowerOpCodes.SUS_R_OFF, info=info_off_pdu2(Pdu2InfoBase.SUS_R))
|
|
||||||
oce.add(keys=PowerOpCodes.RW_ON, info=info_on_pdu2(Pdu2InfoBase.RW))
|
|
||||||
oce.add(keys=PowerOpCodes.RW_OFF, info=info_off_pdu2(Pdu2InfoBase.RW))
|
|
||||||
oce.add(
|
|
||||||
keys=PowerOpCodes.PL_PCDU_VBAT_NOM_ON,
|
|
||||||
info=info_on_pdu2(Pdu2InfoBase.PL_PCDU_BAT_NOM),
|
|
||||||
)
|
|
||||||
oce.add(
|
|
||||||
keys=PowerOpCodes.PL_PCDU_VBAT_NOM_OFF,
|
|
||||||
info=info_off_pdu2(Pdu2InfoBase.PL_PCDU_BAT_NOM),
|
|
||||||
)
|
|
||||||
oce.add(
|
|
||||||
keys=PowerOpCodes.PL_PCDU_VBAT_RED_ON,
|
|
||||||
info=info_on_pdu2(Pdu2InfoBase.PL_PCDU_BAT_RED),
|
|
||||||
)
|
|
||||||
oce.add(
|
|
||||||
keys=PowerOpCodes.PL_PCDU_VBAT_RED_OFF,
|
|
||||||
info=info_off_pdu2(Pdu2InfoBase.PL_PCDU_BAT_RED),
|
|
||||||
)
|
|
||||||
oce.add(keys=PowerOpCodes.HEATER_ON, info=info_on_pdu2(Pdu2InfoBase.HEATER))
|
|
||||||
oce.add(keys=PowerOpCodes.HEATER_OFF, info=info_off_pdu2(Pdu2InfoBase.HEATER))
|
|
||||||
oce.add(
|
|
||||||
keys=PowerOpCodes.SOLAR_ARRAY_DEPL_ON,
|
|
||||||
info=info_on_pdu2(Pdu2InfoBase.SOLAR_ARRAY_DEPL),
|
|
||||||
)
|
|
||||||
oce.add(
|
|
||||||
keys=PowerOpCodes.SOLAR_ARRAY_DEPL_OFF,
|
|
||||||
info=info_off_pdu2(Pdu2InfoBase.SOLAR_ARRAY_DEPL),
|
|
||||||
)
|
|
||||||
oce.add(keys=PowerOpCodes.PL_CAM_ON, info=info_on_pdu2(Pdu2InfoBase.PL_CAM))
|
|
||||||
oce.add(keys=PowerOpCodes.PL_CAM_OFF, info=info_off_pdu2(Pdu2InfoBase.PL_CAM))
|
|
||||||
|
|
||||||
|
|
||||||
def pdu1_cmds(q: DefaultPusQueueHelper, op_code: str):
|
|
||||||
if op_code in PowerOpCodes.TCS_ON:
|
|
||||||
tcs_on_cmd(q)
|
|
||||||
elif op_code in PowerOpCodes.TCS_OFF:
|
|
||||||
tcs_off_cmd(q)
|
|
||||||
elif op_code in PowerOpCodes.SYRLINKS_ON:
|
|
||||||
syrlinks_on_cmd(q)
|
|
||||||
elif op_code in PowerOpCodes.SYRLINKS_OFF:
|
|
||||||
syrlinks_off_cmd(q)
|
|
||||||
elif op_code in PowerOpCodes.STAR_TRACKER_ON:
|
|
||||||
startracker_on_cmd(q)
|
|
||||||
elif op_code in PowerOpCodes.STAR_TRACKER_OFF:
|
|
||||||
startracker_off_cmd(q)
|
|
||||||
elif op_code in PowerOpCodes.MGT_ON:
|
|
||||||
mgt_on_cmd(q)
|
|
||||||
elif op_code in PowerOpCodes.MGT_OFF:
|
|
||||||
mgt_off_cmd(q)
|
|
||||||
elif op_code in PowerOpCodes.SUS_N_ON:
|
|
||||||
sun_sensor_nominal_on_cmd(q)
|
|
||||||
elif op_code in PowerOpCodes.SUS_N_OFF:
|
|
||||||
sun_sensor_nominal_off_cmd(q)
|
|
||||||
elif op_code in PowerOpCodes.SCEX_ON:
|
|
||||||
solar_cell_experiment_on_cmd(q)
|
|
||||||
elif op_code in PowerOpCodes.SCEX_OFF:
|
|
||||||
solar_cell_experiment_off_cmd(q)
|
|
||||||
elif op_code in PowerOpCodes.PLOC_ON:
|
|
||||||
ploc_on_cmd(q)
|
|
||||||
elif op_code in PowerOpCodes.PLOC_OFF:
|
|
||||||
ploc_off_cmd(q)
|
|
||||||
elif op_code in PowerOpCodes.ACS_A_ON:
|
|
||||||
acs_board_a_on_cmd(q)
|
|
||||||
elif op_code in PowerOpCodes.ACS_A_OFF:
|
|
||||||
acs_board_a_off_cmd(q)
|
|
||||||
|
|
||||||
|
|
||||||
def pdu2_cmds(q: DefaultPusQueueHelper, op_code: str):
|
|
||||||
if op_code in PowerOpCodes.PL_PCDU_VBAT_NOM_ON:
|
|
||||||
pl_pcdu_bat_nom_on_cmd(q)
|
|
||||||
elif op_code in PowerOpCodes.PL_PCDU_VBAT_NOM_OFF:
|
|
||||||
pl_pcdu_bat_nom_off_cmd(q)
|
|
||||||
elif op_code in PowerOpCodes.RW_ON:
|
|
||||||
reaction_wheel_on_cmd(q)
|
|
||||||
elif op_code in PowerOpCodes.RW_OFF:
|
|
||||||
reaction_wheel_off_cmd(q)
|
|
||||||
elif op_code in PowerOpCodes.HEATER_ON:
|
|
||||||
heater_on_cmd(q)
|
|
||||||
elif op_code in PowerOpCodes.HEATER_OFF:
|
|
||||||
heater_off_cmd(q)
|
|
||||||
elif op_code in PowerOpCodes.SUS_R_ON:
|
|
||||||
sus_red_on_cmd(q)
|
|
||||||
elif op_code in PowerOpCodes.SUS_R_OFF:
|
|
||||||
sus_red_off_cmd(q)
|
|
||||||
elif op_code in PowerOpCodes.SOLAR_ARRAY_DEPL_ON:
|
|
||||||
solar_array_deployment_on_cmd(q)
|
|
||||||
elif op_code in PowerOpCodes.SOLAR_ARRAY_DEPL_OFF:
|
|
||||||
solar_array_deployment_off_cmd(q)
|
|
||||||
elif op_code in PowerOpCodes.PL_PCDU_VBAT_RED_ON:
|
|
||||||
pl_pcdu_bat_red_on_cmd(q)
|
|
||||||
elif op_code in PowerOpCodes.PL_PCDU_VBAT_RED_OFF:
|
|
||||||
pl_pcdu_bat_nom_off_cmd(q)
|
|
||||||
elif op_code in PowerOpCodes.ACS_B_ON:
|
|
||||||
acs_board_b_side_on_cmd(q)
|
|
||||||
elif op_code in PowerOpCodes.ACS_B_OFF:
|
|
||||||
acs_board_b_side_off_cmd(q)
|
|
||||||
elif op_code in PowerOpCodes.PL_CAM_ON:
|
|
||||||
payload_camera_on_cmd(q)
|
|
||||||
elif op_code in PowerOpCodes.PL_CAM_OFF:
|
|
||||||
payload_camera_off_cmd(q)
|
|
||||||
|
|
||||||
|
|
||||||
def pdu1_req_hk_cmds(q: DefaultPusQueueHelper, op_code: str):
|
|
||||||
if op_code in GomspaceOpCodes.REQUEST_CORE_HK_ONCE:
|
|
||||||
q.add_log_cmd(f"PDU1: {GsInfo.REQUEST_CORE_HK_ONCE}")
|
|
||||||
hk_sid = make_sid(object_id=PDU_1_HANDLER_ID, set_id=SetIds.PDU_1_CORE)
|
|
||||||
q.add_pus_tc(generate_one_diag_command(sid=hk_sid))
|
|
||||||
if op_code in GomspaceOpCodes.REQUEST_AUX_HK_ONCE:
|
|
||||||
q.add_log_cmd(f"PDU1: {GsInfo.REQUEST_AUX_HK_ONCE}")
|
|
||||||
hk_sid = make_sid(object_id=PDU_1_HANDLER_ID, set_id=SetIds.PDU_1_AUX)
|
|
||||||
q.add_pus_tc(generate_one_hk_command(sid=hk_sid))
|
|
||||||
|
|
||||||
|
|
||||||
def pdu2_req_hk_cmds(q: DefaultPusQueueHelper, op_code: str):
|
|
||||||
if op_code in GomspaceOpCodes.REQUEST_CORE_HK_ONCE:
|
|
||||||
q.add_log_cmd(f"PDU2: {GsInfo.REQUEST_CORE_HK_ONCE}")
|
|
||||||
hk_sid = make_sid(object_id=PDU_2_HANDLER_ID, set_id=SetIds.PDU_2_CORE)
|
|
||||||
q.add_pus_tc(generate_one_diag_command(sid=hk_sid))
|
|
||||||
if op_code in GomspaceOpCodes.REQUEST_AUX_HK_ONCE:
|
|
||||||
q.add_log_cmd(f"PDU2: {GsInfo.REQUEST_AUX_HK_ONCE}")
|
|
||||||
hk_sid = make_sid(object_id=PDU_2_HANDLER_ID, set_id=SetIds.PDU_2_AUX)
|
|
||||||
q.add_pus_tc(generate_one_hk_command(sid=hk_sid))
|
|
||||||
|
|
||||||
|
|
||||||
def pack_power_commands(q: DefaultPusQueueHelper, op_code: str):
|
|
||||||
pdu1_cmds(q, op_code)
|
|
||||||
pdu2_cmds(q, op_code)
|
|
||||||
if op_code in PowerOpCodes.INFO_CORE:
|
|
||||||
pdu1_req_hk_cmds(q, GomspaceOpCodes.REQUEST_CORE_HK_ONCE[0])
|
|
||||||
pdu2_req_hk_cmds(q, GomspaceOpCodes.REQUEST_CORE_HK_ONCE[0])
|
|
||||||
q.add_wait_seconds(3.0)
|
|
||||||
elif op_code in PowerOpCodes.INFO_AUX:
|
|
||||||
pdu1_req_hk_cmds(q, GomspaceOpCodes.REQUEST_AUX_HK_ONCE[0])
|
|
||||||
pdu2_req_hk_cmds(q, GomspaceOpCodes.REQUEST_AUX_HK_ONCE[0])
|
|
||||||
q.add_wait_seconds(3.0)
|
|
||||||
elif op_code in PowerOpCodes.INFO_ALL:
|
|
||||||
pdu1_req_hk_cmds(q, GomspaceOpCodes.REQUEST_CORE_HK_ONCE[0])
|
|
||||||
pdu2_req_hk_cmds(q, GomspaceOpCodes.REQUEST_CORE_HK_ONCE[0])
|
|
||||||
pdu1_req_hk_cmds(q, GomspaceOpCodes.REQUEST_AUX_HK_ONCE[0])
|
|
||||||
pdu2_req_hk_cmds(q, GomspaceOpCodes.REQUEST_AUX_HK_ONCE[0])
|
|
||||||
q.add_wait_seconds(3.0)
|
|
||||||
|
|
||||||
|
|
||||||
def tcs_on_cmd(q: DefaultPusQueueHelper):
|
|
||||||
generic_on_cmd(PDU_1_HANDLER_ID, q, Pdu1InfoBase.TCS, Pdu1ChIndex.TCS)
|
|
||||||
|
|
||||||
|
|
||||||
def tcs_off_cmd(q: DefaultPusQueueHelper):
|
|
||||||
generic_off_cmd(PDU_1_HANDLER_ID, q, Pdu1InfoBase.TCS, Pdu1ChIndex.TCS)
|
|
||||||
|
|
||||||
|
|
||||||
def syrlinks_on_cmd(q: DefaultPusQueueHelper):
|
|
||||||
generic_on_cmd(PDU_1_HANDLER_ID, q, Pdu1InfoBase.SYRLINKS, Pdu1ChIndex.SYRLINKS)
|
|
||||||
|
|
||||||
|
|
||||||
def syrlinks_off_cmd(q: DefaultPusQueueHelper):
|
|
||||||
generic_off_cmd(PDU_1_HANDLER_ID, q, Pdu1InfoBase.SYRLINKS, Pdu1ChIndex.SYRLINKS)
|
|
||||||
|
|
||||||
|
|
||||||
def startracker_on_cmd(q: DefaultPusQueueHelper):
|
|
||||||
generic_on_cmd(PDU_1_HANDLER_ID, q, Pdu1InfoBase.STR, Pdu1ChIndex.STR)
|
|
||||||
|
|
||||||
|
|
||||||
def startracker_off_cmd(q: DefaultPusQueueHelper):
|
|
||||||
generic_off_cmd(PDU_1_HANDLER_ID, q, Pdu1InfoBase.STR, Pdu1ChIndex.STR)
|
|
||||||
|
|
||||||
|
|
||||||
def mgt_on_cmd(q: DefaultPusQueueHelper):
|
|
||||||
generic_on_cmd(PDU_1_HANDLER_ID, q, Pdu1InfoBase.MGT, Pdu1ChIndex.MGT)
|
|
||||||
|
|
||||||
|
|
||||||
def mgt_off_cmd(q: DefaultPusQueueHelper):
|
|
||||||
generic_off_cmd(PDU_1_HANDLER_ID, q, Pdu1InfoBase.MGT, Pdu1ChIndex.MGT)
|
|
||||||
|
|
||||||
|
|
||||||
def sun_sensor_nominal_on_cmd(q: DefaultPusQueueHelper):
|
|
||||||
generic_on_cmd(PDU_1_HANDLER_ID, q, Pdu1InfoBase.SUS_N, Pdu1ChIndex.SUS_N)
|
|
||||||
|
|
||||||
|
|
||||||
def sun_sensor_nominal_off_cmd(q: DefaultPusQueueHelper):
|
|
||||||
generic_off_cmd(PDU_1_HANDLER_ID, q, Pdu1InfoBase.SUS_N, Pdu1ChIndex.SUS_N)
|
|
||||||
|
|
||||||
|
|
||||||
def solar_cell_experiment_on_cmd(q: DefaultPusQueueHelper):
|
|
||||||
generic_on_cmd(PDU_1_HANDLER_ID, q, Pdu1InfoBase.SCEX, Pdu1ChIndex.SCEX)
|
|
||||||
|
|
||||||
|
|
||||||
def solar_cell_experiment_off_cmd(q: DefaultPusQueueHelper):
|
|
||||||
generic_off_cmd(PDU_1_HANDLER_ID, q, Pdu1InfoBase.SCEX, Pdu1ChIndex.SCEX)
|
|
||||||
|
|
||||||
|
|
||||||
def ploc_on_cmd(q: DefaultPusQueueHelper):
|
|
||||||
generic_on_cmd(PDU_1_HANDLER_ID, q, Pdu1InfoBase.PLOC, Pdu1ChIndex.PLOC)
|
|
||||||
|
|
||||||
|
|
||||||
def ploc_off_cmd(q: DefaultPusQueueHelper):
|
|
||||||
generic_off_cmd(PDU_1_HANDLER_ID, q, Pdu1InfoBase.PLOC, Pdu1ChIndex.PLOC)
|
|
||||||
|
|
||||||
|
|
||||||
def acs_board_a_on_cmd(q: DefaultPusQueueHelper):
|
|
||||||
generic_on_cmd(PDU_1_HANDLER_ID, q, Pdu1InfoBase.ACS_A, Pdu1ChIndex.ACS_A)
|
|
||||||
|
|
||||||
|
|
||||||
def acs_board_a_off_cmd(q: DefaultPusQueueHelper):
|
|
||||||
generic_on_cmd(PDU_1_HANDLER_ID, q, Pdu1InfoBase.ACS_A, Pdu1ChIndex.ACS_A)
|
|
||||||
|
|
||||||
|
|
||||||
def pl_pcdu_bat_nom_on_cmd(q: DefaultPusQueueHelper):
|
|
||||||
generic_on_cmd(
|
|
||||||
PDU_2_HANDLER_ID, q, Pdu2InfoBase.PL_PCDU_BAT_NOM, Pdu2ChIndex.PL_PCDU_BAT_NOM
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
def pl_pcdu_bat_nom_off_cmd(q: DefaultPusQueueHelper):
|
|
||||||
generic_off_cmd(
|
|
||||||
PDU_2_HANDLER_ID, q, Pdu2InfoBase.PL_PCDU_BAT_NOM, Pdu2ChIndex.PL_PCDU_BAT_NOM
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
def reaction_wheel_on_cmd(q: DefaultPusQueueHelper):
|
|
||||||
generic_on_cmd(PDU_2_HANDLER_ID, q, Pdu2InfoBase.RW, Pdu2ChIndex.RW)
|
|
||||||
|
|
||||||
|
|
||||||
def reaction_wheel_off_cmd(q: DefaultPusQueueHelper):
|
|
||||||
generic_off_cmd(PDU_2_HANDLER_ID, q, Pdu2InfoBase.RW, Pdu2ChIndex.RW)
|
|
||||||
|
|
||||||
|
|
||||||
def heater_on_cmd(q: DefaultPusQueueHelper):
|
|
||||||
generic_on_cmd(PDU_2_HANDLER_ID, q, Pdu2InfoBase.HEATER, Pdu2ChIndex.HEATER)
|
|
||||||
|
|
||||||
|
|
||||||
def heater_off_cmd(q: DefaultPusQueueHelper):
|
|
||||||
generic_off_cmd(PDU_2_HANDLER_ID, q, Pdu2InfoBase.HEATER, Pdu2ChIndex.HEATER)
|
|
||||||
|
|
||||||
|
|
||||||
def sus_red_on_cmd(q: DefaultPusQueueHelper):
|
|
||||||
generic_on_cmd(PDU_2_HANDLER_ID, q, Pdu2InfoBase.SUS_R, Pdu2ChIndex.SUS_R)
|
|
||||||
|
|
||||||
|
|
||||||
def sus_red_off_cmd(q: DefaultPusQueueHelper):
|
|
||||||
generic_off_cmd(PDU_2_HANDLER_ID, q, Pdu2InfoBase.SUS_R, Pdu2ChIndex.SUS_R)
|
|
||||||
|
|
||||||
|
|
||||||
def solar_array_deployment_on_cmd(q: DefaultPusQueueHelper):
|
|
||||||
generic_on_cmd(
|
|
||||||
PDU_2_HANDLER_ID, q, Pdu2InfoBase.SOLAR_ARRAY_DEPL, Pdu2ChIndex.SOLAR_ARRAY_DEPL
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
def solar_array_deployment_off_cmd(q: DefaultPusQueueHelper):
|
|
||||||
generic_off_cmd(
|
|
||||||
PDU_2_HANDLER_ID, q, Pdu2InfoBase.SOLAR_ARRAY_DEPL, Pdu2ChIndex.SOLAR_ARRAY_DEPL
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
def pl_pcdu_bat_red_on_cmd(q: DefaultPusQueueHelper):
|
|
||||||
generic_on_cmd(
|
|
||||||
PDU_2_HANDLER_ID, q, Pdu2InfoBase.PL_PCDU_BAT_RED, Pdu2ChIndex.PL_PCDU_BAT_RED
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
def pl_pcdu_bat_red_off_cmd(q: DefaultPusQueueHelper):
|
|
||||||
generic_off_cmd(
|
|
||||||
PDU_2_HANDLER_ID, q, Pdu2InfoBase.PL_PCDU_BAT_RED, Pdu2ChIndex.PL_PCDU_BAT_RED
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
def acs_board_b_side_on_cmd(q: DefaultPusQueueHelper):
|
|
||||||
generic_on_cmd(PDU_2_HANDLER_ID, q, Pdu2InfoBase.ACS_B, Pdu2ChIndex.ACS_B)
|
|
||||||
|
|
||||||
|
|
||||||
def acs_board_b_side_off_cmd(q: DefaultPusQueueHelper):
|
|
||||||
generic_off_cmd(PDU_2_HANDLER_ID, q, Pdu2InfoBase.ACS_B, Pdu2ChIndex.ACS_B)
|
|
||||||
|
|
||||||
|
|
||||||
def payload_camera_on_cmd(q: DefaultPusQueueHelper):
|
|
||||||
generic_on_cmd(PDU_2_HANDLER_ID, q, Pdu2InfoBase.PL_CAM, Pdu2ChIndex.PL_CAM)
|
|
||||||
|
|
||||||
|
|
||||||
def payload_camera_off_cmd(q: DefaultPusQueueHelper):
|
|
||||||
generic_off_cmd(PDU_2_HANDLER_ID, q, Pdu2InfoBase.PL_CAM, Pdu2ChIndex.PL_CAM)
|
|
||||||
|
|
||||||
|
|
||||||
def generic_on_cmd(
|
|
||||||
object_id: bytes, q: DefaultPusQueueHelper, info_str: str, out_idx: int
|
|
||||||
):
|
|
||||||
q.add_log_cmd(info_str + " on")
|
|
||||||
q.add_pus_tc(
|
|
||||||
pack_set_param_command(
|
|
||||||
object_id,
|
|
||||||
PDU_CONFIG_LIST[out_idx].parameter_address,
|
|
||||||
PDU_CONFIG_LIST[out_idx].parameter_size,
|
|
||||||
Channel.on,
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
def generic_off_cmd(
|
|
||||||
object_id: bytes, q: DefaultPusQueueHelper, info_str: str, out_idx: int
|
|
||||||
):
|
|
||||||
q.add_log_cmd(info_str + " off")
|
|
||||||
q.add_pus_tc(
|
|
||||||
pack_set_param_command(
|
|
||||||
object_id,
|
|
||||||
PDU_CONFIG_LIST[out_idx].parameter_address,
|
|
||||||
PDU_CONFIG_LIST[out_idx].parameter_size,
|
|
||||||
Channel.off,
|
|
||||||
)
|
|
||||||
)
|
|
@ -16,7 +16,7 @@ from tmtccmd.tc.pus_201_fsfw_health import (
|
|||||||
FsfwHealth,
|
FsfwHealth,
|
||||||
Subservices,
|
Subservices,
|
||||||
)
|
)
|
||||||
from tmtccmd.tc.pus_8_funccmd import generate_action_command
|
from tmtccmd.tc.pus_8_funccmd import make_fsfw_action_cmd
|
||||||
from spacepackets.ecss.tc import PusTelecommand
|
from spacepackets.ecss.tc import PusTelecommand
|
||||||
|
|
||||||
|
|
||||||
@ -200,6 +200,6 @@ def pack_switch_heater_command(
|
|||||||
command.append(switch_nr)
|
command.append(switch_nr)
|
||||||
command.append(switch_action)
|
command.append(switch_action)
|
||||||
command.append(COMMAND_SOURCE_PARAM_EXTERNAL)
|
command.append(COMMAND_SOURCE_PARAM_EXTERNAL)
|
||||||
return generate_action_command(
|
return make_fsfw_action_cmd(
|
||||||
object_id=object_id, action_id=ActionIds.SWITCH_HEATER, app_data=command
|
object_id=object_id, action_id=ActionIds.SWITCH_HEATER, user_data=command
|
||||||
)
|
)
|
||||||
|
@ -1,120 +0,0 @@
|
|||||||
# -*- coding: utf-8 -*-
|
|
||||||
"""PDU1 is mounted on the X2 slot of the P60 dock
|
|
||||||
@author J. Meier
|
|
||||||
@date 17.12.2020
|
|
||||||
"""
|
|
||||||
import gomspace.gomspace_common as gs
|
|
||||||
from pus_tc.devs.common_power import pdu1_cmds, pdu1_req_hk_cmds
|
|
||||||
|
|
||||||
from tmtccmd.tc import DefaultPusQueueHelper
|
|
||||||
from tmtccmd.tc.pus_3_fsfw_hk import (
|
|
||||||
generate_one_hk_command,
|
|
||||||
make_sid,
|
|
||||||
generate_one_diag_command,
|
|
||||||
)
|
|
||||||
from gomspace.gomspace_common import *
|
|
||||||
from gomspace.gomspace_pdu_definitions import *
|
|
||||||
from config.object_ids import PDU_1_HANDLER_ID
|
|
||||||
|
|
||||||
|
|
||||||
class PDU1TestProcedure:
|
|
||||||
"""
|
|
||||||
@brief Use this class to define the tests to perform for the PDU2.
|
|
||||||
@details Setting all to True will run all tests.
|
|
||||||
Setting all to False will only run the tests set to True.
|
|
||||||
"""
|
|
||||||
|
|
||||||
all = False
|
|
||||||
reboot = False
|
|
||||||
ping = False
|
|
||||||
read_temperature = False
|
|
||||||
turn_channel_2_on = False # Star Tracker connected to this channel (5V)
|
|
||||||
turn_channel_2_off = False
|
|
||||||
turn_channel_3_on = False # MTQ connected to this channel (5V)
|
|
||||||
turn_channel_3_off = False
|
|
||||||
|
|
||||||
|
|
||||||
def pack_pdu1_commands(object_id: ObjectIdU32, q: DefaultPusQueueHelper, op_code: str):
|
|
||||||
q.add_log_cmd("Commanding PDU1")
|
|
||||||
objb = object_id.as_bytes
|
|
||||||
pdu1_cmds(q, op_code)
|
|
||||||
pdu1_req_hk_cmds(q, op_code)
|
|
||||||
if op_code in GomspaceOpCodes.PRINT_SWITCH_V_I:
|
|
||||||
q.add_log_cmd("PDU1: Print Switches, Voltages, Currents")
|
|
||||||
q.add_pus_tc(
|
|
||||||
generate_action_command(
|
|
||||||
object_id=objb, action_id=GomspaceDeviceActionIds.PRINT_SWITCH_V_I
|
|
||||||
)
|
|
||||||
)
|
|
||||||
if op_code in GomspaceOpCodes.PRINT_LATCHUPS:
|
|
||||||
q.add_log_cmd("PDU1: Print Latchups")
|
|
||||||
q.add_pus_tc(
|
|
||||||
generate_action_command(
|
|
||||||
object_id=objb, action_id=GomspaceDeviceActionIds.PRINT_LATCHUPS
|
|
||||||
)
|
|
||||||
)
|
|
||||||
if PDU1TestProcedure.all or PDU1TestProcedure.ping:
|
|
||||||
q.add_log_cmd("PDU1: Ping Test")
|
|
||||||
ping_data = bytearray([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
|
|
||||||
q.add_pus_tc(pack_ping_command(object_id, ping_data))
|
|
||||||
if PDU1TestProcedure.all or PDU1TestProcedure.read_temperature:
|
|
||||||
q.add_log_cmd("PDU1: Testing temperature reading")
|
|
||||||
q.add_pus_tc(
|
|
||||||
pack_get_param_command(
|
|
||||||
objb,
|
|
||||||
TableIds.hk,
|
|
||||||
PduHkTable.temperature.parameter_address,
|
|
||||||
PduHkTable.temperature.parameter_size,
|
|
||||||
)
|
|
||||||
)
|
|
||||||
if PDU1TestProcedure.all or PDU1TestProcedure.turn_channel_2_on:
|
|
||||||
q.add_log_cmd("PDU1: Turn channel 2 on (Star Tracker)")
|
|
||||||
q.add_pus_tc(
|
|
||||||
pack_set_param_command(
|
|
||||||
objb,
|
|
||||||
PduConfigTable.out_en_2.parameter_address,
|
|
||||||
PduConfigTable.out_en_2.parameter_size,
|
|
||||||
Channel.on,
|
|
||||||
)
|
|
||||||
)
|
|
||||||
if PDU1TestProcedure.all or PDU1TestProcedure.turn_channel_2_off:
|
|
||||||
q.add_log_cmd("PDU1: Turn channel 2 off (Star Tracker)")
|
|
||||||
q.add_pus_tc(
|
|
||||||
pack_set_param_command(
|
|
||||||
objb,
|
|
||||||
PduConfigTable.out_en_2.parameter_address,
|
|
||||||
PduConfigTable.out_en_2.parameter_size,
|
|
||||||
Channel.off,
|
|
||||||
)
|
|
||||||
)
|
|
||||||
if PDU1TestProcedure.all or PDU1TestProcedure.turn_channel_3_on:
|
|
||||||
q.add_log_cmd("PDU1: Turn channel 3 on (MTQ)")
|
|
||||||
q.add_pus_tc(
|
|
||||||
pack_set_param_command(
|
|
||||||
objb,
|
|
||||||
PduConfigTable.out_en_3.parameter_address,
|
|
||||||
PduConfigTable.out_en_3.parameter_size,
|
|
||||||
Channel.on,
|
|
||||||
)
|
|
||||||
)
|
|
||||||
if PDU1TestProcedure.all or PDU1TestProcedure.turn_channel_3_off:
|
|
||||||
q.add_log_cmd("PDU1: Turn channel 3 off (MTQ)")
|
|
||||||
q.add_pus_tc(
|
|
||||||
pack_set_param_command(
|
|
||||||
objb,
|
|
||||||
PduConfigTable.out_en_3.parameter_address,
|
|
||||||
PduConfigTable.out_en_3.parameter_size,
|
|
||||||
Channel.off,
|
|
||||||
)
|
|
||||||
)
|
|
||||||
if op_code in GomspaceOpCodes.SET_PARAM:
|
|
||||||
q.add_log_cmd(f"PDU1: {GsInfo.SET_PARAMETER}")
|
|
||||||
memory_address = int(input("Specify memory address: 0x"), 16)
|
|
||||||
memory_address = struct.pack("!H", memory_address)
|
|
||||||
parameter_size = int(input("Specify parameter size: "))
|
|
||||||
parameter = int(input("Specify parameter: "))
|
|
||||||
q.add_pus_tc(
|
|
||||||
gs.pack_set_param_command(
|
|
||||||
object_id.as_bytes, memory_address, parameter_size, parameter
|
|
||||||
)
|
|
||||||
)
|
|
@ -1,139 +0,0 @@
|
|||||||
# -*- coding: utf-8 -*-
|
|
||||||
"""
|
|
||||||
@file tmtcc_tc_pdu2.py
|
|
||||||
@brief PDU2 tests
|
|
||||||
@details PDU2 is mounted on the X4 slot of the P60 dock
|
|
||||||
@author J. Meier
|
|
||||||
@date 17.12.2020
|
|
||||||
"""
|
|
||||||
from tmtccmd.tc import DefaultPusQueueHelper
|
|
||||||
from tmtccmd.tc.pus_3_fsfw_hk import (
|
|
||||||
generate_one_hk_command,
|
|
||||||
generate_one_diag_command,
|
|
||||||
make_sid,
|
|
||||||
)
|
|
||||||
from pus_tc.devs.common_power import pdu2_cmds, pdu2_req_hk_cmds
|
|
||||||
from gomspace.gomspace_common import *
|
|
||||||
from gomspace.gomspace_pdu_definitions import *
|
|
||||||
from config.object_ids import PDU_2_HANDLER_ID
|
|
||||||
|
|
||||||
|
|
||||||
class PDU2TestProcedure:
|
|
||||||
"""
|
|
||||||
@brief Use this class to define the tests to perform for the PDU2.
|
|
||||||
@details Setting all to True will run all tests.
|
|
||||||
Setting all to False will only run the tests set to True.
|
|
||||||
"""
|
|
||||||
|
|
||||||
all = False
|
|
||||||
reboot = False
|
|
||||||
read_gnd_wdt = False
|
|
||||||
gnd_wdt_reset = False
|
|
||||||
ping = False
|
|
||||||
channel_2_off = False # Reaction wheels 5V
|
|
||||||
read_temperature = False
|
|
||||||
read_channel_2_state = False # Reaction wheels 5V
|
|
||||||
read_cur_lu_lim_0 = False # OBC
|
|
||||||
channel_2_on = False # Reaction wheels 5V
|
|
||||||
invalid_table_id_test = (
|
|
||||||
False # Test to check if software properly handles invalid table ids
|
|
||||||
)
|
|
||||||
invalid_address_test = (
|
|
||||||
False # Test to check if software properly handles invalid addresses
|
|
||||||
)
|
|
||||||
invalid_parameter_size_test = False
|
|
||||||
request_hk_table = False
|
|
||||||
|
|
||||||
|
|
||||||
def pack_pdu2_commands(object_id: ObjectIdU32, q: DefaultPusQueueHelper, op_code: str):
|
|
||||||
q.add_log_cmd("Testing PDU2")
|
|
||||||
objb = object_id.as_bytes
|
|
||||||
pdu2_cmds(q, op_code)
|
|
||||||
pdu2_req_hk_cmds(q, op_code)
|
|
||||||
if op_code in GomspaceOpCodes.PRINT_SWITCH_V_I:
|
|
||||||
q.add_log_cmd(f"PDU2: {GsInfo.PRINT_SWITCH_V_I}")
|
|
||||||
q.add_pus_tc(
|
|
||||||
generate_action_command(
|
|
||||||
object_id=objb, action_id=GomspaceDeviceActionIds.PRINT_SWITCH_V_I
|
|
||||||
)
|
|
||||||
)
|
|
||||||
if op_code in GomspaceOpCodes.PRINT_LATCHUPS:
|
|
||||||
q.add_log_cmd("PDU2: Print Latchups")
|
|
||||||
q.add_pus_tc(
|
|
||||||
generate_action_command(
|
|
||||||
object_id=objb, action_id=GomspaceDeviceActionIds.PRINT_LATCHUPS
|
|
||||||
)
|
|
||||||
)
|
|
||||||
if PDU2TestProcedure.all or PDU2TestProcedure.reboot:
|
|
||||||
q.add_log_cmd("PDU2: Reboot")
|
|
||||||
q.add_pus_tc(pack_reboot_command(object_id))
|
|
||||||
if PDU2TestProcedure.all or PDU2TestProcedure.read_gnd_wdt:
|
|
||||||
q.add_log_cmd("PDU2: Reading ground watchdog timer value")
|
|
||||||
q.add_pus_tc(
|
|
||||||
pack_get_param_command(
|
|
||||||
objb,
|
|
||||||
TableIds.hk,
|
|
||||||
PduHkTable.wdt_gnd_left.parameter_address,
|
|
||||||
PduHkTable.wdt_gnd_left.parameter_size,
|
|
||||||
)
|
|
||||||
)
|
|
||||||
if PDU2TestProcedure.all or PDU2TestProcedure.gnd_wdt_reset:
|
|
||||||
q.add_log_cmd("PDU2: Testing ground watchdog reset")
|
|
||||||
q.add_pus_tc(pack_gnd_wdt_reset_command(object_id))
|
|
||||||
if PDU2TestProcedure.all or PDU2TestProcedure.ping:
|
|
||||||
q.add_log_cmd("PDU2: Ping Test")
|
|
||||||
ping_data = bytearray([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
|
|
||||||
q.add_pus_tc(pack_ping_command(object_id, ping_data))
|
|
||||||
if PDU2TestProcedure.all or PDU2TestProcedure.channel_2_on:
|
|
||||||
q.add_log_cmd("PDU2: Testing setting output channel 2 on (TCS Heater)")
|
|
||||||
q.add_pus_tc(
|
|
||||||
pack_set_param_command(
|
|
||||||
objb,
|
|
||||||
PduConfigTable.out_en_2.parameter_address,
|
|
||||||
PduConfigTable.out_en_2.parameter_size,
|
|
||||||
Channel.on,
|
|
||||||
)
|
|
||||||
)
|
|
||||||
if PDU2TestProcedure.all or PDU2TestProcedure.read_temperature:
|
|
||||||
q.add_log_cmd("PDU2: Testing temperature reading")
|
|
||||||
q.add_pus_tc(
|
|
||||||
pack_get_param_command(
|
|
||||||
objb,
|
|
||||||
TableIds.hk,
|
|
||||||
PduHkTable.temperature.parameter_address,
|
|
||||||
PduHkTable.temperature.parameter_size,
|
|
||||||
)
|
|
||||||
)
|
|
||||||
if PDU2TestProcedure.all or PDU2TestProcedure.read_channel_2_state:
|
|
||||||
q.add_log_cmd("PDU2: Reading output channel 2 state (TCS Heater)")
|
|
||||||
q.add_pus_tc(
|
|
||||||
pack_get_param_command(
|
|
||||||
objb,
|
|
||||||
TableIds.config,
|
|
||||||
PduConfigTable.out_en_2.parameter_address,
|
|
||||||
PduConfigTable.out_en_2.parameter_size,
|
|
||||||
)
|
|
||||||
)
|
|
||||||
if PDU2TestProcedure.all or PDU2TestProcedure.read_cur_lu_lim_0:
|
|
||||||
q.add_log_cmd("PDU2: Reading current limit value of output channel 0 (OBC)")
|
|
||||||
q.add_pus_tc(
|
|
||||||
pack_get_param_command(
|
|
||||||
objb,
|
|
||||||
TableIds.config,
|
|
||||||
PduConfigTable.cur_lu_lim_0.parameter_address,
|
|
||||||
PduConfigTable.cur_lu_lim_0.parameter_size,
|
|
||||||
)
|
|
||||||
)
|
|
||||||
if PDU2TestProcedure.all or PDU2TestProcedure.channel_2_off:
|
|
||||||
q.add_log_cmd("PDU2: Testing setting output channel 2 off")
|
|
||||||
q.add_pus_tc(
|
|
||||||
pack_set_param_command(
|
|
||||||
objb,
|
|
||||||
PduConfigTable.out_en_2.parameter_address,
|
|
||||||
PduConfigTable.out_en_2.parameter_size,
|
|
||||||
Channel.off,
|
|
||||||
)
|
|
||||||
)
|
|
||||||
if PDU2TestProcedure.all or PDU2TestProcedure.request_hk_table:
|
|
||||||
q.add_log_cmd("PDU2: Requesting housekeeping table")
|
|
||||||
q.add_pus_tc(pack_request_full_hk_table_command(object_id))
|
|
@ -1,103 +0,0 @@
|
|||||||
from gomspace.gomspace_common import GsInfo
|
|
||||||
from pus_tc.devs.common_power import (
|
|
||||||
PowerOpCodes,
|
|
||||||
Pdu1InfoBase,
|
|
||||||
Pdu2InfoBase,
|
|
||||||
add_pdu1_common_defs,
|
|
||||||
add_pdu2_common_defs,
|
|
||||||
PowerInfo,
|
|
||||||
)
|
|
||||||
from config.definitions import CustomServiceList
|
|
||||||
from tmtccmd.config import TmtcDefinitionWrapper, OpCodeEntry
|
|
||||||
|
|
||||||
from pus_tc.devs.p60dock import P60OpCodes, GomspaceOpCodes, P60Info
|
|
||||||
from pus_tc.devs.acu import add_acu_cmds
|
|
||||||
from tmtccmd.config.tmtc import tmtc_definitions_provider
|
|
||||||
|
|
||||||
|
|
||||||
@tmtc_definitions_provider
|
|
||||||
def add_p60_cmds(defs: TmtcDefinitionWrapper):
|
|
||||||
oce = OpCodeEntry()
|
|
||||||
oce.add(keys=P60OpCodes.STACK_3V3_ON, info=P60Info.STACK_3V3_ON)
|
|
||||||
oce.add(keys=P60OpCodes.STACK_3V3_OFF, info=P60Info.STACK_3V3_OFF)
|
|
||||||
oce.add(keys=P60OpCodes.STACK_5V_ON, info=P60Info.STACK_5V_ON)
|
|
||||||
oce.add(keys=P60OpCodes.STACK_5V_OFF, info=P60Info.STACK_5V_OFF)
|
|
||||||
oce.add(keys=GomspaceOpCodes.REQUEST_CORE_HK_ONCE, info=GsInfo.REQUEST_CORE_HK_ONCE)
|
|
||||||
oce.add(keys=GomspaceOpCodes.REQUEST_AUX_HK_ONCE, info=GsInfo.REQUEST_AUX_HK_ONCE)
|
|
||||||
oce.add(
|
|
||||||
keys=GomspaceOpCodes.PRINT_SWITCH_V_I,
|
|
||||||
info="P60 Dock: Print Switches, Voltages, Currents",
|
|
||||||
)
|
|
||||||
oce.add(keys=GomspaceOpCodes.PRINT_LATCHUPS, info="P60 Dock: Print Latchups")
|
|
||||||
oce.add(keys=P60OpCodes.TEST, info="P60 Tests")
|
|
||||||
defs.add_service(
|
|
||||||
name=CustomServiceList.P60DOCK.value, info="P60 Device", op_code_entry=oce
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
@tmtc_definitions_provider
|
|
||||||
def add_power_cmd_defs(defs: TmtcDefinitionWrapper):
|
|
||||||
oce = OpCodeEntry()
|
|
||||||
add_pdu1_common_defs(oce)
|
|
||||||
add_pdu2_common_defs(oce)
|
|
||||||
oce.add(keys=PowerOpCodes.INFO_ALL, info=PowerInfo.INFO_ALL)
|
|
||||||
oce.add(keys=PowerOpCodes.INFO_CORE, info=PowerInfo.INFO_CORE)
|
|
||||||
oce.add(keys=PowerOpCodes.INFO_AUX, info=PowerInfo.INFO_AUX)
|
|
||||||
defs.add_service(
|
|
||||||
name=CustomServiceList.POWER.value,
|
|
||||||
info="Power Subsystem",
|
|
||||||
op_code_entry=oce,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
@tmtc_definitions_provider
|
|
||||||
def add_pdu1_cmds(defs: TmtcDefinitionWrapper):
|
|
||||||
oce = OpCodeEntry()
|
|
||||||
add_pdu1_common_defs(oce)
|
|
||||||
oce.add(keys=GomspaceOpCodes.REQUEST_CORE_HK_ONCE, info=GsInfo.REQUEST_CORE_HK_ONCE)
|
|
||||||
oce.add(keys=GomspaceOpCodes.REQUEST_AUX_HK_ONCE, info=GsInfo.REQUEST_AUX_HK_ONCE)
|
|
||||||
oce.add(
|
|
||||||
keys=GomspaceOpCodes.PRINT_SWITCH_V_I,
|
|
||||||
info="PDU1: Print Switches, Voltages, Currents",
|
|
||||||
)
|
|
||||||
oce.add(keys=GomspaceOpCodes.PRINT_LATCHUPS, info="PDU1: Print Latchups")
|
|
||||||
oce.add(keys=GomspaceOpCodes.SET_PARAM, info="Set parameter")
|
|
||||||
defs.add_service(
|
|
||||||
name=CustomServiceList.PDU1.value,
|
|
||||||
info="PDU1 Device",
|
|
||||||
op_code_entry=oce,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
@tmtc_definitions_provider
|
|
||||||
def add_pdu2_cmds(defs: TmtcDefinitionWrapper):
|
|
||||||
oce = OpCodeEntry()
|
|
||||||
add_pdu2_common_defs(oce)
|
|
||||||
oce.add(
|
|
||||||
keys=GomspaceOpCodes.REQUEST_CORE_HK_ONCE,
|
|
||||||
info=GsInfo.REQUEST_CORE_HK_ONCE,
|
|
||||||
)
|
|
||||||
oce.add(
|
|
||||||
keys=GomspaceOpCodes.REQUEST_AUX_HK_ONCE,
|
|
||||||
info=GsInfo.REQUEST_AUX_HK_ONCE,
|
|
||||||
)
|
|
||||||
oce.add(
|
|
||||||
keys=GomspaceOpCodes.PRINT_SWITCH_V_I,
|
|
||||||
info="PDU2: Print Switches, Voltages, Currents",
|
|
||||||
)
|
|
||||||
oce.add(
|
|
||||||
keys=GomspaceOpCodes.PRINT_LATCHUPS,
|
|
||||||
info="PDU2: Print Latchups",
|
|
||||||
)
|
|
||||||
defs.add_service(
|
|
||||||
name="pdu2",
|
|
||||||
info="PDU2 Device",
|
|
||||||
op_code_entry=oce,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
def add_pcdu_cmds(defs: TmtcDefinitionWrapper):
|
|
||||||
add_p60_cmds(defs)
|
|
||||||
add_pdu1_cmds(defs)
|
|
||||||
add_pdu2_cmds(defs)
|
|
||||||
add_acu_cmds(defs)
|
|
@ -1,11 +1,14 @@
|
|||||||
import enum
|
import enum
|
||||||
import json
|
import json
|
||||||
|
|
||||||
|
from spacepackets.ecss import PusTelecommand
|
||||||
|
|
||||||
from config.definitions import CustomServiceList
|
from config.definitions import CustomServiceList
|
||||||
from tmtccmd import DefaultProcedureInfo
|
|
||||||
from tmtccmd.config.tmtc import tmtc_definitions_provider
|
from tmtccmd.config.tmtc import tmtc_definitions_provider
|
||||||
from tmtccmd.tc import DefaultPusQueueHelper, service_provider
|
from tmtccmd.tc.pus_200_fsfw_modes import Modes, pack_mode_data, Subservices
|
||||||
from tmtccmd.tc.pus_8_funccmd import generate_action_command
|
from tmtccmd.tc import service_provider
|
||||||
|
from tmtccmd.tc.decorator import ServiceProviderParams
|
||||||
|
from tmtccmd.tc.pus_8_funccmd import make_fsfw_action_cmd
|
||||||
from tmtccmd.config import OpCodeEntry, TmtcDefinitionWrapper
|
from tmtccmd.config import OpCodeEntry, TmtcDefinitionWrapper
|
||||||
from config.object_ids import SCEX_HANDLER_ID
|
from config.object_ids import SCEX_HANDLER_ID
|
||||||
|
|
||||||
@ -23,6 +26,9 @@ class OpCodes:
|
|||||||
ALL_CELLS_CMD = ["5", "allcells"]
|
ALL_CELLS_CMD = ["5", "allcells"]
|
||||||
FRAM = ["6", "fram"]
|
FRAM = ["6", "fram"]
|
||||||
|
|
||||||
|
SWITCH_ON = ["7", "on"]
|
||||||
|
SWITCH_OFF = ["8", "off"]
|
||||||
|
|
||||||
|
|
||||||
class ActionIds(enum.IntEnum):
|
class ActionIds(enum.IntEnum):
|
||||||
PING = 7
|
PING = 7
|
||||||
@ -45,6 +51,9 @@ class Info:
|
|||||||
ALL_CELLS_CMD = "All Cells"
|
ALL_CELLS_CMD = "All Cells"
|
||||||
FRAM = "Read FRAM"
|
FRAM = "Read FRAM"
|
||||||
|
|
||||||
|
SWITCH_ON = "Switch Scex on"
|
||||||
|
SWITCH_OFF = "Switch Scex off"
|
||||||
|
|
||||||
|
|
||||||
@tmtc_definitions_provider
|
@tmtc_definitions_provider
|
||||||
def add_scex_cmds(defs: TmtcDefinitionWrapper):
|
def add_scex_cmds(defs: TmtcDefinitionWrapper):
|
||||||
@ -57,6 +66,8 @@ def add_scex_cmds(defs: TmtcDefinitionWrapper):
|
|||||||
|
|
||||||
oce.add(keys=OpCodes.ALL_CELLS_CMD, info=Info.ALL_CELLS_CMD)
|
oce.add(keys=OpCodes.ALL_CELLS_CMD, info=Info.ALL_CELLS_CMD)
|
||||||
oce.add(keys=OpCodes.FRAM, info=Info.FRAM)
|
oce.add(keys=OpCodes.FRAM, info=Info.FRAM)
|
||||||
|
oce.add(keys=OpCodes.SWITCH_ON, info=Info.SWITCH_ON)
|
||||||
|
oce.add(keys=OpCodes.SWITCH_OFF, info=Info.SWITCH_OFF)
|
||||||
|
|
||||||
defs.add_service(
|
defs.add_service(
|
||||||
name=CustomServiceList.SCEX.value, info="SCEX Device", op_code_entry=oce
|
name=CustomServiceList.SCEX.value, info="SCEX Device", op_code_entry=oce
|
||||||
@ -64,36 +75,53 @@ def add_scex_cmds(defs: TmtcDefinitionWrapper):
|
|||||||
|
|
||||||
|
|
||||||
@service_provider(CustomServiceList.SCEX.value)
|
@service_provider(CustomServiceList.SCEX.value)
|
||||||
def pack_scex_cmds(_info: DefaultProcedureInfo, q: DefaultPusQueueHelper, op_code: str):
|
def pack_scex_cmds(p: ServiceProviderParams):
|
||||||
|
op_code = p.op_code
|
||||||
|
q = p.queue_helper
|
||||||
|
if op_code in OpCodes.SWITCH_ON:
|
||||||
|
q.add_log_cmd(Info.SWITCH_ON)
|
||||||
|
q.add_pus_tc(
|
||||||
|
PusTelecommand(
|
||||||
|
service=200,
|
||||||
|
subservice=Subservices.TC_MODE_COMMAND,
|
||||||
|
app_data=pack_mode_data(SCEX_HANDLER_ID, Modes.ON, 0),
|
||||||
|
)
|
||||||
|
)
|
||||||
|
if op_code in OpCodes.SWITCH_OFF:
|
||||||
|
q.add_log_cmd(Info.SWITCH_OFF)
|
||||||
|
q.add_pus_tc(
|
||||||
|
PusTelecommand(
|
||||||
|
service=200,
|
||||||
|
subservice=Subservices.TC_MODE_COMMAND,
|
||||||
|
app_data=pack_mode_data(SCEX_HANDLER_ID, Modes.OFF, 0),
|
||||||
|
)
|
||||||
|
)
|
||||||
if op_code in OpCodes.PING:
|
if op_code in OpCodes.PING:
|
||||||
q.add_log_cmd(Info.PING)
|
q.add_log_cmd(Info.PING)
|
||||||
app_data = bytes([0])
|
app_data = bytes([0])
|
||||||
q.add_pus_tc(generate_action_command(SCEX_HANDLER_ID, ActionIds.PING, app_data))
|
q.add_pus_tc(make_fsfw_action_cmd(SCEX_HANDLER_ID, ActionIds.PING, app_data))
|
||||||
if op_code in OpCodes.ION_CMD:
|
if op_code in OpCodes.ION_CMD:
|
||||||
q.add_log_cmd(Info.ION_CMD)
|
q.add_log_cmd(Info.ION_CMD)
|
||||||
app_data = bytes([0])
|
app_data = bytes([0])
|
||||||
q.add_pus_tc(
|
q.add_pus_tc(make_fsfw_action_cmd(SCEX_HANDLER_ID, ActionIds.ION_CMD, app_data))
|
||||||
generate_action_command(SCEX_HANDLER_ID, ActionIds.ION_CMD, app_data)
|
|
||||||
)
|
|
||||||
|
|
||||||
if op_code in OpCodes.TEMP_CMD:
|
if op_code in OpCodes.TEMP_CMD:
|
||||||
q.add_log_cmd(Info.TEMP_CMD)
|
q.add_log_cmd(Info.TEMP_CMD)
|
||||||
app_data = bytes([0])
|
app_data = bytes([0])
|
||||||
q.add_pus_tc(
|
q.add_pus_tc(
|
||||||
generate_action_command(SCEX_HANDLER_ID, ActionIds.TEMP_CMD, app_data)
|
make_fsfw_action_cmd(SCEX_HANDLER_ID, ActionIds.TEMP_CMD, app_data)
|
||||||
)
|
)
|
||||||
|
|
||||||
if op_code in OpCodes.EXP_STATUS_CMD:
|
if op_code in OpCodes.EXP_STATUS_CMD:
|
||||||
q.add_log_cmd(Info.EXP_STATUS_CMD)
|
q.add_log_cmd(Info.EXP_STATUS_CMD)
|
||||||
app_data = bytes([0])
|
app_data = bytes([0])
|
||||||
q.add_pus_tc(
|
q.add_pus_tc(
|
||||||
generate_action_command(SCEX_HANDLER_ID, ActionIds.EXP_STATUS_CMD, app_data)
|
make_fsfw_action_cmd(SCEX_HANDLER_ID, ActionIds.EXP_STATUS_CMD, app_data)
|
||||||
)
|
)
|
||||||
|
|
||||||
# one cell
|
# one cell
|
||||||
if op_code in OpCodes.ONE_CELLS_CMD:
|
if op_code in OpCodes.ONE_CELLS_CMD:
|
||||||
q.add_log_cmd(Info.ONE_CELLS_CMD)
|
q.add_log_cmd(Info.ONE_CELLS_CMD)
|
||||||
app_data = bytearray()
|
app_data = bytearray([0])
|
||||||
|
|
||||||
# cell number
|
# cell number
|
||||||
cn = 0
|
cn = 0
|
||||||
@ -125,6 +153,7 @@ def pack_scex_cmds(_info: DefaultProcedureInfo, q: DefaultPusQueueHelper, op_cod
|
|||||||
|
|
||||||
# in app_data
|
# in app_data
|
||||||
# app_data.extend(struct.pack("!H", first_dac))
|
# app_data.extend(struct.pack("!H", first_dac))
|
||||||
|
app_data.append(cell_select)
|
||||||
append_16_bit_val(packet=app_data, val=first_dac[cn])
|
append_16_bit_val(packet=app_data, val=first_dac[cn])
|
||||||
append_16_bit_val(packet=app_data, val=last_dac[cn])
|
append_16_bit_val(packet=app_data, val=last_dac[cn])
|
||||||
append_16_bit_val(packet=app_data, val=res_switch1[cn])
|
append_16_bit_val(packet=app_data, val=res_switch1[cn])
|
||||||
@ -135,12 +164,12 @@ def pack_scex_cmds(_info: DefaultProcedureInfo, q: DefaultPusQueueHelper, op_cod
|
|||||||
app_data.append(dac_weight3[cn])
|
app_data.append(dac_weight3[cn])
|
||||||
|
|
||||||
q.add_pus_tc(
|
q.add_pus_tc(
|
||||||
generate_action_command(SCEX_HANDLER_ID, ActionIds.ONE_CELLS_CMD, app_data)
|
make_fsfw_action_cmd(SCEX_HANDLER_ID, ActionIds.ONE_CELLS_CMD, app_data)
|
||||||
)
|
)
|
||||||
|
|
||||||
if op_code in OpCodes.ALL_CELLS_CMD:
|
if op_code in OpCodes.ALL_CELLS_CMD:
|
||||||
q.add_log_cmd(Info.ALL_CELLS_CMD)
|
q.add_log_cmd(Info.ALL_CELLS_CMD)
|
||||||
app_data = bytearray()
|
app_data = bytearray([0])
|
||||||
|
|
||||||
# cell number
|
# cell number
|
||||||
cn = 0
|
cn = 0
|
||||||
@ -167,13 +196,13 @@ def pack_scex_cmds(_info: DefaultProcedureInfo, q: DefaultPusQueueHelper, op_cod
|
|||||||
app_data.append(dac_weight3[cn])
|
app_data.append(dac_weight3[cn])
|
||||||
|
|
||||||
q.add_pus_tc(
|
q.add_pus_tc(
|
||||||
generate_action_command(SCEX_HANDLER_ID, ActionIds.ALL_CELLS_CMD, app_data)
|
make_fsfw_action_cmd(SCEX_HANDLER_ID, ActionIds.ALL_CELLS_CMD, app_data)
|
||||||
)
|
)
|
||||||
|
|
||||||
if op_code in OpCodes.FRAM:
|
if op_code in OpCodes.FRAM:
|
||||||
q.add_log_cmd(Info.FRAM)
|
q.add_log_cmd(Info.FRAM)
|
||||||
app_data = bytes([0])
|
app_data = bytes([0])
|
||||||
q.add_pus_tc(generate_action_command(SCEX_HANDLER_ID, ActionIds.FRAM, app_data))
|
q.add_pus_tc(make_fsfw_action_cmd(SCEX_HANDLER_ID, ActionIds.FRAM, app_data))
|
||||||
|
|
||||||
|
|
||||||
def append_16_bit_val(packet: bytearray, val: int):
|
def append_16_bit_val(packet: bytearray, val: int):
|
||||||
|
@ -85,6 +85,10 @@ class StarTrackerActionIds:
|
|||||||
FIRMWARE_UPDATE = 84
|
FIRMWARE_UPDATE = 84
|
||||||
|
|
||||||
|
|
||||||
|
class OpCodes:
|
||||||
|
NORMAL = ["2", "nml"]
|
||||||
|
|
||||||
|
|
||||||
class SetIds:
|
class SetIds:
|
||||||
TEMPERATURE = 25
|
TEMPERATURE = 25
|
||||||
|
|
||||||
|
@ -19,6 +19,10 @@ class SetIds:
|
|||||||
TX_REGISTERS_DATASET = 2
|
TX_REGISTERS_DATASET = 2
|
||||||
|
|
||||||
|
|
||||||
|
class OpCodes:
|
||||||
|
NORMAL = ["2", "nml"]
|
||||||
|
|
||||||
|
|
||||||
class CommandIds:
|
class CommandIds:
|
||||||
READ_RX_STATUS_REGISTERS = 2
|
READ_RX_STATUS_REGISTERS = 2
|
||||||
SET_TX_MODE_STANDBY = 3
|
SET_TX_MODE_STANDBY = 3
|
||||||
|
@ -2,43 +2,43 @@
|
|||||||
"""
|
"""
|
||||||
from typing import cast
|
from typing import cast
|
||||||
|
|
||||||
from pus_tc.devs.common_power import pack_power_commands
|
from tmtc.power.power import pack_power_commands
|
||||||
from pus_tc.devs.rtd import pack_rtd_commands
|
from pus_tc.devs.rtd import pack_rtd_commands
|
||||||
from pus_tc.devs.scex import pack_scex_cmds
|
from pus_tc.devs.scex import pack_scex_cmds
|
||||||
from pus_tc.system.controllers import (
|
from pus_tc.system.controllers import (
|
||||||
pack_cmd_ctrl_to_prompted_mode,
|
pack_cmd_ctrl_to_prompted_mode,
|
||||||
get_object_from_op_code,
|
get_object_from_op_code,
|
||||||
)
|
)
|
||||||
from tmtccmd import DefaultProcedureInfo
|
from tmtccmd import DefaultProcedureInfo, TcHandlerBase
|
||||||
from tmtccmd.config import CoreServiceList
|
from tmtccmd.config import CoreServiceList
|
||||||
from tmtccmd.logging import get_console_logger
|
from tmtccmd.logging import get_console_logger
|
||||||
from tmtccmd.tc import DefaultPusQueueHelper
|
from tmtccmd.tc import DefaultPusQueueHelper
|
||||||
from tmtccmd.tc.decorator import route_to_registered_service_handlers
|
from tmtccmd.tc.decorator import (
|
||||||
|
route_to_registered_service_handlers,
|
||||||
|
ServiceProviderParams,
|
||||||
|
)
|
||||||
from tmtccmd.tc.pus_5_event import (
|
from tmtccmd.tc.pus_5_event import (
|
||||||
pack_generic_service_5_test_into,
|
pack_generic_service_5_test_into,
|
||||||
)
|
)
|
||||||
from tmtccmd.pus.pus_17_test import pack_service_17_ping_command
|
from tmtccmd.pus.pus_17_test import pack_service_17_ping_command
|
||||||
|
|
||||||
from pus_tc.service_200_mode import pack_service_200_test_into
|
from pus_tc.service_200_mode import pack_service_200_test_into
|
||||||
from pus_tc.devs.p60dock import pack_p60dock_cmds
|
from tmtc.power.p60dock import pack_p60dock_cmds
|
||||||
from pus_tc.devs.pdu2 import pack_pdu2_commands
|
from tmtc.power.pdu2 import pack_pdu2_commands
|
||||||
from pus_tc.devs.pdu1 import pack_pdu1_commands
|
from tmtc.power.pdu1 import pack_pdu1_commands
|
||||||
from pus_tc.devs.acu import pack_acu_commands
|
from tmtc.power.acu import pack_acu_commands
|
||||||
from pus_tc.devs.solar_array_deployment import pack_solar_array_deployment_test_into
|
from pus_tc.devs.solar_array_deployment import pack_solar_array_deployment_test_into
|
||||||
from pus_tc.devs.imtq import pack_imtq_test_into
|
from pus_tc.devs.imtq import pack_imtq_test_into
|
||||||
from pus_tc.devs.tmp1075 import pack_tmp1075_test_into
|
from pus_tc.devs.tmp1075 import pack_tmp1075_test_into
|
||||||
from pus_tc.devs.ploc_mpsoc import pack_ploc_mpsoc_commands
|
|
||||||
from pus_tc.devs.ploc_supervisor import pack_ploc_supv_commands
|
|
||||||
from pus_tc.devs.heater import pack_heater_cmds
|
from pus_tc.devs.heater import pack_heater_cmds
|
||||||
from pus_tc.devs.reaction_wheels import pack_single_rw_test_into, pack_rw_ass_cmds
|
from pus_tc.devs.reaction_wheels import pack_single_rw_test_into, pack_rw_ass_cmds
|
||||||
from pus_tc.devs.rad_sensor import pack_rad_sensor_test_into
|
from pus_tc.devs.rad_sensor import pack_rad_sensor_test_into
|
||||||
from pus_tc.devs.ploc_memory_dumper import pack_ploc_memory_dumper_cmd
|
from tmtc.ploc_memory_dumper import pack_ploc_memory_dumper_cmd
|
||||||
from pus_tc.devs.ccsds_handler import pack_ccsds_handler_test
|
from pus_tc.devs.ccsds_handler import pack_ccsds_handler_test
|
||||||
from pus_tc.system.core import pack_core_commands
|
from pus_tc.system.core import pack_core_commands
|
||||||
from pus_tc.devs.star_tracker import pack_star_tracker_commands
|
from pus_tc.devs.star_tracker import pack_star_tracker_commands
|
||||||
from pus_tc.devs.syrlinks_hk_handler import pack_syrlinks_command
|
from pus_tc.devs.syrlinks_hk_handler import pack_syrlinks_command
|
||||||
from pus_tc.devs.gps import pack_gps_command
|
from pus_tc.devs.gps import pack_gps_command
|
||||||
from pus_tc.system.time import pack_set_current_time_ascii_command
|
|
||||||
from pus_tc.system.acs import pack_acs_command, pack_sus_cmds
|
from pus_tc.system.acs import pack_acs_command, pack_sus_cmds
|
||||||
from pus_tc.devs.plpcdu import pack_pl_pcdu_commands
|
from pus_tc.devs.plpcdu import pack_pl_pcdu_commands
|
||||||
from pus_tc.devs.str_img_helper import pack_str_img_helper_command
|
from pus_tc.devs.str_img_helper import pack_str_img_helper_command
|
||||||
@ -54,13 +54,11 @@ from config.object_ids import (
|
|||||||
TMP_1075_2_HANDLER_ID,
|
TMP_1075_2_HANDLER_ID,
|
||||||
HEATER_ID,
|
HEATER_ID,
|
||||||
IMTQ_HANDLER_ID,
|
IMTQ_HANDLER_ID,
|
||||||
PLOC_MPSOC_ID,
|
|
||||||
RW1_ID,
|
RW1_ID,
|
||||||
RW2_ID,
|
RW2_ID,
|
||||||
RW3_ID,
|
RW3_ID,
|
||||||
RW4_ID,
|
RW4_ID,
|
||||||
RAD_SENSOR_ID,
|
RAD_SENSOR_ID,
|
||||||
PLOC_SUPV_ID,
|
|
||||||
STAR_TRACKER_ID,
|
STAR_TRACKER_ID,
|
||||||
PLOC_MEMORY_DUMPER_ID,
|
PLOC_MEMORY_DUMPER_ID,
|
||||||
CCSDS_HANDLER_ID,
|
CCSDS_HANDLER_ID,
|
||||||
@ -78,14 +76,19 @@ LOGGER = get_console_logger()
|
|||||||
|
|
||||||
|
|
||||||
def handle_default_procedure(
|
def handle_default_procedure(
|
||||||
info: DefaultProcedureInfo, queue_helper: DefaultPusQueueHelper, gui: bool
|
tc_base: TcHandlerBase,
|
||||||
|
info: DefaultProcedureInfo,
|
||||||
|
queue_helper: DefaultPusQueueHelper,
|
||||||
):
|
):
|
||||||
service = info.service
|
service = info.service
|
||||||
op_code = info.op_code
|
op_code = info.op_code
|
||||||
obj_id_man = get_object_ids()
|
obj_id_man = get_object_ids()
|
||||||
if service == CoreServiceList.SERVICE_5.value:
|
if service == CoreServiceList.SERVICE_5.value:
|
||||||
return pack_generic_service_5_test_into(q=queue_helper)
|
return pack_generic_service_5_test_into(q=queue_helper)
|
||||||
if service == CoreServiceList.SERVICE_17.value:
|
if (
|
||||||
|
service == CoreServiceList.SERVICE_17
|
||||||
|
or service == CoreServiceList.SERVICE_17_ALT
|
||||||
|
):
|
||||||
return queue_helper.add_pus_tc(pack_service_17_ping_command())
|
return queue_helper.add_pus_tc(pack_service_17_ping_command())
|
||||||
if service == CoreServiceList.SERVICE_200.value:
|
if service == CoreServiceList.SERVICE_200.value:
|
||||||
return pack_service_200_test_into(q=queue_helper)
|
return pack_service_200_test_into(q=queue_helper)
|
||||||
@ -123,11 +126,6 @@ def handle_default_procedure(
|
|||||||
if service == CustomServiceList.IMTQ.value:
|
if service == CustomServiceList.IMTQ.value:
|
||||||
object_id = cast(ObjectIdU32, obj_id_man.get(IMTQ_HANDLER_ID))
|
object_id = cast(ObjectIdU32, obj_id_man.get(IMTQ_HANDLER_ID))
|
||||||
return pack_imtq_test_into(object_id=object_id, q=queue_helper, op_code=op_code)
|
return pack_imtq_test_into(object_id=object_id, q=queue_helper, op_code=op_code)
|
||||||
if service == CustomServiceList.PLOC_MPSOC.value:
|
|
||||||
object_id = cast(ObjectIdU32, obj_id_man.get(PLOC_MPSOC_ID))
|
|
||||||
return pack_ploc_mpsoc_commands(
|
|
||||||
object_id=object_id, q=queue_helper, op_code=op_code
|
|
||||||
)
|
|
||||||
if service == CustomServiceList.REACTION_WHEEL_1.value:
|
if service == CustomServiceList.REACTION_WHEEL_1.value:
|
||||||
return pack_single_rw_test_into(
|
return pack_single_rw_test_into(
|
||||||
object_id=RW1_ID, rw_idx=1, q=queue_helper, op_code=op_code
|
object_id=RW1_ID, rw_idx=1, q=queue_helper, op_code=op_code
|
||||||
@ -149,11 +147,6 @@ def handle_default_procedure(
|
|||||||
return pack_rad_sensor_test_into(
|
return pack_rad_sensor_test_into(
|
||||||
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.PLOC_SUPV.value:
|
|
||||||
object_id = cast(ObjectIdU32, obj_id_man.get(PLOC_SUPV_ID))
|
|
||||||
return pack_ploc_supv_commands(
|
|
||||||
object_id=object_id, q=queue_helper, op_code=op_code
|
|
||||||
)
|
|
||||||
if service == CustomServiceList.STAR_TRACKER.value:
|
if service == CustomServiceList.STAR_TRACKER.value:
|
||||||
object_id = cast(ObjectIdU32, obj_id_man.get(STAR_TRACKER_ID))
|
object_id = cast(ObjectIdU32, obj_id_man.get(STAR_TRACKER_ID))
|
||||||
return pack_star_tracker_commands(
|
return pack_star_tracker_commands(
|
||||||
@ -188,8 +181,9 @@ def handle_default_procedure(
|
|||||||
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:
|
||||||
|
object_id = cast(ObjectIdU32, obj_id_man.get(SYRLINKS_HANDLER_ID))
|
||||||
return pack_syrlinks_command(
|
return pack_syrlinks_command(
|
||||||
object_id=SYRLINKS_HANDLER_ID, q=queue_helper, op_code=op_code
|
object_id=object_id, q=queue_helper, op_code=op_code
|
||||||
)
|
)
|
||||||
if service == CustomServiceList.SA_DEPLYOMENT.value:
|
if service == CustomServiceList.SA_DEPLYOMENT.value:
|
||||||
return pack_solar_array_deployment_test_into(
|
return pack_solar_array_deployment_test_into(
|
||||||
@ -205,15 +199,33 @@ def handle_default_procedure(
|
|||||||
return pack_acs_command(q=queue_helper, op_code=op_code)
|
return pack_acs_command(q=queue_helper, op_code=op_code)
|
||||||
if service == CustomServiceList.TCS_ASS.value:
|
if service == CustomServiceList.TCS_ASS.value:
|
||||||
return pack_tcs_sys_commands(q=queue_helper, op_code=op_code)
|
return pack_tcs_sys_commands(q=queue_helper, op_code=op_code)
|
||||||
if service == CustomServiceList.TIME.value:
|
|
||||||
return pack_set_current_time_ascii_command(q=queue_helper)
|
|
||||||
if service == CustomServiceList.RW_ASSEMBLY.value:
|
if service == CustomServiceList.RW_ASSEMBLY.value:
|
||||||
return pack_rw_ass_cmds(q=queue_helper, object_id=RW_ASSEMBLY, op_code=op_code)
|
return pack_rw_ass_cmds(q=queue_helper, object_id=RW_ASSEMBLY, op_code=op_code)
|
||||||
if service == CustomServiceList.CONTROLLERS.value:
|
if service == CustomServiceList.CONTROLLERS.value:
|
||||||
|
from tmtcc import TcHandler
|
||||||
|
|
||||||
|
tc_handler = cast(TcHandler, tc_base)
|
||||||
return pack_cmd_ctrl_to_prompted_mode(
|
return pack_cmd_ctrl_to_prompted_mode(
|
||||||
q=queue_helper, object_id=get_object_from_op_code(op_code), gui=gui
|
q=queue_helper,
|
||||||
|
object_id=get_object_from_op_code(op_code),
|
||||||
|
gui=tc_handler.gui,
|
||||||
)
|
)
|
||||||
if service == CustomServiceList.SCEX.value:
|
if service == CustomServiceList.SCEX.value:
|
||||||
return pack_scex_cmds(q=queue_helper, op_code=op_code)
|
return pack_scex_cmds(
|
||||||
if not route_to_registered_service_handlers(info, queue_helper, op_code):
|
ServiceProviderParams(
|
||||||
|
handler_base=tc_base,
|
||||||
|
op_code=op_code,
|
||||||
|
info=info,
|
||||||
|
queue_helper=queue_helper,
|
||||||
|
)
|
||||||
|
)
|
||||||
|
if not route_to_registered_service_handlers(
|
||||||
|
service,
|
||||||
|
ServiceProviderParams(
|
||||||
|
handler_base=tc_base,
|
||||||
|
op_code=op_code,
|
||||||
|
info=info,
|
||||||
|
queue_helper=queue_helper,
|
||||||
|
),
|
||||||
|
):
|
||||||
LOGGER.warning(f"Invalid Service {service}")
|
LOGGER.warning(f"Invalid Service {service}")
|
||||||
|
@ -1 +1 @@
|
|||||||
from . import acs_ctrl
|
|
||||||
|
@ -1,10 +1,11 @@
|
|||||||
import enum
|
import enum
|
||||||
|
|
||||||
from config.definitions import CustomServiceList
|
from config.definitions import CustomServiceList
|
||||||
|
from spacepackets.ecss import PusTelecommand
|
||||||
from tmtccmd.config import TmtcDefinitionWrapper
|
from tmtccmd.config import TmtcDefinitionWrapper
|
||||||
|
|
||||||
from tmtccmd.tc import DefaultPusQueueHelper
|
from tmtccmd.tc import DefaultPusQueueHelper
|
||||||
from tmtccmd.tc.pus_8_funccmd import generate_action_command
|
from tmtccmd.tc.pus_8_funccmd import make_fsfw_action_cmd
|
||||||
from tmtccmd.logging import get_console_logger
|
from tmtccmd.logging import get_console_logger
|
||||||
from tmtccmd.tc.pus_3_fsfw_hk import make_sid, generate_one_hk_command
|
from tmtccmd.tc.pus_3_fsfw_hk import make_sid, generate_one_hk_command
|
||||||
from tmtccmd.config.tmtc import OpCodeEntry, tmtc_definitions_provider
|
from tmtccmd.config.tmtc import OpCodeEntry, tmtc_definitions_provider
|
||||||
@ -17,12 +18,15 @@ LOGGER = get_console_logger()
|
|||||||
class ActionIds(enum.IntEnum):
|
class ActionIds(enum.IntEnum):
|
||||||
LIST_DIR_INTO_FILE = 0
|
LIST_DIR_INTO_FILE = 0
|
||||||
SWITCH_REBOOT_FILE_HANDLING = 5
|
SWITCH_REBOOT_FILE_HANDLING = 5
|
||||||
RESET_ALL_REBOOT_COUNTERS = 6
|
RESET_REBOOT_COUNTER = 6
|
||||||
RESET_REBOOT_COUNTER_00 = 7
|
SWITCH_IMG_LOCK = 7
|
||||||
RESET_REBOOT_COUNTER_01 = 8
|
SET_MAX_REBOOT_CNT = 8
|
||||||
RESET_REBOOT_COUNTER_10 = 9
|
UPDATE_OBSW_FROM_SD_0 = 10
|
||||||
RESET_REBOOT_COUNTER_11 = 10
|
UPDATE_OBSW_FROM_SD_1 = 11
|
||||||
SET_MAX_REBOOT_CNT = 11
|
UPDATE_OBSW_FROM_TMP = 12
|
||||||
|
SWITCH_TO_SD_0 = 16
|
||||||
|
SWITCH_TO_SD_1 = 17
|
||||||
|
SWITCH_TO_BOTH_SD_CARDS = 18
|
||||||
XSC_REBOOT = 32
|
XSC_REBOOT = 32
|
||||||
FULL_REBOOT = 34
|
FULL_REBOOT = 34
|
||||||
|
|
||||||
@ -32,27 +36,39 @@ class SetIds(enum.IntEnum):
|
|||||||
|
|
||||||
|
|
||||||
class OpCodes:
|
class OpCodes:
|
||||||
REBOOT_XSC = ["0", "reboot-xsc"]
|
REBOOT_XSC = ["0", "reboot_xsc"]
|
||||||
XSC_REBOOT_SELF = ["1", "reboot-self"]
|
XSC_REBOOT_SELF = ["1", "reboot_self"]
|
||||||
XSC_REBOOT_0_0 = ["2", "reboot-00"]
|
XSC_REBOOT_0_0 = ["2", "reboot_00"]
|
||||||
XSC_REBOOT_0_1 = ["3", "reboot-01"]
|
XSC_REBOOT_0_1 = ["3", "reboot_01"]
|
||||||
XSC_REBOOT_1_0 = ["4", "reboot-10"]
|
XSC_REBOOT_1_0 = ["4", "reboot_10"]
|
||||||
XSC_REBOOT_1_1 = ["5", "reboot-11"]
|
XSC_REBOOT_1_1 = ["5", "reboot_11"]
|
||||||
REBOOT_FULL = ["6", "reboot-regular"]
|
REBOOT_FULL = ["6", "reboot_regular"]
|
||||||
GET_HK = ["7", "get-hk"]
|
GET_HK = ["7", "get_hk"]
|
||||||
ENABLE_REBOOT_FILE_HANDLING = ["32", "rbh-off"]
|
OBSW_UPDATE_FROM_SD_0 = ["obsw_update_sd0"]
|
||||||
DISABLE_REBOOT_FILE_HANDLING = ["33", "rbh-on"]
|
OBSW_UPDATE_FROM_SD_1 = ["obsw_update_sd1"]
|
||||||
RESET_ALL_REBOOT_COUNTERS = ["34", "rbh-reset-a"]
|
OBSW_UPDATE_FROM_TMP = ["obsw_update_tmp"]
|
||||||
RESET_REBOOT_COUNTER_00 = ["35", "rbh-reset-00"]
|
SWITCH_TO_SD_0 = ["switch_to_sd_0"]
|
||||||
RESET_REBOOT_COUNTER_01 = ["36", "rbh-reset-01"]
|
SWITCH_TO_SD_1 = ["switch_to_sd_1"]
|
||||||
RESET_REBOOT_COUNTER_10 = ["37", "rbh-reset-10"]
|
SWITCH_TO_BOTH_SD_CARDS = ["switch_to_both_sd_cards"]
|
||||||
RESET_REBOOT_COUNTER_11 = ["38", "rbh-reset-11"]
|
ENABLE_REBOOT_FILE_HANDLING = ["32", "rbh_off"]
|
||||||
SET_MAX_REBOOT_CNT = ["39", "rbh-max-cnt"]
|
DISABLE_REBOOT_FILE_HANDLING = ["33", "rbh_on"]
|
||||||
|
RESET_ALL_REBOOT_COUNTERS = ["34", "rbh_reset_a"]
|
||||||
|
RESET_REBOOT_COUNTER_00 = ["35", "rbh_reset_00"]
|
||||||
|
RESET_REBOOT_COUNTER_01 = ["36", "rbh_reset_01"]
|
||||||
|
RESET_REBOOT_COUNTER_10 = ["37", "rbh_reset_10"]
|
||||||
|
RESET_REBOOT_COUNTER_11 = ["38", "rbh_reset_11"]
|
||||||
|
SET_MAX_REBOOT_CNT = ["39", "rbh_max_cnt"]
|
||||||
|
|
||||||
|
|
||||||
class Info:
|
class Info:
|
||||||
REBOOT_XSC = "XSC reboot with prompt"
|
REBOOT_XSC = "XSC reboot with prompt"
|
||||||
REBOOT_FULL = "Full regular reboot"
|
REBOOT_FULL = "Full regular reboot"
|
||||||
|
OBSW_UPDATE_FROM_SD_0 = "Update OBSW from SD Card 0"
|
||||||
|
OBSW_UPDATE_FROM_SD_1 = "Update OBSW from SD Card 1"
|
||||||
|
OBSW_UPDATE_FROM_TMP = "Update OBSW from tmp folder"
|
||||||
|
SWITCH_TO_SD_0 = "Switch to SD card 0"
|
||||||
|
SWITCH_TO_SD_1 = "Switch to SD card 1"
|
||||||
|
SWITCH_TO_BOTH_SD_CARDS = "Switch to both SD cards with specified active card"
|
||||||
|
|
||||||
|
|
||||||
class Chip(enum.IntEnum):
|
class Chip(enum.IntEnum):
|
||||||
@ -110,6 +126,12 @@ def add_core_controller_definitions(defs: TmtcDefinitionWrapper):
|
|||||||
keys=OpCodes.RESET_REBOOT_COUNTER_11,
|
keys=OpCodes.RESET_REBOOT_COUNTER_11,
|
||||||
info="Reset reboot counter 1 1",
|
info="Reset reboot counter 1 1",
|
||||||
)
|
)
|
||||||
|
oce.add(keys=OpCodes.OBSW_UPDATE_FROM_SD_0, info=Info.OBSW_UPDATE_FROM_SD_0)
|
||||||
|
oce.add(keys=OpCodes.OBSW_UPDATE_FROM_SD_1, info=Info.OBSW_UPDATE_FROM_SD_1)
|
||||||
|
oce.add(keys=OpCodes.OBSW_UPDATE_FROM_TMP, info=Info.OBSW_UPDATE_FROM_TMP)
|
||||||
|
oce.add(keys=OpCodes.SWITCH_TO_SD_0, info=Info.SWITCH_TO_SD_0)
|
||||||
|
oce.add(keys=OpCodes.SWITCH_TO_SD_1, info=Info.SWITCH_TO_SD_1)
|
||||||
|
oce.add(keys=OpCodes.SWITCH_TO_BOTH_SD_CARDS, info=Info.SWITCH_TO_BOTH_SD_CARDS)
|
||||||
defs.add_service(CustomServiceList.CORE.value, "Core Controller", oce)
|
defs.add_service(CustomServiceList.CORE.value, "Core Controller", oce)
|
||||||
|
|
||||||
|
|
||||||
@ -125,7 +147,7 @@ def pack_core_commands(q: DefaultPusQueueHelper, op_code: str):
|
|||||||
if op_code in OpCodes.REBOOT_FULL:
|
if op_code in OpCodes.REBOOT_FULL:
|
||||||
q.add_log_cmd(f"Core Command: {Info.REBOOT_FULL}")
|
q.add_log_cmd(f"Core Command: {Info.REBOOT_FULL}")
|
||||||
q.add_pus_tc(
|
q.add_pus_tc(
|
||||||
generate_action_command(
|
make_fsfw_action_cmd(
|
||||||
object_id=CORE_CONTROLLER_ID, action_id=ActionIds.FULL_REBOOT
|
object_id=CORE_CONTROLLER_ID, action_id=ActionIds.FULL_REBOOT
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@ -155,44 +177,76 @@ def pack_core_commands(q: DefaultPusQueueHelper, op_code: str):
|
|||||||
)
|
)
|
||||||
if op_code in OpCodes.DISABLE_REBOOT_FILE_HANDLING:
|
if op_code in OpCodes.DISABLE_REBOOT_FILE_HANDLING:
|
||||||
q.add_log_cmd("Disabling reboot file handling")
|
q.add_log_cmd("Disabling reboot file handling")
|
||||||
app_data = bytearray([0])
|
user_data = bytearray([0])
|
||||||
generate_action_command(
|
q.add_pus_tc(
|
||||||
object_id=CORE_CONTROLLER_ID,
|
make_fsfw_action_cmd(
|
||||||
action_id=ActionIds.SWITCH_REBOOT_FILE_HANDLING,
|
object_id=CORE_CONTROLLER_ID,
|
||||||
app_data=app_data,
|
action_id=ActionIds.SWITCH_REBOOT_FILE_HANDLING,
|
||||||
|
user_data=user_data,
|
||||||
|
)
|
||||||
)
|
)
|
||||||
if op_code in OpCodes.ENABLE_REBOOT_FILE_HANDLING:
|
if op_code in OpCodes.ENABLE_REBOOT_FILE_HANDLING:
|
||||||
q.add_log_cmd("Enabling reboot file handling")
|
q.add_log_cmd("Enabling reboot file handling")
|
||||||
app_data = bytearray([1])
|
user_data = bytearray([1])
|
||||||
generate_action_command(
|
q.add_pus_tc(
|
||||||
object_id=CORE_CONTROLLER_ID,
|
make_fsfw_action_cmd(
|
||||||
action_id=ActionIds.SWITCH_REBOOT_FILE_HANDLING,
|
object_id=CORE_CONTROLLER_ID,
|
||||||
app_data=app_data,
|
action_id=ActionIds.SWITCH_REBOOT_FILE_HANDLING,
|
||||||
|
user_data=user_data,
|
||||||
|
)
|
||||||
)
|
)
|
||||||
if op_code in OpCodes.RESET_ALL_REBOOT_COUNTERS:
|
if op_code in OpCodes.RESET_ALL_REBOOT_COUNTERS:
|
||||||
q.add_log_cmd("Resetting all reboot counters")
|
q.add_log_cmd("Resetting all reboot counters")
|
||||||
generate_action_command(
|
q.add_pus_tc(
|
||||||
object_id=CORE_CONTROLLER_ID, action_id=ActionIds.RESET_ALL_REBOOT_COUNTERS
|
make_fsfw_action_cmd(
|
||||||
|
object_id=CORE_CONTROLLER_ID,
|
||||||
|
action_id=ActionIds.RESET_REBOOT_COUNTER,
|
||||||
|
)
|
||||||
)
|
)
|
||||||
if op_code in OpCodes.RESET_REBOOT_COUNTER_00:
|
if op_code in OpCodes.RESET_REBOOT_COUNTER_00:
|
||||||
q.add_log_cmd("Resetting reboot counter 0 0")
|
reset_specific_boot_counter(q, 0, 0)
|
||||||
generate_action_command(
|
|
||||||
object_id=CORE_CONTROLLER_ID, action_id=ActionIds.RESET_REBOOT_COUNTER_00
|
|
||||||
)
|
|
||||||
if op_code in OpCodes.RESET_REBOOT_COUNTER_01:
|
if op_code in OpCodes.RESET_REBOOT_COUNTER_01:
|
||||||
q.add_log_cmd("Resetting reboot counter 0 1")
|
reset_specific_boot_counter(q, 0, 1)
|
||||||
generate_action_command(
|
|
||||||
object_id=CORE_CONTROLLER_ID, action_id=ActionIds.RESET_REBOOT_COUNTER_01
|
|
||||||
)
|
|
||||||
if op_code in OpCodes.RESET_REBOOT_COUNTER_10:
|
if op_code in OpCodes.RESET_REBOOT_COUNTER_10:
|
||||||
q.add_log_cmd("Resetting reboot counter 1 0")
|
reset_specific_boot_counter(q, 1, 0)
|
||||||
generate_action_command(
|
|
||||||
object_id=CORE_CONTROLLER_ID, action_id=ActionIds.RESET_REBOOT_COUNTER_10
|
|
||||||
)
|
|
||||||
if op_code in OpCodes.RESET_REBOOT_COUNTER_11:
|
if op_code in OpCodes.RESET_REBOOT_COUNTER_11:
|
||||||
q.add_log_cmd("Resetting reboot counter 1 1")
|
reset_specific_boot_counter(q, 1, 1)
|
||||||
generate_action_command(
|
if op_code in OpCodes.OBSW_UPDATE_FROM_SD_0:
|
||||||
object_id=CORE_CONTROLLER_ID, action_id=ActionIds.RESET_REBOOT_COUNTER_11
|
q.add_log_cmd(Info.OBSW_UPDATE_FROM_SD_0)
|
||||||
|
q.add_pus_tc(pack_obsw_update_cmd(ActionIds.UPDATE_OBSW_FROM_SD_0))
|
||||||
|
if op_code in OpCodes.OBSW_UPDATE_FROM_SD_1:
|
||||||
|
q.add_log_cmd(Info.OBSW_UPDATE_FROM_SD_1)
|
||||||
|
q.add_pus_tc(pack_obsw_update_cmd(ActionIds.UPDATE_OBSW_FROM_SD_1))
|
||||||
|
if op_code in OpCodes.OBSW_UPDATE_FROM_TMP:
|
||||||
|
q.add_log_cmd(Info.OBSW_UPDATE_FROM_TMP)
|
||||||
|
q.add_pus_tc(pack_obsw_update_cmd(ActionIds.UPDATE_OBSW_FROM_TMP))
|
||||||
|
if op_code in OpCodes.SWITCH_TO_SD_0:
|
||||||
|
q.add_log_cmd(Info.SWITCH_TO_SD_0)
|
||||||
|
q.add_pus_tc(
|
||||||
|
make_fsfw_action_cmd(
|
||||||
|
object_id=CORE_CONTROLLER_ID, action_id=ActionIds.SWITCH_TO_SD_0
|
||||||
|
)
|
||||||
|
)
|
||||||
|
if op_code in OpCodes.SWITCH_TO_SD_1:
|
||||||
|
q.add_log_cmd(Info.SWITCH_TO_SD_1)
|
||||||
|
q.add_pus_tc(
|
||||||
|
make_fsfw_action_cmd(
|
||||||
|
object_id=CORE_CONTROLLER_ID, action_id=ActionIds.SWITCH_TO_SD_1
|
||||||
|
)
|
||||||
|
)
|
||||||
|
if op_code in OpCodes.SWITCH_TO_BOTH_SD_CARDS:
|
||||||
|
while True:
|
||||||
|
active_sd_card = int(input("Please specify active SD cqrd [0/1]: "))
|
||||||
|
if active_sd_card not in [0, 1]:
|
||||||
|
LOGGER.warning("Invalid SD card specified. Try again")
|
||||||
|
break
|
||||||
|
q.add_log_cmd(Info.SWITCH_TO_BOTH_SD_CARDS)
|
||||||
|
q.add_pus_tc(
|
||||||
|
make_fsfw_action_cmd(
|
||||||
|
object_id=CORE_CONTROLLER_ID,
|
||||||
|
action_id=ActionIds.SWITCH_TO_BOTH_SD_CARDS,
|
||||||
|
user_data=bytes([active_sd_card]),
|
||||||
|
)
|
||||||
)
|
)
|
||||||
if op_code in OpCodes.GET_HK:
|
if op_code in OpCodes.GET_HK:
|
||||||
q.add_log_cmd("Requesting housekeeping set")
|
q.add_log_cmd("Requesting housekeeping set")
|
||||||
@ -200,6 +254,17 @@ def pack_core_commands(q: DefaultPusQueueHelper, op_code: str):
|
|||||||
q.add_pus_tc(generate_one_hk_command(sid))
|
q.add_pus_tc(generate_one_hk_command(sid))
|
||||||
|
|
||||||
|
|
||||||
|
def reset_specific_boot_counter(q: DefaultPusQueueHelper, chip: int, copy: int):
|
||||||
|
q.add_log_cmd(f"Resetting boot counter {chip} {copy}")
|
||||||
|
q.add_pus_tc(
|
||||||
|
make_fsfw_action_cmd(
|
||||||
|
object_id=CORE_CONTROLLER_ID,
|
||||||
|
action_id=ActionIds.RESET_REBOOT_COUNTER,
|
||||||
|
user_data=bytes([chip, copy]),
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def determine_reboot_params() -> (bool, Chip, Copy):
|
def determine_reboot_params() -> (bool, Chip, Copy):
|
||||||
chip_select = -1
|
chip_select = -1
|
||||||
copy_select = -1
|
copy_select = -1
|
||||||
@ -208,6 +273,10 @@ def determine_reboot_params() -> (bool, Chip, Copy):
|
|||||||
LOGGER.info("Rebooting currently running image")
|
LOGGER.info("Rebooting currently running image")
|
||||||
return True, chip_select, copy_select
|
return True, chip_select, copy_select
|
||||||
LOGGER.info("Rebooting image specified by chip and copy")
|
LOGGER.info("Rebooting image specified by chip and copy")
|
||||||
|
return False, determine_chip_and_copy()
|
||||||
|
|
||||||
|
|
||||||
|
def determine_chip_and_copy() -> (int, int):
|
||||||
while True:
|
while True:
|
||||||
chip_select = input("Chip select [0/1]: ")
|
chip_select = input("Chip select [0/1]: ")
|
||||||
if chip_select in ["0", "1"]:
|
if chip_select in ["0", "1"]:
|
||||||
@ -228,7 +297,15 @@ def determine_reboot_params() -> (bool, Chip, Copy):
|
|||||||
break
|
break
|
||||||
else:
|
else:
|
||||||
LOGGER.warning("Invalid copy select value. Try again")
|
LOGGER.warning("Invalid copy select value. Try again")
|
||||||
return False, chip_select, copy_select
|
return chip_select, copy_select
|
||||||
|
|
||||||
|
|
||||||
|
def pack_obsw_update_cmd(action_id: int) -> PusTelecommand:
|
||||||
|
chip, copy = determine_chip_and_copy()
|
||||||
|
user_data = bytes([chip, copy])
|
||||||
|
return make_fsfw_action_cmd(
|
||||||
|
object_id=CORE_CONTROLLER_ID, action_id=action_id, user_data=user_data
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def perform_reboot_cmd(
|
def perform_reboot_cmd(
|
||||||
@ -247,10 +324,9 @@ def perform_reboot_cmd(
|
|||||||
tc_data.append(copy)
|
tc_data.append(copy)
|
||||||
q.add_log_cmd(f"Packing reboot command for chip {chip} and copy {copy}")
|
q.add_log_cmd(f"Packing reboot command for chip {chip} and copy {copy}")
|
||||||
q.add_pus_tc(
|
q.add_pus_tc(
|
||||||
generate_action_command(
|
make_fsfw_action_cmd(
|
||||||
object_id=CORE_CONTROLLER_ID,
|
object_id=CORE_CONTROLLER_ID,
|
||||||
action_id=ActionIds.XSC_REBOOT,
|
action_id=ActionIds.XSC_REBOOT,
|
||||||
app_data=tc_data,
|
user_data=tc_data,
|
||||||
ssc=0,
|
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
@ -28,6 +28,9 @@ from pus_tc.devs.mgms import MgmLis3SetIds as MgmLis3SetIds_0_2
|
|||||||
from pus_tc.devs.mgms import MgmRm3100SetIds as MgmRm3100SetIds_1_3
|
from pus_tc.devs.mgms import MgmRm3100SetIds as MgmRm3100SetIds_1_3
|
||||||
from pus_tc.devs.gyros import AdisGyroSetIds as AdisGyroSetIds_0_2
|
from pus_tc.devs.gyros import AdisGyroSetIds as AdisGyroSetIds_0_2
|
||||||
from pus_tc.devs.gyros import L3gGyroSetIds as L3gGyroSetIds_1_3
|
from pus_tc.devs.gyros import L3gGyroSetIds as L3gGyroSetIds_1_3
|
||||||
|
from pus_tc.devs.syrlinks_hk_handler import OpCodes as SyrlinksOpCodes
|
||||||
|
from pus_tc.devs.syrlinks_hk_handler import SetIds as SyrlinksSetIds
|
||||||
|
from pus_tc.devs.star_tracker import OpCodes as StrOpCodes
|
||||||
from pus_tc.devs.gps import SetIds as GpsSetIds
|
from pus_tc.devs.gps import SetIds as GpsSetIds
|
||||||
from pus_tc.devs.imtq import ImtqSetIds
|
from pus_tc.devs.imtq import ImtqSetIds
|
||||||
from pus_tc.devs.sus import SetIds
|
from pus_tc.devs.sus import SetIds
|
||||||
@ -57,7 +60,8 @@ class OpCodes:
|
|||||||
STR_FT = ["str-ft"]
|
STR_FT = ["str-ft"]
|
||||||
RW_FT_ONE_RW = ["rw-ft-one-rw"]
|
RW_FT_ONE_RW = ["rw-ft-one-rw"]
|
||||||
RW_FT_TWO_RWS = ["rw-ft-two-rws"]
|
RW_FT_TWO_RWS = ["rw-ft-two-rws"]
|
||||||
TV_TEARDOWN_TCS_FT_OFF = ["t", "tcs-ft-off"]
|
SYRLINKS_FT = ["syrlinks-ft"]
|
||||||
|
TV_TEARDOWN_TCS_FT_OFF = ["teardown", "tcs-ft-off"]
|
||||||
|
|
||||||
|
|
||||||
class KeyAndInfo:
|
class KeyAndInfo:
|
||||||
@ -67,6 +71,7 @@ class KeyAndInfo:
|
|||||||
BAT_FT = ["BPX Battery", "battery functional test"]
|
BAT_FT = ["BPX Battery", "battery functional test"]
|
||||||
CORE_FT = ["OBC", "OBC functional test"]
|
CORE_FT = ["OBC", "OBC functional test"]
|
||||||
PCDU_FT = ["PCDU", "PCDU functional test"]
|
PCDU_FT = ["PCDU", "PCDU functional test"]
|
||||||
|
SYRLINKS_FT = ["Syrlinks", "Syrlinks functional test"]
|
||||||
RAD_SEN_FT = ["Radiation Sensor", "Radiation Sensor functional test"]
|
RAD_SEN_FT = ["Radiation Sensor", "Radiation Sensor functional test"]
|
||||||
ACS_FT = ["ACS", "ACS functional test"]
|
ACS_FT = ["ACS", "ACS functional test"]
|
||||||
MGT_FT = ["MGT", "MGT functional test"]
|
MGT_FT = ["MGT", "MGT functional test"]
|
||||||
@ -574,6 +579,20 @@ def pack_proc_commands(q: DefaultPusQueueHelper, op_code: str):
|
|||||||
|
|
||||||
pack_acs_command(q=q, op_code="sus-off")
|
pack_acs_command(q=q, op_code="sus-off")
|
||||||
|
|
||||||
|
if op_code in OpCodes.SYRLINKS_FT:
|
||||||
|
key = KAI.SYRLINKS_FT[0]
|
||||||
|
sid_list = [
|
||||||
|
make_sid(oids.SYRLINKS_HANDLER_ID, SyrlinksSetIds.RX_REGISTERS_DATASET),
|
||||||
|
make_sid(oids.SYRLINKS_HANDLER_ID, SyrlinksSetIds.TX_REGISTERS_DATASET),
|
||||||
|
]
|
||||||
|
# HK listening
|
||||||
|
pack_generic_hk_listening_cmds(
|
||||||
|
tc_queue=tc_queue,
|
||||||
|
proc_key=key,
|
||||||
|
sid_list=sid_list,
|
||||||
|
diag=False,
|
||||||
|
cfg=GenericHkListeningCfg.default(),
|
||||||
|
)
|
||||||
if op_code in OpCodes.STR_FT:
|
if op_code in OpCodes.STR_FT:
|
||||||
key = KAI.STR_FT[0]
|
key = KAI.STR_FT[0]
|
||||||
|
|
||||||
|
@ -16,9 +16,9 @@ from config.object_ids import TCS_BOARD_ASS_ID, TCS_CONTROLLER
|
|||||||
|
|
||||||
|
|
||||||
class OpCodes:
|
class OpCodes:
|
||||||
TCS_BOARD_ASS_NORMAL = ["0", "tcs-normal"]
|
TCS_BOARD_ASS_NORMAL = ["0", "normal"]
|
||||||
TCS_BOARD_ASS_OFF = ["1", "tcs-off"]
|
TCS_BOARD_ASS_OFF = ["1", "off"]
|
||||||
REQUEST_SENSOR_TEMP_SET = ["2", "temp-hk"]
|
REQUEST_SENSOR_TEMP_SET = ["2", "temps"]
|
||||||
|
|
||||||
|
|
||||||
class Info:
|
class Info:
|
||||||
|
@ -2,10 +2,11 @@ from datetime import datetime
|
|||||||
|
|
||||||
from config.definitions import CustomServiceList
|
from config.definitions import CustomServiceList
|
||||||
from spacepackets.ecss import PusTelecommand
|
from spacepackets.ecss import PusTelecommand
|
||||||
from tmtccmd import DefaultProcedureInfo
|
from tmtccmd import DefaultProcedureInfo, TcHandlerBase
|
||||||
|
|
||||||
from tmtccmd.logging import get_console_logger
|
from tmtccmd.logging import get_console_logger
|
||||||
from tmtccmd.tc import DefaultPusQueueHelper, service_provider
|
from tmtccmd.tc import DefaultPusQueueHelper, service_provider
|
||||||
|
from tmtccmd.tc.decorator import ServiceProviderParams
|
||||||
|
|
||||||
LOGGER = get_console_logger()
|
LOGGER = get_console_logger()
|
||||||
|
|
||||||
@ -19,9 +20,8 @@ class Info:
|
|||||||
|
|
||||||
|
|
||||||
@service_provider(CustomServiceList.TIME.value)
|
@service_provider(CustomServiceList.TIME.value)
|
||||||
def pack_set_current_time_ascii_command(
|
def pack_set_current_time_ascii_command(p: ServiceProviderParams):
|
||||||
_info: DefaultProcedureInfo, q: DefaultPusQueueHelper, _op_code: str
|
q = p.queue_helper
|
||||||
):
|
|
||||||
time_test_current_time = datetime.utcnow().isoformat() + "Z" + "\0"
|
time_test_current_time = datetime.utcnow().isoformat() + "Z" + "\0"
|
||||||
current_time_ascii = time_test_current_time.encode("ascii")
|
current_time_ascii = time_test_current_time.encode("ascii")
|
||||||
LOGGER.info(f"Current time in ASCII format: {current_time_ascii}")
|
LOGGER.info(f"Current time in ASCII format: {current_time_ascii}")
|
||||||
|
@ -1,10 +1,11 @@
|
|||||||
import struct
|
import struct
|
||||||
from config.object_ids import *
|
from config.object_ids import *
|
||||||
from pus_tc.devs.imtq import ImtqActionIds
|
from pus_tc.devs.imtq import ImtqActionIds
|
||||||
from pus_tc.devs.ploc_mpsoc import PlocReplyIds
|
from pus_tm.defs import PrintWrapper
|
||||||
from pus_tc.devs.ploc_supervisor import SupvActionIds
|
from tmtc.ploc_mpsoc import PlocReplyIds
|
||||||
|
from tmtc.ploc_supervisor import SupvActionIds
|
||||||
from pus_tc.devs.star_tracker import StarTrackerActionIds
|
from pus_tc.devs.star_tracker import StarTrackerActionIds
|
||||||
from gomspace.gomspace_common import GomspaceDeviceActionIds
|
from tmtc.power.tm import handle_get_param_data_reply
|
||||||
from tmtccmd.logging import get_console_logger
|
from tmtccmd.logging import get_console_logger
|
||||||
from tmtccmd.tm import Service8FsfwTm
|
from tmtccmd.tm import Service8FsfwTm
|
||||||
from tmtccmd.util.tmtc_printer import FsfwTmTcPrinter
|
from tmtccmd.util.tmtc_printer import FsfwTmTcPrinter
|
||||||
@ -21,13 +22,13 @@ def handle_action_reply(
|
|||||||
tm_packet = Service8FsfwTm.unpack(raw_telemetry=raw_tm)
|
tm_packet = Service8FsfwTm.unpack(raw_telemetry=raw_tm)
|
||||||
printer.handle_long_tm_print(packet_if=tm_packet, info_if=tm_packet)
|
printer.handle_long_tm_print(packet_if=tm_packet, info_if=tm_packet)
|
||||||
object_id = obj_id_dict.get(tm_packet.source_object_id_as_bytes)
|
object_id = obj_id_dict.get(tm_packet.source_object_id_as_bytes)
|
||||||
|
pw = PrintWrapper(printer)
|
||||||
custom_data = tm_packet.custom_data
|
custom_data = tm_packet.custom_data
|
||||||
action_id = tm_packet.action_id
|
action_id = tm_packet.action_id
|
||||||
generic_print_str = printer.generic_action_packet_tm_print(
|
generic_print_str = printer.generic_action_packet_tm_print(
|
||||||
packet=tm_packet, obj_id=object_id
|
packet=tm_packet, obj_id=object_id
|
||||||
)
|
)
|
||||||
print(generic_print_str)
|
pw.dlog(generic_print_str)
|
||||||
printer.file_logger.info(generic_print_str)
|
|
||||||
if object_id.as_bytes == IMTQ_HANDLER_ID:
|
if object_id.as_bytes == IMTQ_HANDLER_ID:
|
||||||
return handle_imtq_replies(action_id, printer, custom_data)
|
return handle_imtq_replies(action_id, printer, custom_data)
|
||||||
elif object_id.as_bytes == PLOC_MPSOC_ID:
|
elif object_id.as_bytes == PLOC_MPSOC_ID:
|
||||||
@ -36,8 +37,16 @@ def handle_action_reply(
|
|||||||
return handle_supervisor_replies(action_id, printer, custom_data)
|
return handle_supervisor_replies(action_id, printer, custom_data)
|
||||||
elif object_id.as_bytes == STAR_TRACKER_ID:
|
elif object_id.as_bytes == STAR_TRACKER_ID:
|
||||||
return handle_startracker_replies(action_id, printer, custom_data)
|
return handle_startracker_replies(action_id, printer, custom_data)
|
||||||
elif object_id.as_bytes == ACU_HANDLER_ID:
|
elif object_id.as_bytes in [
|
||||||
return handle_acu_replies(action_id, printer, custom_data)
|
ACU_HANDLER_ID,
|
||||||
|
PDU_1_HANDLER_ID,
|
||||||
|
PDU_2_HANDLER_ID,
|
||||||
|
P60_DOCK_HANDLER,
|
||||||
|
]:
|
||||||
|
return handle_get_param_data_reply(object_id, action_id, pw, custom_data)
|
||||||
|
else:
|
||||||
|
pw.dlog(f"No dedicated action reply handler found for reply from {object_id}")
|
||||||
|
pw.dlog(f"Raw Data: {tm_packet.custom_data.hex(sep=',')}")
|
||||||
|
|
||||||
|
|
||||||
def handle_imtq_replies(
|
def handle_imtq_replies(
|
||||||
@ -123,27 +132,3 @@ def handle_startracker_replies(
|
|||||||
print(content_list)
|
print(content_list)
|
||||||
printer.file_logger.info(header_list)
|
printer.file_logger.info(header_list)
|
||||||
printer.file_logger.info(content_list)
|
printer.file_logger.info(content_list)
|
||||||
|
|
||||||
|
|
||||||
def handle_acu_replies(
|
|
||||||
action_id: int, printer: FsfwTmTcPrinter, custom_data: bytearray
|
|
||||||
):
|
|
||||||
if action_id == GomspaceDeviceActionIds.PARAM_GET:
|
|
||||||
header_list = [
|
|
||||||
"Gomspace action ID" "Table ID",
|
|
||||||
"Memory Address",
|
|
||||||
"Payload length" "Payload",
|
|
||||||
]
|
|
||||||
fmt_str = "!BBHH"
|
|
||||||
(action, table_id, address, payload_length) = struct.unpack(
|
|
||||||
fmt_str, custom_data[:6]
|
|
||||||
)
|
|
||||||
content_list = [
|
|
||||||
action,
|
|
||||||
table_id,
|
|
||||||
"0x" + hex(address),
|
|
||||||
payload_length,
|
|
||||||
"0x" + custom_data[6:].hex(),
|
|
||||||
]
|
|
||||||
print(header_list)
|
|
||||||
print(content_list)
|
|
||||||
|
@ -2,6 +2,7 @@ import logging
|
|||||||
import os.path
|
import os.path
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from config.object_ids import get_object_ids
|
from config.object_ids import get_object_ids
|
||||||
|
from pus_tm.defs import PrintWrapper
|
||||||
|
|
||||||
from tmtccmd.tm import Service5Tm
|
from tmtccmd.tm import Service5Tm
|
||||||
from tmtccmd.logging import get_console_logger
|
from tmtccmd.logging import get_console_logger
|
||||||
@ -25,12 +26,9 @@ def get_event_dict() -> EventDictT:
|
|||||||
return __EVENT_DICT
|
return __EVENT_DICT
|
||||||
|
|
||||||
|
|
||||||
def handle_event_packet(
|
def handle_event_packet(raw_tm: bytes, printer: FsfwTmTcPrinter):
|
||||||
raw_tm: bytes, printer: FsfwTmTcPrinter, file_logger: logging.Logger
|
pw = PrintWrapper(printer)
|
||||||
) -> str:
|
|
||||||
tm = Service5Tm.unpack(raw_telemetry=raw_tm)
|
tm = Service5Tm.unpack(raw_telemetry=raw_tm)
|
||||||
printer.handle_long_tm_print(packet_if=tm, info_if=tm)
|
|
||||||
additional_event_info = ""
|
|
||||||
event_dict = get_event_dict()
|
event_dict = get_event_dict()
|
||||||
info = event_dict.get(tm.event_id)
|
info = event_dict.get(tm.event_id)
|
||||||
if info is None:
|
if info is None:
|
||||||
@ -47,15 +45,28 @@ def handle_event_packet(
|
|||||||
generic_event_string = (
|
generic_event_string = (
|
||||||
f"Object {obj_name} generated Event {tm.event_id} | {info.name}"
|
f"Object {obj_name} generated Event {tm.event_id} | {info.name}"
|
||||||
)
|
)
|
||||||
if info.info != "":
|
pw.printer.file_logger.info(
|
||||||
additional_event_info = (
|
|
||||||
f"Additional info: {info.info} | P1: {tm.param_1} | P2: {tm.param_2}"
|
|
||||||
)
|
|
||||||
file_logger.info(
|
|
||||||
f"{datetime.now().strftime('%Y-%m-%d %H:%M:%S')}: {generic_event_string}"
|
f"{datetime.now().strftime('%Y-%m-%d %H:%M:%S')}: {generic_event_string}"
|
||||||
)
|
)
|
||||||
LOGGER.info(generic_event_string)
|
LOGGER.info(generic_event_string)
|
||||||
if additional_event_info != "":
|
specific_handler = True
|
||||||
file_logger.info(additional_event_info)
|
if info.name == "SUPV_UPDATE_PROGRESS" or info.name == "WRITE_MEMORY_FAILED":
|
||||||
print(additional_event_info)
|
additional_event_info = f"Additional info: {info.info}"
|
||||||
return generic_event_string + " | " + additional_event_info
|
context = (
|
||||||
|
f"Progress Percent: {tm.param_1 >> 24 & 0xff} | Sequence Count: {tm.param_1 & 0xffff} "
|
||||||
|
f"| Bytes Written: {tm.param_2}"
|
||||||
|
)
|
||||||
|
pw.dlog(additional_event_info)
|
||||||
|
pw.dlog(context)
|
||||||
|
if info.name == "MODE_INFO":
|
||||||
|
pw.dlog(f"Mode: {tm.param_1}")
|
||||||
|
pw.dlog(f"Submode: {tm.param_2}")
|
||||||
|
else:
|
||||||
|
specific_handler = False
|
||||||
|
if info.info != "":
|
||||||
|
additional_event_info = (
|
||||||
|
f"Additional info: {info.info} | P1: {tm.param_1} | P2: {tm.param_2}"
|
||||||
|
)
|
||||||
|
pw.dlog(additional_event_info)
|
||||||
|
if not specific_handler:
|
||||||
|
printer.handle_long_tm_print(packet_if=tm, info_if=tm)
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
"""
|
"""
|
||||||
from config.object_ids import get_object_ids
|
from config.object_ids import get_object_ids
|
||||||
from spacepackets.ecss import PusTelemetry
|
from spacepackets.ecss import PusTelemetry
|
||||||
|
from spacepackets.ecss.pus_17_test import Service17Tm
|
||||||
from spacepackets.util import PrintFormats
|
from spacepackets.util import PrintFormats
|
||||||
from tmtccmd import get_console_logger
|
from tmtccmd import get_console_logger
|
||||||
from tmtccmd.logging.pus import RawTmtcTimedLogWrapper
|
from tmtccmd.logging.pus import RawTmtcTimedLogWrapper
|
||||||
@ -11,7 +12,7 @@ from tmtccmd.tm.pus_17_test import Service17TmExtended
|
|||||||
from tmtccmd.util.tmtc_printer import FsfwTmTcPrinter
|
from tmtccmd.util.tmtc_printer import FsfwTmTcPrinter
|
||||||
|
|
||||||
from .event_handler import handle_event_packet
|
from .event_handler import handle_event_packet
|
||||||
from .verification_handler import handle_service_1_packet
|
from .verification_handler import handle_service_1_fsfw_packet
|
||||||
from .hk_handling import handle_hk_packet
|
from .hk_handling import handle_hk_packet
|
||||||
from .action_reply_handler import handle_action_reply
|
from .action_reply_handler import handle_action_reply
|
||||||
|
|
||||||
@ -34,20 +35,21 @@ def pus_factory_hook(
|
|||||||
LOGGER.warning(f"Raw Packet: [{packet.hex(sep=',')}], REPR: {packet!r}")
|
LOGGER.warning(f"Raw Packet: [{packet.hex(sep=',')}], REPR: {packet!r}")
|
||||||
return
|
return
|
||||||
service = tm_packet.service
|
service = tm_packet.service
|
||||||
file_logger = printer.file_logger
|
|
||||||
obj_id_dict = get_object_ids()
|
obj_id_dict = get_object_ids()
|
||||||
dedicated_handler = True
|
dedicated_handler = True
|
||||||
if service == 1:
|
if service == 1:
|
||||||
handle_service_1_packet(wrapper=verif_wrapper, raw_tm=packet)
|
handle_service_1_fsfw_packet(wrapper=verif_wrapper, raw_tm=packet)
|
||||||
elif service == 3:
|
elif service == 3:
|
||||||
handle_hk_packet(printer=printer, raw_tm=packet, obj_id_dict=obj_id_dict)
|
handle_hk_packet(printer=printer, raw_tm=packet, obj_id_dict=obj_id_dict)
|
||||||
elif service == 5:
|
elif service == 5:
|
||||||
handle_event_packet(raw_tm=packet, printer=printer, file_logger=file_logger)
|
handle_event_packet(raw_tm=packet, printer=printer)
|
||||||
elif service == 8:
|
elif service == 8:
|
||||||
handle_action_reply(raw_tm=packet, printer=printer, obj_id_dict=obj_id_dict)
|
handle_action_reply(raw_tm=packet, printer=printer, obj_id_dict=obj_id_dict)
|
||||||
elif service == 17:
|
elif service == 17:
|
||||||
tm_packet = Service17TmExtended.unpack(raw_telemetry=packet)
|
tm_packet = Service17Tm.unpack(raw_telemetry=packet)
|
||||||
dedicated_handler = False
|
if tm_packet.subservice == 2:
|
||||||
|
verif_wrapper.dlog("Received Ping Reply TM[17,2]")
|
||||||
|
dedicated_handler = True
|
||||||
elif service == 20:
|
elif service == 20:
|
||||||
tm_packet = Service20FsfwTm.unpack(raw_telemetry=packet)
|
tm_packet = Service20FsfwTm.unpack(raw_telemetry=packet)
|
||||||
dedicated_handler = False
|
dedicated_handler = False
|
||||||
|
@ -1,9 +1,11 @@
|
|||||||
"""HK Handling for EIVE OBSW"""
|
"""HK Handling for EIVE OBSW"""
|
||||||
from pus_tc.system.acs_ctrl import handle_acs_ctrl_mgm_data
|
# from pus_tm.tcp_server_objects import TCP_SEVER_SENSOR_TEMPERATURES
|
||||||
|
from tmtc.acs_ctrl import handle_acs_ctrl_mgm_data
|
||||||
from pus_tm.devs.plpcdu import handle_plpcdu_hk
|
from pus_tm.devs.plpcdu import handle_plpcdu_hk
|
||||||
from pus_tm.devs.rad_sensor import handle_rad_sensor_data
|
from pus_tm.devs.rad_sensor import handle_rad_sensor_data
|
||||||
from pus_tm.devs.sus import handle_sus_hk
|
from pus_tm.devs.sus import handle_sus_hk
|
||||||
from pus_tm.system.tcs import handle_thermal_controller_hk_data
|
from pus_tm.system.tcs import handle_thermal_controller_hk_data
|
||||||
|
from tmtc.ploc_supervisor import handle_supv_hk_data
|
||||||
from tmtccmd.tm.pus_3_fsfw_hk import (
|
from tmtccmd.tm.pus_3_fsfw_hk import (
|
||||||
Service3Base,
|
Service3Base,
|
||||||
HkContentType,
|
HkContentType,
|
||||||
@ -21,7 +23,7 @@ from pus_tm.devs.imtq_mgt import (
|
|||||||
handle_calibrated_mtm_measurement,
|
handle_calibrated_mtm_measurement,
|
||||||
handle_raw_mtm_measurement,
|
handle_raw_mtm_measurement,
|
||||||
)
|
)
|
||||||
from pus_tm.system.power import handle_pdu_data, handle_p60_hk_data, handle_acu_hk_data
|
from tmtc.power.tm import handle_pdu_data, handle_p60_hk_data, handle_acu_hk_data
|
||||||
from pus_tm.devs.syrlinks import handle_syrlinks_hk_data
|
from pus_tm.devs.syrlinks import handle_syrlinks_hk_data
|
||||||
from pus_tc.devs.imtq import ImtqSetIds
|
from pus_tc.devs.imtq import ImtqSetIds
|
||||||
from pus_tm.devs.reaction_wheels import handle_rw_hk_data
|
from pus_tm.devs.reaction_wheels import handle_rw_hk_data
|
||||||
@ -34,6 +36,9 @@ import config.object_ids as obj_ids
|
|||||||
LOGGER = get_console_logger()
|
LOGGER = get_console_logger()
|
||||||
|
|
||||||
|
|
||||||
|
FORWARD_SENSOR_TEMPS = False
|
||||||
|
|
||||||
|
|
||||||
def handle_hk_packet(
|
def handle_hk_packet(
|
||||||
raw_tm: bytes,
|
raw_tm: bytes,
|
||||||
obj_id_dict: ObjectIdDictT,
|
obj_id_dict: ObjectIdDictT,
|
||||||
@ -45,9 +50,12 @@ def handle_hk_packet(
|
|||||||
named_obj_id = tm_packet.object_id
|
named_obj_id = tm_packet.object_id
|
||||||
if tm_packet.subservice == 25 or tm_packet.subservice == 26:
|
if tm_packet.subservice == 25 or tm_packet.subservice == 26:
|
||||||
hk_data = tm_packet.tm_data[8:]
|
hk_data = tm_packet.tm_data[8:]
|
||||||
# tcp_server_sensor_temperatures.report_raw_hk_data(
|
if FORWARD_SENSOR_TEMPS:
|
||||||
# object_id=named_obj_id, set_id=tm_packet.set_id, hk_data=hk_data
|
# TODO: Maybe use singleton?
|
||||||
# )
|
# TCP_SEVER_SENSOR_TEMPERATURES.report_raw_hk_data(
|
||||||
|
# object_id=named_obj_id, set_id=tm_packet.set_id, hk_data=hk_data
|
||||||
|
# )
|
||||||
|
pass
|
||||||
printer.generic_hk_tm_print(
|
printer.generic_hk_tm_print(
|
||||||
content_type=HkContentType.HK,
|
content_type=HkContentType.HK,
|
||||||
object_id=named_obj_id,
|
object_id=named_obj_id,
|
||||||
@ -160,6 +168,8 @@ def handle_regular_hk_print(
|
|||||||
handle_thermal_controller_hk_data(
|
handle_thermal_controller_hk_data(
|
||||||
object_id=object_id, printer=printer, set_id=set_id, hk_data=hk_data
|
object_id=object_id, printer=printer, set_id=set_id, hk_data=hk_data
|
||||||
)
|
)
|
||||||
|
elif objb == obj_ids.PLOC_SUPV_ID:
|
||||||
|
handle_supv_hk_data(set_id=set_id, hk_data=hk_data, printer=printer)
|
||||||
elif objb == obj_ids.ACS_CONTROLLER:
|
elif objb == obj_ids.ACS_CONTROLLER:
|
||||||
handle_acs_ctrl_mgm_data(printer, hk_data)
|
handle_acs_ctrl_mgm_data(printer, hk_data)
|
||||||
else:
|
else:
|
||||||
|
@ -1,12 +1,8 @@
|
|||||||
import enum
|
import enum
|
||||||
|
import pprint
|
||||||
import struct
|
import struct
|
||||||
|
|
||||||
from pus_tm.defs import PrintWrapper
|
from pus_tm.defs import PrintWrapper
|
||||||
from pus_tm.tcp_server_objects import (
|
|
||||||
tcp_server_sensor_temperatures,
|
|
||||||
tcp_server_device_temperatures,
|
|
||||||
)
|
|
||||||
from pus_tm.tm_tcp_server import TmTcpServer
|
|
||||||
from tmtccmd.util import ObjectIdU32
|
from tmtccmd.util import ObjectIdU32
|
||||||
from tmtccmd.util.tmtc_printer import FsfwTmTcPrinter
|
from tmtccmd.util.tmtc_printer import FsfwTmTcPrinter
|
||||||
|
|
||||||
@ -20,10 +16,13 @@ class SetIds(enum.IntEnum):
|
|||||||
def handle_thermal_controller_hk_data(
|
def handle_thermal_controller_hk_data(
|
||||||
object_id: ObjectIdU32, printer: FsfwTmTcPrinter, set_id: int, hk_data: bytes
|
object_id: ObjectIdU32, printer: FsfwTmTcPrinter, set_id: int, hk_data: bytes
|
||||||
):
|
):
|
||||||
if tcp_server_sensor_temperatures is None:
|
# need a better solutuon for this is this is used again..
|
||||||
tcp_server_sensor_temperatures = TmTcpServer("localhost", 7305)
|
"""
|
||||||
if tcp_server_device_temperatures is None:
|
if TCP_TEMP_SENS_SERVER is None:
|
||||||
tcp_server_device_temperatures = TmTcpServer("localhost", 7306)
|
TCP_TEMP_SENS_SERVER = TmTcpServer("localhost", 7305)
|
||||||
|
if TCP_TEMP_DEV_SERVER:
|
||||||
|
TCP_TEMP_DEV_SERVER = TmTcpServer("localhost", 7306)
|
||||||
|
"""
|
||||||
if set_id == SetIds.SENSOR_TEMPERATURE_SET:
|
if set_id == SetIds.SENSOR_TEMPERATURE_SET:
|
||||||
pw = PrintWrapper(printer)
|
pw = PrintWrapper(printer)
|
||||||
pw.dlog("Received sensor temperature data")
|
pw.dlog("Received sensor temperature data")
|
||||||
@ -51,9 +50,11 @@ def handle_thermal_controller_hk_data(
|
|||||||
"TMP1075 2": tm_data[17],
|
"TMP1075 2": tm_data[17],
|
||||||
}
|
}
|
||||||
printer.file_logger.info(str(parsed_data))
|
printer.file_logger.info(str(parsed_data))
|
||||||
tcp_server_sensor_temperatures.report_parsed_hk_data(
|
pp = pprint.PrettyPrinter(depth=4)
|
||||||
object_id, set_id, parsed_data
|
pp.pprint(parsed_data)
|
||||||
)
|
# tcp_server_sensor_temperatures.report_parsed_hk_data(
|
||||||
|
# object_id, set_id, parsed_data
|
||||||
|
# )
|
||||||
elif set_id == SetIds.DEVICE_TEMPERATURE_SET:
|
elif set_id == SetIds.DEVICE_TEMPERATURE_SET:
|
||||||
pw = PrintWrapper(printer)
|
pw = PrintWrapper(printer)
|
||||||
pw.dlog("Received device temperature data")
|
pw.dlog("Received device temperature data")
|
||||||
@ -88,10 +89,13 @@ def handle_thermal_controller_hk_data(
|
|||||||
"MGM_1_TEMPERATURE": tm_data[25],
|
"MGM_1_TEMPERATURE": tm_data[25],
|
||||||
"ADC_PL_PCDU_TEMPERATURE": tm_data[26],
|
"ADC_PL_PCDU_TEMPERATURE": tm_data[26],
|
||||||
}
|
}
|
||||||
|
printer.file_logger.info(str(parsed_data))
|
||||||
|
pp = pprint.PrettyPrinter(depth=4)
|
||||||
|
pp.pprint(parsed_data)
|
||||||
# print(parsed_data)
|
# print(parsed_data)
|
||||||
tcp_server_device_temperatures.report_parsed_hk_data(
|
# tcp_server_device_temperatures.report_parsed_hk_data(
|
||||||
object_id, set_id, parsed_data
|
# object_id, set_id, parsed_data
|
||||||
)
|
# )
|
||||||
elif set_id == SetIds.SUS_TEMPERATURE_SET:
|
elif set_id == SetIds.SUS_TEMPERATURE_SET:
|
||||||
pass
|
pass
|
||||||
# pw = PrintWrapper(printer)
|
# pw = PrintWrapper(printer)
|
||||||
|
@ -2,5 +2,5 @@ from typing import Optional
|
|||||||
|
|
||||||
from pus_tm.tm_tcp_server import TmTcpServer
|
from pus_tm.tm_tcp_server import TmTcpServer
|
||||||
|
|
||||||
tcp_server_sensor_temperatures: Optional[TmTcpServer] = None
|
TCP_SERVER_SENSOR_TEMPERATURES: Optional[TmTcpServer] = None
|
||||||
tcp_server_device_temperatures: Optional[TmTcpServer] = None
|
TCP_SERVER_DEVICE_TEMPERATURES: Optional[TmTcpServer] = None
|
||||||
|
@ -1,18 +1,20 @@
|
|||||||
from spacepackets.ecss.pus_1_verification import UnpackParams
|
from spacepackets.ecss.pus_1_verification import UnpackParams, Service1Tm
|
||||||
from tmtccmd.logging import get_console_logger
|
from tmtccmd.logging import get_console_logger
|
||||||
from tmtccmd.pus import VerificationWrapper
|
from tmtccmd.pus import VerificationWrapper
|
||||||
from tmtccmd.tm.pus_1_verification import Service1TmExtended
|
from tmtccmd.tm.pus_1_verification import Service1FsfwWrapper
|
||||||
from config.retvals import get_retval_dict
|
from config.retvals import get_retval_dict
|
||||||
|
|
||||||
LOGGER = get_console_logger()
|
LOGGER = get_console_logger()
|
||||||
|
|
||||||
|
|
||||||
def handle_service_1_packet(wrapper: VerificationWrapper, raw_tm: bytes):
|
def handle_service_1_fsfw_packet(wrapper: VerificationWrapper, raw_tm: bytes):
|
||||||
if wrapper.console_logger is None or wrapper.file_logger is None:
|
if wrapper.console_logger is None or wrapper.file_logger is None:
|
||||||
raise ValueError(
|
raise ValueError(
|
||||||
"Console logger or file logger not valid. Please set a valid one"
|
"Console logger or file logger not valid. Please set a valid one"
|
||||||
)
|
)
|
||||||
tm_packet = Service1TmExtended.unpack(data=raw_tm, params=UnpackParams(1, 1))
|
# Error code with length 2 is FSFW specific
|
||||||
|
tm_packet = Service1Tm.unpack(data=raw_tm, params=UnpackParams(1, 2))
|
||||||
|
fsfw_wrapper = Service1FsfwWrapper(tm_packet)
|
||||||
res = wrapper.verificator.add_tm(tm_packet)
|
res = wrapper.verificator.add_tm(tm_packet)
|
||||||
if res is None:
|
if res is None:
|
||||||
LOGGER.info(
|
LOGGER.info(
|
||||||
@ -27,13 +29,24 @@ def handle_service_1_packet(wrapper: VerificationWrapper, raw_tm: bytes):
|
|||||||
if tm_packet.has_failure_notice:
|
if tm_packet.has_failure_notice:
|
||||||
retval_info = retval_dict.get(tm_packet.error_code.val)
|
retval_info = retval_dict.get(tm_packet.error_code.val)
|
||||||
if retval_info is None:
|
if retval_info is None:
|
||||||
|
raw_err = tm_packet.error_code.val
|
||||||
LOGGER.info(
|
LOGGER.info(
|
||||||
f"No returnvalue information found for error code {tm_packet.error_code}"
|
f"No returnvalue information found for error code with subsystem ID"
|
||||||
|
f" {(raw_err >> 8) & 0xff} and unique ID {raw_err & 0xff}"
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
retval_string = (
|
retval_string = (
|
||||||
f"Error Code information for code {tm_packet.error_code} | "
|
f"Error Code information for code {tm_packet.error_code.val:#06x} | "
|
||||||
f"Name: {retval_info.name} | Info: {retval_info.info}"
|
f"Name: {retval_info.name} | Info: {retval_info.info}"
|
||||||
)
|
)
|
||||||
wrapper.console_logger.info(retval_string)
|
error_param_1_str = (
|
||||||
wrapper.file_logger.info(retval_string)
|
f"Error Parameter 1: hex {fsfw_wrapper.error_param_1:#010x} "
|
||||||
|
f"dec {fsfw_wrapper.error_param_1} "
|
||||||
|
)
|
||||||
|
error_param_2_str = (
|
||||||
|
f"Error Parameter 2: hex {fsfw_wrapper.error_param_2:#010x} "
|
||||||
|
f"dec {fsfw_wrapper.error_param_2}"
|
||||||
|
)
|
||||||
|
wrapper.dlog(retval_string)
|
||||||
|
wrapper.dlog(error_param_1_str)
|
||||||
|
wrapper.dlog(error_param_2_str)
|
||||||
|
0
tmtc/__init__.py
Normal file
0
tmtc/__init__.py
Normal file
@ -1,18 +1,26 @@
|
|||||||
import enum
|
import enum
|
||||||
|
import socket
|
||||||
import struct
|
import struct
|
||||||
|
from socket import AF_INET
|
||||||
|
from typing import Tuple, Optional
|
||||||
|
|
||||||
from config.definitions import CustomServiceList
|
from config.definitions import CustomServiceList
|
||||||
from config.object_ids import ACS_CONTROLLER
|
from config.object_ids import ACS_CONTROLLER
|
||||||
from pus_tm.defs import PrintWrapper
|
from pus_tm.defs import PrintWrapper
|
||||||
from tmtccmd import DefaultProcedureInfo, get_console_logger
|
from tmtccmd import get_console_logger
|
||||||
from tmtccmd.config.tmtc import (
|
from tmtccmd.config.tmtc import (
|
||||||
tmtc_definitions_provider,
|
tmtc_definitions_provider,
|
||||||
TmtcDefinitionWrapper,
|
TmtcDefinitionWrapper,
|
||||||
OpCodeEntry,
|
OpCodeEntry,
|
||||||
)
|
)
|
||||||
from tmtccmd.tc import DefaultPusQueueHelper, service_provider
|
from tmtccmd.tc import service_provider
|
||||||
from tmtccmd.tc.pus_3_fsfw_hk import generate_one_hk_command, make_sid, \
|
from tmtccmd.tc.decorator import ServiceProviderParams
|
||||||
enable_periodic_hk_command_with_interval, disable_periodic_hk_command
|
from tmtccmd.tc.pus_3_fsfw_hk import (
|
||||||
|
generate_one_hk_command,
|
||||||
|
make_sid,
|
||||||
|
enable_periodic_hk_command_with_interval,
|
||||||
|
disable_periodic_hk_command,
|
||||||
|
)
|
||||||
from tmtccmd.util.tmtc_printer import FsfwTmTcPrinter
|
from tmtccmd.util.tmtc_printer import FsfwTmTcPrinter
|
||||||
|
|
||||||
LOGGER = get_console_logger()
|
LOGGER = get_console_logger()
|
||||||
@ -34,6 +42,18 @@ class Info:
|
|||||||
DISABLE_MGM_HK = "Disable MGM HK data generation"
|
DISABLE_MGM_HK = "Disable MGM HK data generation"
|
||||||
|
|
||||||
|
|
||||||
|
PERFORM_MGM_CALIBRATION = False
|
||||||
|
CALIBRATION_SOCKET_HOST = "localhost"
|
||||||
|
CALIBRATION_SOCKET_PORT = 6677
|
||||||
|
CALIBRATION_ADDR = (CALIBRATION_SOCKET_HOST, CALIBRATION_SOCKET_PORT)
|
||||||
|
|
||||||
|
if PERFORM_MGM_CALIBRATION:
|
||||||
|
CALIBR_SOCKET = socket.socket(AF_INET, socket.SOCK_STREAM)
|
||||||
|
CALIBR_SOCKET.setblocking(False)
|
||||||
|
CALIBR_SOCKET.settimeout(0.2)
|
||||||
|
CALIBR_SOCKET.connect(CALIBRATION_ADDR)
|
||||||
|
|
||||||
|
|
||||||
@tmtc_definitions_provider
|
@tmtc_definitions_provider
|
||||||
def acs_cmd_defs(defs: TmtcDefinitionWrapper):
|
def acs_cmd_defs(defs: TmtcDefinitionWrapper):
|
||||||
oce = OpCodeEntry()
|
oce = OpCodeEntry()
|
||||||
@ -46,9 +66,9 @@ def acs_cmd_defs(defs: TmtcDefinitionWrapper):
|
|||||||
|
|
||||||
|
|
||||||
@service_provider(CustomServiceList.ACS_CTRL.value)
|
@service_provider(CustomServiceList.ACS_CTRL.value)
|
||||||
def pack_acs_ctrl_command(
|
def pack_acs_ctrl_command(p: ServiceProviderParams):
|
||||||
_info: DefaultProcedureInfo, q: DefaultPusQueueHelper, op_code: str
|
op_code = p.op_code
|
||||||
):
|
q = p.queue_helper
|
||||||
sid = make_sid(ACS_CONTROLLER, SetIds.MGM_SET)
|
sid = make_sid(ACS_CONTROLLER, SetIds.MGM_SET)
|
||||||
if op_code in OpCodes.REQUEST_MGM_HK:
|
if op_code in OpCodes.REQUEST_MGM_HK:
|
||||||
q.add_log_cmd(Info.REQUEST_MGM_HK)
|
q.add_log_cmd(Info.REQUEST_MGM_HK)
|
||||||
@ -89,13 +109,8 @@ def handle_acs_ctrl_mgm_data(printer: FsfwTmTcPrinter, hk_data: bytes):
|
|||||||
mgm_1_rm3100_floats_ut, current_idx = unpack_float_tuple(current_idx)
|
mgm_1_rm3100_floats_ut, current_idx = unpack_float_tuple(current_idx)
|
||||||
mgm_2_lis3_floats_ut, current_idx = unpack_float_tuple(current_idx)
|
mgm_2_lis3_floats_ut, current_idx = unpack_float_tuple(current_idx)
|
||||||
mgm_3_rm3100_floats_ut, current_idx = unpack_float_tuple(current_idx)
|
mgm_3_rm3100_floats_ut, current_idx = unpack_float_tuple(current_idx)
|
||||||
i32_tuple_fmt = "!iii"
|
isis_floats_nt, current_idx = unpack_float_tuple(current_idx)
|
||||||
imtq_mgm_nt = struct.unpack(
|
imtq_mgm_ut = tuple(val / 1000.0 for val in isis_floats_nt)
|
||||||
i32_tuple_fmt,
|
|
||||||
hk_data[current_idx : current_idx + struct.calcsize(i32_tuple_fmt)],
|
|
||||||
)
|
|
||||||
imtq_mgm_ut = tuple(val / 1000.0 for val in imtq_mgm_nt)
|
|
||||||
current_idx += struct.calcsize(i32_tuple_fmt)
|
|
||||||
pw.dlog("ACS CTRL HK: MGM values [X,Y,Z] in floating point uT: ")
|
pw.dlog("ACS CTRL HK: MGM values [X,Y,Z] in floating point uT: ")
|
||||||
mgm_lists = [
|
mgm_lists = [
|
||||||
mgm_0_lis3_floats_ut,
|
mgm_0_lis3_floats_ut,
|
||||||
@ -122,4 +137,49 @@ def handle_acs_ctrl_mgm_data(printer: FsfwTmTcPrinter, 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
|
||||||
|
|
||||||
|
|
||||||
|
def perform_mgm_calibration(pw: PrintWrapper, mgm_tuple: Tuple):
|
||||||
|
global CALIBR_SOCKET, CALIBRATION_ADDR
|
||||||
|
try:
|
||||||
|
declare_api_cmd = "declare_api_version 2"
|
||||||
|
CALIBR_SOCKET.sendall(f"{declare_api_cmd}\n".encode())
|
||||||
|
reply = CALIBR_SOCKET.recv(1024)
|
||||||
|
if len(reply) != 2:
|
||||||
|
pw.dlog(
|
||||||
|
f"MGM calibration: Reply received command {declare_api_cmd} has invalid length {len(reply)}"
|
||||||
|
)
|
||||||
|
return
|
||||||
|
else:
|
||||||
|
if str(reply[0]) == "0":
|
||||||
|
pw.dlog(f"MGM calibration: API version 2 was not accepted")
|
||||||
|
return
|
||||||
|
if len(mgm_tuple) != 3:
|
||||||
|
pw.dlog(f"MGM tuple has invalid length {len(mgm_tuple)}")
|
||||||
|
mgm_list = [mgm / 1e6 for mgm in mgm_tuple]
|
||||||
|
command = (
|
||||||
|
f"magnetometer_field {mgm_list[0]} {mgm_list[1]} {mgm_list[2]}\n".encode()
|
||||||
|
)
|
||||||
|
CALIBR_SOCKET.sendall(command)
|
||||||
|
reply = CALIBR_SOCKET.recv(1024)
|
||||||
|
if len(reply) != 2:
|
||||||
|
pw.dlog(
|
||||||
|
f"MGM calibration: Reply received command magnetometer_field has invalid length {len(reply)}"
|
||||||
|
)
|
||||||
|
return
|
||||||
|
else:
|
||||||
|
if str(reply[0]) == "0":
|
||||||
|
pw.dlog(f"MGM calibration: magnetmeter field format was not accepted")
|
||||||
|
return
|
||||||
|
pw.dlog(f"Sent data {mgm_list} to Helmholtz Testbench successfully")
|
||||||
|
except socket.timeout:
|
||||||
|
pw.dlog("Socket timeout")
|
||||||
|
except BlockingIOError as e:
|
||||||
|
pw.dlog(f"Error {e}")
|
||||||
|
except ConnectionResetError as e:
|
||||||
|
pw.dlog("Socket was closed")
|
||||||
|
except ConnectionRefusedError or OSError:
|
||||||
|
pw.dlog("Connecting to Calibration Socket on addrss {} failed")
|
@ -8,7 +8,10 @@
|
|||||||
"""
|
"""
|
||||||
import struct
|
import struct
|
||||||
|
|
||||||
|
from config.definitions import CustomServiceList
|
||||||
from spacepackets.ecss.tc import PusTelecommand
|
from spacepackets.ecss.tc import PusTelecommand
|
||||||
|
from tmtccmd.config import TmtcDefinitionWrapper
|
||||||
|
from tmtccmd.config.tmtc import tmtc_definitions_provider, OpCodeEntry
|
||||||
from tmtccmd.tc import DefaultPusQueueHelper
|
from tmtccmd.tc import DefaultPusQueueHelper
|
||||||
from tmtccmd.util import ObjectIdU32
|
from tmtccmd.util import ObjectIdU32
|
||||||
|
|
||||||
@ -17,6 +20,13 @@ class ActionIds:
|
|||||||
DUMP_MRAM = 1
|
DUMP_MRAM = 1
|
||||||
|
|
||||||
|
|
||||||
|
@tmtc_definitions_provider
|
||||||
|
def add_ploc_mem_dumper_cmds(defs: TmtcDefinitionWrapper):
|
||||||
|
oce = OpCodeEntry()
|
||||||
|
oce.add("0", "PLOC Memory Dumper: MRAM dump")
|
||||||
|
defs.add_service(CustomServiceList.PLOC_MEMORY_DUMPER, "PLOC Memory Dumper", oce)
|
||||||
|
|
||||||
|
|
||||||
def pack_ploc_memory_dumper_cmd(
|
def pack_ploc_memory_dumper_cmd(
|
||||||
object_id: ObjectIdU32, q: DefaultPusQueueHelper, op_code: str
|
object_id: ObjectIdU32, q: DefaultPusQueueHelper, op_code: str
|
||||||
):
|
):
|
@ -9,9 +9,17 @@
|
|||||||
import struct
|
import struct
|
||||||
import enum
|
import enum
|
||||||
|
|
||||||
|
from config.definitions import CustomServiceList
|
||||||
|
from config.object_ids import get_object_ids, PLOC_MPSOC_ID
|
||||||
|
from tmtccmd.config.tmtc import (
|
||||||
|
tmtc_definitions_provider,
|
||||||
|
OpCodeEntry,
|
||||||
|
TmtcDefinitionWrapper,
|
||||||
|
)
|
||||||
from tmtccmd.logging import get_console_logger
|
from tmtccmd.logging import get_console_logger
|
||||||
from spacepackets.ecss.tc import PusTelecommand
|
from spacepackets.ecss.tc import PusTelecommand
|
||||||
from tmtccmd.tc import DefaultPusQueueHelper
|
from tmtccmd.tc import DefaultPusQueueHelper, service_provider
|
||||||
|
from tmtccmd.tc.decorator import ServiceProviderParams
|
||||||
from tmtccmd.util import ObjectIdU32
|
from tmtccmd.util import ObjectIdU32
|
||||||
from utility.input_helper import InputHelper
|
from utility.input_helper import InputHelper
|
||||||
from tmtccmd.tc.pus_200_fsfw_modes import pack_mode_data, Modes
|
from tmtccmd.tc.pus_200_fsfw_modes import pack_mode_data, Modes
|
||||||
@ -66,9 +74,36 @@ class PlocReplyIds(enum.IntEnum):
|
|||||||
TM_CAM_CMD_RPT = 19
|
TM_CAM_CMD_RPT = 19
|
||||||
|
|
||||||
|
|
||||||
def pack_ploc_mpsoc_commands(
|
@tmtc_definitions_provider
|
||||||
object_id: ObjectIdU32, q: DefaultPusQueueHelper, op_code: str
|
def add_ploc_mpsoc_cmds(defs: TmtcDefinitionWrapper):
|
||||||
):
|
oce = OpCodeEntry()
|
||||||
|
oce.add("0", "Ploc MPSoC: Set mode off")
|
||||||
|
oce.add("1", "Ploc MPSoC: Set mode on")
|
||||||
|
oce.add("2", "Ploc MPSoC: Set mode normal")
|
||||||
|
oce.add("3", "Ploc MPSoC: Memory write")
|
||||||
|
oce.add("4", "Ploc MPSoC: Memory read")
|
||||||
|
oce.add("5", "Ploc MPSoC: Flash write")
|
||||||
|
oce.add("6", "Ploc MPSoC: Flash delete")
|
||||||
|
oce.add("7", "Ploc MPSoC: Replay start")
|
||||||
|
oce.add("8", "Ploc MPSoC: Replay stop")
|
||||||
|
oce.add("9", "Ploc MPSoC: Downlink pwr on")
|
||||||
|
oce.add("10", "Ploc MPSoC: Downlink pwr off")
|
||||||
|
oce.add("11", "Ploc MPSoC: Replay write sequence")
|
||||||
|
oce.add("12", "Ploc MPSoC: OBSW reset sequence count")
|
||||||
|
oce.add("13", "Ploc MPSoC: Read DEADBEEF address")
|
||||||
|
oce.add("14", "Ploc MPSoC: Mode replay")
|
||||||
|
oce.add("15", "Ploc MPSoC: Mode idle")
|
||||||
|
oce.add("16", "Ploc MPSoC: Tc cam command send")
|
||||||
|
oce.add("17", "Ploc MPSoC: Set UART TX tristate")
|
||||||
|
oce.add("18", "Ploc MPSoC: Relesase UART TX")
|
||||||
|
defs.add_service(CustomServiceList.PLOC_MPSOC.value, "Ploc MPSoC", oce)
|
||||||
|
|
||||||
|
|
||||||
|
@service_provider(CustomServiceList.PLOC_MPSOC)
|
||||||
|
def pack_ploc_mpsoc_commands(p: ServiceProviderParams):
|
||||||
|
object_id = get_object_ids().get(PLOC_MPSOC_ID)
|
||||||
|
q = p.queue_helper
|
||||||
|
op_code = p.op_code
|
||||||
q.add_log_cmd(
|
q.add_log_cmd(
|
||||||
f"Generate command for PLOC MPSoC with object id: {object_id.as_hex_string}"
|
f"Generate command for PLOC MPSoC with object id: {object_id.as_hex_string}"
|
||||||
)
|
)
|
@ -6,13 +6,22 @@
|
|||||||
@author J. Meier
|
@author J. Meier
|
||||||
@date 10.07.2021
|
@date 10.07.2021
|
||||||
"""
|
"""
|
||||||
|
import enum
|
||||||
import struct
|
import struct
|
||||||
|
|
||||||
|
from config.object_ids import PLOC_SUPV_ID, get_object_ids
|
||||||
|
from config.definitions import CustomServiceList
|
||||||
|
from pus_tm.defs import PrintWrapper
|
||||||
from spacepackets.ecss.tc import PusTelecommand
|
from spacepackets.ecss.tc import PusTelecommand
|
||||||
|
from tmtccmd.tc.pus_3_fsfw_hk import generate_one_hk_command, make_sid
|
||||||
|
from tmtccmd.config import TmtcDefinitionWrapper
|
||||||
|
from tmtccmd.config.tmtc import tmtc_definitions_provider, OpCodeEntry
|
||||||
from tmtccmd.logging import get_console_logger
|
from tmtccmd.logging import get_console_logger
|
||||||
from tmtccmd.tc import DefaultPusQueueHelper
|
from tmtccmd.tc import service_provider
|
||||||
|
from tmtccmd.tc.decorator import ServiceProviderParams
|
||||||
from tmtccmd.tc.pus_200_fsfw_modes import pack_mode_data, Modes
|
from tmtccmd.tc.pus_200_fsfw_modes import pack_mode_data, Modes
|
||||||
from tmtccmd.util import ObjectIdU32
|
from tmtccmd.tc.pus_8_funccmd import make_fsfw_action_cmd
|
||||||
|
from tmtccmd.util.tmtc_printer import FsfwTmTcPrinter
|
||||||
from utility.input_helper import InputHelper
|
from utility.input_helper import InputHelper
|
||||||
|
|
||||||
LOGGER = get_console_logger()
|
LOGGER = get_console_logger()
|
||||||
@ -99,43 +108,135 @@ class SupvActionIds:
|
|||||||
RESET_PL = 58
|
RESET_PL = 58
|
||||||
ENABLE_NVMS = 59
|
ENABLE_NVMS = 59
|
||||||
CONTINUE_UPDATE = 60
|
CONTINUE_UPDATE = 60
|
||||||
|
MEM_CHECK = 61
|
||||||
|
|
||||||
|
|
||||||
class SupvHkIds:
|
class SetIds:
|
||||||
HK_REPORT = 52
|
HK_REPORT = 102
|
||||||
BOOT_STATUS_REPORT = 53
|
BOOT_STATUS_REPORT = 103
|
||||||
|
|
||||||
|
|
||||||
def pack_ploc_supv_commands(
|
class OpCodes:
|
||||||
object_id: ObjectIdU32, q: DefaultPusQueueHelper, op_code: str
|
OFF = ["0", "off"]
|
||||||
):
|
ON = ["1", "on"]
|
||||||
|
NORMAL = ["2", "nml"]
|
||||||
|
HK_TO_OBC = ["3", "hk_to_obc"]
|
||||||
|
REQUEST_HK = ["4", "req_hk"]
|
||||||
|
START_MPSOC = ["5", "start_mpsoc"]
|
||||||
|
SHUTDOWN_MPSOC = ["6", "stop_mpsoc"]
|
||||||
|
SEL_NVM = ["7", "sel_nvm"]
|
||||||
|
REQ_BOOT_STATUS_REPORT = ["13", "boot_report"]
|
||||||
|
START_UPDATE = ["42", "start_update"]
|
||||||
|
PERFORM_UPDATE = ["update"]
|
||||||
|
MEM_CHECK = ["mem_check"]
|
||||||
|
|
||||||
|
|
||||||
|
class Info(str, enum.Enum):
|
||||||
|
value: str
|
||||||
|
OFF = "Switch Off"
|
||||||
|
ON = "Switch On"
|
||||||
|
NML = "Switch Normal"
|
||||||
|
HK_TO_OBC = "Request HK from PLOC SUPV"
|
||||||
|
REQUEST_HK = "Request HK set from PLOC Handler"
|
||||||
|
PERFORM_UPDATE = "Start or continue MPSoC SW update at starting bytes"
|
||||||
|
START_UPDATE = "Start new MPSoC SW update"
|
||||||
|
REQ_BOOT_STATUS_REPORT = "Request boot status report and HK"
|
||||||
|
MEM_CHECK = "Memory Check"
|
||||||
|
SEL_NVM = "Select NVM"
|
||||||
|
|
||||||
|
|
||||||
|
@tmtc_definitions_provider
|
||||||
|
def add_ploc_supv_cmds(defs: TmtcDefinitionWrapper):
|
||||||
|
|
||||||
|
oce = OpCodeEntry()
|
||||||
|
oce.add(OpCodes.OFF, Info.OFF)
|
||||||
|
oce.add(OpCodes.ON, Info.ON)
|
||||||
|
oce.add(OpCodes.NORMAL, Info.NML)
|
||||||
|
oce.add(OpCodes.HK_TO_OBC, Info.HK_TO_OBC)
|
||||||
|
oce.add(OpCodes.REQUEST_HK, Info.REQUEST_HK)
|
||||||
|
oce.add(OpCodes.START_MPSOC, "PLOC Supervisor: Start MPSoC")
|
||||||
|
oce.add(OpCodes.SHUTDOWN_MPSOC, "PLOC Supervisor: Shutdown MPSoC")
|
||||||
|
oce.add(OpCodes.SEL_NVM, Info.SEL_NVM)
|
||||||
|
oce.add("8", "PLOC Supervisor: Set max restart tries")
|
||||||
|
oce.add("9", "PLOC Supervisor: Reset MPSoC")
|
||||||
|
oce.add("10", "PLOC Supervisor: Set time reference")
|
||||||
|
oce.add("11", "PLOC Supervisor: Set boot timeout")
|
||||||
|
oce.add("12", "PLOC Supervisor: Disable Hk")
|
||||||
|
oce.add(OpCodes.REQ_BOOT_STATUS_REPORT, Info.REQ_BOOT_STATUS_REPORT)
|
||||||
|
oce.add("17", "PLOC Supervisor: Enable latchup alert")
|
||||||
|
oce.add("18", "PLOC Supervisor: Disable latchup alert")
|
||||||
|
oce.add("20", "PLOC Supervisor: Set alert limit")
|
||||||
|
oce.add("23", "PLOC Supervisor: Set ADC enabled channels")
|
||||||
|
oce.add("24", "PLOC Supervisor: Set ADC window and stride")
|
||||||
|
oce.add("25", "PLOC Supervisor: Set ADC threshold")
|
||||||
|
oce.add("26", "PLOC Supervisor: Request latchup status report")
|
||||||
|
oce.add("27", "PLOC Supervisor: Copy ADC data to MRAM")
|
||||||
|
oce.add("30", "PLOC Supervisor: Run auto EM tests")
|
||||||
|
oce.add("31", "PLOC Supervisor: MRAM Wipe")
|
||||||
|
oce.add("35", "PLOC Supervisor: Set GPIO")
|
||||||
|
oce.add("36", "PLOC Supervisor: Read GPIO")
|
||||||
|
oce.add("37", "PLOC Supervisor: Restart supervisor")
|
||||||
|
oce.add("38", "PLOC Supervisor: Factory reset clear all")
|
||||||
|
oce.add("39", "PLOC Supervisor: Factory reset clear mirror entries")
|
||||||
|
oce.add("40", "PLOC Supervisor: Factory reset clear circular entries")
|
||||||
|
oce.add(OpCodes.PERFORM_UPDATE, Info.PERFORM_UPDATE)
|
||||||
|
oce.add(OpCodes.START_UPDATE, Info.START_UPDATE)
|
||||||
|
oce.add("43", "PLOC Supervisor: Terminate supervisor process")
|
||||||
|
oce.add("44", "PLOC Supervisor: Start MPSoC quiet")
|
||||||
|
oce.add("45", "PLOC Supervisor: Set shutdown timeout")
|
||||||
|
oce.add("46", "PLOC Supervisor: Factory flash")
|
||||||
|
oce.add("47", "PLOC Supervisor: Enable auto TM")
|
||||||
|
oce.add("48", "PLOC Supervisor: Disable auto TM")
|
||||||
|
oce.add("51", "PLOC Supervisor: Logging request event buffers")
|
||||||
|
oce.add("52", "PLOC Supervisor: Logging clear counters")
|
||||||
|
oce.add("53", "PLOC Supervisor: Logging set topic")
|
||||||
|
oce.add("54", "PLOC Supervisor: Logging request counters")
|
||||||
|
oce.add("55", "PLOC Supervisor: Request ADC Report")
|
||||||
|
oce.add("56", "PLOC Supervisor: Reset PL")
|
||||||
|
oce.add("57", "PLOC Supervisor: Enable NVMs")
|
||||||
|
oce.add("58", "PLOC Supervisor: Continue update")
|
||||||
|
oce.add(OpCodes.MEM_CHECK, Info.MEM_CHECK)
|
||||||
|
defs.add_service(CustomServiceList.PLOC_SUPV.value, "PLOC Supervisor", oce)
|
||||||
|
|
||||||
|
|
||||||
|
@service_provider(CustomServiceList.PLOC_SUPV)
|
||||||
|
def pack_ploc_supv_commands(p: ServiceProviderParams):
|
||||||
|
q = p.queue_helper
|
||||||
|
op_code = p.op_code
|
||||||
|
object_id = get_object_ids().get(PLOC_SUPV_ID)
|
||||||
q.add_log_cmd(f"Testing PLOC Supervisor with object id: {object_id.as_hex_string}")
|
q.add_log_cmd(f"Testing PLOC Supervisor with object id: {object_id.as_hex_string}")
|
||||||
obyt = object_id.as_bytes
|
obyt = object_id.as_bytes
|
||||||
if op_code == "0":
|
prefix = "PLOC Supervisor"
|
||||||
q.add_log_cmd("PLOC Supervisor: Set mode off")
|
if op_code in OpCodes.OFF:
|
||||||
|
q.add_log_cmd(f"{prefix}: {Info.OFF}")
|
||||||
command = pack_mode_data(object_id.as_bytes, Modes.OFF, 0)
|
command = pack_mode_data(object_id.as_bytes, Modes.OFF, 0)
|
||||||
q.add_pus_tc(PusTelecommand(service=200, subservice=1, app_data=command))
|
q.add_pus_tc(PusTelecommand(service=200, subservice=1, app_data=command))
|
||||||
if op_code == "1":
|
if op_code in OpCodes.ON:
|
||||||
q.add_log_cmd("PLOC Supervisor: Set mode on")
|
q.add_log_cmd(f"{prefix}: {Info.ON}")
|
||||||
command = pack_mode_data(object_id.as_bytes, Modes.ON, 0)
|
command = pack_mode_data(object_id.as_bytes, Modes.ON, 0)
|
||||||
q.add_pus_tc(PusTelecommand(service=200, subservice=1, app_data=command))
|
q.add_pus_tc(PusTelecommand(service=200, subservice=1, app_data=command))
|
||||||
if op_code == "2":
|
if op_code in OpCodes.NORMAL:
|
||||||
q.add_log_cmd("PLOC Supervisor: Mode Normal")
|
q.add_log_cmd(f"{prefix}: {Info.NML}")
|
||||||
command = pack_mode_data(object_id.as_bytes, Modes.NORMAL, 0)
|
command = pack_mode_data(object_id.as_bytes, Modes.NORMAL, 0)
|
||||||
q.add_pus_tc(PusTelecommand(service=200, subservice=1, app_data=command))
|
q.add_pus_tc(PusTelecommand(service=200, subservice=1, app_data=command))
|
||||||
if op_code == "3":
|
if op_code in OpCodes.HK_TO_OBC:
|
||||||
q.add_log_cmd("PLOC Supervisor: TC Get Hk Report")
|
q.add_log_cmd(f"{prefix}: {Info.HK_TO_OBC}")
|
||||||
command = obyt + struct.pack("!I", SupvActionIds.HK_REPORT)
|
command = obyt + struct.pack("!I", SupvActionIds.HK_REPORT)
|
||||||
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command))
|
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command))
|
||||||
elif op_code == "5":
|
if op_code in OpCodes.REQUEST_HK:
|
||||||
|
q.add_log_cmd(f"{prefix}: {Info.REQUEST_HK}")
|
||||||
|
sid = make_sid(object_id.as_bytes, SetIds.HK_REPORT)
|
||||||
|
cmd = generate_one_hk_command(sid)
|
||||||
|
q.add_pus_tc(cmd)
|
||||||
|
elif op_code in OpCodes.START_MPSOC:
|
||||||
q.add_log_cmd("PLOC Supervisor: Start MPSoC")
|
q.add_log_cmd("PLOC Supervisor: Start MPSoC")
|
||||||
command = obyt + struct.pack("!I", SupvActionIds.START_MPSOC)
|
command = obyt + struct.pack("!I", SupvActionIds.START_MPSOC)
|
||||||
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 == "6":
|
if op_code in OpCodes.SHUTDOWN_MPSOC:
|
||||||
q.add_log_cmd("PLOC Supervisor: Shutdown MPSoC")
|
q.add_log_cmd("PLOC Supervisor: Shutdown MPSoC")
|
||||||
command = object_id.as_bytes + struct.pack("!I", SupvActionIds.SHUTWOWN_MPSOC)
|
command = object_id.as_bytes + struct.pack("!I", SupvActionIds.SHUTWOWN_MPSOC)
|
||||||
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 == "7":
|
if op_code in OpCodes.SEL_NVM:
|
||||||
q.add_log_cmd("PLOC Supervisor: Select MPSoC boot image")
|
q.add_log_cmd("PLOC Supervisor: Select MPSoC boot image")
|
||||||
mem = int(input("MEM (NVM0 - 0 or NVM1 - 1): "))
|
mem = int(input("MEM (NVM0 - 0 or NVM1 - 1): "))
|
||||||
bp0 = int(input("BP0 (0 or 1): "))
|
bp0 = int(input("BP0 (0 or 1): "))
|
||||||
@ -173,12 +274,16 @@ def pack_ploc_supv_commands(
|
|||||||
q.add_log_cmd("PLOC Supervisor: Disable HK")
|
q.add_log_cmd("PLOC Supervisor: Disable HK")
|
||||||
command = object_id.as_bytes + struct.pack("!I", SupvActionIds.DISABLE_HK)
|
command = object_id.as_bytes + struct.pack("!I", SupvActionIds.DISABLE_HK)
|
||||||
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 == "13":
|
if op_code in OpCodes.REQ_BOOT_STATUS_REPORT:
|
||||||
q.add_log_cmd("PLOC Supervisor: Request boot status report")
|
q.add_log_cmd(f"{prefix}: {Info.REQ_BOOT_STATUS_REPORT}")
|
||||||
command = object_id.as_bytes + struct.pack(
|
command = object_id.as_bytes + struct.pack(
|
||||||
"!I", SupvActionIds.GET_BOOT_STATUS_REPORT
|
"!I", SupvActionIds.GET_BOOT_STATUS_REPORT
|
||||||
)
|
)
|
||||||
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command))
|
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command))
|
||||||
|
q.add_wait_seconds(2.0)
|
||||||
|
sid = make_sid(object_id.as_bytes, SetIds.BOOT_STATUS_REPORT)
|
||||||
|
req_hk = generate_one_hk_command(sid)
|
||||||
|
q.add_pus_tc(req_hk)
|
||||||
if op_code == "17":
|
if op_code == "17":
|
||||||
q.add_log_cmd("PLOC Supervisor: Enable latchup alert")
|
q.add_log_cmd("PLOC Supervisor: Enable latchup alert")
|
||||||
command = pack_lachtup_alert_cmd(object_id.as_bytes, True)
|
command = pack_lachtup_alert_cmd(object_id.as_bytes, True)
|
||||||
@ -255,9 +360,13 @@ def pack_ploc_supv_commands(
|
|||||||
"!I", SupvActionIds.FACTORY_RESET_CLEAR_CIRCULAR
|
"!I", SupvActionIds.FACTORY_RESET_CLEAR_CIRCULAR
|
||||||
)
|
)
|
||||||
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 == "42":
|
if op_code in OpCodes.START_UPDATE:
|
||||||
q.add_log_cmd("PLOC Supervisor: Perform update")
|
q.add_log_cmd("PLOC Supversior: Start new MPSoC SW update")
|
||||||
command = pack_update_command(object_id.as_bytes)
|
command = pack_update_command(object_id.as_bytes, True)
|
||||||
|
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command))
|
||||||
|
if op_code in OpCodes.PERFORM_UPDATE:
|
||||||
|
q.add_log_cmd("PLOC Supervisor: Perform MPSoC SW update")
|
||||||
|
command = pack_update_command(object_id.as_bytes, False)
|
||||||
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 == "43":
|
if op_code == "43":
|
||||||
q.add_log_cmd("PLOC Supervisor: Terminate supervisor process")
|
q.add_log_cmd("PLOC Supervisor: Terminate supervisor process")
|
||||||
@ -332,6 +441,23 @@ def pack_ploc_supv_commands(
|
|||||||
q.add_log_cmd("PLOC Supervisor: Continue update")
|
q.add_log_cmd("PLOC Supervisor: Continue update")
|
||||||
command = object_id.as_bytes + struct.pack("!I", SupvActionIds.CONTINUE_UPDATE)
|
command = object_id.as_bytes + struct.pack("!I", SupvActionIds.CONTINUE_UPDATE)
|
||||||
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 in OpCodes.MEM_CHECK:
|
||||||
|
custom_data = bytearray()
|
||||||
|
update_file = get_update_file()
|
||||||
|
memory_id = int(input("Specify memory ID: "))
|
||||||
|
start_address = int(input("Specify start address: 0x"), 16)
|
||||||
|
custom_data.extend(update_file.encode("utf-8"))
|
||||||
|
custom_data.append(0)
|
||||||
|
custom_data.extend(struct.pack("!B", memory_id))
|
||||||
|
custom_data.extend(struct.pack("!I", start_address))
|
||||||
|
q.add_log_cmd(
|
||||||
|
f"{prefix}: {Info.MEM_CHECK} for file {update_file} at memory ID {memory_id} at start "
|
||||||
|
f"address {start_address}"
|
||||||
|
)
|
||||||
|
command = make_fsfw_action_cmd(
|
||||||
|
object_id.as_bytes, SupvActionIds.MEM_CHECK, custom_data
|
||||||
|
)
|
||||||
|
q.add_pus_tc(command)
|
||||||
|
|
||||||
|
|
||||||
def pack_sel_boot_image_cmd(
|
def pack_sel_boot_image_cmd(
|
||||||
@ -371,37 +497,6 @@ def pack_update_available_cmd(object_id: bytes) -> bytearray:
|
|||||||
return bytearray(command)
|
return bytearray(command)
|
||||||
|
|
||||||
|
|
||||||
def pack_watchdogs_enable_cmd(object_id: bytes) -> bytearray:
|
|
||||||
"""
|
|
||||||
@brief This function packs the command to enable or disable watchdogs on the PLOC.
|
|
||||||
@param object_id The object id of the PLOC supervisor handler.
|
|
||||||
@note Enable = 1, Disable = 0
|
|
||||||
"""
|
|
||||||
watchdog_ps = 1
|
|
||||||
watchdog_pl = 1
|
|
||||||
watchdog_int = 0
|
|
||||||
command = bytearray()
|
|
||||||
command = object_id + struct.pack("!I", SupvActionIds.WATCHDOGS_ENABLE)
|
|
||||||
command = command + struct.pack("!B", watchdog_ps)
|
|
||||||
command = command + struct.pack("!B", watchdog_pl)
|
|
||||||
command = command + struct.pack("!B", watchdog_int)
|
|
||||||
return bytearray(command)
|
|
||||||
|
|
||||||
|
|
||||||
def pack_watchdog_config_timeout_cmd(object_id: bytearray) -> bytearray:
|
|
||||||
"""
|
|
||||||
@brief This function packs the command set the timeout of one of the three watchdogs of the PLOC.
|
|
||||||
@param object_id The object id of the PLOC supervisor handler.
|
|
||||||
"""
|
|
||||||
watchdog = int(input("Specify watchdog (0 - PS, 1 - PL, 2 - INT):"))
|
|
||||||
timeout = int(input("Specify timeout (1000 ms - 360000 ms):"))
|
|
||||||
command = bytearray()
|
|
||||||
command = object_id + struct.pack("!I", SupvActionIds.WATCHDOGS_CONFIG_TIMEOUT)
|
|
||||||
command = command + struct.pack("!B", watchdog)
|
|
||||||
command = command + struct.pack("!I", timeout)
|
|
||||||
return command
|
|
||||||
|
|
||||||
|
|
||||||
def pack_lachtup_alert_cmd(object_id: bytes, state: bool) -> bytearray:
|
def pack_lachtup_alert_cmd(object_id: bytes, state: bool) -> bytearray:
|
||||||
"""
|
"""
|
||||||
@brief This function packs the command to enable or disable a certain latchup alerts.
|
@brief This function packs the command to enable or disable a certain latchup alerts.
|
||||||
@ -418,20 +513,6 @@ def pack_lachtup_alert_cmd(object_id: bytes, state: bool) -> bytearray:
|
|||||||
return bytearray(command)
|
return bytearray(command)
|
||||||
|
|
||||||
|
|
||||||
def pack_auto_calibrate_alert_cmd(object_id: bytearray) -> bytearray:
|
|
||||||
"""
|
|
||||||
@brief This function packs the command to auto calibrate a latchup alert.
|
|
||||||
@param object_id The object id of the PLOC supervisor handler.
|
|
||||||
"""
|
|
||||||
latchup_id = get_latchup_id()
|
|
||||||
mg = int(input("Specify MG: "))
|
|
||||||
command = bytearray()
|
|
||||||
command = object_id + struct.pack("!I", SupvActionIds.AUTO_CALIBRATE_ALERT)
|
|
||||||
command = command + struct.pack("!B", latchup_id)
|
|
||||||
command = command + struct.pack("!I", mg)
|
|
||||||
return command
|
|
||||||
|
|
||||||
|
|
||||||
def get_latchup_id() -> int:
|
def get_latchup_id() -> int:
|
||||||
key_column_width = 10
|
key_column_width = 10
|
||||||
description_column_width = 50
|
description_column_width = 50
|
||||||
@ -512,11 +593,31 @@ def pack_mram_wipe_cmd(object_id: bytes) -> bytearray:
|
|||||||
return bytearray(command)
|
return bytearray(command)
|
||||||
|
|
||||||
|
|
||||||
def pack_update_command(object_id: bytes) -> bytearray:
|
def pack_update_command(object_id: bytes, new_update: bool) -> bytearray:
|
||||||
command = bytearray()
|
command = bytearray()
|
||||||
memory_id = int(input("Specify memory ID: "))
|
memory_id = int(input("Specify memory ID: "))
|
||||||
start_address = int(input("Specify start address: 0x"), 16)
|
start_address = int(input("Specify start address: 0x"), 16)
|
||||||
update_file = get_update_file()
|
update_file = get_update_file()
|
||||||
|
if new_update:
|
||||||
|
init_bytes_written = 0
|
||||||
|
init_seq_count = 1
|
||||||
|
del_mem = True
|
||||||
|
else:
|
||||||
|
init_bytes_written = input("Specify bytes to start from [0 default]: ")
|
||||||
|
if init_bytes_written == "":
|
||||||
|
init_bytes_written = 0
|
||||||
|
init_bytes_written = int(init_bytes_written)
|
||||||
|
init_seq_count = input("Specify initial sequence count [1 default]: ")
|
||||||
|
if init_seq_count == "":
|
||||||
|
init_seq_count = 1
|
||||||
|
init_seq_count = int(init_seq_count)
|
||||||
|
del_mem = input("Delete memory? [y/n, y default]: ")
|
||||||
|
if del_mem.lower() in ["y", "1"]:
|
||||||
|
del_mem = 1
|
||||||
|
elif del_mem.lower() in ["n", "0"]:
|
||||||
|
del_mem = 0
|
||||||
|
else:
|
||||||
|
raise ValueError("Invalid input, use y or n")
|
||||||
command += object_id
|
command += object_id
|
||||||
command += struct.pack("!I", SupvActionIds.PERFORM_UPDATE)
|
command += struct.pack("!I", SupvActionIds.PERFORM_UPDATE)
|
||||||
command += bytearray(update_file, "utf-8")
|
command += bytearray(update_file, "utf-8")
|
||||||
@ -524,6 +625,9 @@ def pack_update_command(object_id: bytes) -> bytearray:
|
|||||||
command += struct.pack("!B", 0)
|
command += struct.pack("!B", 0)
|
||||||
command += struct.pack("!B", memory_id)
|
command += struct.pack("!B", memory_id)
|
||||||
command += struct.pack("!I", start_address)
|
command += struct.pack("!I", start_address)
|
||||||
|
command.extend(struct.pack("!I", init_bytes_written))
|
||||||
|
command.extend(struct.pack("!H", init_seq_count))
|
||||||
|
command.append(del_mem)
|
||||||
return bytearray(command)
|
return bytearray(command)
|
||||||
|
|
||||||
|
|
||||||
@ -592,3 +696,40 @@ def get_event_buffer_path() -> str:
|
|||||||
else:
|
else:
|
||||||
file = event_buffer_path_dict[key][1]
|
file = event_buffer_path_dict[key][1]
|
||||||
return file
|
return file
|
||||||
|
|
||||||
|
|
||||||
|
def handle_supv_hk_data(set_id: int, hk_data: bytes, printer: FsfwTmTcPrinter):
|
||||||
|
pw = PrintWrapper(printer)
|
||||||
|
current_idx = 0
|
||||||
|
if set_id == SetIds.HK_REPORT:
|
||||||
|
pass
|
||||||
|
elif set_id == SetIds.BOOT_STATUS_REPORT:
|
||||||
|
fmt_str = "!BBIIBBBBBB"
|
||||||
|
inc_len = struct.calcsize(fmt_str)
|
||||||
|
(
|
||||||
|
soc_state,
|
||||||
|
power_cycles,
|
||||||
|
boot_after_ms,
|
||||||
|
boot_timeout_ms,
|
||||||
|
active_nvm,
|
||||||
|
bp_0_state,
|
||||||
|
bp_1_state,
|
||||||
|
bp_2_state,
|
||||||
|
boot_state,
|
||||||
|
boot_cycles,
|
||||||
|
) = struct.unpack(fmt_str, hk_data[0 : 0 + inc_len])
|
||||||
|
current_idx += inc_len
|
||||||
|
pw.dlog(
|
||||||
|
f"SoC state (0:off, 1:booting, 2:update, 3:operating, 4:shutdown, 5:reset): {soc_state}"
|
||||||
|
)
|
||||||
|
pw.dlog(f"Power Cycles {power_cycles}")
|
||||||
|
pw.dlog(f"Boot after {boot_after_ms} ms | Boot timeout {boot_timeout_ms} ms")
|
||||||
|
pw.dlog(f"Active NVM: {active_nvm}")
|
||||||
|
pw.dlog(
|
||||||
|
f"BP0 State {bp_0_state} | BP1 State {bp_1_state} | BP2 State {bp_2_state}"
|
||||||
|
)
|
||||||
|
pw.dlog(f"Boot State {boot_state} | Boot Cycles {boot_cycles}")
|
||||||
|
pw.printer.print_validity_buffer(hk_data[current_idx:], 10)
|
||||||
|
else:
|
||||||
|
pw.dlog(f"PLOC SUPV: HK handling not implemented for set ID {set_id}")
|
||||||
|
pw.dlog(f"Raw Data: 0x[{hk_data.hex(sep=',')}]")
|
0
tmtc/power/__init__.py
Normal file
0
tmtc/power/__init__.py
Normal file
@ -3,9 +3,13 @@
|
|||||||
@author J. Meier, R. Mueller
|
@author J. Meier, R. Mueller
|
||||||
@date 21.12.2020
|
@date 21.12.2020
|
||||||
"""
|
"""
|
||||||
import struct
|
|
||||||
|
|
||||||
from config.definitions import CustomServiceList
|
from config.definitions import CustomServiceList
|
||||||
|
from tmtc.power.common_power import (
|
||||||
|
pack_gomspace_cmds,
|
||||||
|
add_gomspace_cmd_defs,
|
||||||
|
req_hk_cmds,
|
||||||
|
)
|
||||||
from tmtccmd.config import TmtcDefinitionWrapper, OpCodeEntry
|
from tmtccmd.config import TmtcDefinitionWrapper, OpCodeEntry
|
||||||
from tmtccmd.config.tmtc import tmtc_definitions_provider
|
from tmtccmd.config.tmtc import tmtc_definitions_provider
|
||||||
|
|
||||||
@ -19,8 +23,8 @@ import gomspace.gomspace_common as gs
|
|||||||
from gomspace.gomspace_common import GomspaceOpCodes
|
from gomspace.gomspace_common import GomspaceOpCodes
|
||||||
from gomspace.gomspace_common import GsInfo as GsInfo
|
from gomspace.gomspace_common import GsInfo as GsInfo
|
||||||
from config.object_ids import ACU_HANDLER_ID
|
from config.object_ids import ACU_HANDLER_ID
|
||||||
from pus_tc.devs.p60dock import P60DockConfigTable
|
from tmtc.power.p60dock import P60DockConfigTable
|
||||||
from tmtccmd.tc.pus_8_funccmd import generate_action_command
|
from tmtccmd.tc.pus_8_funccmd import make_fsfw_action_cmd
|
||||||
from tmtccmd.util import ObjectIdU32
|
from tmtccmd.util import ObjectIdU32
|
||||||
|
|
||||||
|
|
||||||
@ -52,26 +56,8 @@ class Info:
|
|||||||
@tmtc_definitions_provider
|
@tmtc_definitions_provider
|
||||||
def add_acu_cmds(defs: TmtcDefinitionWrapper):
|
def add_acu_cmds(defs: TmtcDefinitionWrapper):
|
||||||
oce = OpCodeEntry()
|
oce = OpCodeEntry()
|
||||||
oce.add(
|
add_gomspace_cmd_defs(oce)
|
||||||
keys=GomspaceOpCodes.REQUEST_CORE_HK_ONCE,
|
|
||||||
info=GsInfo.REQUEST_CORE_HK_ONCE,
|
|
||||||
)
|
|
||||||
oce.add(
|
|
||||||
keys=GomspaceOpCodes.REQUEST_AUX_HK_ONCE,
|
|
||||||
info=GsInfo.REQUEST_AUX_HK_ONCE,
|
|
||||||
)
|
|
||||||
oce.add(
|
|
||||||
keys=GomspaceOpCodes.REQUEST_AUX_HK_ONCE,
|
|
||||||
info=GsInfo.REQUEST_AUX_HK_ONCE,
|
|
||||||
)
|
|
||||||
oce.add(
|
|
||||||
keys=GomspaceOpCodes.GET_PARAM,
|
|
||||||
info=GsInfo.GET_PARAMETER,
|
|
||||||
)
|
|
||||||
oce.add(
|
|
||||||
keys=GomspaceOpCodes.SET_PARAM,
|
|
||||||
info=GsInfo.SET_PARAMETER,
|
|
||||||
)
|
|
||||||
oce.add(keys=OpCodes.TEST, info=Info.TEST)
|
oce.add(keys=OpCodes.TEST, info=Info.TEST)
|
||||||
defs.add_service(
|
defs.add_service(
|
||||||
name=CustomServiceList.ACU.value,
|
name=CustomServiceList.ACU.value,
|
||||||
@ -82,46 +68,17 @@ def add_acu_cmds(defs: TmtcDefinitionWrapper):
|
|||||||
|
|
||||||
def pack_acu_commands(object_id: ObjectIdU32, q: DefaultPusQueueHelper, op_code: str):
|
def pack_acu_commands(object_id: ObjectIdU32, q: DefaultPusQueueHelper, op_code: str):
|
||||||
q.add_log_cmd("Handling ACU command")
|
q.add_log_cmd("Handling ACU command")
|
||||||
if op_code in GomspaceOpCodes.PRINT_SWITCH_V_I:
|
pack_gomspace_cmds("ACU", object_id, q, op_code)
|
||||||
q.add_log_cmd("ACU: Print channel stats")
|
acu_req_hk_cmds(q, op_code)
|
||||||
q.add_pus_tc(
|
|
||||||
generate_action_command(
|
|
||||||
object_id=object_id.as_bytes,
|
|
||||||
action_id=gs.GomspaceDeviceActionIds.PRINT_SWITCH_V_I,
|
|
||||||
)
|
|
||||||
)
|
|
||||||
if op_code in GomspaceOpCodes.REQUEST_CORE_HK_ONCE:
|
|
||||||
q.add_log_cmd(f"PDU1: {GsInfo.REQUEST_CORE_HK_ONCE}")
|
|
||||||
hk_sid = make_sid(object_id=object_id.as_bytes, set_id=gs.SetIds.ACU_CORE)
|
|
||||||
q.add_pus_tc(generate_one_diag_command(sid=hk_sid))
|
|
||||||
if op_code in GomspaceOpCodes.REQUEST_AUX_HK_ONCE:
|
|
||||||
q.add_log_cmd(f"PDU1: {GsInfo.REQUEST_AUX_HK_ONCE}")
|
|
||||||
hk_sid = make_sid(object_id=object_id.as_bytes, set_id=gs.SetIds.ACU_AUX)
|
|
||||||
q.add_pus_tc(generate_one_hk_command(sid=hk_sid))
|
|
||||||
if op_code in GomspaceOpCodes.GET_PARAM:
|
|
||||||
q.add_log_cmd(f"PDU1: {GsInfo.GET_PARAMETER}")
|
|
||||||
table_id = int(input("Specify table ID: "))
|
|
||||||
memory_address = int(input("Specify memory address: 0x"), 16)
|
|
||||||
parameter_size = int(input("Specify parameter size: "))
|
|
||||||
q.add_pus_tc(
|
|
||||||
gs.pack_get_param_command(
|
|
||||||
object_id.as_bytes, table_id, memory_address, parameter_size
|
|
||||||
)
|
|
||||||
)
|
|
||||||
if op_code in GomspaceOpCodes.SET_PARAM:
|
|
||||||
q.add_log_cmd(f"PDU1: {GsInfo.SET_PARAMETER}")
|
|
||||||
memory_address = int(input("Specify memory address: 0x"), 16)
|
|
||||||
memory_address = struct.pack("!H", memory_address)
|
|
||||||
parameter_size = int(input("Specify parameter size: "))
|
|
||||||
parameter = int(input("Specify parameter: "))
|
|
||||||
q.add_pus_tc(
|
|
||||||
gs.pack_set_param_command(
|
|
||||||
object_id.as_bytes, memory_address, parameter_size, parameter
|
|
||||||
)
|
|
||||||
)
|
|
||||||
pack_test_cmds(object_id=object_id, q=q)
|
pack_test_cmds(object_id=object_id, q=q)
|
||||||
|
|
||||||
|
|
||||||
|
def acu_req_hk_cmds(q: DefaultPusQueueHelper, op_code: str):
|
||||||
|
req_hk_cmds(
|
||||||
|
"ACU", q, op_code, ACU_HANDLER_ID, [gs.SetIds.ACU_CORE, gs.SetIds.ACU_AUX]
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class ACUTestProcedure:
|
class ACUTestProcedure:
|
||||||
"""
|
"""
|
||||||
@brief Use this class to define the tests to perform for the ACU.
|
@brief Use this class to define the tests to perform for the ACU.
|
||||||
@ -154,7 +111,7 @@ def pack_test_cmds(object_id: ObjectIdU32, q: DefaultPusQueueHelper):
|
|||||||
q.add_pus_tc(
|
q.add_pus_tc(
|
||||||
gs.pack_get_param_command(
|
gs.pack_get_param_command(
|
||||||
object_id.as_bytes,
|
object_id.as_bytes,
|
||||||
gs.TableIds.hk,
|
gs.TableIds.HK,
|
||||||
ACUHkTable.wdt_gnd_left.parameter_address,
|
ACUHkTable.wdt_gnd_left.parameter_address,
|
||||||
ACUHkTable.wdt_gnd_left.parameter_size,
|
ACUHkTable.wdt_gnd_left.parameter_size,
|
||||||
)
|
)
|
||||||
@ -171,7 +128,7 @@ def pack_test_cmds(object_id: ObjectIdU32, q: DefaultPusQueueHelper):
|
|||||||
q.add_pus_tc(
|
q.add_pus_tc(
|
||||||
gs.pack_get_param_command(
|
gs.pack_get_param_command(
|
||||||
object_id.as_bytes,
|
object_id.as_bytes,
|
||||||
gs.TableIds.hk,
|
gs.TableIds.HK,
|
||||||
ACUHkTable.temperature3.parameter_address,
|
ACUHkTable.temperature3.parameter_address,
|
||||||
ACUHkTable.temperature3.parameter_size,
|
ACUHkTable.temperature3.parameter_size,
|
||||||
)
|
)
|
||||||
@ -181,7 +138,7 @@ def pack_test_cmds(object_id: ObjectIdU32, q: DefaultPusQueueHelper):
|
|||||||
q.add_pus_tc(
|
q.add_pus_tc(
|
||||||
gs.pack_get_param_command(
|
gs.pack_get_param_command(
|
||||||
object_id.as_bytes,
|
object_id.as_bytes,
|
||||||
gs.TableIds.config,
|
gs.TableIds.CONFIG,
|
||||||
ACUConfigTable.vboost.parameter_address,
|
ACUConfigTable.vboost.parameter_address,
|
||||||
ACUConfigTable.vboost.parameter_size,
|
ACUConfigTable.vboost.parameter_size,
|
||||||
)
|
)
|
||||||
@ -191,7 +148,7 @@ def pack_test_cmds(object_id: ObjectIdU32, q: DefaultPusQueueHelper):
|
|||||||
q.add_pus_tc(
|
q.add_pus_tc(
|
||||||
gs.pack_get_param_command(
|
gs.pack_get_param_command(
|
||||||
object_id.as_bytes,
|
object_id.as_bytes,
|
||||||
gs.TableIds.config,
|
gs.TableIds.CONFIG,
|
||||||
ACUConfigTable.vbat_max_hi.parameter_address,
|
ACUConfigTable.vbat_max_hi.parameter_address,
|
||||||
ACUConfigTable.vbat_max_hi.parameter_size,
|
ACUConfigTable.vbat_max_hi.parameter_size,
|
||||||
)
|
)
|
||||||
@ -201,7 +158,7 @@ def pack_test_cmds(object_id: ObjectIdU32, q: DefaultPusQueueHelper):
|
|||||||
q.add_pus_tc(
|
q.add_pus_tc(
|
||||||
gs.pack_get_param_command(
|
gs.pack_get_param_command(
|
||||||
object_id.as_bytes,
|
object_id.as_bytes,
|
||||||
gs.TableIds.config,
|
gs.TableIds.CONFIG,
|
||||||
ACUConfigTable.vbat_max_lo.parameter_address,
|
ACUConfigTable.vbat_max_lo.parameter_address,
|
||||||
ACUConfigTable.vbat_max_lo.parameter_size,
|
ACUConfigTable.vbat_max_lo.parameter_size,
|
||||||
)
|
)
|
||||||
@ -211,7 +168,7 @@ def pack_test_cmds(object_id: ObjectIdU32, q: DefaultPusQueueHelper):
|
|||||||
q.add_pus_tc(
|
q.add_pus_tc(
|
||||||
gs.pack_get_param_command(
|
gs.pack_get_param_command(
|
||||||
object_id.as_bytes,
|
object_id.as_bytes,
|
||||||
gs.TableIds.config,
|
gs.TableIds.CONFIG,
|
||||||
ACUConfigTable.ov_mode.parameter_address,
|
ACUConfigTable.ov_mode.parameter_address,
|
||||||
ACUConfigTable.ov_mode.parameter_size,
|
ACUConfigTable.ov_mode.parameter_size,
|
||||||
)
|
)
|
248
tmtc/power/common_power.py
Normal file
248
tmtc/power/common_power.py
Normal file
@ -0,0 +1,248 @@
|
|||||||
|
from gomspace.gomspace_common import (
|
||||||
|
pack_set_u8_param_command,
|
||||||
|
Channel,
|
||||||
|
GomspaceOpCodes,
|
||||||
|
GsInfo,
|
||||||
|
GomspaceDeviceActionIds,
|
||||||
|
prompt_and_pack_set_integer_param_command,
|
||||||
|
prompt_and_pack_get_param_command,
|
||||||
|
pack_request_config_command,
|
||||||
|
pack_gnd_wdt_reset_command,
|
||||||
|
ParamTypes,
|
||||||
|
)
|
||||||
|
from gomspace.gomspace_pdu_definitions import OUT_ENABLE_LIST
|
||||||
|
from spacepackets.ecss import PusTelecommand
|
||||||
|
from tmtccmd.config import OpCodeEntry
|
||||||
|
from tmtccmd.tc import DefaultPusQueueHelper
|
||||||
|
from tmtccmd.tc.pus_3_fsfw_hk import (
|
||||||
|
make_sid,
|
||||||
|
generate_one_diag_command,
|
||||||
|
generate_one_hk_command,
|
||||||
|
)
|
||||||
|
from tmtccmd.tc.pus_8_funccmd import make_fsfw_action_cmd
|
||||||
|
from tmtccmd.util import ObjectIdU32, ObjectIdBase
|
||||||
|
|
||||||
|
|
||||||
|
class PowerInfo:
|
||||||
|
INFO_CORE = "Core Information"
|
||||||
|
INFO_AUX = "Auxiliary Information"
|
||||||
|
INFO_ALL = "All Information"
|
||||||
|
RESET_ALL_GND_WDTS = "Reset all Ground Watchdogs"
|
||||||
|
|
||||||
|
|
||||||
|
class PowerOpCodes:
|
||||||
|
# PDU 1
|
||||||
|
TCS_ON = ["tcs_on"]
|
||||||
|
TCS_OFF = ["tcs_off"]
|
||||||
|
SYRLINKS_ON = ["syrlinks_on"]
|
||||||
|
SYRLINKS_OFF = ["syrlinks_off"]
|
||||||
|
STAR_TRACKER_ON = ["str_on"]
|
||||||
|
STAR_TRACKER_OFF = ["str_off"]
|
||||||
|
MGT_ON = ["mgt_on"]
|
||||||
|
MGT_OFF = ["mgt_off"]
|
||||||
|
SUS_N_ON = ["sus_nom_on"]
|
||||||
|
SUS_N_OFF = ["sus_nom_off"]
|
||||||
|
SCEX_ON = ["scex_on"]
|
||||||
|
SCEX_OFF = ["scex_off"]
|
||||||
|
PLOC_ON = ["ploc_on"]
|
||||||
|
PLOC_OFF = ["ploc_off"]
|
||||||
|
ACS_A_ON = ["acs_a_on"]
|
||||||
|
ACS_A_OFF = ["acs_a_off"]
|
||||||
|
|
||||||
|
# PDU 2
|
||||||
|
PL_PCDU_VBAT_NOM_ON = ["plpcdu_vbat_nom_on"]
|
||||||
|
PL_PCDU_VBAT_NOM_OFF = ["plpcdu_vbat_nom_off"]
|
||||||
|
RW_ON = ["rw_on"]
|
||||||
|
RW_OFF = ["rw_off"]
|
||||||
|
HEATER_ON = ["heater_on"]
|
||||||
|
HEATER_OFF = ["heater_off"]
|
||||||
|
SUS_R_ON = ["sus_red_on"]
|
||||||
|
SUS_R_OFF = ["sus_red_off"]
|
||||||
|
SOLAR_ARRAY_DEPL_ON = ["sa_depl_on"]
|
||||||
|
SOLAR_ARRAY_DEPL_OFF = ["sa_depl_off"]
|
||||||
|
PL_PCDU_VBAT_RED_ON = ["plpcdu_vbat_red_on"]
|
||||||
|
PL_PCDU_VBAT_RED_OFF = ["plpcdu_vbat_red_off"]
|
||||||
|
ACS_B_ON = ["acs_b_on"]
|
||||||
|
ACS_B_OFF = ["acs_b_off"]
|
||||||
|
PL_CAM_ON = ["cam_on"]
|
||||||
|
PL_CAM_OFF = ["cam_off"]
|
||||||
|
|
||||||
|
INFO_CORE = ["info"]
|
||||||
|
INFO_AUX = ["info_aux"]
|
||||||
|
INFO_ALL = ["info_all"]
|
||||||
|
RESET_ALL_GND_WDTS = ["reset_gnd_wdts"]
|
||||||
|
|
||||||
|
|
||||||
|
def pack_gomspace_cmds(
|
||||||
|
prefix: str, object_id: ObjectIdU32, q: DefaultPusQueueHelper, op_code: str
|
||||||
|
):
|
||||||
|
objb = object_id.as_bytes
|
||||||
|
if op_code in GomspaceOpCodes.PRINT_SWITCH_V_I:
|
||||||
|
q.add_log_cmd(f"{prefix}: {GsInfo.PRINT_SWITCH_V_I}")
|
||||||
|
q.add_pus_tc(
|
||||||
|
make_fsfw_action_cmd(
|
||||||
|
object_id=objb, action_id=GomspaceDeviceActionIds.PRINT_SWITCH_V_I
|
||||||
|
)
|
||||||
|
)
|
||||||
|
if op_code in GomspaceOpCodes.PRINT_LATCHUPS:
|
||||||
|
q.add_log_cmd(f"{prefix}: {GsInfo.PRINT_LATCHUPS}")
|
||||||
|
q.add_pus_tc(
|
||||||
|
make_fsfw_action_cmd(
|
||||||
|
object_id=objb, action_id=GomspaceDeviceActionIds.PRINT_LATCHUPS
|
||||||
|
)
|
||||||
|
)
|
||||||
|
if op_code in GomspaceOpCodes.SET_INTEGER_PARAM:
|
||||||
|
q.add_log_cmd(f"{prefix}: {GsInfo.SET_PARAMETER}")
|
||||||
|
print("Please specify the parameter type from index")
|
||||||
|
for idx, v in enumerate(ParamTypes):
|
||||||
|
print(f"{idx}: {v.name}")
|
||||||
|
ptype = int(input("Index: "))
|
||||||
|
prompt_and_pack_set_integer_param_command(q, object_id, ParamTypes(ptype))
|
||||||
|
if op_code in GomspaceOpCodes.GET_PARAM:
|
||||||
|
q.add_log_cmd(f"{prefix}: {GsInfo.GET_PARAMETER}")
|
||||||
|
prompt_and_pack_get_param_command(q, object_id)
|
||||||
|
if op_code in GomspaceOpCodes.REQUEST_CONFIG_TABLE:
|
||||||
|
q.add_log_cmd(f"{prefix}: {GsInfo.REQUEST_CONFIG_TABLE}")
|
||||||
|
q.add_pus_tc(pack_request_config_command(object_id.as_bytes))
|
||||||
|
if op_code in GomspaceOpCodes.SAVE_TABLE:
|
||||||
|
q.add_log_cmd(f"{prefix}: {GsInfo.SAVE_TABLE}")
|
||||||
|
source_table = int(
|
||||||
|
input(
|
||||||
|
"Source table [0: Board Config, 1: Module Config, "
|
||||||
|
"2: Calibration Parameter, 4: TM Data]: "
|
||||||
|
)
|
||||||
|
)
|
||||||
|
if source_table not in [0, 1, 2, 4]:
|
||||||
|
raise ValueError("Invalid source table index")
|
||||||
|
# Not used for now
|
||||||
|
"""
|
||||||
|
target_table = int(input(
|
||||||
|
"Target table. [Default: Source table]: "
|
||||||
|
))
|
||||||
|
"""
|
||||||
|
q.add_pus_tc(
|
||||||
|
make_fsfw_action_cmd(
|
||||||
|
object_id=object_id.as_bytes,
|
||||||
|
action_id=GomspaceDeviceActionIds.SAVE_TABLE,
|
||||||
|
user_data=bytes([source_table]),
|
||||||
|
)
|
||||||
|
)
|
||||||
|
if op_code in GomspaceOpCodes.SAVE_TABLE_DEFAULT:
|
||||||
|
source_table = int(
|
||||||
|
input(
|
||||||
|
"Source table [0: Board Config, 1: Module Config, 2: Calibration Parameter]: "
|
||||||
|
)
|
||||||
|
)
|
||||||
|
if source_table not in [0, 1, 2]:
|
||||||
|
raise ValueError("Invalid source table index")
|
||||||
|
q.add_pus_tc(
|
||||||
|
make_fsfw_action_cmd(
|
||||||
|
object_id=object_id.as_bytes,
|
||||||
|
action_id=GomspaceDeviceActionIds.SAVE_TABLE_DEFAULT,
|
||||||
|
user_data=bytes([source_table]),
|
||||||
|
)
|
||||||
|
)
|
||||||
|
if op_code in GomspaceOpCodes.LOAD_TABLE:
|
||||||
|
target_table = int(
|
||||||
|
input(
|
||||||
|
"Target table ID [0: Board Config, 1: Module Config, 2: Calibration Parameter, "
|
||||||
|
"4: HK TM]: "
|
||||||
|
)
|
||||||
|
)
|
||||||
|
if target_table not in [0, 1, 2, 4]:
|
||||||
|
raise ValueError("Invalid source table index")
|
||||||
|
if target_table != 4:
|
||||||
|
source_table = int(
|
||||||
|
input(
|
||||||
|
"Source table (file or default) [0: Board Config, 1: Module Config, "
|
||||||
|
"2: Calibration Parameter, value + 4 for default table]: "
|
||||||
|
)
|
||||||
|
)
|
||||||
|
if source_table not in [0, 1, 2, 4, 5, 6]:
|
||||||
|
raise ValueError("Invalid source table index")
|
||||||
|
else:
|
||||||
|
# Will be ignored
|
||||||
|
source_table = 4
|
||||||
|
q.add_pus_tc(
|
||||||
|
make_fsfw_action_cmd(
|
||||||
|
object_id=object_id.as_bytes,
|
||||||
|
action_id=GomspaceDeviceActionIds.LOAD_TABLE,
|
||||||
|
user_data=bytes([source_table, target_table]),
|
||||||
|
)
|
||||||
|
)
|
||||||
|
if op_code in GomspaceOpCodes.RESET_GND_WATCHDOG:
|
||||||
|
q.add_log_cmd(f"{prefix}: {GsInfo.RESET_GND_WATCHDOG}")
|
||||||
|
q.add_pus_tc(pack_gnd_wdt_reset_command(object_id))
|
||||||
|
|
||||||
|
|
||||||
|
def pack_reset_gnd_wdt_cmd(
|
||||||
|
q: DefaultPusQueueHelper, prefix: str, object_id: ObjectIdBase
|
||||||
|
):
|
||||||
|
q.add_log_cmd(f"{prefix}: {GsInfo.RESET_GND_WATCHDOG}")
|
||||||
|
q.add_pus_tc(pack_gnd_wdt_reset_command(object_id))
|
||||||
|
|
||||||
|
|
||||||
|
def req_hk_cmds(
|
||||||
|
prefix: str,
|
||||||
|
q: DefaultPusQueueHelper,
|
||||||
|
op_code: str,
|
||||||
|
obj_id: bytes,
|
||||||
|
set_id_pair: [int, int],
|
||||||
|
):
|
||||||
|
if op_code in GomspaceOpCodes.REQUEST_CORE_HK_ONCE:
|
||||||
|
q.add_log_cmd(f"{prefix}: {GsInfo.REQUEST_CORE_HK_ONCE}")
|
||||||
|
hk_sid = make_sid(object_id=obj_id, set_id=set_id_pair[0])
|
||||||
|
q.add_pus_tc(generate_one_diag_command(sid=hk_sid))
|
||||||
|
if op_code in GomspaceOpCodes.REQUEST_AUX_HK_ONCE:
|
||||||
|
q.add_log_cmd(f"{prefix}: {GsInfo.REQUEST_AUX_HK_ONCE}")
|
||||||
|
hk_sid = make_sid(object_id=obj_id, set_id=set_id_pair[1])
|
||||||
|
q.add_pus_tc(generate_one_hk_command(sid=hk_sid))
|
||||||
|
|
||||||
|
|
||||||
|
def pack_pdu_disable_safe_off_cmd() -> PusTelecommand:
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
def generic_on_cmd(
|
||||||
|
object_id: bytes, q: DefaultPusQueueHelper, info_str: str, out_idx: int
|
||||||
|
):
|
||||||
|
q.add_log_cmd(info_str + " on")
|
||||||
|
q.add_pus_tc(
|
||||||
|
pack_set_u8_param_command(
|
||||||
|
object_id,
|
||||||
|
OUT_ENABLE_LIST[out_idx].parameter_address,
|
||||||
|
Channel.on,
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def generic_off_cmd(
|
||||||
|
object_id: bytes, q: DefaultPusQueueHelper, info_str: str, out_idx: int
|
||||||
|
):
|
||||||
|
q.add_log_cmd(info_str + " off")
|
||||||
|
q.add_pus_tc(
|
||||||
|
pack_set_u8_param_command(
|
||||||
|
object_id,
|
||||||
|
OUT_ENABLE_LIST[out_idx].parameter_address,
|
||||||
|
Channel.off,
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def add_gomspace_cmd_defs(oce: OpCodeEntry):
|
||||||
|
oce.add(
|
||||||
|
keys=GomspaceOpCodes.REQUEST_CORE_HK_ONCE,
|
||||||
|
info=GsInfo.REQUEST_CORE_HK_ONCE,
|
||||||
|
)
|
||||||
|
oce.add(
|
||||||
|
keys=GomspaceOpCodes.REQUEST_AUX_HK_ONCE,
|
||||||
|
info=GsInfo.REQUEST_AUX_HK_ONCE,
|
||||||
|
)
|
||||||
|
oce.add(keys=GomspaceOpCodes.GET_PARAM, info=GsInfo.GET_PARAMETER)
|
||||||
|
oce.add(keys=GomspaceOpCodes.PRINT_LATCHUPS, info=GsInfo.PRINT_LATCHUPS)
|
||||||
|
oce.add(keys=GomspaceOpCodes.SET_INTEGER_PARAM, info=GsInfo.SET_PARAMETER)
|
||||||
|
oce.add(keys=GomspaceOpCodes.REQUEST_CONFIG_TABLE, info=GsInfo.REQUEST_CONFIG_TABLE)
|
||||||
|
oce.add(keys=GomspaceOpCodes.SAVE_TABLE, info=GsInfo.SAVE_TABLE)
|
||||||
|
oce.add(keys=GomspaceOpCodes.SAVE_TABLE_DEFAULT, info=GsInfo.SAVE_TABLE_DEFAULT)
|
||||||
|
oce.add(keys=GomspaceOpCodes.LOAD_TABLE, info=GsInfo.LOAD_TABLE)
|
||||||
|
oce.add(keys=GomspaceOpCodes.RESET_GND_WATCHDOG, info=GsInfo.RESET_GND_WATCHDOG)
|
@ -5,24 +5,21 @@
|
|||||||
@author J. Meier
|
@author J. Meier
|
||||||
@date 13.12.2020
|
@date 13.12.2020
|
||||||
"""
|
"""
|
||||||
|
from tmtc.power.common_power import pack_gomspace_cmds, req_hk_cmds
|
||||||
from tmtccmd.tc import DefaultPusQueueHelper
|
from tmtccmd.tc import DefaultPusQueueHelper
|
||||||
from tmtccmd.tc.pus_3_fsfw_hk import generate_one_hk_command, make_sid
|
|
||||||
from gomspace.gomspace_common import (
|
from gomspace.gomspace_common import (
|
||||||
GsInfo,
|
|
||||||
GomspaceOpCodes,
|
|
||||||
TableEntry,
|
TableEntry,
|
||||||
Channel,
|
Channel,
|
||||||
pack_set_param_command,
|
|
||||||
TableIds,
|
TableIds,
|
||||||
pack_get_param_command,
|
pack_get_param_command,
|
||||||
pack_gnd_wdt_reset_command,
|
pack_gnd_wdt_reset_command,
|
||||||
pack_ping_command,
|
pack_ping_command,
|
||||||
GomspaceDeviceActionIds,
|
|
||||||
pack_reboot_command,
|
pack_reboot_command,
|
||||||
|
pack_set_u8_param_command,
|
||||||
|
pack_set_u16_param_command,
|
||||||
SetIds,
|
SetIds,
|
||||||
)
|
)
|
||||||
from config.object_ids import P60_DOCK_HANDLER
|
from config.object_ids import P60_DOCK_HANDLER
|
||||||
from tmtccmd.tc.pus_8_funccmd import generate_action_command
|
|
||||||
from tmtccmd.util import ObjectIdU32
|
from tmtccmd.util import ObjectIdU32
|
||||||
|
|
||||||
|
|
||||||
@ -99,68 +96,44 @@ class P60DockHkTable:
|
|||||||
|
|
||||||
def pack_p60dock_cmds(object_id: ObjectIdU32, q: DefaultPusQueueHelper, op_code: str):
|
def pack_p60dock_cmds(object_id: ObjectIdU32, q: DefaultPusQueueHelper, op_code: str):
|
||||||
objb = object_id.as_bytes
|
objb = object_id.as_bytes
|
||||||
|
pack_gomspace_cmds("P60 Dock", object_id, q, op_code)
|
||||||
|
p60_dock_req_hk_cmds(q, op_code)
|
||||||
if op_code in P60OpCodes.STACK_3V3_ON:
|
if op_code in P60OpCodes.STACK_3V3_ON:
|
||||||
q.add_log_cmd(P60Info.STACK_3V3_ON)
|
q.add_log_cmd(P60Info.STACK_3V3_ON)
|
||||||
q.add_pus_tc(
|
q.add_pus_tc(
|
||||||
pack_set_param_command(
|
pack_set_u8_param_command(
|
||||||
objb,
|
objb,
|
||||||
P60DockConfigTable.out_en_9.parameter_address,
|
P60DockConfigTable.out_en_9.parameter_address,
|
||||||
P60DockConfigTable.out_en_9.parameter_size,
|
|
||||||
Channel.on,
|
Channel.on,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
if op_code in P60OpCodes.STACK_3V3_OFF:
|
if op_code in P60OpCodes.STACK_3V3_OFF:
|
||||||
q.add_log_cmd(P60Info.STACK_3V3_OFF)
|
q.add_log_cmd(P60Info.STACK_3V3_OFF)
|
||||||
q.add_pus_tc(
|
q.add_pus_tc(
|
||||||
pack_set_param_command(
|
pack_set_u8_param_command(
|
||||||
objb,
|
objb,
|
||||||
P60DockConfigTable.out_en_9.parameter_address,
|
P60DockConfigTable.out_en_9.parameter_address,
|
||||||
P60DockConfigTable.out_en_9.parameter_size,
|
|
||||||
Channel.off,
|
Channel.off,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
if op_code in P60OpCodes.STACK_5V_ON:
|
if op_code in P60OpCodes.STACK_5V_ON:
|
||||||
q.add_log_cmd(P60Info.STACK_5V_ON)
|
q.add_log_cmd(P60Info.STACK_5V_ON)
|
||||||
q.add_pus_tc(
|
q.add_pus_tc(
|
||||||
pack_set_param_command(
|
pack_set_u8_param_command(
|
||||||
objb,
|
objb,
|
||||||
P60DockConfigTable.out_en_10.parameter_address,
|
P60DockConfigTable.out_en_10.parameter_address,
|
||||||
P60DockConfigTable.out_en_10.parameter_size,
|
|
||||||
Channel.on,
|
Channel.on,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
if op_code in P60OpCodes.STACK_5V_OFF:
|
if op_code in P60OpCodes.STACK_5V_OFF:
|
||||||
q.add_log_cmd(P60Info.STACK_5V_OFF)
|
q.add_log_cmd(P60Info.STACK_5V_OFF)
|
||||||
q.add_pus_tc(
|
q.add_pus_tc(
|
||||||
pack_set_param_command(
|
pack_set_u8_param_command(
|
||||||
objb,
|
objb,
|
||||||
P60DockConfigTable.out_en_10.parameter_address,
|
P60DockConfigTable.out_en_10.parameter_address,
|
||||||
P60DockConfigTable.out_en_10.parameter_size,
|
|
||||||
Channel.off,
|
Channel.off,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
if op_code in GomspaceOpCodes.REQUEST_CORE_HK_ONCE:
|
|
||||||
q.add_log_cmd("P60 Dock: Requesting HK Core HK Once")
|
|
||||||
hk_sid = make_sid(object_id=P60_DOCK_HANDLER, set_id=SetIds.P60_CORE)
|
|
||||||
q.add_pus_tc(generate_one_hk_command(sid=hk_sid))
|
|
||||||
if op_code in GomspaceOpCodes.REQUEST_AUX_HK_ONCE:
|
|
||||||
q.add_log_cmd("P60 Dock: Requesting HK Aux HK Once")
|
|
||||||
hk_sid = make_sid(object_id=P60_DOCK_HANDLER, set_id=SetIds.P60_AUX)
|
|
||||||
q.add_pus_tc(generate_one_hk_command(sid=hk_sid))
|
|
||||||
if op_code in GomspaceOpCodes.PRINT_SWITCH_V_I:
|
|
||||||
q.add_log_cmd("P60 Dock: Print Switches, Voltages, Currents")
|
|
||||||
q.add_pus_tc(
|
|
||||||
generate_action_command(
|
|
||||||
object_id=objb, action_id=GomspaceDeviceActionIds.PRINT_SWITCH_V_I
|
|
||||||
)
|
|
||||||
)
|
|
||||||
if op_code in GomspaceOpCodes.PRINT_LATCHUPS:
|
|
||||||
q.add_log_cmd("P60 Dock: Print Latchups")
|
|
||||||
q.add_pus_tc(
|
|
||||||
generate_action_command(
|
|
||||||
object_id=objb, action_id=GomspaceDeviceActionIds.PRINT_LATCHUPS
|
|
||||||
)
|
|
||||||
)
|
|
||||||
if P60DockTestProcedure.all or P60DockTestProcedure.reboot:
|
if P60DockTestProcedure.all or P60DockTestProcedure.reboot:
|
||||||
q.add_log_cmd("P60 Dock: Reboot")
|
q.add_log_cmd("P60 Dock: Reboot")
|
||||||
q.add_pus_tc(pack_reboot_command(object_id))
|
q.add_pus_tc(pack_reboot_command(object_id))
|
||||||
@ -169,7 +142,7 @@ def pack_p60dock_cmds(object_id: ObjectIdU32, q: DefaultPusQueueHelper, op_code:
|
|||||||
q.add_pus_tc(
|
q.add_pus_tc(
|
||||||
pack_get_param_command(
|
pack_get_param_command(
|
||||||
objb,
|
objb,
|
||||||
TableIds.hk,
|
TableIds.HK,
|
||||||
P60DockHkTable.wdt_gnd_left.parameter_address,
|
P60DockHkTable.wdt_gnd_left.parameter_address,
|
||||||
P60DockHkTable.wdt_gnd_left.parameter_size,
|
P60DockHkTable.wdt_gnd_left.parameter_size,
|
||||||
)
|
)
|
||||||
@ -185,10 +158,9 @@ def pack_p60dock_cmds(object_id: ObjectIdU32, q: DefaultPusQueueHelper, op_code:
|
|||||||
q.add_log_cmd("P60 Dock: Testing setting output channel 3 off")
|
q.add_log_cmd("P60 Dock: Testing setting output channel 3 off")
|
||||||
parameter = 0 # set channel off
|
parameter = 0 # set channel off
|
||||||
q.add_pus_tc(
|
q.add_pus_tc(
|
||||||
pack_set_param_command(
|
pack_set_u8_param_command(
|
||||||
objb,
|
objb,
|
||||||
P60DockConfigTable.out_en_3.parameter_address,
|
P60DockConfigTable.out_en_3.parameter_address,
|
||||||
P60DockConfigTable.out_en_3.parameter_size,
|
|
||||||
parameter,
|
parameter,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@ -197,7 +169,7 @@ def pack_p60dock_cmds(object_id: ObjectIdU32, q: DefaultPusQueueHelper, op_code:
|
|||||||
q.add_pus_tc(
|
q.add_pus_tc(
|
||||||
pack_get_param_command(
|
pack_get_param_command(
|
||||||
objb,
|
objb,
|
||||||
TableIds.hk,
|
TableIds.HK,
|
||||||
P60DockHkTable.temperature1.parameter_address,
|
P60DockHkTable.temperature1.parameter_address,
|
||||||
P60DockHkTable.temperature1.parameter_size,
|
P60DockHkTable.temperature1.parameter_size,
|
||||||
)
|
)
|
||||||
@ -207,7 +179,7 @@ def pack_p60dock_cmds(object_id: ObjectIdU32, q: DefaultPusQueueHelper, op_code:
|
|||||||
q.add_pus_tc(
|
q.add_pus_tc(
|
||||||
pack_get_param_command(
|
pack_get_param_command(
|
||||||
objb,
|
objb,
|
||||||
TableIds.config,
|
TableIds.CONFIG,
|
||||||
P60DockConfigTable.out_en_3.parameter_address,
|
P60DockConfigTable.out_en_3.parameter_address,
|
||||||
P60DockConfigTable.out_en_3.parameter_size,
|
P60DockConfigTable.out_en_3.parameter_size,
|
||||||
)
|
)
|
||||||
@ -217,7 +189,7 @@ def pack_p60dock_cmds(object_id: ObjectIdU32, q: DefaultPusQueueHelper, op_code:
|
|||||||
q.add_pus_tc(
|
q.add_pus_tc(
|
||||||
pack_get_param_command(
|
pack_get_param_command(
|
||||||
objb,
|
objb,
|
||||||
TableIds.config,
|
TableIds.CONFIG,
|
||||||
P60DockConfigTable.cur_lu_lim_0.parameter_address,
|
P60DockConfigTable.cur_lu_lim_0.parameter_address,
|
||||||
P60DockConfigTable.cur_lu_lim_0.parameter_size,
|
P60DockConfigTable.cur_lu_lim_0.parameter_size,
|
||||||
)
|
)
|
||||||
@ -226,10 +198,9 @@ def pack_p60dock_cmds(object_id: ObjectIdU32, q: DefaultPusQueueHelper, op_code:
|
|||||||
q.add_log_cmd("P60 Dock: Testing setting output channel 3 on")
|
q.add_log_cmd("P60 Dock: Testing setting output channel 3 on")
|
||||||
parameter = 1 # set channel on
|
parameter = 1 # set channel on
|
||||||
q.add_pus_tc(
|
q.add_pus_tc(
|
||||||
pack_set_param_command(
|
pack_set_u8_param_command(
|
||||||
objb,
|
objb,
|
||||||
P60DockConfigTable.out_en_3.parameter_address,
|
P60DockConfigTable.out_en_3.parameter_address,
|
||||||
P60DockConfigTable.out_en_3.parameter_size,
|
|
||||||
parameter,
|
parameter,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@ -250,40 +221,18 @@ def pack_p60dock_cmds(object_id: ObjectIdU32, q: DefaultPusQueueHelper, op_code:
|
|||||||
q.add_pus_tc(
|
q.add_pus_tc(
|
||||||
pack_get_param_command(
|
pack_get_param_command(
|
||||||
objb,
|
objb,
|
||||||
TableIds.hk,
|
TableIds.HK,
|
||||||
invalid_address,
|
invalid_address,
|
||||||
P60DockHkTable.temperature1.parameter_size,
|
P60DockHkTable.temperature1.parameter_size,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
q.add_log_cmd("P60 Dock: Testing invalid address handling in set param command")
|
q.add_log_cmd("P60 Dock: Testing invalid address handling in set param command")
|
||||||
invalid_address = bytearray([0x01, 0xF4])
|
invalid_address = bytearray([0x01, 0xF4])
|
||||||
parameter_size = 2
|
|
||||||
parameter = 1
|
parameter = 1
|
||||||
q.add_pus_tc(
|
q.add_pus_tc(pack_set_u16_param_command(objb, invalid_address, parameter))
|
||||||
pack_set_param_command(objb, invalid_address, parameter_size, parameter)
|
|
||||||
)
|
|
||||||
if P60DockTestProcedure.all or P60DockTestProcedure.invalid_parameter_size_test:
|
def p60_dock_req_hk_cmds(q: DefaultPusQueueHelper, op_code: str):
|
||||||
q.add_log_cmd(
|
req_hk_cmds(
|
||||||
"P60 Dock: Testing handling of invalid parameter sizes in get-param command"
|
"P60 Dock", q, op_code, P60_DOCK_HANDLER, [SetIds.P60_CORE, SetIds.P60_AUX]
|
||||||
)
|
)
|
||||||
invalid_size = 5
|
|
||||||
q.add_pus_tc(
|
|
||||||
pack_get_param_command(
|
|
||||||
objb,
|
|
||||||
TableIds.hk,
|
|
||||||
P60DockHkTable.temperature1.parameter_address,
|
|
||||||
invalid_size,
|
|
||||||
)
|
|
||||||
)
|
|
||||||
q.add_log_cmd(
|
|
||||||
"P60 Dock: Testing handling of invalid parameter size in set-param command"
|
|
||||||
)
|
|
||||||
parameter = 1
|
|
||||||
q.add_pus_tc(
|
|
||||||
pack_set_param_command(
|
|
||||||
objb,
|
|
||||||
P60DockConfigTable.out_en_3.parameter_address,
|
|
||||||
invalid_size,
|
|
||||||
parameter,
|
|
||||||
)
|
|
||||||
)
|
|
210
tmtc/power/pdu1.py
Normal file
210
tmtc/power/pdu1.py
Normal file
@ -0,0 +1,210 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
"""PDU1 is mounted on the X2 slot of the P60 dock
|
||||||
|
@author J. Meier
|
||||||
|
@date 17.12.2020
|
||||||
|
"""
|
||||||
|
from config.object_ids import PDU_1_HANDLER_ID
|
||||||
|
from tmtc.power.common_power import (
|
||||||
|
pack_gomspace_cmds,
|
||||||
|
req_hk_cmds,
|
||||||
|
PowerOpCodes,
|
||||||
|
generic_on_cmd,
|
||||||
|
generic_off_cmd,
|
||||||
|
)
|
||||||
|
|
||||||
|
from gomspace.gomspace_common import *
|
||||||
|
from gomspace.gomspace_pdu_definitions import *
|
||||||
|
from tmtccmd.config import OpCodeEntry
|
||||||
|
|
||||||
|
|
||||||
|
class Pdu1InfoBase:
|
||||||
|
TCS = "Switch TCS Board"
|
||||||
|
SYRLINKS = "Switch Syrlinks (COM)"
|
||||||
|
STR = "Switch Startracker"
|
||||||
|
MGT = "Switch Magnetorquer"
|
||||||
|
SUS_N = "Switch Sun Sensor Board Nominal"
|
||||||
|
SCEX = "Switch Solar Cell Experiment"
|
||||||
|
PLOC = "Switch Payload On-Board Computer"
|
||||||
|
ACS_A = "Switch ACS Board A-Side"
|
||||||
|
|
||||||
|
|
||||||
|
class Pdu1ChIndex(enum.IntEnum):
|
||||||
|
TCS = 0
|
||||||
|
SYRLINKS = 1
|
||||||
|
STR = 2
|
||||||
|
MGT = 3
|
||||||
|
SUS_N = 4
|
||||||
|
SCEX = 5
|
||||||
|
PLOC = 6
|
||||||
|
ACS_A = 7
|
||||||
|
|
||||||
|
|
||||||
|
class PDU1TestProcedure:
|
||||||
|
"""
|
||||||
|
@brief Use this class to define the tests to perform for the PDU2.
|
||||||
|
@details Setting all to True will run all tests.
|
||||||
|
Setting all to False will only run the tests set to True.
|
||||||
|
"""
|
||||||
|
|
||||||
|
all = False
|
||||||
|
reboot = False
|
||||||
|
ping = False
|
||||||
|
read_temperature = False
|
||||||
|
turn_channel_2_on = False # Star Tracker connected to this channel (5V)
|
||||||
|
turn_channel_2_off = False
|
||||||
|
turn_channel_3_on = False # MTQ connected to this channel (5V)
|
||||||
|
turn_channel_3_off = False
|
||||||
|
|
||||||
|
|
||||||
|
def pack_pdu1_commands(object_id: ObjectIdU32, q: DefaultPusQueueHelper, op_code: str):
|
||||||
|
q.add_log_cmd("Commanding PDU1")
|
||||||
|
objb = object_id.as_bytes
|
||||||
|
pdu1_cmds(q, op_code)
|
||||||
|
pdu1_req_hk_cmds(q, op_code)
|
||||||
|
pack_gomspace_cmds("PDU1", object_id, q, op_code)
|
||||||
|
if PDU1TestProcedure.all or PDU1TestProcedure.ping:
|
||||||
|
q.add_log_cmd("PDU1: Ping Test")
|
||||||
|
ping_data = bytearray([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
|
||||||
|
q.add_pus_tc(pack_ping_command(object_id, ping_data))
|
||||||
|
if PDU1TestProcedure.all or PDU1TestProcedure.read_temperature:
|
||||||
|
q.add_log_cmd("PDU1: Testing temperature reading")
|
||||||
|
q.add_pus_tc(
|
||||||
|
pack_get_param_command(
|
||||||
|
objb,
|
||||||
|
TableIds.HK,
|
||||||
|
PduHkTable.temperature.parameter_address,
|
||||||
|
PduHkTable.temperature.parameter_size,
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def pdu1_req_hk_cmds(q: DefaultPusQueueHelper, op_code: str):
|
||||||
|
req_hk_cmds(
|
||||||
|
"PDU1", q, op_code, PDU_1_HANDLER_ID, [SetIds.PDU_1_CORE, SetIds.PDU_1_AUX]
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def info_on_pdu1(base: str) -> str:
|
||||||
|
return "PDU1: " + base + " on"
|
||||||
|
|
||||||
|
|
||||||
|
def info_off_pdu1(base: str) -> str:
|
||||||
|
return "PDU1: " + base + " off"
|
||||||
|
|
||||||
|
|
||||||
|
def pdu1_cmds(q: DefaultPusQueueHelper, op_code: str):
|
||||||
|
if op_code in PowerOpCodes.TCS_ON:
|
||||||
|
tcs_on_cmd(q)
|
||||||
|
elif op_code in PowerOpCodes.TCS_OFF:
|
||||||
|
tcs_off_cmd(q)
|
||||||
|
elif op_code in PowerOpCodes.SYRLINKS_ON:
|
||||||
|
syrlinks_on_cmd(q)
|
||||||
|
elif op_code in PowerOpCodes.SYRLINKS_OFF:
|
||||||
|
syrlinks_off_cmd(q)
|
||||||
|
elif op_code in PowerOpCodes.STAR_TRACKER_ON:
|
||||||
|
startracker_on_cmd(q)
|
||||||
|
elif op_code in PowerOpCodes.STAR_TRACKER_OFF:
|
||||||
|
startracker_off_cmd(q)
|
||||||
|
elif op_code in PowerOpCodes.MGT_ON:
|
||||||
|
mgt_on_cmd(q)
|
||||||
|
elif op_code in PowerOpCodes.MGT_OFF:
|
||||||
|
mgt_off_cmd(q)
|
||||||
|
elif op_code in PowerOpCodes.SUS_N_ON:
|
||||||
|
sun_sensor_nominal_on_cmd(q)
|
||||||
|
elif op_code in PowerOpCodes.SUS_N_OFF:
|
||||||
|
sun_sensor_nominal_off_cmd(q)
|
||||||
|
elif op_code in PowerOpCodes.SCEX_ON:
|
||||||
|
solar_cell_experiment_on_cmd(q)
|
||||||
|
elif op_code in PowerOpCodes.SCEX_OFF:
|
||||||
|
solar_cell_experiment_off_cmd(q)
|
||||||
|
elif op_code in PowerOpCodes.PLOC_ON:
|
||||||
|
ploc_on_cmd(q)
|
||||||
|
elif op_code in PowerOpCodes.PLOC_OFF:
|
||||||
|
ploc_off_cmd(q)
|
||||||
|
elif op_code in PowerOpCodes.ACS_A_ON:
|
||||||
|
acs_board_a_on_cmd(q)
|
||||||
|
elif op_code in PowerOpCodes.ACS_A_OFF:
|
||||||
|
acs_board_a_off_cmd(q)
|
||||||
|
|
||||||
|
|
||||||
|
def add_pdu1_common_defs(oce: OpCodeEntry):
|
||||||
|
oce.add(keys=PowerOpCodes.TCS_ON, info=info_on_pdu1(Pdu1InfoBase.TCS))
|
||||||
|
oce.add(keys=PowerOpCodes.TCS_OFF, info=info_off_pdu1(Pdu1InfoBase.TCS))
|
||||||
|
oce.add(keys=PowerOpCodes.STAR_TRACKER_ON, info=info_on_pdu1(Pdu1InfoBase.STR))
|
||||||
|
oce.add(keys=PowerOpCodes.STAR_TRACKER_OFF, info=info_off_pdu1(Pdu1InfoBase.STR))
|
||||||
|
oce.add(keys=PowerOpCodes.SUS_N_ON, info=info_on_pdu1(Pdu1InfoBase.SUS_N))
|
||||||
|
oce.add(keys=PowerOpCodes.SUS_N_OFF, info=info_off_pdu1(Pdu1InfoBase.SUS_N))
|
||||||
|
oce.add(keys=PowerOpCodes.ACS_A_ON, info=info_on_pdu1(Pdu1InfoBase.ACS_A))
|
||||||
|
oce.add(keys=PowerOpCodes.ACS_A_OFF, info=info_off_pdu1(Pdu1InfoBase.ACS_A))
|
||||||
|
oce.add(keys=PowerOpCodes.SYRLINKS_ON, info=info_on_pdu1(Pdu1InfoBase.SYRLINKS))
|
||||||
|
oce.add(keys=PowerOpCodes.SYRLINKS_OFF, info=info_off_pdu1(Pdu1InfoBase.SYRLINKS))
|
||||||
|
oce.add(keys=PowerOpCodes.MGT_ON, info=info_on_pdu1(Pdu1InfoBase.MGT))
|
||||||
|
oce.add(keys=PowerOpCodes.MGT_OFF, info=info_off_pdu1(Pdu1InfoBase.MGT))
|
||||||
|
oce.add(keys=PowerOpCodes.PLOC_ON, info=info_on_pdu1(Pdu1InfoBase.PLOC))
|
||||||
|
oce.add(keys=PowerOpCodes.PLOC_OFF, info=info_off_pdu1(Pdu1InfoBase.PLOC))
|
||||||
|
oce.add(keys=PowerOpCodes.SCEX_ON, info=info_on_pdu1(Pdu1InfoBase.SCEX))
|
||||||
|
oce.add(keys=PowerOpCodes.SCEX_OFF, info=info_off_pdu1(Pdu1InfoBase.SCEX))
|
||||||
|
|
||||||
|
|
||||||
|
def tcs_on_cmd(q: DefaultPusQueueHelper):
|
||||||
|
generic_on_cmd(PDU_1_HANDLER_ID, q, Pdu1InfoBase.TCS, Pdu1ChIndex.TCS)
|
||||||
|
|
||||||
|
|
||||||
|
def tcs_off_cmd(q: DefaultPusQueueHelper):
|
||||||
|
generic_off_cmd(PDU_1_HANDLER_ID, q, Pdu1InfoBase.TCS, Pdu1ChIndex.TCS)
|
||||||
|
|
||||||
|
|
||||||
|
def syrlinks_on_cmd(q: DefaultPusQueueHelper):
|
||||||
|
generic_on_cmd(PDU_1_HANDLER_ID, q, Pdu1InfoBase.SYRLINKS, Pdu1ChIndex.SYRLINKS)
|
||||||
|
|
||||||
|
|
||||||
|
def syrlinks_off_cmd(q: DefaultPusQueueHelper):
|
||||||
|
generic_off_cmd(PDU_1_HANDLER_ID, q, Pdu1InfoBase.SYRLINKS, Pdu1ChIndex.SYRLINKS)
|
||||||
|
|
||||||
|
|
||||||
|
def startracker_on_cmd(q: DefaultPusQueueHelper):
|
||||||
|
generic_on_cmd(PDU_1_HANDLER_ID, q, Pdu1InfoBase.STR, Pdu1ChIndex.STR)
|
||||||
|
|
||||||
|
|
||||||
|
def startracker_off_cmd(q: DefaultPusQueueHelper):
|
||||||
|
generic_off_cmd(PDU_1_HANDLER_ID, q, Pdu1InfoBase.STR, Pdu1ChIndex.STR)
|
||||||
|
|
||||||
|
|
||||||
|
def mgt_on_cmd(q: DefaultPusQueueHelper):
|
||||||
|
generic_on_cmd(PDU_1_HANDLER_ID, q, Pdu1InfoBase.MGT, Pdu1ChIndex.MGT)
|
||||||
|
|
||||||
|
|
||||||
|
def mgt_off_cmd(q: DefaultPusQueueHelper):
|
||||||
|
generic_off_cmd(PDU_1_HANDLER_ID, q, Pdu1InfoBase.MGT, Pdu1ChIndex.MGT)
|
||||||
|
|
||||||
|
|
||||||
|
def sun_sensor_nominal_on_cmd(q: DefaultPusQueueHelper):
|
||||||
|
generic_on_cmd(PDU_1_HANDLER_ID, q, Pdu1InfoBase.SUS_N, Pdu1ChIndex.SUS_N)
|
||||||
|
|
||||||
|
|
||||||
|
def sun_sensor_nominal_off_cmd(q: DefaultPusQueueHelper):
|
||||||
|
generic_off_cmd(PDU_1_HANDLER_ID, q, Pdu1InfoBase.SUS_N, Pdu1ChIndex.SUS_N)
|
||||||
|
|
||||||
|
|
||||||
|
def solar_cell_experiment_on_cmd(q: DefaultPusQueueHelper):
|
||||||
|
generic_on_cmd(PDU_1_HANDLER_ID, q, Pdu1InfoBase.SCEX, Pdu1ChIndex.SCEX)
|
||||||
|
|
||||||
|
|
||||||
|
def solar_cell_experiment_off_cmd(q: DefaultPusQueueHelper):
|
||||||
|
generic_off_cmd(PDU_1_HANDLER_ID, q, Pdu1InfoBase.SCEX, Pdu1ChIndex.SCEX)
|
||||||
|
|
||||||
|
|
||||||
|
def ploc_on_cmd(q: DefaultPusQueueHelper):
|
||||||
|
generic_on_cmd(PDU_1_HANDLER_ID, q, Pdu1InfoBase.PLOC, Pdu1ChIndex.PLOC)
|
||||||
|
|
||||||
|
|
||||||
|
def ploc_off_cmd(q: DefaultPusQueueHelper):
|
||||||
|
generic_off_cmd(PDU_1_HANDLER_ID, q, Pdu1InfoBase.PLOC, Pdu1ChIndex.PLOC)
|
||||||
|
|
||||||
|
|
||||||
|
def acs_board_a_on_cmd(q: DefaultPusQueueHelper):
|
||||||
|
generic_on_cmd(PDU_1_HANDLER_ID, q, Pdu1InfoBase.ACS_A, Pdu1ChIndex.ACS_A)
|
||||||
|
|
||||||
|
|
||||||
|
def acs_board_a_off_cmd(q: DefaultPusQueueHelper):
|
||||||
|
generic_on_cmd(PDU_1_HANDLER_ID, q, Pdu1InfoBase.ACS_A, Pdu1ChIndex.ACS_A)
|
292
tmtc/power/pdu2.py
Normal file
292
tmtc/power/pdu2.py
Normal file
@ -0,0 +1,292 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
"""
|
||||||
|
@file tmtcc_tc_pdu2.py
|
||||||
|
@brief PDU2 tests
|
||||||
|
@details PDU2 is mounted on the X4 slot of the P60 dock
|
||||||
|
@author J. Meier
|
||||||
|
@date 17.12.2020
|
||||||
|
"""
|
||||||
|
from config.object_ids import PDU_2_HANDLER_ID
|
||||||
|
from tmtc.power.common_power import (
|
||||||
|
pack_gomspace_cmds,
|
||||||
|
req_hk_cmds,
|
||||||
|
PowerOpCodes,
|
||||||
|
generic_on_cmd,
|
||||||
|
generic_off_cmd,
|
||||||
|
)
|
||||||
|
from gomspace.gomspace_common import *
|
||||||
|
from gomspace.gomspace_pdu_definitions import *
|
||||||
|
from tmtccmd.config import OpCodeEntry
|
||||||
|
|
||||||
|
|
||||||
|
class Pdu2InfoBase:
|
||||||
|
PL_PCDU_BAT_NOM = "Switch PL PCDU Nominal Battery Channel"
|
||||||
|
RW = "Switch Reaction Wheel"
|
||||||
|
HEATER = "Switch Heater"
|
||||||
|
SUS_R = "Switch Sun Sensor Board Redundant"
|
||||||
|
SOLAR_ARRAY_DEPL = "Switch Solar Array Deployment"
|
||||||
|
PL_PCDU_BAT_RED = "Switch PL PCDU Redundant Battery Channel"
|
||||||
|
ACS_B = "Switch ACS Board B-Side"
|
||||||
|
PL_CAM = "Switch Payload Camera"
|
||||||
|
|
||||||
|
|
||||||
|
class Pdu2ChIndex(enum.IntEnum):
|
||||||
|
OBC = 0
|
||||||
|
PL_PCDU_BAT_NOM = 1
|
||||||
|
RW = 2
|
||||||
|
HEATER = 3
|
||||||
|
SUS_R = 4
|
||||||
|
SOLAR_ARRAY_DEPL = 5
|
||||||
|
PL_PCDU_BAT_RED = 6
|
||||||
|
ACS_B = 7
|
||||||
|
PL_CAM = 8
|
||||||
|
|
||||||
|
|
||||||
|
class PDU2TestProcedure:
|
||||||
|
"""
|
||||||
|
@brief Use this class to define the tests to perform for the PDU2.
|
||||||
|
@details Setting all to True will run all tests.
|
||||||
|
Setting all to False will only run the tests set to True.
|
||||||
|
"""
|
||||||
|
|
||||||
|
all = False
|
||||||
|
reboot = False
|
||||||
|
read_gnd_wdt = False
|
||||||
|
gnd_wdt_reset = False
|
||||||
|
ping = False
|
||||||
|
channel_2_off = False # Reaction wheels 5V
|
||||||
|
read_temperature = False
|
||||||
|
read_channel_2_state = False # Reaction wheels 5V
|
||||||
|
read_cur_lu_lim_0 = False # OBC
|
||||||
|
channel_2_on = False # Reaction wheels 5V
|
||||||
|
invalid_table_id_test = (
|
||||||
|
False # Test to check if software properly handles invalid table ids
|
||||||
|
)
|
||||||
|
invalid_address_test = (
|
||||||
|
False # Test to check if software properly handles invalid addresses
|
||||||
|
)
|
||||||
|
invalid_parameter_size_test = False
|
||||||
|
request_hk_table = False
|
||||||
|
|
||||||
|
|
||||||
|
def pack_pdu2_commands(object_id: ObjectIdU32, q: DefaultPusQueueHelper, op_code: str):
|
||||||
|
q.add_log_cmd("Testing PDU2")
|
||||||
|
objb = object_id.as_bytes
|
||||||
|
pdu2_cmds(q, op_code)
|
||||||
|
pdu2_req_hk_cmds(q, op_code)
|
||||||
|
pack_gomspace_cmds("PDU2", object_id, q, op_code)
|
||||||
|
if PDU2TestProcedure.all or PDU2TestProcedure.reboot:
|
||||||
|
q.add_log_cmd("PDU2: Reboot")
|
||||||
|
q.add_pus_tc(pack_reboot_command(object_id))
|
||||||
|
if PDU2TestProcedure.all or PDU2TestProcedure.read_gnd_wdt:
|
||||||
|
q.add_log_cmd("PDU2: Reading ground watchdog timer value")
|
||||||
|
q.add_pus_tc(
|
||||||
|
pack_get_param_command(
|
||||||
|
objb,
|
||||||
|
TableIds.HK,
|
||||||
|
PduHkTable.wdt_gnd_left.parameter_address,
|
||||||
|
PduHkTable.wdt_gnd_left.parameter_size,
|
||||||
|
)
|
||||||
|
)
|
||||||
|
if PDU2TestProcedure.all or PDU2TestProcedure.gnd_wdt_reset:
|
||||||
|
q.add_log_cmd("PDU2: Testing ground watchdog reset")
|
||||||
|
q.add_pus_tc(pack_gnd_wdt_reset_command(object_id))
|
||||||
|
if PDU2TestProcedure.all or PDU2TestProcedure.ping:
|
||||||
|
q.add_log_cmd("PDU2: Ping Test")
|
||||||
|
ping_data = bytearray([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
|
||||||
|
q.add_pus_tc(pack_ping_command(object_id, ping_data))
|
||||||
|
if PDU2TestProcedure.all or PDU2TestProcedure.read_temperature:
|
||||||
|
q.add_log_cmd("PDU2: Testing temperature reading")
|
||||||
|
q.add_pus_tc(
|
||||||
|
pack_get_param_command(
|
||||||
|
objb,
|
||||||
|
TableIds.HK,
|
||||||
|
PduHkTable.temperature.parameter_address,
|
||||||
|
PduHkTable.temperature.parameter_size,
|
||||||
|
)
|
||||||
|
)
|
||||||
|
if PDU2TestProcedure.all or PDU2TestProcedure.read_channel_2_state:
|
||||||
|
q.add_log_cmd("PDU2: Reading output channel 2 state (TCS Heater)")
|
||||||
|
q.add_pus_tc(
|
||||||
|
pack_get_param_command(
|
||||||
|
objb,
|
||||||
|
TableIds.CONFIG,
|
||||||
|
PduConfigTable.out_en_2.parameter_address,
|
||||||
|
PduConfigTable.out_en_2.parameter_size,
|
||||||
|
)
|
||||||
|
)
|
||||||
|
if PDU2TestProcedure.all or PDU2TestProcedure.read_cur_lu_lim_0:
|
||||||
|
q.add_log_cmd("PDU2: Reading current limit value of output channel 0 (OBC)")
|
||||||
|
q.add_pus_tc(
|
||||||
|
pack_get_param_command(
|
||||||
|
objb,
|
||||||
|
TableIds.CONFIG,
|
||||||
|
PduConfigTable.cur_lu_lim_0.parameter_address,
|
||||||
|
PduConfigTable.cur_lu_lim_0.parameter_size,
|
||||||
|
)
|
||||||
|
)
|
||||||
|
if PDU2TestProcedure.all or PDU2TestProcedure.request_hk_table:
|
||||||
|
q.add_log_cmd("PDU2: Requesting housekeeping table")
|
||||||
|
q.add_pus_tc(pack_request_full_hk_table_command(object_id))
|
||||||
|
|
||||||
|
|
||||||
|
def pdu2_cmds(q: DefaultPusQueueHelper, op_code: str):
|
||||||
|
if op_code in PowerOpCodes.PL_PCDU_VBAT_NOM_ON:
|
||||||
|
pl_pcdu_bat_nom_on_cmd(q)
|
||||||
|
elif op_code in PowerOpCodes.PL_PCDU_VBAT_NOM_OFF:
|
||||||
|
pl_pcdu_bat_nom_off_cmd(q)
|
||||||
|
elif op_code in PowerOpCodes.RW_ON:
|
||||||
|
reaction_wheel_on_cmd(q)
|
||||||
|
elif op_code in PowerOpCodes.RW_OFF:
|
||||||
|
reaction_wheel_off_cmd(q)
|
||||||
|
elif op_code in PowerOpCodes.HEATER_ON:
|
||||||
|
heater_on_cmd(q)
|
||||||
|
elif op_code in PowerOpCodes.HEATER_OFF:
|
||||||
|
heater_off_cmd(q)
|
||||||
|
elif op_code in PowerOpCodes.SUS_R_ON:
|
||||||
|
sus_red_on_cmd(q)
|
||||||
|
elif op_code in PowerOpCodes.SUS_R_OFF:
|
||||||
|
sus_red_off_cmd(q)
|
||||||
|
elif op_code in PowerOpCodes.SOLAR_ARRAY_DEPL_ON:
|
||||||
|
solar_array_deployment_on_cmd(q)
|
||||||
|
elif op_code in PowerOpCodes.SOLAR_ARRAY_DEPL_OFF:
|
||||||
|
solar_array_deployment_off_cmd(q)
|
||||||
|
elif op_code in PowerOpCodes.PL_PCDU_VBAT_RED_ON:
|
||||||
|
pl_pcdu_bat_red_on_cmd(q)
|
||||||
|
elif op_code in PowerOpCodes.PL_PCDU_VBAT_RED_OFF:
|
||||||
|
pl_pcdu_bat_nom_off_cmd(q)
|
||||||
|
elif op_code in PowerOpCodes.ACS_B_ON:
|
||||||
|
acs_board_b_side_on_cmd(q)
|
||||||
|
elif op_code in PowerOpCodes.ACS_B_OFF:
|
||||||
|
acs_board_b_side_off_cmd(q)
|
||||||
|
elif op_code in PowerOpCodes.PL_CAM_ON:
|
||||||
|
payload_camera_on_cmd(q)
|
||||||
|
elif op_code in PowerOpCodes.PL_CAM_OFF:
|
||||||
|
payload_camera_off_cmd(q)
|
||||||
|
|
||||||
|
|
||||||
|
def info_on_pdu2(base: str) -> str:
|
||||||
|
return "PDU2: " + base + " on"
|
||||||
|
|
||||||
|
|
||||||
|
def info_off_pdu2(base: str) -> str:
|
||||||
|
return "PDU2: " + base + " off"
|
||||||
|
|
||||||
|
|
||||||
|
def add_pdu2_common_defs(oce: OpCodeEntry):
|
||||||
|
oce.add(keys=PowerOpCodes.ACS_B_ON, info=info_on_pdu2(Pdu2InfoBase.ACS_B))
|
||||||
|
oce.add(keys=PowerOpCodes.ACS_B_OFF, info=info_off_pdu2(Pdu2InfoBase.ACS_B))
|
||||||
|
oce.add(keys=PowerOpCodes.SUS_R_ON, info=info_on_pdu2(Pdu2InfoBase.SUS_R))
|
||||||
|
oce.add(keys=PowerOpCodes.SUS_R_OFF, info=info_off_pdu2(Pdu2InfoBase.SUS_R))
|
||||||
|
oce.add(keys=PowerOpCodes.RW_ON, info=info_on_pdu2(Pdu2InfoBase.RW))
|
||||||
|
oce.add(keys=PowerOpCodes.RW_OFF, info=info_off_pdu2(Pdu2InfoBase.RW))
|
||||||
|
oce.add(
|
||||||
|
keys=PowerOpCodes.PL_PCDU_VBAT_NOM_ON,
|
||||||
|
info=info_on_pdu2(Pdu2InfoBase.PL_PCDU_BAT_NOM),
|
||||||
|
)
|
||||||
|
oce.add(
|
||||||
|
keys=PowerOpCodes.PL_PCDU_VBAT_NOM_OFF,
|
||||||
|
info=info_off_pdu2(Pdu2InfoBase.PL_PCDU_BAT_NOM),
|
||||||
|
)
|
||||||
|
oce.add(
|
||||||
|
keys=PowerOpCodes.PL_PCDU_VBAT_RED_ON,
|
||||||
|
info=info_on_pdu2(Pdu2InfoBase.PL_PCDU_BAT_RED),
|
||||||
|
)
|
||||||
|
oce.add(
|
||||||
|
keys=PowerOpCodes.PL_PCDU_VBAT_RED_OFF,
|
||||||
|
info=info_off_pdu2(Pdu2InfoBase.PL_PCDU_BAT_RED),
|
||||||
|
)
|
||||||
|
oce.add(keys=PowerOpCodes.HEATER_ON, info=info_on_pdu2(Pdu2InfoBase.HEATER))
|
||||||
|
oce.add(keys=PowerOpCodes.HEATER_OFF, info=info_off_pdu2(Pdu2InfoBase.HEATER))
|
||||||
|
oce.add(
|
||||||
|
keys=PowerOpCodes.SOLAR_ARRAY_DEPL_ON,
|
||||||
|
info=info_on_pdu2(Pdu2InfoBase.SOLAR_ARRAY_DEPL),
|
||||||
|
)
|
||||||
|
oce.add(
|
||||||
|
keys=PowerOpCodes.SOLAR_ARRAY_DEPL_OFF,
|
||||||
|
info=info_off_pdu2(Pdu2InfoBase.SOLAR_ARRAY_DEPL),
|
||||||
|
)
|
||||||
|
oce.add(keys=PowerOpCodes.PL_CAM_ON, info=info_on_pdu2(Pdu2InfoBase.PL_CAM))
|
||||||
|
oce.add(keys=PowerOpCodes.PL_CAM_OFF, info=info_off_pdu2(Pdu2InfoBase.PL_CAM))
|
||||||
|
|
||||||
|
|
||||||
|
def pdu2_req_hk_cmds(q: DefaultPusQueueHelper, op_code: str):
|
||||||
|
req_hk_cmds(
|
||||||
|
"PDU2", q, op_code, PDU_2_HANDLER_ID, [SetIds.PDU_2_CORE, SetIds.PDU_2_AUX]
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def pl_pcdu_bat_nom_on_cmd(q: DefaultPusQueueHelper):
|
||||||
|
generic_on_cmd(
|
||||||
|
PDU_2_HANDLER_ID, q, Pdu2InfoBase.PL_PCDU_BAT_NOM, Pdu2ChIndex.PL_PCDU_BAT_NOM
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def pl_pcdu_bat_nom_off_cmd(q: DefaultPusQueueHelper):
|
||||||
|
generic_off_cmd(
|
||||||
|
PDU_2_HANDLER_ID, q, Pdu2InfoBase.PL_PCDU_BAT_NOM, Pdu2ChIndex.PL_PCDU_BAT_NOM
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def reaction_wheel_on_cmd(q: DefaultPusQueueHelper):
|
||||||
|
generic_on_cmd(PDU_2_HANDLER_ID, q, Pdu2InfoBase.RW, Pdu2ChIndex.RW)
|
||||||
|
|
||||||
|
|
||||||
|
def reaction_wheel_off_cmd(q: DefaultPusQueueHelper):
|
||||||
|
generic_off_cmd(PDU_2_HANDLER_ID, q, Pdu2InfoBase.RW, Pdu2ChIndex.RW)
|
||||||
|
|
||||||
|
|
||||||
|
def heater_on_cmd(q: DefaultPusQueueHelper):
|
||||||
|
generic_on_cmd(PDU_2_HANDLER_ID, q, Pdu2InfoBase.HEATER, Pdu2ChIndex.HEATER)
|
||||||
|
|
||||||
|
|
||||||
|
def heater_off_cmd(q: DefaultPusQueueHelper):
|
||||||
|
generic_off_cmd(PDU_2_HANDLER_ID, q, Pdu2InfoBase.HEATER, Pdu2ChIndex.HEATER)
|
||||||
|
|
||||||
|
|
||||||
|
def sus_red_on_cmd(q: DefaultPusQueueHelper):
|
||||||
|
generic_on_cmd(PDU_2_HANDLER_ID, q, Pdu2InfoBase.SUS_R, Pdu2ChIndex.SUS_R)
|
||||||
|
|
||||||
|
|
||||||
|
def sus_red_off_cmd(q: DefaultPusQueueHelper):
|
||||||
|
generic_off_cmd(PDU_2_HANDLER_ID, q, Pdu2InfoBase.SUS_R, Pdu2ChIndex.SUS_R)
|
||||||
|
|
||||||
|
|
||||||
|
def solar_array_deployment_on_cmd(q: DefaultPusQueueHelper):
|
||||||
|
generic_on_cmd(
|
||||||
|
PDU_2_HANDLER_ID, q, Pdu2InfoBase.SOLAR_ARRAY_DEPL, Pdu2ChIndex.SOLAR_ARRAY_DEPL
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def solar_array_deployment_off_cmd(q: DefaultPusQueueHelper):
|
||||||
|
generic_off_cmd(
|
||||||
|
PDU_2_HANDLER_ID, q, Pdu2InfoBase.SOLAR_ARRAY_DEPL, Pdu2ChIndex.SOLAR_ARRAY_DEPL
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def pl_pcdu_bat_red_on_cmd(q: DefaultPusQueueHelper):
|
||||||
|
generic_on_cmd(
|
||||||
|
PDU_2_HANDLER_ID, q, Pdu2InfoBase.PL_PCDU_BAT_RED, Pdu2ChIndex.PL_PCDU_BAT_RED
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def pl_pcdu_bat_red_off_cmd(q: DefaultPusQueueHelper):
|
||||||
|
generic_off_cmd(
|
||||||
|
PDU_2_HANDLER_ID, q, Pdu2InfoBase.PL_PCDU_BAT_RED, Pdu2ChIndex.PL_PCDU_BAT_RED
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def acs_board_b_side_on_cmd(q: DefaultPusQueueHelper):
|
||||||
|
generic_on_cmd(PDU_2_HANDLER_ID, q, Pdu2InfoBase.ACS_B, Pdu2ChIndex.ACS_B)
|
||||||
|
|
||||||
|
|
||||||
|
def acs_board_b_side_off_cmd(q: DefaultPusQueueHelper):
|
||||||
|
generic_off_cmd(PDU_2_HANDLER_ID, q, Pdu2InfoBase.ACS_B, Pdu2ChIndex.ACS_B)
|
||||||
|
|
||||||
|
|
||||||
|
def payload_camera_on_cmd(q: DefaultPusQueueHelper):
|
||||||
|
generic_on_cmd(PDU_2_HANDLER_ID, q, Pdu2InfoBase.PL_CAM, Pdu2ChIndex.PL_CAM)
|
||||||
|
|
||||||
|
|
||||||
|
def payload_camera_off_cmd(q: DefaultPusQueueHelper):
|
||||||
|
generic_off_cmd(PDU_2_HANDLER_ID, q, Pdu2InfoBase.PL_CAM, Pdu2ChIndex.PL_CAM)
|
140
tmtc/power/power.py
Normal file
140
tmtc/power/power.py
Normal file
@ -0,0 +1,140 @@
|
|||||||
|
from gomspace.gomspace_common import GsInfo, GomspaceOpCodes
|
||||||
|
from tmtc.power.common_power import (
|
||||||
|
PowerOpCodes,
|
||||||
|
PowerInfo,
|
||||||
|
add_gomspace_cmd_defs,
|
||||||
|
pack_reset_gnd_wdt_cmd,
|
||||||
|
)
|
||||||
|
from config.definitions import CustomServiceList
|
||||||
|
from config.object_ids import (
|
||||||
|
P60_DOCK_HANDLER,
|
||||||
|
ACU_HANDLER_ID,
|
||||||
|
PDU_1_HANDLER_ID,
|
||||||
|
PDU_2_HANDLER_ID,
|
||||||
|
get_object_ids,
|
||||||
|
)
|
||||||
|
from tmtc.power.pdu1 import pdu1_req_hk_cmds, pdu1_cmds, add_pdu1_common_defs
|
||||||
|
from tmtc.power.pdu2 import pdu2_req_hk_cmds, add_pdu2_common_defs, pdu2_cmds
|
||||||
|
from tmtccmd import get_console_logger
|
||||||
|
from tmtccmd.config import TmtcDefinitionWrapper, OpCodeEntry
|
||||||
|
|
||||||
|
from tmtc.power.p60dock import P60OpCodes, P60Info, p60_dock_req_hk_cmds
|
||||||
|
from tmtc.power.acu import add_acu_cmds, acu_req_hk_cmds
|
||||||
|
from tmtccmd.config.tmtc import tmtc_definitions_provider
|
||||||
|
from tmtccmd.tc import DefaultPusQueueHelper
|
||||||
|
|
||||||
|
|
||||||
|
LOGGER = get_console_logger()
|
||||||
|
|
||||||
|
|
||||||
|
def pack_power_commands(q: DefaultPusQueueHelper, op_code: str):
|
||||||
|
pdu1_cmds(q, op_code)
|
||||||
|
pdu2_cmds(q, op_code)
|
||||||
|
if op_code in PowerOpCodes.INFO_CORE:
|
||||||
|
pdu1_req_hk_cmds(q, GomspaceOpCodes.REQUEST_CORE_HK_ONCE[0])
|
||||||
|
pdu2_req_hk_cmds(q, GomspaceOpCodes.REQUEST_CORE_HK_ONCE[0])
|
||||||
|
p60_dock_req_hk_cmds(q, GomspaceOpCodes.REQUEST_CORE_HK_ONCE[0])
|
||||||
|
acu_req_hk_cmds(q, GomspaceOpCodes.REQUEST_CORE_HK_ONCE[0])
|
||||||
|
q.add_wait_seconds(8.0)
|
||||||
|
elif op_code in PowerOpCodes.INFO_AUX:
|
||||||
|
pdu1_req_hk_cmds(q, GomspaceOpCodes.REQUEST_AUX_HK_ONCE[0])
|
||||||
|
pdu2_req_hk_cmds(q, GomspaceOpCodes.REQUEST_AUX_HK_ONCE[0])
|
||||||
|
p60_dock_req_hk_cmds(q, GomspaceOpCodes.REQUEST_AUX_HK_ONCE[0])
|
||||||
|
acu_req_hk_cmds(q, GomspaceOpCodes.REQUEST_AUX_HK_ONCE[0])
|
||||||
|
q.add_wait_seconds(8.0)
|
||||||
|
elif op_code in PowerOpCodes.INFO_ALL:
|
||||||
|
pdu1_req_hk_cmds(q, GomspaceOpCodes.REQUEST_CORE_HK_ONCE[0])
|
||||||
|
pdu2_req_hk_cmds(q, GomspaceOpCodes.REQUEST_CORE_HK_ONCE[0])
|
||||||
|
pdu1_req_hk_cmds(q, GomspaceOpCodes.REQUEST_AUX_HK_ONCE[0])
|
||||||
|
pdu2_req_hk_cmds(q, GomspaceOpCodes.REQUEST_AUX_HK_ONCE[0])
|
||||||
|
p60_dock_req_hk_cmds(q, GomspaceOpCodes.REQUEST_CORE_HK_ONCE[0])
|
||||||
|
p60_dock_req_hk_cmds(q, GomspaceOpCodes.REQUEST_AUX_HK_ONCE[0])
|
||||||
|
acu_req_hk_cmds(q, GomspaceOpCodes.REQUEST_CORE_HK_ONCE[0])
|
||||||
|
acu_req_hk_cmds(q, GomspaceOpCodes.REQUEST_AUX_HK_ONCE[0])
|
||||||
|
q.add_wait_seconds(8.0)
|
||||||
|
elif op_code in PowerOpCodes.RESET_ALL_GND_WDTS:
|
||||||
|
oids = get_object_ids()
|
||||||
|
pack_reset_gnd_wdt_cmd(q, "P60 Dock", oids[P60_DOCK_HANDLER])
|
||||||
|
pack_reset_gnd_wdt_cmd(q, "ACU", oids[ACU_HANDLER_ID])
|
||||||
|
pack_reset_gnd_wdt_cmd(q, "PDU1", oids[PDU_1_HANDLER_ID])
|
||||||
|
pack_reset_gnd_wdt_cmd(q, "PDU2", oids[PDU_2_HANDLER_ID])
|
||||||
|
q.add_wait_seconds(5.0)
|
||||||
|
if q.empty():
|
||||||
|
LOGGER.info(f"Queue is empty, no stack for op code {op_code}")
|
||||||
|
|
||||||
|
|
||||||
|
@tmtc_definitions_provider
|
||||||
|
def add_p60_cmds(defs: TmtcDefinitionWrapper):
|
||||||
|
oce = OpCodeEntry()
|
||||||
|
oce.add(keys=P60OpCodes.STACK_3V3_ON, info=P60Info.STACK_3V3_ON)
|
||||||
|
oce.add(keys=P60OpCodes.STACK_3V3_OFF, info=P60Info.STACK_3V3_OFF)
|
||||||
|
oce.add(keys=P60OpCodes.STACK_5V_ON, info=P60Info.STACK_5V_ON)
|
||||||
|
oce.add(keys=P60OpCodes.STACK_5V_OFF, info=P60Info.STACK_5V_OFF)
|
||||||
|
add_gomspace_cmd_defs(oce)
|
||||||
|
oce.add(keys=P60OpCodes.TEST, info="P60 Tests")
|
||||||
|
defs.add_service(
|
||||||
|
name=CustomServiceList.P60DOCK.value, info="P60 Device", op_code_entry=oce
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@tmtc_definitions_provider
|
||||||
|
def add_power_cmd_defs(defs: TmtcDefinitionWrapper):
|
||||||
|
oce = OpCodeEntry()
|
||||||
|
add_pdu1_common_defs(oce)
|
||||||
|
add_pdu2_common_defs(oce)
|
||||||
|
oce.add(keys=PowerOpCodes.INFO_ALL, info=PowerInfo.INFO_ALL)
|
||||||
|
oce.add(keys=PowerOpCodes.INFO_CORE, info=PowerInfo.INFO_CORE)
|
||||||
|
oce.add(keys=PowerOpCodes.INFO_AUX, info=PowerInfo.INFO_AUX)
|
||||||
|
oce.add(keys=PowerOpCodes.RESET_ALL_GND_WDTS, info=PowerInfo.RESET_ALL_GND_WDTS)
|
||||||
|
defs.add_service(
|
||||||
|
name=CustomServiceList.POWER.value,
|
||||||
|
info="Power Subsystem",
|
||||||
|
op_code_entry=oce,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@tmtc_definitions_provider
|
||||||
|
def add_pdu1_cmds(defs: TmtcDefinitionWrapper):
|
||||||
|
oce = OpCodeEntry()
|
||||||
|
add_pdu1_common_defs(oce)
|
||||||
|
add_gomspace_cmd_defs(oce)
|
||||||
|
oce.add(keys=GomspaceOpCodes.REQUEST_CORE_HK_ONCE, info=GsInfo.REQUEST_CORE_HK_ONCE)
|
||||||
|
oce.add(keys=GomspaceOpCodes.REQUEST_AUX_HK_ONCE, info=GsInfo.REQUEST_AUX_HK_ONCE)
|
||||||
|
oce.add(
|
||||||
|
keys=GomspaceOpCodes.PRINT_SWITCH_V_I,
|
||||||
|
info="PDU1: Print Switches, Voltages, Currents",
|
||||||
|
)
|
||||||
|
oce.add(keys=GomspaceOpCodes.GET_PARAM, info=GsInfo.GET_PARAMETER)
|
||||||
|
|
||||||
|
defs.add_service(
|
||||||
|
name=CustomServiceList.PDU1.value,
|
||||||
|
info="PDU1 Device",
|
||||||
|
op_code_entry=oce,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@tmtc_definitions_provider
|
||||||
|
def add_pdu2_cmds(defs: TmtcDefinitionWrapper):
|
||||||
|
oce = OpCodeEntry()
|
||||||
|
add_pdu2_common_defs(oce)
|
||||||
|
add_gomspace_cmd_defs(oce)
|
||||||
|
oce.add(
|
||||||
|
keys=GomspaceOpCodes.PRINT_SWITCH_V_I,
|
||||||
|
info="PDU2: Print Switches, Voltages, Currents",
|
||||||
|
)
|
||||||
|
oce.add(
|
||||||
|
keys=GomspaceOpCodes.PRINT_LATCHUPS,
|
||||||
|
info="PDU2: Print Latchups",
|
||||||
|
)
|
||||||
|
defs.add_service(
|
||||||
|
name="pdu2",
|
||||||
|
info="PDU2 Device",
|
||||||
|
op_code_entry=oce,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def add_pcdu_cmds(defs: TmtcDefinitionWrapper):
|
||||||
|
add_p60_cmds(defs)
|
||||||
|
add_pdu1_cmds(defs)
|
||||||
|
add_pdu2_cmds(defs)
|
||||||
|
add_acu_cmds(defs)
|
@ -1,9 +1,16 @@
|
|||||||
import struct
|
import struct
|
||||||
from typing import List, Tuple
|
from typing import List, Tuple
|
||||||
|
|
||||||
|
from tmtccmd.util import ObjectIdBase
|
||||||
from tmtccmd.util.tmtc_printer import FsfwTmTcPrinter
|
from tmtccmd.util.tmtc_printer import FsfwTmTcPrinter
|
||||||
from pus_tm.defs import PrintWrapper
|
from pus_tm.defs import PrintWrapper
|
||||||
from gomspace.gomspace_common import SetIds
|
from gomspace.gomspace_common import SetIds, GomspaceDeviceActionIds
|
||||||
|
from config.object_ids import (
|
||||||
|
PDU_1_HANDLER_ID,
|
||||||
|
PDU_2_HANDLER_ID,
|
||||||
|
P60_DOCK_HANDLER,
|
||||||
|
ACU_HANDLER_ID,
|
||||||
|
)
|
||||||
|
|
||||||
P60_INDEX_LIST = [
|
P60_INDEX_LIST = [
|
||||||
"ACU VCC",
|
"ACU VCC",
|
||||||
@ -244,7 +251,7 @@ def handle_p60_hk_data(printer: FsfwTmTcPrinter, set_id: int, hk_data: bytes):
|
|||||||
f"{voltage_list[idx]:05} | {current_list[idx]:04}"
|
f"{voltage_list[idx]:05} | {current_list[idx]:04}"
|
||||||
)
|
)
|
||||||
pw.dlog(content_line)
|
pw.dlog(content_line)
|
||||||
fmt_str = "!IBhHhh"
|
fmt_str = "!IBhHff"
|
||||||
inc_len = struct.calcsize(fmt_str)
|
inc_len = struct.calcsize(fmt_str)
|
||||||
(
|
(
|
||||||
boot_count,
|
boot_count,
|
||||||
@ -259,7 +266,7 @@ def handle_p60_hk_data(printer: FsfwTmTcPrinter, set_id: int, hk_data: bytes):
|
|||||||
f"Batt: Mode {batt_mode} | Boot Count {boot_count} | "
|
f"Batt: Mode {batt_mode} | Boot Count {boot_count} | "
|
||||||
f"Charge current {batt_current} | Voltage {batt_voltage}"
|
f"Charge current {batt_current} | Voltage {batt_voltage}"
|
||||||
)
|
)
|
||||||
temps = f"In C: Temp 0 {temp_0 / 10.0} | Temp 1 {temp_1 / 10.0} | "
|
temps = f"In C: Temp 0 {temp_0} | Temp 1 {temp_1} | "
|
||||||
pw.dlog(temps)
|
pw.dlog(temps)
|
||||||
pw.dlog(batt_info)
|
pw.dlog(batt_info)
|
||||||
printer.print_validity_buffer(validity_buffer=hk_data[current_idx:], num_vars=9)
|
printer.print_validity_buffer(validity_buffer=hk_data[current_idx:], num_vars=9)
|
||||||
@ -361,7 +368,7 @@ def handle_acu_hk_data(printer: FsfwTmTcPrinter, set_id: int, hk_data: bytes):
|
|||||||
current_idx, powers = gen_six_entry_u16_list(
|
current_idx, powers = gen_six_entry_u16_list(
|
||||||
hk_data=hk_data, current_idx=current_idx
|
hk_data=hk_data, current_idx=current_idx
|
||||||
)
|
)
|
||||||
fmt_str = "!HHHIIHH"
|
fmt_str = "!fffIIHH"
|
||||||
inc_len = struct.calcsize(fmt_str)
|
inc_len = struct.calcsize(fmt_str)
|
||||||
(tmp0, tmp1, tmp2, bootcnt, uptime, mppt_time, mppt_period) = struct.unpack(
|
(tmp0, tmp1, tmp2, bootcnt, uptime, mppt_time, mppt_period) = struct.unpack(
|
||||||
fmt_str, hk_data[current_idx : current_idx + inc_len]
|
fmt_str, hk_data[current_idx : current_idx + inc_len]
|
||||||
@ -378,9 +385,7 @@ def handle_acu_hk_data(printer: FsfwTmTcPrinter, set_id: int, hk_data: bytes):
|
|||||||
f"{i} | {str(voltages[i]).ljust(4)} | {str(currents[i]).ljust(4)} | "
|
f"{i} | {str(voltages[i]).ljust(4)} | {str(currents[i]).ljust(4)} | "
|
||||||
f"{str(vboosts[i]).ljust(4)} | {str(powers[i]).ljust(2)}"
|
f"{str(vboosts[i]).ljust(4)} | {str(powers[i]).ljust(2)}"
|
||||||
)
|
)
|
||||||
pw.dlog(
|
pw.dlog(f"Temperatures in C: Ch0 {tmp0} | Ch1 {tmp1} | Ch2 {tmp2}")
|
||||||
f"Temperatures in C: Ch0 {tmp0/10.0} | Ch1 {tmp1/10.0} | Ch2 {tmp2/10.0}"
|
|
||||||
)
|
|
||||||
pw.dlog(
|
pw.dlog(
|
||||||
f"Boot Count {bootcnt} | Uptime {uptime} sec | "
|
f"Boot Count {bootcnt} | Uptime {uptime} sec | "
|
||||||
f"MPPT Time {mppt_time} msec | MPPT Period {mppt_period} msec"
|
f"MPPT Time {mppt_time} msec | MPPT Period {mppt_period} msec"
|
||||||
@ -423,3 +428,157 @@ def handle_acu_hk_data(printer: FsfwTmTcPrinter, set_id: int, hk_data: bytes):
|
|||||||
)
|
)
|
||||||
dev_parser.print(pw=pw)
|
dev_parser.print(pw=pw)
|
||||||
printer.print_validity_buffer(validity_buffer=hk_data[current_idx:], num_vars=8)
|
printer.print_validity_buffer(validity_buffer=hk_data[current_idx:], num_vars=8)
|
||||||
|
|
||||||
|
|
||||||
|
OBC_ENDIANNESS = "<"
|
||||||
|
|
||||||
|
|
||||||
|
def handle_get_param_data_reply(
|
||||||
|
obj_id: ObjectIdBase, action_id: int, pw: PrintWrapper, custom_data: bytearray
|
||||||
|
):
|
||||||
|
if action_id == GomspaceDeviceActionIds.PARAM_GET:
|
||||||
|
pw.dlog(f"Parameter Get Request received for object {obj_id}")
|
||||||
|
header_list = [
|
||||||
|
"Gomspace Request Code",
|
||||||
|
"Table ID",
|
||||||
|
"Memory Address",
|
||||||
|
"Payload length",
|
||||||
|
"Payload",
|
||||||
|
]
|
||||||
|
fmt_str = "!BBHH"
|
||||||
|
(gs_request_code, table_id, address, payload_length) = struct.unpack(
|
||||||
|
fmt_str, custom_data[:6]
|
||||||
|
)
|
||||||
|
content_list = [
|
||||||
|
hex(gs_request_code),
|
||||||
|
table_id,
|
||||||
|
hex(address),
|
||||||
|
payload_length,
|
||||||
|
f"0x[{custom_data[6:].hex(sep=',')}]",
|
||||||
|
]
|
||||||
|
pw.dlog(f"{header_list}")
|
||||||
|
pw.dlog(f"{content_list}")
|
||||||
|
elif action_id == GomspaceDeviceActionIds.REQUEST_CONFIG_TABLE:
|
||||||
|
print(f"Received config table with size {len(custom_data)} for object {obj_id}")
|
||||||
|
if obj_id.as_bytes == PDU_1_HANDLER_ID or obj_id.as_bytes == PDU_2_HANDLER_ID:
|
||||||
|
pdu_config_table_handler(pw, custom_data, obj_id)
|
||||||
|
elif obj_id.as_bytes == ACU_HANDLER_ID:
|
||||||
|
acu_config_table_handler(pw, custom_data)
|
||||||
|
elif obj_id.as_bytes == P60_DOCK_HANDLER:
|
||||||
|
p60_dock_config_table_handler(pw, custom_data)
|
||||||
|
|
||||||
|
|
||||||
|
def pdu_config_table_handler(
|
||||||
|
pw: PrintWrapper, custom_data: bytes, obj_id: ObjectIdBase
|
||||||
|
):
|
||||||
|
if obj_id.as_bytes == PDU_1_HANDLER_ID:
|
||||||
|
pw.dlog("[tcs, syrlinks, str, mgt, sus-n, scex, ploc, acs-a, unused]")
|
||||||
|
elif obj_id.as_bytes == PDU_2_HANDLER_ID:
|
||||||
|
pw.dlog(
|
||||||
|
"[obc, pl-pcdu-bat-nom, rw, heaters, sus-r, sa-depl, pl-pcdu-bat-red, acs-b, pl-cam]"
|
||||||
|
)
|
||||||
|
out_on_cnt = unpack_array_in_data(custom_data, 0x52, 2, 9, "H")
|
||||||
|
out_off_cnt = unpack_array_in_data(custom_data, 0x64, 2, 9, "H")
|
||||||
|
init_out_norm = unpack_array_in_data(custom_data, 0x76, 1, 9, "B")
|
||||||
|
init_out_safe = unpack_array_in_data(custom_data, 0x80, 1, 9, "B")
|
||||||
|
init_on_dly = unpack_array_in_data(custom_data, 0x8A, 2, 9, "H")
|
||||||
|
init_off_dly = unpack_array_in_data(custom_data, 0x9C, 2, 9, "H")
|
||||||
|
safe_off_dly = unpack_array_in_data(custom_data, 0xAE, 1, 9, "B")
|
||||||
|
cur_lu_lim = unpack_array_in_data(custom_data, 0xB8, 2, 9, "H")
|
||||||
|
cur_lim = unpack_array_in_data(custom_data, 0xCA, 2, 9, "H")
|
||||||
|
cur_ema = unpack_array_in_data(custom_data, 0xDC, 2, 9, "H")
|
||||||
|
wdt_can_rst = custom_data[0x127]
|
||||||
|
wdt_can = struct.unpack(f"{OBC_ENDIANNESS}I", custom_data[0x12C : 0x12C + 4])[0]
|
||||||
|
batt_hwmax = struct.unpack(f"{OBC_ENDIANNESS}H", custom_data[0x11C : 0x11C + 2])[0]
|
||||||
|
batt_max = struct.unpack(f"{OBC_ENDIANNESS}H", custom_data[0x11E : 0x11E + 2])[0]
|
||||||
|
batt_norm = struct.unpack(f"{OBC_ENDIANNESS}H", custom_data[0x120 : 0x120 + 2])[0]
|
||||||
|
batt_safe = struct.unpack(f"{OBC_ENDIANNESS}H", custom_data[0x122 : 0x122 + 2])[0]
|
||||||
|
batt_crit = struct.unpack(f"{OBC_ENDIANNESS}H", custom_data[0x124 : 0x124 + 2])[0]
|
||||||
|
pw.dlog(f"{'out_on_cnt'.ljust(15)}: {out_on_cnt}")
|
||||||
|
pw.dlog(f"{'out_off_cnt'.ljust(15)}: {out_off_cnt}")
|
||||||
|
pw.dlog(f"{'init_out_norm'.ljust(15)}: {init_out_norm}")
|
||||||
|
pw.dlog(f"{'init_out_safe'.ljust(15)}: {init_out_safe}")
|
||||||
|
pw.dlog(f"{'init_on_dly'.ljust(15)}: {init_on_dly}")
|
||||||
|
pw.dlog(f"{'init_off_dly'.ljust(15)}: {init_off_dly}")
|
||||||
|
pw.dlog(f"{'safe_off_dly'.ljust(15)}: {safe_off_dly}")
|
||||||
|
pw.dlog(f"{'cur_lu_lim'.ljust(15)}: {cur_lu_lim}")
|
||||||
|
pw.dlog(f"{'cur_lim'.ljust(15)}: {cur_lim}")
|
||||||
|
pw.dlog(f"{'cur_ema'.ljust(15)}: {cur_ema}")
|
||||||
|
pw.dlog(f"{'batt_hwmax'.ljust(15)}: {batt_hwmax}")
|
||||||
|
pw.dlog(f"{'batt_max'.ljust(15)}: {batt_max}")
|
||||||
|
pw.dlog(f"{'batt_norm'.ljust(15)}: {batt_norm}")
|
||||||
|
pw.dlog(f"{'batt_safe'.ljust(15)}: {batt_safe}")
|
||||||
|
pw.dlog(f"{'batt_crit'.ljust(15)}: {batt_crit}")
|
||||||
|
pw.dlog(f"{'wdt_can_rst'.ljust(15)}: {wdt_can_rst}")
|
||||||
|
pw.dlog(f"{'wdt_can'.ljust(15)}: {wdt_can}")
|
||||||
|
|
||||||
|
|
||||||
|
def acu_config_table_handler(pw: PrintWrapper, custom_data: bytes):
|
||||||
|
mppt_mode = custom_data[0]
|
||||||
|
mppt_delta_mode = custom_data[1]
|
||||||
|
vboost_list = unpack_array_in_data(custom_data, 0x02, 2, 6, "H")
|
||||||
|
vbat_max_hi = struct.unpack(f"{OBC_ENDIANNESS}H", custom_data[0x10 : 0x10 + 2])[0]
|
||||||
|
vbat_max_lo = struct.unpack(f"{OBC_ENDIANNESS}H", custom_data[0x12 : 0x12 + 2])[0]
|
||||||
|
mppt_period = struct.unpack(f"{OBC_ENDIANNESS}I", custom_data[0x14 : 0x14 + 4])[0]
|
||||||
|
max_dv = struct.unpack(f"{OBC_ENDIANNESS}H", custom_data[0x18 : 0x18 + 2])[0]
|
||||||
|
ov_mode = custom_data[0x1A]
|
||||||
|
pw.dlog(f"{'mppt_mode'.ljust(15)}: {mppt_mode}")
|
||||||
|
pw.dlog(f"{'mppt_delta_mode'.ljust(15)}: {mppt_delta_mode}")
|
||||||
|
pw.dlog(f"{'vboost_list'.ljust(15)}: {vboost_list}")
|
||||||
|
pw.dlog(f"{'vbat_max_hi'.ljust(15)}: {vbat_max_hi}")
|
||||||
|
pw.dlog(f"{'vbat_max_lo'.ljust(15)}: {vbat_max_lo}")
|
||||||
|
pw.dlog(f"{'mppt_period'.ljust(15)}: {mppt_period}")
|
||||||
|
pw.dlog(f"{'max_dv'.ljust(15)}: {max_dv}")
|
||||||
|
pw.dlog(f"{'ov_mode'.ljust(15)}: {ov_mode}")
|
||||||
|
|
||||||
|
|
||||||
|
def p60_dock_config_table_handler(pw: PrintWrapper, custom_data: bytes):
|
||||||
|
ch_names = parse_name_list(custom_data[0:0x68], 13)
|
||||||
|
out_on_cnt = unpack_array_in_data(custom_data, 0x76, 2, 13, "H")
|
||||||
|
out_off_cnt = unpack_array_in_data(custom_data, 0x90, 2, 13, "H")
|
||||||
|
init_out_norm = unpack_array_in_data(custom_data, 0xAA, 1, 13, "B")
|
||||||
|
init_out_safe = unpack_array_in_data(custom_data, 0xB7, 1, 13, "B")
|
||||||
|
init_on_dly = unpack_array_in_data(custom_data, 0xC4, 2, 13, "H")
|
||||||
|
init_off_dly = unpack_array_in_data(custom_data, 0xDE, 2, 13, "H")
|
||||||
|
acu_channel_addrs = unpack_array_in_data(custom_data, 0x180, 1, 2, "B")
|
||||||
|
pdu_channel_addrs = unpack_array_in_data(custom_data, 0x186, 1, 4, "B")
|
||||||
|
pw.dlog(f"Ch Names: {ch_names}")
|
||||||
|
pw.dlog(f"{'out_on_cnt'.ljust(15)}: {out_on_cnt}")
|
||||||
|
pw.dlog(f"{'out_off_cnt'.ljust(15)}: {out_off_cnt}")
|
||||||
|
pw.dlog(f"{'init_out_norm'.ljust(15)}: {init_out_norm}")
|
||||||
|
pw.dlog(f"{'init_out_safe'.ljust(15)}: {init_out_safe}")
|
||||||
|
pw.dlog(f"{'init_on_dly'.ljust(15)}: {init_on_dly}")
|
||||||
|
pw.dlog(f"{'init_off_dly'.ljust(15)}: {init_off_dly}")
|
||||||
|
pw.dlog(f"{'p60acu_addr'.ljust(15)}: {acu_channel_addrs}")
|
||||||
|
pw.dlog(f"{'p60pdu_addr'.ljust(15)}: {pdu_channel_addrs}")
|
||||||
|
|
||||||
|
|
||||||
|
def parse_name_list(data: bytes, name_len: int):
|
||||||
|
ch_list = []
|
||||||
|
idx = 0
|
||||||
|
while len(ch_list) < name_len:
|
||||||
|
next_byte = data[idx]
|
||||||
|
if next_byte != 0:
|
||||||
|
string_end_found = False
|
||||||
|
string_end_idx = idx
|
||||||
|
while not string_end_found:
|
||||||
|
string_end_idx += 1
|
||||||
|
if data[string_end_idx] == 0:
|
||||||
|
string_end_found = True
|
||||||
|
name = data[idx:string_end_idx].decode()
|
||||||
|
ch_list.append(name)
|
||||||
|
idx += len(name)
|
||||||
|
idx += 1
|
||||||
|
return ch_list
|
||||||
|
|
||||||
|
|
||||||
|
def unpack_array_in_data(
|
||||||
|
data: bytes, start_addr: int, width: int, entries: int, struct_spec: str
|
||||||
|
) -> List:
|
||||||
|
return [
|
||||||
|
struct.unpack(
|
||||||
|
f"{OBC_ENDIANNESS}{struct_spec}",
|
||||||
|
data[start_addr + (i * width) : start_addr + ((i + 1) * width)],
|
||||||
|
)[0]
|
||||||
|
for i in range(entries)
|
||||||
|
]
|
250
tmtcc.py
250
tmtcc.py
@ -3,7 +3,31 @@ import logging
|
|||||||
import sys
|
import sys
|
||||||
import time
|
import time
|
||||||
import traceback
|
import traceback
|
||||||
|
from pathlib import Path
|
||||||
|
from typing import cast
|
||||||
|
|
||||||
|
from spacepackets import SpacePacketHeader, SpacePacket
|
||||||
|
from spacepackets.cfdp import (
|
||||||
|
ConditionCode,
|
||||||
|
ChecksumType,
|
||||||
|
TransmissionMode,
|
||||||
|
PduHolder,
|
||||||
|
DirectiveType,
|
||||||
|
)
|
||||||
|
from tmtccmd.cfdp import CfdpUserBase, TransactionId
|
||||||
|
from tmtccmd.cfdp.defs import CfdpRequestType
|
||||||
|
from tmtccmd.cfdp.handler import CfdpInCcsdsHandler
|
||||||
|
from tmtccmd.cfdp.mib import (
|
||||||
|
DefaultFaultHandlerBase,
|
||||||
|
LocalEntityCfg,
|
||||||
|
IndicationCfg,
|
||||||
|
RemoteEntityCfg,
|
||||||
|
)
|
||||||
|
from tmtccmd.cfdp.user import (
|
||||||
|
TransactionFinishedParams,
|
||||||
|
MetadataRecvParams,
|
||||||
|
FileSegmentRecvdParams,
|
||||||
|
)
|
||||||
from tmtccmd.tc.handler import SendCbParams
|
from tmtccmd.tc.handler import SendCbParams
|
||||||
|
|
||||||
try:
|
try:
|
||||||
@ -41,19 +65,29 @@ from tmtccmd.tm import SpecificApidHandlerBase, GenericApidHandlerBase, CcsdsTmH
|
|||||||
from tmtccmd.core import BackendRequest
|
from tmtccmd.core import BackendRequest
|
||||||
from tmtccmd.logging import get_current_time_string
|
from tmtccmd.logging import get_current_time_string
|
||||||
from tmtccmd.tc import (
|
from tmtccmd.tc import (
|
||||||
ProcedureHelper,
|
ProcedureWrapper,
|
||||||
FeedWrapper,
|
FeedWrapper,
|
||||||
TcProcedureType,
|
TcProcedureType,
|
||||||
TcQueueEntryType,
|
TcQueueEntryType,
|
||||||
DefaultPusQueueHelper,
|
DefaultPusQueueHelper,
|
||||||
)
|
)
|
||||||
from tmtccmd.config import default_json_path, SetupWrapper
|
from tmtccmd.config import (
|
||||||
|
default_json_path,
|
||||||
|
SetupWrapper,
|
||||||
|
params_to_procedure_conversion,
|
||||||
|
)
|
||||||
from tmtccmd.config.args import (
|
from tmtccmd.config.args import (
|
||||||
SetupParams,
|
SetupParams,
|
||||||
ArgParserWrapper,
|
PreArgsParsingWrapper,
|
||||||
|
ProcedureParamsWrapper,
|
||||||
)
|
)
|
||||||
from config import __version__
|
from config import __version__
|
||||||
from config.definitions import PUS_APID
|
from config.definitions import (
|
||||||
|
PUS_APID,
|
||||||
|
CFDP_APID,
|
||||||
|
CFDP_LOCAL_ENTITY_ID,
|
||||||
|
CFDP_REMOTE_ENTITY_ID,
|
||||||
|
)
|
||||||
from config.hook import EiveHookObject
|
from config.hook import EiveHookObject
|
||||||
from pus_tm.factory_hook import pus_factory_hook
|
from pus_tm.factory_hook import pus_factory_hook
|
||||||
from pus_tc.procedure_packer import handle_default_procedure
|
from pus_tc.procedure_packer import handle_default_procedure
|
||||||
@ -66,6 +100,61 @@ ROTATING_TIMED_LOGGER_INTERVAL_WHEN = TimedLogWhen.PER_MINUTE
|
|||||||
ROTATING_TIMED_LOGGER_INTERVAL = 30
|
ROTATING_TIMED_LOGGER_INTERVAL = 30
|
||||||
|
|
||||||
|
|
||||||
|
class EiveCfdpFaultHandler(DefaultFaultHandlerBase):
|
||||||
|
def notice_of_suspension_cb(self, cond: ConditionCode):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def notice_of_cancellation_cb(self, cond: ConditionCode):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def abandoned_cb(self, cond: ConditionCode):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def ignore_cb(self, cond: ConditionCode):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class EiveCfdpUser(CfdpUserBase):
|
||||||
|
def transaction_indication(self, transaction_id: TransactionId):
|
||||||
|
LOGGER.info(f"CFDP User: Start of File {transaction_id}")
|
||||||
|
|
||||||
|
def eof_sent_indication(self, transaction_id: TransactionId):
|
||||||
|
LOGGER.info(f"CFDP User: EOF sent for {transaction_id}")
|
||||||
|
|
||||||
|
def transaction_finished_indication(self, params: TransactionFinishedParams):
|
||||||
|
LOGGER.info(f"CFDP User: {params.transaction_id} finished")
|
||||||
|
|
||||||
|
def metadata_recv_indication(self, params: MetadataRecvParams):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def file_segment_recv_indication(self, params: FileSegmentRecvdParams):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def report_indication(self, transaction_id: TransactionId, status_report: any):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def suspended_indication(
|
||||||
|
self, transaction_id: TransactionId, cond_code: ConditionCode
|
||||||
|
):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def resumed_indication(self, transaction_id: TransactionId, progress: int):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def fault_indication(
|
||||||
|
self, transaction_id: TransactionId, cond_code: ConditionCode, progress: int
|
||||||
|
):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def abandoned_indication(
|
||||||
|
self, transaction_id: TransactionId, cond_code: ConditionCode, progress: int
|
||||||
|
):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def eof_recv_indication(self, transaction_id: TransactionId):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
class PusHandler(SpecificApidHandlerBase):
|
class PusHandler(SpecificApidHandlerBase):
|
||||||
def __init__(
|
def __init__(
|
||||||
self,
|
self,
|
||||||
@ -87,34 +176,52 @@ class UnknownApidHandler(GenericApidHandlerBase):
|
|||||||
LOGGER.warning(f"Packet with unknwon APID {apid} detected")
|
LOGGER.warning(f"Packet with unknwon APID {apid} detected")
|
||||||
|
|
||||||
|
|
||||||
|
class CfdpInCcsdsWrapper(SpecificApidHandlerBase):
|
||||||
|
def __init__(self, cfdp_in_ccsds_handler: CfdpInCcsdsHandler):
|
||||||
|
super().__init__(CFDP_APID, None)
|
||||||
|
self.handler = cfdp_in_ccsds_handler
|
||||||
|
|
||||||
|
def handle_tm(self, packet: bytes, _user_args: any):
|
||||||
|
ccsds_header_raw = packet[0:6]
|
||||||
|
sp_header = SpacePacketHeader.unpack(ccsds_header_raw)
|
||||||
|
pdu = packet[6:]
|
||||||
|
sp = SpacePacket(sp_header, sec_header=None, user_data=pdu)
|
||||||
|
self.handler.pass_packet(sp)
|
||||||
|
|
||||||
|
|
||||||
class TcHandler(TcHandlerBase):
|
class TcHandler(TcHandlerBase):
|
||||||
def __init__(
|
def __init__(
|
||||||
self,
|
self,
|
||||||
seq_count_provider: FileSeqCountProvider,
|
seq_count_provider: FileSeqCountProvider,
|
||||||
|
cfdp_in_ccsds_wrapper: CfdpInCcsdsWrapper,
|
||||||
pus_verificator: PusVerificator,
|
pus_verificator: PusVerificator,
|
||||||
file_logger: logging.Logger,
|
file_logger: logging.Logger,
|
||||||
raw_logger: RawTmtcTimedLogWrapper,
|
raw_logger: RawTmtcTimedLogWrapper,
|
||||||
gui: bool,
|
gui: bool,
|
||||||
):
|
):
|
||||||
super().__init__()
|
super().__init__()
|
||||||
|
self.cfdp_handler_started = False
|
||||||
|
self.cfdp_dest_id = CFDP_REMOTE_ENTITY_ID
|
||||||
self.seq_count_provider = seq_count_provider
|
self.seq_count_provider = seq_count_provider
|
||||||
self.pus_verificator = pus_verificator
|
self.pus_verificator = pus_verificator
|
||||||
self.file_logger = file_logger
|
self.file_logger = file_logger
|
||||||
self.raw_logger = raw_logger
|
self.raw_logger = raw_logger
|
||||||
self.gui = gui
|
self.gui = gui
|
||||||
|
self.cfdp_done = False
|
||||||
self.queue_helper = DefaultPusQueueHelper(
|
self.queue_helper = DefaultPusQueueHelper(
|
||||||
queue_wrapper=None,
|
queue_wrapper=None,
|
||||||
pus_apid=PUS_APID,
|
pus_apid=PUS_APID,
|
||||||
seq_cnt_provider=seq_count_provider,
|
seq_cnt_provider=seq_count_provider,
|
||||||
pus_verificator=pus_verificator,
|
pus_verificator=pus_verificator,
|
||||||
)
|
)
|
||||||
|
self.cfdp_in_ccsds_wrapper = cfdp_in_ccsds_wrapper
|
||||||
|
|
||||||
def feed_cb(self, info: ProcedureHelper, wrapper: FeedWrapper):
|
def feed_cb(self, info: ProcedureWrapper, wrapper: FeedWrapper):
|
||||||
self.queue_helper.queue_wrapper = wrapper.queue_wrapper
|
self.queue_helper.queue_wrapper = wrapper.queue_wrapper
|
||||||
if info.proc_type == TcProcedureType.DEFAULT:
|
if info.proc_type == TcProcedureType.DEFAULT:
|
||||||
handle_default_procedure(
|
handle_default_procedure(self, info.to_def_procedure(), self.queue_helper)
|
||||||
info.to_def_procedure(), self.queue_helper, self.gui
|
elif info.proc_type == TcProcedureType.CFDP:
|
||||||
)
|
self.handle_cfdp_procedure(info)
|
||||||
|
|
||||||
def send_cb(self, send_params: SendCbParams):
|
def send_cb(self, send_params: SendCbParams):
|
||||||
entry_helper = send_params.entry
|
entry_helper = send_params.entry
|
||||||
@ -135,17 +242,63 @@ class TcHandler(TcHandlerBase):
|
|||||||
f"{get_current_time_string(True)}: {tc_info_string}"
|
f"{get_current_time_string(True)}: {tc_info_string}"
|
||||||
)
|
)
|
||||||
send_params.com_if.send(raw_tc)
|
send_params.com_if.send(raw_tc)
|
||||||
|
elif entry_helper.entry_type == TcQueueEntryType.CCSDS_TC:
|
||||||
|
cfdp_packet_in_ccsds = entry_helper.to_space_packet_entry()
|
||||||
|
send_params.com_if.send(cfdp_packet_in_ccsds.space_packet.pack())
|
||||||
elif entry_helper.entry_type == TcQueueEntryType.LOG:
|
elif entry_helper.entry_type == TcQueueEntryType.LOG:
|
||||||
log_entry = entry_helper.to_log_entry()
|
log_entry = entry_helper.to_log_entry()
|
||||||
LOGGER.info(log_entry.log_str)
|
LOGGER.info(log_entry.log_str)
|
||||||
self.file_logger.info(log_entry.log_str)
|
self.file_logger.info(log_entry.log_str)
|
||||||
|
|
||||||
def queue_finished_cb(self, info: ProcedureHelper):
|
def handle_cfdp_procedure(self, info: ProcedureWrapper):
|
||||||
if info is not None and info.proc_type == TcQueueEntryType.PUS_TC:
|
cfdp_procedure = info.to_cfdp_procedure()
|
||||||
def_proc = info.to_def_procedure()
|
if cfdp_procedure.cfdp_request_type == CfdpRequestType.PUT:
|
||||||
LOGGER.info(
|
if (
|
||||||
f"Finished queue for service {def_proc.service} and op code {def_proc.op_code}"
|
not self.cfdp_in_ccsds_wrapper.handler.put_request_pending()
|
||||||
)
|
and not self.cfdp_handler_started
|
||||||
|
):
|
||||||
|
put_req = cfdp_procedure.request_wrapper.to_put_request()
|
||||||
|
put_req.cfg.destination_id = self.cfdp_dest_id
|
||||||
|
LOGGER.info(
|
||||||
|
f"CFDP: Starting file put request with parameters:\n{put_req}"
|
||||||
|
)
|
||||||
|
self.cfdp_in_ccsds_wrapper.handler.cfdp_handler.put_request(put_req)
|
||||||
|
self.cfdp_handler_started = True
|
||||||
|
|
||||||
|
for source_pair, dest_pair in self.cfdp_in_ccsds_wrapper.handler:
|
||||||
|
pdu, sp = source_pair
|
||||||
|
pdu = cast(PduHolder, pdu)
|
||||||
|
if pdu.is_file_directive:
|
||||||
|
if pdu.pdu_directive_type == DirectiveType.METADATA_PDU:
|
||||||
|
metadata = pdu.to_metadata_pdu()
|
||||||
|
self.queue_helper.add_log_cmd(
|
||||||
|
f"CFDP Source: Sending Metadata PDU for file with size "
|
||||||
|
f"{metadata.file_size}"
|
||||||
|
)
|
||||||
|
elif pdu.pdu_directive_type == DirectiveType.EOF_PDU:
|
||||||
|
self.queue_helper.add_log_cmd(
|
||||||
|
f"CFDP Source: Sending EOF PDU"
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
fd_pdu = pdu.to_file_data_pdu()
|
||||||
|
self.queue_helper.add_log_cmd(
|
||||||
|
f"CFDP Source: Sending File Data PDU for segment at offset "
|
||||||
|
f"{fd_pdu.offset} with length {len(fd_pdu.file_data)}"
|
||||||
|
)
|
||||||
|
self.queue_helper.add_ccsds_tc(sp)
|
||||||
|
self.cfdp_in_ccsds_wrapper.handler.confirm_source_packet_sent()
|
||||||
|
self.cfdp_in_ccsds_wrapper.handler.source_handler.state_machine()
|
||||||
|
|
||||||
|
def queue_finished_cb(self, info: ProcedureWrapper):
|
||||||
|
if info is not None:
|
||||||
|
if info.proc_type == TcQueueEntryType.PUS_TC:
|
||||||
|
def_proc = info.to_def_procedure()
|
||||||
|
LOGGER.info(
|
||||||
|
f"Finished queue for service {def_proc.service} and op code {def_proc.op_code}"
|
||||||
|
)
|
||||||
|
elif info.proc_type == TcProcedureType.CFDP:
|
||||||
|
LOGGER.info(f"Finished CFDP queue")
|
||||||
|
self.cfdp_done = True
|
||||||
|
|
||||||
|
|
||||||
def setup_params() -> SetupWrapper:
|
def setup_params() -> SetupWrapper:
|
||||||
@ -153,25 +306,71 @@ def setup_params() -> SetupWrapper:
|
|||||||
print(f"-- spacepackets v{spacepackets.__version__} --")
|
print(f"-- spacepackets v{spacepackets.__version__} --")
|
||||||
hook_obj = EiveHookObject(default_json_path())
|
hook_obj = EiveHookObject(default_json_path())
|
||||||
params = SetupParams()
|
params = SetupParams()
|
||||||
parser_wrapper = ArgParserWrapper(hook_obj)
|
parser_wrapper = PreArgsParsingWrapper()
|
||||||
parser_wrapper.parse()
|
parser_wrapper.create_default_parent_parser()
|
||||||
tmtccmd.init_printout(parser_wrapper.use_gui)
|
parser_wrapper.create_default_parser()
|
||||||
parser_wrapper.set_params(params)
|
parser_wrapper.add_def_proc_and_cfdp_as_subparsers()
|
||||||
|
post_arg_parsing_wrapper = parser_wrapper.parse(hook_obj)
|
||||||
|
tmtccmd.init_printout(post_arg_parsing_wrapper.use_gui)
|
||||||
|
use_prompts = not post_arg_parsing_wrapper.use_gui
|
||||||
|
proc_param_wrapper = ProcedureParamsWrapper()
|
||||||
|
if use_prompts:
|
||||||
|
post_arg_parsing_wrapper.set_params_with_prompts(params, proc_param_wrapper)
|
||||||
|
else:
|
||||||
|
post_arg_parsing_wrapper.set_params_without_prompts(params, proc_param_wrapper)
|
||||||
params.apid = PUS_APID
|
params.apid = PUS_APID
|
||||||
setup_wrapper = SetupWrapper(hook_obj=hook_obj, setup_params=params)
|
setup_wrapper = SetupWrapper(
|
||||||
|
hook_obj=hook_obj, setup_params=params, proc_param_wrapper=proc_param_wrapper
|
||||||
|
)
|
||||||
return setup_wrapper
|
return setup_wrapper
|
||||||
|
|
||||||
|
|
||||||
def setup_tmtc(
|
def setup_cfdp_handler() -> CfdpInCcsdsWrapper:
|
||||||
|
fh_base = EiveCfdpFaultHandler()
|
||||||
|
cfdp_cfg = LocalEntityCfg(
|
||||||
|
local_entity_id=CFDP_LOCAL_ENTITY_ID,
|
||||||
|
indication_cfg=IndicationCfg(),
|
||||||
|
default_fault_handlers=fh_base,
|
||||||
|
)
|
||||||
|
remote_cfg = RemoteEntityCfg(
|
||||||
|
closure_requested=False,
|
||||||
|
entity_id=CFDP_REMOTE_ENTITY_ID,
|
||||||
|
max_file_segment_len=1024,
|
||||||
|
check_limit=None,
|
||||||
|
crc_on_transmission=False,
|
||||||
|
crc_type=ChecksumType.CRC_32,
|
||||||
|
default_transmission_mode=TransmissionMode.UNACKNOWLEDGED,
|
||||||
|
)
|
||||||
|
cfdp_seq_count_provider = FileSeqCountProvider(
|
||||||
|
max_bit_width=16, file_name=Path("seqcnt_cfdp_transaction.txt")
|
||||||
|
)
|
||||||
|
cfdp_ccsds_seq_count_provider = PusFileSeqCountProvider(
|
||||||
|
file_name=Path("seqcnt_cfdp_ccsds_.txt")
|
||||||
|
)
|
||||||
|
cfdp_user = EiveCfdpUser()
|
||||||
|
cfdp_in_ccsds_handler = CfdpInCcsdsHandler(
|
||||||
|
cfg=cfdp_cfg,
|
||||||
|
remote_cfgs=[remote_cfg],
|
||||||
|
ccsds_apid=CFDP_APID,
|
||||||
|
ccsds_seq_cnt_provider=cfdp_ccsds_seq_count_provider,
|
||||||
|
cfdp_seq_cnt_provider=cfdp_seq_count_provider,
|
||||||
|
user=cfdp_user,
|
||||||
|
)
|
||||||
|
return CfdpInCcsdsWrapper(cfdp_in_ccsds_handler)
|
||||||
|
|
||||||
|
|
||||||
|
def setup_tmtc_handlers(
|
||||||
verificator: PusVerificator,
|
verificator: PusVerificator,
|
||||||
printer: FsfwTmTcPrinter,
|
printer: FsfwTmTcPrinter,
|
||||||
raw_logger: RawTmtcTimedLogWrapper,
|
raw_logger: RawTmtcTimedLogWrapper,
|
||||||
gui: bool,
|
gui: bool,
|
||||||
) -> (CcsdsTmHandler, TcHandler):
|
) -> (CcsdsTmHandler, TcHandler):
|
||||||
|
cfdp_in_ccsds_wrapper = setup_cfdp_handler()
|
||||||
verification_wrapper = VerificationWrapper(verificator, LOGGER, printer.file_logger)
|
verification_wrapper = VerificationWrapper(verificator, LOGGER, printer.file_logger)
|
||||||
pus_handler = PusHandler(verification_wrapper, printer, raw_logger)
|
pus_handler = PusHandler(verification_wrapper, printer, raw_logger)
|
||||||
ccsds_handler = CcsdsTmHandler(generic_handler=UnknownApidHandler(None))
|
ccsds_handler = CcsdsTmHandler(generic_handler=UnknownApidHandler(None))
|
||||||
ccsds_handler.add_apid_handler(pus_handler)
|
ccsds_handler.add_apid_handler(pus_handler)
|
||||||
|
ccsds_handler.add_apid_handler(cfdp_in_ccsds_wrapper)
|
||||||
seq_count_provider = PusFileSeqCountProvider()
|
seq_count_provider = PusFileSeqCountProvider()
|
||||||
tc_handler = TcHandler(
|
tc_handler = TcHandler(
|
||||||
seq_count_provider=seq_count_provider,
|
seq_count_provider=seq_count_provider,
|
||||||
@ -179,6 +378,7 @@ def setup_tmtc(
|
|||||||
file_logger=printer.file_logger,
|
file_logger=printer.file_logger,
|
||||||
raw_logger=raw_logger,
|
raw_logger=raw_logger,
|
||||||
gui=gui,
|
gui=gui,
|
||||||
|
cfdp_in_ccsds_wrapper=cfdp_in_ccsds_wrapper,
|
||||||
)
|
)
|
||||||
return ccsds_handler, tc_handler
|
return ccsds_handler, tc_handler
|
||||||
|
|
||||||
@ -188,8 +388,12 @@ def setup_backend(
|
|||||||
tc_handler: TcHandler,
|
tc_handler: TcHandler,
|
||||||
ccsds_handler: CcsdsTmHandler,
|
ccsds_handler: CcsdsTmHandler,
|
||||||
) -> BackendBase:
|
) -> BackendBase:
|
||||||
|
init_proc = params_to_procedure_conversion(setup_wrapper.proc_param_wrapper)
|
||||||
tmtc_backend = tmtccmd.create_default_tmtc_backend(
|
tmtc_backend = tmtccmd.create_default_tmtc_backend(
|
||||||
setup_wrapper=setup_wrapper, tm_handler=ccsds_handler, tc_handler=tc_handler
|
setup_wrapper=setup_wrapper,
|
||||||
|
tm_handler=ccsds_handler,
|
||||||
|
tc_handler=tc_handler,
|
||||||
|
init_procedure=init_proc,
|
||||||
)
|
)
|
||||||
tmtccmd.start(tmtc_backend=tmtc_backend, hook_obj=setup_wrapper.hook_obj)
|
tmtccmd.start(tmtc_backend=tmtc_backend, hook_obj=setup_wrapper.hook_obj)
|
||||||
return tmtc_backend
|
return tmtc_backend
|
||||||
@ -205,10 +409,10 @@ def main():
|
|||||||
printer = FsfwTmTcPrinter(tmtc_logger.logger)
|
printer = FsfwTmTcPrinter(tmtc_logger.logger)
|
||||||
raw_logger = RawTmtcTimedLogWrapper(
|
raw_logger = RawTmtcTimedLogWrapper(
|
||||||
when=ROTATING_TIMED_LOGGER_INTERVAL_WHEN,
|
when=ROTATING_TIMED_LOGGER_INTERVAL_WHEN,
|
||||||
interval=ROTATING_TIMED_LOGGER_INTERVAL
|
interval=ROTATING_TIMED_LOGGER_INTERVAL,
|
||||||
)
|
)
|
||||||
pus_verificator = PusVerificator()
|
pus_verificator = PusVerificator()
|
||||||
ccsds_handler, tc_handler = setup_tmtc(
|
ccsds_handler, tc_handler = setup_tmtc_handlers(
|
||||||
pus_verificator, printer, raw_logger, setup_wrapper.params.use_gui
|
pus_verificator, printer, raw_logger, setup_wrapper.params.use_gui
|
||||||
)
|
)
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user