Compare commits

...

160 Commits

Author SHA1 Message Date
e8ccb4700a changelog 2023-03-28 22:23:32 +02:00
1d01d27b17 prep v2.20.0 2023-03-28 22:21:01 +02:00
c3486c26b8 Merge pull request 'regenerate files' (#181) from tweaks_papb_polling into main
Reviewed-on: #181
2023-03-28 22:10:27 +02:00
63fda2f970 Merge branch 'main' into tweaks_papb_polling 2023-03-28 22:10:19 +02:00
de4de87667 Merge pull request 'kranz_fixes for power switch cmd serialization' (#180) from kranz_fixes into main
Reviewed-on: #180
Reviewed-by: Robin Müller <muellerr@irs.uni-stuttgart.de>
2023-03-28 22:09:55 +02:00
e0a31cb992 regenerate files 2023-03-28 21:51:07 +02:00
6b406b8e9a fixed mgt off cmd to off from on 2023-03-28 16:07:34 +02:00
4508b5dd54 heater off cmd changed to off from on, pl camera off cmd changed to off from on 2023-03-28 15:36:14 +02:00
f2897fa606 Merge pull request 'new enum class for pdu channesl' (#179) from kranz_enum into main
Reviewed-on: #179

verified and merged by @mueller
2023-03-28 14:52:29 +02:00
1ecc34800c new enum class for pdu channesl 2023-03-28 14:50:14 +02:00
3f3523465a Merge pull request 'added datarate default for ccsds submodes' (#178) from kranz_ccsds_submodes into main
Reviewed-on: #178
Reviewed-by: Robin Müller <muellerr@irs.uni-stuttgart.de>
2023-03-27 15:17:27 +02:00
cd75d35229 suzbmode change back to unset 2023-03-27 15:12:44 +02:00
b7ab257ae5 added datarate default for ccsds submodes 2023-03-27 15:08:40 +02:00
333faaa5f7 Merge pull request 'enum for str submodes, added default submode and renamed submode for ccsds handler class' (#177) from kranz_str_enum into main
Reviewed-on: #177
Reviewed-by: Robin Müller <muellerr@irs.uni-stuttgart.de>
2023-03-27 11:33:06 +02:00
3c25af39c6 change d 2023-03-27 11:11:07 +02:00
40b2973d9e enum for str submodes and added default submode 2023-03-27 10:30:13 +02:00
f6fcb2fb28 improvement for syrlinks code 2023-03-26 20:09:19 +02:00
4b5c4fecc7 clean up this mess 2023-03-26 20:00:34 +02:00
3d25a30a11 file locations changed 2023-03-26 16:41:13 +02:00
3a60266774 prep v2.19.4 2023-03-24 21:32:03 +01:00
c636c5c3e3 some more file locations changed 2023-03-24 20:58:33 +01:00
0bd87497d2 file locations changed 2023-03-24 20:50:53 +01:00
9bb9a43d45 more cleaning 2023-03-24 19:52:58 +01:00
5074e9d674 file locations changed 2023-03-24 19:48:47 +01:00
68cfa92c6a correction for syrlinks submodes 2023-03-24 19:41:14 +01:00
c2100c2f09 add some more objects 2023-03-24 17:25:10 +01:00
5e0d33c9a8 update retvals 2023-03-24 15:01:57 +01:00
93ad3ada7d Merge pull request 'new event' (#174) from new-event into main
Reviewed-on: #174
2023-03-24 14:59:45 +01:00
64539a2193 Merge branch 'main' into new-event 2023-03-24 14:59:36 +01:00
2e34d5c46f Merge pull request 'Refactor Syrlinks COM' (#176) from refactoring_syrlinks_com_if into main
Reviewed-on: #176
2023-03-24 14:59:14 +01:00
8115a39d66 remove event 2023-03-24 02:13:53 +01:00
b17c413e8f update generated files 2023-03-24 01:20:28 +01:00
996d102a39 Merge branch 'main' of https://egit.irs.uni-stuttgart.de/eive/eive-tmtc 2023-03-24 01:19:50 +01:00
9f17661f52 Merge pull request 'blub' (#175) from kranz_enum into main
Reviewed-on: #175
2023-03-23 13:59:31 +01:00
67d3cebed8 blub 2023-03-23 13:49:11 +01:00
d71f043704 new event 2023-03-23 10:44:26 +01:00
2263938b8b update str generated files 2023-03-22 01:14:28 +01:00
c171654d2b description fix 2023-03-21 23:59:45 +01:00
47a5dd4523 update retvals 2023-03-21 23:57:49 +01:00
c5b8831b43 well thats annoying 2023-03-21 23:34:46 +01:00
7af0349a87 prep v2.19.3 2023-03-21 23:28:47 +01:00
934a147caa re-run generators, black 2023-03-21 23:27:42 +01:00
c9b269b01a improve STR code 2023-03-21 17:00:53 +01:00
b32a9273ae new returnvalues 2023-03-21 12:46:25 +01:00
e5a09e148b prep v2.19.2 2023-03-17 18:05:15 +01:00
350e5d77b8 add new event 2023-03-16 17:45:08 +01:00
a93381494a Merge pull request 'enum' (#173) from kranz_another_very_important_enum_really_tho into main
Reviewed-on: #173
2023-03-16 14:46:31 +01:00
9b56a3ce06 also really important 2023-03-16 14:41:52 +01:00
a3bdfe8b04 enum 2023-03-16 14:35:27 +01:00
9b503678c9 Merge pull request 'Added action command to ACS Ctrl to restore MEKF automatic recovery' (#171) from acs-ctrl-new-act-cmd into main
Reviewed-on: #171
2023-03-16 11:44:20 +01:00
298ecba373 Merge branch 'main' into acs-ctrl-new-act-cmd 2023-03-16 11:44:06 +01:00
45aa63b4ab Merge pull request 'tmp enum' (#172) from kranz_enum into main
Reviewed-on: #172
2023-03-16 11:43:55 +01:00
5245cbfdd0 tmp enum 2023-03-16 11:21:40 +01:00
4f48c25bf7 changelog 2023-03-14 18:11:09 +01:00
d45c6bce97 unpack and use packet DT 2023-03-14 18:09:52 +01:00
5692d70de1 Merge branch 'main' into acs-ctrl-new-act-cmd 2023-03-14 17:27:29 +01:00
3974d4134a added action command to restore mekf automatic recovery 2023-03-14 17:24:21 +01:00
f0c14e21e4 prep v2.19.1 2023-03-14 17:14:36 +01:00
fe6390fab3 update csvs 2023-03-14 17:09:47 +01:00
e9bf90e366 retval csv update, now sorted 2023-03-14 15:28:12 +01:00
362be2288f update returnvalue csv 2023-03-14 14:22:02 +01:00
0efd9ca9c6 prep v2.19.0 2023-03-14 14:10:23 +01:00
f21ee37a01 add RTD HK 2023-03-14 10:11:01 +01:00
d8367f7e62 Merge pull request 'MPSoC commands' (#169) from meier/mpsoc-commands into main
Reviewed-on: #169
2023-03-13 11:03:26 +01:00
e862df4d06 some more MPSoC commands 2023-03-13 11:02:57 +01:00
fb851b93a0 Merge branch 'main' into meier/mpsoc-commands 2023-03-13 11:01:43 +01:00
5337ac4517 afmt 2023-03-13 10:57:23 +01:00
0ebb237787 Merge pull request 'fixed star tracker bug' (#168) from zink_startracker into main
Reviewed-on: #168
2023-03-13 10:57:03 +01:00
de0ecb44e4 Merge branch 'main' into zink_startracker 2023-03-13 10:56:58 +01:00
42c34b310e Merge remote-tracking branch 'origin/main' into zink_startracker
# Conflicts:
#	eive_tmtc/tmtc/acs/star_tracker.py
2023-03-13 10:56:17 +01:00
c274615aac missing set ID router 2023-03-13 10:53:41 +01:00
e3e74c3f20 fixed star tracker bug 2023-03-13 10:52:31 +01:00
10362f7d30 added STR temperature set 2023-03-13 10:51:55 +01:00
21a3813643 afmt 2023-03-13 10:45:49 +01:00
ae2fd8bb37 STR hk handling fix 2023-03-13 10:45:39 +01:00
ca5b2238bc add RTD ID and SetId enum 2023-03-13 10:35:33 +01:00
d520a0e2f2 add set ID for RTD 2023-03-13 10:31:27 +01:00
c99a0701d2 Merge pull request 'str hk bug fix' (#166) from kranz_str_hk_handling into main
Reviewed-on: #166
2023-03-12 14:26:40 +01:00
2c7ad5385e str hk bug fix 2023-03-12 12:54:12 +01:00
a40c881b9f prep v2.18.1
- Add announce boot counts command
2023-03-11 15:23:02 +01:00
432a642422 changelog 2023-03-11 15:15:29 +01:00
abfe923b05 missing heater location fix 2023-03-11 15:15:00 +01:00
65ada579d3 prep v2.18.0 2023-03-11 15:07:29 +01:00
fce0c4400b Merge pull request 'new events, retvals, objects' (#165) from refactor_tm_handling into main
Reviewed-on: #165
2023-03-11 15:02:16 +01:00
f4e9091484 re-generate files 2023-03-11 15:01:19 +01:00
e334521e6d Merge remote-tracking branch 'origin/main' into refactor_tm_handling 2023-03-11 15:01:00 +01:00
cd0fd4d5a7 new events 2023-03-10 21:01:25 +01:00
4686550eb9 Merge pull request 'acs-ctrl-updates-v2' (#164) from acs-ctrl-updates-v2 into main
Reviewed-on: #164
2023-03-10 19:07:41 +01:00
26cd265e19 new events, retvals, objects 2023-03-10 19:06:28 +01:00
a4984c34c2 lil changelog 2023-03-10 17:53:58 +01:00
948ad4ef7f Merge branch 'main' into acs-ctrl-updates-v2 2023-03-10 17:43:45 +01:00
e32a6ded66 object stirng update 2023-03-10 15:36:15 +01:00
0add5c6ac5 Merge pull request 'Refactor ACS modes' (#163) from refactor_acs_modes into main
Reviewed-on: #163
2023-03-10 15:00:12 +01:00
9f905524b6 small fix 2023-03-10 14:08:31 +01:00
d5685adb48 Merge branch 'main' into refactor_acs_modes 2023-03-10 13:39:44 +01:00
4acae93206 Merge pull request 'added missing str parameters' (#162) from zink_str into main
Reviewed-on: #162
2023-03-10 13:38:32 +01:00
05429d2048 run black 2023-03-10 13:38:21 +01:00
a249d71840 changelog 2023-03-10 13:37:17 +01:00
a5cc03d8a0 added missing str parameters 2023-03-10 13:16:14 +01:00
fd692c901d Merge branch 'main' into acs-ctrl-updates-v2 2023-03-10 09:31:00 +01:00
b0f51072b2 Merge pull request 'fixed bug in dipoles set' (#161) from zink_imtq into main
Reviewed-on: #161
2023-03-09 17:57:01 +01:00
be5cf32dc8 fixed bug in dipoles set 2023-03-09 17:50:40 +01:00
cbbb335254 prep v2.17.3 2023-03-09 17:01:50 +01:00
42434cbe7e Merge pull request 'obj ID fixes' (#160) from heater_obj_id_fixes into main
Reviewed-on: #160
2023-03-09 16:58:36 +01:00
bf158bee2d fix for heater names
- Heater 7 HPA -> Syrlinks
2023-03-09 16:40:59 +01:00
80539cf897 obj ID fixes 2023-03-09 16:30:24 +01:00
ffd2eb11f8 Merge pull request 'Add missing HK' (#159) from add_missing_hk into main
Reviewed-on: #159
2023-03-08 19:59:07 +01:00
ed5cb87cad thats a large set 2023-03-08 19:57:28 +01:00
4386b18049 add dipole set handling 2023-03-08 19:36:57 +01:00
a3e03350fa prep v2.17.2 2023-03-08 19:19:01 +01:00
d758a1f11a Merge pull request 'STR ASSY' (#158) from str_assy into main
Reviewed-on: #158
2023-03-08 18:10:28 +01:00
af17e30676 new object ID 2023-03-08 16:45:02 +01:00
5652305ee1 Merge pull request 'New events for core controller' (#157) from feature_reboot_flags into main
Reviewed-on: #157
2023-03-08 11:41:50 +01:00
a3f5c92654 re-generate csvs 2023-03-08 11:30:36 +01:00
2e21087c6d +rad2deg -opIds +setInterval 2023-03-07 11:07:01 +01:00
e74e751142 re-run black 2023-03-07 10:11:11 +01:00
d43badaddf add better assy names, group legacy object IDs 2023-03-07 10:10:14 +01:00
26b292f05a prep v2.17.1 2023-03-07 10:08:01 +01:00
6f397289ca add MGT_ASSEMBLY object ID as well 2023-03-07 10:06:58 +01:00
3d4ef7003c bump changelog 2023-03-07 10:05:15 +01:00
bf31810f25 prep v2.17.0 2023-03-07 10:03:22 +01:00
9462a6e245 add some more objects 2023-03-06 14:25:04 +01:00
208d328683 Merge pull request 'imtq_assy' (#156) from imtq_assy into main
Reviewed-on: #156
2023-03-06 14:00:51 +01:00
90ea903c0a Merge branch 'main' into imtq_assy 2023-03-06 14:00:39 +01:00
2aa1ecd3a7 changelog 2023-03-06 13:58:52 +01:00
f18a7f49cf add health set and announce health impl 2023-03-06 13:09:28 +01:00
7f872c92c4 add object prompt to test assy 2023-03-06 12:03:51 +01:00
82352bc5fa add imtq assy 2023-03-06 11:38:34 +01:00
a5bfee076a Merge pull request 'tmeperature' (#155) from kranz_tmeperature into main
Reviewed-on: #155
2023-03-06 10:36:59 +01:00
0c17203825 tmeperature 2023-03-06 10:36:08 +01:00
beb8e61e2c Merge pull request 'tmeperature' (#154) from kranz_tmeperature into main
Reviewed-on: #154
Reviewed-by: Robin Müller <muellerr@irs.uni-stuttgart.de>
2023-03-06 10:33:50 +01:00
e9d10dae1b tmeperature 2023-03-06 10:26:58 +01:00
b959f60f0a update retvals 2023-03-04 17:18:23 +01:00
3e666d76b7 prep v2.16.4 2023-03-04 17:17:04 +01:00
7eafefc93b Merge pull request 'IMTQ updates' (#153) from imtq_updates into main
Reviewed-on: #153
2023-03-04 17:10:36 +01:00
09c694cf9c IMTQ updates 2023-03-04 17:05:11 +01:00
94ae2d16e2 Merge pull request 'prep v2.16.3' (#152) from vprep_2.16.3 into main
Reviewed-on: #152
2023-03-03 16:48:03 +01:00
68a4764a56 prep v2.16.3 2023-03-03 16:50:48 +01:00
a9e59ae42b Merge pull request 'improve some STR code' (#151) from improve_some_str_tmtc_code into main
Reviewed-on: #151
2023-03-03 16:36:56 +01:00
3522405e8a improve some STR code 2023-03-03 16:38:17 +01:00
783d5a8ed5 Merge pull request 'kranz_revert_mgt_hk' (#150) from kranz_revert_mgt_hk into main
Reviewed-on: #150
Reviewed-by: Robin Müller <muellerr@irs.uni-stuttgart.de>
2023-03-03 10:53:46 +01:00
fc9b4efecf imtq fix 2023-03-03 09:57:26 +01:00
2468998dbd self test revert 2023-03-03 09:56:16 +01:00
74e6d6fe5f Merge pull request 'added all handling for raw mgm datasets' (#149) from imtq-datasets into main
Reviewed-on: #149
2023-03-02 18:38:07 +01:00
cd393a1596 Merge branch 'main' into imtq-datasets 2023-03-02 18:22:53 +01:00
8747333880 added all handling for raw mgm datasets 2023-03-02 18:20:10 +01:00
77fbcede10 Merge pull request 're-gen objects: Syrlinks Assy' (#148) from new_objects into main
Reviewed-on: #148
2023-03-02 17:46:51 +01:00
ba87c01f66 changelog 2023-03-02 17:50:06 +01:00
68c46a299f re-gen objects 2023-03-02 17:08:21 +01:00
2dd850f072 Merge pull request 'add some more imtq cmds' (#147) from imtq_use_new_api into main
Reviewed-on: #147
2023-03-02 14:43:50 +01:00
c83e17bba3 Merge branch 'main' into imtq_use_new_api 2023-03-02 14:43:43 +01:00
e5eb2e479c add some more imtq cmds 2023-03-02 14:41:23 +01:00
d2bc142b50 use newer API 2023-03-02 13:57:01 +01:00
9115f2519b Merge pull request 'use newer API' (#146) from imtq_use_new_api into main
Reviewed-on: #146
2023-03-02 13:54:34 +01:00
54c78d4441 Merge branch 'main' into imtq_use_new_api 2023-03-02 13:54:18 +01:00
e46f685607 Merge pull request 'enum' (#145) from kranz_another_enum into main
Reviewed-on: #145
Reviewed-by: Robin Müller <muellerr@irs.uni-stuttgart.de>
2023-03-02 13:52:16 +01:00
b0294e2764 enum 2023-03-02 10:22:48 +01:00
56630b05c2 bugfix in mpsoc commands 2023-02-28 09:13:14 +01:00
64d0ca491a Merge remote-tracking branch 'origin' into meier/mpsoc-commands 2023-02-28 08:02:39 +01:00
8d036bcd4f Added the following commands (not tested yet):
* TcCamTakePic
* TcSimplexSendFile
* TcDownlinkDataModulate
* TcModeSnapshot
2023-02-13 14:14:56 +01:00
34 changed files with 1843 additions and 990 deletions

View File

@ -10,6 +10,130 @@ list yields a list of all related PRs for each release.
# [unreleased]
# [v2.20.0] 2023-03-28
## Changed
- COM `Submode` enum moved from subsystem module to separate definitions module and renamed
to `Mode`. Added re-imports with the name `ComMode` in the subsystem and syrlinks module.
- Convert various enums to proper `IntEnum`s
- Updates for some enumerations.
PR: https://egit.irs.uni-stuttgart.de/eive/eive-tmtc/pulls/178
## Fixed
- Eb to N0 calculation: Improve robustness against division by zero.
- Some fixes for PCDU commands: Wrongfully packed command to switch devices off instead of on.
PR: https://egit.irs.uni-stuttgart.de/eive/eive-tmtc/pulls/180.
## Added
- Added `PcduSwitches` enum.
PR: https://egit.irs.uni-stuttgart.de/eive/eive-tmtc/pulls/179
# [v2.19.4] 2023-03-24
## Fixed
- Correction for Syrlinks submodes
- Update generated files
# [v2.19.3] 2023-03-21
- Update generated files
- Improve STR commanding a bit
# [v2.19.2] 2023-03-17
- Update generated files
## Added
- Add a little bit of first time stamp extraction for HK packet handling.
# [v2.19.1] 2023-03-14
## Added
- New `subsystems.csv` file with all subsystem IDs
- Update `events.csv` and `returnvalues.csv`
# [v2.19.0] 2023-03-14
## Added
- Added RTD ID enum and Set ID enumeration in the RTD module.
- STR Temperature Set
- Added some more MPSoC commands
- RTD HK set
## Fixed
- Import error for STR code
- STR HK bugfixes and length check
# [v2.18.1] 2023-03-11
## Fixed
- Missing heater location fix.
## Added
- Request to announce reboot counts in core controller commands
# [v2.18.0] 2023-03-11
## Added
- Added GPS Altitude for GPS Processed Data Dataset
## Changed
- Updated CSVs.
- ACS mode changes: The ACS CTRL submodes are now modes. DETUBMLE is now submode of SAFE mode.
# [v2.17.3] 2023-03-09
## Fixed
- Fixed the heater object ID names completely. Also,
the HPA heater is now the Syrlinks heater.
# [v2.17.2] 2023-03-07
- Updated CSVs
- New events for core controller
# [v2.17.1] 2023-03-07
## Added
- `MGT_ASSEMBLY` object ID
# [v2.17.0] 2023-03-07
## Added
- Health set and health announce commands
- Camera Switcher, Syrlinks Assembly, IMTQ assembly and Star Tracker assembly object IDs added
## Changed
- Breaking typo fix in TMP1075 `SetId`
# [v2.16.4] 2023-03-04
## Added
- Some more IMTQ commands
# [v2.16.3] 2023-03-03
## Added
- Syrlinks ASSY object ID
# [v2.16.2] 2023-03-01
## Added

View File

@ -1,12 +1,12 @@
__version__ = "2.16.2"
__version__ = "2.20.0"
import logging
from pathlib import Path
SW_NAME = "eive-tmtc"
VERSION_MAJOR = 2
VERSION_MINOR = 16
VERSION_REVISION = 2
VERSION_MINOR = 20
VERSION_REVISION = 0
EIVE_TMTC_ROOT = Path(__file__).parent
PACKAGE_ROOT = EIVE_TMTC_ROOT.parent

View File

@ -29,11 +29,11 @@ Event ID (dec); Event ID (hex); Name; Severity; Description; File Path
2809;0x0af9;MONITORING_LIMIT_EXCEEDED;LOW;No description;fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
2810;0x0afa;MONITORING_AMBIGUOUS;HIGH;No description;fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
2811;0x0afb;DEVICE_WANTS_HARD_REBOOT;HIGH;No description;fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
4201;0x1069;FUSE_CURRENT_HIGH;LOW;No description;fsfw/src/fsfw/power/Fuse.h
4202;0x106a;FUSE_WENT_OFF;LOW;No description;fsfw/src/fsfw/power/Fuse.h
4204;0x106c;POWER_ABOVE_HIGH_LIMIT;LOW;No description;fsfw/src/fsfw/power/Fuse.h
4205;0x106d;POWER_BELOW_LOW_LIMIT;LOW;No description;fsfw/src/fsfw/power/Fuse.h
4300;0x10cc;SWITCH_WENT_OFF;LOW;No description;fsfw/src/fsfw/power/PowerSwitchIF.h
4301;0x10cd;FUSE_CURRENT_HIGH;LOW;No description;fsfw/src/fsfw/power/Fuse.h
4302;0x10ce;FUSE_WENT_OFF;LOW;No description;fsfw/src/fsfw/power/Fuse.h
4304;0x10d0;POWER_ABOVE_HIGH_LIMIT;LOW;No description;fsfw/src/fsfw/power/Fuse.h
4305;0x10d1;POWER_BELOW_LOW_LIMIT;LOW;No description;fsfw/src/fsfw/power/Fuse.h
5000;0x1388;HEATER_ON;INFO;No description;fsfw/src/fsfw/thermal/Heater.h
5001;0x1389;HEATER_OFF;INFO;No description;fsfw/src/fsfw/thermal/Heater.h
5002;0x138a;HEATER_TIMEOUT;LOW;No description;fsfw/src/fsfw/thermal/Heater.h
@ -86,63 +86,65 @@ Event ID (dec); Event ID (hex); Name; Severity; Description; File Path
10802;0x2a32;SERIALIZATION_ERROR;LOW;No description;fsfw/src/fsfw/cfdp/handler/defs.h
10803;0x2a33;FILESTORE_ERROR;LOW;No description;fsfw/src/fsfw/cfdp/handler/defs.h
10804;0x2a34;FILENAME_TOO_LARGE_ERROR;LOW;P1: Transaction step ID, P2: 0 for source file name, 1 for dest file name;fsfw/src/fsfw/cfdp/handler/defs.h
11200;0x2bc0;SAFE_RATE_VIOLATION;MEDIUM;No description;mission/acsDefs.h
11201;0x2bc1;SAFE_RATE_RECOVERY;MEDIUM;No description;mission/acsDefs.h
11202;0x2bc2;MULTIPLE_RW_INVALID;HIGH;No description;mission/acsDefs.h
11203;0x2bc3;MEKF_INVALID_INFO;INFO;No description;mission/acsDefs.h
11204;0x2bc4;MEKF_INVALID_MODE_VIOLATION;HIGH;No description;mission/acsDefs.h
11300;0x2c24;SWITCH_CMD_SENT;INFO;Indicates that a FSFW object requested setting a switch P1: 1 if on was requested, 0 for off | P2: Switch Index;mission/devices/devicedefinitions/powerDefinitions.h
11301;0x2c25;SWITCH_HAS_CHANGED;INFO;Indicated that a switch state has changed P1: New switch state, 1 for on, 0 for off | P2: Switch Index;mission/devices/devicedefinitions/powerDefinitions.h
11302;0x2c26;SWITCHING_Q7S_DENIED;MEDIUM;No description;mission/devices/devicedefinitions/powerDefinitions.h
11303;0x2c27;FDIR_REACTION_IGNORED;MEDIUM;No description;mission/devices/devicedefinitions/powerDefinitions.h
11400;0x2c88;GPIO_PULL_HIGH_FAILED;LOW;No description;mission/devices/HeaterHandler.h
11401;0x2c89;GPIO_PULL_LOW_FAILED;LOW;No description;mission/devices/HeaterHandler.h
11402;0x2c8a;HEATER_WENT_ON;INFO;No description;mission/devices/HeaterHandler.h
11403;0x2c8b;HEATER_WENT_OFF;INFO;No description;mission/devices/HeaterHandler.h
11404;0x2c8c;SWITCH_ALREADY_ON;LOW;No description;mission/devices/HeaterHandler.h
11405;0x2c8d;SWITCH_ALREADY_OFF;LOW;No description;mission/devices/HeaterHandler.h
11406;0x2c8e;MAIN_SWITCH_TIMEOUT;MEDIUM;No description;mission/devices/HeaterHandler.h
11407;0x2c8f;FAULTY_HEATER_WAS_ON;LOW;No description;mission/devices/HeaterHandler.h
11500;0x2cec;BURN_PHASE_START;INFO;P1: Burn duration in milliseconds, P2: Dry run flag;mission/devices/SolarArrayDeploymentHandler.h
11501;0x2ced;BURN_PHASE_DONE;INFO;P1: Burn duration in milliseconds, P2: Dry run flag;mission/devices/SolarArrayDeploymentHandler.h
11502;0x2cee;MAIN_SWITCH_ON_TIMEOUT;LOW;No description;mission/devices/SolarArrayDeploymentHandler.h
11503;0x2cef;MAIN_SWITCH_OFF_TIMEOUT;LOW;No description;mission/devices/SolarArrayDeploymentHandler.h
11504;0x2cf0;DEPL_SA1_GPIO_SWTICH_ON_FAILED;HIGH;No description;mission/devices/SolarArrayDeploymentHandler.h
11505;0x2cf1;DEPL_SA2_GPIO_SWTICH_ON_FAILED;HIGH;No description;mission/devices/SolarArrayDeploymentHandler.h
11506;0x2cf2;DEPL_SA1_GPIO_SWTICH_OFF_FAILED;HIGH;No description;mission/devices/SolarArrayDeploymentHandler.h
11507;0x2cf3;DEPL_SA2_GPIO_SWTICH_OFF_FAILED;HIGH;No description;mission/devices/SolarArrayDeploymentHandler.h
11508;0x2cf4;AUTONOMOUS_DEPLOYMENT_COMPLETED;INFO;No description;mission/devices/SolarArrayDeploymentHandler.h
11601;0x2d51;MEMORY_READ_RPT_CRC_FAILURE;LOW;PLOC crc failure in telemetry packet;linux/devices/ploc/PlocMPSoCHandler.h
11602;0x2d52;ACK_FAILURE;LOW;PLOC receive acknowledgment failure report P1: Command Id which leads the acknowledgment failure report P2: The status field inserted by the MPSoC into the data field;linux/devices/ploc/PlocMPSoCHandler.h
11603;0x2d53;EXE_FAILURE;LOW;PLOC receive execution failure report P1: Command Id which leads the execution failure report P2: The status field inserted by the MPSoC into the data field;linux/devices/ploc/PlocMPSoCHandler.h
11604;0x2d54;MPSOC_HANDLER_CRC_FAILURE;LOW;PLOC reply has invalid crc;linux/devices/ploc/PlocMPSoCHandler.h
11605;0x2d55;MPSOC_HANDLER_SEQUENCE_COUNT_MISMATCH;LOW;Packet sequence count in received space packet does not match expected count P1: Expected sequence count P2: Received sequence count;linux/devices/ploc/PlocMPSoCHandler.h
11606;0x2d56;MPSOC_SHUTDOWN_FAILED;HIGH;Supervisor fails to shutdown MPSoC. Requires to power off the PLOC and thus also to shutdown the supervisor.;linux/devices/ploc/PlocMPSoCHandler.h
11701;0x2db5;SELF_TEST_I2C_FAILURE;LOW;Get self test result returns I2C failure P1: Indicates on which axis the failure occurred. 0 -> INIT, 1 -> +X, 2 -> -X, 3 -> +Y, 4 -> -Y, 5 -> +Z, 6 -> -Z, 7 -> FINA;mission/devices/ImtqHandler.h
11702;0x2db6;SELF_TEST_SPI_FAILURE;LOW;Get self test result returns SPI failure. This concerns the MTM connectivity. P1: Indicates on which axis the failure occurred. 0 -> INIT, 1 -> +X, 2 -> -X, 3 -> +Y, 4 -> -Y, 5 -> +Z, 6 -> -Z, 7 -> FINA;mission/devices/ImtqHandler.h
11703;0x2db7;SELF_TEST_ADC_FAILURE;LOW;Get self test result returns failure in measurement of current and temperature. P1: Indicates on which axis the failure occurred. 0 -> INIT, 1 -> +X, 2 -> -X, 3 -> +Y, 4 -> -Y, 5 -> +Z, 6 -> -Z, 7 -> FINA;mission/devices/ImtqHandler.h
11704;0x2db8;SELF_TEST_PWM_FAILURE;LOW;Get self test result returns PWM failure which concerns the coil actuation. P1: Indicates on which axis the failure occurred. 0 -> INIT, 1 -> +X, 2 -> -X, 3 -> +Y, 4 -> -Y, 5 -> +Z, 6 -> -Z, 7 -> FINA;mission/devices/ImtqHandler.h
11705;0x2db9;SELF_TEST_TC_FAILURE;LOW;Get self test result returns TC failure (system failure) P1: Indicates on which axis the failure occurred. 0 -> INIT, 1 -> +X, 2 -> -X, 3 -> +Y, 4 -> -Y, 5 -> +Z, 6 -> -Z, 7 -> FINA;mission/devices/ImtqHandler.h
11706;0x2dba;SELF_TEST_MTM_RANGE_FAILURE;LOW;Get self test result returns failure that MTM values were outside of the expected range. P1: Indicates on which axis the failure occurred. 0 -> INIT, 1 -> +X, 2 -> -X, 3 -> +Y, 4 -> -Y, 5 -> +Z, 6 -> -Z, 7 -> FINA;mission/devices/ImtqHandler.h
11707;0x2dbb;SELF_TEST_COIL_CURRENT_FAILURE;LOW;Get self test result returns failure indicating that the coil current was outside of the expected range P1: Indicates on which axis the failure occurred. 0 -> INIT, 1 -> +X, 2 -> -X, 3 -> +Y, 4 -> -Y, 5 -> +Z, 6 -> -Z, 7 -> FINA;mission/devices/ImtqHandler.h
11708;0x2dbc;INVALID_ERROR_BYTE;LOW;Received invalid error byte. This indicates an error of the communication link between IMTQ and OBC.;mission/devices/ImtqHandler.h
11801;0x2e19;ERROR_STATE;HIGH;Reaction wheel signals an error state;mission/devices/devicedefinitions/rwHelpers.h
11802;0x2e1a;RESET_OCCURED;LOW;No description;mission/devices/devicedefinitions/rwHelpers.h
11901;0x2e7d;BOOTING_FIRMWARE_FAILED_EVENT;LOW;Failed to boot firmware;linux/devices/startracker/StarTrackerHandler.h
11902;0x2e7e;BOOTING_BOOTLOADER_FAILED_EVENT;LOW;Failed to boot star tracker into bootloader mode;linux/devices/startracker/StarTrackerHandler.h
12001;0x2ee1;SUPV_MEMORY_READ_RPT_CRC_FAILURE;LOW;PLOC supervisor crc failure in telemetry packet;linux/devices/ploc/PlocSupervisorHandler.h
12002;0x2ee2;SUPV_UNKNOWN_TM;LOW;Unhandled event. P1: APID, P2: Service ID;linux/devices/ploc/PlocSupervisorHandler.h
12003;0x2ee3;SUPV_UNINIMPLEMENTED_TM;LOW;No description;linux/devices/ploc/PlocSupervisorHandler.h
12004;0x2ee4;SUPV_ACK_FAILURE;LOW;PLOC supervisor received acknowledgment failure report;linux/devices/ploc/PlocSupervisorHandler.h
12005;0x2ee5;SUPV_EXE_FAILURE;LOW;PLOC received execution failure report P1: ID of command for which the execution failed P2: Status code sent by the supervisor handler;linux/devices/ploc/PlocSupervisorHandler.h
12006;0x2ee6;SUPV_CRC_FAILURE_EVENT;LOW;PLOC supervisor reply has invalid crc;linux/devices/ploc/PlocSupervisorHandler.h
12007;0x2ee7;SUPV_HELPER_EXECUTING;LOW;Supervisor helper currently executing a command;linux/devices/ploc/PlocSupervisorHandler.h
12008;0x2ee8;SUPV_MPSOC_SHUTDOWN_BUILD_FAILED;LOW;Failed to build the command to shutdown the MPSoC;linux/devices/ploc/PlocSupervisorHandler.h
11200;0x2bc0;SAFE_RATE_VIOLATION;MEDIUM;No description;mission/acs/defs.h
11201;0x2bc1;SAFE_RATE_RECOVERY;MEDIUM;No description;mission/acs/defs.h
11202;0x2bc2;MULTIPLE_RW_INVALID;HIGH;No description;mission/acs/defs.h
11203;0x2bc3;MEKF_INVALID_INFO;INFO;No description;mission/acs/defs.h
11204;0x2bc4;MEKF_RECOVERY;INFO;No description;mission/acs/defs.h
11205;0x2bc5;MEKF_INVALID_MODE_VIOLATION;HIGH;No description;mission/acs/defs.h
11206;0x2bc6;SAFE_MODE_CONTROLLER_FAILURE;HIGH;No description;mission/acs/defs.h
11300;0x2c24;SWITCH_CMD_SENT;INFO;Indicates that a FSFW object requested setting a switch P1: 1 if on was requested, 0 for off | P2: Switch Index;mission/power/defs.h
11301;0x2c25;SWITCH_HAS_CHANGED;INFO;Indicated that a switch state has changed P1: New switch state, 1 for on, 0 for off | P2: Switch Index;mission/power/defs.h
11302;0x2c26;SWITCHING_Q7S_DENIED;MEDIUM;No description;mission/power/defs.h
11303;0x2c27;FDIR_REACTION_IGNORED;MEDIUM;No description;mission/power/defs.h
11400;0x2c88;GPIO_PULL_HIGH_FAILED;LOW;No description;mission/tcs/HeaterHandler.h
11401;0x2c89;GPIO_PULL_LOW_FAILED;LOW;No description;mission/tcs/HeaterHandler.h
11402;0x2c8a;HEATER_WENT_ON;INFO;No description;mission/tcs/HeaterHandler.h
11403;0x2c8b;HEATER_WENT_OFF;INFO;No description;mission/tcs/HeaterHandler.h
11404;0x2c8c;SWITCH_ALREADY_ON;LOW;No description;mission/tcs/HeaterHandler.h
11405;0x2c8d;SWITCH_ALREADY_OFF;LOW;No description;mission/tcs/HeaterHandler.h
11406;0x2c8e;MAIN_SWITCH_TIMEOUT;MEDIUM;No description;mission/tcs/HeaterHandler.h
11407;0x2c8f;FAULTY_HEATER_WAS_ON;LOW;No description;mission/tcs/HeaterHandler.h
11500;0x2cec;BURN_PHASE_START;INFO;P1: Burn duration in milliseconds, P2: Dry run flag;mission/SolarArrayDeploymentHandler.h
11501;0x2ced;BURN_PHASE_DONE;INFO;P1: Burn duration in milliseconds, P2: Dry run flag;mission/SolarArrayDeploymentHandler.h
11502;0x2cee;MAIN_SWITCH_ON_TIMEOUT;LOW;No description;mission/SolarArrayDeploymentHandler.h
11503;0x2cef;MAIN_SWITCH_OFF_TIMEOUT;LOW;No description;mission/SolarArrayDeploymentHandler.h
11504;0x2cf0;DEPL_SA1_GPIO_SWTICH_ON_FAILED;HIGH;No description;mission/SolarArrayDeploymentHandler.h
11505;0x2cf1;DEPL_SA2_GPIO_SWTICH_ON_FAILED;HIGH;No description;mission/SolarArrayDeploymentHandler.h
11506;0x2cf2;DEPL_SA1_GPIO_SWTICH_OFF_FAILED;HIGH;No description;mission/SolarArrayDeploymentHandler.h
11507;0x2cf3;DEPL_SA2_GPIO_SWTICH_OFF_FAILED;HIGH;No description;mission/SolarArrayDeploymentHandler.h
11508;0x2cf4;AUTONOMOUS_DEPLOYMENT_COMPLETED;INFO;No description;mission/SolarArrayDeploymentHandler.h
11601;0x2d51;MEMORY_READ_RPT_CRC_FAILURE;LOW;PLOC crc failure in telemetry packet;linux/payload/PlocMpsocHandler.h
11602;0x2d52;ACK_FAILURE;LOW;PLOC receive acknowledgment failure report P1: Command Id which leads the acknowledgment failure report P2: The status field inserted by the MPSoC into the data field;linux/payload/PlocMpsocHandler.h
11603;0x2d53;EXE_FAILURE;LOW;PLOC receive execution failure report P1: Command Id which leads the execution failure report P2: The status field inserted by the MPSoC into the data field;linux/payload/PlocMpsocHandler.h
11604;0x2d54;MPSOC_HANDLER_CRC_FAILURE;LOW;PLOC reply has invalid crc;linux/payload/PlocMpsocHandler.h
11605;0x2d55;MPSOC_HANDLER_SEQUENCE_COUNT_MISMATCH;LOW;Packet sequence count in received space packet does not match expected count P1: Expected sequence count P2: Received sequence count;linux/payload/PlocMpsocHandler.h
11606;0x2d56;MPSOC_SHUTDOWN_FAILED;HIGH;Supervisor fails to shutdown MPSoC. Requires to power off the PLOC and thus also to shutdown the supervisor.;linux/payload/PlocMpsocHandler.h
11701;0x2db5;SELF_TEST_I2C_FAILURE;LOW;Get self test result returns I2C failure P1: Indicates on which axis the failure occurred. 0 -> INIT, 1 -> +X, 2 -> -X, 3 -> +Y, 4 -> -Y, 5 -> +Z, 6 -> -Z, 7 -> FINA;mission/acs/ImtqHandler.h
11702;0x2db6;SELF_TEST_SPI_FAILURE;LOW;Get self test result returns SPI failure. This concerns the MTM connectivity. P1: Indicates on which axis the failure occurred. 0 -> INIT, 1 -> +X, 2 -> -X, 3 -> +Y, 4 -> -Y, 5 -> +Z, 6 -> -Z, 7 -> FINA;mission/acs/ImtqHandler.h
11703;0x2db7;SELF_TEST_ADC_FAILURE;LOW;Get self test result returns failure in measurement of current and temperature. P1: Indicates on which axis the failure occurred. 0 -> INIT, 1 -> +X, 2 -> -X, 3 -> +Y, 4 -> -Y, 5 -> +Z, 6 -> -Z, 7 -> FINA;mission/acs/ImtqHandler.h
11704;0x2db8;SELF_TEST_PWM_FAILURE;LOW;Get self test result returns PWM failure which concerns the coil actuation. P1: Indicates on which axis the failure occurred. 0 -> INIT, 1 -> +X, 2 -> -X, 3 -> +Y, 4 -> -Y, 5 -> +Z, 6 -> -Z, 7 -> FINA;mission/acs/ImtqHandler.h
11705;0x2db9;SELF_TEST_TC_FAILURE;LOW;Get self test result returns TC failure (system failure) P1: Indicates on which axis the failure occurred. 0 -> INIT, 1 -> +X, 2 -> -X, 3 -> +Y, 4 -> -Y, 5 -> +Z, 6 -> -Z, 7 -> FINA;mission/acs/ImtqHandler.h
11706;0x2dba;SELF_TEST_MTM_RANGE_FAILURE;LOW;Get self test result returns failure that MTM values were outside of the expected range. P1: Indicates on which axis the failure occurred. 0 -> INIT, 1 -> +X, 2 -> -X, 3 -> +Y, 4 -> -Y, 5 -> +Z, 6 -> -Z, 7 -> FINA;mission/acs/ImtqHandler.h
11707;0x2dbb;SELF_TEST_COIL_CURRENT_FAILURE;LOW;Get self test result returns failure indicating that the coil current was outside of the expected range P1: Indicates on which axis the failure occurred. 0 -> INIT, 1 -> +X, 2 -> -X, 3 -> +Y, 4 -> -Y, 5 -> +Z, 6 -> -Z, 7 -> FINA;mission/acs/ImtqHandler.h
11708;0x2dbc;INVALID_ERROR_BYTE;LOW;Received invalid error byte. This indicates an error of the communication link between IMTQ and OBC.;mission/acs/ImtqHandler.h
11801;0x2e19;ERROR_STATE;HIGH;Reaction wheel signals an error state;mission/acs/rwHelpers.h
11802;0x2e1a;RESET_OCCURED;LOW;No description;mission/acs/rwHelpers.h
11901;0x2e7d;BOOTING_FIRMWARE_FAILED_EVENT;LOW;Failed to boot firmware;mission/acs/str/StarTrackerHandler.h
11902;0x2e7e;BOOTING_BOOTLOADER_FAILED_EVENT;LOW;Failed to boot star tracker into bootloader mode;mission/acs/str/StarTrackerHandler.h
12001;0x2ee1;SUPV_MEMORY_READ_RPT_CRC_FAILURE;LOW;PLOC supervisor crc failure in telemetry packet;linux/payload/PlocSupervisorHandler.h
12002;0x2ee2;SUPV_UNKNOWN_TM;LOW;Unhandled event. P1: APID, P2: Service ID;linux/payload/PlocSupervisorHandler.h
12003;0x2ee3;SUPV_UNINIMPLEMENTED_TM;LOW;No description;linux/payload/PlocSupervisorHandler.h
12004;0x2ee4;SUPV_ACK_FAILURE;LOW;PLOC supervisor received acknowledgment failure report;linux/payload/PlocSupervisorHandler.h
12005;0x2ee5;SUPV_EXE_FAILURE;LOW;PLOC received execution failure report P1: ID of command for which the execution failed P2: Status code sent by the supervisor handler;linux/payload/PlocSupervisorHandler.h
12006;0x2ee6;SUPV_CRC_FAILURE_EVENT;LOW;PLOC supervisor reply has invalid crc;linux/payload/PlocSupervisorHandler.h
12007;0x2ee7;SUPV_HELPER_EXECUTING;LOW;Supervisor helper currently executing a command;linux/payload/PlocSupervisorHandler.h
12008;0x2ee8;SUPV_MPSOC_SHUTDOWN_BUILD_FAILED;LOW;Failed to build the command to shutdown the MPSoC;linux/payload/PlocSupervisorHandler.h
12100;0x2f44;SANITIZATION_FAILED;LOW;No description;bsp_q7s/fs/SdCardManager.h
12101;0x2f45;MOUNTED_SD_CARD;INFO;No description;bsp_q7s/fs/SdCardManager.h
12300;0x300c;SEND_MRAM_DUMP_FAILED;LOW;Failed to send mram dump command to supervisor handler P1: Return value of commandAction function P2: Start address of MRAM to dump with this command;linux/devices/ploc/PlocMemoryDumper.h
12301;0x300d;MRAM_DUMP_FAILED;LOW;Received completion failure report form PLOC supervisor handler P1: MRAM start address of failing dump command;linux/devices/ploc/PlocMemoryDumper.h
12302;0x300e;MRAM_DUMP_FINISHED;LOW;MRAM dump finished successfully;linux/devices/ploc/PlocMemoryDumper.h
12300;0x300c;SEND_MRAM_DUMP_FAILED;LOW;Failed to send mram dump command to supervisor handler P1: Return value of commandAction function P2: Start address of MRAM to dump with this command;linux/payload/PlocMemoryDumper.h
12301;0x300d;MRAM_DUMP_FAILED;LOW;Received completion failure report form PLOC supervisor handler P1: MRAM start address of failing dump command;linux/payload/PlocMemoryDumper.h
12302;0x300e;MRAM_DUMP_FINISHED;LOW;MRAM dump finished successfully;linux/payload/PlocMemoryDumper.h
12401;0x3071;INVALID_TC_FRAME;HIGH;No description;linux/ipcore/PdecHandler.h
12402;0x3072;INVALID_FAR;HIGH;Read invalid FAR from PDEC after startup;linux/ipcore/PdecHandler.h
12403;0x3073;CARRIER_LOCK;INFO;Carrier lock detected;linux/ipcore/PdecHandler.h
@ -154,108 +156,110 @@ Event ID (dec); Event ID (hex); Name; Severity; Description; File Path
12409;0x3079;WRITE_SYSCALL_ERROR_PDEC;HIGH;No description;linux/ipcore/PdecHandler.h
12410;0x307a;PDEC_RESET_FAILED;HIGH;Failed to pull PDEC reset to low;linux/ipcore/PdecHandler.h
12411;0x307b;OPEN_IRQ_FILE_FAILED;HIGH;Failed to open the IRQ uio file;linux/ipcore/PdecHandler.h
12500;0x30d4;IMAGE_UPLOAD_FAILED;LOW;Image upload failed;linux/devices/startracker/StrHelper.h
12501;0x30d5;IMAGE_DOWNLOAD_FAILED;LOW;Image download failed;linux/devices/startracker/StrHelper.h
12502;0x30d6;IMAGE_UPLOAD_SUCCESSFUL;LOW;Uploading image to star tracker was successfulop;linux/devices/startracker/StrHelper.h
12503;0x30d7;IMAGE_DOWNLOAD_SUCCESSFUL;LOW;Image download was successful;linux/devices/startracker/StrHelper.h
12504;0x30d8;FLASH_WRITE_SUCCESSFUL;LOW;Finished flash write procedure successfully;linux/devices/startracker/StrHelper.h
12505;0x30d9;FLASH_READ_SUCCESSFUL;LOW;Finished flash read procedure successfully;linux/devices/startracker/StrHelper.h
12506;0x30da;FLASH_READ_FAILED;LOW;Flash read procedure failed;linux/devices/startracker/StrHelper.h
12507;0x30db;FIRMWARE_UPDATE_SUCCESSFUL;LOW;Firmware update was successful;linux/devices/startracker/StrHelper.h
12508;0x30dc;FIRMWARE_UPDATE_FAILED;LOW;Firmware update failed;linux/devices/startracker/StrHelper.h
12509;0x30dd;STR_HELPER_READING_REPLY_FAILED;LOW;Failed to read communication interface reply data P1: Return code of failed communication interface read call P1: Upload/download position for which the read call failed;linux/devices/startracker/StrHelper.h
12510;0x30de;STR_HELPER_COM_ERROR;LOW;Unexpected stop of decoding sequence P1: Return code of failed communication interface read call P1: Upload/download position for which the read call failed;linux/devices/startracker/StrHelper.h
12511;0x30df;STR_HELPER_NO_REPLY;LOW;Star tracker did not send replies (maybe device is powered off) P1: Position of upload or download packet for which no reply was sent;linux/devices/startracker/StrHelper.h
12512;0x30e0;STR_HELPER_DEC_ERROR;LOW;Error during decoding of received reply occurred P1: Return value of decoding function P2: Position of upload/download packet, or address of flash write/read request;linux/devices/startracker/StrHelper.h
12513;0x30e1;POSITION_MISMATCH;LOW;Position mismatch P1: The expected position and thus the position for which the image upload/download failed;linux/devices/startracker/StrHelper.h
12514;0x30e2;STR_HELPER_FILE_NOT_EXISTS;LOW;Specified file does not exist P1: Internal state of str helper;linux/devices/startracker/StrHelper.h
12515;0x30e3;STR_HELPER_SENDING_PACKET_FAILED;LOW;No description;linux/devices/startracker/StrHelper.h
12516;0x30e4;STR_HELPER_REQUESTING_MSG_FAILED;LOW;No description;linux/devices/startracker/StrHelper.h
12600;0x3138;MPSOC_FLASH_WRITE_FAILED;LOW;Flash write fails;linux/devices/ploc/PlocMPSoCHelper.h
12601;0x3139;MPSOC_FLASH_WRITE_SUCCESSFUL;LOW;Flash write successful;linux/devices/ploc/PlocMPSoCHelper.h
12602;0x313a;MPSOC_SENDING_COMMAND_FAILED;LOW;No description;linux/devices/ploc/PlocMPSoCHelper.h
12603;0x313b;MPSOC_HELPER_REQUESTING_REPLY_FAILED;LOW;Request receive message of communication interface failed P1: Return value returned by the communication interface requestReceiveMessage function P2: Internal state of MPSoC helper;linux/devices/ploc/PlocMPSoCHelper.h
12604;0x313c;MPSOC_HELPER_READING_REPLY_FAILED;LOW;Reading receive message of communication interface failed P1: Return value returned by the communication interface readingReceivedMessage function P2: Internal state of MPSoC helper;linux/devices/ploc/PlocMPSoCHelper.h
12605;0x313d;MPSOC_MISSING_ACK;LOW;Did not receive acknowledgment report P1: Number of bytes missing P2: Internal state of MPSoC helper;linux/devices/ploc/PlocMPSoCHelper.h
12606;0x313e;MPSOC_MISSING_EXE;LOW;Did not receive execution report P1: Number of bytes missing P2: Internal state of MPSoC helper;linux/devices/ploc/PlocMPSoCHelper.h
12607;0x313f;MPSOC_ACK_FAILURE_REPORT;LOW;Received acknowledgment failure report P1: Internal state of MPSoC;linux/devices/ploc/PlocMPSoCHelper.h
12608;0x3140;MPSOC_EXE_FAILURE_REPORT;LOW;Received execution failure report P1: Internal state of MPSoC;linux/devices/ploc/PlocMPSoCHelper.h
12609;0x3141;MPSOC_ACK_INVALID_APID;LOW;Expected acknowledgment report but received space packet with other apid P1: Apid of received space packet P2: Internal state of MPSoC;linux/devices/ploc/PlocMPSoCHelper.h
12610;0x3142;MPSOC_EXE_INVALID_APID;LOW;Expected execution report but received space packet with other apid P1: Apid of received space packet P2: Internal state of MPSoC;linux/devices/ploc/PlocMPSoCHelper.h
12611;0x3143;MPSOC_HELPER_SEQ_CNT_MISMATCH;LOW;Received sequence count does not match expected sequence count P1: Expected sequence count P2: Received sequence count;linux/devices/ploc/PlocMPSoCHelper.h
12612;0x3144;MPSOC_TM_SIZE_ERROR;LOW;No description;linux/devices/ploc/PlocMPSoCHelper.h
12613;0x3145;MPSOC_TM_CRC_MISSMATCH;LOW;No description;linux/devices/ploc/PlocMPSoCHelper.h
12700;0x319c;TRANSITION_BACK_TO_OFF;MEDIUM;Could not transition properly and went back to ALL OFF;mission/devices/PayloadPcduHandler.h
12701;0x319d;NEG_V_OUT_OF_BOUNDS;MEDIUM;P1: 0 -> too low, 1 -> too high P2: Float value;mission/devices/PayloadPcduHandler.h
12702;0x319e;U_DRO_OUT_OF_BOUNDS;MEDIUM;P1: 0 -> too low, 1 -> too high P2: Float value;mission/devices/PayloadPcduHandler.h
12703;0x319f;I_DRO_OUT_OF_BOUNDS;MEDIUM;P1: 0 -> too low, 1 -> too high P2: Float value;mission/devices/PayloadPcduHandler.h
12704;0x31a0;U_X8_OUT_OF_BOUNDS;MEDIUM;P1: 0 -> too low, 1 -> too high P2: Float value;mission/devices/PayloadPcduHandler.h
12705;0x31a1;I_X8_OUT_OF_BOUNDS;MEDIUM;P1: 0 -> too low, 1 -> too high P2: Float value;mission/devices/PayloadPcduHandler.h
12706;0x31a2;U_TX_OUT_OF_BOUNDS;MEDIUM;P1: 0 -> too low, 1 -> too high P2: Float value;mission/devices/PayloadPcduHandler.h
12707;0x31a3;I_TX_OUT_OF_BOUNDS;MEDIUM;P1: 0 -> too low, 1 -> too high P2: Float value;mission/devices/PayloadPcduHandler.h
12708;0x31a4;U_MPA_OUT_OF_BOUNDS;MEDIUM;P1: 0 -> too low, 1 -> too high P2: Float value;mission/devices/PayloadPcduHandler.h
12709;0x31a5;I_MPA_OUT_OF_BOUNDS;MEDIUM;P1: 0 -> too low, 1 -> too high P2: Float value;mission/devices/PayloadPcduHandler.h
12710;0x31a6;U_HPA_OUT_OF_BOUNDS;MEDIUM;P1: 0 -> too low, 1 -> too high P2: Float value;mission/devices/PayloadPcduHandler.h
12711;0x31a7;I_HPA_OUT_OF_BOUNDS;MEDIUM;P1: 0 -> too low, 1 -> too high P2: Float value;mission/devices/PayloadPcduHandler.h
12800;0x3200;TRANSITION_OTHER_SIDE_FAILED;HIGH;No description;mission/system/objects/AcsBoardAssembly.h
12801;0x3201;NOT_ENOUGH_DEVICES_DUAL_MODE;HIGH;No description;mission/system/objects/AcsBoardAssembly.h
12802;0x3202;POWER_STATE_MACHINE_TIMEOUT;MEDIUM;No description;mission/system/objects/AcsBoardAssembly.h
12803;0x3203;SIDE_SWITCH_TRANSITION_NOT_ALLOWED;LOW;Not implemented, would increase already high complexity. Operator should instead command the assembly off first and then command the assembly on into the desired mode/submode combination;mission/system/objects/AcsBoardAssembly.h
12900;0x3264;TRANSITION_OTHER_SIDE_FAILED;HIGH;No description;mission/system/objects/SusAssembly.h
12901;0x3265;NOT_ENOUGH_DEVICES_DUAL_MODE;HIGH;No description;mission/system/objects/SusAssembly.h
12902;0x3266;POWER_STATE_MACHINE_TIMEOUT;MEDIUM;No description;mission/system/objects/SusAssembly.h
12903;0x3267;SIDE_SWITCH_TRANSITION_NOT_ALLOWED;LOW;Not implemented, would increase already high complexity. Operator should instead command the assembly off first and then command the assembly on into the desired mode/submode combination;mission/system/objects/SusAssembly.h
12500;0x30d4;IMAGE_UPLOAD_FAILED;LOW;Image upload failed;linux/acs/StrComHandler.h
12501;0x30d5;IMAGE_DOWNLOAD_FAILED;LOW;Image download failed;linux/acs/StrComHandler.h
12502;0x30d6;IMAGE_UPLOAD_SUCCESSFUL;LOW;Uploading image to star tracker was successfulop;linux/acs/StrComHandler.h
12503;0x30d7;IMAGE_DOWNLOAD_SUCCESSFUL;LOW;Image download was successful;linux/acs/StrComHandler.h
12504;0x30d8;FLASH_WRITE_SUCCESSFUL;LOW;Finished flash write procedure successfully;linux/acs/StrComHandler.h
12505;0x30d9;FLASH_READ_SUCCESSFUL;LOW;Finished flash read procedure successfully;linux/acs/StrComHandler.h
12506;0x30da;FLASH_READ_FAILED;LOW;Flash read procedure failed;linux/acs/StrComHandler.h
12507;0x30db;FIRMWARE_UPDATE_SUCCESSFUL;LOW;Firmware update was successful;linux/acs/StrComHandler.h
12508;0x30dc;FIRMWARE_UPDATE_FAILED;LOW;Firmware update failed;linux/acs/StrComHandler.h
12509;0x30dd;STR_HELPER_READING_REPLY_FAILED;LOW;Failed to read communication interface reply data P1: Return code of failed communication interface read call P1: Upload/download position for which the read call failed;linux/acs/StrComHandler.h
12510;0x30de;STR_HELPER_COM_ERROR;LOW;Unexpected stop of decoding sequence P1: Return code of failed communication interface read call P1: Upload/download position for which the read call failed;linux/acs/StrComHandler.h
12511;0x30df;STR_COM_REPLY_TIMEOUT;LOW;Star tracker did not send a valid reply for a certain timeout. P1: Position of upload or download packet for which the packet wa sent. P2: Timeout;linux/acs/StrComHandler.h
12513;0x30e1;STR_HELPER_DEC_ERROR;LOW;Error during decoding of received reply occurred P1: Return value of decoding function P2: Position of upload/download packet, or address of flash write/read request;linux/acs/StrComHandler.h
12514;0x30e2;POSITION_MISMATCH;LOW;Position mismatch P1: The expected position and thus the position for which the image upload/download failed;linux/acs/StrComHandler.h
12515;0x30e3;STR_HELPER_FILE_NOT_EXISTS;LOW;Specified file does not exist P1: Internal state of str helper;linux/acs/StrComHandler.h
12516;0x30e4;STR_HELPER_SENDING_PACKET_FAILED;LOW;No description;linux/acs/StrComHandler.h
12517;0x30e5;STR_HELPER_REQUESTING_MSG_FAILED;LOW;No description;linux/acs/StrComHandler.h
12600;0x3138;MPSOC_FLASH_WRITE_FAILED;LOW;Flash write fails;linux/payload/PlocMpsocHelper.h
12601;0x3139;MPSOC_FLASH_WRITE_SUCCESSFUL;LOW;Flash write successful;linux/payload/PlocMpsocHelper.h
12602;0x313a;MPSOC_SENDING_COMMAND_FAILED;LOW;No description;linux/payload/PlocMpsocHelper.h
12603;0x313b;MPSOC_HELPER_REQUESTING_REPLY_FAILED;LOW;Request receive message of communication interface failed P1: Return value returned by the communication interface requestReceiveMessage function P2: Internal state of MPSoC helper;linux/payload/PlocMpsocHelper.h
12604;0x313c;MPSOC_HELPER_READING_REPLY_FAILED;LOW;Reading receive message of communication interface failed P1: Return value returned by the communication interface readingReceivedMessage function P2: Internal state of MPSoC helper;linux/payload/PlocMpsocHelper.h
12605;0x313d;MPSOC_MISSING_ACK;LOW;Did not receive acknowledgment report P1: Number of bytes missing P2: Internal state of MPSoC helper;linux/payload/PlocMpsocHelper.h
12606;0x313e;MPSOC_MISSING_EXE;LOW;Did not receive execution report P1: Number of bytes missing P2: Internal state of MPSoC helper;linux/payload/PlocMpsocHelper.h
12607;0x313f;MPSOC_ACK_FAILURE_REPORT;LOW;Received acknowledgment failure report P1: Internal state of MPSoC;linux/payload/PlocMpsocHelper.h
12608;0x3140;MPSOC_EXE_FAILURE_REPORT;LOW;Received execution failure report P1: Internal state of MPSoC;linux/payload/PlocMpsocHelper.h
12609;0x3141;MPSOC_ACK_INVALID_APID;LOW;Expected acknowledgment report but received space packet with other apid P1: Apid of received space packet P2: Internal state of MPSoC;linux/payload/PlocMpsocHelper.h
12610;0x3142;MPSOC_EXE_INVALID_APID;LOW;Expected execution report but received space packet with other apid P1: Apid of received space packet P2: Internal state of MPSoC;linux/payload/PlocMpsocHelper.h
12611;0x3143;MPSOC_HELPER_SEQ_CNT_MISMATCH;LOW;Received sequence count does not match expected sequence count P1: Expected sequence count P2: Received sequence count;linux/payload/PlocMpsocHelper.h
12612;0x3144;MPSOC_TM_SIZE_ERROR;LOW;No description;linux/payload/PlocMpsocHelper.h
12613;0x3145;MPSOC_TM_CRC_MISSMATCH;LOW;No description;linux/payload/PlocMpsocHelper.h
12700;0x319c;TRANSITION_BACK_TO_OFF;MEDIUM;Could not transition properly and went back to ALL OFF;mission/payload/PayloadPcduHandler.h
12701;0x319d;NEG_V_OUT_OF_BOUNDS;MEDIUM;P1: 0 -> too low, 1 -> too high P2: Float value;mission/payload/PayloadPcduHandler.h
12702;0x319e;U_DRO_OUT_OF_BOUNDS;MEDIUM;P1: 0 -> too low, 1 -> too high P2: Float value;mission/payload/PayloadPcduHandler.h
12703;0x319f;I_DRO_OUT_OF_BOUNDS;MEDIUM;P1: 0 -> too low, 1 -> too high P2: Float value;mission/payload/PayloadPcduHandler.h
12704;0x31a0;U_X8_OUT_OF_BOUNDS;MEDIUM;P1: 0 -> too low, 1 -> too high P2: Float value;mission/payload/PayloadPcduHandler.h
12705;0x31a1;I_X8_OUT_OF_BOUNDS;MEDIUM;P1: 0 -> too low, 1 -> too high P2: Float value;mission/payload/PayloadPcduHandler.h
12706;0x31a2;U_TX_OUT_OF_BOUNDS;MEDIUM;P1: 0 -> too low, 1 -> too high P2: Float value;mission/payload/PayloadPcduHandler.h
12707;0x31a3;I_TX_OUT_OF_BOUNDS;MEDIUM;P1: 0 -> too low, 1 -> too high P2: Float value;mission/payload/PayloadPcduHandler.h
12708;0x31a4;U_MPA_OUT_OF_BOUNDS;MEDIUM;P1: 0 -> too low, 1 -> too high P2: Float value;mission/payload/PayloadPcduHandler.h
12709;0x31a5;I_MPA_OUT_OF_BOUNDS;MEDIUM;P1: 0 -> too low, 1 -> too high P2: Float value;mission/payload/PayloadPcduHandler.h
12710;0x31a6;U_HPA_OUT_OF_BOUNDS;MEDIUM;P1: 0 -> too low, 1 -> too high P2: Float value;mission/payload/PayloadPcduHandler.h
12711;0x31a7;I_HPA_OUT_OF_BOUNDS;MEDIUM;P1: 0 -> too low, 1 -> too high P2: Float value;mission/payload/PayloadPcduHandler.h
12800;0x3200;TRANSITION_OTHER_SIDE_FAILED;HIGH;No description;mission/system/acs/AcsBoardAssembly.h
12801;0x3201;NOT_ENOUGH_DEVICES_DUAL_MODE;HIGH;No description;mission/system/acs/AcsBoardAssembly.h
12802;0x3202;POWER_STATE_MACHINE_TIMEOUT;MEDIUM;No description;mission/system/acs/AcsBoardAssembly.h
12803;0x3203;SIDE_SWITCH_TRANSITION_NOT_ALLOWED;LOW;Not implemented, would increase already high complexity. Operator should instead command the assembly off first and then command the assembly on into the desired mode/submode combination;mission/system/acs/AcsBoardAssembly.h
12900;0x3264;TRANSITION_OTHER_SIDE_FAILED;HIGH;No description;mission/system/acs/SusAssembly.h
12901;0x3265;NOT_ENOUGH_DEVICES_DUAL_MODE;HIGH;No description;mission/system/acs/SusAssembly.h
12902;0x3266;POWER_STATE_MACHINE_TIMEOUT;MEDIUM;No description;mission/system/acs/SusAssembly.h
12903;0x3267;SIDE_SWITCH_TRANSITION_NOT_ALLOWED;LOW;Not implemented, would increase already high complexity. Operator should instead command the assembly off first and then command the assembly on into the desired mode/submode combination;mission/system/acs/SusAssembly.h
13000;0x32c8;CHILDREN_LOST_MODE;MEDIUM;No description;mission/system/objects/TcsBoardAssembly.h
13100;0x332c;GPS_FIX_CHANGE;INFO;Fix has changed. P1: Old fix. P2: New fix 0: Not seen, 1: No Fix, 2: 2D-Fix, 3: 3D-Fix;mission/devices/devicedefinitions/GPSDefinitions.h
13101;0x332d;CANT_GET_FIX;LOW;Could not get fix in maximum allowed time. P1: Maximum allowed time to get a fix after the GPS was switched on.;mission/devices/devicedefinitions/GPSDefinitions.h
13200;0x3390;P60_BOOT_COUNT;INFO;P60 boot count is broadcasted once at SW startup. P1: Boot count;mission/devices/P60DockHandler.h
13201;0x3391;BATT_MODE;INFO;Battery mode is broadcasted at startup. P1: Mode;mission/devices/P60DockHandler.h
13202;0x3392;BATT_MODE_CHANGED;MEDIUM;Battery mode has changed. P1: Old mode. P2: New mode;mission/devices/P60DockHandler.h
13600;0x3520;SUPV_UPDATE_FAILED;LOW;update failed;linux/devices/ploc/PlocSupvUartMan.h
13601;0x3521;SUPV_UPDATE_SUCCESSFUL;LOW;update successful;linux/devices/ploc/PlocSupvUartMan.h
13602;0x3522;SUPV_CONTINUE_UPDATE_FAILED;LOW;Continue update command failed;linux/devices/ploc/PlocSupvUartMan.h
13603;0x3523;SUPV_CONTINUE_UPDATE_SUCCESSFUL;LOW;Continue update command successful;linux/devices/ploc/PlocSupvUartMan.h
13604;0x3524;TERMINATED_UPDATE_PROCEDURE;LOW;Terminated update procedure by command;linux/devices/ploc/PlocSupvUartMan.h
13605;0x3525;SUPV_EVENT_BUFFER_REQUEST_SUCCESSFUL;LOW;Requesting event buffer was successful;linux/devices/ploc/PlocSupvUartMan.h
13606;0x3526;SUPV_EVENT_BUFFER_REQUEST_FAILED;LOW;Requesting event buffer failed;linux/devices/ploc/PlocSupvUartMan.h
13607;0x3527;SUPV_EVENT_BUFFER_REQUEST_TERMINATED;LOW;Terminated event buffer request by command P1: Number of packets read before process was terminated;linux/devices/ploc/PlocSupvUartMan.h
13608;0x3528;SUPV_MEM_CHECK_OK;INFO;No description;linux/devices/ploc/PlocSupvUartMan.h
13609;0x3529;SUPV_MEM_CHECK_FAIL;INFO;No description;linux/devices/ploc/PlocSupvUartMan.h
13616;0x3530;SUPV_SENDING_COMMAND_FAILED;LOW;No description;linux/devices/ploc/PlocSupvUartMan.h
13617;0x3531;SUPV_HELPER_REQUESTING_REPLY_FAILED;LOW;Request receive message of communication interface failed P1: Return value returned by the communication interface requestReceiveMessage function P2: Internal state of supervisor helper;linux/devices/ploc/PlocSupvUartMan.h
13618;0x3532;SUPV_HELPER_READING_REPLY_FAILED;LOW;Reading receive message of communication interface failed P1: Return value returned by the communication interface readingReceivedMessage function P2: Internal state of supervisor helper;linux/devices/ploc/PlocSupvUartMan.h
13619;0x3533;SUPV_MISSING_ACK;LOW;Did not receive acknowledgement report P1: Number of bytes missing P2: Internal state of MPSoC helper;linux/devices/ploc/PlocSupvUartMan.h
13620;0x3534;SUPV_MISSING_EXE;LOW;Supervisor did not receive execution report P1: Number of bytes missing P2: Internal state of supervisor helper;linux/devices/ploc/PlocSupvUartMan.h
13621;0x3535;SUPV_ACK_FAILURE_REPORT;LOW;Supervisor received acknowledgment failure report P1: Internal state of supervisor helper;linux/devices/ploc/PlocSupvUartMan.h
13622;0x3536;SUPV_EXE_FAILURE_REPORT;LOW;Execution report failure P1:;linux/devices/ploc/PlocSupvUartMan.h
13623;0x3537;SUPV_ACK_INVALID_APID;LOW;Supervisor expected acknowledgment report but received space packet with other apid P1: Apid of received space packet P2: Internal state of supervisor helper;linux/devices/ploc/PlocSupvUartMan.h
13624;0x3538;SUPV_EXE_INVALID_APID;LOW;Supervisor helper expected execution report but received space packet with other apid P1: Apid of received space packet P2: Internal state of supervisor helper;linux/devices/ploc/PlocSupvUartMan.h
13625;0x3539;ACK_RECEPTION_FAILURE;LOW;Failed to receive acknowledgment report P1: Return value P2: Apid of command for which the reception of the acknowledgment report failed;linux/devices/ploc/PlocSupvUartMan.h
13626;0x353a;EXE_RECEPTION_FAILURE;LOW;Failed to receive execution report P1: Return value P2: Apid of command for which the reception of the execution report failed;linux/devices/ploc/PlocSupvUartMan.h
13627;0x353b;WRITE_MEMORY_FAILED;LOW;Update procedure failed when sending packet. P1: First byte percent, third and fourth byte Sequence Count, P2: Bytes written;linux/devices/ploc/PlocSupvUartMan.h
13628;0x353c;SUPV_REPLY_SIZE_MISSMATCH;LOW;No description;linux/devices/ploc/PlocSupvUartMan.h
13629;0x353d;SUPV_REPLY_CRC_MISSMATCH;LOW;No description;linux/devices/ploc/PlocSupvUartMan.h
13630;0x353e;SUPV_UPDATE_PROGRESS;INFO;Will be triggered every 5 percent of the update progress. P1: First byte percent, third and fourth byte Sequence Count, P2: Bytes written;linux/devices/ploc/PlocSupvUartMan.h
13631;0x353f;HDLC_FRAME_REMOVAL_ERROR;INFO;No description;linux/devices/ploc/PlocSupvUartMan.h
13632;0x3540;HDLC_CRC_ERROR;INFO;No description;linux/devices/ploc/PlocSupvUartMan.h
13700;0x3584;FDIR_REACTION_IGNORED;MEDIUM;No description;mission/devices/devicedefinitions/SyrlinksDefinitions.h
13701;0x3585;TX_ON;INFO;Transmitter is on now. P1: Submode, P2: Current default datarate.;mission/devices/devicedefinitions/SyrlinksDefinitions.h
13702;0x3586;TX_OFF;INFO;Transmitter is off now.;mission/devices/devicedefinitions/SyrlinksDefinitions.h
13800;0x35e8;MISSING_PACKET;LOW;No description;mission/devices/devicedefinitions/ScexDefinitions.h
13801;0x35e9;EXPERIMENT_TIMEDOUT;LOW;No description;mission/devices/devicedefinitions/ScexDefinitions.h
13802;0x35ea;MULTI_PACKET_COMMAND_DONE;INFO;No description;mission/devices/devicedefinitions/ScexDefinitions.h
13100;0x332c;GPS_FIX_CHANGE;INFO;Fix has changed. P1: Old fix. P2: New fix 0: Not seen, 1: No Fix, 2: 2D-Fix, 3: 3D-Fix;mission/acs/archive/GPSDefinitions.h
13101;0x332d;CANT_GET_FIX;LOW;Could not get fix in maximum allowed time. P1: Maximum allowed time to get a fix after the GPS was switched on.;mission/acs/archive/GPSDefinitions.h
13200;0x3390;P60_BOOT_COUNT;INFO;P60 boot count is broadcasted once at SW startup. P1: Boot count;mission/power/P60DockHandler.h
13201;0x3391;BATT_MODE;INFO;Battery mode is broadcasted at startup. P1: Mode;mission/power/P60DockHandler.h
13202;0x3392;BATT_MODE_CHANGED;MEDIUM;Battery mode has changed. P1: Old mode. P2: New mode;mission/power/P60DockHandler.h
13600;0x3520;SUPV_UPDATE_FAILED;LOW;update failed;linux/payload/PlocSupvUartMan.h
13601;0x3521;SUPV_UPDATE_SUCCESSFUL;LOW;update successful;linux/payload/PlocSupvUartMan.h
13602;0x3522;SUPV_CONTINUE_UPDATE_FAILED;LOW;Continue update command failed;linux/payload/PlocSupvUartMan.h
13603;0x3523;SUPV_CONTINUE_UPDATE_SUCCESSFUL;LOW;Continue update command successful;linux/payload/PlocSupvUartMan.h
13604;0x3524;TERMINATED_UPDATE_PROCEDURE;LOW;Terminated update procedure by command;linux/payload/PlocSupvUartMan.h
13605;0x3525;SUPV_EVENT_BUFFER_REQUEST_SUCCESSFUL;LOW;Requesting event buffer was successful;linux/payload/PlocSupvUartMan.h
13606;0x3526;SUPV_EVENT_BUFFER_REQUEST_FAILED;LOW;Requesting event buffer failed;linux/payload/PlocSupvUartMan.h
13607;0x3527;SUPV_EVENT_BUFFER_REQUEST_TERMINATED;LOW;Terminated event buffer request by command P1: Number of packets read before process was terminated;linux/payload/PlocSupvUartMan.h
13608;0x3528;SUPV_MEM_CHECK_OK;INFO;No description;linux/payload/PlocSupvUartMan.h
13609;0x3529;SUPV_MEM_CHECK_FAIL;INFO;No description;linux/payload/PlocSupvUartMan.h
13616;0x3530;SUPV_SENDING_COMMAND_FAILED;LOW;No description;linux/payload/PlocSupvUartMan.h
13617;0x3531;SUPV_HELPER_REQUESTING_REPLY_FAILED;LOW;Request receive message of communication interface failed P1: Return value returned by the communication interface requestReceiveMessage function P2: Internal state of supervisor helper;linux/payload/PlocSupvUartMan.h
13618;0x3532;SUPV_HELPER_READING_REPLY_FAILED;LOW;Reading receive message of communication interface failed P1: Return value returned by the communication interface readingReceivedMessage function P2: Internal state of supervisor helper;linux/payload/PlocSupvUartMan.h
13619;0x3533;SUPV_MISSING_ACK;LOW;Did not receive acknowledgement report P1: Number of bytes missing P2: Internal state of MPSoC helper;linux/payload/PlocSupvUartMan.h
13620;0x3534;SUPV_MISSING_EXE;LOW;Supervisor did not receive execution report P1: Number of bytes missing P2: Internal state of supervisor helper;linux/payload/PlocSupvUartMan.h
13621;0x3535;SUPV_ACK_FAILURE_REPORT;LOW;Supervisor received acknowledgment failure report P1: Internal state of supervisor helper;linux/payload/PlocSupvUartMan.h
13622;0x3536;SUPV_EXE_FAILURE_REPORT;LOW;Execution report failure P1:;linux/payload/PlocSupvUartMan.h
13623;0x3537;SUPV_ACK_INVALID_APID;LOW;Supervisor expected acknowledgment report but received space packet with other apid P1: Apid of received space packet P2: Internal state of supervisor helper;linux/payload/PlocSupvUartMan.h
13624;0x3538;SUPV_EXE_INVALID_APID;LOW;Supervisor helper expected execution report but received space packet with other apid P1: Apid of received space packet P2: Internal state of supervisor helper;linux/payload/PlocSupvUartMan.h
13625;0x3539;ACK_RECEPTION_FAILURE;LOW;Failed to receive acknowledgment report P1: Return value P2: Apid of command for which the reception of the acknowledgment report failed;linux/payload/PlocSupvUartMan.h
13626;0x353a;EXE_RECEPTION_FAILURE;LOW;Failed to receive execution report P1: Return value P2: Apid of command for which the reception of the execution report failed;linux/payload/PlocSupvUartMan.h
13627;0x353b;WRITE_MEMORY_FAILED;LOW;Update procedure failed when sending packet. P1: First byte percent, third and fourth byte Sequence Count, P2: Bytes written;linux/payload/PlocSupvUartMan.h
13628;0x353c;SUPV_REPLY_SIZE_MISSMATCH;LOW;No description;linux/payload/PlocSupvUartMan.h
13629;0x353d;SUPV_REPLY_CRC_MISSMATCH;LOW;No description;linux/payload/PlocSupvUartMan.h
13630;0x353e;SUPV_UPDATE_PROGRESS;INFO;Will be triggered every 5 percent of the update progress. P1: First byte percent, third and fourth byte Sequence Count, P2: Bytes written;linux/payload/PlocSupvUartMan.h
13631;0x353f;HDLC_FRAME_REMOVAL_ERROR;INFO;No description;linux/payload/PlocSupvUartMan.h
13632;0x3540;HDLC_CRC_ERROR;INFO;No description;linux/payload/PlocSupvUartMan.h
13701;0x3585;TX_ON;INFO;Transmitter is on now. P1: Submode, P2: Current default datarate.;mission/com/syrlinksDefs.h
13702;0x3586;TX_OFF;INFO;Transmitter is off now.;mission/com/syrlinksDefs.h
13800;0x35e8;MISSING_PACKET;LOW;No description;mission/payload/scexHelpers.h
13801;0x35e9;EXPERIMENT_TIMEDOUT;LOW;No description;mission/payload/scexHelpers.h
13802;0x35ea;MULTI_PACKET_COMMAND_DONE;INFO;No description;mission/payload/scexHelpers.h
13901;0x364d;SET_CONFIGFILEVALUE_FAILED;MEDIUM;No description;mission/utility/GlobalConfigHandler.h
13902;0x364e;GET_CONFIGFILEVALUE_FAILED;MEDIUM;No description;mission/utility/GlobalConfigHandler.h
13903;0x364f;INSERT_CONFIGFILEVALUE_FAILED;MEDIUM;No description;mission/utility/GlobalConfigHandler.h
13904;0x3650;WRITE_CONFIGFILE_FAILED;MEDIUM;No description;mission/utility/GlobalConfigHandler.h
13905;0x3651;READ_CONFIGFILE_FAILED;MEDIUM;No description;mission/utility/GlobalConfigHandler.h
14000;0x36b0;ALLOC_FAILURE;MEDIUM;No description;bsp_q7s/core/CoreController.h
14001;0x36b1;REBOOT_SW;MEDIUM; Software reboot occurred. Can also be a systemd reboot. P1: Current Chip, P2: Current Copy;bsp_q7s/core/CoreController.h
14001;0x36b1;REBOOT_SW;LOW; Software reboot occurred. Can also be a systemd reboot. P1: Current Chip, P2: Current Copy;bsp_q7s/core/CoreController.h
14002;0x36b2;REBOOT_MECHANISM_TRIGGERED;MEDIUM;The reboot mechanism was triggered. P1: First 16 bits: Last Chip, Last 16 bits: Last Copy, P2: Each byte is the respective reboot count for the slots;bsp_q7s/core/CoreController.h
14003;0x36b3;REBOOT_HW;MEDIUM;No description;bsp_q7s/core/CoreController.h
14004;0x36b4;NO_SD_CARD_ACTIVE;HIGH;No SD card was active. Core controller will attempt to re-initialize a SD card.;bsp_q7s/core/CoreController.h
14005;0x36b5;VERSION_INFO;INFO;P1: Byte 0: Major, Byte 1: Minor, Byte 2: Patch, Byte 3: Has Git Hash P2: First four letters of Git SHA is the last byte of P1 is set.;bsp_q7s/core/CoreController.h
14006;0x36b6;CURRENT_IMAGE_INFO;INFO;P1: Current Chip, P2: Current Copy;bsp_q7s/core/CoreController.h
14007;0x36b7;REBOOT_COUNTER;INFO;Total reboot counter, which is the sum of the boot count of all individual images.;bsp_q7s/core/CoreController.h
14008;0x36b8;INDIVIDUAL_BOOT_COUNTS;INFO;Get the boot count of the individual images. P1: First 16 bits boot count of image 0 0, last 16 bits boot count of image 0 1. P2: First 16 bits boot count of image 1 0, last 16 bits boot count of image 1 1.;bsp_q7s/core/CoreController.h
14010;0x36ba;I2C_UNAVAILABLE_REBOOT;MEDIUM;No description;bsp_q7s/core/CoreController.h
14100;0x3714;NO_VALID_SENSOR_TEMPERATURE;MEDIUM;No description;mission/controller/ThermalController.h
14101;0x3715;NO_HEALTHY_HEATER_AVAILABLE;MEDIUM;No description;mission/controller/ThermalController.h
14102;0x3716;SYRLINKS_OVERHEATING;HIGH;No description;mission/controller/ThermalController.h
@ -263,6 +267,18 @@ Event ID (dec); Event ID (hex); Name; Severity; Description; File Path
14104;0x3718;OBC_OVERHEATING;HIGH;No description;mission/controller/ThermalController.h
14105;0x3719;HPA_OVERHEATING;HIGH;No description;mission/controller/ThermalController.h
14106;0x371a;PLPCDU_OVERHEATING;HIGH;No description;mission/controller/ThermalController.h
14201;0x3779;TX_TIMER_EXPIRED;INFO;The transmit timer to protect the Syrlinks expired P1: The current timer value;mission/system/objects/ComSubsystem.h
14202;0x377a;BIT_LOCK_TX_ON;INFO;Transmitter will be turned on due to detection of bitlock;mission/system/objects/ComSubsystem.h
14300;0x37dc;POSSIBLE_FILE_CORRUPTION;LOW;P1: Result code of TM packet parser. P2: Timestamp of possibly corrupt file as a unix timestamp.;mission/tmtc/PersistentTmStore.h
14201;0x3779;TX_TIMER_EXPIRED;INFO;The transmit timer to protect the Syrlinks expired P1: The current timer value;mission/system/com/ComSubsystem.h
14202;0x377a;BIT_LOCK_TX_ON;INFO;Transmitter will be turned on due to detection of bitlock;mission/system/com/ComSubsystem.h
14300;0x37dc;POSSIBLE_FILE_CORRUPTION;LOW;P1: Result code of TM packet parser. P2: Timestamp of possibly corrupt file as a unix timestamp.;mission/persistentTmStoreDefs.h
14301;0x37dd;FILE_TOO_LARGE;LOW;File in store too large. P1: Detected file size P2: Allowed file size;mission/persistentTmStoreDefs.h
14302;0x37de;BUSY_DUMPING_EVENT;INFO;No description;mission/persistentTmStoreDefs.h
14305;0x37e1;DUMP_OK_STORE_DONE;INFO;P1: Number of dumped packets. P2: Total dumped bytes.;mission/persistentTmStoreDefs.h
14306;0x37e2;DUMP_NOK_STORE_DONE;INFO;P1: Number of dumped packets. P2: Total dumped bytes.;mission/persistentTmStoreDefs.h
14307;0x37e3;DUMP_MISC_STORE_DONE;INFO;P1: Number of dumped packets. P2: Total dumped bytes.;mission/persistentTmStoreDefs.h
14308;0x37e4;DUMP_HK_STORE_DONE;INFO;P1: Number of dumped packets. P2: Total dumped bytes.;mission/persistentTmStoreDefs.h
14309;0x37e5;DUMP_CFDP_STORE_DONE;INFO;P1: Number of dumped packets. P2: Total dumped bytes.;mission/persistentTmStoreDefs.h
14310;0x37e6;DUMP_OK_CANCELLED;LOW;P1: Number of dumped packets. P2: Total dumped bytes.;mission/persistentTmStoreDefs.h
14311;0x37e7;DUMP_NOK_CANCELLED;LOW;P1: Number of dumped packets. P2: Total dumped bytes.;mission/persistentTmStoreDefs.h
14312;0x37e8;DUMP_MISC_CANCELLED;LOW;P1: Number of dumped packets. P2: Total dumped bytes.;mission/persistentTmStoreDefs.h
14313;0x37e9;DUMP_HK_CANCELLED;LOW;P1: Number of dumped packets. P2: Total dumped bytes.;mission/persistentTmStoreDefs.h
14314;0x37ea;DUMP_CFDP_CANCELLED;LOW;P1: Number of dumped packets. P2: Total dumped bytes.;mission/persistentTmStoreDefs.h

1 Event ID (dec) Event ID (hex) Name Severity Description File Path
29 2809 0x0af9 MONITORING_LIMIT_EXCEEDED LOW No description fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
30 2810 0x0afa MONITORING_AMBIGUOUS HIGH No description fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
31 2811 0x0afb DEVICE_WANTS_HARD_REBOOT HIGH No description fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
4201 0x1069 FUSE_CURRENT_HIGH LOW No description fsfw/src/fsfw/power/Fuse.h
4202 0x106a FUSE_WENT_OFF LOW No description fsfw/src/fsfw/power/Fuse.h
4204 0x106c POWER_ABOVE_HIGH_LIMIT LOW No description fsfw/src/fsfw/power/Fuse.h
4205 0x106d POWER_BELOW_LOW_LIMIT LOW No description fsfw/src/fsfw/power/Fuse.h
32 4300 0x10cc SWITCH_WENT_OFF LOW No description fsfw/src/fsfw/power/PowerSwitchIF.h
33 4301 0x10cd FUSE_CURRENT_HIGH LOW No description fsfw/src/fsfw/power/Fuse.h
34 4302 0x10ce FUSE_WENT_OFF LOW No description fsfw/src/fsfw/power/Fuse.h
35 4304 0x10d0 POWER_ABOVE_HIGH_LIMIT LOW No description fsfw/src/fsfw/power/Fuse.h
36 4305 0x10d1 POWER_BELOW_LOW_LIMIT LOW No description fsfw/src/fsfw/power/Fuse.h
37 5000 0x1388 HEATER_ON INFO No description fsfw/src/fsfw/thermal/Heater.h
38 5001 0x1389 HEATER_OFF INFO No description fsfw/src/fsfw/thermal/Heater.h
39 5002 0x138a HEATER_TIMEOUT LOW No description fsfw/src/fsfw/thermal/Heater.h
86 10802 0x2a32 SERIALIZATION_ERROR LOW No description fsfw/src/fsfw/cfdp/handler/defs.h
87 10803 0x2a33 FILESTORE_ERROR LOW No description fsfw/src/fsfw/cfdp/handler/defs.h
88 10804 0x2a34 FILENAME_TOO_LARGE_ERROR LOW P1: Transaction step ID, P2: 0 for source file name, 1 for dest file name fsfw/src/fsfw/cfdp/handler/defs.h
89 11200 0x2bc0 SAFE_RATE_VIOLATION MEDIUM No description mission/acsDefs.h mission/acs/defs.h
90 11201 0x2bc1 SAFE_RATE_RECOVERY MEDIUM No description mission/acsDefs.h mission/acs/defs.h
91 11202 0x2bc2 MULTIPLE_RW_INVALID HIGH No description mission/acsDefs.h mission/acs/defs.h
92 11203 0x2bc3 MEKF_INVALID_INFO INFO No description mission/acsDefs.h mission/acs/defs.h
93 11204 0x2bc4 MEKF_INVALID_MODE_VIOLATION MEKF_RECOVERY HIGH INFO No description mission/acsDefs.h mission/acs/defs.h
94 11300 11205 0x2c24 0x2bc5 SWITCH_CMD_SENT MEKF_INVALID_MODE_VIOLATION INFO HIGH Indicates that a FSFW object requested setting a switch P1: 1 if on was requested, 0 for off | P2: Switch Index No description mission/devices/devicedefinitions/powerDefinitions.h mission/acs/defs.h
95 11301 11206 0x2c25 0x2bc6 SWITCH_HAS_CHANGED SAFE_MODE_CONTROLLER_FAILURE INFO HIGH Indicated that a switch state has changed P1: New switch state, 1 for on, 0 for off | P2: Switch Index No description mission/devices/devicedefinitions/powerDefinitions.h mission/acs/defs.h
96 11302 11300 0x2c26 0x2c24 SWITCHING_Q7S_DENIED SWITCH_CMD_SENT MEDIUM INFO No description Indicates that a FSFW object requested setting a switch P1: 1 if on was requested, 0 for off | P2: Switch Index mission/devices/devicedefinitions/powerDefinitions.h mission/power/defs.h
97 11303 11301 0x2c27 0x2c25 FDIR_REACTION_IGNORED SWITCH_HAS_CHANGED MEDIUM INFO No description Indicated that a switch state has changed P1: New switch state, 1 for on, 0 for off | P2: Switch Index mission/devices/devicedefinitions/powerDefinitions.h mission/power/defs.h
98 11400 11302 0x2c88 0x2c26 GPIO_PULL_HIGH_FAILED SWITCHING_Q7S_DENIED LOW MEDIUM No description mission/devices/HeaterHandler.h mission/power/defs.h
99 11401 11303 0x2c89 0x2c27 GPIO_PULL_LOW_FAILED FDIR_REACTION_IGNORED LOW MEDIUM No description mission/devices/HeaterHandler.h mission/power/defs.h
100 11402 11400 0x2c8a 0x2c88 HEATER_WENT_ON GPIO_PULL_HIGH_FAILED INFO LOW No description mission/devices/HeaterHandler.h mission/tcs/HeaterHandler.h
101 11403 11401 0x2c8b 0x2c89 HEATER_WENT_OFF GPIO_PULL_LOW_FAILED INFO LOW No description mission/devices/HeaterHandler.h mission/tcs/HeaterHandler.h
102 11404 11402 0x2c8c 0x2c8a SWITCH_ALREADY_ON HEATER_WENT_ON LOW INFO No description mission/devices/HeaterHandler.h mission/tcs/HeaterHandler.h
103 11405 11403 0x2c8d 0x2c8b SWITCH_ALREADY_OFF HEATER_WENT_OFF LOW INFO No description mission/devices/HeaterHandler.h mission/tcs/HeaterHandler.h
104 11406 11404 0x2c8e 0x2c8c MAIN_SWITCH_TIMEOUT SWITCH_ALREADY_ON MEDIUM LOW No description mission/devices/HeaterHandler.h mission/tcs/HeaterHandler.h
105 11407 11405 0x2c8f 0x2c8d FAULTY_HEATER_WAS_ON SWITCH_ALREADY_OFF LOW No description mission/devices/HeaterHandler.h mission/tcs/HeaterHandler.h
106 11500 11406 0x2cec 0x2c8e BURN_PHASE_START MAIN_SWITCH_TIMEOUT INFO MEDIUM P1: Burn duration in milliseconds, P2: Dry run flag No description mission/devices/SolarArrayDeploymentHandler.h mission/tcs/HeaterHandler.h
107 11501 11407 0x2ced 0x2c8f BURN_PHASE_DONE FAULTY_HEATER_WAS_ON INFO LOW P1: Burn duration in milliseconds, P2: Dry run flag No description mission/devices/SolarArrayDeploymentHandler.h mission/tcs/HeaterHandler.h
108 11502 11500 0x2cee 0x2cec MAIN_SWITCH_ON_TIMEOUT BURN_PHASE_START LOW INFO No description P1: Burn duration in milliseconds, P2: Dry run flag mission/devices/SolarArrayDeploymentHandler.h mission/SolarArrayDeploymentHandler.h
109 11503 11501 0x2cef 0x2ced MAIN_SWITCH_OFF_TIMEOUT BURN_PHASE_DONE LOW INFO No description P1: Burn duration in milliseconds, P2: Dry run flag mission/devices/SolarArrayDeploymentHandler.h mission/SolarArrayDeploymentHandler.h
110 11504 11502 0x2cf0 0x2cee DEPL_SA1_GPIO_SWTICH_ON_FAILED MAIN_SWITCH_ON_TIMEOUT HIGH LOW No description mission/devices/SolarArrayDeploymentHandler.h mission/SolarArrayDeploymentHandler.h
111 11505 11503 0x2cf1 0x2cef DEPL_SA2_GPIO_SWTICH_ON_FAILED MAIN_SWITCH_OFF_TIMEOUT HIGH LOW No description mission/devices/SolarArrayDeploymentHandler.h mission/SolarArrayDeploymentHandler.h
112 11506 11504 0x2cf2 0x2cf0 DEPL_SA1_GPIO_SWTICH_OFF_FAILED DEPL_SA1_GPIO_SWTICH_ON_FAILED HIGH No description mission/devices/SolarArrayDeploymentHandler.h mission/SolarArrayDeploymentHandler.h
113 11507 11505 0x2cf3 0x2cf1 DEPL_SA2_GPIO_SWTICH_OFF_FAILED DEPL_SA2_GPIO_SWTICH_ON_FAILED HIGH No description mission/devices/SolarArrayDeploymentHandler.h mission/SolarArrayDeploymentHandler.h
114 11508 11506 0x2cf4 0x2cf2 AUTONOMOUS_DEPLOYMENT_COMPLETED DEPL_SA1_GPIO_SWTICH_OFF_FAILED INFO HIGH No description mission/devices/SolarArrayDeploymentHandler.h mission/SolarArrayDeploymentHandler.h
115 11601 11507 0x2d51 0x2cf3 MEMORY_READ_RPT_CRC_FAILURE DEPL_SA2_GPIO_SWTICH_OFF_FAILED LOW HIGH PLOC crc failure in telemetry packet No description linux/devices/ploc/PlocMPSoCHandler.h mission/SolarArrayDeploymentHandler.h
116 11602 11508 0x2d52 0x2cf4 ACK_FAILURE AUTONOMOUS_DEPLOYMENT_COMPLETED LOW INFO PLOC receive acknowledgment failure report P1: Command Id which leads the acknowledgment failure report P2: The status field inserted by the MPSoC into the data field No description linux/devices/ploc/PlocMPSoCHandler.h mission/SolarArrayDeploymentHandler.h
117 11603 11601 0x2d53 0x2d51 EXE_FAILURE MEMORY_READ_RPT_CRC_FAILURE LOW PLOC receive execution failure report P1: Command Id which leads the execution failure report P2: The status field inserted by the MPSoC into the data field PLOC crc failure in telemetry packet linux/devices/ploc/PlocMPSoCHandler.h linux/payload/PlocMpsocHandler.h
118 11604 11602 0x2d54 0x2d52 MPSOC_HANDLER_CRC_FAILURE ACK_FAILURE LOW PLOC reply has invalid crc PLOC receive acknowledgment failure report P1: Command Id which leads the acknowledgment failure report P2: The status field inserted by the MPSoC into the data field linux/devices/ploc/PlocMPSoCHandler.h linux/payload/PlocMpsocHandler.h
119 11605 11603 0x2d55 0x2d53 MPSOC_HANDLER_SEQUENCE_COUNT_MISMATCH EXE_FAILURE LOW Packet sequence count in received space packet does not match expected count P1: Expected sequence count P2: Received sequence count PLOC receive execution failure report P1: Command Id which leads the execution failure report P2: The status field inserted by the MPSoC into the data field linux/devices/ploc/PlocMPSoCHandler.h linux/payload/PlocMpsocHandler.h
120 11606 11604 0x2d56 0x2d54 MPSOC_SHUTDOWN_FAILED MPSOC_HANDLER_CRC_FAILURE HIGH LOW Supervisor fails to shutdown MPSoC. Requires to power off the PLOC and thus also to shutdown the supervisor. PLOC reply has invalid crc linux/devices/ploc/PlocMPSoCHandler.h linux/payload/PlocMpsocHandler.h
121 11701 11605 0x2db5 0x2d55 SELF_TEST_I2C_FAILURE MPSOC_HANDLER_SEQUENCE_COUNT_MISMATCH LOW Get self test result returns I2C failure P1: Indicates on which axis the failure occurred. 0 -> INIT, 1 -> +X, 2 -> -X, 3 -> +Y, 4 -> -Y, 5 -> +Z, 6 -> -Z, 7 -> FINA Packet sequence count in received space packet does not match expected count P1: Expected sequence count P2: Received sequence count mission/devices/ImtqHandler.h linux/payload/PlocMpsocHandler.h
122 11702 11606 0x2db6 0x2d56 SELF_TEST_SPI_FAILURE MPSOC_SHUTDOWN_FAILED LOW HIGH Get self test result returns SPI failure. This concerns the MTM connectivity. P1: Indicates on which axis the failure occurred. 0 -> INIT, 1 -> +X, 2 -> -X, 3 -> +Y, 4 -> -Y, 5 -> +Z, 6 -> -Z, 7 -> FINA Supervisor fails to shutdown MPSoC. Requires to power off the PLOC and thus also to shutdown the supervisor. mission/devices/ImtqHandler.h linux/payload/PlocMpsocHandler.h
123 11703 11701 0x2db7 0x2db5 SELF_TEST_ADC_FAILURE SELF_TEST_I2C_FAILURE LOW Get self test result returns failure in measurement of current and temperature. P1: Indicates on which axis the failure occurred. 0 -> INIT, 1 -> +X, 2 -> -X, 3 -> +Y, 4 -> -Y, 5 -> +Z, 6 -> -Z, 7 -> FINA Get self test result returns I2C failure P1: Indicates on which axis the failure occurred. 0 -> INIT, 1 -> +X, 2 -> -X, 3 -> +Y, 4 -> -Y, 5 -> +Z, 6 -> -Z, 7 -> FINA mission/devices/ImtqHandler.h mission/acs/ImtqHandler.h
124 11704 11702 0x2db8 0x2db6 SELF_TEST_PWM_FAILURE SELF_TEST_SPI_FAILURE LOW Get self test result returns PWM failure which concerns the coil actuation. P1: Indicates on which axis the failure occurred. 0 -> INIT, 1 -> +X, 2 -> -X, 3 -> +Y, 4 -> -Y, 5 -> +Z, 6 -> -Z, 7 -> FINA Get self test result returns SPI failure. This concerns the MTM connectivity. P1: Indicates on which axis the failure occurred. 0 -> INIT, 1 -> +X, 2 -> -X, 3 -> +Y, 4 -> -Y, 5 -> +Z, 6 -> -Z, 7 -> FINA mission/devices/ImtqHandler.h mission/acs/ImtqHandler.h
125 11705 11703 0x2db9 0x2db7 SELF_TEST_TC_FAILURE SELF_TEST_ADC_FAILURE LOW Get self test result returns TC failure (system failure) P1: Indicates on which axis the failure occurred. 0 -> INIT, 1 -> +X, 2 -> -X, 3 -> +Y, 4 -> -Y, 5 -> +Z, 6 -> -Z, 7 -> FINA Get self test result returns failure in measurement of current and temperature. P1: Indicates on which axis the failure occurred. 0 -> INIT, 1 -> +X, 2 -> -X, 3 -> +Y, 4 -> -Y, 5 -> +Z, 6 -> -Z, 7 -> FINA mission/devices/ImtqHandler.h mission/acs/ImtqHandler.h
126 11706 11704 0x2dba 0x2db8 SELF_TEST_MTM_RANGE_FAILURE SELF_TEST_PWM_FAILURE LOW Get self test result returns failure that MTM values were outside of the expected range. P1: Indicates on which axis the failure occurred. 0 -> INIT, 1 -> +X, 2 -> -X, 3 -> +Y, 4 -> -Y, 5 -> +Z, 6 -> -Z, 7 -> FINA Get self test result returns PWM failure which concerns the coil actuation. P1: Indicates on which axis the failure occurred. 0 -> INIT, 1 -> +X, 2 -> -X, 3 -> +Y, 4 -> -Y, 5 -> +Z, 6 -> -Z, 7 -> FINA mission/devices/ImtqHandler.h mission/acs/ImtqHandler.h
127 11707 11705 0x2dbb 0x2db9 SELF_TEST_COIL_CURRENT_FAILURE SELF_TEST_TC_FAILURE LOW Get self test result returns failure indicating that the coil current was outside of the expected range P1: Indicates on which axis the failure occurred. 0 -> INIT, 1 -> +X, 2 -> -X, 3 -> +Y, 4 -> -Y, 5 -> +Z, 6 -> -Z, 7 -> FINA Get self test result returns TC failure (system failure) P1: Indicates on which axis the failure occurred. 0 -> INIT, 1 -> +X, 2 -> -X, 3 -> +Y, 4 -> -Y, 5 -> +Z, 6 -> -Z, 7 -> FINA mission/devices/ImtqHandler.h mission/acs/ImtqHandler.h
128 11708 11706 0x2dbc 0x2dba INVALID_ERROR_BYTE SELF_TEST_MTM_RANGE_FAILURE LOW Received invalid error byte. This indicates an error of the communication link between IMTQ and OBC. Get self test result returns failure that MTM values were outside of the expected range. P1: Indicates on which axis the failure occurred. 0 -> INIT, 1 -> +X, 2 -> -X, 3 -> +Y, 4 -> -Y, 5 -> +Z, 6 -> -Z, 7 -> FINA mission/devices/ImtqHandler.h mission/acs/ImtqHandler.h
129 11801 11707 0x2e19 0x2dbb ERROR_STATE SELF_TEST_COIL_CURRENT_FAILURE HIGH LOW Reaction wheel signals an error state Get self test result returns failure indicating that the coil current was outside of the expected range P1: Indicates on which axis the failure occurred. 0 -> INIT, 1 -> +X, 2 -> -X, 3 -> +Y, 4 -> -Y, 5 -> +Z, 6 -> -Z, 7 -> FINA mission/devices/devicedefinitions/rwHelpers.h mission/acs/ImtqHandler.h
130 11802 11708 0x2e1a 0x2dbc RESET_OCCURED INVALID_ERROR_BYTE LOW No description Received invalid error byte. This indicates an error of the communication link between IMTQ and OBC. mission/devices/devicedefinitions/rwHelpers.h mission/acs/ImtqHandler.h
131 11901 11801 0x2e7d 0x2e19 BOOTING_FIRMWARE_FAILED_EVENT ERROR_STATE LOW HIGH Failed to boot firmware Reaction wheel signals an error state linux/devices/startracker/StarTrackerHandler.h mission/acs/rwHelpers.h
132 11902 11802 0x2e7e 0x2e1a BOOTING_BOOTLOADER_FAILED_EVENT RESET_OCCURED LOW Failed to boot star tracker into bootloader mode No description linux/devices/startracker/StarTrackerHandler.h mission/acs/rwHelpers.h
133 12001 11901 0x2ee1 0x2e7d SUPV_MEMORY_READ_RPT_CRC_FAILURE BOOTING_FIRMWARE_FAILED_EVENT LOW PLOC supervisor crc failure in telemetry packet Failed to boot firmware linux/devices/ploc/PlocSupervisorHandler.h mission/acs/str/StarTrackerHandler.h
134 12002 11902 0x2ee2 0x2e7e SUPV_UNKNOWN_TM BOOTING_BOOTLOADER_FAILED_EVENT LOW Unhandled event. P1: APID, P2: Service ID Failed to boot star tracker into bootloader mode linux/devices/ploc/PlocSupervisorHandler.h mission/acs/str/StarTrackerHandler.h
135 12003 12001 0x2ee3 0x2ee1 SUPV_UNINIMPLEMENTED_TM SUPV_MEMORY_READ_RPT_CRC_FAILURE LOW No description PLOC supervisor crc failure in telemetry packet linux/devices/ploc/PlocSupervisorHandler.h linux/payload/PlocSupervisorHandler.h
136 12004 12002 0x2ee4 0x2ee2 SUPV_ACK_FAILURE SUPV_UNKNOWN_TM LOW PLOC supervisor received acknowledgment failure report Unhandled event. P1: APID, P2: Service ID linux/devices/ploc/PlocSupervisorHandler.h linux/payload/PlocSupervisorHandler.h
137 12005 12003 0x2ee5 0x2ee3 SUPV_EXE_FAILURE SUPV_UNINIMPLEMENTED_TM LOW PLOC received execution failure report P1: ID of command for which the execution failed P2: Status code sent by the supervisor handler No description linux/devices/ploc/PlocSupervisorHandler.h linux/payload/PlocSupervisorHandler.h
138 12006 12004 0x2ee6 0x2ee4 SUPV_CRC_FAILURE_EVENT SUPV_ACK_FAILURE LOW PLOC supervisor reply has invalid crc PLOC supervisor received acknowledgment failure report linux/devices/ploc/PlocSupervisorHandler.h linux/payload/PlocSupervisorHandler.h
139 12007 12005 0x2ee7 0x2ee5 SUPV_HELPER_EXECUTING SUPV_EXE_FAILURE LOW Supervisor helper currently executing a command PLOC received execution failure report P1: ID of command for which the execution failed P2: Status code sent by the supervisor handler linux/devices/ploc/PlocSupervisorHandler.h linux/payload/PlocSupervisorHandler.h
140 12008 12006 0x2ee8 0x2ee6 SUPV_MPSOC_SHUTDOWN_BUILD_FAILED SUPV_CRC_FAILURE_EVENT LOW Failed to build the command to shutdown the MPSoC PLOC supervisor reply has invalid crc linux/devices/ploc/PlocSupervisorHandler.h linux/payload/PlocSupervisorHandler.h
141 12007 0x2ee7 SUPV_HELPER_EXECUTING LOW Supervisor helper currently executing a command linux/payload/PlocSupervisorHandler.h
142 12008 0x2ee8 SUPV_MPSOC_SHUTDOWN_BUILD_FAILED LOW Failed to build the command to shutdown the MPSoC linux/payload/PlocSupervisorHandler.h
143 12100 0x2f44 SANITIZATION_FAILED LOW No description bsp_q7s/fs/SdCardManager.h
144 12101 0x2f45 MOUNTED_SD_CARD INFO No description bsp_q7s/fs/SdCardManager.h
145 12300 0x300c SEND_MRAM_DUMP_FAILED LOW Failed to send mram dump command to supervisor handler P1: Return value of commandAction function P2: Start address of MRAM to dump with this command linux/devices/ploc/PlocMemoryDumper.h linux/payload/PlocMemoryDumper.h
146 12301 0x300d MRAM_DUMP_FAILED LOW Received completion failure report form PLOC supervisor handler P1: MRAM start address of failing dump command linux/devices/ploc/PlocMemoryDumper.h linux/payload/PlocMemoryDumper.h
147 12302 0x300e MRAM_DUMP_FINISHED LOW MRAM dump finished successfully linux/devices/ploc/PlocMemoryDumper.h linux/payload/PlocMemoryDumper.h
148 12401 0x3071 INVALID_TC_FRAME HIGH No description linux/ipcore/PdecHandler.h
149 12402 0x3072 INVALID_FAR HIGH Read invalid FAR from PDEC after startup linux/ipcore/PdecHandler.h
150 12403 0x3073 CARRIER_LOCK INFO Carrier lock detected linux/ipcore/PdecHandler.h
156 12409 0x3079 WRITE_SYSCALL_ERROR_PDEC HIGH No description linux/ipcore/PdecHandler.h
157 12410 0x307a PDEC_RESET_FAILED HIGH Failed to pull PDEC reset to low linux/ipcore/PdecHandler.h
158 12411 0x307b OPEN_IRQ_FILE_FAILED HIGH Failed to open the IRQ uio file linux/ipcore/PdecHandler.h
159 12500 0x30d4 IMAGE_UPLOAD_FAILED LOW Image upload failed linux/devices/startracker/StrHelper.h linux/acs/StrComHandler.h
160 12501 0x30d5 IMAGE_DOWNLOAD_FAILED LOW Image download failed linux/devices/startracker/StrHelper.h linux/acs/StrComHandler.h
161 12502 0x30d6 IMAGE_UPLOAD_SUCCESSFUL LOW Uploading image to star tracker was successfulop linux/devices/startracker/StrHelper.h linux/acs/StrComHandler.h
162 12503 0x30d7 IMAGE_DOWNLOAD_SUCCESSFUL LOW Image download was successful linux/devices/startracker/StrHelper.h linux/acs/StrComHandler.h
163 12504 0x30d8 FLASH_WRITE_SUCCESSFUL LOW Finished flash write procedure successfully linux/devices/startracker/StrHelper.h linux/acs/StrComHandler.h
164 12505 0x30d9 FLASH_READ_SUCCESSFUL LOW Finished flash read procedure successfully linux/devices/startracker/StrHelper.h linux/acs/StrComHandler.h
165 12506 0x30da FLASH_READ_FAILED LOW Flash read procedure failed linux/devices/startracker/StrHelper.h linux/acs/StrComHandler.h
166 12507 0x30db FIRMWARE_UPDATE_SUCCESSFUL LOW Firmware update was successful linux/devices/startracker/StrHelper.h linux/acs/StrComHandler.h
167 12508 0x30dc FIRMWARE_UPDATE_FAILED LOW Firmware update failed linux/devices/startracker/StrHelper.h linux/acs/StrComHandler.h
168 12509 0x30dd STR_HELPER_READING_REPLY_FAILED LOW Failed to read communication interface reply data P1: Return code of failed communication interface read call P1: Upload/download position for which the read call failed linux/devices/startracker/StrHelper.h linux/acs/StrComHandler.h
169 12510 0x30de STR_HELPER_COM_ERROR LOW Unexpected stop of decoding sequence P1: Return code of failed communication interface read call P1: Upload/download position for which the read call failed linux/devices/startracker/StrHelper.h linux/acs/StrComHandler.h
170 12511 0x30df STR_HELPER_NO_REPLY STR_COM_REPLY_TIMEOUT LOW Star tracker did not send replies (maybe device is powered off) P1: Position of upload or download packet for which no reply was sent Star tracker did not send a valid reply for a certain timeout. P1: Position of upload or download packet for which the packet wa sent. P2: Timeout linux/devices/startracker/StrHelper.h linux/acs/StrComHandler.h
171 12512 12513 0x30e0 0x30e1 STR_HELPER_DEC_ERROR LOW Error during decoding of received reply occurred P1: Return value of decoding function P2: Position of upload/download packet, or address of flash write/read request linux/devices/startracker/StrHelper.h linux/acs/StrComHandler.h
172 12513 12514 0x30e1 0x30e2 POSITION_MISMATCH LOW Position mismatch P1: The expected position and thus the position for which the image upload/download failed linux/devices/startracker/StrHelper.h linux/acs/StrComHandler.h
173 12514 12515 0x30e2 0x30e3 STR_HELPER_FILE_NOT_EXISTS LOW Specified file does not exist P1: Internal state of str helper linux/devices/startracker/StrHelper.h linux/acs/StrComHandler.h
174 12515 12516 0x30e3 0x30e4 STR_HELPER_SENDING_PACKET_FAILED LOW No description linux/devices/startracker/StrHelper.h linux/acs/StrComHandler.h
175 12516 12517 0x30e4 0x30e5 STR_HELPER_REQUESTING_MSG_FAILED LOW No description linux/devices/startracker/StrHelper.h linux/acs/StrComHandler.h
176 12600 0x3138 MPSOC_FLASH_WRITE_FAILED LOW Flash write fails linux/devices/ploc/PlocMPSoCHelper.h linux/payload/PlocMpsocHelper.h
177 12601 0x3139 MPSOC_FLASH_WRITE_SUCCESSFUL LOW Flash write successful linux/devices/ploc/PlocMPSoCHelper.h linux/payload/PlocMpsocHelper.h
178 12602 0x313a MPSOC_SENDING_COMMAND_FAILED LOW No description linux/devices/ploc/PlocMPSoCHelper.h linux/payload/PlocMpsocHelper.h
179 12603 0x313b MPSOC_HELPER_REQUESTING_REPLY_FAILED LOW Request receive message of communication interface failed P1: Return value returned by the communication interface requestReceiveMessage function P2: Internal state of MPSoC helper linux/devices/ploc/PlocMPSoCHelper.h linux/payload/PlocMpsocHelper.h
180 12604 0x313c MPSOC_HELPER_READING_REPLY_FAILED LOW Reading receive message of communication interface failed P1: Return value returned by the communication interface readingReceivedMessage function P2: Internal state of MPSoC helper linux/devices/ploc/PlocMPSoCHelper.h linux/payload/PlocMpsocHelper.h
181 12605 0x313d MPSOC_MISSING_ACK LOW Did not receive acknowledgment report P1: Number of bytes missing P2: Internal state of MPSoC helper linux/devices/ploc/PlocMPSoCHelper.h linux/payload/PlocMpsocHelper.h
182 12606 0x313e MPSOC_MISSING_EXE LOW Did not receive execution report P1: Number of bytes missing P2: Internal state of MPSoC helper linux/devices/ploc/PlocMPSoCHelper.h linux/payload/PlocMpsocHelper.h
183 12607 0x313f MPSOC_ACK_FAILURE_REPORT LOW Received acknowledgment failure report P1: Internal state of MPSoC linux/devices/ploc/PlocMPSoCHelper.h linux/payload/PlocMpsocHelper.h
184 12608 0x3140 MPSOC_EXE_FAILURE_REPORT LOW Received execution failure report P1: Internal state of MPSoC linux/devices/ploc/PlocMPSoCHelper.h linux/payload/PlocMpsocHelper.h
185 12609 0x3141 MPSOC_ACK_INVALID_APID LOW Expected acknowledgment report but received space packet with other apid P1: Apid of received space packet P2: Internal state of MPSoC linux/devices/ploc/PlocMPSoCHelper.h linux/payload/PlocMpsocHelper.h
186 12610 0x3142 MPSOC_EXE_INVALID_APID LOW Expected execution report but received space packet with other apid P1: Apid of received space packet P2: Internal state of MPSoC linux/devices/ploc/PlocMPSoCHelper.h linux/payload/PlocMpsocHelper.h
187 12611 0x3143 MPSOC_HELPER_SEQ_CNT_MISMATCH LOW Received sequence count does not match expected sequence count P1: Expected sequence count P2: Received sequence count linux/devices/ploc/PlocMPSoCHelper.h linux/payload/PlocMpsocHelper.h
188 12612 0x3144 MPSOC_TM_SIZE_ERROR LOW No description linux/devices/ploc/PlocMPSoCHelper.h linux/payload/PlocMpsocHelper.h
189 12613 0x3145 MPSOC_TM_CRC_MISSMATCH LOW No description linux/devices/ploc/PlocMPSoCHelper.h linux/payload/PlocMpsocHelper.h
190 12700 0x319c TRANSITION_BACK_TO_OFF MEDIUM Could not transition properly and went back to ALL OFF mission/devices/PayloadPcduHandler.h mission/payload/PayloadPcduHandler.h
191 12701 0x319d NEG_V_OUT_OF_BOUNDS MEDIUM P1: 0 -> too low, 1 -> too high P2: Float value mission/devices/PayloadPcduHandler.h mission/payload/PayloadPcduHandler.h
192 12702 0x319e U_DRO_OUT_OF_BOUNDS MEDIUM P1: 0 -> too low, 1 -> too high P2: Float value mission/devices/PayloadPcduHandler.h mission/payload/PayloadPcduHandler.h
193 12703 0x319f I_DRO_OUT_OF_BOUNDS MEDIUM P1: 0 -> too low, 1 -> too high P2: Float value mission/devices/PayloadPcduHandler.h mission/payload/PayloadPcduHandler.h
194 12704 0x31a0 U_X8_OUT_OF_BOUNDS MEDIUM P1: 0 -> too low, 1 -> too high P2: Float value mission/devices/PayloadPcduHandler.h mission/payload/PayloadPcduHandler.h
195 12705 0x31a1 I_X8_OUT_OF_BOUNDS MEDIUM P1: 0 -> too low, 1 -> too high P2: Float value mission/devices/PayloadPcduHandler.h mission/payload/PayloadPcduHandler.h
196 12706 0x31a2 U_TX_OUT_OF_BOUNDS MEDIUM P1: 0 -> too low, 1 -> too high P2: Float value mission/devices/PayloadPcduHandler.h mission/payload/PayloadPcduHandler.h
197 12707 0x31a3 I_TX_OUT_OF_BOUNDS MEDIUM P1: 0 -> too low, 1 -> too high P2: Float value mission/devices/PayloadPcduHandler.h mission/payload/PayloadPcduHandler.h
198 12708 0x31a4 U_MPA_OUT_OF_BOUNDS MEDIUM P1: 0 -> too low, 1 -> too high P2: Float value mission/devices/PayloadPcduHandler.h mission/payload/PayloadPcduHandler.h
199 12709 0x31a5 I_MPA_OUT_OF_BOUNDS MEDIUM P1: 0 -> too low, 1 -> too high P2: Float value mission/devices/PayloadPcduHandler.h mission/payload/PayloadPcduHandler.h
200 12710 0x31a6 U_HPA_OUT_OF_BOUNDS MEDIUM P1: 0 -> too low, 1 -> too high P2: Float value mission/devices/PayloadPcduHandler.h mission/payload/PayloadPcduHandler.h
201 12711 0x31a7 I_HPA_OUT_OF_BOUNDS MEDIUM P1: 0 -> too low, 1 -> too high P2: Float value mission/devices/PayloadPcduHandler.h mission/payload/PayloadPcduHandler.h
202 12800 0x3200 TRANSITION_OTHER_SIDE_FAILED HIGH No description mission/system/objects/AcsBoardAssembly.h mission/system/acs/AcsBoardAssembly.h
203 12801 0x3201 NOT_ENOUGH_DEVICES_DUAL_MODE HIGH No description mission/system/objects/AcsBoardAssembly.h mission/system/acs/AcsBoardAssembly.h
204 12802 0x3202 POWER_STATE_MACHINE_TIMEOUT MEDIUM No description mission/system/objects/AcsBoardAssembly.h mission/system/acs/AcsBoardAssembly.h
205 12803 0x3203 SIDE_SWITCH_TRANSITION_NOT_ALLOWED LOW Not implemented, would increase already high complexity. Operator should instead command the assembly off first and then command the assembly on into the desired mode/submode combination mission/system/objects/AcsBoardAssembly.h mission/system/acs/AcsBoardAssembly.h
206 12900 0x3264 TRANSITION_OTHER_SIDE_FAILED HIGH No description mission/system/objects/SusAssembly.h mission/system/acs/SusAssembly.h
207 12901 0x3265 NOT_ENOUGH_DEVICES_DUAL_MODE HIGH No description mission/system/objects/SusAssembly.h mission/system/acs/SusAssembly.h
208 12902 0x3266 POWER_STATE_MACHINE_TIMEOUT MEDIUM No description mission/system/objects/SusAssembly.h mission/system/acs/SusAssembly.h
209 12903 0x3267 SIDE_SWITCH_TRANSITION_NOT_ALLOWED LOW Not implemented, would increase already high complexity. Operator should instead command the assembly off first and then command the assembly on into the desired mode/submode combination mission/system/objects/SusAssembly.h mission/system/acs/SusAssembly.h
210 13000 0x32c8 CHILDREN_LOST_MODE MEDIUM No description mission/system/objects/TcsBoardAssembly.h
211 13100 0x332c GPS_FIX_CHANGE INFO Fix has changed. P1: Old fix. P2: New fix 0: Not seen, 1: No Fix, 2: 2D-Fix, 3: 3D-Fix mission/devices/devicedefinitions/GPSDefinitions.h mission/acs/archive/GPSDefinitions.h
212 13101 0x332d CANT_GET_FIX LOW Could not get fix in maximum allowed time. P1: Maximum allowed time to get a fix after the GPS was switched on. mission/devices/devicedefinitions/GPSDefinitions.h mission/acs/archive/GPSDefinitions.h
213 13200 0x3390 P60_BOOT_COUNT INFO P60 boot count is broadcasted once at SW startup. P1: Boot count mission/devices/P60DockHandler.h mission/power/P60DockHandler.h
214 13201 0x3391 BATT_MODE INFO Battery mode is broadcasted at startup. P1: Mode mission/devices/P60DockHandler.h mission/power/P60DockHandler.h
215 13202 0x3392 BATT_MODE_CHANGED MEDIUM Battery mode has changed. P1: Old mode. P2: New mode mission/devices/P60DockHandler.h mission/power/P60DockHandler.h
216 13600 0x3520 SUPV_UPDATE_FAILED LOW update failed linux/devices/ploc/PlocSupvUartMan.h linux/payload/PlocSupvUartMan.h
217 13601 0x3521 SUPV_UPDATE_SUCCESSFUL LOW update successful linux/devices/ploc/PlocSupvUartMan.h linux/payload/PlocSupvUartMan.h
218 13602 0x3522 SUPV_CONTINUE_UPDATE_FAILED LOW Continue update command failed linux/devices/ploc/PlocSupvUartMan.h linux/payload/PlocSupvUartMan.h
219 13603 0x3523 SUPV_CONTINUE_UPDATE_SUCCESSFUL LOW Continue update command successful linux/devices/ploc/PlocSupvUartMan.h linux/payload/PlocSupvUartMan.h
220 13604 0x3524 TERMINATED_UPDATE_PROCEDURE LOW Terminated update procedure by command linux/devices/ploc/PlocSupvUartMan.h linux/payload/PlocSupvUartMan.h
221 13605 0x3525 SUPV_EVENT_BUFFER_REQUEST_SUCCESSFUL LOW Requesting event buffer was successful linux/devices/ploc/PlocSupvUartMan.h linux/payload/PlocSupvUartMan.h
222 13606 0x3526 SUPV_EVENT_BUFFER_REQUEST_FAILED LOW Requesting event buffer failed linux/devices/ploc/PlocSupvUartMan.h linux/payload/PlocSupvUartMan.h
223 13607 0x3527 SUPV_EVENT_BUFFER_REQUEST_TERMINATED LOW Terminated event buffer request by command P1: Number of packets read before process was terminated linux/devices/ploc/PlocSupvUartMan.h linux/payload/PlocSupvUartMan.h
224 13608 0x3528 SUPV_MEM_CHECK_OK INFO No description linux/devices/ploc/PlocSupvUartMan.h linux/payload/PlocSupvUartMan.h
225 13609 0x3529 SUPV_MEM_CHECK_FAIL INFO No description linux/devices/ploc/PlocSupvUartMan.h linux/payload/PlocSupvUartMan.h
226 13616 0x3530 SUPV_SENDING_COMMAND_FAILED LOW No description linux/devices/ploc/PlocSupvUartMan.h linux/payload/PlocSupvUartMan.h
227 13617 0x3531 SUPV_HELPER_REQUESTING_REPLY_FAILED LOW Request receive message of communication interface failed P1: Return value returned by the communication interface requestReceiveMessage function P2: Internal state of supervisor helper linux/devices/ploc/PlocSupvUartMan.h linux/payload/PlocSupvUartMan.h
228 13618 0x3532 SUPV_HELPER_READING_REPLY_FAILED LOW Reading receive message of communication interface failed P1: Return value returned by the communication interface readingReceivedMessage function P2: Internal state of supervisor helper linux/devices/ploc/PlocSupvUartMan.h linux/payload/PlocSupvUartMan.h
229 13619 0x3533 SUPV_MISSING_ACK LOW Did not receive acknowledgement report P1: Number of bytes missing P2: Internal state of MPSoC helper linux/devices/ploc/PlocSupvUartMan.h linux/payload/PlocSupvUartMan.h
230 13620 0x3534 SUPV_MISSING_EXE LOW Supervisor did not receive execution report P1: Number of bytes missing P2: Internal state of supervisor helper linux/devices/ploc/PlocSupvUartMan.h linux/payload/PlocSupvUartMan.h
231 13621 0x3535 SUPV_ACK_FAILURE_REPORT LOW Supervisor received acknowledgment failure report P1: Internal state of supervisor helper linux/devices/ploc/PlocSupvUartMan.h linux/payload/PlocSupvUartMan.h
232 13622 0x3536 SUPV_EXE_FAILURE_REPORT LOW Execution report failure P1: linux/devices/ploc/PlocSupvUartMan.h linux/payload/PlocSupvUartMan.h
233 13623 0x3537 SUPV_ACK_INVALID_APID LOW Supervisor expected acknowledgment report but received space packet with other apid P1: Apid of received space packet P2: Internal state of supervisor helper linux/devices/ploc/PlocSupvUartMan.h linux/payload/PlocSupvUartMan.h
234 13624 0x3538 SUPV_EXE_INVALID_APID LOW Supervisor helper expected execution report but received space packet with other apid P1: Apid of received space packet P2: Internal state of supervisor helper linux/devices/ploc/PlocSupvUartMan.h linux/payload/PlocSupvUartMan.h
235 13625 0x3539 ACK_RECEPTION_FAILURE LOW Failed to receive acknowledgment report P1: Return value P2: Apid of command for which the reception of the acknowledgment report failed linux/devices/ploc/PlocSupvUartMan.h linux/payload/PlocSupvUartMan.h
236 13626 0x353a EXE_RECEPTION_FAILURE LOW Failed to receive execution report P1: Return value P2: Apid of command for which the reception of the execution report failed linux/devices/ploc/PlocSupvUartMan.h linux/payload/PlocSupvUartMan.h
237 13627 0x353b WRITE_MEMORY_FAILED LOW Update procedure failed when sending packet. P1: First byte percent, third and fourth byte Sequence Count, P2: Bytes written linux/devices/ploc/PlocSupvUartMan.h linux/payload/PlocSupvUartMan.h
238 13628 0x353c SUPV_REPLY_SIZE_MISSMATCH LOW No description linux/devices/ploc/PlocSupvUartMan.h linux/payload/PlocSupvUartMan.h
239 13629 0x353d SUPV_REPLY_CRC_MISSMATCH LOW No description linux/devices/ploc/PlocSupvUartMan.h linux/payload/PlocSupvUartMan.h
240 13630 0x353e SUPV_UPDATE_PROGRESS INFO Will be triggered every 5 percent of the update progress. P1: First byte percent, third and fourth byte Sequence Count, P2: Bytes written linux/devices/ploc/PlocSupvUartMan.h linux/payload/PlocSupvUartMan.h
241 13631 0x353f HDLC_FRAME_REMOVAL_ERROR INFO No description linux/devices/ploc/PlocSupvUartMan.h linux/payload/PlocSupvUartMan.h
242 13632 0x3540 HDLC_CRC_ERROR INFO No description linux/devices/ploc/PlocSupvUartMan.h linux/payload/PlocSupvUartMan.h
243 13700 13701 0x3584 0x3585 FDIR_REACTION_IGNORED TX_ON MEDIUM INFO No description Transmitter is on now. P1: Submode, P2: Current default datarate. mission/devices/devicedefinitions/SyrlinksDefinitions.h mission/com/syrlinksDefs.h
244 13701 13702 0x3585 0x3586 TX_ON TX_OFF INFO Transmitter is on now. P1: Submode, P2: Current default datarate. Transmitter is off now. mission/devices/devicedefinitions/SyrlinksDefinitions.h mission/com/syrlinksDefs.h
245 13702 13800 0x3586 0x35e8 TX_OFF MISSING_PACKET INFO LOW Transmitter is off now. No description mission/devices/devicedefinitions/SyrlinksDefinitions.h mission/payload/scexHelpers.h
246 13800 13801 0x35e8 0x35e9 MISSING_PACKET EXPERIMENT_TIMEDOUT LOW No description mission/devices/devicedefinitions/ScexDefinitions.h mission/payload/scexHelpers.h
247 13801 13802 0x35e9 0x35ea EXPERIMENT_TIMEDOUT MULTI_PACKET_COMMAND_DONE LOW INFO No description mission/devices/devicedefinitions/ScexDefinitions.h mission/payload/scexHelpers.h
13802 0x35ea MULTI_PACKET_COMMAND_DONE INFO No description mission/devices/devicedefinitions/ScexDefinitions.h
248 13901 0x364d SET_CONFIGFILEVALUE_FAILED MEDIUM No description mission/utility/GlobalConfigHandler.h
249 13902 0x364e GET_CONFIGFILEVALUE_FAILED MEDIUM No description mission/utility/GlobalConfigHandler.h
250 13903 0x364f INSERT_CONFIGFILEVALUE_FAILED MEDIUM No description mission/utility/GlobalConfigHandler.h
251 13904 0x3650 WRITE_CONFIGFILE_FAILED MEDIUM No description mission/utility/GlobalConfigHandler.h
252 13905 0x3651 READ_CONFIGFILE_FAILED MEDIUM No description mission/utility/GlobalConfigHandler.h
253 14000 0x36b0 ALLOC_FAILURE MEDIUM No description bsp_q7s/core/CoreController.h
254 14001 0x36b1 REBOOT_SW MEDIUM LOW Software reboot occurred. Can also be a systemd reboot. P1: Current Chip, P2: Current Copy bsp_q7s/core/CoreController.h
255 14002 0x36b2 REBOOT_MECHANISM_TRIGGERED MEDIUM The reboot mechanism was triggered. P1: First 16 bits: Last Chip, Last 16 bits: Last Copy, P2: Each byte is the respective reboot count for the slots bsp_q7s/core/CoreController.h
256 14003 0x36b3 REBOOT_HW MEDIUM No description bsp_q7s/core/CoreController.h
257 14004 0x36b4 NO_SD_CARD_ACTIVE HIGH No SD card was active. Core controller will attempt to re-initialize a SD card. bsp_q7s/core/CoreController.h
258 14005 0x36b5 VERSION_INFO INFO P1: Byte 0: Major, Byte 1: Minor, Byte 2: Patch, Byte 3: Has Git Hash P2: First four letters of Git SHA is the last byte of P1 is set. bsp_q7s/core/CoreController.h
259 14006 0x36b6 CURRENT_IMAGE_INFO INFO P1: Current Chip, P2: Current Copy bsp_q7s/core/CoreController.h
260 14007 0x36b7 REBOOT_COUNTER INFO Total reboot counter, which is the sum of the boot count of all individual images. bsp_q7s/core/CoreController.h
261 14008 0x36b8 INDIVIDUAL_BOOT_COUNTS INFO Get the boot count of the individual images. P1: First 16 bits boot count of image 0 0, last 16 bits boot count of image 0 1. P2: First 16 bits boot count of image 1 0, last 16 bits boot count of image 1 1. bsp_q7s/core/CoreController.h
262 14010 0x36ba I2C_UNAVAILABLE_REBOOT MEDIUM No description bsp_q7s/core/CoreController.h
263 14100 0x3714 NO_VALID_SENSOR_TEMPERATURE MEDIUM No description mission/controller/ThermalController.h
264 14101 0x3715 NO_HEALTHY_HEATER_AVAILABLE MEDIUM No description mission/controller/ThermalController.h
265 14102 0x3716 SYRLINKS_OVERHEATING HIGH No description mission/controller/ThermalController.h
267 14104 0x3718 OBC_OVERHEATING HIGH No description mission/controller/ThermalController.h
268 14105 0x3719 HPA_OVERHEATING HIGH No description mission/controller/ThermalController.h
269 14106 0x371a PLPCDU_OVERHEATING HIGH No description mission/controller/ThermalController.h
270 14201 0x3779 TX_TIMER_EXPIRED INFO The transmit timer to protect the Syrlinks expired P1: The current timer value mission/system/objects/ComSubsystem.h mission/system/com/ComSubsystem.h
271 14202 0x377a BIT_LOCK_TX_ON INFO Transmitter will be turned on due to detection of bitlock mission/system/objects/ComSubsystem.h mission/system/com/ComSubsystem.h
272 14300 0x37dc POSSIBLE_FILE_CORRUPTION LOW P1: Result code of TM packet parser. P2: Timestamp of possibly corrupt file as a unix timestamp. mission/tmtc/PersistentTmStore.h mission/persistentTmStoreDefs.h
273 14301 0x37dd FILE_TOO_LARGE LOW File in store too large. P1: Detected file size P2: Allowed file size mission/persistentTmStoreDefs.h
274 14302 0x37de BUSY_DUMPING_EVENT INFO No description mission/persistentTmStoreDefs.h
275 14305 0x37e1 DUMP_OK_STORE_DONE INFO P1: Number of dumped packets. P2: Total dumped bytes. mission/persistentTmStoreDefs.h
276 14306 0x37e2 DUMP_NOK_STORE_DONE INFO P1: Number of dumped packets. P2: Total dumped bytes. mission/persistentTmStoreDefs.h
277 14307 0x37e3 DUMP_MISC_STORE_DONE INFO P1: Number of dumped packets. P2: Total dumped bytes. mission/persistentTmStoreDefs.h
278 14308 0x37e4 DUMP_HK_STORE_DONE INFO P1: Number of dumped packets. P2: Total dumped bytes. mission/persistentTmStoreDefs.h
279 14309 0x37e5 DUMP_CFDP_STORE_DONE INFO P1: Number of dumped packets. P2: Total dumped bytes. mission/persistentTmStoreDefs.h
280 14310 0x37e6 DUMP_OK_CANCELLED LOW P1: Number of dumped packets. P2: Total dumped bytes. mission/persistentTmStoreDefs.h
281 14311 0x37e7 DUMP_NOK_CANCELLED LOW P1: Number of dumped packets. P2: Total dumped bytes. mission/persistentTmStoreDefs.h
282 14312 0x37e8 DUMP_MISC_CANCELLED LOW P1: Number of dumped packets. P2: Total dumped bytes. mission/persistentTmStoreDefs.h
283 14313 0x37e9 DUMP_HK_CANCELLED LOW P1: Number of dumped packets. P2: Total dumped bytes. mission/persistentTmStoreDefs.h
284 14314 0x37ea DUMP_CFDP_CANCELLED LOW P1: Number of dumped packets. P2: Total dumped bytes. mission/persistentTmStoreDefs.h

View File

@ -71,14 +71,14 @@ PLOC_MPSOC_ID = bytes([0x44, 0x33, 0x00, 0x15])
PL_PCDU_ID = bytes([0x44, 0x30, 0x00, 0x00])
# Other
HEATER_0_OBC_BRD = bytes([0x60, 0x00, 0x00, 0x00])
HEATER_1_PLOC_PROC_BRD = bytes([0x60, 0x00, 0x00, 0x01])
HEATER_0_PLOC_PROC_BRD = bytes([0x60, 0x00, 0x00, 0x00])
HEATER_1_PCDU_BRD = bytes([0x60, 0x00, 0x00, 0x01])
HEATER_2_ACS_BRD = bytes([0x60, 0x00, 0x00, 0x02])
HEATER_3_PCDU_BRD = bytes([0x60, 0x00, 0x00, 0x03])
HEATER_3_OBC_BRD = bytes([0x60, 0x00, 0x00, 0x03])
HEATER_4_CAMERA = bytes([0x60, 0x00, 0x00, 0x04])
HEATER_5_STR = bytes([0x60, 0x00, 0x00, 0x05])
HEATER_6_DRO = bytes([0x60, 0x00, 0x00, 0x06])
HEATER_7_HPA = bytes([0x60, 0x00, 0x00, 0x07])
HEATER_7_SYRLINKS = bytes([0x60, 0x00, 0x00, 0x07])
# RTDs
RTD_0_PLOC_HSPD = bytes([0x44, 0x42, 0x00, 0x16])
@ -132,10 +132,21 @@ PL_SUBSYSTEM_ID = bytes([0x73, 0x01, 0x00, 0x02])
TCS_SUBSYSTEM_ID = bytes([0x73, 0x01, 0x00, 0x03])
COM_SUBSYSTEM_ID = bytes([0x73, 0x01, 0x00, 0x04])
# Legacy names, kept for backwards compatibility
ACS_BOARD_ASS_ID = bytes([0x73, 0x00, 0x00, 0x01])
SUS_BOARD_ASS_ID = bytes([0x73, 0x00, 0x00, 0x02])
TCS_BOARD_ASS_ID = bytes([0x73, 0x00, 0x00, 0x03])
SUS_BOARD_ASS_ID = bytes([0x73, 0x00, 0x00, 0x02])
IMTQ_ASSEMBLY = bytes([0x73, 0x00, 0x00, 0x08])
ACS_BOARD_ASSEMBLY = bytes([0x73, 0x00, 0x00, 0x01])
SUS_BOARD_ASSEMBLY = bytes([0x73, 0x00, 0x00, 0x02])
TCS_BOARD_ASSEMBLY = bytes([0x73, 0x00, 0x00, 0x03])
RW_ASSEMBLY = bytes([0x73, 0x00, 0x00, 0x04])
CAM_SWITCHER = bytes([0x73, 0x00, 0x00, 0x06])
SYRLINKS_ASSEMBLY = bytes([0x73, 0x00, 0x00, 0x07])
# To be removed soon..
MGT_ASSEMBLY = bytes([0x73, 0x00, 0x00, 0x08])
STR_ASSEMBLY = bytes([0x73, 0x00, 0x00, 0x09])
# Controllers
TCS_CONTROLLER = bytes([0x43, 0x40, 0x00, 0x01])

View File

@ -41,10 +41,14 @@
0x443200A5;RAD_SENSOR
0x44330000;PLOC_UPDATER
0x44330001;PLOC_MEMORY_DUMPER
0x44330002;STR_HELPER
0x44330002;STR_COM_IF
0x44330003;PLOC_MPSOC_HELPER
0x44330004;AXI_PTME_CONFIG
0x44330005;PTME_CONFIG
0x44330006;PTME_VC0_LIVE_TM
0x44330007;PTME_VC1_LOG_TM
0x44330008;PTME_VC2_HK_TM
0x44330009;PTME_VC3_CFDP_TM
0x44330015;PLOC_MPSOC_HANDLER
0x44330016;PLOC_SUPERVISOR_HANDLER
0x44330017;PLOC_SUPERVISOR_HELPER
@ -73,6 +77,7 @@
0x44420030;RTD_14_IC17_TCS_BOARD
0x44420031;RTD_15_IC18_IMTQ
0x445300A3;SYRLINKS_HANDLER
0x445300A4;SYRLINKS_COM_HANDLER
0x49000000;ARDUINO_COM_IF
0x49010005;GPIO_IF
0x49010006;SCEX_UART_READER
@ -135,12 +140,15 @@
0x60000004;HEATER_4_CAMERA
0x60000005;HEATER_5_STR
0x60000006;HEATER_6_DRO
0x60000007;HEATER_7_HPA
0x60000007;HEATER_7_SYRLINKS
0x73000001;ACS_BOARD_ASS
0x73000002;SUS_BOARD_ASS
0x73000003;TCS_BOARD_ASS
0x73000004;RW_ASS
0x73000004;RW_ASSY
0x73000006;CAM_SWITCHER
0x73000007;SYRLINKS_ASSY
0x73000008;IMTQ_ASSY
0x73000009;STR_ASSY
0x73000100;TM_FUNNEL
0x73000101;PUS_TM_FUNNEL
0x73000102;CFDP_TM_FUNNEL
@ -156,6 +164,10 @@
0x73020003;NOT_OK_TM_STORE
0x73020004;HK_TM_STORE
0x73030000;CFDP_TM_STORE
0x73500000;CCSDS_IP_CORE_BRIDGE
0x73040000;LIVE_TM_TASK
0x73040001;LOG_STORE_AND_TM_TASK
0x73040002;HK_STORE_AND_TM_TASK
0x73040003;CFDP_STORE_AND_TM_TASK
0x73040004;DOWNLINK_RAM_STORE
0x90000003;THERMAL_TEMP_INSERTER
0xFFFFFFFF;NO_OBJECT

1 0x00005060 P60DOCK_TEST_TASK
41 0x443200A5 RAD_SENSOR
42 0x44330000 PLOC_UPDATER
43 0x44330001 PLOC_MEMORY_DUMPER
44 0x44330002 STR_HELPER STR_COM_IF
45 0x44330003 PLOC_MPSOC_HELPER
46 0x44330004 AXI_PTME_CONFIG
47 0x44330005 PTME_CONFIG
48 0x44330006 PTME_VC0_LIVE_TM
49 0x44330007 PTME_VC1_LOG_TM
50 0x44330008 PTME_VC2_HK_TM
51 0x44330009 PTME_VC3_CFDP_TM
52 0x44330015 PLOC_MPSOC_HANDLER
53 0x44330016 PLOC_SUPERVISOR_HANDLER
54 0x44330017 PLOC_SUPERVISOR_HELPER
77 0x44420030 RTD_14_IC17_TCS_BOARD
78 0x44420031 RTD_15_IC18_IMTQ
79 0x445300A3 SYRLINKS_HANDLER
80 0x445300A4 SYRLINKS_COM_HANDLER
81 0x49000000 ARDUINO_COM_IF
82 0x49010005 GPIO_IF
83 0x49010006 SCEX_UART_READER
140 0x60000004 HEATER_4_CAMERA
141 0x60000005 HEATER_5_STR
142 0x60000006 HEATER_6_DRO
143 0x60000007 HEATER_7_HPA HEATER_7_SYRLINKS
144 0x73000001 ACS_BOARD_ASS
145 0x73000002 SUS_BOARD_ASS
146 0x73000003 TCS_BOARD_ASS
147 0x73000004 RW_ASS RW_ASSY
148 0x73000006 CAM_SWITCHER
149 0x73000007 SYRLINKS_ASSY
150 0x73000008 IMTQ_ASSY
151 0x73000009 STR_ASSY
152 0x73000100 TM_FUNNEL
153 0x73000101 PUS_TM_FUNNEL
154 0x73000102 CFDP_TM_FUNNEL
164 0x73020003 NOT_OK_TM_STORE
165 0x73020004 HK_TM_STORE
166 0x73030000 CFDP_TM_STORE
167 0x73500000 0x73040000 CCSDS_IP_CORE_BRIDGE LIVE_TM_TASK
168 0x73040001 LOG_STORE_AND_TM_TASK
169 0x73040002 HK_STORE_AND_TM_TASK
170 0x73040003 CFDP_STORE_AND_TM_TASK
171 0x73040004 DOWNLINK_RAM_STORE
172 0x90000003 THERMAL_TEMP_INSERTER
173 0xFFFFFFFF NO_OBJECT

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,62 @@
22;MEMORY
26;OBSW
28;CDH
59;TCS_1
42;PCDU_1
43;POWER_SWITCH_IF
50;HEATER
52;T_SENSORS
70;FDIR
71;FDIR_1
72;FDIR_2
73;HK
74;SYSTEM_MANAGER
75;SYSTEM_MANAGER_1
76;TMTC_DISTRIBUTION
79;SYSTEM_1
80;PUS_SERVICE_1
82;PUS_SERVICE_2
83;PUS_SERVICE_3
85;PUS_SERVICE_5
86;PUS_SERVICE_6
88;PUS_SERVICE_8
89;PUS_SERVICE_9
91;PUS_SERVICE_11
97;PUS_SERVICE_17
103;PUS_SERVICE_23
106;MGM_LIS3MDL
107;MGM_RM3100
108;CFDP
112;ACS_SUBSYSTEM
113;PCDU_HANDLER
114;HEATER_HANDLER
115;SA_DEPL_HANDLER
116;PLOC_MPSOC_HANDLER
117;IMTQ_HANDLER
118;RW_HANDLER
119;STR_HANDLER
120;PLOC_SUPERVISOR_HANDLER
121;FILE_SYSTEM
122;PLOC_UPDATER
123;PLOC_MEMORY_DUMPER
124;PDEC_HANDLER
125;STR_HELPER
126;PLOC_MPSOC_HELPER
127;PL_PCDU_HANDLER
128;ACS_BOARD_ASS
129;SUS_BOARD_ASS
130;TCS_BOARD_ASS
131;GPS_HANDLER
132;P60_DOCK_HANDLER
133;PDU1_HANDLER
134;PDU2_HANDLER
135;ACU_HANDLER
136;PLOC_SUPV_HELPER
137;SYRLINKS
138;SCEX_HANDLER
139;CONFIGHANDLER
140;CORE
141;TCS_CONTROLLER
142;COM_SUBSYSTEM
143;PERSISTENT_TM_STORE
144;SYRLINKS_COM
1 22 MEMORY
2 26 OBSW
3 28 CDH
4 59 TCS_1
5 42 PCDU_1
6 43 POWER_SWITCH_IF
7 50 HEATER
8 52 T_SENSORS
9 70 FDIR
10 71 FDIR_1
11 72 FDIR_2
12 73 HK
13 74 SYSTEM_MANAGER
14 75 SYSTEM_MANAGER_1
15 76 TMTC_DISTRIBUTION
16 79 SYSTEM_1
17 80 PUS_SERVICE_1
18 82 PUS_SERVICE_2
19 83 PUS_SERVICE_3
20 85 PUS_SERVICE_5
21 86 PUS_SERVICE_6
22 88 PUS_SERVICE_8
23 89 PUS_SERVICE_9
24 91 PUS_SERVICE_11
25 97 PUS_SERVICE_17
26 103 PUS_SERVICE_23
27 106 MGM_LIS3MDL
28 107 MGM_RM3100
29 108 CFDP
30 112 ACS_SUBSYSTEM
31 113 PCDU_HANDLER
32 114 HEATER_HANDLER
33 115 SA_DEPL_HANDLER
34 116 PLOC_MPSOC_HANDLER
35 117 IMTQ_HANDLER
36 118 RW_HANDLER
37 119 STR_HANDLER
38 120 PLOC_SUPERVISOR_HANDLER
39 121 FILE_SYSTEM
40 122 PLOC_UPDATER
41 123 PLOC_MEMORY_DUMPER
42 124 PDEC_HANDLER
43 125 STR_HELPER
44 126 PLOC_MPSOC_HELPER
45 127 PL_PCDU_HANDLER
46 128 ACS_BOARD_ASS
47 129 SUS_BOARD_ASS
48 130 TCS_BOARD_ASS
49 131 GPS_HANDLER
50 132 P60_DOCK_HANDLER
51 133 PDU1_HANDLER
52 134 PDU2_HANDLER
53 135 ACU_HANDLER
54 136 PLOC_SUPV_HELPER
55 137 SYRLINKS
56 138 SCEX_HANDLER
57 139 CONFIGHANDLER
58 140 CORE
59 141 TCS_CONTROLLER
60 142 COM_SUBSYSTEM
61 143 PERSISTENT_TM_STORE
62 144 SYRLINKS_COM

View File

@ -21,68 +21,3 @@ def get_eive_service_op_code_dict() -> TmtcDefinitionWrapper:
)
call_all_definitions_providers(def_wrapper)
return def_wrapper
@tmtc_definitions_provider
def add_str_cmds(defs: TmtcDefinitionWrapper):
oce = OpCodeEntry()
oce.add("0", "Star Tracker: Mode On, Submode Bootloader")
oce.add("1", "Star Tracker: Mode On, Submode Firmware")
oce.add("2", "Star Tracker: Mode Normal")
oce.add("3", "Star Tracker: Mode Off")
oce.add("4", "Star Tracker: Mode Raw")
oce.add("5", "Star Tracker: Ping")
oce.add("6", "Star Tracker: Switch to bootloader program")
oce.add("7", "Star Tracker: Request temperature")
oce.add("8", "Star Tracker: Request version")
oce.add("9", "Star Tracker: Request interface")
oce.add("10", "Star Tracker: Request power")
oce.add("11", "Star Tracker: Set subscription parameters")
oce.add("12", "Star Tracker: Boot image (requires bootloader mode)")
oce.add("13", "Star Tracker: Request time")
oce.add("14", "Star Tracker: Request solution")
oce.add("15", "Star Tracker: Upload image")
oce.add("16", "Star Tracker: Download image")
oce.add("17", "Star Tracker: Set limit parameters")
oce.add("17", "Star Tracker: Set limit parameters")
oce.add("18", "Star Tracker: Set tracking parameters")
oce.add("19", "Star Tracker: Set mounting parameters")
oce.add("20", "Star Tracker: Set camera parameters")
oce.add("22", "Star Tracker: Set centroiding parameters")
oce.add("23", "Star Tracker: Set LISA parameters")
oce.add("24", "Star Tracker: Set matching parameters")
oce.add("25", "Star Tracker: Set validation parameters")
oce.add("26", "Star Tracker: Set algo parameters")
oce.add("27", "Star Tracker: Take image")
oce.add("28", "Star Tracker: Stop str helper")
oce.add("30", "Star Tracker: Set name of download image")
oce.add("31", "Star Tracker: Request histogram")
oce.add("32", "Star Tracker: Request contrast")
oce.add("33", "Star Tracker: Set json filename")
oce.add("35", "Star Tracker: Flash read")
oce.add("36", "Star Tracker: Set flash read filename")
oce.add("37", "Star Tracker: Get checksum")
oce.add("49", "Star Tracker: Request camera parameter")
oce.add("50", "Star Tracker: Request limits")
oce.add("51", "Star Tracker: Set image processor parameters")
oce.add("52", "Star Tracker: (EGSE only) Load camera ground config")
oce.add("53", "Star Tracker: (EGSE only) Load camera flight config")
oce.add("54", "Star Tracker: Request log level parameters")
oce.add("55", "Star Tracker: Request mounting parameters")
oce.add("56", "Star Tracker: Request image processor parameters")
oce.add("57", "Star Tracker: Request centroiding parameters")
oce.add("58", "Star Tracker: Request lisa parameters")
oce.add("59", "Star Tracker: Request matching parameters")
oce.add("60", "Star Tracker: Request tracking parameters")
oce.add("61", "Star Tracker: Request validation parameters")
oce.add("62", "Star Tracker: Request algo parameters")
oce.add("63", "Star Tracker: Request subscription parameters")
oce.add("64", "Star Tracker: Request log subscription parameters")
oce.add("65", "Star Tracker: Request debug camera parameters")
oce.add("66", "Star Tracker: Set log level parameters")
oce.add("67", "Star Tracker: Set log subscription parameters")
oce.add("68", "Star Tracker: Set debug camera parameters")
oce.add("69", "Star Tracker: Firmware update")
oce.add("70", "Star Tracker: Disable timestamp generation")
oce.add("71", "Star Tracker: Enable timestamp generation")
defs.add_service(CustomServiceList.STAR_TRACKER.value, "Star Tracker", oce)

View File

@ -1,8 +1,11 @@
"""HK Handling for EIVE OBSW"""
import datetime
import logging
# from pus_tm.tcp_server_objects import TCP_SEVER_SENSOR_TEMPERATURES
from eive_tmtc.tmtc.acs.acs_ctrl import handle_raw_mgm_data, handle_acs_ctrl_hk_data
from eive_tmtc.tmtc.acs.acs_ctrl import handle_acs_ctrl_hk_data
from eive_tmtc.tmtc.tcs.rtd import RTD_NAMES, handle_rtd_hk
from eive_tmtc.tmtc.acs.star_tracker import handle_str_hk_data
from eive_tmtc.tmtc.power.plpcdu import handle_plpcdu_hk
from eive_tmtc.tmtc.payload.rad_sensor import handle_rad_sensor_data
from eive_tmtc.tmtc.acs.sus import handle_sus_hk
@ -10,6 +13,7 @@ from eive_tmtc.tmtc.payload.ploc_supervisor import handle_supv_hk_data
from eive_tmtc.tmtc.acs.reaction_wheels import handle_rw_hk_data
from eive_tmtc.tmtc.com.syrlinks_handler import handle_syrlinks_hk_data
from eive_tmtc.tmtc.tcs import handle_thermal_controller_hk_data
from spacepackets.ecss import PusTelemetry
from tmtccmd.tm.pus_3_fsfw_hk import (
Service3Base,
HkContentType,
@ -27,11 +31,6 @@ from eive_tmtc.tmtc.power.tm import (
handle_pcdu_hk,
)
from eive_tmtc.tmtc.acs.imtq import (
ImtqSetId,
handle_self_test_data,
handle_eng_set,
handle_calibrated_mtm_measurement,
handle_raw_mtm_measurement,
handle_imtq_hk,
)
from eive_tmtc.pus_tm.defs import FsfwTmTcPrinter
@ -74,6 +73,7 @@ def handle_hk_packet(
printer=printer,
object_id=named_obj_id,
hk_packet=tm_packet,
tm=tm_packet.pus_tm,
hk_data=hk_data,
)
except ValueError as e:
@ -88,10 +88,12 @@ def handle_regular_hk_print(
printer: FsfwTmTcPrinter,
object_id: ObjectIdU32,
hk_packet: Service3Base,
tm: PusTelemetry,
hk_data: bytes,
):
objb = object_id.as_bytes
set_id = hk_packet.set_id
packet_dt = tm.time_provider.as_date_time()
"""This function is called when a Service 3 Housekeeping packet is received."""
if objb in [obj_ids.RW1_ID, obj_ids.RW2_ID, obj_ids.RW3_ID, obj_ids.RW4_ID]:
return handle_rw_hk_data(printer, object_id, set_id, hk_data)
@ -140,6 +142,8 @@ def handle_regular_hk_print(
return handle_sus_hk(
object_id=object_id, hk_data=hk_data, printer=printer, set_id=set_id
)
elif objb in RTD_NAMES.keys():
return handle_rtd_hk(object_id=objb, hk_data=hk_data, printer=printer)
elif objb == obj_ids.P60_DOCK_HANDLER:
return handle_p60_hk_data(printer=printer, set_id=set_id, hk_data=hk_data)
elif objb in [
@ -166,10 +170,14 @@ def handle_regular_hk_print(
return handle_thermal_controller_hk_data(
object_id=object_id, printer=printer, set_id=set_id, hk_data=hk_data
)
elif objb == obj_ids.STAR_TRACKER_ID:
return handle_str_hk_data(set_id=set_id, hk_data=hk_data, printer=printer)
elif objb == obj_ids.PLOC_SUPV_ID:
return handle_supv_hk_data(set_id=set_id, hk_data=hk_data, printer=printer)
elif objb == obj_ids.ACS_CONTROLLER:
return handle_acs_ctrl_hk_data(printer, set_id, hk_data)
return handle_acs_ctrl_hk_data(
printer=printer, set_id=set_id, hk_data=hk_data, packet_time=packet_dt
)
else:
_LOGGER.info(
f"Service 3 TM: Parsing for object {object_id} and set ID {set_id} "

View File

@ -1,13 +1,16 @@
import datetime
import enum
import logging
import socket
import struct
import math
from socket import AF_INET
from typing import Tuple
from eive_tmtc.config.definitions import CustomServiceList
from eive_tmtc.config.object_ids import ACS_CONTROLLER
from eive_tmtc.pus_tm.defs import PrintWrapper
from eive_tmtc.tmtc.acs.defs import AcsMode, SafeSubmode
from tmtccmd.config.tmtc import (
tmtc_definitions_provider,
TmtcDefinitionWrapper,
@ -27,9 +30,7 @@ from tmtccmd.tc.pus_3_fsfw_hk import (
from tmtccmd.pus.s8_fsfw_funccmd import create_action_cmd
from tmtccmd.util.tmtc_printer import FsfwTmTcPrinter
from tmtccmd.tc.pus_20_fsfw_param import (
create_load_param_cmd
)
from tmtccmd.tc.pus_20_fsfw_param import create_load_param_cmd
from tmtccmd.pus.s20_fsfw_param_defs import (
create_scalar_u8_parameter,
@ -44,6 +45,9 @@ from tmtccmd.pus.s20_fsfw_param_defs import (
)
_LOGGER = logging.getLogger(__name__)
class SetId(enum.IntEnum):
MGM_RAW_SET = 0
MGM_PROC_SET = 1
@ -57,77 +61,71 @@ class SetId(enum.IntEnum):
ACTUATOR_CMD_DATA = 9
class Submode(enum.IntEnum):
OFF = 0
SAFE = 10
DETUMBLE = 11
IDLE = 12
PTG_NADIR = 13
PTG_TARGET = 14
PTG_TARGET_GS = 15
PTG_INERTIAL = 16
class ActionId(enum.IntEnum):
SOLAR_ARRAY_DEPLOYMENT_SUCCESSFUL = 0
RESET_MEKF = 1
RESTORE_MEKF_NONFINITE_RECOVERY = 2
class OpCodes:
OFF = ["off"]
SAFE = ["normal_safe"]
DTBL = ["normal_detumble"]
IDLE = ["normal_idle"]
NADIR = ["normal_nadir"]
TARGET = ["normal_target"]
GS = ["normal_gs"]
INERTIAL = ["normal_inertial"]
SAFE = ["safe"]
DTBL = ["safe_detumble"]
IDLE = ["ptg_idle"]
NADIR = ["ptg_nadir"]
TARGET = ["ptg_target"]
GS = ["ptg_target_gs"]
INERTIAL = ["ptg_inertial"]
SAFE_PTG = ["confirm_deployment"]
RESET_MEKF = ["reset_mekf"]
RESTORE_MEKF_NONFINITE_RECOVERY = ["restore_mekf_nonfinite_recovery"]
SET_PARAMETER_SCALAR = ["set_scalar_param"]
SET_PARAMETER_VECTOR = ["set_vector_param"]
SET_PARAMETER_MATRIX = ["set_matrix_param"]
REQUEST_RAW_MGM_HK = ["0", "mgm_raw_hk"]
ENABLE_RAW_MGM_HK = ["1", "mgm_raw_enable_hk"]
DISABLE_RAW_MGM_HK = ["2", "mgm_raw_disable_hk"]
REQUEST_PROC_MGM_HK = ["3", "mgm_proc_hk"]
ENABLE_PROC_MGM_HK = ["4", "mgm_proc_enable_hk"]
DISABLE_PROC_MGM_HK = ["5", "mgm_proc_disable_hk"]
REQUEST_RAW_SUS_HK = ["6", "sus_raw_hk"]
ENABLE_RAW_SUS_HK = ["7", "sus_raw_enable_hk"]
DISABLE_RAW_SUS_HK = ["8", "sus_raw_disable_hk"]
REQUEST_PROC_SUS_HK = ["9", "sus_proc_hk"]
ENABLE_PROC_SUS_HK = ["10", "sus_proc_enable_hk"]
DISABLE_PROC_SUS_HK = ["11", "sus_proc_disable_hk"]
REQUEST_RAW_GYR_HK = ["12", "gyr_raw_hk"]
ENABLE_RAW_GYR_HK = ["13", "gyr_raw_enable_hk"]
DISABLE_RAW_GYR_HK = ["14", "gyr_raw_disable_hk"]
REQUEST_PROC_GYR_HK = ["15", "gyr_proc_hk"]
ENABLE_PROC_GYR_HK = ["16", "gyr_proc_enable_hk"]
DISABLE_PROC_GYR_HK = ["17", "gyr_proc_disable_hk"]
REQUEST_PROC_GPS_HK = ["18", "gps_proc_hk"]
ENABLE_PROC_GPS_HK = ["19", "gps_proc_enable_hk"]
DISABLE_PROC_GPS_HK = ["20", "gps_proc_disable_hk"]
REQUEST_MEKF_HK = ["21", "mekf_hk"]
ENABLE_MEKF_HK = ["22", "mekf_enable_hk"]
DISABLE_MEKF_HK = ["23", "mekf_disable_hk"]
REQUEST_CTRL_VAL_HK = ["24", "ctrl_val_hk"]
ENABLE_CTRL_VAL_HK = ["25", "ctrl_val_enable_hk"]
DISABLE_CTRL_VAL_HK = ["26", "ctrl_val_disable_hk"]
REQUEST_ACT_CMD_HK = ["27", "act_cmd_hk"]
ENABLE_ACT_CMD_HK = ["28", "act_cmd_enable_hk"]
DISABLE_ACT_CMD_HK = ["29", "act_cmd_disable_hk"]
REQUEST_RAW_MGM_HK = ["mgm_raw_hk"]
ENABLE_RAW_MGM_HK = ["mgm_raw_enable_hk"]
DISABLE_RAW_MGM_HK = ["mgm_raw_disable_hk"]
REQUEST_PROC_MGM_HK = ["mgm_proc_hk"]
ENABLE_PROC_MGM_HK = ["mgm_proc_enable_hk"]
DISABLE_PROC_MGM_HK = ["mgm_proc_disable_hk"]
REQUEST_RAW_SUS_HK = ["sus_raw_hk"]
ENABLE_RAW_SUS_HK = ["sus_raw_enable_hk"]
DISABLE_RAW_SUS_HK = ["sus_raw_disable_hk"]
REQUEST_PROC_SUS_HK = ["sus_proc_hk"]
ENABLE_PROC_SUS_HK = ["sus_proc_enable_hk"]
DISABLE_PROC_SUS_HK = ["sus_proc_disable_hk"]
REQUEST_RAW_GYR_HK = ["gyr_raw_hk"]
ENABLE_RAW_GYR_HK = ["gyr_raw_enable_hk"]
DISABLE_RAW_GYR_HK = ["gyr_raw_disable_hk"]
REQUEST_PROC_GYR_HK = ["gyr_proc_hk"]
ENABLE_PROC_GYR_HK = ["gyr_proc_enable_hk"]
DISABLE_PROC_GYR_HK = ["gyr_proc_disable_hk"]
REQUEST_PROC_GPS_HK = ["gps_proc_hk"]
ENABLE_PROC_GPS_HK = ["gps_proc_enable_hk"]
DISABLE_PROC_GPS_HK = ["gps_proc_disable_hk"]
REQUEST_MEKF_HK = ["mekf_hk"]
ENABLE_MEKF_HK = ["mekf_enable_hk"]
DISABLE_MEKF_HK = ["mekf_disable_hk"]
REQUEST_CTRL_VAL_HK = ["ctrl_val_hk"]
ENABLE_CTRL_VAL_HK = ["ctrl_val_enable_hk"]
DISABLE_CTRL_VAL_HK = ["ctrl_val_disable_hk"]
REQUEST_ACT_CMD_HK = ["act_cmd_hk"]
ENABLE_ACT_CMD_HK = ["act_cmd_enable_hk"]
DISABLE_ACT_CMD_HK = ["act_cmd_disable_hk"]
class Info:
OFF = "Switch ACS CTRL off"
SAFE = "Switch ACS CTRL normal - safe"
DTBL = "Switch ACS CTRL normal - detumble"
IDLE = "Switch ACS CTRL normal - idle"
SAFE = "Switch ACS CTRL - safe"
DTBL = "Switch ACS CTRL - safe with detumble submode"
IDLE = "Switch ACS CTRL - pointing idle"
NADIR = "Switch ACS CTRL normal - pointing nadir"
TARGET = "Switch ACS CTRL normal - pointing target"
GS = "Switch ACS CTRL normal - pointing target groundstation"
INERTIAL = "Switch ACS CTRL normal - pointing inertial"
SAFE_PTG = "Confirm deployment of both solar arrays"
RESET_MEKF = "Reset the MEKF"
RESTORE_MEKF_NONFINITE_RECOVERY = "Restore MEKF non-finite recovery"
SET_PARAMETER_SCALAR = "Set Scalar Parameter"
SET_PARAMETER_VECTOR = "Set Vector Parameter"
SET_PARAMETER_MATRIX = "Set Matrix Parameter"
@ -188,6 +186,10 @@ def acs_cmd_defs(defs: TmtcDefinitionWrapper):
oce.add(keys=OpCodes.INERTIAL, info=Info.INERTIAL)
oce.add(keys=OpCodes.SAFE_PTG, info=Info.SAFE_PTG)
oce.add(keys=OpCodes.RESET_MEKF, info=Info.RESET_MEKF)
oce.add(
keys=OpCodes.RESTORE_MEKF_NONFINITE_RECOVERY,
info=Info.RESTORE_MEKF_NONFINITE_RECOVERY,
)
oce.add(keys=OpCodes.SET_PARAMETER_SCALAR, info=Info.SET_PARAMETER_SCALAR)
oce.add(keys=OpCodes.SET_PARAMETER_VECTOR, info=Info.SET_PARAMETER_VECTOR)
oce.add(keys=OpCodes.SET_PARAMETER_MATRIX, info=Info.SET_PARAMETER_MATRIX)
@ -235,31 +237,44 @@ def pack_acs_ctrl_command(p: ServiceProviderParams):
q.add_pus_tc(pack_mode_command(ACS_CONTROLLER, Mode.OFF, 0))
elif op_code in OpCodes.SAFE:
q.add_log_cmd(f"{Info.SAFE}")
q.add_pus_tc(pack_mode_command(ACS_CONTROLLER, Mode.NORMAL, Submode.SAFE))
q.add_pus_tc(
pack_mode_command(ACS_CONTROLLER, AcsMode.SAFE, SafeSubmode.DEFAULT)
)
elif op_code in OpCodes.DTBL:
q.add_log_cmd(f"{Info.DTBL}")
q.add_pus_tc(pack_mode_command(ACS_CONTROLLER, Mode.NORMAL, Submode.DETUMBLE))
q.add_pus_tc(
pack_mode_command(ACS_CONTROLLER, AcsMode.SAFE, SafeSubmode.DETUMBLE)
)
elif op_code in OpCodes.IDLE:
q.add_log_cmd(f"{Info.IDLE}")
q.add_pus_tc(pack_mode_command(ACS_CONTROLLER, Mode.NORMAL, Submode.IDLE))
q.add_pus_tc(pack_mode_command(ACS_CONTROLLER, AcsMode.IDLE, 0))
elif op_code in OpCodes.NADIR:
q.add_log_cmd(f"{Info.NADIR}")
q.add_pus_tc(pack_mode_command(ACS_CONTROLLER, Mode.NORMAL, Submode.PTG_NADIR))
q.add_pus_tc(pack_mode_command(ACS_CONTROLLER, AcsMode.PTG_NADIR, 0))
elif op_code in OpCodes.TARGET:
q.add_log_cmd(f"{Info.TARGET}")
q.add_pus_tc(pack_mode_command(ACS_CONTROLLER, Mode.NORMAL, Submode.PTG_TARGET))
q.add_pus_tc(pack_mode_command(ACS_CONTROLLER, AcsMode.PTG_TARGET, 0))
elif op_code in OpCodes.GS:
q.add_log_cmd(f"{Info.GS}")
q.add_pus_tc(pack_mode_command(ACS_CONTROLLER, Mode.NORMAL, Submode.PTG_TARGET_GS))
q.add_pus_tc(pack_mode_command(ACS_CONTROLLER, AcsMode.PTG_TARGET_GS, 0))
elif op_code in OpCodes.INERTIAL:
q.add_log_cmd(f"{Info.INERTIAL}")
q.add_pus_tc(pack_mode_command(ACS_CONTROLLER, Mode.NORMAL, Submode.PTG_INERTIAL))
q.add_pus_tc(pack_mode_command(ACS_CONTROLLER, AcsMode.PTG_INERTIAL, 0))
elif op_code in OpCodes.SAFE_PTG:
q.add_log_cmd(f"{Info.SAFE_PTG}")
q.add_pus_tc(create_action_cmd(ACS_CONTROLLER, ActionId.SOLAR_ARRAY_DEPLOYMENT_SUCCESSFUL))
q.add_pus_tc(
create_action_cmd(
ACS_CONTROLLER, ActionId.SOLAR_ARRAY_DEPLOYMENT_SUCCESSFUL
)
)
elif op_code in OpCodes.RESET_MEKF:
q.add_log_cmd(f"{Info.RESET_MEKF}")
q.add_pus_tc(create_action_cmd(ACS_CONTROLLER, ActionId.RESET_MEKF))
elif op_code in OpCodes.RESTORE_MEKF_NONFINITE_RECOVERY:
q.add_log_cmd(f"{Info.RESTORE_MEKF_NONFINITE_RECOVERY}")
q.add_pus_tc(
create_action_cmd(ACS_CONTROLLER, ActionId.RESTORE_MEKF_NONFINITE_RECOVERY)
)
elif op_code in OpCodes.SET_PARAMETER_SCALAR:
q.add_log_cmd(f"{Info.SET_PARAMETER_SCALAR}")
set_acs_ctrl_param_scalar(q)
@ -275,9 +290,10 @@ def pack_acs_ctrl_command(p: ServiceProviderParams):
generate_one_hk_command(make_sid(ACS_CONTROLLER, SetId.MGM_RAW_SET))
)
elif op_code in OpCodes.ENABLE_RAW_MGM_HK:
interval = float(input("Please specify interval in floating point seconds: "))
q.add_log_cmd(Info.ENABLE_RAW_MGM_HK)
cmd_tuple = enable_periodic_hk_command_with_interval(
False, make_sid(ACS_CONTROLLER, SetId.MGM_RAW_SET), 2.0
False, make_sid(ACS_CONTROLLER, SetId.MGM_RAW_SET), interval
)
q.add_pus_tc(cmd_tuple[0])
q.add_pus_tc(cmd_tuple[1])
@ -294,9 +310,10 @@ def pack_acs_ctrl_command(p: ServiceProviderParams):
generate_one_hk_command(make_sid(ACS_CONTROLLER, SetId.MGM_PROC_SET))
)
elif op_code in OpCodes.ENABLE_PROC_MGM_HK:
interval = float(input("Please specify interval in floating point seconds: "))
q.add_log_cmd(Info.ENABLE_PROC_MGM_HK)
cmd_tuple = enable_periodic_hk_command_with_interval(
False, make_sid(ACS_CONTROLLER, SetId.MGM_PROC_SET), 2.0
False, make_sid(ACS_CONTROLLER, SetId.MGM_PROC_SET), interval
)
q.add_pus_tc(cmd_tuple[0])
q.add_pus_tc(cmd_tuple[1])
@ -313,9 +330,10 @@ def pack_acs_ctrl_command(p: ServiceProviderParams):
generate_one_hk_command(make_sid(ACS_CONTROLLER, SetId.SUS_RAW_SET))
)
elif op_code in OpCodes.ENABLE_RAW_SUS_HK:
interval = float(input("Please specify interval in floating point seconds: "))
q.add_log_cmd(Info.ENABLE_RAW_SUS_HK)
cmd_tuple = enable_periodic_hk_command_with_interval(
False, make_sid(ACS_CONTROLLER, SetId.SUS_RAW_SET), 2.0
False, make_sid(ACS_CONTROLLER, SetId.SUS_RAW_SET), interval
)
q.add_pus_tc(cmd_tuple[0])
q.add_pus_tc(cmd_tuple[1])
@ -332,9 +350,10 @@ def pack_acs_ctrl_command(p: ServiceProviderParams):
generate_one_hk_command(make_sid(ACS_CONTROLLER, SetId.SUS_PROC_SET))
)
elif op_code in OpCodes.ENABLE_PROC_SUS_HK:
interval = float(input("Please specify interval in floating point seconds: "))
q.add_log_cmd(Info.ENABLE_PROC_SUS_HK)
cmd_tuple = enable_periodic_hk_command_with_interval(
False, make_sid(ACS_CONTROLLER, SetId.SUS_PROC_SET), 2.0
False, make_sid(ACS_CONTROLLER, SetId.SUS_PROC_SET), interval
)
q.add_pus_tc(cmd_tuple[0])
q.add_pus_tc(cmd_tuple[1])
@ -351,9 +370,10 @@ def pack_acs_ctrl_command(p: ServiceProviderParams):
create_request_one_diag_command(make_sid(ACS_CONTROLLER, SetId.GYR_RAW_SET))
)
elif op_code in OpCodes.ENABLE_RAW_GYR_HK:
interval = float(input("Please specify interval in floating point seconds: "))
q.add_log_cmd(Info.ENABLE_RAW_GYR_HK)
cmd_tuple = enable_periodic_hk_command_with_interval(
True, make_sid(ACS_CONTROLLER, SetId.GYR_RAW_SET), 2.0
True, make_sid(ACS_CONTROLLER, SetId.GYR_RAW_SET), interval
)
q.add_pus_tc(cmd_tuple[0])
q.add_pus_tc(cmd_tuple[1])
@ -372,9 +392,10 @@ def pack_acs_ctrl_command(p: ServiceProviderParams):
)
)
elif op_code in OpCodes.ENABLE_PROC_GYR_HK:
interval = float(input("Please specify interval in floating point seconds: "))
q.add_log_cmd(Info.ENABLE_PROC_GYR_HK)
cmd_tuple = enable_periodic_hk_command_with_interval(
True, make_sid(ACS_CONTROLLER, SetId.GYR_PROC_SET), 2.0
True, make_sid(ACS_CONTROLLER, SetId.GYR_PROC_SET), interval
)
q.add_pus_tc(cmd_tuple[0])
q.add_pus_tc(cmd_tuple[1])
@ -391,9 +412,10 @@ def pack_acs_ctrl_command(p: ServiceProviderParams):
generate_one_hk_command(make_sid(ACS_CONTROLLER, SetId.GPS_PROC_SET))
)
elif op_code in OpCodes.ENABLE_PROC_GPS_HK:
interval = float(input("Please specify interval in floating point seconds: "))
q.add_log_cmd(Info.ENABLE_PROC_GPS_HK)
cmd_tuple = enable_periodic_hk_command_with_interval(
False, make_sid(ACS_CONTROLLER, SetId.GPS_PROC_SET), 2.0
False, make_sid(ACS_CONTROLLER, SetId.GPS_PROC_SET), interval
)
q.add_pus_tc(cmd_tuple[0])
q.add_pus_tc(cmd_tuple[1])
@ -406,11 +428,14 @@ def pack_acs_ctrl_command(p: ServiceProviderParams):
)
elif op_code in OpCodes.REQUEST_MEKF_HK:
q.add_log_cmd(Info.REQUEST_MEKF_HK)
q.add_pus_tc(create_request_one_diag_command(make_sid(ACS_CONTROLLER, SetId.MEKF_DATA)))
q.add_pus_tc(
create_request_one_diag_command(make_sid(ACS_CONTROLLER, SetId.MEKF_DATA))
)
elif op_code in OpCodes.ENABLE_MEKF_HK:
interval = float(input("Please specify interval in floating point seconds: "))
q.add_log_cmd(Info.ENABLE_MEKF_HK)
cmd_tuple = enable_periodic_hk_command_with_interval(
True, make_sid(ACS_CONTROLLER, SetId.MEKF_DATA), 2.0
True, make_sid(ACS_CONTROLLER, SetId.MEKF_DATA), interval
)
q.add_pus_tc(cmd_tuple[0])
q.add_pus_tc(cmd_tuple[1])
@ -425,9 +450,10 @@ def pack_acs_ctrl_command(p: ServiceProviderParams):
generate_one_hk_command(make_sid(ACS_CONTROLLER, SetId.CTRL_VAL_DATA))
)
elif op_code in OpCodes.ENABLE_CTRL_VAL_HK:
interval = float(input("Please specify interval in floating point seconds: "))
q.add_log_cmd(Info.ENABLE_CTRL_VAL_HK)
cmd_tuple = enable_periodic_hk_command_with_interval(
False, make_sid(ACS_CONTROLLER, SetId.CTRL_VAL_DATA), 2.0
False, make_sid(ACS_CONTROLLER, SetId.CTRL_VAL_DATA), interval
)
q.add_pus_tc(cmd_tuple[0])
q.add_pus_tc(cmd_tuple[1])
@ -444,9 +470,10 @@ def pack_acs_ctrl_command(p: ServiceProviderParams):
generate_one_hk_command(make_sid(ACS_CONTROLLER, SetId.ACTUATOR_CMD_DATA))
)
elif op_code in OpCodes.ENABLE_ACT_CMD_HK:
interval = float(input("Please specify interval in floating point seconds: "))
q.add_log_cmd(Info.ENABLE_ACT_CMD_HK)
cmd_tuple = enable_periodic_hk_command_with_interval(
False, make_sid(ACS_CONTROLLER, SetId.ACTUATOR_CMD_DATA), 2.0
False, make_sid(ACS_CONTROLLER, SetId.ACTUATOR_CMD_DATA), interval
)
q.add_pus_tc(cmd_tuple[0])
q.add_pus_tc(cmd_tuple[1])
@ -462,8 +489,12 @@ def pack_acs_ctrl_command(p: ServiceProviderParams):
def set_acs_ctrl_param_scalar(q: DefaultPusQueueHelper):
pt = int(input("Specify parameter type to set {0: \"uint8\", 1: \"uint16\", 2: \"int32\", 3: \"float\", "
"4: \"double\"}: "))
pt = int(
input(
'Specify parameter type to set {0: "uint8", 1: "uint16", 2: "int32", 3: "float", '
'4: "double"}: '
)
)
sid = int(input("Specify parameter struct ID to set: "))
pid = int(input("Specify parameter ID to set: "))
match pt:
@ -530,7 +561,7 @@ def set_acs_ctrl_param_scalar(q: DefaultPusQueueHelper):
def set_acs_ctrl_param_vector(q: DefaultPusQueueHelper):
pt = int(input("Specify parameter type to set {0: \"float\", 1: \"double\"}: "))
pt = int(input('Specify parameter type to set {0: "float", 1: "double"}: '))
sid = int(input("Specify parameter struct ID to set: "))
pid = int(input("Specify parameter ID to set: "))
match pt:
@ -538,7 +569,9 @@ def set_acs_ctrl_param_vector(q: DefaultPusQueueHelper):
elms = int(input("Specify number of elements in vector to set: "))
param = []
for _ in range(elms):
param.append(float(input("Specify parameter vector entry value to set: ")))
param.append(
float(input("Specify parameter vector entry value to set: "))
)
print(param)
if input("Confirm selected parameter values (Y/N): ") == "Y":
q.add_pus_tc(
@ -558,7 +591,9 @@ def set_acs_ctrl_param_vector(q: DefaultPusQueueHelper):
elms = int(input("Specify number of elements in vector to set: "))
param = []
for _ in range(elms):
param.append(float(input("Specify parameter vector entry value to set: ")))
param.append(
float(input("Specify parameter vector entry value to set: "))
)
print(param)
if input("Confirm selected parameter values (Y/N): ") == "Y":
q.add_pus_tc(
@ -577,7 +612,7 @@ def set_acs_ctrl_param_vector(q: DefaultPusQueueHelper):
def set_acs_ctrl_param_matrix(q: DefaultPusQueueHelper):
pt = int(input("Specify parameter type to set {0: \"float\", 1: \"double\"}: "))
pt = int(input('Specify parameter type to set {0: "float", 1: "double"}: '))
sid = int(input("Specify parameter struct ID to set: "))
pid = int(input("Specify parameter ID to set: "))
match pt:
@ -588,7 +623,9 @@ def set_acs_ctrl_param_matrix(q: DefaultPusQueueHelper):
param = []
for _ in range(rows):
for _ in range(cols):
row.append(float(input("Specify parameter vector entry value to set: ")))
row.append(
float(input("Specify parameter vector entry value to set: "))
)
param.append(row)
print(param)
if input("Confirm selected parameter values (Y/N): ") == "Y":
@ -612,7 +649,9 @@ def set_acs_ctrl_param_matrix(q: DefaultPusQueueHelper):
param = []
for _ in range(rows):
for _ in range(cols):
row.append(float(input("Specify parameter vector entry value to set: ")))
row.append(
float(input("Specify parameter vector entry value to set: "))
)
param.append(row)
row = []
print(param)
@ -632,8 +671,14 @@ def set_acs_ctrl_param_matrix(q: DefaultPusQueueHelper):
return
def handle_acs_ctrl_hk_data(printer: FsfwTmTcPrinter, set_id: int, hk_data: bytes):
def handle_acs_ctrl_hk_data(
printer: FsfwTmTcPrinter,
set_id: int,
hk_data: bytes,
packet_time: datetime.datetime,
):
pw = PrintWrapper(printer)
pw.ilog(_LOGGER, f"Received ACS CTRL HK with packet time {packet_time}")
match set_id:
case SetId.MGM_RAW_SET:
handle_raw_mgm_data(pw, hk_data)
@ -868,7 +913,7 @@ def handle_gyr_data_processed(pw: PrintWrapper, hk_data: bytes):
current_idx = 0
for i in range(4):
gyr_vec = [
f"{val:8.3f}"
f"{val*180/math.pi:8.3f}"
for val in struct.unpack(
fmt_str, hk_data[current_idx : current_idx + inc_len]
)
@ -876,7 +921,7 @@ def handle_gyr_data_processed(pw: PrintWrapper, hk_data: bytes):
pw.dlog(f"{GYR_NAMES[i]}: {gyr_vec}")
current_idx += inc_len
gyr_vec_tot = [
f"{val:8.3f}"
f"{val*180/math.pi:8.3f}"
for val in struct.unpack(fmt_str, hk_data[current_idx : current_idx + inc_len])
]
pw.dlog(f"GYR Vec Total: {gyr_vec_tot}")
@ -895,13 +940,20 @@ def handle_gps_data_processed(pw: PrintWrapper, hk_data: bytes):
return
current_idx = 0
lat = [
f"{val:8.3f}"
f"{val*180/math.pi:8.3f}"
for val in struct.unpack(
fmt_scalar, hk_data[current_idx : current_idx + inc_len_scalar]
)
]
current_idx += inc_len_scalar
long = [
f"{val*180/math.pi:8.3f}"
for val in struct.unpack(
fmt_scalar, hk_data[current_idx : current_idx + inc_len_scalar]
)
]
current_idx += inc_len_scalar
alt = [
f"{val:8.3f}"
for val in struct.unpack(
fmt_scalar, hk_data[current_idx : current_idx + inc_len_scalar]
@ -922,16 +974,24 @@ def handle_gps_data_processed(pw: PrintWrapper, hk_data: bytes):
)
]
current_idx += inc_len_vec
pw.dlog(f"GPS Latitude: {lat} [rad]")
pw.dlog(f"GPS Longitude: {long} [rad]")
pw.dlog(f"GPS Latitude: {lat} [deg]")
pw.dlog(f"GPS Longitude: {long} [deg]")
pw.dlog(f"GPS Altitude: {alt} [m]")
pw.dlog(f"GPS Position: {pos} [m]")
pw.dlog(f"GPS Velocity: {velo} [m/s]")
pw.printer.print_validity_buffer(hk_data[current_idx:], num_vars=4)
def handle_mekf_data(pw: PrintWrapper, hk_data: bytes):
mekf_status = {0 : "UNINITIALIZED", 1: "NO_GYR_DATA", 2: "NO_MODEL_VECTORS", 3: "NO_SUS_MGM_STR_DATA",
4: "COVARIANCE_INVERSION_FAILED", 10: "INITIALIZED", 11: "RUNNING"}
mekf_status = {
0: "UNINITIALIZED",
1: "NO_GYR_DATA",
2: "NO_MODEL_VECTORS",
3: "NO_SUS_MGM_STR_DATA",
4: "COVARIANCE_INVERSION_FAILED",
10: "INITIALIZED",
11: "RUNNING",
}
pw.dlog("Received MEKF Set")
fmt_quat = "!dddd"
fmt_str_4 = "[{:8.3f}, {:8.3f}, {:8.3f}, {:8.3f}]"
@ -947,13 +1007,18 @@ def handle_mekf_data(pw: PrintWrapper, hk_data: bytes):
current_idx = 0
quat = struct.unpack(fmt_quat, hk_data[current_idx : current_idx + inc_len_quat])
current_idx += inc_len_quat
rate = struct.unpack(fmt_vec, hk_data[current_idx : current_idx + inc_len_vec])
rates = [
rate * 180 / math.pi
for rate in struct.unpack(
fmt_vec, hk_data[current_idx : current_idx + inc_len_vec]
)
]
current_idx += inc_len_vec
status = struct.unpack(fmt_sts, hk_data[current_idx : current_idx + inc_len_sts])[0]
current_idx += inc_len_sts
pw.dlog(f"{'MEKF Status'.ljust(25)}: {mekf_status[status]}")
pw.dlog(f"{'MEKF Quaternion'.ljust(25)}: {fmt_str_4.format(*quat)}")
pw.dlog(f"{'MEKF Rotational Rate'.ljust(25)}: {fmt_str_3.format(*rate)}")
pw.dlog(f"{'MEKF Rotational Rate'.ljust(25)}: {fmt_str_3.format(*rates)}")
pw.printer.print_validity_buffer(hk_data[current_idx:], num_vars=3)
@ -984,14 +1049,14 @@ def handle_ctrl_val_data(pw: PrintWrapper, hk_data: bytes):
]
current_idx += inc_len_quat
err_ang = [
f"{val:8.3f}"
f"{val*180/math.pi:8.3f}"
for val in struct.unpack(
fmt_scalar, hk_data[current_idx : current_idx + inc_len_scalar]
)
]
current_idx += inc_len_scalar
tgt_rot = [
f"{val:8.3f}"
f"{val*180/math.pi:8.3f}"
for val in struct.unpack(
fmt_vec, hk_data[current_idx : current_idx + inc_len_vec]
)
@ -999,8 +1064,8 @@ def handle_ctrl_val_data(pw: PrintWrapper, hk_data: bytes):
current_idx += inc_len_vec
pw.dlog(f"Control Values Target Quaternion: {tgt_quat}")
pw.dlog(f"Control Values Error Quaternion: {err_quat}")
pw.dlog(f"Control Values Error Angle: {err_ang} [rad]")
pw.dlog(f"Control Values Target Rotational Rate: {tgt_rot} [rad/s]")
pw.dlog(f"Control Values Error Angle: {err_ang} [deg]")
pw.dlog(f"Control Values Target Rotational Rate: {tgt_rot} [deg/s]")
pw.printer.print_validity_buffer(hk_data[current_idx:], num_vars=4)

View File

@ -0,0 +1,16 @@
import enum
class AcsMode(enum.IntEnum):
OFF = 0
SAFE = 10
IDLE = 11
PTG_NADIR = 12
PTG_TARGET = 13
PTG_TARGET_GS = 14
PTG_INERTIAL = 15
class SafeSubmode(enum.IntEnum):
DEFAULT = 0
DETUMBLE = 1

View File

@ -1,4 +1,5 @@
import datetime
import enum
import logging
import struct
@ -32,7 +33,7 @@ class Info:
RESET_GNSS = "Reset GNSS using reset pin"
class SetId:
class SetId(enum.IntEnum):
HK = 0

View File

@ -95,7 +95,9 @@ def handle_gyr_cmd(q: DefaultPusQueueHelper, op_code: str):
PusTelecommand(
service=201,
subservice=Subservice.TC_SET_HEALTH,
app_data=pack_set_health_cmd_data(object_id=gyr_obj_id, health=FsfwHealth.FAULTY)
app_data=pack_set_health_cmd_data(
object_id=gyr_obj_id, health=FsfwHealth.FAULTY
),
)
)
else:

View File

@ -5,6 +5,7 @@
@author J. Meier
@date 25.03.2021
"""
import enum
import logging
import struct
from typing import List
@ -22,6 +23,10 @@ from tmtccmd.tc.pus_3_fsfw_hk import (
make_sid,
generate_one_diag_command,
generate_one_hk_command,
create_request_one_diag_command,
create_enable_periodic_hk_command,
create_disable_periodic_hk_command,
create_enable_periodic_hk_command_with_interval,
)
from tmtccmd.tc.pus_200_fsfw_mode import pack_mode_data, Mode
from tmtccmd.util import ObjectIdU32
@ -36,8 +41,18 @@ class OpCode:
NORMAL = "normal"
OFF = "off"
SET_DIPOLE = "set_dipole"
REQUEST_ENG_HK = "hk_os_eng_hk"
REQUEST_MGM_RAW = "hk_os_mgm_raw"
REQUEST_ENG_HK_NO_TORQUE = "hk_os_eng_hk_no_torque"
REQUEST_ENG_HK_WITH_TORQUE = "hk_os_eng_hk_with_torque"
REQUEST_MGM_RAW_NO_TORQUE = "hk_os_mgm_raw_no_torque"
ENABLE_MGM_RAW_NO_TORQUE = "enb_mgm_raw_no_torque"
DISABLE_MGM_RAW_NO_TORQUE = "dis_mgm_raw_no_torque"
REQUEST_MGM_RAW_WITH_TORQUE = "hk_os_mgm_raw_with_torque"
ENABLE_MGM_RAW_WITH_TORQUE = "enb_mgm_raw_with_torque"
DISABLE_MGM_RAW_WITH_TORQUE = "dis_mgm_raw_with_torque"
ENABLE_ENG_HK_NO_TORQUE = "enb_eng_hk_no_torque"
DISABLE_ENG_HK_NO_TORQUE = "dis_eng_hk_no_torque"
ENABLE_ENG_HK_WITH_TORQUE = "enb_eng_hk_with_torque"
DISABLE_ENG_HK_WITH_TORQUE = "dis_eng_hk_with_torque"
POS_X_SELF_TEST = "self_test_pos_x"
NEG_X_SELF_TEST = "self_test_neg_x"
POS_Y_SELF_TEST = "self_test_pos_y"
@ -46,7 +61,7 @@ class OpCode:
NEG_Z_SELF_TEST = "self_test_neg_z"
class ImtqSetId:
class ImtqSetId(enum.IntEnum):
ENG_HK_NO_TORQUE = 1
RAW_MTM_NO_TORQUE = 2
ENG_HK_SET_WITH_TORQUE = 3
@ -61,7 +76,6 @@ class ImtqSetId:
NEGATIVE_Y_TEST = 13
POSITIVE_Z_TEST = 14
NEGATIVE_Z_TEST = 15
SELF_TEST_SET = 16
class ImtqActionId:
@ -84,8 +98,25 @@ def add_imtq_cmds(defs: TmtcDefinitionWrapper):
oce.add(OpCode.OFF, "Mode Off")
oce.add(OpCode.ON, "Mode On")
oce.add(OpCode.NORMAL, "Mode Normal")
oce.add(OpCode.REQUEST_ENG_HK, "Request Engineering HK One Shot")
oce.add(OpCode.REQUEST_MGM_RAW, "Request MGM Raw HK One Shot")
oce.add(OpCode.REQUEST_ENG_HK_NO_TORQUE, "Request Engineering HK One Shot")
oce.add(
OpCode.REQUEST_ENG_HK_WITH_TORQUE,
"Request Engineering HK One Shot during Torque",
)
oce.add(OpCode.ENABLE_ENG_HK_NO_TORQUE, "Enable ENG HK not torque")
oce.add(OpCode.ENABLE_ENG_HK_WITH_TORQUE, "Enable ENG HK with torque")
oce.add(OpCode.DISABLE_ENG_HK_NO_TORQUE, "Disable ENG HK not torque")
oce.add(OpCode.DISABLE_ENG_HK_WITH_TORQUE, "Disable ENG HK with torque")
oce.add(
OpCode.REQUEST_MGM_RAW_NO_TORQUE, "Request MGM Raw Without Torque HK One Shot"
)
oce.add(OpCode.ENABLE_MGM_RAW_NO_TORQUE, "Enable MGM Raw Without Torque HK")
oce.add(OpCode.DISABLE_MGM_RAW_NO_TORQUE, "Disable MGM Raw Without Torque HK")
oce.add(
OpCode.REQUEST_MGM_RAW_WITH_TORQUE, "Request MGM Raw With Torque HK One Shot"
)
oce.add(OpCode.ENABLE_MGM_RAW_WITH_TORQUE, "Enable MGM Raw With Torque HK")
oce.add(OpCode.DISABLE_MGM_RAW_WITH_TORQUE, "Disable MGM Raw With Torque HK")
oce.add(OpCode.POS_X_SELF_TEST, "IMTQ perform pos X self test")
oce.add(OpCode.NEG_X_SELF_TEST, "IMTQ perform neg X self test")
oce.add(OpCode.POS_Y_SELF_TEST, "IMTQ perform pos Y self test")
@ -208,13 +239,57 @@ def pack_imtq_test_into(object_id: ObjectIdU32, q: DefaultPusQueueHelper, op_cod
)
)
if op_code == "10":
if op_code == "10": # doesnt seem to work anymore
q.add_log_cmd("IMTQ: Get commanded dipole")
command = object_id.as_bytes + ImtqActionId.get_commanded_dipole
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command))
if op_code == OpCode.REQUEST_ENG_HK:
q.add_log_cmd("IMTQ: Get engineering hk set")
if op_code == OpCode.ENABLE_ENG_HK_NO_TORQUE:
q.add_log_cmd("IMTQ: Enable ENG HK")
interval = float(input("Please enter collection interval in seconds: "))
cmds = create_enable_periodic_hk_command_with_interval(
diag=True,
sid=make_sid(object_id.as_bytes, ImtqSetId.ENG_HK_NO_TORQUE),
interval_seconds=interval,
)
for cmd in cmds:
q.add_pus_tc(cmd)
if op_code == OpCode.DISABLE_ENG_HK_NO_TORQUE:
q.add_log_cmd("IMTQ: Disable ENG HK (No Torque)")
q.add_pus_tc(
create_disable_periodic_hk_command(
True, make_sid(object_id.as_bytes, ImtqSetId.ENG_HK_NO_TORQUE)
)
)
if op_code == OpCode.REQUEST_ENG_HK_WITH_TORQUE:
q.add_log_cmd("IMTQ: Get engineering hk set with torque")
q.add_pus_tc(
create_request_one_diag_command(
sid=make_sid(
object_id=object_id.as_bytes,
set_id=ImtqSetId.ENG_HK_SET_WITH_TORQUE,
)
)
)
if op_code == OpCode.ENABLE_ENG_HK_WITH_TORQUE:
q.add_log_cmd("IMTQ: Enable ENG HK with torque")
interval = float(input("Please enter collection interval in seconds: "))
cmds = create_enable_periodic_hk_command_with_interval(
diag=True,
sid=make_sid(object_id.as_bytes, ImtqSetId.ENG_HK_SET_WITH_TORQUE),
interval_seconds=interval,
)
for cmd in cmds:
q.add_pus_tc(cmd)
if op_code == OpCode.DISABLE_ENG_HK_WITH_TORQUE:
q.add_log_cmd("IMTQ: Disable ENG HK with Torque")
q.add_pus_tc(
create_disable_periodic_hk_command(
True, make_sid(object_id.as_bytes, ImtqSetId.ENG_HK_SET_WITH_TORQUE)
)
)
if op_code == OpCode.REQUEST_ENG_HK_NO_TORQUE:
q.add_log_cmd("IMTQ: Get engineering hk set (no torque)")
q.add_pus_tc(
generate_one_diag_command(
sid=make_sid(
@ -226,21 +301,65 @@ def pack_imtq_test_into(object_id: ObjectIdU32, q: DefaultPusQueueHelper, op_cod
if op_code == "12":
q.add_log_cmd("IMTQ: Get calibrated MTM hk set")
q.add_pus_tc(
generate_one_diag_command(
create_request_one_diag_command(
sid=make_sid(object_id=object_id.as_bytes, set_id=ImtqSetId.CAL_MTM_SET)
)
)
if op_code == OpCode.REQUEST_MGM_RAW:
if op_code == OpCode.REQUEST_MGM_RAW_NO_TORQUE:
q.add_log_cmd("IMTQ: Get raw MTM hk set")
q.add_pus_tc(
generate_one_diag_command(
create_request_one_diag_command(
sid=make_sid(
object_id=object_id.as_bytes, set_id=ImtqSetId.RAW_MTM_NO_TORQUE
)
)
)
if op_code == OpCode.DISABLE_MGM_RAW_NO_TORQUE:
q.add_log_cmd("IMTQ: Disable MGM RAW HK (No Torque)")
q.add_pus_tc(
create_disable_periodic_hk_command(
True, make_sid(object_id.as_bytes, ImtqSetId.RAW_MTM_NO_TORQUE)
)
)
if op_code == OpCode.ENABLE_MGM_RAW_NO_TORQUE:
q.add_log_cmd("IMTQ: Enable MGM RAW HK (No Torque)")
interval = float(input("Please enter collection interval in seconds: "))
cmds = create_enable_periodic_hk_command_with_interval(
diag=True,
sid=make_sid(object_id.as_bytes, ImtqSetId.RAW_MTM_NO_TORQUE),
interval_seconds=interval,
)
for cmd in cmds:
q.add_pus_tc(cmd)
if op_code == OpCode.REQUEST_MGM_RAW_WITH_TORQUE:
q.add_log_cmd("IMTQ: Get raw MTM hk set")
q.add_pus_tc(
create_request_one_diag_command(
sid=make_sid(
object_id=object_id.as_bytes, set_id=ImtqSetId.RAW_MTM_WITH_TORQUE
)
)
)
if op_code == OpCode.ENABLE_MGM_RAW_WITH_TORQUE:
q.add_log_cmd("IMTQ: Enable MGM RAW HK (No Torque)")
interval = float(input("Please enter collection interval in seconds: "))
cmds = create_enable_periodic_hk_command_with_interval(
diag=True,
sid=make_sid(object_id.as_bytes, ImtqSetId.RAW_MTM_WITH_TORQUE),
interval_seconds=interval,
)
for cmd in cmds:
q.add_pus_tc(cmd)
if op_code == OpCode.DISABLE_MGM_RAW_WITH_TORQUE:
q.add_log_cmd("IMTQ: Disable MGM RAW HK (No Torque)")
q.add_pus_tc(
create_disable_periodic_hk_command(
True, make_sid(object_id.as_bytes, ImtqSetId.RAW_MTM_WITH_TORQUE)
)
)
def pack_dipole_command(
object_id: bytes, x_dipole: int, y_dipole: int, z_dipole: int, duration: int
@ -308,22 +427,20 @@ ENG_HK_HEADERS = [
def handle_imtq_hk(printer: FsfwTmTcPrinter, hk_data: bytes, set_id: int):
if set_id == ImtqSetId.SELF_TEST_SET:
if (set_id >= ImtqSetId.POSITIVE_X_TEST) and (set_id <= ImtqSetId.NEGATIVE_Z_TEST):
return handle_self_test_data(printer, hk_data)
elif set_id == ImtqSetId.ENG_HK_NO_TORQUE:
_LOGGER.info("Found engineering HK without torque")
return handle_eng_set(printer, hk_data)
return handle_eng_set(printer, hk_data, False)
elif set_id == ImtqSetId.ENG_HK_SET_WITH_TORQUE:
_LOGGER.info("Found engineering HK during torque")
return handle_eng_set(printer, hk_data)
return handle_eng_set(printer, hk_data, True)
elif set_id == ImtqSetId.CAL_MTM_SET:
return handle_calibrated_mtm_measurement(printer, hk_data)
elif set_id == ImtqSetId.RAW_MTM_NO_TORQUE:
_LOGGER.info("Found raw MTM measurement without torque")
return handle_raw_mtm_measurement(printer, hk_data)
return handle_raw_mtm_measurement(printer, hk_data, False)
elif set_id == ImtqSetId.RAW_MTM_WITH_TORQUE:
_LOGGER.info("Found raw MTM measurement during torque")
return handle_raw_mtm_measurement(printer, hk_data)
return handle_raw_mtm_measurement(printer, hk_data, True)
elif set_id == ImtqSetId.DIPOLES:
return handle_dipole_set(printer, hk_data)
elif set_id == ImtqSetId.STATUS_SET:
return handle_status_set(printer, hk_data)
else:
@ -340,6 +457,21 @@ def unpack_status_set(hk_data: bytes) -> List:
return [status_mode, status_error, status_conf, status_uptime]
def handle_dipole_set(printer: FsfwTmTcPrinter, hk_data: bytes):
pw = PrintWrapper(printer)
pw.dlog("Received iMTQ dipole set")
fmt_str = "!hhhH"
fmt_len = struct.calcsize(fmt_str)
(dipole_x, dipole_y, dipole_z, current_torque_duration) = struct.unpack(
fmt_str, hk_data[0:8]
)
pw.dlog(f"Dipole X: {dipole_x}")
pw.dlog(f"Dipole Y: {dipole_y}")
pw.dlog(f"Dipole Z: {dipole_z}")
pw.dlog(f"Current torque duration: {current_torque_duration}")
pw.printer.print_validity_buffer(hk_data[fmt_len:], 2)
def unpack_eng_hk(hk_data: bytes) -> List:
digital_voltage = struct.unpack("!H", hk_data[0:2])[0]
analog_voltage = struct.unpack("!H", hk_data[2:4])[0]
@ -368,8 +500,9 @@ def unpack_eng_hk(hk_data: bytes) -> List:
return content_list
def handle_eng_set(printer: FsfwTmTcPrinter, hk_data: bytes):
def handle_eng_set(printer: FsfwTmTcPrinter, hk_data: bytes, torque_on: bool):
pw = PrintWrapper(printer)
pw.dlog(f"Found engineering HK. Torque Status: {torque_on}")
content_list = unpack_eng_hk(hk_data)
validity_buffer = hk_data[32:]
@ -410,8 +543,11 @@ def handle_calibrated_mtm_measurement(printer: FsfwTmTcPrinter, hk_data: bytes):
printer.print_validity_buffer(validity_buffer=validity_buffer, num_vars=num_of_vars)
def handle_raw_mtm_measurement(printer: FsfwTmTcPrinter, hk_data: bytes):
def handle_raw_mtm_measurement(
printer: FsfwTmTcPrinter, hk_data: bytes, torque_status: bool
):
pw = PrintWrapper(printer)
pw.dlog(f"Found raw MTM measurement. Torque Status: {torque_status}")
header_list = [
"Raw MTM X [nT]",
"Raw MTM Y [nT]",

View File

@ -5,7 +5,12 @@ from eive_tmtc.config.definitions import CustomServiceList
from tmtccmd.config import OpCodeEntry
import eive_tmtc.config.object_ids as obj_ids
from eive_tmtc.config.object_ids import MGM_0_LIS3_HANDLER_ID, MGM_1_RM3100_HANDLER_ID, MGM_2_LIS3_HANDLER_ID, MGM_3_RM3100_HANDLER_ID
from eive_tmtc.config.object_ids import (
MGM_0_LIS3_HANDLER_ID,
MGM_1_RM3100_HANDLER_ID,
MGM_2_LIS3_HANDLER_ID,
MGM_3_RM3100_HANDLER_ID,
)
from eive_tmtc.pus_tm.defs import PrintWrapper
from tmtccmd.config.tmtc import tmtc_definitions_provider, TmtcDefinitionWrapper

View File

@ -5,17 +5,22 @@
@author J. Meier
@date 14.08.2021
"""
import datetime
import enum
import logging
import struct
from spacepackets.ecss.tc import PusTelecommand
from tmtccmd.tc.pus_200_fsfw_mode import pack_mode_data, Mode
from tmtccmd.tc import DefaultPusQueueHelper
from tmtccmd.util import ObjectIdU32
from eive_tmtc.config.definitions import CustomServiceList
from eive_tmtc.pus_tm.defs import PrintWrapper
from eive_tmtc.utility.input_helper import InputHelper
from spacepackets.ecss.tc import PusTelecommand
from tmtccmd.config import TmtcDefinitionWrapper, OpCodeEntry
from tmtccmd.config.tmtc import tmtc_definitions_provider
from tmtccmd.tc.pus_3_fsfw_hk import create_request_one_diag_command, make_sid
from tmtccmd.tc import DefaultPusQueueHelper
from tmtccmd.tc.pus_200_fsfw_mode import pack_mode_data, Mode
from tmtccmd.util import ObjectIdU32
from tmtccmd.util.tmtc_printer import FsfwTmTcPrinter
_LOGGER = logging.getLogger(__name__)
@ -87,7 +92,17 @@ class StarTrackerActionId(enum.IntEnum):
class OpCodes:
NORMAL = ["2", "nml"]
ON_BOOTLOADER = "on_bootloader"
ON_FIRMWARE = "on_firmware"
NORMAL = "nml"
OFF = "off"
PING = "ping"
REQUEST_SOLUTION_SET = "request_sol_set"
TAKE_IMAGE = "take_image"
class Info:
REQUEST_SOLUTION_SET = "Request Solution Set HK once"
class SetId(enum.IntEnum):
@ -160,7 +175,8 @@ class PartitionSize:
STAR_TRACKER_FIRMWARE = 464572
class Submode:
class Submode(enum.IntEnum):
DEFAULT = 0
BOOTLOADER = 1
FIRMWARE = 2
@ -172,27 +188,30 @@ def pack_star_tracker_commands(
f"Generate command for star tracker with object id: {object_id.as_hex_string}"
)
obyt = object_id.as_bytes
if op_code == "0":
if op_code == OpCodes.ON_BOOTLOADER:
q.add_log_cmd("Star tracker: Mode On, Submode Bootloader")
data = pack_mode_data(obyt, Mode.ON, Submode.BOOTLOADER)
q.add_pus_tc(PusTelecommand(service=200, subservice=1, app_data=data))
if op_code == "1":
if op_code == OpCodes.ON_FIRMWARE:
q.add_log_cmd("Star tracker: Mode On, Submode Firmware")
data = pack_mode_data(obyt, Mode.ON, Submode.FIRMWARE)
q.add_pus_tc(PusTelecommand(service=200, subservice=1, app_data=data))
if op_code == "2":
if op_code == OpCodes.NORMAL:
q.add_log_cmd("Star tracker: Mode Normal")
data = pack_mode_data(obyt, Mode.NORMAL, 0)
q.add_pus_tc(PusTelecommand(service=200, subservice=1, app_data=data))
if op_code == "3":
if op_code == OpCodes.OFF:
q.add_log_cmd("Star tracker: Mode Off")
data = pack_mode_data(obyt, Mode.OFF, 0)
q.add_pus_tc(PusTelecommand(service=200, subservice=1, app_data=data))
if op_code == OpCodes.REQUEST_SOLUTION_SET:
q.add_log_cmd(Info.REQUEST_SOLUTION_SET)
q.add_pus_tc(create_request_one_diag_command(make_sid(obyt, SetId.SOLUTION)))
if op_code == "4":
q.add_log_cmd("Star tracker: Mode Raw")
data = pack_mode_data(obyt, Mode.RAW, 0)
q.add_pus_tc(PusTelecommand(service=200, subservice=1, app_data=data))
if op_code == "5":
if op_code == OpCodes.PING:
q.add_log_cmd("Star tracker: Ping")
data = obyt + struct.pack("!I", StarTrackerActionId.PING)
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data))
@ -340,7 +359,7 @@ def pack_star_tracker_commands(
+ bytearray(json_file, "utf-8")
)
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data))
if op_code == "27":
if op_code == OpCodes.TAKE_IMAGE:
q.add_log_cmd("Star tracker: Take image")
actionid = int(input("Specify parameter ID (take image - 4): "))
data = (
@ -602,18 +621,6 @@ def pack_star_tracker_commands(
+ bytearray(firmware, "utf-8")
)
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data))
if op_code == "70":
q.add_log_cmd("Star tracker: Disable timestamp generation")
command = obyt + struct.pack(
"!I", StarTrackerActionId.DISBALE_TIMESTAMP_GENERATION
)
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command))
if op_code == "71":
q.add_log_cmd("Star tracker: Enable timestamp generation")
command = obyt + struct.pack(
"!I", StarTrackerActionId.ENABLE_TIMESTAMP_GENERATION
)
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command))
def pack_read_command(object_id: bytes) -> bytearray:
@ -668,3 +675,183 @@ def get_upload_image() -> str:
key = input_helper.get_key()
image = upload_image_dict[key][1]
return image
def handle_str_hk_data(set_id: int, hk_data: bytes, printer: FsfwTmTcPrinter):
pw = PrintWrapper(printer)
pw.dlog(f"Received STR HK set with set ID {set_id}")
if set_id == SetId.SOLUTION:
handle_solution_set(hk_data, pw)
elif set_id == SetId.TEMPERATURE:
handle_temperature_set(hk_data, pw)
else:
_LOGGER.warning(f"HK parsing for Star Tracker set ID {set_id} unimplemented")
def unpack_time_hk(hk_data: bytes, current_idx: int, pw: PrintWrapper) -> int:
ticks_time_fmt = "!IQ"
fmt_len = struct.calcsize(ticks_time_fmt)
(ticks, unix_time) = struct.unpack(
ticks_time_fmt, hk_data[current_idx : current_idx + fmt_len]
)
unix_as_dt = datetime.datetime.fromtimestamp(
int(round(unix_time / 10e6)), tz=datetime.timezone.utc
)
pw.dlog(f"Ticks: {ticks} | UNIX time: {unix_time}")
pw.dlog(f"UNIX as datetime: {unix_as_dt}")
current_idx += fmt_len
return current_idx
def handle_temperature_set(hk_data: bytes, pw: PrintWrapper):
pw.dlog("Received temperature set")
if len(hk_data) < 24:
_LOGGER.warning(f"Temperature dataset HK with length {len(hk_data)} too short")
current_idx = unpack_time_hk(hk_data, 0, pw)
temps_fmt = "!fff"
fmt_len = struct.calcsize(temps_fmt)
(mcu_temp, cmos_temp, fpga_temp) = struct.unpack(
temps_fmt, hk_data[current_idx : current_idx + fmt_len]
)
pw.dlog(f"MCU Temperature: {mcu_temp}")
pw.dlog(f"CMOS Temperature: {cmos_temp}")
pw.dlog(f"FPGA Temperature: {fpga_temp}")
current_idx += fmt_len
pw.printer.print_validity_buffer(hk_data[current_idx:], 5)
def handle_solution_set(hk_data: bytes, pw: PrintWrapper):
pw.dlog("Received solution set")
if len(hk_data) < 78:
_LOGGER.warning(
f"Solution dataset HK data with length {len(hk_data)} too short"
)
return
current_idx = unpack_time_hk(hk_data, 0, pw)
calib_quaternions_fmt = "!ffff"
fmt_len = struct.calcsize(calib_quaternions_fmt)
(calib_q_w, calib_q_x, calib_q_y, calib_q_z) = struct.unpack(
calib_quaternions_fmt, hk_data[current_idx : current_idx + fmt_len]
)
pw.dlog("Calibrated Quaternions")
pw.dlog(f"Quaternion w: {calib_q_w}")
pw.dlog(f"Quaternion x: {calib_q_x}")
pw.dlog(f"Quaternion y: {calib_q_y}")
pw.dlog(f"Quaternion z: {calib_q_z}")
current_idx += fmt_len
track_fmt = "!fffff"
fmt_len = struct.calcsize(track_fmt)
(track_confidence, track_q_w, track_q_x, track_q_y, track_q_z) = struct.unpack(
track_fmt, hk_data[current_idx : current_idx + fmt_len]
)
pw.dlog(f"Track Confidence: {track_confidence}")
pw.dlog(f"Track QW: {track_q_w}")
pw.dlog(f"Track QX: {track_q_x}")
pw.dlog(f"Track QY: {track_q_y}")
pw.dlog(f"Track QZ: {track_q_z}")
current_idx += fmt_len
track_removed = hk_data[current_idx]
pw.dlog(f"Number of stars removed from tracking solution: {track_removed}")
current_idx += 1
stars_centroided = hk_data[current_idx]
pw.dlog(f"Centroided stars: {stars_centroided}")
current_idx += 1
stars_matched_database = hk_data[current_idx]
pw.dlog(f"Stars matched: {stars_matched_database}")
current_idx += 1
# Result of LISA: Lost in space algorithm
lisa_fmt = "!fffffB"
fmt_len = struct.calcsize(lisa_fmt)
(
lisa_q_w,
lisa_q_x,
lisa_q_y,
lisa_q_z,
lisa_percentage_close_stars,
lisa_number_close_stars,
) = struct.unpack(lisa_fmt, hk_data[current_idx : current_idx + fmt_len])
pw.dlog(f"LISA QW: {lisa_q_w}")
pw.dlog(f"LISA QX: {lisa_q_x}")
pw.dlog(f"LISA QY: {lisa_q_y}")
pw.dlog(f"LISA QZ: {lisa_q_z}")
pw.dlog(
f"Percentage of close stars in LISA solution: {lisa_percentage_close_stars}"
)
pw.dlog(f"Number of close stars in LISA solution: {lisa_number_close_stars}")
current_idx += fmt_len
is_trusworthy = hk_data[current_idx]
pw.dlog(f"Trustworthy solution: {is_trusworthy}")
current_idx += 1
stable_count = struct.unpack("!I", hk_data[current_idx : current_idx + 4])[0]
pw.dlog(f"Stable count: {stable_count}")
current_idx += 4
solution_strategy = hk_data[current_idx]
pw.dlog(f"Solution strategy: {solution_strategy}")
current_idx += 1
pw.printer.print_validity_buffer(hk_data[current_idx:], 23)
@tmtc_definitions_provider
def add_str_cmds(defs: TmtcDefinitionWrapper):
oce = OpCodeEntry()
oce.add(OpCodes.ON_BOOTLOADER, "Mode On, Submode Bootloader")
oce.add(OpCodes.ON_FIRMWARE, "Mode On, Submode Firmware")
oce.add(OpCodes.NORMAL, "Mode Normal")
oce.add(OpCodes.OFF, "Mode Off")
oce.add("4", "Star Tracker: Mode Raw")
oce.add(OpCodes.PING, "Star Tracker: Ping")
oce.add(OpCodes.TAKE_IMAGE, "Take Image")
oce.add(OpCodes.REQUEST_SOLUTION_SET, "Request Solution Set HK")
oce.add("6", "Star Tracker: Switch to bootloader program")
oce.add("7", "Star Tracker: Request temperature")
oce.add("8", "Star Tracker: Request version")
oce.add("9", "Star Tracker: Request interface")
oce.add("10", "Star Tracker: Request power")
oce.add("11", "Star Tracker: Set subscription parameters")
oce.add("12", "Star Tracker: Boot image (requires bootloader mode)")
oce.add("13", "Star Tracker: Request time")
oce.add("14", "Star Tracker: Request solution")
oce.add("15", "Star Tracker: Upload image")
oce.add("16", "Star Tracker: Download image")
oce.add("17", "Star Tracker: Set limit parameters")
oce.add("17", "Star Tracker: Set limit parameters")
oce.add("18", "Star Tracker: Set tracking parameters")
oce.add("19", "Star Tracker: Set mounting parameters")
oce.add("20", "Star Tracker: Set camera parameters")
oce.add("22", "Star Tracker: Set centroiding parameters")
oce.add("23", "Star Tracker: Set LISA parameters")
oce.add("24", "Star Tracker: Set matching parameters")
oce.add("25", "Star Tracker: Set validation parameters")
oce.add("26", "Star Tracker: Set algo parameters")
oce.add("28", "Star Tracker: Stop str helper")
oce.add("30", "Star Tracker: Set name of download image")
oce.add("31", "Star Tracker: Request histogram")
oce.add("32", "Star Tracker: Request contrast")
oce.add("33", "Star Tracker: Set json filename")
oce.add("35", "Star Tracker: Flash read")
oce.add("36", "Star Tracker: Set flash read filename")
oce.add("37", "Star Tracker: Get checksum")
oce.add("49", "Star Tracker: Request camera parameter")
oce.add("50", "Star Tracker: Request limits")
oce.add("51", "Star Tracker: Set image processor parameters")
oce.add("52", "Star Tracker: (EGSE only) Load camera ground config")
oce.add("53", "Star Tracker: (EGSE only) Load camera flight config")
oce.add("54", "Star Tracker: Request log level parameters")
oce.add("55", "Star Tracker: Request mounting parameters")
oce.add("56", "Star Tracker: Request image processor parameters")
oce.add("57", "Star Tracker: Request centroiding parameters")
oce.add("58", "Star Tracker: Request lisa parameters")
oce.add("59", "Star Tracker: Request matching parameters")
oce.add("60", "Star Tracker: Request tracking parameters")
oce.add("61", "Star Tracker: Request validation parameters")
oce.add("62", "Star Tracker: Request algo parameters")
oce.add("63", "Star Tracker: Request subscription parameters")
oce.add("64", "Star Tracker: Request log subscription parameters")
oce.add("65", "Star Tracker: Request debug camera parameters")
oce.add("66", "Star Tracker: Set log level parameters")
oce.add("67", "Star Tracker: Set log subscription parameters")
oce.add("68", "Star Tracker: Set debug camera parameters")
oce.add("69", "Star Tracker: Firmware update")
oce.add("70", "Star Tracker: Disable timestamp generation")
oce.add("71", "Star Tracker: Enable timestamp generation")
defs.add_service(CustomServiceList.STAR_TRACKER.value, "Star Tracker", oce)

View File

@ -1,6 +1,7 @@
import enum
from typing import Tuple, Dict
from eive_tmtc.tmtc.acs.defs import AcsMode, SafeSubmode
from spacepackets.ecss import PusTelecommand
from eive_tmtc.tmtc.common import pack_mode_cmd_with_info
from eive_tmtc.config.object_ids import ACS_SUBSYSTEM_ID
@ -27,17 +28,6 @@ class OpCode(str, enum.Enum):
REPORT_ALL_MODES = "all_modes"
class AcsMode(enum.IntEnum):
OFF = 0
SAFE = 10
DETUMBLE = 11
IDLE = 12
PTG_TARGET_NADIR = 13
PTG_TARGET = 14
PTG_TARGET_GS = 15
PTG_TARGET_INERTIAL = 16
class Info(str, enum.Enum):
OFF = "Off Command"
SAFE = "Safe Mode Command"
@ -50,15 +40,15 @@ class Info(str, enum.Enum):
REPORT_ALL_MODES = "Report All Modes Recursively"
HANDLER_LIST: Dict[str, Tuple[int, str]] = {
OpCode.OFF: (AcsMode.OFF, Info.OFF),
OpCode.SAFE: (AcsMode.SAFE, Info.SAFE),
OpCode.DETUMBLE: (AcsMode.DETUMBLE, Info.DETUMBLE),
OpCode.IDLE: (AcsMode.IDLE, Info.IDLE),
OpCode.PTG_TARGET: (AcsMode.PTG_TARGET, Info.PTG_TARGET),
OpCode.PTG_TARGET_GS: (AcsMode.PTG_TARGET_GS, Info.PTG_TARGET_GS),
OpCode.PTG_TARGET_NADIR: (AcsMode.PTG_TARGET_NADIR, Info.PTG_TARGET_NADIR),
OpCode.PTG_TARGET_INERTIAL: (AcsMode.PTG_TARGET_INERTIAL, Info.PTG_TARGET_INERTIAL),
HANDLER_LIST: Dict[str, Tuple[int, int, str]] = {
OpCode.OFF: (AcsMode.OFF, 0, Info.OFF),
OpCode.SAFE: (AcsMode.SAFE, SafeSubmode.DEFAULT, Info.SAFE),
OpCode.DETUMBLE: (AcsMode.SAFE, SafeSubmode.DETUMBLE, Info.DETUMBLE),
OpCode.IDLE: (AcsMode.IDLE, 0, Info.IDLE),
OpCode.PTG_TARGET: (AcsMode.PTG_TARGET, 0, Info.PTG_TARGET),
OpCode.PTG_TARGET_GS: (AcsMode.PTG_TARGET_GS, 0, Info.PTG_TARGET_GS),
OpCode.PTG_TARGET_NADIR: (AcsMode.PTG_NADIR, 0, Info.PTG_TARGET_NADIR),
OpCode.PTG_TARGET_INERTIAL: (AcsMode.PTG_INERTIAL, 0, Info.PTG_TARGET_INERTIAL),
}
@ -81,9 +71,9 @@ def build_acs_subsystem_cmd(p: ServiceProviderParams):
return
pack_mode_cmd_with_info(
object_id=ACS_SUBSYSTEM_ID,
info=f"{info_prefix}: {mode_info_tup[1]}",
submode=0,
info=f"{info_prefix}: {mode_info_tup[2]}",
mode=mode_info_tup[0],
submode=mode_info_tup[1],
q=q,
)
@ -91,7 +81,7 @@ def build_acs_subsystem_cmd(p: ServiceProviderParams):
@tmtc_definitions_provider
def add_acs_subsystem_cmds(defs: TmtcDefinitionWrapper):
oce = OpCodeEntry()
for op_code, (_, info) in HANDLER_LIST.items():
for op_code, (_, _, info) in HANDLER_LIST.items():
oce.add(op_code, info)
oce.add(OpCode.REPORT_ALL_MODES, Info.REPORT_ALL_MODES)
defs.add_service(CustomServiceList.ACS_SS, "ACS Subsystem", oce)

View File

@ -48,6 +48,7 @@ class Submode(enum.IntEnum):
UNSET = 0
DATARATE_LOW = 1
DATARATE_HIGH = 2
DATARATE_DEFAULT = 3
class OpCode:

View File

@ -0,0 +1,9 @@
import enum
class Mode(enum.IntEnum):
RX_ONLY = 10
RX_AND_TX_DEF_DATARATE = 11
RX_AND_TX_LOW_DATARATE = 12
RX_AND_TX_HIGH_DATARATE = 13
RX_AND_TX_CARRIER_WAVE = 14

View File

@ -8,13 +8,9 @@
from spacepackets.ecss.tc import PusTelecommand
from tmtccmd.tc import DefaultPusQueueHelper
from tmtccmd.tc.pus_20_fsfw_param import (
create_load_param_cmd
)
from tmtccmd.tc.pus_20_fsfw_param import create_load_param_cmd
from tmtccmd.pus.s20_fsfw_param_defs import (
create_scalar_u8_parameter
)
from tmtccmd.pus.s20_fsfw_param_defs import create_scalar_u8_parameter
from tmtccmd.config.tmtc import (
tmtc_definitions_provider,
@ -46,7 +42,9 @@ class OpCode:
class Info:
PRINT_CLCW = "Will cause the OBSW to print the current CLCW to the debug console"
PRINT_MON_REG = "Will cause the OBSW to print the PDEC monitor register to the console"
PRINT_MON_REG = (
"Will cause the OBSW to print the PDEC monitor register to the console"
)
POSITIVE_WINDOW = "Change positive window parameter for AD frames"
NEGATIVE_WINDOW = "Change negative window parameter for AD frames"

View File

@ -3,6 +3,9 @@ import enum
from eive_tmtc.config.definitions import CustomServiceList
from eive_tmtc.config.object_ids import COM_SUBSYSTEM_ID
from eive_tmtc.tmtc.com.syrlinks_handler import Datarate
from .defs import Mode as ComMode
from tmtccmd.config.tmtc import (
tmtc_definitions_provider,
TmtcDefinitionWrapper,
@ -29,14 +32,6 @@ class ParameterId(enum.IntEnum):
TRANSMITTER_TIMEOUT = 1
class Submode(enum.IntEnum):
RX_ONLY = 10
RX_AND_TX_DEF_DATARATE = 11
RX_AND_TX_LOW_DATARATE = 12
RX_AND_TX_HIGH_DATARATE = 13
RX_AND_TX_CARRIER_WAVE = 14
class OpCode:
RX_ONLY = "rx_only"
TX_AND_RX_DEF_RATE = "rx_and_tx_default_rate"
@ -72,21 +67,21 @@ def build_com_subsystem_cmd(p: ServiceProviderParams):
prefix = "COM Subsystem"
if o == OpCode.RX_ONLY:
q.add_log_cmd(Info.RX_ONLY)
q.add_pus_tc(create_mode_command(COM_SUBSYSTEM_ID, Submode.RX_ONLY, 0))
q.add_pus_tc(create_mode_command(COM_SUBSYSTEM_ID, ComMode.RX_ONLY, 0))
elif o == OpCode.TX_AND_RX_DEF_RATE:
q.add_log_cmd(Info.TX_AND_RX_DEF_DATARATE)
q.add_pus_tc(
create_mode_command(COM_SUBSYSTEM_ID, Submode.RX_AND_TX_DEF_DATARATE, 0)
create_mode_command(COM_SUBSYSTEM_ID, ComMode.RX_AND_TX_DEF_DATARATE, 0)
)
elif o == OpCode.TX_AND_RX_LOW_RATE:
q.add_log_cmd(Info.TX_AND_RX_LOW_DATARATE)
q.add_pus_tc(
create_mode_command(COM_SUBSYSTEM_ID, Submode.RX_AND_TX_LOW_DATARATE, 0)
create_mode_command(COM_SUBSYSTEM_ID, ComMode.RX_AND_TX_LOW_DATARATE, 0)
)
elif o == OpCode.TX_AND_RX_HIGH_RATE:
q.add_log_cmd(Info.TX_AND_RX_HIGH_DATARATE)
q.add_pus_tc(
create_mode_command(COM_SUBSYSTEM_ID, Submode.RX_AND_TX_HIGH_DATARATE, 0)
create_mode_command(COM_SUBSYSTEM_ID, ComMode.RX_AND_TX_HIGH_DATARATE, 0)
)
if o == OpCode.UPDATE_DEFAULT_DATARATE_LOW:
q.add_log_cmd(f"{prefix}: {Info.UPDATE_DEFAULT_DATARATE_LOW}")
@ -115,7 +110,7 @@ def build_com_subsystem_cmd(p: ServiceProviderParams):
elif o == OpCode.TX_AND_RX_CARRIER_WAVE:
q.add_log_cmd(Info.TX_AND_RX_CARRIER_WAVE)
q.add_pus_tc(
create_mode_command(COM_SUBSYSTEM_ID, Submode.RX_AND_TX_CARRIER_WAVE, 0)
create_mode_command(COM_SUBSYSTEM_ID, ComMode.RX_AND_TX_CARRIER_WAVE, 0)
)
elif o == OpCode.CHANGE_TRANSMITTER_TIMEOUT:
timeout = int(input("Specify timeout to set [ms]: "))

View File

@ -10,7 +10,7 @@ import logging
import math
from eive_tmtc.pus_tm.defs import PrintWrapper
from eive_tmtc.tmtc.com.defs import Mode as ComMode
from eive_tmtc.config.definitions import CustomServiceList
from tmtccmd.config.tmtc import (
tmtc_definitions_provider,
@ -97,14 +97,6 @@ class CommandId(enum.IntEnum):
DISABLE_DEBUG = 21
class Submode(enum.IntEnum):
RX_ONLY = 0
RX_AND_TX_DEFAULT_DATARATE = 1
RX_AND_TX_LOW_DATARATE = 2
RX_AND_TX_HIGH_DATARATE = 3
RX_AND_TX_CW = 4
class Datarate(enum.IntEnum):
LOW_RATE_MODULATION_BPSK = 0
HIGH_RATE_MODULATION_0QPSK = 1
@ -163,21 +155,21 @@ def pack_syrlinks_command(
q.add_log_cmd(f"{prefix}: {Info.ON}")
q.add_pus_tc(create_mode_command(obyt, Mode.ON, 0))
if op_code == OpCode.NORMAL_RX_ONLY:
normal_mode_cmd(q, Info.NORMAL_RX_ONLY, Submode.RX_ONLY)
normal_mode_cmd(q, Info.NORMAL_RX_ONLY, ComMode.RX_ONLY)
if op_code == OpCode.NORMAL_RX_AND_TX_LOW_DATARATE:
normal_mode_cmd(
q, Info.NORMAL_RX_AND_TX_LOW_DATARATE, Submode.RX_AND_TX_LOW_DATARATE
q, Info.NORMAL_RX_AND_TX_LOW_DATARATE, ComMode.RX_AND_TX_LOW_DATARATE
)
if op_code == OpCode.NORMAL_RX_AND_TX_DEF_DATARATE:
normal_mode_cmd(
q, Info.NORMAL_RX_AND_TX_DEF_DATARATE, Submode.RX_AND_TX_DEFAULT_DATARATE
q, Info.NORMAL_RX_AND_TX_DEF_DATARATE, ComMode.RX_AND_TX_DEF_DATARATE
)
if op_code == OpCode.NORMAL_RX_AND_TX_HIGH_DATARATE:
normal_mode_cmd(
q, Info.NORMAL_RX_AND_TX_HIGH_DATARATE, Submode.RX_AND_TX_HIGH_DATARATE
q, Info.NORMAL_RX_AND_TX_HIGH_DATARATE, ComMode.RX_AND_TX_HIGH_DATARATE
)
if op_code in OpCode.NORMAL_RX_AND_TX_CW:
normal_mode_cmd(q, Info.NORMAL_RX_AND_TX_CW, Submode.RX_AND_TX_CW)
normal_mode_cmd(q, Info.NORMAL_RX_AND_TX_CW, ComMode.RX_AND_TX_CARRIER_WAVE)
if op_code in OpCode.HK_RX_REGS:
q.add_log_cmd(f"{prefix}: {Info.HK_RX_REGS}")
sid = make_sid(obyt, SetId.RX_REGISTERS_DATASET)
@ -312,7 +304,11 @@ def handle_syrlinks_rx_registers_dataset(printer: FsfwTmTcPrinter, hk_data: byte
rx_agc = rx_agc_value & 0xFFF
rx_demod_eb = struct.unpack("!I", hk_data[13:17])[0] & 0xFFFFFF
rx_demod_n0 = struct.unpack("!I", hk_data[17:21])[0] & 0xFFFFFF
eb_to_n0 = 20 * math.log10(rx_demod_eb / rx_demod_n0) - 3
if rx_demod_n0 > 0:
eb_to_n0 = 20 * math.log10(rx_demod_eb / rx_demod_n0) - 3
else:
logging.getLogger(__name__).warning("RX Demod N0 is 0, can not calculate Eb to N0")
eb_to_n0 = 0
rx_data_rate_raw = hk_data[21]
rx_data_rate = -1
if rx_data_rate_raw == 0:

View File

@ -22,6 +22,7 @@ class ActionId(enum.IntEnum):
LIST_DIR_INTO_FILE = 0
ANNOUNCE_VERSION = 1
ANNOUNCE_CURRENT_IMAGE = 2
ANNOUNCE_BOOT_COUNTS = 3
SWITCH_REBOOT_FILE_HANDLING = 5
RESET_REBOOT_COUNTER = 6
SWITCH_IMG_LOCK = 7
@ -43,33 +44,35 @@ class SetId(enum.IntEnum):
class OpCode:
ANNOUNCE_VERSION = "announce_version"
ANNOUNCE_CURRENT_IMAGE = "announce_current_image"
REBOOT_XSC = ["0", "reboot_xsc"]
XSC_REBOOT_SELF = ["1", "reboot_self"]
XSC_REBOOT_0_0 = ["2", "reboot_00"]
XSC_REBOOT_0_1 = ["3", "reboot_01"]
XSC_REBOOT_1_0 = ["4", "reboot_10"]
XSC_REBOOT_1_1 = ["5", "reboot_11"]
REBOOT_FULL = ["6", "reboot_regular"]
GET_HK = ["7", "get_hk"]
ANNOUNCE_BOOT_COUNTS = "announce_boot_counts"
REBOOT_XSC = ["reboot_xsc"]
XSC_REBOOT_SELF = ["reboot_self"]
XSC_REBOOT_0_0 = ["reboot_00"]
XSC_REBOOT_0_1 = ["reboot_01"]
XSC_REBOOT_1_0 = ["reboot_10"]
XSC_REBOOT_1_1 = ["reboot_11"]
REBOOT_FULL = ["reboot_regular"]
GET_HK = ["get_hk"]
OBSW_UPDATE_FROM_SD_0 = ["obsw_update_sd0"]
OBSW_UPDATE_FROM_SD_1 = ["obsw_update_sd1"]
OBSW_UPDATE_FROM_TMP = ["obsw_update_tmp"]
SWITCH_TO_SD_0 = ["switch_to_sd_0"]
SWITCH_TO_SD_1 = ["switch_to_sd_1"]
SWITCH_TO_BOTH_SD_CARDS = ["switch_to_both_sd_cards"]
ENABLE_REBOOT_FILE_HANDLING = ["32", "rbh_off"]
DISABLE_REBOOT_FILE_HANDLING = ["33", "rbh_on"]
RESET_ALL_REBOOT_COUNTERS = ["34", "rbh_reset_a"]
RESET_REBOOT_COUNTER_00 = ["35", "rbh_reset_00"]
RESET_REBOOT_COUNTER_01 = ["36", "rbh_reset_01"]
RESET_REBOOT_COUNTER_10 = ["37", "rbh_reset_10"]
RESET_REBOOT_COUNTER_11 = ["38", "rbh_reset_11"]
SET_MAX_REBOOT_CNT = ["39", "rbh_max_cnt"]
ENABLE_REBOOT_FILE_HANDLING = ["rbh_off"]
DISABLE_REBOOT_FILE_HANDLING = ["rbh_on"]
RESET_ALL_REBOOT_COUNTERS = ["rbh_reset_a"]
RESET_REBOOT_COUNTER_00 = ["rbh_reset_00"]
RESET_REBOOT_COUNTER_01 = ["rbh_reset_01"]
RESET_REBOOT_COUNTER_10 = ["rbh_reset_10"]
RESET_REBOOT_COUNTER_11 = ["rbh_reset_11"]
SET_MAX_REBOOT_CNT = ["rbh_max_cnt"]
class Info:
ANNOUNCE_VERSION = "Announce version"
ANNOUNCE_CURRENT_IMAGE = "Announce current image"
ANNOUNCE_BOOT_COUNTS = "Announce boot counts"
REBOOT_XSC = "XSC reboot with prompt"
REBOOT_FULL = "Full regular reboot"
OBSW_UPDATE_FROM_SD_0 = "Update OBSW from SD Card 0"
@ -97,6 +100,7 @@ def add_core_controller_definitions(defs: TmtcDefinitionWrapper):
oce = OpCodeEntry()
oce.add(keys=OpCode.ANNOUNCE_VERSION, info=Info.ANNOUNCE_VERSION)
oce.add(keys=OpCode.ANNOUNCE_CURRENT_IMAGE, info=Info.ANNOUNCE_CURRENT_IMAGE)
oce.add(keys=OpCode.ANNOUNCE_BOOT_COUNTS, info=Info.ANNOUNCE_BOOT_COUNTS)
oce.add(keys=OpCode.REBOOT_XSC, info=Info.REBOOT_XSC)
oce.add(keys=OpCode.REBOOT_XSC, info=Info.REBOOT_XSC)
oce.add(keys=OpCode.REBOOT_FULL, info=Info.REBOOT_FULL)
@ -153,12 +157,17 @@ def pack_core_commands(q: DefaultPusQueueHelper, op_code: str):
if op_code == OpCode.ANNOUNCE_VERSION:
q.add_log_cmd(f"{Info.ANNOUNCE_VERSION}")
q.add_pus_tc(create_action_cmd(CORE_CONTROLLER_ID, ActionId.ANNOUNCE_VERSION))
if op_code == OpCode.ANNOUNCE_CURRENT_IMAGE:
elif op_code == OpCode.ANNOUNCE_CURRENT_IMAGE:
q.add_log_cmd(f"{Info.ANNOUNCE_CURRENT_IMAGE}")
q.add_pus_tc(
create_action_cmd(CORE_CONTROLLER_ID, ActionId.ANNOUNCE_CURRENT_IMAGE)
)
if op_code in OpCode.REBOOT_XSC:
elif op_code == OpCode.ANNOUNCE_BOOT_COUNTS:
q.add_log_cmd(f"{Info.ANNOUNCE_BOOT_COUNTS}")
q.add_pus_tc(
create_action_cmd(CORE_CONTROLLER_ID, ActionId.ANNOUNCE_BOOT_COUNTS)
)
elif op_code in OpCode.REBOOT_XSC:
reboot_self, chip_select, copy_select = determine_reboot_params()
add_xsc_reboot_cmd(
q=q,
@ -166,38 +175,38 @@ def pack_core_commands(q: DefaultPusQueueHelper, op_code: str):
chip=chip_select,
copy=copy_select,
)
if op_code in OpCode.REBOOT_FULL:
elif op_code in OpCode.REBOOT_FULL:
q.add_log_cmd(f"Core Command: {Info.REBOOT_FULL}")
q.add_pus_tc(
create_action_cmd(
object_id=CORE_CONTROLLER_ID, action_id=ActionId.FULL_REBOOT
)
)
if op_code in OpCode.XSC_REBOOT_SELF:
elif op_code in OpCode.XSC_REBOOT_SELF:
add_xsc_reboot_cmd(q=q, reboot_self=True)
if op_code in OpCode.XSC_REBOOT_0_0:
elif op_code in OpCode.XSC_REBOOT_0_0:
add_xsc_reboot_cmd(
q=q, reboot_self=False, chip=Chip.CHIP_0, copy=Copy.COPY_0_NOM
)
if op_code in OpCode.XSC_REBOOT_0_1:
elif op_code in OpCode.XSC_REBOOT_0_1:
add_xsc_reboot_cmd(
q=q,
reboot_self=False,
chip=Chip.CHIP_0,
copy=Copy.COPY_1_GOLD,
)
if op_code in OpCode.XSC_REBOOT_1_0:
elif op_code in OpCode.XSC_REBOOT_1_0:
add_xsc_reboot_cmd(
q=q, reboot_self=False, chip=Chip.CHIP_1, copy=Copy.COPY_0_NOM
)
if op_code in OpCode.XSC_REBOOT_1_1:
elif op_code in OpCode.XSC_REBOOT_1_1:
add_xsc_reboot_cmd(
q=q,
reboot_self=False,
chip=Chip.CHIP_1,
copy=Copy.COPY_1_GOLD,
)
if op_code in OpCode.DISABLE_REBOOT_FILE_HANDLING:
elif op_code in OpCode.DISABLE_REBOOT_FILE_HANDLING:
q.add_log_cmd("Disabling reboot file handling")
user_data = bytearray([0])
q.add_pus_tc(
@ -207,7 +216,7 @@ def pack_core_commands(q: DefaultPusQueueHelper, op_code: str):
user_data=user_data,
)
)
if op_code in OpCode.ENABLE_REBOOT_FILE_HANDLING:
elif op_code in OpCode.ENABLE_REBOOT_FILE_HANDLING:
q.add_log_cmd("Enabling reboot file handling")
user_data = bytearray([1])
q.add_pus_tc(
@ -217,7 +226,7 @@ def pack_core_commands(q: DefaultPusQueueHelper, op_code: str):
user_data=user_data,
)
)
if op_code in OpCode.RESET_ALL_REBOOT_COUNTERS:
elif op_code in OpCode.RESET_ALL_REBOOT_COUNTERS:
q.add_log_cmd("Resetting all reboot counters")
q.add_pus_tc(
create_action_cmd(
@ -225,38 +234,38 @@ def pack_core_commands(q: DefaultPusQueueHelper, op_code: str):
action_id=ActionId.RESET_REBOOT_COUNTER,
)
)
if op_code in OpCode.RESET_REBOOT_COUNTER_00:
elif op_code in OpCode.RESET_REBOOT_COUNTER_00:
reset_specific_boot_counter(q, 0, 0)
if op_code in OpCode.RESET_REBOOT_COUNTER_01:
elif op_code in OpCode.RESET_REBOOT_COUNTER_01:
reset_specific_boot_counter(q, 0, 1)
if op_code in OpCode.RESET_REBOOT_COUNTER_10:
elif op_code in OpCode.RESET_REBOOT_COUNTER_10:
reset_specific_boot_counter(q, 1, 0)
if op_code in OpCode.RESET_REBOOT_COUNTER_11:
elif op_code in OpCode.RESET_REBOOT_COUNTER_11:
reset_specific_boot_counter(q, 1, 1)
if op_code in OpCode.OBSW_UPDATE_FROM_SD_0:
elif op_code in OpCode.OBSW_UPDATE_FROM_SD_0:
q.add_log_cmd(Info.OBSW_UPDATE_FROM_SD_0)
q.add_pus_tc(pack_obsw_update_cmd(ActionId.UPDATE_OBSW_FROM_SD_0))
if op_code in OpCode.OBSW_UPDATE_FROM_SD_1:
elif op_code in OpCode.OBSW_UPDATE_FROM_SD_1:
q.add_log_cmd(Info.OBSW_UPDATE_FROM_SD_1)
q.add_pus_tc(pack_obsw_update_cmd(ActionId.UPDATE_OBSW_FROM_SD_1))
if op_code in OpCode.OBSW_UPDATE_FROM_TMP:
elif op_code in OpCode.OBSW_UPDATE_FROM_TMP:
q.add_log_cmd(Info.OBSW_UPDATE_FROM_TMP)
q.add_pus_tc(pack_obsw_update_cmd(ActionId.UPDATE_OBSW_FROM_TMP))
if op_code in OpCode.SWITCH_TO_SD_0:
elif op_code in OpCode.SWITCH_TO_SD_0:
q.add_log_cmd(Info.SWITCH_TO_SD_0)
q.add_pus_tc(
create_action_cmd(
object_id=CORE_CONTROLLER_ID, action_id=ActionId.SWITCH_TO_SD_0
)
)
if op_code in OpCode.SWITCH_TO_SD_1:
elif op_code in OpCode.SWITCH_TO_SD_1:
q.add_log_cmd(Info.SWITCH_TO_SD_1)
q.add_pus_tc(
create_action_cmd(
object_id=CORE_CONTROLLER_ID, action_id=ActionId.SWITCH_TO_SD_1
)
)
if op_code in OpCode.SWITCH_TO_BOTH_SD_CARDS:
elif op_code in OpCode.SWITCH_TO_BOTH_SD_CARDS:
while True:
active_sd_card = int(input("Please specify active SD cqrd [0/1]: "))
if active_sd_card not in [0, 1]:
@ -270,10 +279,14 @@ def pack_core_commands(q: DefaultPusQueueHelper, op_code: str):
user_data=bytes([active_sd_card]),
)
)
if op_code in OpCode.GET_HK:
elif op_code in OpCode.GET_HK:
q.add_log_cmd("Requesting housekeeping set")
sid = make_sid(object_id=CORE_CONTROLLER_ID, set_id=SetId.HK)
q.add_pus_tc(generate_one_hk_command(sid))
else:
_LOGGER.warning(
f"Unknown operation code {op_code} for core controller commands"
)
def reset_specific_boot_counter(q: DefaultPusQueueHelper, chip: int, copy: int):

View File

@ -1,4 +1,7 @@
import struct
from eive_tmtc.config.definitions import CustomServiceList
from eive_tmtc.tmtc.obj_prompt import prompt_object
from spacepackets.ecss import PusTelecommand
from tmtccmd.config.tmtc import (
tmtc_definitions_provider,
@ -6,33 +9,58 @@ from tmtccmd.config.tmtc import (
OpCodeEntry,
)
from tmtccmd.tc import service_provider
from tmtccmd.pus.s201_fsfw_health import Subservice
from tmtccmd.pus.s201_fsfw_health import Subservice, FsfwHealth
from tmtccmd.tc.decorator import ServiceProviderParams
class OpCode:
SET_HEALTH = "set_health"
ANNOUNCE_HEALTH_ALL = "read_health_all"
ANNOUNCE_HEALTH = "read_health"
class Info:
SET_HEALTH = "Set health of specific object"
ANNOUNCE_HEALTH_ALL = "Read all health states"
ANNOUNCE_HEALTH = "Read health state of one object"
def prompt_health() -> FsfwHealth:
for item in FsfwHealth:
print(f"{item}: {item.name}")
health_idx = int(input("Please enter health by index: "))
return FsfwHealth(health_idx)
@service_provider(CustomServiceList.HEALTH)
def pack_test_command(p: ServiceProviderParams):
o = p.op_code
q = p.queue_helper
if o == OpCode.ANNOUNCE_HEALTH:
raise NotImplementedError()
if o == OpCode.SET_HEALTH:
app_data = bytearray(prompt_object())
health = prompt_health()
app_data.append(health)
q.add_log_cmd(Info.SET_HEALTH)
q.add_pus_tc(
PusTelecommand(
service=201, subservice=Subservice.TC_SET_HEALTH, app_data=app_data
)
)
elif o == OpCode.ANNOUNCE_HEALTH:
app_data = bytearray(prompt_object())
q.add_log_cmd(Info.ANNOUNCE_HEALTH)
q.add_pus_tc(
PusTelecommand(
service=201, subservice=Subservice.TC_ANNOUNCE_HEALTH, app_data=app_data
)
)
elif o == OpCode.ANNOUNCE_HEALTH_ALL:
q.add_log_cmd(Info.ANNOUNCE_HEALTH_ALL)
q.add_pus_tc(
PusTelecommand(service=201, subservice=Subservice.TC_ANNOUNCE_HEALTH_ALL)
)
return
raise ValueError(f"unknown op code {o} for service {CustomServiceList.HEALTH}")
else:
raise ValueError(f"unknown op code {o} for service {CustomServiceList.HEALTH}")
@tmtc_definitions_provider
@ -40,4 +68,5 @@ def add_health_cmd_defs(defs: TmtcDefinitionWrapper):
oce = OpCodeEntry()
oce.add(OpCode.ANNOUNCE_HEALTH_ALL, Info.ANNOUNCE_HEALTH_ALL)
oce.add(OpCode.ANNOUNCE_HEALTH, Info.ANNOUNCE_HEALTH)
oce.add(OpCode.SET_HEALTH, Info.SET_HEALTH)
defs.add_service(CustomServiceList.HEALTH, info="Health Service", op_code_entry=oce)

View File

@ -0,0 +1,47 @@
from eive_tmtc.config.object_ids import (
ACS_SUBSYSTEM_ID,
ACS_CONTROLLER,
IMTQ_HANDLER_ID,
GYRO_0_ADIS_HANDLER_ID,
GYRO_1_L3G_HANDLER_ID,
ACS_BOARD_ASS_ID,
RW_ASSEMBLY,
SUS_BOARD_ASS_ID,
MGM_0_LIS3_HANDLER_ID,
MGM_1_RM3100_HANDLER_ID,
)
SUBSYSTEM_DICT = {
0: "acs",
1: "tcs",
2: "com",
}
ACS_OBJ_DICT = {
0: ("Subsystem", ACS_SUBSYSTEM_ID),
1: ("SUS Assembly", SUS_BOARD_ASS_ID),
2: ("ACS Board Assembly", ACS_BOARD_ASS_ID),
3: ("RW Assembly", RW_ASSEMBLY),
4: ("iMTQ MGT", IMTQ_HANDLER_ID),
5: ("GYR 0 ADIS", GYRO_0_ADIS_HANDLER_ID),
6: ("GYR 1 L3G", GYRO_1_L3G_HANDLER_ID),
7: ("MGM 0 LIS3", MGM_0_LIS3_HANDLER_ID),
8: ("MGM 1 RM3100", MGM_1_RM3100_HANDLER_ID),
}
def prompt_object() -> bytes:
for k, v in SUBSYSTEM_DICT.items():
print(f"{k}: {v}")
subsystem_key = int(input("Please specify target subsystem by key: "))
subsystem = SUBSYSTEM_DICT[subsystem_key]
if subsystem is None:
raise ValueError("invalid key")
if subsystem == "acs":
for k, v in ACS_OBJ_DICT.items():
print(f"{k}: {v[0]}")
obj_key = int(input("Please specify target object by key: "))
acs_obj = ACS_OBJ_DICT[obj_key]
if acs_obj is None:
raise ValueError("invalid key")
return acs_obj[1]

View File

@ -66,6 +66,10 @@ class CommandId(enum.IntEnum):
TC_MODE_IDLE = 18
SET_UART_TX_TRISTATE = 20
RELEASE_UART_TX = 21
TC_CAM_TAKE_PIC = 22
TC_SIMPLEX_SEND_FILE = 23
TC_DOWNLINK_DATA_MODULATE = 24
TC_MODE_SNAPSHOT = 25
class OpCode:
@ -78,6 +82,10 @@ class OpCode:
REPLAY_WRITE_SEQ = ["replay_write"]
DOWNLINK_PWR_ON = ["downlink_pwr_on"]
REPLAY_START = ["replay_start"]
CAM_TAKE_PIC = ["cam_take_pic"]
SIMPLEX_SEND_FILE = ["simplex_send_file"]
DOWNLINK_DATA_MODULATE = ["downlink_data_modulate"]
MODE_SNAPSHOT = ["mode_snapshot"]
class Info:
@ -90,6 +98,10 @@ class Info:
REPLAY_WRITE_SEQ = "Replay write sequence"
DOWNLINK_PWR_ON = "Downlink Power On"
REPLAY_START = "Replay Start"
CAM_TAKE_PIC = "Cam Take Picture"
SIMPLEX_SEND_FILE = "Simplex Send File"
DOWNLINK_DATA_MODULATE = "Downlink data modulate"
MODE_SNAPSHOT = "Mode Snapshot"
class MemAddresses(enum.IntEnum):
@ -123,6 +135,10 @@ def add_ploc_mpsoc_cmds(defs: TmtcDefinitionWrapper):
oce.add("16", "Ploc MPSoC: Tc cam command send")
oce.add("17", "Ploc MPSoC: Set UART TX tristate")
oce.add("18", "Ploc MPSoC: Relesase UART TX")
oce.add(OpCode.CAM_TAKE_PIC, Info.CAM_TAKE_PIC)
oce.add(OpCode.SIMPLEX_SEND_FILE, Info.SIMPLEX_SEND_FILE)
oce.add(OpCode.DOWNLINK_DATA_MODULATE, Info.DOWNLINK_DATA_MODULATE)
oce.add(OpCode.MODE_SNAPSHOT, Info.MODE_SNAPSHOT)
defs.add_service(CustomServiceList.PLOC_MPSOC.value, "Ploc MPSoC", oce)
@ -231,6 +247,22 @@ def pack_ploc_mpsoc_commands(p: ServiceProviderParams):
q.add_log_cmd("PLOC MPSoC: Release UART TX")
data = object_id.as_bytes + struct.pack("!I", CommandId.RELEASE_UART_TX)
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data))
if op_code in OpCode.CAM_TAKE_PIC:
q.add_log_cmd("PLOC MPSoC: Cam take picture")
data = prepare_cam_take_pic_cmd(object_id.as_bytes)
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data))
if op_code in OpCode.SIMPLEX_SEND_FILE:
q.add_log_cmd("PLOC MPSoC: Simplex send file")
data = prepare_simplex_send_file_cmd(object_id.as_bytes)
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data))
if op_code in OpCode.DOWNLINK_DATA_MODULATE:
q.add_log_cmd("PLOC MPSoC: Downlink data modulate")
data = prepare_downlink_data_modulate_cmd(object_id.as_bytes)
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data))
if op_code in OpCode.MODE_SNAPSHOT:
q.add_log_cmd("PLOC MPSoC: Mode snapshot")
data = object_id.as_bytes + struct.pack("!I", CommandId.TC_MODE_SNAPSHOT)
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=data))
def generate_write_mem_command(
@ -267,13 +299,13 @@ def prepare_mem_read_command(object_id: bytes) -> bytearray:
def prepare_flash_write_cmd(object_id: bytes) -> bytearray:
obcFile = get_obc_file()
mpsocFile = get_mpsoc_file()
obc_file = get_obc_file()
mpsoc_file = get_mpsoc_file()
command = (
object_id
+ struct.pack("!I", CommandId.FLASH_WRITE)
+ bytearray(obcFile, "utf-8")
+ bytearray(mpsocFile, "utf-8")
+ bytearray(obc_file, "utf-8")
+ bytearray(mpsoc_file, "utf-8")
)
return bytearray(command)
@ -323,6 +355,69 @@ def prepare_replay_write_sequence_cmd(object_id: bytes) -> bytearray:
return bytearray(command)
def prepare_cam_take_pic_cmd(object_id: bytes) -> bytearray:
selection = input("Use default parameter? (Y/N): ")
if selection is "Y" or selection is "y":
filename = "0:/test"
encoder_setting_y = 7
quantization_y = 0
encoder_setting_cb = 7
quantization_cb = 0
encoder_setting_cr = 7
quantization_cr = 0
bypass_compressor = 0
else:
filename = input("Specify filename: ")
encoder_setting_y = int(input("Specify encoderSetting_Y: "))
quantization_y = int(input("Specify quantization_Y: "))
encoder_setting_cb = int(input("Specify encoderSetting_Cb: "))
quantization_cb = int(input("Specify quantization_Cb: "))
encoder_setting_cr = int(input("Specify encoderSetting_Cr: "))
quantization_cr = int(input("Specify quantization_Cr: "))
bypass_compressor = int(input("Specify bypassCompressor: "))
command = (
object_id
+ struct.pack("!I", CommandId.TC_CAM_TAKE_PIC)
+ bytearray(filename, "utf-8")
+ bytes([0])
+ struct.pack("!B", encoder_setting_y)
+ struct.pack("!Q", quantization_y)
+ struct.pack("!B", encoder_setting_cb)
+ struct.pack("!Q", quantization_cb)
+ struct.pack("!B", encoder_setting_cr)
+ struct.pack("!Q", quantization_cr)
+ struct.pack("!B", bypass_compressor)
)
return bytearray(command)
def prepare_simplex_send_file_cmd(object_id: bytes) -> bytearray:
filename = input("Specify filename: ")
command = (
object_id
+ struct.pack("!I", CommandId.TC_SIMPLEX_SEND_FILE)
+ bytearray(filename, "utf-8")
+ bytes([0])
)
return bytearray(command)
def prepare_downlink_data_modulate_cmd(object_id: bytes) -> bytearray:
format = int(input("Specify format: "))
src_mem_addr = int(input("Specify srcMemAddr: "))
src_mem_len = int(input("Specify srcMemLen: "))
dest_mem_addr = int(input("Specify destMemAddr: "))
command = (
object_id
+ struct.pack("!I", CommandId.TC_DOWNLINK_DATA_MODULATE)
+ struct.pack("!B", format)
+ struct.pack("!I", src_mem_addr)
+ struct.pack("!H", src_mem_len)
+ struct.pack("!I", dest_mem_addr)
)
return bytearray(command)
def get_obc_file() -> str:
_LOGGER.info("Specify OBC file ")
input_helper = InputHelper(flash_write_file_dict)

View File

@ -83,7 +83,7 @@ FACTORY_RESET_OPS = {
}
class SupvActionId:
class SupvActionId(enum.IntEnum):
HK_REPORT = 1
START_MPSOC = 3
SHUTWOWN_MPSOC = 4

View File

@ -5,6 +5,7 @@
@author J. Meier
@date 01.07.2021
"""
import enum
import struct
from eive_tmtc.config.definitions import CustomServiceList
@ -20,7 +21,7 @@ from tmtccmd.util import ObjectIdU32
from tmtccmd.util.tmtc_printer import FsfwTmTcPrinter
class SetId:
class SetId(enum.IntEnum):
HK = 3

View File

@ -255,7 +255,7 @@ def mgt_off_cmd(q: DefaultPusQueueHelper):
def create_mgt_off_cmd() -> PusTelecommand:
return create_generic_on_cmd(PDU_1_HANDLER_ID, Pdu1ChIndex.MGT)
return create_generic_off_cmd(PDU_1_HANDLER_ID, Pdu1ChIndex.MGT)
def sun_sensor_nominal_on_cmd(q: DefaultPusQueueHelper):

View File

@ -284,7 +284,7 @@ def heater_off_cmd(q: DefaultPusQueueHelper):
def create_heater_off_cmd() -> PusTelecommand:
return create_generic_on_cmd(PDU_2_HANDLER_ID, Pdu2ChIndex.HEATER)
return create_generic_off_cmd(PDU_2_HANDLER_ID, Pdu2ChIndex.HEATER)
def sus_red_on_cmd(q: DefaultPusQueueHelper):
@ -372,4 +372,4 @@ def payload_camera_off_cmd(q: DefaultPusQueueHelper):
def create_payload_camera_off_cmd() -> PusTelecommand:
return create_generic_on_cmd(PDU_2_HANDLER_ID, Pdu2ChIndex.PL_CAM)
return create_generic_off_cmd(PDU_2_HANDLER_ID, Pdu2ChIndex.PL_CAM)

View File

@ -49,6 +49,30 @@ class PcduSetIds(enum.IntEnum):
SWITCHER_SET = 0
class PcduSwitches(enum.IntEnum):
PDU1_CH0_TCS_BOARD_3V3 = 0
PDU1_CH1_SYRLINKS_12V = 1
PDU1_CH2_STAR_TRACKER_5V = 2
PDU1_CH3_MGT_5V = 3
PDU1_CH4_SUS_NOMINAL_3V3 = 4
PDU1_CH5_SOLAR_CELL_EXP_5V = 5
PDU1_CH6_PLOC_12V = 6
PDU1_CH7_ACS_A_SIDE_3V3 = 7
PDU1_CH8_UNOCCUPIED = 8
PDU2_CH0_Q7S = 9
PDU2_CH1_PL_PCDU_BATT_0_14V8 = 10
PDU2_CH2_RW_5V = 11
PDU2_CH3_TCS_BOARD_HEATER_IN_8V = 12
PDU2_CH4_SUS_REDUNDANT_3V3 = 13
PDU2_CH5_DEPLOYMENT_MECHANISM_8V = 14
PDU2_CH6_PL_PCDU_BATT_1_14V8 = 15
PDU2_CH7_ACS_BOARD_SIDE_B_3V3 = 16
PDU2_CH8_PAYLOAD_CAMERA = 17
P60_DOCK_5V_STACK = 18
def pack_power_commands(q: DefaultPusQueueHelper, op_code: str):
pdu1_switch_cmds(q, op_code)
pdu2_switch_cmds(q, op_code)

View File

@ -21,26 +21,26 @@ from spacepackets.ecss.tc import PusTelecommand
class Heater(enum.IntEnum):
HEATER_0_OBC_BRD = 0
HEATER_1_PLOC_PROC_BRD = 1
HEATER_0_PLOC_PROC_BRD = 0
HEATER_1_PCDU_BRD = 1
HEATER_2_ACS_BRD = 2
HEATER_3_PCDU_PDU = 3
HEATER_3_OBC_BRD = 3
HEATER_4_CAMERA = 4
HEATER_5_STR = 5
HEATER_6_DRO = 6
HEATER_7_HPA = 7
HEATER_7_SYRLINKS = 7
NUMBER_OF_SWITCHES = 8
HEATER_LOCATION = [
"OBC Board",
"PLOC Processing Board",
"ACS Board",
"PCDU PDU",
"ACS Board",
"OBC Board",
"Camera",
"Startracker",
"DRO",
"HPA",
"Syrlinks",
]
@ -135,25 +135,25 @@ def pack_heater_cmds(object_id: bytearray, op_code: str, q: DefaultPusQueueHelpe
def heater_idx_to_obj(heater: int) -> ObjectIdU32:
from eive_tmtc.config.object_ids import (
HEATER_0_OBC_BRD,
HEATER_1_PLOC_PROC_BRD,
HEATER_0_PLOC_PROC_BRD,
HEATER_1_PCDU_BRD,
HEATER_2_ACS_BRD,
HEATER_3_PCDU_BRD,
HEATER_3_OBC_BRD,
HEATER_4_CAMERA,
HEATER_5_STR,
HEATER_6_DRO,
HEATER_7_HPA,
HEATER_7_SYRLINKS,
)
obj_id_array = [
HEATER_0_OBC_BRD,
HEATER_1_PLOC_PROC_BRD,
HEATER_0_PLOC_PROC_BRD,
HEATER_1_PCDU_BRD,
HEATER_2_ACS_BRD,
HEATER_3_PCDU_BRD,
HEATER_3_OBC_BRD,
HEATER_4_CAMERA,
HEATER_5_STR,
HEATER_6_DRO,
HEATER_7_HPA,
HEATER_7_SYRLINKS,
]
obj_dict = get_object_ids()
obj_id_obj = obj_dict.get(obj_id_array[heater])
@ -171,7 +171,7 @@ def prompt_heater() -> int:
print("HEATER 4 | CAMERA")
print("HEATER 5 | STR")
print("HEATER 6 | DRO")
print("HEATER 7 | HPA")
print("HEATER 7 | Syrlinks")
heater_number = input("Type number of heater to switch [0-7]: ")
if not heater_number.isdigit():
print("Heater number not a digit")

View File

@ -1,7 +1,9 @@
import enum
from typing import Optional
import struct
from eive_tmtc.config.definitions import CustomServiceList
from eive_tmtc.pus_tm.defs import PrintWrapper
from spacepackets.ecss import PusTelecommand
from tmtccmd.config import TmtcDefinitionWrapper, OpCodeEntry
from tmtccmd.config.tmtc import tmtc_definitions_provider
@ -11,6 +13,7 @@ from tmtccmd.util import ObjectIdU32
from tmtccmd.tc.pus_200_fsfw_mode import Mode, pack_mode_data, Subservice
import eive_tmtc.config.object_ids as oids
from eive_tmtc.config.object_ids import get_object_ids
from tmtccmd.util.tmtc_printer import FsfwTmTcPrinter
RTD_IDS = [
oids.RTD_0_PLOC_HSPD,
@ -31,11 +34,53 @@ RTD_IDS = [
oids.RTD_15_IMTQ,
]
RTD_NAMES = {
oids.RTD_0_PLOC_HSPD: "RTD 0 PLOC Heatspreader",
oids.RTD_1_PLOC_MISSIONBRD: "RTD 1 PLOC Missionboard",
oids.RTD_2_4K_CAM: "RTD 2 4K Camera",
oids.RTD_3_DAC_HSPD: "RTD 3 DAC HSPC",
oids.RTD_4_STR: "RTD 4 Startracker",
oids.RTD_5_RW1_MX_MY: "RTD 5 RW1 MX MY",
oids.RTD_6_DRO: "RTD 6 DRO",
oids.RTD_7_SCEX: "RTD 7 SCEX",
oids.RTD_8_X8: "RTD 8 X8",
oids.RTD_9_HPA: "RTD 9 HPA",
oids.RTD_10_PL_TX: "RTD 10 PL TX",
oids.RTD_11_MPA: "RTD 11 MPA",
oids.RTD_12_ACU: "RTD 12 ACU",
oids.RTD_13_PLPCDU_HSPD: "RTD 13 PL PCDU Heatspreader",
oids.RTD_14_TCS_BRD: "RTD 14 TCS Board",
oids.RTD_15_IMTQ: "RTD 15 iMTQ",
}
class CommandId:
WRITE_CONFIG = 6
class RtdId(enum.IntEnum):
RTD_0_PLOC_HSPC = 0
RTD_1_PLOC_MISSIONBRD = 1
RTD_2_4K_CAM = 2
RTD_3_DAC_HSPD = 3
RTD_4_STR = 4
RTD_5_RW1_MX_MY = 5
RTD_6_DRO = 6
RTD_7_SCEX = 7
RTD_8_X8 = 8
RTD_9_HPA = 9
RTD_10_PL_TX = 10
RTD_11_MPA = 11
RTD_12_ACU = 12
RTD_13_PLPCDU_HSPD = 13
RTD_14_TCS_BRD = 14
RTD_15_IMTQ = 15
class SetId(enum.IntEnum):
TEMPERATURE = 1
class OpCode:
ON = ["0", "on"]
OFF = ["1", "off"]
@ -102,6 +147,24 @@ def pack_rtd_commands(
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command))
def handle_rtd_hk(object_id: bytes, hk_data: bytes, printer: FsfwTmTcPrinter):
pw = PrintWrapper(printer)
rtd_name = RTD_NAMES.get(object_id)
if rtd_name is None:
rtd_name = "unknown RTD device"
pw.dlog(f"Received RTD HK for RTD {rtd_name} with object ID {object_id}")
fmt_str = "!ffBB"
fmt_len = struct.calcsize(fmt_str)
(rtd_val, temp_celcius, last_err_byte, error_byte) = struct.unpack(
fmt_str, hk_data[0 : 0 + fmt_len]
)
pw.dlog(f"Temperature Celcius: {temp_celcius}")
pw.dlog(f"RTD Value: {rtd_val}")
pw.dlog(f"Error Byte: {error_byte}")
pw.dlog(f"Last Error Byte: {last_err_byte}")
pw.printer.print_validity_buffer(hk_data[fmt_len:], 4)
def prompt_rtd_idx():
while True:
rtd_idx = input("Please specify RTD index [0-15]: ")

View File

@ -39,8 +39,8 @@ class Tmp1075ActionId(enum.IntEnum):
START_ADC_CONV = 2
class SetId:
TMEPERATURE = 1
class SetId(enum.IntEnum):
TEMPERATURE = 1
def pack_tmp1075_test_into(
@ -64,7 +64,7 @@ def pack_tmp1075_test_into(
q.add_pus_tc(PusTelecommand(service=200, subservice=1, app_data=mode_data))
if op_code == OpCode.HK:
q.add_log_cmd("TMP1075: Request One-Shot HK")
q.add_pus_tc(create_request_one_hk_command(make_sid(obyt, SetId.TMEPERATURE)))
q.add_pus_tc(create_request_one_hk_command(make_sid(obyt, SetId.TEMPERATURE)))
return q