Compare commits
52 Commits
v1.7.1
...
48d781aaf1
Author | SHA1 | Date | |
---|---|---|---|
48d781aaf1 | |||
![]() |
9b176aebfa | ||
ce5596f566 | |||
ccf38bbbef | |||
![]() |
a0d586d753 | ||
![]() |
c125a62612 | ||
573d2dca52 | |||
![]() |
5b2ff49555 | ||
![]() |
5574fe91c7 | ||
![]() |
84485a245b | ||
![]() |
95c5aa46d9 | ||
![]() |
950adf36ed | ||
![]() |
e5dc68c819 | ||
![]() |
30bb3c8778 | ||
![]() |
c7f5db0f53 | ||
![]() |
0c99bc9d11 | ||
cc6dbd8ef9 | |||
3cd7de5649 | |||
f8b36a651d | |||
82c8090afd | |||
fac74219f0 | |||
3305e1d489 | |||
7c598f26a8 | |||
5ea6903881 | |||
6824e7d8c7 | |||
ca63149a67 | |||
f00cd8f6bd | |||
![]() |
547b4b2137 | ||
![]() |
e7d8199e67 | ||
![]() |
98a1d0f856 | ||
![]() |
36ae6a233c | ||
3e8626bfaf | |||
a226bf659e | |||
bc32472d88 | |||
![]() |
4aebf4c0d9 | ||
477743f626 | |||
![]() |
d782aa2715 | ||
![]() |
93fdc0fc7f | ||
![]() |
9a7d5f08d0 | ||
![]() |
6fcd52daa6 | ||
![]() |
1b1f26ac3a | ||
![]() |
6601233f41 | ||
![]() |
55ca910549 | ||
8b7331c210 | |||
31bc3d8689 | |||
7ffda5f9ee | |||
f2e95444c7 | |||
0b6bfdd23a | |||
389836c10f | |||
![]() |
75ae2c786b | ||
![]() |
6352a6f272 | ||
![]() |
390081d00e |
24
.idea/runConfigurations/ACU_Test_UDP.xml
generated
Normal file
24
.idea/runConfigurations/ACU_Test_UDP.xml
generated
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="ACU Test UDP" type="PythonConfigurationType" factoryName="Python" folderName="Devices">
|
||||||
|
<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$/tmtc_client_cli.py" />
|
||||||
|
<option name="PARAMETERS" value="-s acu -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>
|
@@ -1,5 +1,5 @@
|
|||||||
<component name="ProjectRunConfigurationManager">
|
<component name="ProjectRunConfigurationManager">
|
||||||
<configuration default="false" name="tmtcclient Heater Test UDP" type="PythonConfigurationType" factoryName="Python" folderName="UDP">
|
<configuration default="false" name="Heater Test" type="PythonConfigurationType" factoryName="Python" folderName="Devices">
|
||||||
<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="tmtcclient IMTQ Get Commanded Dipole" type="PythonConfigurationType" factoryName="Python" folderName="UDP">
|
<configuration default="false" name="IMTQ Get Commanded Dipole" type="PythonConfigurationType" factoryName="Python" folderName="Devices">
|
||||||
<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="tmtcclient IMTQ Neg X Test" type="PythonConfigurationType" factoryName="Python" folderName="UDP">
|
<configuration default="false" name="IMTQ Neg X Test" type="PythonConfigurationType" factoryName="Python" folderName="Devices">
|
||||||
<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="tmtcclient IMTQ Neg Y Test" type="PythonConfigurationType" factoryName="Python" folderName="UDP">
|
<configuration default="false" name="IMTQ Neg Y Test" type="PythonConfigurationType" factoryName="Python" folderName="Devices">
|
||||||
<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="tmtcclient IMTQ Neg Z Test" type="PythonConfigurationType" factoryName="Python" folderName="UDP">
|
<configuration default="false" name="IMTQ Neg Z Test" type="PythonConfigurationType" factoryName="Python" folderName="Devices">
|
||||||
<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="tmtcclient IMTQ Pos X Test" type="PythonConfigurationType" factoryName="Python" folderName="UDP">
|
<configuration default="false" name="IMTQ Pos X Test" type="PythonConfigurationType" factoryName="Python" folderName="Devices">
|
||||||
<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="tmtcclient IMTQ Pos Y Test" type="PythonConfigurationType" factoryName="Python" folderName="UDP">
|
<configuration default="false" name="IMTQ Pos Y Test" type="PythonConfigurationType" factoryName="Python" folderName="Devices">
|
||||||
<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="tmtcclient IMTQ Pos Z Test" type="PythonConfigurationType" factoryName="Python" folderName="UDP">
|
<configuration default="false" name="IMTQ Pos Z Test" type="PythonConfigurationType" factoryName="Python" folderName="Devices">
|
||||||
<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="tmtcclient IMTQ Test UDP" type="PythonConfigurationType" factoryName="Python" folderName="UDP">
|
<configuration default="false" name="IMTQ Test UDP" type="PythonConfigurationType" factoryName="Python" folderName="Devices">
|
||||||
<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="tmtcclient P60 Dock Test UDP" type="PythonConfigurationType" factoryName="Python" folderName="Devices">
|
<configuration default="false" name="P60 Dock Commanding" type="PythonConfigurationType" factoryName="Python" folderName="Devices">
|
||||||
<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="tmtcclient PLOC Test UDP Local" type="PythonConfigurationType" factoryName="Python" folderName="UDP">
|
<configuration default="false" name="PDU1 Commanding" type="PythonConfigurationType" factoryName="Python" folderName="Devices">
|
||||||
<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$/tmtc_client_cli.py" />
|
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/tmtc_client_cli.py" />
|
||||||
<option name="PARAMETERS" value="-m 1 -c 2 -s PLOC -l" />
|
<option name="PARAMETERS" value="-s pdu1 -l -t 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" />
|
@@ -1,5 +1,5 @@
|
|||||||
<component name="ProjectRunConfigurationManager">
|
<component name="ProjectRunConfigurationManager">
|
||||||
<configuration default="false" name="tmtcclient PDU2 Test UDP" type="PythonConfigurationType" factoryName="Python" folderName="Devices">
|
<configuration default="false" name="PDU2 Commanding" type="PythonConfigurationType" factoryName="Python" folderName="Devices">
|
||||||
<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" />
|
4
.idea/runConfigurations/PLOC_SUPV_Test.xml
generated
4
.idea/runConfigurations/PLOC_SUPV_Test.xml
generated
@@ -1,5 +1,5 @@
|
|||||||
<component name="ProjectRunConfigurationManager">
|
<component name="ProjectRunConfigurationManager">
|
||||||
<configuration default="false" name="PLOC SUPV Test" type="PythonConfigurationType" factoryName="Python" folderName="UDP">
|
<configuration default="false" name="PLOC SUPV Test" type="PythonConfigurationType" factoryName="Python" folderName="Devices">
|
||||||
<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$/tmtc_client_cli.py" />
|
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/tmtc_client_cli.py" />
|
||||||
<option name="PARAMETERS" value="-c udp -s ploc_supv -l -t 6 --hk" />
|
<option name="PARAMETERS" value="-s ploc_supv -l -t 6 --hk" />
|
||||||
<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" />
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
<component name="ProjectRunConfigurationManager">
|
<component name="ProjectRunConfigurationManager">
|
||||||
<configuration default="false" name="tmtcclient PLOC Test UDP Flatsat" type="PythonConfigurationType" factoryName="Python" folderName="UDP">
|
<configuration default="false" name="PLOC Test UDP Flatsat" type="PythonConfigurationType" factoryName="Python" folderName="Devices">
|
||||||
<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
.idea/runConfigurations/PLOC_Test_UDP_Local.xml
generated
Normal file
24
.idea/runConfigurations/PLOC_Test_UDP_Local.xml
generated
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="PLOC Test UDP Local" type="PythonConfigurationType" factoryName="Python" folderName="Devices">
|
||||||
|
<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$/tmtc_client_cli.py" />
|
||||||
|
<option name="PARAMETERS" value="-m 1 -c 2 -s PLOC -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>
|
6
.idea/runConfigurations/RW1_Test.xml
generated
6
.idea/runConfigurations/RW1_Test.xml
generated
@@ -1,14 +1,14 @@
|
|||||||
<component name="ProjectRunConfigurationManager">
|
<component name="ProjectRunConfigurationManager">
|
||||||
<configuration default="false" name="RW1 Test" type="PythonConfigurationType" factoryName="Python" folderName="UDP">
|
<configuration default="false" name="RW1 Test" type="PythonConfigurationType" factoryName="Python" folderName="Devices">
|
||||||
<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" />
|
||||||
<envs>
|
<envs>
|
||||||
<env name="PYTHONUNBUFFERED" value="1" />
|
<env name="PYTHONUNBUFFERED" value="1" />
|
||||||
</envs>
|
</envs>
|
||||||
<option name="SDK_HOME" value="sftp://eive@[2001:7c0:2018:1099:babe:0:e1fe:f1a5]:22/bin/python3.8" />
|
<option name="SDK_HOME" value="" />
|
||||||
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
||||||
<option name="IS_MODULE_SDK" value="false" />
|
<option name="IS_MODULE_SDK" value="true" />
|
||||||
<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" />
|
||||||
|
6
.idea/runConfigurations/RW2_Test_.xml
generated
6
.idea/runConfigurations/RW2_Test_.xml
generated
@@ -1,14 +1,14 @@
|
|||||||
<component name="ProjectRunConfigurationManager">
|
<component name="ProjectRunConfigurationManager">
|
||||||
<configuration default="false" name="RW2 Test " type="PythonConfigurationType" factoryName="Python" folderName="UDP">
|
<configuration default="false" name="RW2 Test " type="PythonConfigurationType" factoryName="Python" folderName="Devices">
|
||||||
<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" />
|
||||||
<envs>
|
<envs>
|
||||||
<env name="PYTHONUNBUFFERED" value="1" />
|
<env name="PYTHONUNBUFFERED" value="1" />
|
||||||
</envs>
|
</envs>
|
||||||
<option name="SDK_HOME" value="sftp://eive@[2001:7c0:2018:1099:babe:0:e1fe:f1a5]:22/bin/python3.8" />
|
<option name="SDK_HOME" value="" />
|
||||||
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
||||||
<option name="IS_MODULE_SDK" value="false" />
|
<option name="IS_MODULE_SDK" value="true" />
|
||||||
<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" />
|
||||||
|
6
.idea/runConfigurations/RW3_Test_.xml
generated
6
.idea/runConfigurations/RW3_Test_.xml
generated
@@ -1,14 +1,14 @@
|
|||||||
<component name="ProjectRunConfigurationManager">
|
<component name="ProjectRunConfigurationManager">
|
||||||
<configuration default="false" name="RW3 Test " type="PythonConfigurationType" factoryName="Python" folderName="UDP">
|
<configuration default="false" name="RW3 Test " type="PythonConfigurationType" factoryName="Python" folderName="Devices">
|
||||||
<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" />
|
||||||
<envs>
|
<envs>
|
||||||
<env name="PYTHONUNBUFFERED" value="1" />
|
<env name="PYTHONUNBUFFERED" value="1" />
|
||||||
</envs>
|
</envs>
|
||||||
<option name="SDK_HOME" value="sftp://eive@[2001:7c0:2018:1099:babe:0:e1fe:f1a5]:22/bin/python3.8" />
|
<option name="SDK_HOME" value="" />
|
||||||
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
||||||
<option name="IS_MODULE_SDK" value="false" />
|
<option name="IS_MODULE_SDK" value="true" />
|
||||||
<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" />
|
||||||
|
6
.idea/runConfigurations/RW4_Test_.xml
generated
6
.idea/runConfigurations/RW4_Test_.xml
generated
@@ -1,14 +1,14 @@
|
|||||||
<component name="ProjectRunConfigurationManager">
|
<component name="ProjectRunConfigurationManager">
|
||||||
<configuration default="false" name="RW4 Test " type="PythonConfigurationType" factoryName="Python" folderName="UDP">
|
<configuration default="false" name="RW4 Test " type="PythonConfigurationType" factoryName="Python" folderName="Devices">
|
||||||
<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" />
|
||||||
<envs>
|
<envs>
|
||||||
<env name="PYTHONUNBUFFERED" value="1" />
|
<env name="PYTHONUNBUFFERED" value="1" />
|
||||||
</envs>
|
</envs>
|
||||||
<option name="SDK_HOME" value="sftp://eive@[2001:7c0:2018:1099:babe:0:e1fe:f1a5]:22/bin/python3.8" />
|
<option name="SDK_HOME" value="" />
|
||||||
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
||||||
<option name="IS_MODULE_SDK" value="false" />
|
<option name="IS_MODULE_SDK" value="true" />
|
||||||
<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" />
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
<component name="ProjectRunConfigurationManager">
|
<component name="ProjectRunConfigurationManager">
|
||||||
<configuration default="false" name="tmtcc Listener Mode UDP" type="PythonConfigurationType" factoryName="Python" folderName="PUS">
|
<configuration default="false" name="Reboot 0 0" type="PythonConfigurationType" factoryName="Python" folderName="Core">
|
||||||
<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$/tmtc_client_cli.py" />
|
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/tmtc_client_cli.py" />
|
||||||
<option name="PARAMETERS" value="-m listener --hk" />
|
<option name="PARAMETERS" value="-s core -o reboot_0_0 -t 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
.idea/runConfigurations/Reboot_0_1.xml
generated
Normal file
24
.idea/runConfigurations/Reboot_0_1.xml
generated
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="Reboot 0 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$/tmtc_client_cli.py" />
|
||||||
|
<option name="PARAMETERS" value="-s core -o reboot_0_1 -t 4" />
|
||||||
|
<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
.idea/runConfigurations/Reboot_1_0.xml
generated
Normal file
24
.idea/runConfigurations/Reboot_1_0.xml
generated
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="Reboot 1 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$/tmtc_client_cli.py" />
|
||||||
|
<option name="PARAMETERS" value="-s core -o reboot_1_0 -t 4" />
|
||||||
|
<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
.idea/runConfigurations/Reboot_1_1.xml
generated
Normal file
24
.idea/runConfigurations/Reboot_1_1.xml
generated
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="Reboot 1 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$/tmtc_client_cli.py" />
|
||||||
|
<option name="PARAMETERS" value="-s core -o reboot_1_1 -t 4" />
|
||||||
|
<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
.idea/runConfigurations/Reboot_Prompt.xml
generated
Normal file
24
.idea/runConfigurations/Reboot_Prompt.xml
generated
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="Reboot Prompt" 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$/tmtc_client_cli.py" />
|
||||||
|
<option name="PARAMETERS" value="-s core -o reboot -t 4" />
|
||||||
|
<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
.idea/runConfigurations/Reboot_Self.xml
generated
Normal file
24
.idea/runConfigurations/Reboot_Self.xml
generated
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="Reboot Self" 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$/tmtc_client_cli.py" />
|
||||||
|
<option name="PARAMETERS" value="-s core -o reboot_self -t 4" />
|
||||||
|
<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="tmtcclient ACU Test UDP" type="PythonConfigurationType" factoryName="Python" folderName="Devices">
|
<configuration default="false" name="S/A Deployment Test UDP" type="PythonConfigurationType" factoryName="Python" folderName="Devices">
|
||||||
<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$/tmtc_client_cli.py" />
|
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/tmtc_client_cli.py" />
|
||||||
<option name="PARAMETERS" value="-s acu -l" />
|
<option name="PARAMETERS" value="-m 3 -c 2 -s SA_DEPL -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="tmtcclient Syrlinks Test UDP" type="PythonConfigurationType" factoryName="Python" folderName="UDP">
|
<configuration default="false" name="Syrlinks Test UDP" type="PythonConfigurationType" factoryName="Python" folderName="Devices">
|
||||||
<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="tmtcclient TMP1075_1 Dock Test UDP" type="PythonConfigurationType" factoryName="Python" folderName="UDP">
|
<configuration default="false" name="TMP1075_1 Dock Test UDP" type="PythonConfigurationType" factoryName="Python" folderName="Devices">
|
||||||
<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="tmtcclient TMP1075_2 Dock Test UDP" type="PythonConfigurationType" factoryName="Python" folderName="UDP">
|
<configuration default="false" name="TMP1075_2 Dock Test UDP" type="PythonConfigurationType" factoryName="Python" folderName="Devices">
|
||||||
<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="tmtcclient IMTQ Command Dipole" type="PythonConfigurationType" factoryName="Python" folderName="UDP">
|
<configuration default="false" name=" IMTQ Command Dipole" type="PythonConfigurationType" factoryName="Python" folderName="Devices">
|
||||||
<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="tmtcc Service 2 UDP" type="PythonConfigurationType" factoryName="Python" folderName="PUS">
|
<configuration default="false" name="tmtcc Listener Mode" type="PythonConfigurationType" factoryName="Python" folderName="PUS">
|
||||||
<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$/tmtc_client_cli.py" />
|
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/tmtc_client_cli.py" />
|
||||||
<option name="PARAMETERS" value="-s 2 -t 4" />
|
<option name="PARAMETERS" value="-m listener --hk" />
|
||||||
<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" />
|
@@ -1,5 +1,5 @@
|
|||||||
<component name="ProjectRunConfigurationManager">
|
<component name="ProjectRunConfigurationManager">
|
||||||
<configuration default="false" name="tmtcc Service 17 UDP" type="PythonConfigurationType" factoryName="Python" folderName="PUS">
|
<configuration default="false" name="tmtcc Service 17" type="PythonConfigurationType" factoryName="Python" folderName="PUS">
|
||||||
<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
.idea/runConfigurations/tmtcc_Service_2.xml
generated
Normal file
24
.idea/runConfigurations/tmtcc_Service_2.xml
generated
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="tmtcc Service 2" 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$/tmtc_client_cli.py" />
|
||||||
|
<option name="PARAMETERS" value="-s 2 -t 4" />
|
||||||
|
<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="tmtcc Service 200 UDP" type="PythonConfigurationType" factoryName="Python" folderName="PUS">
|
<configuration default="false" name="tmtcc Service 200" type="PythonConfigurationType" factoryName="Python" folderName="PUS">
|
||||||
<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="tmtcc Service 3 UDP" type="PythonConfigurationType" factoryName="Python" folderName="PUS">
|
<configuration default="false" name="tmtcc Service 3" type="PythonConfigurationType" factoryName="Python" folderName="PUS">
|
||||||
<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="tmtcc Service 8 UDP" type="PythonConfigurationType" factoryName="Python" folderName="PUS">
|
<configuration default="false" name="tmtcc Service 8" type="PythonConfigurationType" factoryName="Python" folderName="PUS">
|
||||||
<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
.idea/runConfigurations/tmtcclient_PDU1_Test_UDP.xml
generated
24
.idea/runConfigurations/tmtcclient_PDU1_Test_UDP.xml
generated
@@ -1,24 +0,0 @@
|
|||||||
<component name="ProjectRunConfigurationManager">
|
|
||||||
<configuration default="false" name="tmtcclient PDU1 Test UDP" type="PythonConfigurationType" factoryName="Python" folderName="Devices">
|
|
||||||
<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$/tmtc_client_cli.py" />
|
|
||||||
<option name="PARAMETERS" value="-s pdu1 -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>
|
|
@@ -1,24 +0,0 @@
|
|||||||
<component name="ProjectRunConfigurationManager">
|
|
||||||
<configuration default="false" name="tmtcclient S/A Deployment Test UDP" type="PythonConfigurationType" factoryName="Python" folderName="UDP">
|
|
||||||
<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$/tmtc_client_cli.py" />
|
|
||||||
<option name="PARAMETERS" value="-m 3 -c 2 -s SA_DEPL -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>
|
|
20
README.md
20
README.md
@@ -1,5 +1,25 @@
|
|||||||
# TMTC Commander EIVE
|
# TMTC Commander EIVE
|
||||||
|
|
||||||
|
# Run Linter
|
||||||
|
|
||||||
|
Can be used to quickly check validity of script. Install `flake8` first
|
||||||
|
|
||||||
|
```sh
|
||||||
|
python3 -m pip install flake8
|
||||||
|
```
|
||||||
|
|
||||||
|
or on Windows
|
||||||
|
|
||||||
|
```sh
|
||||||
|
py -m pip install flake8
|
||||||
|
```
|
||||||
|
|
||||||
|
and then run the `lint.py` script
|
||||||
|
|
||||||
|
```sh
|
||||||
|
./lint.py
|
||||||
|
```
|
||||||
|
|
||||||
# Set up virtual environment
|
# Set up virtual environment
|
||||||
|
|
||||||
## Linux
|
## Linux
|
||||||
|
@@ -29,3 +29,7 @@ class CustomServiceList(enum.Enum):
|
|||||||
REACTION_WHEEL_4 = "reaction_wheel_4"
|
REACTION_WHEEL_4 = "reaction_wheel_4"
|
||||||
RAD_SENSOR = "rad_sensor"
|
RAD_SENSOR = "rad_sensor"
|
||||||
PLOC_SUPV = "ploc_supv"
|
PLOC_SUPV = "ploc_supv"
|
||||||
|
PLOC_UPDATER = "ploc_updater"
|
||||||
|
PLOC_MEMORY_DUMPER = "ploc_memory_dumper"
|
||||||
|
CORE = 'core'
|
||||||
|
STAR_TRACKER = 'star_tracker'
|
||||||
|
@@ -20,29 +20,54 @@ class EiveHookObject(TmTcHookBase):
|
|||||||
def get_service_op_code_dictionary(self) -> ServiceOpCodeDictT:
|
def get_service_op_code_dictionary(self) -> ServiceOpCodeDictT:
|
||||||
from tmtccmd.config.globals import get_default_service_op_code_dict
|
from tmtccmd.config.globals import get_default_service_op_code_dict
|
||||||
service_op_code_dict = get_default_service_op_code_dict()
|
service_op_code_dict = get_default_service_op_code_dict()
|
||||||
op_code_dict_srv_acu = {
|
op_code_dict = {
|
||||||
|
'reboot': ('Reboot with Prompt', {OpCodeDictKeys.TIMEOUT: 2.0}),
|
||||||
|
'reboot_self': ('Reboot Self', {OpCodeDictKeys.TIMEOUT: 4.0}),
|
||||||
|
'reboot_0_0': ('Reboot 0 0', {OpCodeDictKeys.TIMEOUT: 4.0}),
|
||||||
|
'reboot_0_1': ('Reboot 0 1', {OpCodeDictKeys.TIMEOUT: 4.0}),
|
||||||
|
'reboot_1_0': ('Reboot 1 0', {OpCodeDictKeys.TIMEOUT: 4.0}),
|
||||||
|
'reboot_1_1': ('Reboot 1 1', {OpCodeDictKeys.TIMEOUT: 4.0}),
|
||||||
|
}
|
||||||
|
service_tuple = ('Core Controller', op_code_dict)
|
||||||
|
service_op_code_dict[CustomServiceList.CORE.value] = service_tuple
|
||||||
|
|
||||||
|
op_code_dict = {
|
||||||
"0": ("ACU Tests", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
"0": ("ACU Tests", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
||||||
}
|
}
|
||||||
service_acu_tuple = ("ACU Devices", op_code_dict_srv_acu)
|
service_tuple = ("ACU Devices", op_code_dict)
|
||||||
|
service_op_code_dict[CustomServiceList.ACU.value] = service_tuple
|
||||||
|
|
||||||
op_code_dict_srv_tmp1075 = {
|
op_code_dict = {
|
||||||
"0": ("TMP1075 Tests", {OpCodeDictKeys.TIMEOUT: 2.2}),
|
"0": ("TMP1075 Tests", {OpCodeDictKeys.TIMEOUT: 2.2}),
|
||||||
}
|
}
|
||||||
service_tmp1075_1_tuple = ("TMP1075 1", op_code_dict_srv_tmp1075)
|
service_tuple = ("TMP1075 1", op_code_dict)
|
||||||
service_tmp1075_2_tuple = ("TMP1075 2", op_code_dict_srv_tmp1075)
|
service_op_code_dict[CustomServiceList.TMP1075_1.value] = service_tuple
|
||||||
|
service_tuple = ("TMP1075 2", op_code_dict)
|
||||||
|
service_op_code_dict[CustomServiceList.TMP1075_2.value] = service_tuple
|
||||||
|
|
||||||
op_code_dict_srv_p60 = {
|
op_code_dict_srv_p60 = {
|
||||||
"0": ("P60 Tests", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
"0": ("P60 Tests", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
||||||
|
"1": ("P60 Dock: Turn stack 3V3 on", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
||||||
|
"2": ("P60 Dock: Turn stack 3V3 off", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
||||||
}
|
}
|
||||||
service_p60_tuple = ("P60 Device", op_code_dict_srv_p60)
|
service_p60_tuple = ("P60 Device", op_code_dict_srv_p60)
|
||||||
|
|
||||||
op_code_dict_srv_pdu1 = {
|
op_code_dict_srv_pdu1 = {
|
||||||
"0": ("PDU1 Tests", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
"0": ("PDU1 Tests", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
||||||
|
"1": ("PDU1: Turn star tracker on", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
||||||
|
"2": ("PDU1: Get switch state of star tracker", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
||||||
|
"3": ("PDU1: Turn SUS nominal on", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
||||||
|
"4": ("PDU1: Turn star tracker off", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
||||||
|
"5": ("PDU1: Turn SUS nominal off", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
||||||
|
"6": ("PDU1: Turn ACS Side A on", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
||||||
|
"7": ("PDU1: Turn ACS Side A off", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
||||||
}
|
}
|
||||||
service_pdu1_tuple = ("PDU1 Device", op_code_dict_srv_pdu1)
|
service_pdu1_tuple = ("PDU1 Device", op_code_dict_srv_pdu1)
|
||||||
|
|
||||||
op_code_dict_srv_pdu2 = {
|
op_code_dict_srv_pdu2 = {
|
||||||
"0": ("PDU2 Tests", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
"0": ("PDU2 Tests", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
||||||
|
"1": ("PDU1: Turn ACS Side B on", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
||||||
|
"2": ("PDU1: Turn ACS Side B off", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
||||||
}
|
}
|
||||||
service_pdu2_tuple = ("PDU2 Device", op_code_dict_srv_pdu2)
|
service_pdu2_tuple = ("PDU2 Device", op_code_dict_srv_pdu2)
|
||||||
|
|
||||||
@@ -81,6 +106,11 @@ class EiveHookObject(TmTcHookBase):
|
|||||||
}
|
}
|
||||||
service_rad_sensor_tuple = ("Radiation Sensor", op_code_dict_srv_rad_sensor)
|
service_rad_sensor_tuple = ("Radiation Sensor", op_code_dict_srv_rad_sensor)
|
||||||
|
|
||||||
|
op_code_dict_ploc_mem_dumper = {
|
||||||
|
"0": ("PLOC Memory Dumper: MRAM dump", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
||||||
|
}
|
||||||
|
service_ploc_memory_dumper_tuple = ("Radiation Sensor", op_code_dict_ploc_mem_dumper)
|
||||||
|
|
||||||
op_code_dict_srv_ploc_supv = {
|
op_code_dict_srv_ploc_supv = {
|
||||||
"0": ("PLOC Supervisor: Set mode on", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
"0": ("PLOC Supervisor: Set mode on", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
||||||
"1": ("PLOC Supervisor: Set mode normal", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
"1": ("PLOC Supervisor: Set mode normal", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
||||||
@@ -95,15 +125,57 @@ class EiveHookObject(TmTcHookBase):
|
|||||||
"10": ("PLOC Supervisor: Set time reference", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
"10": ("PLOC Supervisor: Set time reference", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
||||||
"11": ("PLOC Supervisor: Set boot timeout", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
"11": ("PLOC Supervisor: Set boot timeout", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
||||||
"12": ("PLOC Supervisor: Disable Hk", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
"12": ("PLOC Supervisor: Disable Hk", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
||||||
|
"13": ("PLOC Supervisor: Request boot status report", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
||||||
|
"14": ("PLOC Supervisor: Update available", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
||||||
|
"15": ("PLOC Supervisor: Watchdogs enable", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
||||||
|
"16": ("PLOC Supervisor: Watchdog Configure Timeout", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
||||||
|
"17": ("PLOC Supervisor: Enable latchup alert", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
||||||
|
"18": ("PLOC Supervisor: Disable latchup alert", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
||||||
|
"19": ("PLOC Supervisor: Auto calibrate alert", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
||||||
|
"20": ("PLOC Supervisor: Set alert limit", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
||||||
|
"21": ("PLOC Supervisor: Set alert irq filter", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
||||||
|
"22": ("PLOC Supervisor: Set ADC sweep period", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
||||||
|
"23": ("PLOC Supervisor: Set ADC enabled channels", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
||||||
|
"24": ("PLOC Supervisor: Set ADC window and stride", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
||||||
|
"25": ("PLOC Supervisor: Set ADC threshold", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
||||||
|
"26": ("PLOC Supervisor: Request latchup status report", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
||||||
|
"27": ("PLOC Supervisor: Copy ADC data to MRAM", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
||||||
|
"28": ("PLOC Supervisor: Enable/Disable NVM0/1/3", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
||||||
|
"29": ("PLOC Supervisor: Select NVM", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
||||||
|
"30": ("PLOC Supervisor: Run auto EM tests", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
||||||
|
"31": ("PLOC Supervisor: MRAM Wipe", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
||||||
|
"33": ("PLOC Supervisor: Print CPU stats", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
||||||
|
"34": ("PLOC Supervisor: Set debug verbosity", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
||||||
|
"35": ("PLOC Supervisor: Set GPIO", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
||||||
|
"36": ("PLOC Supervisor: Read GPIO", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
||||||
|
"37": ("PLOC Supervisor: Restart supervisor", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
||||||
|
"38": ("PLOC Supervisor: Factory reset clear all", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
||||||
|
"39": ("PLOC Supervisor: Factory reset clear mirror entries", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
||||||
|
"40": ("PLOC Supervisor: Factory reset clear circular entries", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
||||||
|
"41": ("PLOC Supervisor: CAN loopback test", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
||||||
}
|
}
|
||||||
service_ploc_supv_tuple = ("PLOC Supervisor", op_code_dict_srv_ploc_supv)
|
service_ploc_supv_tuple = ("PLOC Supervisor", op_code_dict_srv_ploc_supv)
|
||||||
|
|
||||||
service_op_code_dict[CustomServiceList.ACU.value] = service_acu_tuple
|
op_code_dict_srv_ploc_updater = {
|
||||||
service_op_code_dict[CustomServiceList.TMP1075_1.value] = service_tmp1075_1_tuple
|
"0": ("Ploc Updater: Update uboot on partition A", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
||||||
service_op_code_dict[CustomServiceList.TMP1075_2.value] = service_tmp1075_2_tuple
|
"1": ("Ploc Updater: Update bitstream on partition A", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
||||||
|
"2": ("Ploc Updater: Update linux on partition A", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
||||||
|
"3": ("Ploc Updater: Update application on partition A", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
||||||
|
"4": ("Ploc Updater: Update uboot on partition B", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
||||||
|
"5": ("Ploc Updater: Update bitstream on partition B", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
||||||
|
"6": ("Ploc Updater: Update linux on partition B", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
||||||
|
"7": ("Ploc Updater: Update application on partition B", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
||||||
|
}
|
||||||
|
service_ploc_updater_tuple = ("Ploc Updater", op_code_dict_srv_ploc_updater)
|
||||||
|
|
||||||
|
op_code_dict_srv_star_tracker = {
|
||||||
|
"0": ("Star Tracker: Ping", {OpCodeDictKeys.TIMEOUT: 2.0}),
|
||||||
|
}
|
||||||
|
service_star_tracker_tuple = ("Star tracker", op_code_dict_srv_star_tracker)
|
||||||
|
|
||||||
service_op_code_dict[CustomServiceList.P60DOCK.value] = service_p60_tuple
|
service_op_code_dict[CustomServiceList.P60DOCK.value] = service_p60_tuple
|
||||||
service_op_code_dict[CustomServiceList.PDU1.value] = service_pdu1_tuple
|
service_op_code_dict[CustomServiceList.PDU1.value] = service_pdu1_tuple
|
||||||
service_op_code_dict[CustomServiceList.PDU1.value] = service_pdu2_tuple
|
service_op_code_dict[CustomServiceList.PDU2.value] = service_pdu2_tuple
|
||||||
service_op_code_dict[CustomServiceList.HEATER.value] = service_heater_tuple
|
service_op_code_dict[CustomServiceList.HEATER.value] = service_heater_tuple
|
||||||
service_op_code_dict[CustomServiceList.IMTQ.value] = service_imtq_tuple
|
service_op_code_dict[CustomServiceList.IMTQ.value] = service_imtq_tuple
|
||||||
service_op_code_dict[CustomServiceList.REACTION_WHEEL_1.value] = service_rw_tuple
|
service_op_code_dict[CustomServiceList.REACTION_WHEEL_1.value] = service_rw_tuple
|
||||||
@@ -112,6 +184,9 @@ class EiveHookObject(TmTcHookBase):
|
|||||||
service_op_code_dict[CustomServiceList.REACTION_WHEEL_4.value] = service_rw_tuple
|
service_op_code_dict[CustomServiceList.REACTION_WHEEL_4.value] = service_rw_tuple
|
||||||
service_op_code_dict[CustomServiceList.RAD_SENSOR.value] = service_rad_sensor_tuple
|
service_op_code_dict[CustomServiceList.RAD_SENSOR.value] = service_rad_sensor_tuple
|
||||||
service_op_code_dict[CustomServiceList.PLOC_SUPV.value] = service_ploc_supv_tuple
|
service_op_code_dict[CustomServiceList.PLOC_SUPV.value] = service_ploc_supv_tuple
|
||||||
|
service_op_code_dict[CustomServiceList.PLOC_UPDATER.value] = service_ploc_updater_tuple
|
||||||
|
service_op_code_dict[CustomServiceList.STAR_TRACKER.value] = service_star_tracker_tuple
|
||||||
|
service_op_code_dict[CustomServiceList.PLOC_MEMORY_DUMPER.value] = service_ploc_memory_dumper_tuple
|
||||||
return service_op_code_dict
|
return service_op_code_dict
|
||||||
|
|
||||||
def get_json_config_file_path(self) -> str:
|
def get_json_config_file_path(self) -> str:
|
||||||
|
@@ -23,9 +23,12 @@ RW1_ID = bytes([0x44, 0x12, 0x00, 0x1])
|
|||||||
RW2_ID = bytes([0x44, 0x12, 0x00, 0x2])
|
RW2_ID = bytes([0x44, 0x12, 0x00, 0x2])
|
||||||
RW3_ID = bytes([0x44, 0x12, 0x00, 0x3])
|
RW3_ID = bytes([0x44, 0x12, 0x00, 0x3])
|
||||||
RW4_ID = bytes([0x44, 0x12, 0x00, 0x4])
|
RW4_ID = bytes([0x44, 0x12, 0x00, 0x4])
|
||||||
START_TRACKER_ID = bytes([0x44, 0x13, 0x00, 0x1])
|
STAR_TRACKER_ID = bytes([0x44, 0x13, 0x00, 0x1])
|
||||||
RAD_SENSOR_ID = bytes([0x44, 0x32, 0x00, 0xA5])
|
RAD_SENSOR_ID = bytes([0x44, 0x32, 0x00, 0xA5])
|
||||||
PLOC_SUPV_ID = bytes([0x44, 0x33, 0x00, 0x16])
|
PLOC_SUPV_ID = bytes([0x44, 0x33, 0x00, 0x16])
|
||||||
|
PLOC_UPDATER_ID = bytes([0x44, 0x33, 0x00, 0x00])
|
||||||
|
CORE_CONTROLLER_ID = bytes([0x43, 0x00, 0x00, 0x03])
|
||||||
|
PLOC_MEMORY_DUMPER_ID = bytes([0x44, 0x33, 0x00, 0x01])
|
||||||
|
|
||||||
|
|
||||||
def get_object_ids() -> Dict[bytes, list]:
|
def get_object_ids() -> Dict[bytes, list]:
|
||||||
@@ -47,5 +50,6 @@ def get_object_ids() -> Dict[bytes, list]:
|
|||||||
RW4_ID: "Reaction Wheel 4",
|
RW4_ID: "Reaction Wheel 4",
|
||||||
RAD_SENSOR_ID: "Radiation Sensor",
|
RAD_SENSOR_ID: "Radiation Sensor",
|
||||||
PLOC_SUPV_ID: "PLOC Supervisor",
|
PLOC_SUPV_ID: "PLOC Supervisor",
|
||||||
|
CORE_CONTROLLER_ID: "Core Controller",
|
||||||
})
|
})
|
||||||
return object_id_dict
|
return object_id_dict
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
SW_NAME = "eive"
|
SW_NAME = "eive"
|
||||||
VERSION_MAJOR = 1
|
VERSION_MAJOR = 1
|
||||||
VERSION_MINOR = 7
|
VERSION_MINOR = 8
|
||||||
VERSION_SUBMINOR = 1
|
VERSION_SUBMINOR = 0
|
||||||
|
|
||||||
__version__ = "1.7.1"
|
__version__ = "1.8.0"
|
||||||
|
13
lint.py
13
lint.py
@@ -4,11 +4,20 @@ import sys
|
|||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
status = os.system("flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics")
|
# Ignore folder created by venv
|
||||||
|
exclude_dirs_flag = '--exclude bin,lib'
|
||||||
|
additional_flags_both_steps = '--count --statistics'
|
||||||
|
additional_flags_first_step = '--select=E9,F63,F7,F82 --show-source'
|
||||||
|
flake8_first_step_cmd = \
|
||||||
|
f'flake8 . {additional_flags_both_steps} {additional_flags_first_step} {exclude_dirs_flag}'
|
||||||
|
status = os.system(flake8_first_step_cmd)
|
||||||
if os.WEXITSTATUS(status) != 0:
|
if os.WEXITSTATUS(status) != 0:
|
||||||
print("Flake8 linter errors")
|
print("Flake8 linter errors")
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
os.system("flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics")
|
flake8_second_step_cmd = \
|
||||||
|
f'flake8 . {additional_flags_both_steps} --exit-zero --max-complexity=10 ' \
|
||||||
|
f'--max-line-length=127 {exclude_dirs_flag}'
|
||||||
|
os.system(flake8_second_step_cmd)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
@@ -53,13 +53,17 @@ class ACUHkTable:
|
|||||||
wdt_gnd_left = TableEntry(bytearray([0x00, 0x74]), TableEntry.uint32_size)
|
wdt_gnd_left = TableEntry(bytearray([0x00, 0x74]), TableEntry.uint32_size)
|
||||||
|
|
||||||
|
|
||||||
def pack_acu_test_into(object_id: bytearray, tc_queue: TcQueueT) -> TcQueueT:
|
def pack_acu_test_into(object_id: bytearray, tc_queue: TcQueueT):
|
||||||
tc_queue.appendleft((QueueCommands.PRINT, "Testing ACU"))
|
tc_queue.appendleft((QueueCommands.PRINT, "Testing ACU"))
|
||||||
|
|
||||||
tc_queue.appendleft((QueueCommands.PRINT, "P60 Dock: Enabling ACU connected to X1 slot (channel 0)"))
|
tc_queue.appendleft(
|
||||||
|
(QueueCommands.PRINT, "P60 Dock: Enabling ACU connected to X1 slot (channel 0)")
|
||||||
|
)
|
||||||
p60dock_object_id = P60_DOCK_HANDLER
|
p60dock_object_id = P60_DOCK_HANDLER
|
||||||
command = pack_set_param_command(p60dock_object_id, P60DockConfigTable.out_en_0.parameter_address,
|
command = pack_set_param_command(
|
||||||
P60DockConfigTable.out_en_0.parameter_size, Channel.on)
|
p60dock_object_id, P60DockConfigTable.out_en_0.parameter_address,
|
||||||
|
P60DockConfigTable.out_en_0.parameter_size, Channel.on
|
||||||
|
)
|
||||||
command = PusTelecommand(service=8, subservice=128, ssc=23, app_data=command)
|
command = PusTelecommand(service=8, subservice=128, ssc=23, app_data=command)
|
||||||
tc_queue.appendleft(command.pack_command_tuple())
|
tc_queue.appendleft(command.pack_command_tuple())
|
||||||
|
|
||||||
@@ -70,8 +74,10 @@ def pack_acu_test_into(object_id: bytearray, tc_queue: TcQueueT) -> TcQueueT:
|
|||||||
tc_queue.appendleft(command.pack_command_tuple())
|
tc_queue.appendleft(command.pack_command_tuple())
|
||||||
if ACUTestProcedure.all or ACUTestProcedure.read_gnd_wdt:
|
if ACUTestProcedure.all or ACUTestProcedure.read_gnd_wdt:
|
||||||
tc_queue.appendleft((QueueCommands.PRINT, "ACU: Reading ground watchdog timer value"))
|
tc_queue.appendleft((QueueCommands.PRINT, "ACU: Reading ground watchdog timer value"))
|
||||||
command = pack_get_param_command(object_id, TableIds.hk, ACUHkTable.wdt_gnd_left.parameter_address,
|
command = pack_get_param_command(
|
||||||
ACUHkTable.wdt_gnd_left.parameter_size)
|
object_id, TableIds.hk, ACUHkTable.wdt_gnd_left.parameter_address,
|
||||||
|
ACUHkTable.wdt_gnd_left.parameter_size
|
||||||
|
)
|
||||||
command = PusTelecommand(service=8, subservice=128, ssc=20, app_data=command)
|
command = PusTelecommand(service=8, subservice=128, ssc=20, app_data=command)
|
||||||
tc_queue.appendleft(command.pack_command_tuple())
|
tc_queue.appendleft(command.pack_command_tuple())
|
||||||
if ACUTestProcedure.all or ACUTestProcedure.gnd_wdt_reset:
|
if ACUTestProcedure.all or ACUTestProcedure.gnd_wdt_reset:
|
||||||
|
112
pus_tc/core.py
Normal file
112
pus_tc/core.py
Normal file
@@ -0,0 +1,112 @@
|
|||||||
|
import enum
|
||||||
|
|
||||||
|
from tmtccmd.config.definitions import QueueCommands
|
||||||
|
from tmtccmd.tc.definitions import TcQueueT
|
||||||
|
from tmtccmd.tc.service_8_functional_cmd import generate_action_command
|
||||||
|
from tmtccmd.utility.logger import get_console_logger
|
||||||
|
from config.object_ids import CORE_CONTROLLER_ID
|
||||||
|
|
||||||
|
LOGGER = get_console_logger()
|
||||||
|
|
||||||
|
|
||||||
|
class ActionIds(enum.IntEnum):
|
||||||
|
REBOOT = 32
|
||||||
|
|
||||||
|
|
||||||
|
class OpCodes(enum.Enum):
|
||||||
|
REBOOT = 'reboot'
|
||||||
|
REBOOT_SELF = 'reboot_self'
|
||||||
|
REBOOT_0_0 = 'reboot_0_0'
|
||||||
|
REBOOT_0_1 = 'reboot_0_1'
|
||||||
|
REBOOT_1_0 = 'reboot_1_0'
|
||||||
|
REBOOT_1_1 = 'reboot_1_1'
|
||||||
|
|
||||||
|
|
||||||
|
class Chip(enum.IntEnum):
|
||||||
|
CHIP_0 = 0
|
||||||
|
CHIP_1 = 1
|
||||||
|
NONE = 2
|
||||||
|
|
||||||
|
|
||||||
|
class Copy(enum.IntEnum):
|
||||||
|
COPY_0_NOM = 0
|
||||||
|
COPY_1_GOLD = 1
|
||||||
|
NONE = 2
|
||||||
|
|
||||||
|
|
||||||
|
def pack_core_commands(tc_queue: TcQueueT, op_code: str):
|
||||||
|
if op_code == OpCodes.REBOOT.value:
|
||||||
|
reboot_self, chip_select, copy_select = determine_reboot_params()
|
||||||
|
perform_reboot_cmd(
|
||||||
|
tc_queue=tc_queue, reboot_self=reboot_self, chip=chip_select, copy=copy_select
|
||||||
|
)
|
||||||
|
elif op_code == OpCodes.REBOOT_SELF.value:
|
||||||
|
perform_reboot_cmd(tc_queue=tc_queue, reboot_self=True)
|
||||||
|
elif op_code == OpCodes.REBOOT_0_0.value:
|
||||||
|
perform_reboot_cmd(
|
||||||
|
tc_queue=tc_queue, reboot_self=False, chip=Chip.CHIP_0, copy=Copy.COPY_0_NOM
|
||||||
|
)
|
||||||
|
elif op_code == OpCodes.REBOOT_0_1.value:
|
||||||
|
perform_reboot_cmd(
|
||||||
|
tc_queue=tc_queue, reboot_self=False, chip=Chip.CHIP_0, copy=Copy.COPY_1_GOLD
|
||||||
|
)
|
||||||
|
elif op_code == OpCodes.REBOOT_1_0.value:
|
||||||
|
perform_reboot_cmd(
|
||||||
|
tc_queue=tc_queue, reboot_self=False, chip=Chip.CHIP_1, copy=Copy.COPY_0_NOM
|
||||||
|
)
|
||||||
|
elif op_code == OpCodes.REBOOT_1_1.value:
|
||||||
|
perform_reboot_cmd(
|
||||||
|
tc_queue=tc_queue, reboot_self=False, chip=Chip.CHIP_1, copy=Copy.COPY_1_GOLD
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def determine_reboot_params() -> (bool, Chip, Copy):
|
||||||
|
chip_select = -1
|
||||||
|
copy_select = -1
|
||||||
|
reboot_self = input('Reboot self? [y/n]: ')
|
||||||
|
if reboot_self in ['y', 'yes', '1']:
|
||||||
|
LOGGER.info('Rebooting currently running image')
|
||||||
|
return True, chip_select, copy_select
|
||||||
|
LOGGER.info('Rebooting image specified by chip and copy')
|
||||||
|
while True:
|
||||||
|
chip_select = input('Chip select [0/1]: ')
|
||||||
|
if chip_select in ['0', '1']:
|
||||||
|
if chip_select == '0':
|
||||||
|
chip_select = Chip.CHIP_0
|
||||||
|
else:
|
||||||
|
chip_select = Chip.CHIP_1
|
||||||
|
break
|
||||||
|
else:
|
||||||
|
LOGGER.warning('Invalid chip select value. Try again')
|
||||||
|
while True:
|
||||||
|
copy_select = input('Copy select [0/1]: ')
|
||||||
|
if copy_select in ['0', '1']:
|
||||||
|
if copy_select == '0':
|
||||||
|
copy_select = Copy.COPY_0_NOM
|
||||||
|
else:
|
||||||
|
copy_select = Copy.COPY_1_GOLD
|
||||||
|
break
|
||||||
|
else:
|
||||||
|
LOGGER.warning('Invalid copy select value. Try again')
|
||||||
|
return False, chip_select, copy_select
|
||||||
|
|
||||||
|
|
||||||
|
def perform_reboot_cmd(
|
||||||
|
tc_queue: TcQueueT, reboot_self: bool, chip: Chip = Chip.NONE, copy: Copy = Copy.NONE
|
||||||
|
):
|
||||||
|
tc_data = bytearray()
|
||||||
|
if reboot_self:
|
||||||
|
tc_queue.appendleft((QueueCommands.PRINT, 'Packing reboot command for current image'))
|
||||||
|
tc_data.append(True)
|
||||||
|
else:
|
||||||
|
tc_data.append(False)
|
||||||
|
tc_data.append(chip)
|
||||||
|
tc_data.append(copy)
|
||||||
|
tc_queue.append(
|
||||||
|
(QueueCommands.PRINT, f'Packing reboot command for chip {chip} and copy {copy}')
|
||||||
|
)
|
||||||
|
action_cmd = generate_action_command(
|
||||||
|
object_id=CORE_CONTROLLER_ID, action_id=ActionIds.REBOOT, app_data=tc_data, ssc=0
|
||||||
|
)
|
||||||
|
tc_queue.appendleft(action_cmd.pack_command_tuple())
|
||||||
|
|
@@ -33,10 +33,19 @@ class P60DockTestProcedure:
|
|||||||
|
|
||||||
|
|
||||||
class P60DockConfigTable:
|
class P60DockConfigTable:
|
||||||
out_en_0 = TableEntry(bytearray([0x00, 0x68]), TableEntry.uint8_size) # ACU
|
out_en_0 = TableEntry(bytearray([0x00, 0x68]), TableEntry.uint8_size) # ACU VCC
|
||||||
out_en_1 = TableEntry(bytearray([0x00, 0x69]), TableEntry.uint8_size) # PDU1
|
out_en_1 = TableEntry(bytearray([0x00, 0x69]), TableEntry.uint8_size) # PDU1 VCC
|
||||||
out_en_2 = TableEntry(bytearray([0x00, 0x6A]), TableEntry.uint8_size)
|
out_en_2 = TableEntry(bytearray([0x00, 0x6A]), TableEntry.uint8_size) # unused
|
||||||
out_en_3 = TableEntry(bytearray([0x00, 0x6B]), TableEntry.uint8_size) # PDU2
|
out_en_3 = TableEntry(bytearray([0x00, 0x6B]), TableEntry.uint8_size) # PDU2 VCC
|
||||||
|
out_en_4 = TableEntry(bytearray([0x00, 0x6C]), TableEntry.uint8_size) # ACU VBAT
|
||||||
|
out_en_5 = TableEntry(bytearray([0x00, 0x6D]), TableEntry.uint8_size) # unused
|
||||||
|
out_en_6 = TableEntry(bytearray([0x00, 0x6E]), TableEntry.uint8_size) # PDU1 VBAT
|
||||||
|
out_en_7 = TableEntry(bytearray([0x00, 0x6F]), TableEntry.uint8_size) # PDU2 VBAT
|
||||||
|
out_en_8 = TableEntry(bytearray([0x00, 0x70]), TableEntry.uint8_size) # Stack VBAT
|
||||||
|
out_en_9 = TableEntry(bytearray([0x00, 0x71]), TableEntry.uint8_size) # Stack 3V3
|
||||||
|
out_en_10 = TableEntry(bytearray([0x00, 0x72]), TableEntry.uint8_size) # Stack 5V
|
||||||
|
out_en_11 = TableEntry(bytearray([0x00, 0x73]), TableEntry.uint8_size) # GS 3V3 (unused)
|
||||||
|
out_en_12 = TableEntry(bytearray([0x00, 0x74]), TableEntry.uint8_size) # GS 5V (unused)
|
||||||
# When channel consumes more than cur_lu_lim, channel is turned of immediately
|
# When channel consumes more than cur_lu_lim, channel is turned of immediately
|
||||||
cur_lu_lim_0 = TableEntry(bytearray([0x00, 0xF8]), TableEntry.uint16_size)
|
cur_lu_lim_0 = TableEntry(bytearray([0x00, 0xF8]), TableEntry.uint16_size)
|
||||||
|
|
||||||
@@ -48,7 +57,25 @@ class P60DockHkTable:
|
|||||||
wdt_gnd_left = TableEntry(bytearray([0x00, 0xA8]), TableEntry.uint32_size)
|
wdt_gnd_left = TableEntry(bytearray([0x00, 0xA8]), TableEntry.uint32_size)
|
||||||
|
|
||||||
|
|
||||||
def pack_p60dock_test_into(object_id: bytearray, tc_queue: TcQueueT) -> TcQueueT:
|
def pack_p60dock_test_into(object_id: bytearray, tc_queue: TcQueueT, op_code: str) -> TcQueueT:
|
||||||
|
|
||||||
|
if op_code == "1":
|
||||||
|
tc_queue.appendleft((QueueCommands.PRINT, "P60 Dock: Turning stack 3V3 on"))
|
||||||
|
parameter = 0 # set channel off
|
||||||
|
command = pack_set_param_command(object_id, P60DockConfigTable.out_en_9.parameter_address,
|
||||||
|
P60DockConfigTable.out_en_9.parameter_size, Channel.on)
|
||||||
|
command = PusTelecommand(service=8, subservice=128, ssc=20, app_data=command)
|
||||||
|
tc_queue.appendleft(command.pack_command_tuple())
|
||||||
|
return tc_queue
|
||||||
|
if op_code == "2":
|
||||||
|
tc_queue.appendleft((QueueCommands.PRINT, "P60 Dock: Turning stack 3V3 off"))
|
||||||
|
parameter = 0 # set channel off
|
||||||
|
command = pack_set_param_command(object_id, P60DockConfigTable.out_en_9.parameter_address,
|
||||||
|
P60DockConfigTable.out_en_9.parameter_size, Channel.off)
|
||||||
|
command = PusTelecommand(service=8, subservice=128, ssc=20, app_data=command)
|
||||||
|
tc_queue.appendleft(command.pack_command_tuple())
|
||||||
|
return tc_queue
|
||||||
|
|
||||||
if P60DockTestProcedure.all or P60DockTestProcedure.reboot:
|
if P60DockTestProcedure.all or P60DockTestProcedure.reboot:
|
||||||
tc_queue.appendleft((QueueCommands.PRINT, "P60 Dock: Reboot"))
|
tc_queue.appendleft((QueueCommands.PRINT, "P60 Dock: Reboot"))
|
||||||
command = pack_reboot_command(object_id)
|
command = pack_reboot_command(object_id)
|
||||||
|
@@ -2,6 +2,7 @@
|
|||||||
"""
|
"""
|
||||||
@file tmtcc_tc_pdu1.py
|
@file tmtcc_tc_pdu1.py
|
||||||
@brief PDU2 tests
|
@brief PDU2 tests
|
||||||
|
@details PDU2 is mounted on the X4 slot of the P60 dock
|
||||||
@author J. Meier
|
@author J. Meier
|
||||||
@date 17.12.2020
|
@date 17.12.2020
|
||||||
"""
|
"""
|
||||||
@@ -27,49 +28,84 @@ class PDU1TestProcedure:
|
|||||||
turn_channel_2_on = False # Star Tracker connected to this channel (5V)
|
turn_channel_2_on = False # Star Tracker connected to this channel (5V)
|
||||||
turn_channel_2_off = False
|
turn_channel_2_off = False
|
||||||
turn_channel_3_on = False # MTQ connected to this channel (5V)
|
turn_channel_3_on = False # MTQ connected to this channel (5V)
|
||||||
turn_channel_3_off = True
|
turn_channel_3_off = False
|
||||||
|
|
||||||
|
|
||||||
def pack_pdu1_test_into(
|
def pack_pdu1_test_into(object_id: bytearray, tc_queue: TcQueueT, op_code: str) -> TcQueueT:
|
||||||
pdu1_object_id: bytearray, p60dock_object_id: bytearray, tc_queue: TcQueueT
|
tc_queue.appendleft((QueueCommands.PRINT, "Commanding PDU1"))
|
||||||
):
|
|
||||||
tc_queue.appendleft((QueueCommands.PRINT, "Testing PDU1"))
|
if op_code == "1":
|
||||||
|
tc_queue.appendleft((QueueCommands.PRINT, "PDU1: Turn star tracker on"))
|
||||||
|
command = pack_set_param_command(object_id, PDUConfigTable.out_en_2.parameter_address,
|
||||||
|
PDUConfigTable.out_en_2.parameter_size, Channel.on)
|
||||||
|
command = PusTelecommand(service=8, subservice=128, ssc=30, app_data=command)
|
||||||
|
tc_queue.appendleft(command.pack_command_tuple())
|
||||||
|
if op_code == "3":
|
||||||
|
tc_queue.appendleft((QueueCommands.PRINT, "PDU1: Turn SUS nominal on"))
|
||||||
|
command = pack_set_param_command(object_id, PDUConfigTable.out_en_4.parameter_address,
|
||||||
|
PDUConfigTable.out_en_4.parameter_size, Channel.on)
|
||||||
|
command = PusTelecommand(service=8, subservice=128, ssc=31, app_data=command)
|
||||||
|
tc_queue.appendleft(command.pack_command_tuple())
|
||||||
|
if op_code == "4":
|
||||||
|
tc_queue.appendleft((QueueCommands.PRINT, "PDU1: Turn star tracker off"))
|
||||||
|
command = pack_set_param_command(object_id, PDUConfigTable.out_en_2.parameter_address,
|
||||||
|
PDUConfigTable.out_en_2.parameter_size, Channel.off)
|
||||||
|
command = PusTelecommand(service=8, subservice=128, ssc=32, app_data=command)
|
||||||
|
tc_queue.appendleft(command.pack_command_tuple())
|
||||||
|
if op_code == "5":
|
||||||
|
tc_queue.appendleft((QueueCommands.PRINT, "PDU1: Turn SUS nominal off"))
|
||||||
|
command = pack_set_param_command(object_id, PDUConfigTable.out_en_4.parameter_address,
|
||||||
|
PDUConfigTable.out_en_4.parameter_size, Channel.off)
|
||||||
|
command = PusTelecommand(service=8, subservice=128, ssc=33, app_data=command)
|
||||||
|
tc_queue.appendleft(command.pack_command_tuple())
|
||||||
|
if op_code == "6":
|
||||||
|
tc_queue.appendleft((QueueCommands.PRINT, "PDU1: Turn ACS Side A on"))
|
||||||
|
command = pack_set_param_command(object_id, PDUConfigTable.out_en_7.parameter_address,
|
||||||
|
PDUConfigTable.out_en_7.parameter_size, Channel.on)
|
||||||
|
command = PusTelecommand(service=8, subservice=128, ssc=34, app_data=command)
|
||||||
|
tc_queue.appendleft(command.pack_command_tuple())
|
||||||
|
if op_code == "7":
|
||||||
|
tc_queue.appendleft((QueueCommands.PRINT, "PDU1: Turn ACS Side A off"))
|
||||||
|
command = pack_set_param_command(object_id, PDUConfigTable.out_en_7.parameter_address,
|
||||||
|
PDUConfigTable.out_en_7.parameter_size, Channel.off)
|
||||||
|
command = PusTelecommand(service=8, subservice=128, ssc=35, app_data=command)
|
||||||
|
tc_queue.appendleft(command.pack_command_tuple())
|
||||||
|
|
||||||
if PDU1TestProcedure.all or PDU1TestProcedure.ping:
|
if PDU1TestProcedure.all or PDU1TestProcedure.ping:
|
||||||
tc_queue.appendleft((QueueCommands.PRINT, "PDU1: Ping Test"))
|
tc_queue.appendleft((QueueCommands.PRINT, "PDU1: Ping Test"))
|
||||||
ping_data = bytearray([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
|
ping_data = bytearray([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
|
||||||
command = pack_ping_command(pdu1_object_id, ping_data)
|
command = pack_ping_command(object_id, ping_data)
|
||||||
command = PusTelecommand(service=8, subservice=128, ssc=22, app_data=command)
|
command = PusTelecommand(service=8, subservice=128, ssc=22, app_data=command)
|
||||||
tc_queue.appendleft(command.pack_command_tuple())
|
tc_queue.appendleft(command.pack_command_tuple())
|
||||||
if PDU1TestProcedure.all or PDU1TestProcedure.read_temperature:
|
if PDU1TestProcedure.all or PDU1TestProcedure.read_temperature:
|
||||||
tc_queue.appendleft((QueueCommands.PRINT, "PDU1: Testing temperature reading"))
|
tc_queue.appendleft((QueueCommands.PRINT, "PDU1: Testing temperature reading"))
|
||||||
command = pack_get_param_command(
|
command = pack_get_param_command(
|
||||||
pdu1_object_id, TableIds.hk, PDUHkTable.temperature.parameter_address,
|
object_id, TableIds.hk, PDUHkTable.temperature.parameter_address,
|
||||||
PDUHkTable.temperature.parameter_size
|
PDUHkTable.temperature.parameter_size
|
||||||
)
|
)
|
||||||
command = PusTelecommand(service=8, subservice=128, ssc=24, app_data=command)
|
command = PusTelecommand(service=8, subservice=128, ssc=24, app_data=command)
|
||||||
tc_queue.appendleft(command.pack_command_tuple())
|
tc_queue.appendleft(command.pack_command_tuple())
|
||||||
if PDU1TestProcedure.all or PDU1TestProcedure.turn_channel_2_on:
|
if PDU1TestProcedure.all or PDU1TestProcedure.turn_channel_2_on:
|
||||||
tc_queue.appendleft((QueueCommands.PRINT, "PDU1: Turn channel 2 on (Star Tracker)"))
|
tc_queue.appendleft((QueueCommands.PRINT, "PDU1: Turn channel 2 on (Star Tracker)"))
|
||||||
command = pack_set_param_command(pdu1_object_id, PDUConfigTable.out_en_2.parameter_address,
|
command = pack_set_param_command(object_id, PDUConfigTable.out_en_2.parameter_address,
|
||||||
PDUConfigTable.out_en_2.parameter_size, Channel.on)
|
PDUConfigTable.out_en_2.parameter_size, Channel.on)
|
||||||
command = PusTelecommand(service=8, subservice=128, ssc=30, app_data=command)
|
command = PusTelecommand(service=8, subservice=128, ssc=30, app_data=command)
|
||||||
tc_queue.appendleft(command.pack_command_tuple())
|
tc_queue.appendleft(command.pack_command_tuple())
|
||||||
if PDU1TestProcedure.all or PDU1TestProcedure.turn_channel_2_off:
|
if PDU1TestProcedure.all or PDU1TestProcedure.turn_channel_2_off:
|
||||||
tc_queue.appendleft((QueueCommands.PRINT, "PDU1: Turn channel 2 off (Star Tracker)"))
|
tc_queue.appendleft((QueueCommands.PRINT, "PDU1: Turn channel 2 off (Star Tracker)"))
|
||||||
command = pack_set_param_command(pdu1_object_id, PDUConfigTable.out_en_2.parameter_address,
|
command = pack_set_param_command(object_id, PDUConfigTable.out_en_2.parameter_address,
|
||||||
PDUConfigTable.out_en_2.parameter_size, Channel.off)
|
PDUConfigTable.out_en_2.parameter_size, Channel.off)
|
||||||
command = PusTelecommand(service=8, subservice=128, ssc=31, app_data=command)
|
command = PusTelecommand(service=8, subservice=128, ssc=31, app_data=command)
|
||||||
tc_queue.appendleft(command.pack_command_tuple())
|
tc_queue.appendleft(command.pack_command_tuple())
|
||||||
if PDU1TestProcedure.all or PDU1TestProcedure.turn_channel_3_on:
|
if PDU1TestProcedure.all or PDU1TestProcedure.turn_channel_3_on:
|
||||||
tc_queue.appendleft((QueueCommands.PRINT, "PDU1: Turn channel 3 on (MTQ)"))
|
tc_queue.appendleft((QueueCommands.PRINT, "PDU1: Turn channel 3 on (MTQ)"))
|
||||||
command = pack_set_param_command(pdu1_object_id, PDUConfigTable.out_en_3.parameter_address,
|
command = pack_set_param_command(object_id, PDUConfigTable.out_en_3.parameter_address,
|
||||||
PDUConfigTable.out_en_3.parameter_size, Channel.on)
|
PDUConfigTable.out_en_3.parameter_size, Channel.on)
|
||||||
command = PusTelecommand(service=8, subservice=128, ssc=32, app_data=command)
|
command = PusTelecommand(service=8, subservice=128, ssc=32, app_data=command)
|
||||||
tc_queue.appendleft(command.pack_command_tuple())
|
tc_queue.appendleft(command.pack_command_tuple())
|
||||||
if PDU1TestProcedure.all or PDU1TestProcedure.turn_channel_3_off:
|
if PDU1TestProcedure.all or PDU1TestProcedure.turn_channel_3_off:
|
||||||
tc_queue.appendleft((QueueCommands.PRINT, "PDU1: Turn channel 3 off (MTQ)"))
|
tc_queue.appendleft((QueueCommands.PRINT, "PDU1: Turn channel 3 off (MTQ)"))
|
||||||
command = pack_set_param_command(pdu1_object_id, PDUConfigTable.out_en_3.parameter_address,
|
command = pack_set_param_command(object_id, PDUConfigTable.out_en_3.parameter_address,
|
||||||
PDUConfigTable.out_en_3.parameter_size, Channel.off)
|
PDUConfigTable.out_en_3.parameter_size, Channel.off)
|
||||||
command = PusTelecommand(service=8, subservice=128, ssc=33, app_data=command)
|
command = PusTelecommand(service=8, subservice=128, ssc=33, app_data=command)
|
||||||
tc_queue.appendleft(command.pack_command_tuple())
|
tc_queue.appendleft(command.pack_command_tuple())
|
||||||
|
@@ -2,6 +2,7 @@
|
|||||||
"""
|
"""
|
||||||
@file tmtcc_tc_pdu2.py
|
@file tmtcc_tc_pdu2.py
|
||||||
@brief PDU2 tests
|
@brief PDU2 tests
|
||||||
|
@details PDU2 is mounted on the X2 slot of the P60 dock
|
||||||
@author J. Meier
|
@author J. Meier
|
||||||
@date 17.12.2020
|
@date 17.12.2020
|
||||||
"""
|
"""
|
||||||
@@ -35,70 +36,79 @@ class PDU2TestProcedure:
|
|||||||
request_hk_table = False
|
request_hk_table = False
|
||||||
|
|
||||||
|
|
||||||
def pack_pdu2_test_into(pdu2_object_id: bytearray, p60dock_object_id: bytearray, tc_queue: TcQueueT) -> TcQueueT:
|
def pack_pdu2_test_into(object_id: bytearray, tc_queue: TcQueueT, op_code: str) -> TcQueueT:
|
||||||
tc_queue.appendleft((QueueCommands.PRINT, "Testing PDU2"))
|
tc_queue.appendleft((QueueCommands.PRINT, "Testing PDU2"))
|
||||||
|
|
||||||
tc_queue.appendleft((QueueCommands.PRINT, "P60 Dock: Enabling PDU2"))
|
if op_code == "1":
|
||||||
command = pack_set_param_command(p60dock_object_id, P60DockConfigTable.out_en_3.parameter_address,
|
tc_queue.appendleft((QueueCommands.PRINT, "PDU2: Turn ACS Side B on"))
|
||||||
P60DockConfigTable.out_en_3.parameter_size, Channel.on)
|
command = pack_set_param_command(object_id, PDUConfigTable.out_en_7.parameter_address,
|
||||||
command = PusTelecommand(service=8, subservice=128, ssc=23, app_data=command)
|
PDUConfigTable.out_en_7.parameter_size, Channel.on)
|
||||||
tc_queue.appendleft(command.pack_command_tuple())
|
command = PusTelecommand(service=8, subservice=128, ssc=30, app_data=command)
|
||||||
|
tc_queue.appendleft(command.pack_command_tuple())
|
||||||
|
return tc_queue
|
||||||
|
if op_code == "2":
|
||||||
|
tc_queue.appendleft((QueueCommands.PRINT, "PDU2: Turn ACS Side B off"))
|
||||||
|
command = pack_set_param_command(object_id, PDUConfigTable.out_en_7.parameter_address,
|
||||||
|
PDUConfigTable.out_en_7.parameter_size, Channel.off)
|
||||||
|
command = PusTelecommand(service=8, subservice=128, ssc=31, app_data=command)
|
||||||
|
tc_queue.appendleft(command.pack_command_tuple())
|
||||||
|
return tc_queue
|
||||||
|
|
||||||
if PDU2TestProcedure.all or PDU2TestProcedure.reboot:
|
if PDU2TestProcedure.all or PDU2TestProcedure.reboot:
|
||||||
tc_queue.appendleft((QueueCommands.PRINT, "PDU2: Reboot"))
|
tc_queue.appendleft((QueueCommands.PRINT, "PDU2: Reboot"))
|
||||||
command = pack_reboot_command(pdu2_object_id)
|
command = pack_reboot_command(object_id)
|
||||||
command = PusTelecommand(service=8, subservice=128, ssc=22, app_data=command)
|
command = PusTelecommand(service=8, subservice=128, ssc=22, app_data=command)
|
||||||
tc_queue.appendleft(command.pack_command_tuple())
|
tc_queue.appendleft(command.pack_command_tuple())
|
||||||
if PDU2TestProcedure.all or PDU2TestProcedure.read_gnd_wdt:
|
if PDU2TestProcedure.all or PDU2TestProcedure.read_gnd_wdt:
|
||||||
tc_queue.appendleft((QueueCommands.PRINT, "PDU2: Reading ground watchdog timer value"))
|
tc_queue.appendleft((QueueCommands.PRINT, "PDU2: Reading ground watchdog timer value"))
|
||||||
command = pack_get_param_command(pdu2_object_id, TableIds.hk, PDUHkTable.wdt_gnd_left.parameter_address,
|
command = pack_get_param_command(object_id, TableIds.hk, PDUHkTable.wdt_gnd_left.parameter_address,
|
||||||
PDUHkTable.wdt_gnd_left.parameter_size)
|
PDUHkTable.wdt_gnd_left.parameter_size)
|
||||||
command = PusTelecommand(service=8, subservice=128, ssc=20, app_data=command)
|
command = PusTelecommand(service=8, subservice=128, ssc=20, app_data=command)
|
||||||
tc_queue.appendleft(command.pack_command_tuple())
|
tc_queue.appendleft(command.pack_command_tuple())
|
||||||
if PDU2TestProcedure.all or PDU2TestProcedure.gnd_wdt_reset:
|
if PDU2TestProcedure.all or PDU2TestProcedure.gnd_wdt_reset:
|
||||||
tc_queue.appendleft((QueueCommands.PRINT, "PDU2: Testing ground watchdog reset"))
|
tc_queue.appendleft((QueueCommands.PRINT, "PDU2: Testing ground watchdog reset"))
|
||||||
command = pack_gnd_wdt_reset_command(pdu2_object_id)
|
command = pack_gnd_wdt_reset_command(object_id)
|
||||||
command = PusTelecommand(service=8, subservice=128, ssc=21, app_data=command)
|
command = PusTelecommand(service=8, subservice=128, ssc=21, app_data=command)
|
||||||
tc_queue.appendleft(command.pack_command_tuple())
|
tc_queue.appendleft(command.pack_command_tuple())
|
||||||
if PDU2TestProcedure.all or PDU2TestProcedure.ping:
|
if PDU2TestProcedure.all or PDU2TestProcedure.ping:
|
||||||
tc_queue.appendleft((QueueCommands.PRINT, "PDU2: Ping Test"))
|
tc_queue.appendleft((QueueCommands.PRINT, "PDU2: Ping Test"))
|
||||||
ping_data = bytearray([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
|
ping_data = bytearray([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
|
||||||
command = pack_ping_command(pdu2_object_id, ping_data)
|
command = pack_ping_command(object_id, ping_data)
|
||||||
command = PusTelecommand(service=8, subservice=128, ssc=22, app_data=command)
|
command = PusTelecommand(service=8, subservice=128, ssc=22, app_data=command)
|
||||||
tc_queue.appendleft(command.pack_command_tuple())
|
tc_queue.appendleft(command.pack_command_tuple())
|
||||||
if PDU2TestProcedure.all or PDU2TestProcedure.channel_2_on:
|
if PDU2TestProcedure.all or PDU2TestProcedure.channel_2_on:
|
||||||
tc_queue.appendleft((QueueCommands.PRINT, "PDU2: Testing setting output channel 2 on (TCS Heater)"))
|
tc_queue.appendleft((QueueCommands.PRINT, "PDU2: Testing setting output channel 2 on (TCS Heater)"))
|
||||||
command = pack_set_param_command(pdu2_object_id, PDUConfigTable.out_en_2.parameter_address,
|
command = pack_set_param_command(object_id, PDUConfigTable.out_en_2.parameter_address,
|
||||||
PDUConfigTable.out_en_2.parameter_size, Channel.on)
|
PDUConfigTable.out_en_2.parameter_size, Channel.on)
|
||||||
command = PusTelecommand(service=8, subservice=128, ssc=23, app_data=command)
|
command = PusTelecommand(service=8, subservice=128, ssc=23, app_data=command)
|
||||||
tc_queue.appendleft(command.pack_command_tuple())
|
tc_queue.appendleft(command.pack_command_tuple())
|
||||||
if PDU2TestProcedure.all or PDU2TestProcedure.read_temperature:
|
if PDU2TestProcedure.all or PDU2TestProcedure.read_temperature:
|
||||||
tc_queue.appendleft((QueueCommands.PRINT, "PDU2: Testing temperature reading"))
|
tc_queue.appendleft((QueueCommands.PRINT, "PDU2: Testing temperature reading"))
|
||||||
command = pack_get_param_command(pdu2_object_id, TableIds.hk, PDUHkTable.temperature.parameter_address,
|
command = pack_get_param_command(object_id, TableIds.hk, PDUHkTable.temperature.parameter_address,
|
||||||
PDUHkTable.temperature.parameter_size)
|
PDUHkTable.temperature.parameter_size)
|
||||||
command = PusTelecommand(service=8, subservice=128, ssc=24, app_data=command)
|
command = PusTelecommand(service=8, subservice=128, ssc=24, app_data=command)
|
||||||
tc_queue.appendleft(command.pack_command_tuple())
|
tc_queue.appendleft(command.pack_command_tuple())
|
||||||
if PDU2TestProcedure.all or PDU2TestProcedure.read_channel_2_state:
|
if PDU2TestProcedure.all or PDU2TestProcedure.read_channel_2_state:
|
||||||
tc_queue.appendleft((QueueCommands.PRINT, "PDU2: Reading output channel 2 state (TCS Heater)"))
|
tc_queue.appendleft((QueueCommands.PRINT, "PDU2: Reading output channel 2 state (TCS Heater)"))
|
||||||
command = pack_get_param_command(pdu2_object_id, TableIds.config, PDUConfigTable.out_en_2.parameter_address,
|
command = pack_get_param_command(object_id, TableIds.config, PDUConfigTable.out_en_2.parameter_address,
|
||||||
PDUConfigTable.out_en_2.parameter_size)
|
PDUConfigTable.out_en_2.parameter_size)
|
||||||
command = PusTelecommand(service=8, subservice=128, ssc=25, app_data=command)
|
command = PusTelecommand(service=8, subservice=128, ssc=25, app_data=command)
|
||||||
tc_queue.appendleft(command.pack_command_tuple())
|
tc_queue.appendleft(command.pack_command_tuple())
|
||||||
if PDU2TestProcedure.all or PDU2TestProcedure.read_cur_lu_lim_0:
|
if PDU2TestProcedure.all or PDU2TestProcedure.read_cur_lu_lim_0:
|
||||||
tc_queue.appendleft((QueueCommands.PRINT, "PDU2: Reading current limit value of output channel 0 (OBC)"))
|
tc_queue.appendleft((QueueCommands.PRINT, "PDU2: Reading current limit value of output channel 0 (OBC)"))
|
||||||
command = pack_get_param_command(pdu2_object_id, TableIds.config, PDUConfigTable.cur_lu_lim_0.parameter_address,
|
command = pack_get_param_command(object_id, TableIds.config, PDUConfigTable.cur_lu_lim_0.parameter_address,
|
||||||
PDUConfigTable.cur_lu_lim_0.parameter_size)
|
PDUConfigTable.cur_lu_lim_0.parameter_size)
|
||||||
command = PusTelecommand(service=8, subservice=128, ssc=26, app_data=command)
|
command = PusTelecommand(service=8, subservice=128, ssc=26, app_data=command)
|
||||||
tc_queue.appendleft(command.pack_command_tuple())
|
tc_queue.appendleft(command.pack_command_tuple())
|
||||||
if PDU2TestProcedure.all or PDU2TestProcedure.channel_2_off:
|
if PDU2TestProcedure.all or PDU2TestProcedure.channel_2_off:
|
||||||
tc_queue.appendleft((QueueCommands.PRINT, "PDU2: Testing setting output channel 2 off"))
|
tc_queue.appendleft((QueueCommands.PRINT, "PDU2: Testing setting output channel 2 off"))
|
||||||
command = pack_set_param_command(pdu2_object_id, PDUConfigTable.out_en_2.parameter_address,
|
command = pack_set_param_command(object_id, PDUConfigTable.out_en_2.parameter_address,
|
||||||
PDUConfigTable.out_en_2.parameter_size, Channel.off)
|
PDUConfigTable.out_en_2.parameter_size, Channel.off)
|
||||||
command = PusTelecommand(service=8, subservice=128, ssc=27, app_data=command)
|
command = PusTelecommand(service=8, subservice=128, ssc=27, app_data=command)
|
||||||
tc_queue.appendleft(command.pack_command_tuple())
|
tc_queue.appendleft(command.pack_command_tuple())
|
||||||
if PDU2TestProcedure.all or PDU2TestProcedure.request_hk_table:
|
if PDU2TestProcedure.all or PDU2TestProcedure.request_hk_table:
|
||||||
tc_queue.appendleft((QueueCommands.PRINT, "PDU2: Requesting housekeeping table"))
|
tc_queue.appendleft((QueueCommands.PRINT, "PDU2: Requesting housekeeping table"))
|
||||||
command = pack_request_full_hk_table_command(pdu2_object_id)
|
command = pack_request_full_hk_table_command(object_id)
|
||||||
command = PusTelecommand(service=8, subservice=128, ssc=28, app_data=command)
|
command = PusTelecommand(service=8, subservice=128, ssc=28, app_data=command)
|
||||||
tc_queue.appendleft(command.pack_command_tuple())
|
tc_queue.appendleft(command.pack_command_tuple())
|
||||||
|
|
||||||
|
41
pus_tc/ploc_memory_dumper.py
Normal file
41
pus_tc/ploc_memory_dumper.py
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
"""
|
||||||
|
@file ploc_memory_dumper.py
|
||||||
|
@brief This file implements the command to dump memory sectors of the PLOC. Memories of the PLOC which can be dumped
|
||||||
|
are one MRAM, two flash memories and the SRAM.
|
||||||
|
@author J. Meier
|
||||||
|
@date 31.08.2021
|
||||||
|
"""
|
||||||
|
import struct
|
||||||
|
|
||||||
|
from tmtccmd.config.definitions import QueueCommands
|
||||||
|
|
||||||
|
from tmtccmd.tc.packer import TcQueueT
|
||||||
|
from tmtccmd.ecss.tc import PusTelecommand
|
||||||
|
|
||||||
|
|
||||||
|
class ActionIds:
|
||||||
|
DUMP_MRAM = 1
|
||||||
|
|
||||||
|
|
||||||
|
def pack_ploc_memory_dumper_cmd(object_id: bytearray, tc_queue: TcQueueT, op_code: str) -> TcQueueT:
|
||||||
|
tc_queue.appendleft(
|
||||||
|
(QueueCommands.PRINT,
|
||||||
|
"Testing PLOC memory dumper with object id: 0x" + object_id.hex())
|
||||||
|
)
|
||||||
|
|
||||||
|
if op_code == "0":
|
||||||
|
tc_queue.appendleft((QueueCommands.PRINT, "PLOC Supervisor: Dump MRAM"))
|
||||||
|
command = pack_mram_dump_cmd(object_id)
|
||||||
|
command = PusTelecommand(service=8, subservice=128, ssc=30, app_data=command)
|
||||||
|
tc_queue.appendleft(command.pack_command_tuple())
|
||||||
|
|
||||||
|
|
||||||
|
def pack_mram_dump_cmd(object_id: bytearray) -> bytearray:
|
||||||
|
start = int(input("Start address: 0x"), 16)
|
||||||
|
end = int(input("End address: 0x"), 16)
|
||||||
|
command = bytearray()
|
||||||
|
command = object_id + struct.pack('!I', ActionIds.DUMP_MRAM)
|
||||||
|
command = command + struct.pack('!I', start)
|
||||||
|
command = command + struct.pack('!I', end)
|
||||||
|
return command
|
@@ -12,7 +12,19 @@ from tmtccmd.config.definitions import QueueCommands
|
|||||||
|
|
||||||
from tmtccmd.tc.packer import TcQueueT
|
from tmtccmd.tc.packer import TcQueueT
|
||||||
from tmtccmd.ecss.tc import PusTelecommand
|
from tmtccmd.ecss.tc import PusTelecommand
|
||||||
|
from tmtccmd.utility.logger import get_console_logger
|
||||||
|
|
||||||
|
LOGGER = get_console_logger()
|
||||||
|
|
||||||
|
latchup_id_dict = {
|
||||||
|
"0": "0.85V",
|
||||||
|
"1": "1.8V",
|
||||||
|
"2": "MISC",
|
||||||
|
"3": "3.3V",
|
||||||
|
"4": "NVM_4XO",
|
||||||
|
"5": "MISSION",
|
||||||
|
"6": "SAFECOTS"
|
||||||
|
}
|
||||||
|
|
||||||
class SupvActionIds:
|
class SupvActionIds:
|
||||||
HK_REPORT = 1
|
HK_REPORT = 1
|
||||||
@@ -25,10 +37,42 @@ class SupvActionIds:
|
|||||||
RESET_MPSOC = 8
|
RESET_MPSOC = 8
|
||||||
SET_TIME_REF = 9
|
SET_TIME_REF = 9
|
||||||
DISABLE_HK = 10
|
DISABLE_HK = 10
|
||||||
|
GET_BOOT_STATUS_REPORT = 11
|
||||||
|
UPDATE_AVAILABLE = 12
|
||||||
|
WATCHDOGS_ENABLE = 13
|
||||||
|
WATCHDOGS_CONFIG_TIMEOUT = 14
|
||||||
|
ENABLE_LATCHUP_ALERT = 15
|
||||||
|
DISABLE_LATCHUP_ALERT = 16
|
||||||
|
AUTO_CALIBRATE_ALERT = 17
|
||||||
|
SET_ALERT_LIMIT = 18
|
||||||
|
SET_ALERT_IRQ_FILTER = 19
|
||||||
|
SET_ADC_SWEEP_PERIOD = 20
|
||||||
|
SET_ADC_ENABLED_CHANNELS = 21
|
||||||
|
SET_ADC_WINDOW_AND_STRIDE = 22
|
||||||
|
SET_ADC_THRESHOLD = 23
|
||||||
|
GET_LATCHUP_STATUS_REPORT = 24
|
||||||
|
COPY_ADC_DATA_TO_MRAM = 25
|
||||||
|
ENABLE_NVMS = 26
|
||||||
|
SELECT_NVM = 27
|
||||||
|
RUN_AUTO_EM_TESTS = 28
|
||||||
|
WIPE_MRAM = 29
|
||||||
|
DUMP_MRAM = 30
|
||||||
|
SET_DBG_VERBOSITY = 31
|
||||||
|
CAN_LOOPBACK_TEST = 32
|
||||||
|
PRINT_CPU_STATS = 33
|
||||||
|
SET_GPIO = 34
|
||||||
|
READ_GPIO = 35
|
||||||
|
RESTART_SUPERVISOR = 36
|
||||||
|
FACTORY_RESET_CLEAR_ALL = 37
|
||||||
|
REQUEST_LOGGING_DATA = 38
|
||||||
|
UPDATE_IMAGE_DATA = 39
|
||||||
|
FACTORY_RESET_CLEAR_MIRROR = 40
|
||||||
|
FACTORY_RESET_CLEAR_CIRCULAR = 41
|
||||||
|
|
||||||
|
|
||||||
class SupvHkIds:
|
class SupvHkIds:
|
||||||
HK_REPORT = 52
|
HK_REPORT = 52
|
||||||
|
BOOT_STATUS_REPORT = 53
|
||||||
|
|
||||||
|
|
||||||
def pack_ploc_supv_test_into(object_id: bytearray, tc_queue: TcQueueT, op_code: str) -> TcQueueT:
|
def pack_ploc_supv_test_into(object_id: bytearray, tc_queue: TcQueueT, op_code: str) -> TcQueueT:
|
||||||
@@ -91,7 +135,147 @@ def pack_ploc_supv_test_into(object_id: bytearray, tc_queue: TcQueueT, op_code:
|
|||||||
elif op_code == "12":
|
elif op_code == "12":
|
||||||
tc_queue.appendleft((QueueCommands.PRINT, "PLOC Supervisor: Disable HK"))
|
tc_queue.appendleft((QueueCommands.PRINT, "PLOC Supervisor: Disable HK"))
|
||||||
command = object_id + struct.pack('!I', SupvActionIds.DISABLE_HK)
|
command = object_id + struct.pack('!I', SupvActionIds.DISABLE_HK)
|
||||||
command = PusTelecommand(service=8, subservice=128, ssc=28, app_data=command)
|
command = PusTelecommand(service=8, subservice=128, ssc=29, app_data=command)
|
||||||
|
tc_queue.appendleft(command.pack_command_tuple())
|
||||||
|
elif op_code == "13":
|
||||||
|
tc_queue.appendleft((QueueCommands.PRINT, "PLOC Supervisor: Request boot status report"))
|
||||||
|
command = object_id + struct.pack('!I', SupvActionIds.GET_BOOT_STATUS_REPORT)
|
||||||
|
command = PusTelecommand(service=8, subservice=128, ssc=30, app_data=command)
|
||||||
|
tc_queue.appendleft(command.pack_command_tuple())
|
||||||
|
elif op_code == "14":
|
||||||
|
tc_queue.appendleft((QueueCommands.PRINT, "PLOC Supervisor: Update available"))
|
||||||
|
command = pack_update_available_cmd(object_id)
|
||||||
|
command = PusTelecommand(service=8, subservice=128, ssc=31, app_data=command)
|
||||||
|
tc_queue.appendleft(command.pack_command_tuple())
|
||||||
|
elif op_code == "15":
|
||||||
|
tc_queue.appendleft((QueueCommands.PRINT, "PLOC Supervisor: Watchdogs Enable"))
|
||||||
|
command = pack_watchdogs_enable_cmd(object_id)
|
||||||
|
command = PusTelecommand(service=8, subservice=128, ssc=32, app_data=command)
|
||||||
|
tc_queue.appendleft(command.pack_command_tuple())
|
||||||
|
elif op_code == "16":
|
||||||
|
tc_queue.appendleft((QueueCommands.PRINT, "PLOC Supervisor: Watchdog configure timeout"))
|
||||||
|
command = pack_watchdog_config_timeout_cmd(object_id)
|
||||||
|
command = PusTelecommand(service=8, subservice=128, ssc=33, app_data=command)
|
||||||
|
tc_queue.appendleft(command.pack_command_tuple())
|
||||||
|
elif op_code == "17":
|
||||||
|
tc_queue.appendleft((QueueCommands.PRINT, "PLOC Supervisor: Enable latchup alert"))
|
||||||
|
command = pack_lachtup_alert_cmd(object_id, True)
|
||||||
|
command = PusTelecommand(service=8, subservice=128, ssc=34, app_data=command)
|
||||||
|
tc_queue.appendleft(command.pack_command_tuple())
|
||||||
|
elif op_code == "18":
|
||||||
|
tc_queue.appendleft((QueueCommands.PRINT, "PLOC Supervisor: Disable latchup alert"))
|
||||||
|
command = pack_lachtup_alert_cmd(object_id, False)
|
||||||
|
command = PusTelecommand(service=8, subservice=128, ssc=35, app_data=command)
|
||||||
|
tc_queue.appendleft(command.pack_command_tuple())
|
||||||
|
elif op_code == "19":
|
||||||
|
tc_queue.appendleft((QueueCommands.PRINT, "PLOC Supervisor: Auto calibrate alert"))
|
||||||
|
command = pack_auto_calibrate_alert_cmd(object_id)
|
||||||
|
command = PusTelecommand(service=8, subservice=128, ssc=36, app_data=command)
|
||||||
|
tc_queue.appendleft(command.pack_command_tuple())
|
||||||
|
elif op_code == "20":
|
||||||
|
tc_queue.appendleft((QueueCommands.PRINT, "PLOC Supervisor: Set alert limit"))
|
||||||
|
command = pack_set_alert_limit_cmd(object_id)
|
||||||
|
command = PusTelecommand(service=8, subservice=128, ssc=37, app_data=command)
|
||||||
|
tc_queue.appendleft(command.pack_command_tuple())
|
||||||
|
elif op_code == "21":
|
||||||
|
tc_queue.appendleft((QueueCommands.PRINT, "PLOC Supervisor: Set alert irq filter"))
|
||||||
|
command = pack_set_alert_irq_filter_cmd(object_id)
|
||||||
|
command = PusTelecommand(service=8, subservice=128, ssc=38, app_data=command)
|
||||||
|
tc_queue.appendleft(command.pack_command_tuple())
|
||||||
|
elif op_code == "22":
|
||||||
|
tc_queue.appendleft((QueueCommands.PRINT, "PLOC Supervisor: Set ADC sweep period"))
|
||||||
|
command = pack_set_adc_sweep_period_cmd(object_id)
|
||||||
|
command = PusTelecommand(service=8, subservice=128, ssc=39, app_data=command)
|
||||||
|
tc_queue.appendleft(command.pack_command_tuple())
|
||||||
|
elif op_code == "23":
|
||||||
|
tc_queue.appendleft((QueueCommands.PRINT, "PLOC Supervisor: Set ADC enabled channels"))
|
||||||
|
command = pack_set_adc_enabled_channels_cmd(object_id)
|
||||||
|
command = PusTelecommand(service=8, subservice=128, ssc=40, app_data=command)
|
||||||
|
tc_queue.appendleft(command.pack_command_tuple())
|
||||||
|
elif op_code == "24":
|
||||||
|
tc_queue.appendleft((QueueCommands.PRINT, "PLOC Supervisor: Set ADC window and stride"))
|
||||||
|
command = pack_set_adc_window_and_stride_cmd(object_id)
|
||||||
|
command = PusTelecommand(service=8, subservice=128, ssc=41, app_data=command)
|
||||||
|
tc_queue.appendleft(command.pack_command_tuple())
|
||||||
|
elif op_code == "25":
|
||||||
|
tc_queue.appendleft((QueueCommands.PRINT, "PLOC Supervisor: Set ADC threshold"))
|
||||||
|
command = pack_set_adc_threshold_cmd(object_id)
|
||||||
|
command = PusTelecommand(service=8, subservice=128, ssc=42, app_data=command)
|
||||||
|
tc_queue.appendleft(command.pack_command_tuple())
|
||||||
|
elif op_code == "26":
|
||||||
|
tc_queue.appendleft((QueueCommands.PRINT, "PLOC Supervisor: Request latchup status report"))
|
||||||
|
command = object_id + struct.pack('!I', SupvActionIds.GET_LATCHUP_STATUS_REPORT)
|
||||||
|
command = PusTelecommand(service=8, subservice=128, ssc=43, app_data=command)
|
||||||
|
tc_queue.appendleft(command.pack_command_tuple())
|
||||||
|
elif op_code == "27":
|
||||||
|
tc_queue.appendleft((QueueCommands.PRINT, "PLOC Supervisor: Copy ADC data to MRAM"))
|
||||||
|
command = object_id + struct.pack('!I', SupvActionIds.COPY_ADC_DATA_TO_MRAM)
|
||||||
|
command = PusTelecommand(service=8, subservice=128, ssc=44, app_data=command)
|
||||||
|
tc_queue.appendleft(command.pack_command_tuple())
|
||||||
|
elif op_code == "28":
|
||||||
|
tc_queue.appendleft((QueueCommands.PRINT, "PLOC Supervisor: Enalbe/Disable NVMs"))
|
||||||
|
command = pack_enable_nvms_cmd(object_id)
|
||||||
|
command = PusTelecommand(service=8, subservice=128, ssc=45, app_data=command)
|
||||||
|
tc_queue.appendleft(command.pack_command_tuple())
|
||||||
|
elif op_code == "29":
|
||||||
|
tc_queue.appendleft((QueueCommands.PRINT, "PLOC Supervisor: Select NVM"))
|
||||||
|
command = pack_select_nvm_cmd(object_id)
|
||||||
|
command = PusTelecommand(service=8, subservice=128, ssc=45, app_data=command)
|
||||||
|
tc_queue.appendleft(command.pack_command_tuple())
|
||||||
|
elif op_code == "30":
|
||||||
|
tc_queue.appendleft((QueueCommands.PRINT, "PLOC Supervisor: Run auto EM tests"))
|
||||||
|
command = pack_auto_em_tests_cmd(object_id)
|
||||||
|
command = PusTelecommand(service=8, subservice=128, ssc=45, app_data=command)
|
||||||
|
tc_queue.appendleft(command.pack_command_tuple())
|
||||||
|
elif op_code == "31":
|
||||||
|
tc_queue.appendleft((QueueCommands.PRINT, "PLOC Supervisor: Wipe MRAM"))
|
||||||
|
command = pack_mram_wipe_cmd(object_id)
|
||||||
|
command = PusTelecommand(service=8, subservice=128, ssc=46, app_data=command)
|
||||||
|
tc_queue.appendleft(command.pack_command_tuple())
|
||||||
|
elif op_code == "33":
|
||||||
|
tc_queue.appendleft((QueueCommands.PRINT, "PLOC Supervisor: Print CPU stats"))
|
||||||
|
command = pack_print_cpu_stats_cmd(object_id)
|
||||||
|
command = PusTelecommand(service=8, subservice=128, ssc=48, app_data=command)
|
||||||
|
tc_queue.appendleft(command.pack_command_tuple())
|
||||||
|
elif op_code == "34":
|
||||||
|
tc_queue.appendleft((QueueCommands.PRINT, "PLOC Supervisor: Set debug verbosity"))
|
||||||
|
command = pack_set_debug_verbosity_cmd(object_id)
|
||||||
|
command = PusTelecommand(service=8, subservice=128, ssc=49, app_data=command)
|
||||||
|
tc_queue.appendleft(command.pack_command_tuple())
|
||||||
|
elif op_code == "35":
|
||||||
|
tc_queue.appendleft((QueueCommands.PRINT, "PLOC Supervisor: Set GPIO command"))
|
||||||
|
command = pack_set_gpio_cmd(object_id)
|
||||||
|
command = PusTelecommand(service=8, subservice=128, ssc=50, app_data=command)
|
||||||
|
tc_queue.appendleft(command.pack_command_tuple())
|
||||||
|
elif op_code == "36":
|
||||||
|
tc_queue.appendleft((QueueCommands.PRINT, "PLOC Supervisor: Read GPIO command"))
|
||||||
|
command = pack_read_gpio_cmd(object_id)
|
||||||
|
command = PusTelecommand(service=8, subservice=128, ssc=51, app_data=command)
|
||||||
|
tc_queue.appendleft(command.pack_command_tuple())
|
||||||
|
elif op_code == "37":
|
||||||
|
tc_queue.appendleft((QueueCommands.PRINT, "PLOC Supervisor: Restart supervisor"))
|
||||||
|
command = command = object_id + struct.pack('!I', SupvActionIds.RESTART_SUPERVISOR)
|
||||||
|
command = PusTelecommand(service=8, subservice=128, ssc=52, app_data=command)
|
||||||
|
tc_queue.appendleft(command.pack_command_tuple())
|
||||||
|
elif op_code == "38":
|
||||||
|
tc_queue.appendleft((QueueCommands.PRINT, "PLOC Supervisor: Factory reset clear all"))
|
||||||
|
command = command = object_id + struct.pack('!I', SupvActionIds.FACTORY_RESET_CLEAR_ALL)
|
||||||
|
command = PusTelecommand(service=8, subservice=128, ssc=53, app_data=command)
|
||||||
|
tc_queue.appendleft(command.pack_command_tuple())
|
||||||
|
elif op_code == "39":
|
||||||
|
tc_queue.appendleft((QueueCommands.PRINT, "PLOC Supervisor: Factory reset clear mirror entries"))
|
||||||
|
command = command = object_id + struct.pack('!I', SupvActionIds.FACTORY_RESET_CLEAR_MIRROR)
|
||||||
|
command = PusTelecommand(service=8, subservice=128, ssc=54, app_data=command)
|
||||||
|
tc_queue.appendleft(command.pack_command_tuple())
|
||||||
|
elif op_code == "40":
|
||||||
|
tc_queue.appendleft((QueueCommands.PRINT, "PLOC Supervisor: Factory reset clear circular entries"))
|
||||||
|
command = command = object_id + struct.pack('!I', SupvActionIds.FACTORY_RESET_CLEAR_CIRCULAR)
|
||||||
|
command = PusTelecommand(service=8, subservice=128, ssc=55, app_data=command)
|
||||||
|
tc_queue.appendleft(command.pack_command_tuple())
|
||||||
|
elif op_code == "41":
|
||||||
|
tc_queue.appendleft((QueueCommands.PRINT, "PLOC Supervisor: CAN loopback test"))
|
||||||
|
command = command = object_id + struct.pack('!I', SupvActionIds.CAN_LOOPBACK_TEST)
|
||||||
|
command = PusTelecommand(service=8, subservice=128, ssc=56, app_data=command)
|
||||||
tc_queue.appendleft(command.pack_command_tuple())
|
tc_queue.appendleft(command.pack_command_tuple())
|
||||||
|
|
||||||
return tc_queue
|
return tc_queue
|
||||||
@@ -112,3 +296,273 @@ def pack_sel_boot_image_cmd(object_id: bytearray, mem: int, bp0: int, bp1: int,
|
|||||||
command = command + struct.pack('!B', bp1)
|
command = command + struct.pack('!B', bp1)
|
||||||
command = command + struct.pack('!B', bp2)
|
command = command + struct.pack('!B', bp2)
|
||||||
return command
|
return command
|
||||||
|
|
||||||
|
|
||||||
|
def pack_update_available_cmd(object_id: bytearray) -> bytearray:
|
||||||
|
"""
|
||||||
|
@brief This function packs the udpate availabe command.
|
||||||
|
@param object_id The object id of the PLOC supervisor handler.
|
||||||
|
"""
|
||||||
|
image_select = 1
|
||||||
|
image_partition = 0
|
||||||
|
image_size = 222
|
||||||
|
image_crc = 0x0
|
||||||
|
number_of_packets = 150
|
||||||
|
command = bytearray()
|
||||||
|
command = object_id + struct.pack('!I', SupvActionIds.UPDATE_AVAILABLE)
|
||||||
|
command = command + struct.pack('!B', image_select)
|
||||||
|
command = command + struct.pack('!B', image_partition)
|
||||||
|
command = command + struct.pack('!I', image_size)
|
||||||
|
command = command + struct.pack('!I', image_crc)
|
||||||
|
command = command + struct.pack('!I', number_of_packets)
|
||||||
|
return command
|
||||||
|
|
||||||
|
|
||||||
|
def pack_watchdogs_enable_cmd(object_id: bytearray) -> 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 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: bytearray, state: bool) -> bytearray:
|
||||||
|
"""
|
||||||
|
@brief This function packs the command to enable or disable a certain latchup alerts.
|
||||||
|
@param object_id The object id of the PLOC supervisor handler.
|
||||||
|
@param state True - enable latchup alert, False - disable latchup alert
|
||||||
|
"""
|
||||||
|
latchup_id = get_latchup_id()
|
||||||
|
command = bytearray()
|
||||||
|
if state:
|
||||||
|
command = object_id + struct.pack('!I', SupvActionIds.ENABLE_LATCHUP_ALERT)
|
||||||
|
else:
|
||||||
|
command = object_id + struct.pack('!I', SupvActionIds.DISABLE_LATCHUP_ALERT)
|
||||||
|
command = command + struct.pack('!B', latchup_id)
|
||||||
|
return 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:
|
||||||
|
key_column_width = 10
|
||||||
|
description_column_width = 50
|
||||||
|
separator_width = key_column_width + description_column_width + 3
|
||||||
|
separator_string = separator_width * "-"
|
||||||
|
key_string = "Latchup ID".ljust(key_column_width)
|
||||||
|
description_string = "Description".ljust(description_column_width)
|
||||||
|
print(f"{key_string} | {description_string}")
|
||||||
|
print(separator_string)
|
||||||
|
for key in latchup_id_dict:
|
||||||
|
key_string = key.ljust(key_column_width)
|
||||||
|
description_string = latchup_id_dict[key].ljust(description_column_width)
|
||||||
|
print(f"{key_string} | {description_string}")
|
||||||
|
return int(input("Specify latchup ID:"))
|
||||||
|
|
||||||
|
|
||||||
|
def pack_set_alert_limit_cmd(object_id: bytearray) -> bytearray:
|
||||||
|
"""
|
||||||
|
@brief This function packs the command to set the limit of a latchup alert.
|
||||||
|
@param object_id The object id of the PLOC supervisor handler.
|
||||||
|
"""
|
||||||
|
latchup_id = get_latchup_id()
|
||||||
|
dutycycle = int(input("Specify dutycycle:"))
|
||||||
|
command = bytearray()
|
||||||
|
command = object_id + struct.pack('!I', SupvActionIds.SET_ALERT_LIMIT)
|
||||||
|
command = command + struct.pack('!B', latchup_id)
|
||||||
|
command = command + struct.pack('!I', dutycycle)
|
||||||
|
return command
|
||||||
|
|
||||||
|
|
||||||
|
def pack_set_alert_irq_filter_cmd(object_id: bytearray) -> bytearray:
|
||||||
|
"""
|
||||||
|
@brief This function packs the command to configure the latchup alert irq filter.
|
||||||
|
@param object_id The object id of the PLOC supervisor handler.
|
||||||
|
"""
|
||||||
|
latchup_id = get_latchup_id()
|
||||||
|
tp = int(input("Specify filter type (TP):"))
|
||||||
|
div = int(input("Specify clock divider (DIV):"))
|
||||||
|
command = bytearray()
|
||||||
|
command = object_id + struct.pack('!I', SupvActionIds.SET_ALERT_IRQ_FILTER)
|
||||||
|
command = command + struct.pack('!B', latchup_id)
|
||||||
|
command = command + struct.pack('!B', tp)
|
||||||
|
command = command + struct.pack('!B', div)
|
||||||
|
return command
|
||||||
|
|
||||||
|
|
||||||
|
def pack_set_adc_sweep_period_cmd(object_id: bytearray) -> bytearray:
|
||||||
|
"""
|
||||||
|
@brief This function packs the command to set the limit of a latchup alert.
|
||||||
|
@param object_id The object id of the PLOC supervisor handler.
|
||||||
|
"""
|
||||||
|
sweep_period = int(input("Specify sweep period (min 21 us):"))
|
||||||
|
command = bytearray()
|
||||||
|
command = object_id + struct.pack('!I', SupvActionIds.SET_ADC_SWEEP_PERIOD)
|
||||||
|
command = command + struct.pack('!I', sweep_period)
|
||||||
|
return command
|
||||||
|
|
||||||
|
|
||||||
|
def pack_set_adc_enabled_channels_cmd(object_id: bytearray) -> bytearray:
|
||||||
|
"""
|
||||||
|
@brief This function packs the command to enable or disable channels of the ADC.
|
||||||
|
@param object_id The object id of the PLOC supervisor handler.
|
||||||
|
"""
|
||||||
|
ch = int(input("Specify ch:"))
|
||||||
|
command = bytearray()
|
||||||
|
command = object_id + struct.pack('!I', SupvActionIds.SET_ADC_ENABLED_CHANNELS)
|
||||||
|
command = command + struct.pack('!H', ch)
|
||||||
|
return command
|
||||||
|
|
||||||
|
|
||||||
|
def pack_set_adc_window_and_stride_cmd(object_id: bytearray) -> bytearray:
|
||||||
|
window_size = int(input("Specify window size:"))
|
||||||
|
striding_step_size = int(input("Specify striding step size:"))
|
||||||
|
command = bytearray()
|
||||||
|
command = object_id + struct.pack('!I', SupvActionIds.SET_ADC_WINDOW_AND_STRIDE)
|
||||||
|
command = command + struct.pack('!H', window_size)
|
||||||
|
command = command + struct.pack('!H', striding_step_size)
|
||||||
|
return command
|
||||||
|
|
||||||
|
|
||||||
|
def pack_set_adc_threshold_cmd(object_id: bytearray) -> bytearray:
|
||||||
|
threshold = int(input("Specify threshold:"))
|
||||||
|
command = bytearray()
|
||||||
|
command = object_id + struct.pack('!I', SupvActionIds.SET_ADC_THRESHOLD)
|
||||||
|
command = command + struct.pack('!I', threshold)
|
||||||
|
return command
|
||||||
|
|
||||||
|
|
||||||
|
def pack_enable_nvms_cmd(object_id: bytearray) -> bytearray:
|
||||||
|
n01 = int(input("NVM0/1 (0 - off, 1 - on):"))
|
||||||
|
n3 = int(input("NVM3 (0 - off, 1 - on):"))
|
||||||
|
command = bytearray()
|
||||||
|
command = object_id + struct.pack('!I', SupvActionIds.ENABLE_NVMS)
|
||||||
|
command = command + struct.pack('!B', n01)
|
||||||
|
command = command + struct.pack('!B', n3)
|
||||||
|
return command
|
||||||
|
|
||||||
|
|
||||||
|
def pack_select_nvm_cmd(object_id: bytearray) -> bytearray:
|
||||||
|
mem = int(input("Specify NVM (0 - NVM0, 1 - MVM1):"))
|
||||||
|
command = bytearray()
|
||||||
|
command = object_id + struct.pack('!I', SupvActionIds.SELECT_NVM)
|
||||||
|
command = command + struct.pack('!B', mem)
|
||||||
|
return command
|
||||||
|
|
||||||
|
|
||||||
|
def pack_auto_em_tests_cmd(object_id: bytearray) -> bytearray:
|
||||||
|
test = int(input("Specify test (1 - complete, 2 - short):"))
|
||||||
|
command = bytearray()
|
||||||
|
command = object_id + struct.pack('!I', SupvActionIds.RUN_AUTO_EM_TESTS)
|
||||||
|
command = command + struct.pack('!B', test)
|
||||||
|
return command
|
||||||
|
|
||||||
|
|
||||||
|
def pack_mram_wipe_cmd(object_id: bytearray) -> bytearray:
|
||||||
|
start = int(input("Start address: 0x"), 16)
|
||||||
|
stop = int(input("Stop address: 0x"), 16)
|
||||||
|
command = bytearray()
|
||||||
|
command = object_id + struct.pack('!I', SupvActionIds.WIPE_MRAM)
|
||||||
|
command = command + struct.pack('!I', start)
|
||||||
|
command = command + struct.pack('!I', stop)
|
||||||
|
return command
|
||||||
|
|
||||||
|
|
||||||
|
def pack_print_cpu_stats_cmd(object_id: bytearray) -> bytearray:
|
||||||
|
en = 1
|
||||||
|
command = bytearray()
|
||||||
|
command = object_id + struct.pack('!I', SupvActionIds.PRINT_CPU_STATS)
|
||||||
|
command = command + struct.pack('!B', en)
|
||||||
|
return command
|
||||||
|
|
||||||
|
|
||||||
|
def pack_set_debug_verbosity_cmd(object_id: bytearray) -> bytearray:
|
||||||
|
command = bytearray()
|
||||||
|
verbosity = get_debug_verbosity()
|
||||||
|
command = object_id + struct.pack('!I', SupvActionIds.SET_DBG_VERBOSITY)
|
||||||
|
command = command + struct.pack('!B', verbosity)
|
||||||
|
return command
|
||||||
|
|
||||||
|
|
||||||
|
def get_debug_verbosity() -> int:
|
||||||
|
tries = 0
|
||||||
|
while tries < 3:
|
||||||
|
try:
|
||||||
|
print("Debug verbosity options")
|
||||||
|
verbosity_options_dict = {
|
||||||
|
0: "None",
|
||||||
|
1: "Error",
|
||||||
|
2: "Warn",
|
||||||
|
3: "Info",
|
||||||
|
}
|
||||||
|
print("{:<6} | {}".format('Key', 'Description'))
|
||||||
|
for entry in verbosity_options_dict.items():
|
||||||
|
print("{:<6} | {}".format(entry[0], entry[1]))
|
||||||
|
verbosity = int(input("Specify verbosity key: "))
|
||||||
|
if verbosity > len(verbosity_options_dict) - 1:
|
||||||
|
raise ValueError
|
||||||
|
return verbosity
|
||||||
|
except ValueError:
|
||||||
|
LOGGER.warning("Invalid verbosity key specified")
|
||||||
|
tries = tries + 1
|
||||||
|
LOGGER.error("get_debug_verbosity: Exceeded max tries to input verbosity key")
|
||||||
|
quit()
|
||||||
|
|
||||||
|
|
||||||
|
def pack_set_gpio_cmd(object_id: bytearray) -> bytearray:
|
||||||
|
port = int(input("Specify port: "))
|
||||||
|
pin = int(input("Specify pin: "))
|
||||||
|
val = int(input("Specify val: "))
|
||||||
|
command = bytearray()
|
||||||
|
command = object_id + struct.pack('!I', SupvActionIds.SET_GPIO)
|
||||||
|
command = command + struct.pack('!B', port)
|
||||||
|
command = command + struct.pack('!B', pin)
|
||||||
|
command = command + struct.pack('!B', val)
|
||||||
|
return command
|
||||||
|
|
||||||
|
|
||||||
|
def pack_read_gpio_cmd(object_id: bytearray) -> bytearray:
|
||||||
|
port = int(input("Specify port: "))
|
||||||
|
pin = int(input("Specify pin: "))
|
||||||
|
command = bytearray()
|
||||||
|
command = object_id + struct.pack('!I', SupvActionIds.READ_GPIO)
|
||||||
|
command = command + struct.pack('!B', port)
|
||||||
|
command = command + struct.pack('!B', pin)
|
||||||
|
return command
|
||||||
|
|
||||||
|
|
||||||
|
104
pus_tc/ploc_upater.py
Normal file
104
pus_tc/ploc_upater.py
Normal file
@@ -0,0 +1,104 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
"""
|
||||||
|
@file ploc_udpater.py
|
||||||
|
@brief Commands to initiate update transfer to ploc supervisor. This only updates the software of the MPSoC, it is not
|
||||||
|
possible to update the software of the supervisor.
|
||||||
|
The supervisor is programmed by Thales.
|
||||||
|
@author J. Meier
|
||||||
|
@date 10.07.2021
|
||||||
|
"""
|
||||||
|
import struct
|
||||||
|
|
||||||
|
from tmtccmd.config.definitions import QueueCommands
|
||||||
|
|
||||||
|
from tmtccmd.tc.packer import TcQueueT
|
||||||
|
from tmtccmd.ecss.tc import PusTelecommand
|
||||||
|
|
||||||
|
|
||||||
|
latchup_id_dict = {
|
||||||
|
"0": "0.85V",
|
||||||
|
"1": "1.8V",
|
||||||
|
"2": "MISC",
|
||||||
|
"3": "3.3V",
|
||||||
|
"4": "NVM_4XO",
|
||||||
|
"5": "MISSION",
|
||||||
|
"6": "SAFECOTS"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
class UpdaterActionIds:
|
||||||
|
UPDATE_A_UBOOT = 0
|
||||||
|
UPDATE_A_BITSTREAM = 1
|
||||||
|
UPDATE_A_LINUX = 2
|
||||||
|
UPDATE_A_APP_SW = 3
|
||||||
|
UPDATE_B_UBOOT = 4
|
||||||
|
UPDATE_B_BITSTREAM = 5
|
||||||
|
UPDATE_B_LINUX = 6
|
||||||
|
UPDATE_B_LINUX = 7
|
||||||
|
|
||||||
|
|
||||||
|
class ImagePathDefs:
|
||||||
|
imageAuboot = "/mnt/sd0/ploc/updateAuboot.bin"
|
||||||
|
imageAbitsream = "/mnt/sd0/ploc/updateAbitstream.bin"
|
||||||
|
imageAlinux = "/mnt/sd0/ploc/updateAlinux.bin"
|
||||||
|
imageAappsw = "/mnt/sd0/ploc/updateAappsw.bin"
|
||||||
|
imageBuboot = "/mnt/sd0/ploc/updateBuboot.bin"
|
||||||
|
imageBbitsream = "/mnt/sd0/ploc/updateBbitstream.bin"
|
||||||
|
imageBlinux = "/mnt/sd0/ploc/updateBlinux.bin"
|
||||||
|
imageBappsw = "/mnt/sd0/ploc/updateBappsw.bin"
|
||||||
|
|
||||||
|
|
||||||
|
def pack_ploc_updater_test_into(object_id: bytearray, tc_queue: TcQueueT, op_code: str) -> TcQueueT:
|
||||||
|
tc_queue.appendleft(
|
||||||
|
(QueueCommands.PRINT,
|
||||||
|
"Testing PLOC updater with object id: 0x" + object_id.hex())
|
||||||
|
)
|
||||||
|
|
||||||
|
if op_code == "0":
|
||||||
|
tc_queue.appendleft((QueueCommands.PRINT, "PLOC Supervisor: Update uboot on partition A"))
|
||||||
|
command = object_id + struct.pack('!I', UpdaterActionIds.UPDATE_A_UBOOT) + \
|
||||||
|
bytearray(ImagePathDefs.imageAuboot, 'utf-8')
|
||||||
|
command = PusTelecommand(service=8, subservice=128, ssc=30, app_data=command)
|
||||||
|
tc_queue.appendleft(command.pack_command_tuple())
|
||||||
|
if op_code == "1":
|
||||||
|
tc_queue.appendleft((QueueCommands.PRINT, "PLOC Supervisor: Update bitstream on parition A"))
|
||||||
|
command = object_id + struct.pack('!I', UpdaterActionIds.UPDATE_A_BITSTREAM) + \
|
||||||
|
bytearray(ImagePathDefs.imageAbitsream, 'utf-8')
|
||||||
|
command = PusTelecommand(service=8, subservice=128, ssc=31, app_data=command)
|
||||||
|
tc_queue.appendleft(command.pack_command_tuple())
|
||||||
|
if op_code == "2":
|
||||||
|
tc_queue.appendleft((QueueCommands.PRINT, "PLOC Supervisor: Update linux on partition A"))
|
||||||
|
command = object_id + struct.pack('!I', UpdaterActionIds.UPDATE_A_LINUX) + \
|
||||||
|
bytearray(ImagePathDefs.imageAlinux, 'utf-8')
|
||||||
|
command = PusTelecommand(service=8, subservice=128, ssc=32, app_data=command)
|
||||||
|
tc_queue.appendleft(command.pack_command_tuple())
|
||||||
|
if op_code == "3":
|
||||||
|
tc_queue.appendleft((QueueCommands.PRINT, "PLOC Supervisor: Update application on partition A"))
|
||||||
|
command = object_id + struct.pack('!I', UpdaterActionIds.UPDATE_A_APP_SW) + \
|
||||||
|
bytearray(ImagePathDefs.imageAappsw, 'utf-8')
|
||||||
|
command = PusTelecommand(service=8, subservice=128, ssc=33, app_data=command)
|
||||||
|
tc_queue.appendleft(command.pack_command_tuple())
|
||||||
|
if op_code == "4":
|
||||||
|
tc_queue.appendleft((QueueCommands.PRINT, "PLOC Supervisor: Update uboot on partition B"))
|
||||||
|
command = object_id + struct.pack('!I', UpdaterActionIds.UPDATE_B_UBOOT) + \
|
||||||
|
bytearray(ImagePathDefs.imageBuboot, 'utf-8')
|
||||||
|
command = PusTelecommand(service=8, subservice=128, ssc=30, app_data=command)
|
||||||
|
tc_queue.appendleft(command.pack_command_tuple())
|
||||||
|
if op_code == "5":
|
||||||
|
tc_queue.appendleft((QueueCommands.PRINT, "PLOC Supervisor: Update bitstream on parition B"))
|
||||||
|
command = object_id + struct.pack('!I', UpdaterActionIds.UPDATE_B_BITSTREAM) + \
|
||||||
|
bytearray(ImagePathDefs.imageBbitsream, 'utf-8')
|
||||||
|
command = PusTelecommand(service=8, subservice=128, ssc=31, app_data=command)
|
||||||
|
tc_queue.appendleft(command.pack_command_tuple())
|
||||||
|
if op_code == "6":
|
||||||
|
tc_queue.appendleft((QueueCommands.PRINT, "PLOC Supervisor: Update linux on partition B"))
|
||||||
|
command = object_id + struct.pack('!I', UpdaterActionIds.UPDATE_B_LINUX) + \
|
||||||
|
bytearray(ImagePathDefs.imageBlinux, 'utf-8')
|
||||||
|
command = PusTelecommand(service=8, subservice=128, ssc=32, app_data=command)
|
||||||
|
tc_queue.appendleft(command.pack_command_tuple())
|
||||||
|
if op_code == "7":
|
||||||
|
tc_queue.appendleft((QueueCommands.PRINT, "PLOC Supervisor: Update application on partition B"))
|
||||||
|
command = object_id + struct.pack('!I', UpdaterActionIds.UPDATE_B_APP_SW) + \
|
||||||
|
bytearray(ImagePathDefs.imageBappsw, 'utf-8')
|
||||||
|
command = PusTelecommand(service=8, subservice=128, ssc=33, app_data=command)
|
||||||
|
tc_queue.appendleft(command.pack_command_tuple())
|
39
pus_tc/star_tracker.py
Normal file
39
pus_tc/star_tracker.py
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
"""
|
||||||
|
@file star_tracker.py
|
||||||
|
@brief Star tracker commanding
|
||||||
|
@author J. Meier
|
||||||
|
@date 14.08.2021
|
||||||
|
"""
|
||||||
|
import struct
|
||||||
|
|
||||||
|
from tmtccmd.config.definitions import QueueCommands
|
||||||
|
|
||||||
|
from tmtccmd.tc.packer import TcQueueT
|
||||||
|
from tmtccmd.ecss.tc import PusTelecommand
|
||||||
|
|
||||||
|
|
||||||
|
class StarTrackerActionIds:
|
||||||
|
PING = 0
|
||||||
|
REQ_TEMPERATURE = 25
|
||||||
|
|
||||||
|
|
||||||
|
def pack_star_tracker_commands_into(object_id: bytearray, tc_queue: TcQueueT, op_code: str) -> TcQueueT:
|
||||||
|
tc_queue.appendleft(
|
||||||
|
(QueueCommands.PRINT,
|
||||||
|
"Generate command for star tracker with object id: 0x" + object_id.hex())
|
||||||
|
)
|
||||||
|
|
||||||
|
if op_code == "0":
|
||||||
|
tc_queue.appendleft((QueueCommands.PRINT, "Star tracker: Ping"))
|
||||||
|
command = pack_ping_command(object_id)
|
||||||
|
command = PusTelecommand(service=8, subservice=128, ssc=30, app_data=command)
|
||||||
|
tc_queue.appendleft(command.pack_command_tuple())
|
||||||
|
|
||||||
|
|
||||||
|
def pack_ping_command(object_id: bytearray) -> bytearray:
|
||||||
|
data = int(input("Specify ping data: "))
|
||||||
|
command = bytearray()
|
||||||
|
command = object_id + struct.pack('!I', StarTrackerActionIds.PING)
|
||||||
|
command = command + struct.pack('!I', data)
|
||||||
|
return command
|
@@ -26,10 +26,14 @@ from pus_tc.ploc_supervisor import pack_ploc_supv_test_into
|
|||||||
from pus_tc.heater import pack_heater_test_into
|
from pus_tc.heater import pack_heater_test_into
|
||||||
from pus_tc.reaction_wheels import pack_single_rw_test_into
|
from pus_tc.reaction_wheels import pack_single_rw_test_into
|
||||||
from pus_tc.rad_sensor import pack_rad_sensor_test_into
|
from pus_tc.rad_sensor import pack_rad_sensor_test_into
|
||||||
|
from pus_tc.ploc_upater import pack_ploc_updater_test_into
|
||||||
|
from pus_tc.ploc_memory_dumper import pack_ploc_memory_dumper_cmd
|
||||||
|
from pus_tc.core import pack_core_commands
|
||||||
|
from pus_tc.star_tracker import pack_star_tracker_commands_into
|
||||||
from config.definitions import CustomServiceList
|
from config.definitions import CustomServiceList
|
||||||
from config.object_ids import P60_DOCK_HANDLER, PDU_1_HANDLER_ID, PDU_2_HANDLER_ID, ACU_HANDLER_ID, \
|
from config.object_ids import P60_DOCK_HANDLER, PDU_1_HANDLER_ID, PDU_2_HANDLER_ID, ACU_HANDLER_ID, \
|
||||||
TMP_1075_1_HANDLER_ID, TMP_1075_2_HANDLER_ID, HEATER_ID, IMTQ_HANDLER_ID, PLOC_MPSOC_ID, RW1_ID, RW2_ID, RW3_ID, RW4_ID, \
|
TMP_1075_1_HANDLER_ID, TMP_1075_2_HANDLER_ID, HEATER_ID, IMTQ_HANDLER_ID, PLOC_MPSOC_ID, RW1_ID, RW2_ID, RW3_ID, RW4_ID, \
|
||||||
RAD_SENSOR_ID, PLOC_SUPV_ID
|
RAD_SENSOR_ID, PLOC_SUPV_ID, PLOC_UPDATER_ID, STAR_TRACKER_ID, PLOC_MEMORY_DUMPER_ID
|
||||||
|
|
||||||
|
|
||||||
LOGGER = get_console_logger()
|
LOGGER = get_console_logger()
|
||||||
@@ -44,19 +48,13 @@ def pack_service_queue_user(service: Union[str, int], op_code: str, service_queu
|
|||||||
return pack_service200_test_into(tc_queue=service_queue)
|
return pack_service200_test_into(tc_queue=service_queue)
|
||||||
if service == CustomServiceList.P60DOCK.value:
|
if service == CustomServiceList.P60DOCK.value:
|
||||||
object_id = P60_DOCK_HANDLER
|
object_id = P60_DOCK_HANDLER
|
||||||
return pack_p60dock_test_into(object_id=object_id, tc_queue=service_queue)
|
return pack_p60dock_test_into(object_id=object_id, tc_queue=service_queue, op_code=op_code)
|
||||||
if service == CustomServiceList.PDU1.value:
|
if service == CustomServiceList.PDU1.value:
|
||||||
pdu1_object_id = PDU_1_HANDLER_ID
|
object_id = PDU_1_HANDLER_ID
|
||||||
p60dock_object_id = P60_DOCK_HANDLER
|
return pack_pdu1_test_into(object_id=object_id, tc_queue=service_queue, op_code=op_code)
|
||||||
return pack_pdu1_test_into(
|
|
||||||
pdu1_object_id=pdu1_object_id, p60dock_object_id=p60dock_object_id, tc_queue=service_queue
|
|
||||||
)
|
|
||||||
if service == CustomServiceList.PDU2.value:
|
if service == CustomServiceList.PDU2.value:
|
||||||
pdu2_object_id = PDU_2_HANDLER_ID
|
object_id = PDU_2_HANDLER_ID
|
||||||
p60dock_object_id = P60_DOCK_HANDLER
|
return pack_pdu2_test_into(object_id=object_id, tc_queue=service_queue, op_code=op_code)
|
||||||
return pack_pdu2_test_into(
|
|
||||||
pdu2_object_id=pdu2_object_id, p60dock_object_id=p60dock_object_id, tc_queue=service_queue
|
|
||||||
)
|
|
||||||
if service == CustomServiceList.ACU.value:
|
if service == CustomServiceList.ACU.value:
|
||||||
object_id = ACU_HANDLER_ID
|
object_id = ACU_HANDLER_ID
|
||||||
return pack_acu_test_into(object_id=object_id, tc_queue=service_queue)
|
return pack_acu_test_into(object_id=object_id, tc_queue=service_queue)
|
||||||
@@ -93,7 +91,17 @@ def pack_service_queue_user(service: Union[str, int], op_code: str, service_queu
|
|||||||
if service == CustomServiceList.PLOC_SUPV.value:
|
if service == CustomServiceList.PLOC_SUPV.value:
|
||||||
object_id = PLOC_SUPV_ID
|
object_id = PLOC_SUPV_ID
|
||||||
return pack_ploc_supv_test_into(object_id=object_id, tc_queue=service_queue, op_code=op_code)
|
return pack_ploc_supv_test_into(object_id=object_id, tc_queue=service_queue, op_code=op_code)
|
||||||
|
if service == CustomServiceList.PLOC_UPDATER.value:
|
||||||
|
object_id = PLOC_UPDATER_ID
|
||||||
|
return pack_ploc_updater_test_into(object_id=object_id, tc_queue=service_queue, op_code=op_code)
|
||||||
|
if service == CustomServiceList.STAR_TRACKER.value:
|
||||||
|
object_id = STAR_TRACKER_ID
|
||||||
|
return pack_star_tracker_commands_into(object_id=object_id, tc_queue=service_queue, op_code=op_code)
|
||||||
|
if service == CustomServiceList.CORE.value:
|
||||||
|
return pack_core_commands(tc_queue=service_queue, op_code=op_code)
|
||||||
|
if service == CustomServiceList.PLOC_MEMORY_DUMPER.value:
|
||||||
|
object_id = PLOC_MEMORY_DUMPER_ID
|
||||||
|
return pack_ploc_memory_dumper_cmd(object_id=object_id, tc_queue=service_queue, op_code=op_code)
|
||||||
LOGGER.warning("Invalid Service !")
|
LOGGER.warning("Invalid Service !")
|
||||||
|
|
||||||
|
|
||||||
|
@@ -3,6 +3,7 @@ from typing import Tuple
|
|||||||
from config.object_ids import *
|
from config.object_ids import *
|
||||||
from pus_tc.imtq import ImtqActionIds
|
from pus_tc.imtq import ImtqActionIds
|
||||||
from pus_tc.ploc_mpsoc import PlocReplyIds
|
from pus_tc.ploc_mpsoc import PlocReplyIds
|
||||||
|
from pus_tc.ploc_supervisor import SupvActionIds
|
||||||
|
|
||||||
|
|
||||||
def user_analyze_service_8_data(
|
def user_analyze_service_8_data(
|
||||||
@@ -32,6 +33,8 @@ def user_analyze_service_8_data(
|
|||||||
return handle_imtq_replies(action_id, custom_data)
|
return handle_imtq_replies(action_id, custom_data)
|
||||||
elif object_id == PLOC_MPSOC_ID:
|
elif object_id == PLOC_MPSOC_ID:
|
||||||
return handle_ploc_replies(action_id, custom_data)
|
return handle_ploc_replies(action_id, custom_data)
|
||||||
|
elif object_id == PLOC_SUPV_ID:
|
||||||
|
return handle_supervisor_replies(action_id, custom_data)
|
||||||
else:
|
else:
|
||||||
header_list = []
|
header_list = []
|
||||||
content_list = []
|
content_list = []
|
||||||
@@ -56,3 +59,12 @@ def handle_ploc_replies(action_id: int, custom_data: bytearray) -> Tuple[list, l
|
|||||||
header_list = ['PLOC Memory Address', 'PLOC Mem Len', 'PLOC Read Memory Data']
|
header_list = ['PLOC Memory Address', 'PLOC Mem Len', 'PLOC Read Memory Data']
|
||||||
content_list = [custom_data[:4], custom_data[4:6], custom_data[6:10]]
|
content_list = [custom_data[:4], custom_data[4:6], custom_data[6:10]]
|
||||||
return header_list, content_list
|
return header_list, content_list
|
||||||
|
|
||||||
|
|
||||||
|
def handle_supervisor_replies(action_id: int, custom_data: bytearray) -> Tuple[list, list]:
|
||||||
|
header_list = []
|
||||||
|
content_list = []
|
||||||
|
if action_id == SupvActionIds.DUMP_MRAM:
|
||||||
|
header_list = ['MRAM Dump']
|
||||||
|
content_list = [custom_data[:len(custom_data)]]
|
||||||
|
return header_list, content_list
|
||||||
|
0
tmtc_client_cli.py
Normal file → Executable file
0
tmtc_client_cli.py
Normal file → Executable file
0
tmtc_client_gui.py
Normal file → Executable file
0
tmtc_client_gui.py
Normal file → Executable file
2
tmtccmd
2
tmtccmd
Submodule tmtccmd updated: 1e234851ec...94978512de
Reference in New Issue
Block a user