Compare commits

...
191 Commits
Author SHA1 Message Date
meierj 048a0ea447 checked out tmtcgui from mohr/thermal 2022-05-30 13:31:11 +02:00
meierj 1bdfc40cdd tmtccli listner mode 2022-05-30 12:59:31 +02:00
meierj b20921788e bug fixes 2022-05-30 11:58:57 +02:00
meierj e4e0b882e5 Merge pull request 'GPS bug fix' (#96) from kranz/master into develop
Reviewed-on: #96
2022-05-30 11:24:18 +02:00
mkranz ec4b681b2e more 2022-05-30 09:25:57 +02:00
mkranz 363c93a7d3 gps bug fix 2022-05-30 09:18:07 +02:00
muellerr 5daf76d081 Merge pull request 'GPS HK Parsing' (#86) from mueller/gps-hk-parsing into develop
Reviewed-on: #86
2022-05-28 12:52:00 +02:00
muellerr 5bde637dcc Merge branch 'mueller/gps-hk-parsing' of https://egit.irs.uni-stuttgart.de/eive/eive-tmtc into mueller/gps-hk-parsing 2022-05-28 12:51:20 +02:00
muellerr acd53c1337 resolve other merge conflict 2022-05-28 12:51:07 +02:00
muellerr 59d4096327 Merge branch 'develop' into mueller/gps-hk-parsing 2022-05-28 12:49:46 +02:00
muellerr 5df26aac0b Merge remote-tracking branch 'origin/develop' into mueller/gps-hk-parsing 2022-05-28 12:49:34 +02:00
muellerr b39f2851ca Merge pull request 'rw and mgt proc changes to adjust timing and sequence' (#95) from kranz/master into develop
Reviewed-on: #95
2022-05-28 12:48:40 +02:00
mkranz 27b41c0a48 reduced code duplication 2022-05-27 19:32:02 +02:00
mkranz 79e0838473 rw and mgt proc changes to adjust timing and sequence 2022-05-27 18:54:48 +02:00
meierj 5662c78f7a Merge pull request 'added PL PCDU HK parsing' (#87) from mueller/plpcdu-hk-parsing into develop
Reviewed-on: #87
2022-05-27 16:28:50 +02:00
meierj ddc1becc66 Merge pull request 'TV Tests' (#94) from mueller/tv-tests into develop
Reviewed-on: #94
2022-05-27 16:26:07 +02:00
muellerr dbe3110a96 rename run config 2022-05-27 15:30:32 +02:00
muellerr 04bbc45383 new run config for TV tests 2022-05-27 15:29:39 +02:00
muellerr 0795e7c279 Merge remote-tracking branch 'origin/develop' into mueller/gps-hk-parsing 2022-05-27 14:32:58 +02:00
mkranz aa733ed5ed Merge pull request 'Procedure updates' (#93) from mueller/proc-updates into develop
Reviewed-on: #93
2022-05-27 14:20:19 +02:00
muellerr 44adf6cf1e small fix 2022-05-27 14:16:47 +02:00
muellerr 81501b4ae6 Merge branch 'kranz/master' of https://egit.irs.uni-stuttgart.de/eive/eive-tmtc into kranz/master 2022-05-27 11:54:05 +02:00
muellerr 851593a7bf some improvements and updates 2022-05-27 11:53:57 +02:00
mkranz d85501f43e Merge remote-tracking branch 'origin/develop' into kranz/master 2022-05-27 11:06:20 +02:00
mkranz f4038f9f70 Merge branch 'kranz/master' of https://egit.irs.uni-stuttgart.de/eive/eive-tmtc into kranz/master 2022-05-27 11:06:03 +02:00
muellerr f7d843131f new cfg class for procedures 2022-05-27 10:50:44 +02:00
muellerr 04fca35012 Merge remote-tracking branch 'origin/develop' into mueller/gps-hk-parsing 2022-05-27 10:19:29 +02:00
muellerr da544ccb13 Merge remote-tracking branch 'origin/develop' into mueller/plpcdu-hk-parsing 2022-05-27 10:18:35 +02:00
meierj 8b644ece5e Merge pull request 'SUS HK Parsing' (#92) from mueller/sus-hk-parsing into develop
Reviewed-on: #92
2022-05-27 10:11:40 +02:00
muellerr 3e087dc803 complete sus hk parsing 2022-05-27 09:54:06 +02:00
muellerr da18ebab77 added sus hk parsing 2022-05-25 18:15:22 +02:00
muellerr ef349856d6 re-generate csvs 2022-05-25 18:14:52 +02:00
muellerr 49bb59df7f Merge branch 'develop' into mueller/plpcdu-hk-parsing 2022-05-25 16:26:09 +02:00
muellerr e70480bc17 Merge remote-tracking branch 'origin/develop' into mueller/gps-hk-parsing 2022-05-25 16:25:54 +02:00
muellerr a257f2b707 Merge pull request 'Continue procedures' (#91) from kranz/master into develop
Reviewed-on: #91
2022-05-25 16:25:35 +02:00
muellerr 74f639ab55 Merge branch 'develop' into kranz/master 2022-05-25 16:24:05 +02:00
muellerr be71cb792e some error checking for RWs 2022-05-25 15:31:45 +02:00
muellerr 01e91bffcd kill all the duplication 2022-05-25 15:21:50 +02:00
muellerr 708edeb458 Merge branch 'develop' into mueller/plpcdu-hk-parsing 2022-05-25 15:02:22 +02:00
muellerr c3c65d325e Merge remote-tracking branch 'origin/develop' into mueller/gps-hk-parsing 2022-05-25 15:02:06 +02:00
muellerr 42aeb874c0 bump tmtccmd 2022-05-25 15:01:40 +02:00
muellerr 3f813d9381 Merge remote-tracking branch 'origin/develop' into mueller/gps-hk-parsing 2022-05-25 15:01:26 +02:00
muellerr 8a00855798 Merge pull request 'TV test procedures' (#89) from kranz/master into develop
Reviewed-on: #89
2022-05-25 15:01:09 +02:00
muellerr 6db60f9238 Merge remote-tracking branch 'origin/develop' into kranz/master 2022-05-25 14:59:52 +02:00
muellerr ec13c20325 afmt 2022-05-25 14:59:30 +02:00
muellerr 1790ac6329 bump required tmtccmd version 2022-05-25 14:59:06 +02:00
muellerr 0131499a6a bump tmtccmd 2022-05-25 14:31:55 +02:00
mkranz 7ec3c51cce updated gnss 2022-05-25 13:49:51 +02:00
mkranz 44b673dd26 added cmd definitions 2022-05-25 13:32:18 +02:00
muellerr ef36e65223 proc update 2022-05-25 12:09:04 +02:00
muellerr a439a51842 bump tmtccmd and proc update 2022-05-25 12:08:37 +02:00
mkranz b0ab9cd79a Merge branch 'kranz/master' of https://egit.irs.uni-stuttgart.de/eive/eive-tmtc into kranz/master 2022-05-25 12:07:12 +02:00
mkranz 1841dbd35d added set id for gnss hk 2022-05-25 12:06:17 +02:00
muellerr 34e081f3c2 Merge branch 'kranz/master' of https://egit.irs.uni-stuttgart.de/eive/eive-tmtc into kranz/master 2022-05-25 11:54:02 +02:00
muellerr 5b25f910ae RW update 2022-05-25 11:53:34 +02:00
mkranz 55a6e98850 rw proc 2 to negative values and mgt wait duration changed 2022-05-25 11:35:11 +02:00
muellerr 72e258308e made some code more brief 2022-05-25 11:16:24 +02:00
muellerr a107506b88 apply black and add sus set ID 2022-05-25 11:10:57 +02:00
mkranz ebf44e8b0e more missing flags and finalized rw proc 2022-05-25 10:53:39 +02:00
muellerr 58b021c37f remove include 2022-05-25 10:39:17 +02:00
muellerr 36695bbbb0 re-run black 2022-05-25 10:37:38 +02:00
muellerr 6c7c8731ee Merge remote-tracking branch 'origin/develop' into mueller/gps-hk-parsing 2022-05-25 10:37:30 +02:00
muellerr 7a92bde177 Merge remote-tracking branch 'origin/develop' into mueller/plpcdu-hk-parsing 2022-05-25 10:35:16 +02:00
mkranz aa01fe4401 more missing flags 2022-05-25 10:14:57 +02:00
mkranz 81b3db694a added missing flags 2022-05-25 10:13:31 +02:00
mkranz b4604951b3 added preliminary rw proc 2022-05-25 10:03:47 +02:00
muellerr 6a209e1a0b Merge pull request 'IMTQ HK Parsing' (#90) from meier/imtq into develop
Reviewed-on: #90
2022-05-25 09:55:32 +02:00
muellerr 04ad0ec7d2 Merge branch 'meier/imtq' of https://egit.irs.uni-stuttgart.de/eive/eive-tmtc into meier/imtq 2022-05-25 09:55:03 +02:00
muellerr f42d9689e7 Merge remote-tracking branch 'origin/develop' into meier/imtq 2022-05-25 09:54:57 +02:00
muellerr b4ee30e41b Merge branch 'develop' into meier/imtq 2022-05-25 09:52:16 +02:00
mkranz c8ad4ca67a Merge remote-tracking branch 'origin/develop' into kranz/master 2022-05-25 08:30:50 +02:00
meierj 445a88741f Merge pull request 'PL PCDU HPA On Procedure' (#88) from mueller/pl-pcdu-proc into develop
Reviewed-on: #88
2022-05-24 19:04:35 +02:00
Jakob Meier 36fde832c8 reset tmtccli run config 2022-05-24 19:03:02 +02:00
Jakob Meier 86db4f5103 fixed conflicts 2022-05-24 19:01:43 +02:00
Jakob Meier f5367ac381 imtq hk parsing 2022-05-24 18:57:52 +02:00
mkranz e88bf7e937 added str proc and str temperature set_id 2022-05-24 18:56:15 +02:00
mkranz 1c3d67aa15 updated mgt proc 2022-05-24 18:34:25 +02:00
mkranz 58a5c1850e added sus procedure 2022-05-24 18:13:17 +02:00
muellerr f7e7f731d5 Merge remote-tracking branch 'origin/develop' into mueller/plpcdu-hk-parsing 2022-05-24 17:43:40 +02:00
muellerr f12913d802 Merge branch 'develop' into mueller/pl-pcdu-proc 2022-05-24 17:41:56 +02:00
muellerr f75a1a13c9 added sus IDs 2022-05-24 17:36:07 +02:00
muellerr aa238dbabb Merge remote-tracking branch 'origin/develop' into mueller/pl-pcdu-proc 2022-05-24 17:27:56 +02:00
muellerr fbc755deda Merge pull request 'TV test procedures' (#83) from kranz/master into develop
Reviewed-on: #83
2022-05-24 17:24:39 +02:00
muellerr 9c5d16fb7c apply black 2022-05-24 17:24:09 +02:00
muellerr 83115d43af Merge remote-tracking branch 'origin/develop' into kranz/master 2022-05-24 17:23:50 +02:00
mkranz c37eb77da3 minor changes 2022-05-24 17:08:20 +02:00
muellerr e6eee0d518 some reordering 2022-05-24 17:07:13 +02:00
muellerr 96c6feb746 cleaned up a bit 2022-05-24 17:04:03 +02:00
mkranz 66c3942afb function "listen_to_hk_for_x_seconds" might be deleted 2022-05-24 17:03:32 +02:00
muellerr 0c9547eb3a pl pcdu procedure 2022-05-24 17:01:35 +02:00
mkranz 931cbe26e6 changes to imtq (added dipole command packing as PUS) and proc (added MGT proc) 2022-05-24 16:59:05 +02:00
mkranz 095cf822ee cleaned new addition 2022-05-24 15:26:08 +02:00
muellerr 1e44d81c47 Merge remote-tracking branch 'origin/develop' into mueller/gps-hk-parsing 2022-05-24 15:08:36 +02:00
muellerr 1c0a8534f9 Merge remote-tracking branch 'origin/develop' into mueller/plpcdu-hk-parsing 2022-05-24 15:08:18 +02:00
muellerr 4b902ce01b Merge branch 'develop' of https://egit.irs.uni-stuttgart.de/eive/eive-tmtc into develop 2022-05-24 15:06:34 +02:00
muellerr ccafa89a92 bump tmtccmd dependency 2022-05-24 15:06:26 +02:00
meierj ec16af0724 Merge pull request 'Regular reboot command' (#85) from mueller/reboot-cmd into develop
Reviewed-on: #85
2022-05-24 15:00:58 +02:00
mkranz 4b762328c5 changed to new procedure 2022-05-24 14:58:13 +02:00
muellerr 3d939c42b6 update changelog 2022-05-24 02:18:37 +02:00
muellerr 4d18ececa3 added PL PCDU HK parsing 2022-05-24 02:16:54 +02:00
muellerr b7a6291560 update gps hk parsing 2022-05-24 01:49:57 +02:00
muellerr 9fc90ba487 update gps hk parsing 2022-05-24 01:34:33 +02:00
muellerr 9edc21c674 Merge branch 'develop' into kranz/master 2022-05-24 01:16:37 +02:00
muellerr 41f1f4c99a changelog 2022-05-24 01:13:43 +02:00
muellerr 575932f646 new reboot command 2022-05-24 01:13:21 +02:00
muellerr 51bbeaa693 transform into static method 2022-05-23 22:24:10 +02:00
muellerr f30913b24b Merge pull request 'ACU HK Parsing' (#80) from mueller/acu-hk into develop
Reviewed-on: #80
2022-05-23 18:59:56 +02:00
muellerr 7f03dcb3a6 bugfix for acu hk parsing 2022-05-23 18:59:19 +02:00
muellerr 3586b541c1 Merge remote-tracking branch 'origin/develop' into mueller/acu-hk 2022-05-23 18:34:44 +02:00
muellerr e7cb7ca096 run afmt 2022-05-23 18:34:28 +02:00
muellerr dd7a19d134 Merge branch 'kranz/master' of https://egit.irs.uni-stuttgart.de/eive/eive-tmtc into kranz/master 2022-05-23 18:33:41 +02:00
muellerr c9f5a5652e run afmt 2022-05-23 18:33:35 +02:00
muellerr 45bee6429e Merge branch 'develop' into kranz/master 2022-05-23 18:33:13 +02:00
muellerr 2698756b29 update changelog 2022-05-23 18:32:59 +02:00
muellerr d36799448c Merge remote-tracking branch 'origin/develop' into mueller/acu-hk 2022-05-23 18:32:32 +02:00
muellerr ba69be6296 Merge pull request 'add rtd cmds' (#84) from mueller/rtd-cmds into develop
Reviewed-on: #84
2022-05-23 18:31:39 +02:00
muellerr 427efab44e Merge branch 'develop' into mueller/rtd-cmds 2022-05-23 18:30:29 +02:00
muellerr 4aa89e42ee Merge pull request 'Rad Sensor HK parsing' (#81) from mueller/rad-sensor into develop
Reviewed-on: #81
2022-05-23 18:30:17 +02:00
muellerr ea1865bd45 update changelog 2022-05-23 18:29:50 +02:00
muellerr 4de3e7d107 rad sensor reading works 2022-05-23 18:25:25 +02:00
muellerr 4251b126b7 Merge remote-tracking branch 'origin/develop' into mueller/rad-sensor 2022-05-23 18:02:03 +02:00
muellerr fe36485e85 Merge remote-tracking branch 'origin/develop' into mueller/acu-hk 2022-05-23 18:01:25 +02:00
muellerr 9332fb8690 Merge branch 'develop' into mueller/rtd-cmds 2022-05-23 18:00:10 +02:00
muellerr 7186636d9c Merge pull request 'Supervisor command' (#82) from meier/ploc into develop
Reviewed-on: #82
2022-05-23 17:54:50 +02:00
muellerr b54ffcedff Merge branch 'develop' into meier/ploc 2022-05-23 17:54:19 +02:00
muellerr 7e36b387fe add rtd cmds 2022-05-23 17:50:08 +02:00
Jakob Meier 15e0861c4d run generator script 2022-05-23 17:03:45 +02:00
mkranz 623e1cc37e Merge remote-tracking branch 'origin/develop' into kranz/master 2022-05-23 16:44:11 +02:00
mkranz 181e6d62ad n 2022-05-23 16:42:27 +02:00
Jakob Meier 8eae5a4278 command to continue failed mpsoc update 2022-05-23 16:38:44 +02:00
muellerr 648e0b7814 bump tmtccmd 2022-05-23 16:11:55 +02:00
muellerr e884f397cd Merge remote-tracking branch 'origin/develop' into mueller/acu-hk 2022-05-23 15:50:45 +02:00
muellerr 17a3ea24df Merge pull request 'GUI improvements' (#79) from mohr/looooop into develop
Reviewed-on: #79
2022-05-23 15:50:04 +02:00
muellerr 2506d911de rad sensor HK parsing 2022-05-23 15:49:21 +02:00
muellerr 314071de1c rad sensor data 2022-05-23 15:38:05 +02:00
mkranz bcaac870c1 changed tcs and acs tv test proc 2022-05-23 15:28:41 +02:00
muellerr b9de13ffe7 something not working 2022-05-23 14:04:34 +02:00
muellerr e033609177 run black 2022-05-23 13:47:01 +02:00
muellerr 580b381848 completed ACU hk parsing 2022-05-23 12:38:50 +02:00
mkranz b3751004a6 added acs functional test 2022-05-23 11:53:31 +02:00
muellerr c01f1d0191 run black 2022-05-23 11:25:33 +02:00
muellerr ea1e440407 start acu hk handling 2022-05-23 11:24:55 +02:00
mkranz 0943a7a998 Merge remote-tracking branch 'origin/develop' into kranz/master 2022-05-23 09:34:54 +02:00
mohr 85a3c936a4 tmtcgui -m7 is kinda working like I would expect it to 2022-05-23 00:20:06 +02:00
mohr 1f7faef083 Merge remote-tracking branch 'origin/develop' into mohr/looooop 2022-05-22 22:02:44 +02:00
mohr 4237ed0d29 working on gui 2022-05-22 21:35:51 +02:00
mohr 77f77489c2 using new prompt in controllers 2022-05-22 21:29:09 +02:00
mohr 2cb801dc97 added prompt that either uses cli or, if available qt 2022-05-22 21:28:34 +02:00
mkranz b8e61b38b0 extended tv test procedures 2022-05-20 16:40:58 +02:00
muellerr ff66dd5dd2 Merge pull request 'bump tmtccmd dependency' (#77) from mueller/bump-tmtccmd into develop
Reviewed-on: #77
2022-05-20 15:31:57 +02:00
muellerr 9e8dc4f1e2 bump tmtccmd dependency 2022-05-20 15:30:11 +02:00
muellerr 881baf7a82 Merge pull request 'HK Parsing and TC PROC Tests' (#76) from mueller/hk-parsing into develop
Reviewed-on: #76
2022-05-19 19:30:19 +02:00
muellerr 022551139c some improvements 2022-05-19 19:24:57 +02:00
muellerr e15d3a0b7a continued procedures 2022-05-19 18:47:23 +02:00
muellerr da3f143a9b Merge remote-tracking branch 'origin/develop' into mueller/hk-parsing 2022-05-19 18:16:50 +02:00
muellerr d9abd03fa9 Merge pull request 'Init tv test procedure' (#74) from kranz/master into develop
Reviewed-on: #74
2022-05-19 18:16:42 +02:00
mkranz d53e26b589 switch to generic hk function 2022-05-19 18:14:38 +02:00
muellerr a6132dd4f8 some bugfixes 2022-05-19 17:52:01 +02:00
muellerr 3caaffc151 Merge remote-tracking branch 'origin/develop' into mueller/hk-parsing 2022-05-19 17:37:41 +02:00
mkranz 72de2d99ca Merge remote-tracking branch 'origin/develop' into kranz/master 2022-05-19 17:19:18 +02:00
muellerr ef4c0a9189 added mgm hk handling 2022-05-19 14:50:24 +02:00
muellerr 730acf5ebe added gyros hk handling 2022-05-19 13:58:43 +02:00
muellerr ff651a7f7a Merge pull request 'continued hk parsing' (#75) from mueller/hk-parsing into develop
Reviewed-on: #75
2022-05-19 13:23:48 +02:00
muellerr fcb5e9b48c remove stray letter 2022-05-19 13:22:24 +02:00
muellerr 260a083091 continued hk parsing 2022-05-19 13:20:22 +02:00
mkranz 9bd0783c57 deleted bakcup files 2022-05-19 11:01:11 +02:00
mkranz 2557662c4d Merge remote-tracking branch 'origin/develop' into kranz/master 2022-05-19 10:49:52 +02:00
Uli 084a51ee67 Merge remote-tracking branch 'origin/mohr/looooop' into mohr/looooop 2022-05-19 00:46:48 +02:00
mohr 8ca85d4474 updated tmtccmd 2022-05-19 00:46:21 +02:00
muellerr 480e0f07e0 Merge pull request 'Improvements to Loop Mode and HK Parsing' (#73) from mohr/looooop into develop
Reviewed-on: #73
2022-05-18 22:29:43 +02:00
muellerr 01337e38d6 Merge branch 'develop' into mohr/looooop 2022-05-18 22:29:33 +02:00
mohr 2ba33309a7 hk handling back to using a dict as I learned it is now ordered 2022-05-18 21:43:57 +02:00
muellerr 817a89370a add battery tv test procedure 2022-05-18 20:00:59 +02:00
mkranz ca5fd6468c Merge remote-tracking branch 'origin/develop' into kranz/master 2022-05-18 18:42:18 +02:00
mkranz 973bdeadd6 proc service added 2022-05-18 18:39:18 +02:00
muellerr b008cc8392 README fix 2022-05-18 18:32:20 +02:00
mohr dff2c1b041 made parsed hk in json an array, so it can be iterated in order 2022-05-18 17:40:03 +02:00
mohr b0bdb2208f using dle encoder in tm tcp server 2022-05-18 17:03:03 +02:00
mohr bde8a29473 added TODO 2022-05-18 16:41:10 +02:00
mohr 437be64a28 move tcp server into own class and reverted hk handling back to functions from class 2022-05-18 16:02:23 +02:00
Uli de50dcc7fc Merge branch 'develop' into mohr/looooop 2022-05-17 22:14:57 +02:00
mohr 963f48120e added sending of TM via TCP Port 2022-05-17 22:11:58 +02:00
mohr 476066a5ac changed controller commanding to allow more flexibility 2022-05-17 22:11:31 +02:00
mohr 73c8e95dce fixed looping mode 2022-05-17 22:10:53 +02:00
mohr 2beffdbb27 updated tmtccmd version 2022-05-17 22:04:56 +02:00
muellerr b185e94cb5 Merge remote-tracking branch 'origin/master' into develop 2022-05-17 17:49:42 +02:00
muellerr a6f669e974 cleaner TM handling 2022-05-17 17:21:03 +02:00
muellerr ccc0096aa5 Merge pull request 'v1.11.0' (#72) from develop into master
Reviewed-on: #72
2022-05-17 15:04:47 +02:00
Uli 1cdc06c4d2 Merge branch 'mohr/looooop' into mohr/thermal 2022-05-17 14:45:46 +02:00
mohr 05ca9e37c3 WIP: parsing Thermal Controller TM and sending it via TCP/IP 2022-05-17 10:43:59 +02:00
mohr aadbfb2594 Added TCs to command Thermal Controller (to be continued) 2022-05-17 10:41:45 +02:00
60 changed files with 4248 additions and 1961 deletions

No files matched your search

+24
View File
@@ -0,0 +1,24 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="TV Test Oneshot" type="PythonConfigurationType" factoryName="Python" folderName="TV">
<module name="tmtc" />
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
<envs>
<env name="PYTHONUNBUFFERED" value="1" />
</envs>
<option name="SDK_HOME" value="" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
<option name="IS_MODULE_SDK" value="true" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/tmtccli.py" />
<option name="PARAMETERS" value="-s proc" />
<option name="SHOW_COMMAND_LINE" value="false" />
<option name="EMULATE_TERMINAL" value="true" />
<option name="MODULE_MODE" value="false" />
<option name="REDIRECT_INPUT" value="false" />
<option name="INPUT_FILE" value="" />
<method v="2" />
</configuration>
</component>
+1 -1
View File
@@ -13,7 +13,7 @@
<option name="ADD_SOURCE_ROOTS" value="true" />
<EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/tmtccli.py" />
<option name="PARAMETERS" value="" />
<option name="PARAMETERS" value="-l" />
<option name="SHOW_COMMAND_LINE" value="false" />
<option name="EMULATE_TERMINAL" value="true" />
<option name="MODULE_MODE" value="false" />
+24
View File
@@ -0,0 +1,24 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="tmtcloop" type="PythonConfigurationType" factoryName="Python" nameIsGenerated="true">
<module name="tmtc" />
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
<envs>
<env name="PYTHONUNBUFFERED" value="1" />
</envs>
<option name="SDK_HOME" value="" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
<option name="IS_MODULE_SDK" value="true" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/tmtcloop.py" />
<option name="PARAMETERS" value="" />
<option name="SHOW_COMMAND_LINE" value="false" />
<option name="EMULATE_TERMINAL" value="true" />
<option name="MODULE_MODE" value="false" />
<option name="REDIRECT_INPUT" value="false" />
<option name="INPUT_FILE" value="" />
<method v="2" />
</configuration>
</component>
+20
View File
@@ -10,6 +10,26 @@ list yields a list of all related PRs for each release.
# [unreleased]
# [v1.12.0]
- Update GPS HK Parsing
PR: https://egit.irs.uni-stuttgart.de/eive/eive-tmtc/pulls/86
- PL PCDU HK Parsing
PR: https://egit.irs.uni-stuttgart.de/eive/eive-tmtc/pulls/87
- Add full regular reboot command
PR: https://egit.irs.uni-stuttgart.de/eive/eive-tmtc/pulls/85
- Add Rad Sensor HK parsing
PR: https://egit.irs.uni-stuttgart.de/eive/eive-tmtc/pulls/81
- Add procedures, parser functions and general application functionalities
for the thermal-vacuum test. This includes daemon functionality to poll
all Telemetry even when there is no operator present
PR: https://egit.irs.uni-stuttgart.de/eive/eive-tmtc/pulls/76
https://egit.irs.uni-stuttgart.de/eive/eive-tmtc/pulls/74
https://egit.irs.uni-stuttgart.de/eive/eive-tmtc/pulls/79
https://egit.irs.uni-stuttgart.de/eive/eive-tmtc/pulls/73
- Add ACU HK parsing
PR: https://egit.irs.uni-stuttgart.de/eive/eive-tmtc/pulls/80
# [v1.11.0]
- Add `setup.cfg` and `setup.py` file, allowing package installation
+1 -1
View File
@@ -49,7 +49,7 @@ Run GUI mode
1. Create virtual environment
```sh
py -m venv .
py -m venv venv
```
2. Activate virtual environment
+5 -2
View File
@@ -34,8 +34,7 @@ class CustomServiceList(enum.Enum):
REACTION_WHEEL_4 = "rw-4"
RW_ASSEMBLY = "rw-ass"
RAD_SENSOR = "rad_sensor"
GPS_0 = "gps0"
GPS_1 = "gps1"
GPS_CTRL = "gnss-ctrl"
PLOC_MEMORY_DUMPER = "ploc_memory_dumper"
CORE = "core"
STAR_TRACKER = "star_tracker"
@@ -47,3 +46,7 @@ class CustomServiceList(enum.Enum):
SUS_ASS = "sus-ass"
TCS_ASS = "tcs-ass"
TIME = "time"
PROCEDURE = "proc"
RTD = "rtd"
TVTTESTPROCEDURE = "tvtestproc"
CONTROLLERS = "controllers"
+19 -16
View File
@@ -75,6 +75,7 @@
7905;0x1ee1;FRAME_PROCESSING_FAILED;LOW;The CCSDS Board could not interpret a TC;fsfw/src/fsfw/datalinklayer/DataLinkLayer.h
8900;0x22c4;CLOCK_SET;INFO;;fsfw/src/fsfw/pus/Service9TimeManagement.h
8901;0x22c5;CLOCK_SET_FAILURE;LOW;;fsfw/src/fsfw/pus/Service9TimeManagement.h
9100;0x238c;TC_DELETION_FAILED;MEDIUM;Deletion of a TC from the map failed. P1: First 32 bit of request ID, P2. Last 32 bit of Request ID;fsfw/src/fsfw/pus/Service11TelecommandScheduling.h
9700;0x25e4;TEST;INFO;;fsfw/src/fsfw/pus/Service17Test.h
10600;0x2968;CHANGE_OF_SETUP_PARAMETER;LOW;;fsfw/hal/src/fsfw_hal/devicehandlers/MgmLIS3MDLHandler.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
@@ -182,22 +183,24 @@
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/PlocSupvHelper.h
13601;0x3521;SUPV_UPDATE_SUCCESSFUL;LOW;update successful;linux/devices/ploc/PlocSupvHelper.h
13602;0x3522;TERMINATED_UPDATE_PROCEDURE;LOW;Terminated update procedure by command;linux/devices/ploc/PlocSupvHelper.h
13603;0x3523;SUPV_EVENT_BUFFER_REQUEST_SUCCESSFUL;LOW;Requesting event buffer was successful;linux/devices/ploc/PlocSupvHelper.h
13604;0x3524;SUPV_EVENT_BUFFER_REQUEST_FAILED;LOW;Requesting event buffer failed;linux/devices/ploc/PlocSupvHelper.h
13605;0x3525;SUPV_EVENT_BUFFER_REQUEST_TERMINATED;LOW;Terminated event buffer request by command P1: Number of packets read before process was terminated;linux/devices/ploc/PlocSupvHelper.h
13606;0x3526;SUPV_SENDING_COMMAND_FAILED;LOW;;linux/devices/ploc/PlocSupvHelper.h
13607;0x3527;SUPV_HELPER_REQUESTING_REPLY_FAILED;LOW;Request receive message of communication interface failed P1: Return value returned by the communication interface requestReceiveMessage function P2: Internal state of supervisor helper;linux/devices/ploc/PlocSupvHelper.h
13608;0x3528;SUPV_HELPER_READING_REPLY_FAILED;LOW;Reading receive message of communication interface failed P1: Return value returned by the communication interface readingReceivedMessage function P2: Internal state of supervisor helper;linux/devices/ploc/PlocSupvHelper.h
13609;0x3529;SUPV_MISSING_ACK;LOW;Did not receive acknowledgement report P1: Number of bytes missing P2: Internal state of MPSoC helper;linux/devices/ploc/PlocSupvHelper.h
13610;0x352a;SUPV_MISSING_EXE;LOW;Supervisor did not receive execution report P1: Number of bytes missing P2: Internal state of supervisor helper;linux/devices/ploc/PlocSupvHelper.h
13611;0x352b;SUPV_ACK_FAILURE_REPORT;LOW;Supervisor received acknowledgment failure report P1: Internal state of supervisor helper;linux/devices/ploc/PlocSupvHelper.h
13612;0x352c;SUPV_EXE_FAILURE_REPORT;LOW;Execution report failure P1:;linux/devices/ploc/PlocSupvHelper.h
13613;0x352d;SUPV_ACK_INVALID_APID;LOW;Supervisor expected acknowledgment report but received space packet with other apid P1: Apid of received space packet P2: Internal state of supervisor helper;linux/devices/ploc/PlocSupvHelper.h
13614;0x352e;SUPV_EXE_INVALID_APID;LOW;Supervisor helper expected execution report but received space packet with other apid P1: Apid of received space packet P2: Internal state of supervisor helper;linux/devices/ploc/PlocSupvHelper.h
13615;0x352f;ACK_RECEPTION_FAILURE;LOW;Failed to receive acknowledgment report P1: Return value P2: Apid of command for which the reception of the acknowledgment report failed;linux/devices/ploc/PlocSupvHelper.h
13616;0x3530;EXE_RECEPTION_FAILURE;LOW;Failed to receive execution report P1: Return value P2: Apid of command for which the reception of the execution report failed;linux/devices/ploc/PlocSupvHelper.h
13617;0x3531;WRITE_MEMORY_FAILED;LOW;Update procedure failed when sending packet with number P1 P1: Packet number for which the memory write command fails;linux/devices/ploc/PlocSupvHelper.h
13602;0x3522;SUPV_CONTINUE_UPDATE_FAILED;LOW;Continue update command failed;linux/devices/ploc/PlocSupvHelper.h
13603;0x3523;SUPV_CONTINUE_UPDATE_SUCCESSFUL;LOW;Continue update command successful;linux/devices/ploc/PlocSupvHelper.h
13604;0x3524;TERMINATED_UPDATE_PROCEDURE;LOW;Terminated update procedure by command;linux/devices/ploc/PlocSupvHelper.h
13605;0x3525;SUPV_EVENT_BUFFER_REQUEST_SUCCESSFUL;LOW;Requesting event buffer was successful;linux/devices/ploc/PlocSupvHelper.h
13606;0x3526;SUPV_EVENT_BUFFER_REQUEST_FAILED;LOW;Requesting event buffer failed;linux/devices/ploc/PlocSupvHelper.h
13607;0x3527;SUPV_EVENT_BUFFER_REQUEST_TERMINATED;LOW;Terminated event buffer request by command P1: Number of packets read before process was terminated;linux/devices/ploc/PlocSupvHelper.h
13608;0x3528;SUPV_SENDING_COMMAND_FAILED;LOW;;linux/devices/ploc/PlocSupvHelper.h
13609;0x3529;SUPV_HELPER_REQUESTING_REPLY_FAILED;LOW;Request receive message of communication interface failed P1: Return value returned by the communication interface requestReceiveMessage function P2: Internal state of supervisor helper;linux/devices/ploc/PlocSupvHelper.h
13610;0x352a;SUPV_HELPER_READING_REPLY_FAILED;LOW;Reading receive message of communication interface failed P1: Return value returned by the communication interface readingReceivedMessage function P2: Internal state of supervisor helper;linux/devices/ploc/PlocSupvHelper.h
13611;0x352b;SUPV_MISSING_ACK;LOW;Did not receive acknowledgement report P1: Number of bytes missing P2: Internal state of MPSoC helper;linux/devices/ploc/PlocSupvHelper.h
13612;0x352c;SUPV_MISSING_EXE;LOW;Supervisor did not receive execution report P1: Number of bytes missing P2: Internal state of supervisor helper;linux/devices/ploc/PlocSupvHelper.h
13613;0x352d;SUPV_ACK_FAILURE_REPORT;LOW;Supervisor received acknowledgment failure report P1: Internal state of supervisor helper;linux/devices/ploc/PlocSupvHelper.h
13614;0x352e;SUPV_EXE_FAILURE_REPORT;LOW;Execution report failure P1:;linux/devices/ploc/PlocSupvHelper.h
13615;0x352f;SUPV_ACK_INVALID_APID;LOW;Supervisor expected acknowledgment report but received space packet with other apid P1: Apid of received space packet P2: Internal state of supervisor helper;linux/devices/ploc/PlocSupvHelper.h
13616;0x3530;SUPV_EXE_INVALID_APID;LOW;Supervisor helper expected execution report but received space packet with other apid P1: Apid of received space packet P2: Internal state of supervisor helper;linux/devices/ploc/PlocSupvHelper.h
13617;0x3531;ACK_RECEPTION_FAILURE;LOW;Failed to receive acknowledgment report P1: Return value P2: Apid of command for which the reception of the acknowledgment report failed;linux/devices/ploc/PlocSupvHelper.h
13618;0x3532;EXE_RECEPTION_FAILURE;LOW;Failed to receive execution report P1: Return value P2: Apid of command for which the reception of the execution report failed;linux/devices/ploc/PlocSupvHelper.h
13619;0x3533;WRITE_MEMORY_FAILED;LOW;Update procedure failed when sending packet with number P1 P1: Packet number for which the memory write command fails;linux/devices/ploc/PlocSupvHelper.h
13700;0x3584;ALLOC_FAILURE;MEDIUM;;bsp_q7s/core/CoreController.h
13701;0x3585;REBOOT_SW;MEDIUM; Software reboot occurred. Can also be a systemd reboot. P1: Current Chip, P2: Current Copy;bsp_q7s/core/CoreController.h
13702;0x3586;REBOOT_MECHANISM_TRIGGERED;MEDIUM;The reboot mechanism was triggered. P1: First 16 bits: Last Chip, Last 16 bits: Last Copy, P2: Each byte is the respective reboot count for the slots;bsp_q7s/core/CoreController.h
1 2200 0x0898 STORE_SEND_WRITE_FAILED LOW fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
75 7905 0x1ee1 FRAME_PROCESSING_FAILED LOW The CCSDS Board could not interpret a TC fsfw/src/fsfw/datalinklayer/DataLinkLayer.h
76 8900 0x22c4 CLOCK_SET INFO fsfw/src/fsfw/pus/Service9TimeManagement.h
77 8901 0x22c5 CLOCK_SET_FAILURE LOW fsfw/src/fsfw/pus/Service9TimeManagement.h
78 9100 0x238c TC_DELETION_FAILED MEDIUM Deletion of a TC from the map failed. P1: First 32 bit of request ID, P2. Last 32 bit of Request ID fsfw/src/fsfw/pus/Service11TelecommandScheduling.h
79 9700 0x25e4 TEST INFO fsfw/src/fsfw/pus/Service17Test.h
80 10600 0x2968 CHANGE_OF_SETUP_PARAMETER LOW fsfw/hal/src/fsfw_hal/devicehandlers/MgmLIS3MDLHandler.h
81 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
183 13202 0x3392 BATT_MODE_CHANGED MEDIUM Battery mode has changed. P1: Old mode. P2: New mode mission/devices/P60DockHandler.h
184 13600 0x3520 SUPV_UPDATE_FAILED LOW update failed linux/devices/ploc/PlocSupvHelper.h
185 13601 0x3521 SUPV_UPDATE_SUCCESSFUL LOW update successful linux/devices/ploc/PlocSupvHelper.h
186 13602 0x3522 TERMINATED_UPDATE_PROCEDURE SUPV_CONTINUE_UPDATE_FAILED LOW Terminated update procedure by command Continue update command failed linux/devices/ploc/PlocSupvHelper.h
187 13603 0x3523 SUPV_EVENT_BUFFER_REQUEST_SUCCESSFUL SUPV_CONTINUE_UPDATE_SUCCESSFUL LOW Requesting event buffer was successful Continue update command successful linux/devices/ploc/PlocSupvHelper.h
188 13604 0x3524 SUPV_EVENT_BUFFER_REQUEST_FAILED TERMINATED_UPDATE_PROCEDURE LOW Requesting event buffer failed Terminated update procedure by command linux/devices/ploc/PlocSupvHelper.h
189 13605 0x3525 SUPV_EVENT_BUFFER_REQUEST_TERMINATED SUPV_EVENT_BUFFER_REQUEST_SUCCESSFUL LOW Terminated event buffer request by command P1: Number of packets read before process was terminated Requesting event buffer was successful linux/devices/ploc/PlocSupvHelper.h
190 13606 0x3526 SUPV_SENDING_COMMAND_FAILED SUPV_EVENT_BUFFER_REQUEST_FAILED LOW Requesting event buffer failed linux/devices/ploc/PlocSupvHelper.h
191 13607 0x3527 SUPV_HELPER_REQUESTING_REPLY_FAILED SUPV_EVENT_BUFFER_REQUEST_TERMINATED LOW Request receive message of communication interface failed P1: Return value returned by the communication interface requestReceiveMessage function P2: Internal state of supervisor helper Terminated event buffer request by command P1: Number of packets read before process was terminated linux/devices/ploc/PlocSupvHelper.h
192 13608 0x3528 SUPV_HELPER_READING_REPLY_FAILED SUPV_SENDING_COMMAND_FAILED LOW Reading receive message of communication interface failed P1: Return value returned by the communication interface readingReceivedMessage function P2: Internal state of supervisor helper linux/devices/ploc/PlocSupvHelper.h
193 13609 0x3529 SUPV_MISSING_ACK SUPV_HELPER_REQUESTING_REPLY_FAILED LOW Did not receive acknowledgement report P1: Number of bytes missing P2: Internal state of MPSoC helper Request receive message of communication interface failed P1: Return value returned by the communication interface requestReceiveMessage function P2: Internal state of supervisor helper linux/devices/ploc/PlocSupvHelper.h
194 13610 0x352a SUPV_MISSING_EXE SUPV_HELPER_READING_REPLY_FAILED LOW Supervisor did not receive execution report P1: Number of bytes missing P2: Internal state of supervisor helper Reading receive message of communication interface failed P1: Return value returned by the communication interface readingReceivedMessage function P2: Internal state of supervisor helper linux/devices/ploc/PlocSupvHelper.h
195 13611 0x352b SUPV_ACK_FAILURE_REPORT SUPV_MISSING_ACK LOW Supervisor received acknowledgment failure report P1: Internal state of supervisor helper Did not receive acknowledgement report P1: Number of bytes missing P2: Internal state of MPSoC helper linux/devices/ploc/PlocSupvHelper.h
196 13612 0x352c SUPV_EXE_FAILURE_REPORT SUPV_MISSING_EXE LOW Execution report failure P1: Supervisor did not receive execution report P1: Number of bytes missing P2: Internal state of supervisor helper linux/devices/ploc/PlocSupvHelper.h
197 13613 0x352d SUPV_ACK_INVALID_APID SUPV_ACK_FAILURE_REPORT LOW Supervisor expected acknowledgment report but received space packet with other apid P1: Apid of received space packet P2: Internal state of supervisor helper Supervisor received acknowledgment failure report P1: Internal state of supervisor helper linux/devices/ploc/PlocSupvHelper.h
198 13614 0x352e SUPV_EXE_INVALID_APID SUPV_EXE_FAILURE_REPORT 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 Execution report failure P1: linux/devices/ploc/PlocSupvHelper.h
199 13615 0x352f ACK_RECEPTION_FAILURE SUPV_ACK_INVALID_APID LOW Failed to receive acknowledgment report P1: Return value P2: Apid of command for which the reception of the acknowledgment report failed Supervisor expected acknowledgment report but received space packet with other apid P1: Apid of received space packet P2: Internal state of supervisor helper linux/devices/ploc/PlocSupvHelper.h
200 13616 0x3530 EXE_RECEPTION_FAILURE SUPV_EXE_INVALID_APID LOW Failed to receive execution report P1: Return value P2: Apid of command for which the reception of the execution report failed Supervisor helper expected execution report but received space packet with other apid P1: Apid of received space packet P2: Internal state of supervisor helper linux/devices/ploc/PlocSupvHelper.h
201 13617 0x3531 WRITE_MEMORY_FAILED ACK_RECEPTION_FAILURE LOW Update procedure failed when sending packet with number P1 P1: Packet number for which the memory write command fails Failed to receive acknowledgment report P1: Return value P2: Apid of command for which the reception of the acknowledgment report failed linux/devices/ploc/PlocSupvHelper.h
202 13618 0x3532 EXE_RECEPTION_FAILURE LOW Failed to receive execution report P1: Return value P2: Apid of command for which the reception of the execution report failed linux/devices/ploc/PlocSupvHelper.h
203 13619 0x3533 WRITE_MEMORY_FAILED LOW Update procedure failed when sending packet with number P1 P1: Packet number for which the memory write command fails linux/devices/ploc/PlocSupvHelper.h
204 13700 0x3584 ALLOC_FAILURE MEDIUM bsp_q7s/core/CoreController.h
205 13701 0x3585 REBOOT_SW MEDIUM Software reboot occurred. Can also be a systemd reboot. P1: Current Chip, P2: Current Copy bsp_q7s/core/CoreController.h
206 13702 0x3586 REBOOT_MECHANISM_TRIGGERED MEDIUM The reboot mechanism was triggered. P1: First 16 bits: Last Chip, Last 16 bits: Last Copy, P2: Each byte is the respective reboot count for the slots bsp_q7s/core/CoreController.h
+55 -10
View File
@@ -27,6 +27,7 @@ ACU_HANDLER_ID = bytes([0x44, 0x25, 0x00, 0x03])
BPX_HANDLER_ID = bytes([0x44, 0x26, 0x00, 0x00])
# Thermal Object IDs
THERMAL_CONTROLLER_ID = bytes([0x43, 0x40, 0x00, 0x01])
HEATER_ID = bytes([0x44, 0x41, 0x00, 0xA4])
TMP_1075_1_HANDLER_ID = bytes([0x44, 0x42, 0x00, 0x04])
TMP_1075_2_HANDLER_ID = bytes([0x44, 0x42, 0x00, 0x05])
@@ -35,16 +36,15 @@ TMP_1075_2_HANDLER_ID = bytes([0x44, 0x42, 0x00, 0x05])
SYRLINKS_HANDLER_ID = bytes([0x44, 0x53, 0x00, 0xA3])
# ACS Object IDs
MGM_0_HANDLER_ID = bytes([0x44, 0x12, 0x00, 0x06])
MGM_1_HANDLER_ID = bytes([0x44, 0x12, 0x01, 0x07])
MGM_2_HANDLER_ID = bytes([0x44, 0x12, 0x02, 0x08])
MGM_3_HANDLER_ID = bytes([0x44, 0x12, 0x03, 0x09])
GYRO_0_HANDLER_ID = bytes([0x44, 0x12, 0x00, 0x10])
GYRO_1_HANDLER_ID = bytes([0x44, 0x12, 0x01, 0x11])
GYRO_2_HANDLER_ID = bytes([0x44, 0x12, 0x02, 0x12])
GYRO_3_HANDLER_ID = bytes([0x44, 0x12, 0x03, 0x13])
GPS_HANDLER_0_ID = bytes([0x44, 0x13, 0x00, 0x45])
GPS_HANDLER_1_ID = bytes([0x44, 0x13, 0x01, 0x46])
MGM_0_LIS3_HANDLER_ID = bytes([0x44, 0x12, 0x00, 0x06])
MGM_1_RM3100_HANDLER_ID = bytes([0x44, 0x12, 0x01, 0x07])
MGM_2_LIS3_HANDLER_ID = bytes([0x44, 0x12, 0x02, 0x08])
MGM_3_RM3100_HANDLER_ID = bytes([0x44, 0x12, 0x03, 0x09])
GYRO_0_ADIS_HANDLER_ID = bytes([0x44, 0x12, 0x00, 0x10])
GYRO_1_L3G_HANDLER_ID = bytes([0x44, 0x12, 0x01, 0x11])
GYRO_2_ADIS_HANDLER_ID = bytes([0x44, 0x12, 0x02, 0x12])
GYRO_3_L3G_HANDLER_ID = bytes([0x44, 0x12, 0x03, 0x13])
GPS_CONTROLLER = bytes([0x44, 0x13, 0x00, 0x45])
RW1_ID = bytes([0x44, 0x12, 0x00, 0x47])
RW2_ID = bytes([0x44, 0x12, 0x01, 0x48])
RW3_ID = bytes([0x44, 0x12, 0x02, 0x49])
@@ -76,6 +76,51 @@ HEATER_5_STR = bytes([0x60, 0x00, 0x00, 0x05])
HEATER_6_DRO = bytes([0x60, 0x00, 0x00, 0x06])
HEATER_7_HPA = bytes([0x60, 0x00, 0x00, 0x07])
# RTDs
RTD_0_PLOC_HSPD = bytes([0x44, 0x42, 0x00, 0x16])
RTD_1_PLOC_MISSIONBRD = bytes([0x44, 0x42, 0x00, 0x17])
RTD_2_4K_CAM = bytes([0x44, 0x42, 0x00, 0x18])
RTD_3_DAC_HSPD = bytes([0x44, 0x42, 0x00, 0x19])
RTD_4_STR = bytes([0x44, 0x42, 0x00, 0x20])
RTD_5_RW1_MX_MY = bytes([0x44, 0x42, 0x00, 0x21])
RTD_6_DRO = bytes([0x44, 0x42, 0x00, 0x22])
RTD_7_SCEX = bytes([0x44, 0x42, 0x00, 0x23])
RTD_8_X8 = bytes([0x44, 0x42, 0x00, 0x24])
RTD_9_HPA = bytes([0x44, 0x42, 0x00, 0x25])
RTD_10_PL_TX = bytes([0x44, 0x42, 0x00, 0x26])
RTD_11_MPA = bytes([0x44, 0x42, 0x00, 0x27])
RTD_12_ACU = bytes([0x44, 0x42, 0x00, 0x28])
RTD_13_PLPCDU_HSPD = bytes([0x44, 0x42, 0x00, 0x29])
RTD_14_TCS_BRD = bytes([0x44, 0x42, 0x00, 0x30])
RTD_15_IMTQ = bytes([0x44, 0x42, 0x00, 0x31])
# SUS
"""
Name convention for SUS devices
SUS_<IDX>_<N/R>_LOC_X<F/M/B>Y<F/M/B>Z<F/M/B>_PT_<DIR><F/B>
LOC: Location
PT: Pointing
N/R: Nominal/Redundant
F/M/B: Forward/Middle/Backwards
"""
SUS_0_N_LOC_XFYFZM_PT_XF = bytes([0x44, 0x12, 0x00, 0x32])
SUS_6_R_LOC_XFYBZM_PT_XF = bytes([0x44, 0x12, 0x00, 0x38])
SUS_1_N_LOC_XBYFZM_PT_XB = bytes([0x44, 0x12, 0x00, 0x33])
SUS_7_R_LOC_XBYBZM_PT_XB = bytes([0x44, 0x12, 0x00, 0x39])
SUS_2_N_LOC_XFYBZB_PT_YB = bytes([0x44, 0x12, 0x00, 0x34])
SUS_8_R_LOC_XBYBZB_PT_YB = bytes([0x44, 0x12, 0x00, 0x40])
SUS_3_N_LOC_XFYBZF_PT_YF = bytes([0x44, 0x12, 0x00, 0x35])
SUS_9_R_LOC_XBYBZB_PT_YF = bytes([0x44, 0x12, 0x00, 0x41])
SUS_4_N_LOC_XMYFZF_PT_ZF = bytes([0x44, 0x12, 0x00, 0x36])
SUS_10_R_LOC_XMYBZF_PT_ZF = bytes([0x44, 0x12, 0x00, 0x42])
SUS_5_N_LOC_XFYMZB_PT_ZB = bytes([0x44, 0x12, 0x00, 0x37])
SUS_11_R_LOC_XBYMZB_PT_ZB = bytes([0x44, 0x12, 0x00, 0x43])
# System and Assembly Objects
ACS_BOARD_ASS_ID = bytes([0x73, 0x00, 0x00, 0x01])
SUS_BOARD_ASS_ID = bytes([0x73, 0x00, 0x00, 0x02])
+3
View File
@@ -37,6 +37,7 @@
0x44260000;BPX_BATT_HANDLER
0x44300000;PLPCDU_HANDLER
0x443200A5;RAD_SENSOR
0x44330000;PLOC_UPDATER
0x44330001;PLOC_MEMORY_DUMPER
0x44330002;STR_HELPER
0x44330003;PLOC_MPSOC_HELPER
@@ -70,6 +71,7 @@
0x49010005;GPIO_IF
0x49020004;SPI_MAIN_COM_IF
0x49020005;SPI_RW_COM_IF
0x49020006;SPI_RTD_COM_IF
0x49030003;UART_COM_IF
0x49040002;I2C_COM_IF
0x49050001;CSP_COM_IF
@@ -90,6 +92,7 @@
0x53000005;PUS_SERVICE_5_EVENT_REPORTING
0x53000008;PUS_SERVICE_8_FUNCTION_MGMT
0x53000009;PUS_SERVICE_9_TIME_MGMT
0x53000011;PUS_SERVICE_11_TC_SCHEDULER
0x53000017;PUS_SERVICE_17_TEST
0x53000020;PUS_SERVICE_20_PARAMETERS
0x53000200;PUS_SERVICE_200_MODE_MGMT
1 0x00005060 P60DOCK_TEST_TASK
37 0x44260000 BPX_BATT_HANDLER
38 0x44300000 PLPCDU_HANDLER
39 0x443200A5 RAD_SENSOR
40 0x44330000 PLOC_UPDATER
41 0x44330001 PLOC_MEMORY_DUMPER
42 0x44330002 STR_HELPER
43 0x44330003 PLOC_MPSOC_HELPER
71 0x49010005 GPIO_IF
72 0x49020004 SPI_MAIN_COM_IF
73 0x49020005 SPI_RW_COM_IF
74 0x49020006 SPI_RTD_COM_IF
75 0x49030003 UART_COM_IF
76 0x49040002 I2C_COM_IF
77 0x49050001 CSP_COM_IF
92 0x53000005 PUS_SERVICE_5_EVENT_REPORTING
93 0x53000008 PUS_SERVICE_8_FUNCTION_MGMT
94 0x53000009 PUS_SERVICE_9_TIME_MGMT
95 0x53000011 PUS_SERVICE_11_TC_SCHEDULER
96 0x53000017 PUS_SERVICE_17_TEST
97 0x53000020 PUS_SERVICE_20_PARAMETERS
98 0x53000200 PUS_SERVICE_200_MODE_MGMT
+420 -416
View File
@@ -1,140 +1,105 @@
0x0;OK;System-wide code for ok.;RETURN_OK;HasReturnvaluesIF.h;HasReturnvaluesIF
0x1;Failed;Unspecified system-wide code for failed.;RETURN_FAILED;HasReturnvaluesIF.h;HasReturnvaluesIF
0x63a0;CCSDS_CommandNotImplemented;Received action message with unknown action id;0xA0;mission/tmtc/CCSDSHandler.h;CCSDS_HANDLER
0x69a0;SADPL_CommandNotSupported;;0xA0;mission/devices/SolarArrayDeploymentHandler.h;SA_DEPL_HANDLER
0x69a1;SADPL_DeploymentAlreadyExecuting;;0xA1;mission/devices/SolarArrayDeploymentHandler.h;SA_DEPL_HANDLER
0x69a2;SADPL_MainSwitchTimeoutFailure;;0xA2;mission/devices/SolarArrayDeploymentHandler.h;SA_DEPL_HANDLER
0x69a3;SADPL_SwitchingDeplSa1Failed;;0xA3;mission/devices/SolarArrayDeploymentHandler.h;SA_DEPL_HANDLER
0x69a4;SADPL_SwitchingDeplSa2Failed;;0xA4;mission/devices/SolarArrayDeploymentHandler.h;SA_DEPL_HANDLER
0x5ba0;SUSS_ErrorUnlockMutex;;0xA0;mission/devices/SusHandler.h;SUS_HANDLER
0x5ba1;SUSS_ErrorLockMutex;;0xA1;mission/devices/SusHandler.h;SUS_HANDLER
0x55b0;RWHA_SpiWriteFailure;;0xB0;mission/devices/RwHandler.h;RW_HANDLER
0x55b1;RWHA_SpiReadFailure;Used by the spi send function to tell a failing read call;0xB1;mission/devices/RwHandler.h;RW_HANDLER
0x55b2;RWHA_MissingStartSign;Can be used by the HDLC decoding mechanism to inform about a missing start sign 0x7E;0xB2;mission/devices/RwHandler.h;RW_HANDLER
0x55b3;RWHA_InvalidSubstitute;Can be used by the HDLC decoding mechanism to inform about an invalid substitution combination;0xB3;mission/devices/RwHandler.h;RW_HANDLER
0x55b4;RWHA_MissingEndSign;HDLC decoding mechanism never receives the end sign 0x7E;0xB4;mission/devices/RwHandler.h;RW_HANDLER
0x55b5;RWHA_NoReply;Reaction wheel only responds with empty frames.;0xB5;mission/devices/RwHandler.h;RW_HANDLER
0x55b6;RWHA_NoStartMarker;Expected a start marker as first byte;0xB6;mission/devices/RwHandler.h;RW_HANDLER
0x55a0;RWHA_InvalidSpeed;Action Message with invalid speed was received. Valid speeds must be in the range of [-65000; 1000] or [1000; 65000];0xA0;mission/devices/RwHandler.h;RW_HANDLER
0x55a1;RWHA_InvalidRampTime;Action Message with invalid ramp time was received.;0xA1;mission/devices/RwHandler.h;RW_HANDLER
0x55a2;RWHA_SetSpeedCommandInvalidLength;Received set speed command has invalid length. Should be 6.;0xA2;mission/devices/RwHandler.h;RW_HANDLER
0x55a3;RWHA_ExecutionFailed;Command execution failed;0xA3;mission/devices/RwHandler.h;RW_HANDLER
0x55a4;RWHA_CrcError;Reaction wheel reply has invalid crc;0xA4;mission/devices/RwHandler.h;RW_HANDLER
0x54a0;IMTQ_InvalidCommandCode;;0xA0;mission/devices/IMTQHandler.h;IMTQ_HANDLER
0x54a1;IMTQ_ParameterMissing;;0xA1;mission/devices/IMTQHandler.h;IMTQ_HANDLER
0x54a2;IMTQ_ParameterInvalid;;0xA2;mission/devices/IMTQHandler.h;IMTQ_HANDLER
0x54a3;IMTQ_CcUnavailable;;0xA3;mission/devices/IMTQHandler.h;IMTQ_HANDLER
0x54a4;IMTQ_InternalProcessingError;;0xA4;mission/devices/IMTQHandler.h;IMTQ_HANDLER
0x54a5;IMTQ_RejectedWithoutReason;;0xA5;mission/devices/IMTQHandler.h;IMTQ_HANDLER
0x54a6;IMTQ_CmdErrUnknown;;0xA6;mission/devices/IMTQHandler.h;IMTQ_HANDLER
0x54a7;IMTQ_UnexpectedSelfTestReply;The status reply to a self test command was received but no self test command has been sent. This should normally never happen.;0xA7;mission/devices/IMTQHandler.h;IMTQ_HANDLER
0x52a1;HEATER_CommandNotSupported;;0xA1;mission/devices/HeaterHandler.h;HEATER_HANDLER
0x52a2;HEATER_InitFailed;;0xA2;mission/devices/HeaterHandler.h;HEATER_HANDLER
0x52a3;HEATER_InvalidSwitchNr;;0xA3;mission/devices/HeaterHandler.h;HEATER_HANDLER
0x52a4;HEATER_MainSwitchSetTimeout;;0xA4;mission/devices/HeaterHandler.h;HEATER_HANDLER
0x52a5;HEATER_CommandAlreadyWaiting;;0xA5;mission/devices/HeaterHandler.h;HEATER_HANDLER
0x6000;GOMS_PacketTooLong;;0;mission/devices/GomspaceDeviceHandler.h;GOM_SPACE_HANDLER
0x6001;GOMS_InvalidTableId;;1;mission/devices/GomspaceDeviceHandler.h;GOM_SPACE_HANDLER
0x6002;GOMS_InvalidAddress;;2;mission/devices/GomspaceDeviceHandler.h;GOM_SPACE_HANDLER
0x6003;GOMS_InvalidParamSize;;3;mission/devices/GomspaceDeviceHandler.h;GOM_SPACE_HANDLER
0x6004;GOMS_InvalidPayloadSize;;4;mission/devices/GomspaceDeviceHandler.h;GOM_SPACE_HANDLER
0x6005;GOMS_UnknownReplyId;;5;mission/devices/GomspaceDeviceHandler.h;GOM_SPACE_HANDLER
0x53a0;SYRLINKS_CrcFailure;;0xA0;mission/devices/SyrlinksHkHandler.h;SYRLINKS_HANDLER
0x53a1;SYRLINKS_UartFraminOrParityErrorAck;;0xA1;mission/devices/SyrlinksHkHandler.h;SYRLINKS_HANDLER
0x53a2;SYRLINKS_BadCharacterAck;;0xA2;mission/devices/SyrlinksHkHandler.h;SYRLINKS_HANDLER
0x53a3;SYRLINKS_BadParameterValueAck;;0xA3;mission/devices/SyrlinksHkHandler.h;SYRLINKS_HANDLER
0x53a4;SYRLINKS_BadEndOfFrameAck;;0xA4;mission/devices/SyrlinksHkHandler.h;SYRLINKS_HANDLER
0x53a5;SYRLINKS_UnknownCommandIdAck;;0xA5;mission/devices/SyrlinksHkHandler.h;SYRLINKS_HANDLER
0x53a6;SYRLINKS_BadCrcAck;;0xA6;mission/devices/SyrlinksHkHandler.h;SYRLINKS_HANDLER
0x53a7;SYRLINKS_ReplyWrongSize;;0xA7;mission/devices/SyrlinksHkHandler.h;SYRLINKS_HANDLER
0x53a8;SYRLINKS_MissingStartFrameCharacter;;0xA8;mission/devices/SyrlinksHkHandler.h;SYRLINKS_HANDLER
0x66a0;NVMB_KeyNotExists;Specified key does not exist in json file;0xA0;mission/memory/NVMParameterBase.h;NVM_PARAM_BASE
0x4300; HSPI_OpeningFileFailed;;0;fsfw/hal/src/fsfw_hal/linux/spi/SpiComIF.h;HAL_SPI
0x4301; HSPI_FullDuplexTransferFailed;;1;fsfw/hal/src/fsfw_hal/linux/spi/SpiComIF.h;HAL_SPI
0x4302; HSPI_HalfDuplexTransferFailed;;2;fsfw/hal/src/fsfw_hal/linux/spi/SpiComIF.h;HAL_SPI
0x4401; HURT_UartReadFailure;;1;fsfw/hal/src/fsfw_hal/linux/uart/UartComIF.h;HAL_UART
0x4402; HURT_UartReadSizeMissmatch;;2;fsfw/hal/src/fsfw_hal/linux/uart/UartComIF.h;HAL_UART
0x4403; HURT_UartRxBufferTooSmall;;3;fsfw/hal/src/fsfw_hal/linux/uart/UartComIF.h;HAL_UART
0x4601; HGIO_UnknownGpioId;;1;fsfw/hal/src/fsfw_hal/linux/gpio/LinuxLibgpioIF.h;HAL_GPIO
0x4602; HGIO_DriveGpioFailure;;2;fsfw/hal/src/fsfw_hal/linux/gpio/LinuxLibgpioIF.h;HAL_GPIO
0x4603; HGIO_GpioTypeFailure;;3;fsfw/hal/src/fsfw_hal/linux/gpio/LinuxLibgpioIF.h;HAL_GPIO
0x4604; HGIO_GpioInvalidInstance;;4;fsfw/hal/src/fsfw_hal/linux/gpio/LinuxLibgpioIF.h;HAL_GPIO
0x4605; HGIO_GpioDuplicateDetected;;5;fsfw/hal/src/fsfw_hal/linux/gpio/LinuxLibgpioIF.h;HAL_GPIO
0x4606; HGIO_GpioInitFailed;;6;fsfw/hal/src/fsfw_hal/linux/gpio/LinuxLibgpioIF.h;HAL_GPIO
0x4607; HGIO_GpioGetValueFailed;;7;fsfw/hal/src/fsfw_hal/linux/gpio/LinuxLibgpioIF.h;HAL_GPIO
0x4200; UXOS_ExecutionFinished;Execution of the current command has finished;0;fsfw/hal/src/fsfw_hal/linux/CommandExecutor.h;LINUX_OSAL
0x4201; UXOS_CommandPending;Command is pending. This will also be returned if the user tries to load another command but a command is still pending;1;fsfw/hal/src/fsfw_hal/linux/CommandExecutor.h;LINUX_OSAL
0x4202; UXOS_BytesRead;Some bytes have been read from the executing process;2;fsfw/hal/src/fsfw_hal/linux/CommandExecutor.h;LINUX_OSAL
0x4203; UXOS_CommandError;Command execution failed;3;fsfw/hal/src/fsfw_hal/linux/CommandExecutor.h;LINUX_OSAL
0x4204; UXOS_NoCommandLoadedOrPending;;4;fsfw/hal/src/fsfw_hal/linux/CommandExecutor.h;LINUX_OSAL
0x4206; UXOS_PcloseCallError;;6;fsfw/hal/src/fsfw_hal/linux/CommandExecutor.h;LINUX_OSAL
0x3b00; LPIF_PoolEntryNotFound;;0x00;fsfw/src/fsfw/datapoollocal/localPoolDefinitions.h;LOCAL_POOL_OWNER_IF
0x3b01; LPIF_PoolEntryTypeConflict;;0x01;fsfw/src/fsfw/datapoollocal/localPoolDefinitions.h;LOCAL_POOL_OWNER_IF
0x3d00; HKM_QueueOrDestinationInvalid;;0;fsfw/src/fsfw/datapoollocal/LocalDataPoolManager.h;HOUSEKEEPING_MANAGER
0x3d01; HKM_WrongHkPacketType;;1;fsfw/src/fsfw/datapoollocal/LocalDataPoolManager.h;HOUSEKEEPING_MANAGER
0x3d02; HKM_ReportingStatusUnchanged;;2;fsfw/src/fsfw/datapoollocal/LocalDataPoolManager.h;HOUSEKEEPING_MANAGER
0x3d03; HKM_PeriodicHelperInvalid;;3;fsfw/src/fsfw/datapoollocal/LocalDataPoolManager.h;HOUSEKEEPING_MANAGER
0x3d04; HKM_PoolobjectNotFound;;4;fsfw/src/fsfw/datapoollocal/LocalDataPoolManager.h;HOUSEKEEPING_MANAGER
0x3d05; HKM_DatasetNotFound;;5;fsfw/src/fsfw/datapoollocal/LocalDataPoolManager.h;HOUSEKEEPING_MANAGER
0x3501; CFDP_InvalidTlvType;;1;fsfw/src/fsfw/cfdp/definitions.h;CFDP
0x3502; CFDP_InvalidDirectiveFields;;2;fsfw/src/fsfw/cfdp/definitions.h;CFDP
0x3503; CFDP_InvalidPduDatafieldLen;;3;fsfw/src/fsfw/cfdp/definitions.h;CFDP
0x3504; CFDP_InvalidAckDirectiveFields;;4;fsfw/src/fsfw/cfdp/definitions.h;CFDP
0x3505; CFDP_MetadataCantParseOptions;;5;fsfw/src/fsfw/cfdp/definitions.h;CFDP
0x3506; CFDP_FinishedCantParseFsResponses;;6;fsfw/src/fsfw/cfdp/definitions.h;CFDP
0x3508; CFDP_FilestoreRequiresSecondFile;;8;fsfw/src/fsfw/cfdp/definitions.h;CFDP
0x3509; CFDP_FilestoreResponseCantParseFsMessage;;9;fsfw/src/fsfw/cfdp/definitions.h;CFDP
0x3101; CF_ObjectHasNoFunctions;;1;fsfw/src/fsfw/action/CommandsActionsIF.h;COMMANDS_ACTIONS_IF
0x3102; CF_AlreadyCommanding;;2;fsfw/src/fsfw/action/CommandsActionsIF.h;COMMANDS_ACTIONS_IF
0x3201; HF_IsBusy;;1;fsfw/src/fsfw/action/HasActionsIF.h;HAS_ACTIONS_IF
0x3202; HF_InvalidParameters;;2;fsfw/src/fsfw/action/HasActionsIF.h;HAS_ACTIONS_IF
0x3203; HF_ExecutionFinished;;3;fsfw/src/fsfw/action/HasActionsIF.h;HAS_ACTIONS_IF
0x3204; HF_InvalidActionId;;4;fsfw/src/fsfw/action/HasActionsIF.h;HAS_ACTIONS_IF
0x2d01; HPA_InvalidIdentifierId;;0x01;fsfw/src/fsfw/parameters/HasParametersIF.h;HAS_PARAMETERS_IF
0x2d02; HPA_InvalidDomainId;;0x02;fsfw/src/fsfw/parameters/HasParametersIF.h;HAS_PARAMETERS_IF
0x2d03; HPA_InvalidValue;;0x03;fsfw/src/fsfw/parameters/HasParametersIF.h;HAS_PARAMETERS_IF
0x2d05; HPA_ReadOnly;;0x05;fsfw/src/fsfw/parameters/HasParametersIF.h;HAS_PARAMETERS_IF
0x2c01; PAW_UnknownDatatype;;0x01;fsfw/src/fsfw/parameters/ParameterWrapper.h;PARAMETER_WRAPPER
0x2c02; PAW_DatatypeMissmatch;;0x02;fsfw/src/fsfw/parameters/ParameterWrapper.h;PARAMETER_WRAPPER
0x2c03; PAW_Readonly;;0x03;fsfw/src/fsfw/parameters/ParameterWrapper.h;PARAMETER_WRAPPER
0x2c04; PAW_TooBig;;0x04;fsfw/src/fsfw/parameters/ParameterWrapper.h;PARAMETER_WRAPPER
0x2c05; PAW_SourceNotSet;;0x05;fsfw/src/fsfw/parameters/ParameterWrapper.h;PARAMETER_WRAPPER
0x2c06; PAW_OutOfBounds;;0x06;fsfw/src/fsfw/parameters/ParameterWrapper.h;PARAMETER_WRAPPER
0x2c07; PAW_NotSet;;0x07;fsfw/src/fsfw/parameters/ParameterWrapper.h;PARAMETER_WRAPPER
0x2c08; PAW_ColumnOrRowsZero;;0x08;fsfw/src/fsfw/parameters/ParameterWrapper.h;PARAMETER_WRAPPER
0x1701; HHI_ObjectNotHealthy;;1;fsfw/src/fsfw/health/HasHealthIF.h;HAS_HEALTH_IF
0x1702; HHI_InvalidHealthState;;2;fsfw/src/fsfw/health/HasHealthIF.h;HAS_HEALTH_IF
0x67a0; NVMB_KeyNotExists;Specified key does not exist in json file;0xA0;mission/memory/NVMParameterBase.h;NVM_PARAM_BASE
0x5ca0; SUSS_ErrorUnlockMutex;;0xA0;mission/devices/SusHandler.h;SUS_HANDLER
0x5ca1; SUSS_ErrorLockMutex;;0xA1;mission/devices/SusHandler.h;SUS_HANDLER
0x6aa0; SADPL_CommandNotSupported;;0xA0;mission/devices/SolarArrayDeploymentHandler.h;SA_DEPL_HANDLER
0x6aa1; SADPL_DeploymentAlreadyExecuting;;0xA1;mission/devices/SolarArrayDeploymentHandler.h;SA_DEPL_HANDLER
0x6aa2; SADPL_MainSwitchTimeoutFailure;;0xA2;mission/devices/SolarArrayDeploymentHandler.h;SA_DEPL_HANDLER
0x6aa3; SADPL_SwitchingDeplSa1Failed;;0xA3;mission/devices/SolarArrayDeploymentHandler.h;SA_DEPL_HANDLER
0x6aa4; SADPL_SwitchingDeplSa2Failed;;0xA4;mission/devices/SolarArrayDeploymentHandler.h;SA_DEPL_HANDLER
0x56b0; RWHA_SpiWriteFailure;;0xB0;mission/devices/RwHandler.h;RW_HANDLER
0x56b1; RWHA_SpiReadFailure;Used by the spi send function to tell a failing read call;0xB1;mission/devices/RwHandler.h;RW_HANDLER
0x56b2; RWHA_MissingStartSign;Can be used by the HDLC decoding mechanism to inform about a missing start sign 0x7E;0xB2;mission/devices/RwHandler.h;RW_HANDLER
0x56b3; RWHA_InvalidSubstitute;Can be used by the HDLC decoding mechanism to inform about an invalid substitution combination;0xB3;mission/devices/RwHandler.h;RW_HANDLER
0x56b4; RWHA_MissingEndSign;HDLC decoding mechanism never receives the end sign 0x7E;0xB4;mission/devices/RwHandler.h;RW_HANDLER
0x56b5; RWHA_NoReply;Reaction wheel only responds with empty frames.;0xB5;mission/devices/RwHandler.h;RW_HANDLER
0x56b6; RWHA_NoStartMarker;Expected a start marker as first byte;0xB6;mission/devices/RwHandler.h;RW_HANDLER
0x56a0; RWHA_InvalidSpeed;Action Message with invalid speed was received. Valid speeds must be in the range of [-65000; 1000] or [1000; 65000];0xA0;mission/devices/RwHandler.h;RW_HANDLER
0x56a1; RWHA_InvalidRampTime;Action Message with invalid ramp time was received.;0xA1;mission/devices/RwHandler.h;RW_HANDLER
0x56a2; RWHA_SetSpeedCommandInvalidLength;Received set speed command has invalid length. Should be 6.;0xA2;mission/devices/RwHandler.h;RW_HANDLER
0x56a3; RWHA_ExecutionFailed;Command execution failed;0xA3;mission/devices/RwHandler.h;RW_HANDLER
0x56a4; RWHA_CrcError;Reaction wheel reply has invalid crc;0xA4;mission/devices/RwHandler.h;RW_HANDLER
0x6100; GOMS_PacketTooLong;;0;mission/devices/GomspaceDeviceHandler.h;GOM_SPACE_HANDLER
0x6101; GOMS_InvalidTableId;;1;mission/devices/GomspaceDeviceHandler.h;GOM_SPACE_HANDLER
0x6102; GOMS_InvalidAddress;;2;mission/devices/GomspaceDeviceHandler.h;GOM_SPACE_HANDLER
0x6103; GOMS_InvalidParamSize;;3;mission/devices/GomspaceDeviceHandler.h;GOM_SPACE_HANDLER
0x6104; GOMS_InvalidPayloadSize;;4;mission/devices/GomspaceDeviceHandler.h;GOM_SPACE_HANDLER
0x6105; GOMS_UnknownReplyId;;5;mission/devices/GomspaceDeviceHandler.h;GOM_SPACE_HANDLER
0x55a0; IMTQ_InvalidCommandCode;;0xA0;mission/devices/IMTQHandler.h;IMTQ_HANDLER
0x55a1; IMTQ_ParameterMissing;;0xA1;mission/devices/IMTQHandler.h;IMTQ_HANDLER
0x55a2; IMTQ_ParameterInvalid;;0xA2;mission/devices/IMTQHandler.h;IMTQ_HANDLER
0x55a3; IMTQ_CcUnavailable;;0xA3;mission/devices/IMTQHandler.h;IMTQ_HANDLER
0x55a4; IMTQ_InternalProcessingError;;0xA4;mission/devices/IMTQHandler.h;IMTQ_HANDLER
0x55a5; IMTQ_RejectedWithoutReason;;0xA5;mission/devices/IMTQHandler.h;IMTQ_HANDLER
0x55a6; IMTQ_CmdErrUnknown;;0xA6;mission/devices/IMTQHandler.h;IMTQ_HANDLER
0x55a7; IMTQ_UnexpectedSelfTestReply;The status reply to a self test command was received but no self test command has been sent. This should normally never happen.;0xA7;mission/devices/IMTQHandler.h;IMTQ_HANDLER
0x54a0; SYRLINKS_CrcFailure;;0xA0;mission/devices/SyrlinksHkHandler.h;SYRLINKS_HANDLER
0x54a1; SYRLINKS_UartFraminOrParityErrorAck;;0xA1;mission/devices/SyrlinksHkHandler.h;SYRLINKS_HANDLER
0x54a2; SYRLINKS_BadCharacterAck;;0xA2;mission/devices/SyrlinksHkHandler.h;SYRLINKS_HANDLER
0x54a3; SYRLINKS_BadParameterValueAck;;0xA3;mission/devices/SyrlinksHkHandler.h;SYRLINKS_HANDLER
0x54a4; SYRLINKS_BadEndOfFrameAck;;0xA4;mission/devices/SyrlinksHkHandler.h;SYRLINKS_HANDLER
0x54a5; SYRLINKS_UnknownCommandIdAck;;0xA5;mission/devices/SyrlinksHkHandler.h;SYRLINKS_HANDLER
0x54a6; SYRLINKS_BadCrcAck;;0xA6;mission/devices/SyrlinksHkHandler.h;SYRLINKS_HANDLER
0x54a7; SYRLINKS_ReplyWrongSize;;0xA7;mission/devices/SyrlinksHkHandler.h;SYRLINKS_HANDLER
0x54a8; SYRLINKS_MissingStartFrameCharacter;;0xA8;mission/devices/SyrlinksHkHandler.h;SYRLINKS_HANDLER
0x53a1; HEATER_CommandNotSupported;;0xA1;mission/devices/HeaterHandler.h;HEATER_HANDLER
0x53a2; HEATER_InitFailed;;0xA2;mission/devices/HeaterHandler.h;HEATER_HANDLER
0x53a3; HEATER_InvalidSwitchNr;;0xA3;mission/devices/HeaterHandler.h;HEATER_HANDLER
0x53a4; HEATER_MainSwitchSetTimeout;;0xA4;mission/devices/HeaterHandler.h;HEATER_HANDLER
0x53a5; HEATER_CommandAlreadyWaiting;;0xA5;mission/devices/HeaterHandler.h;HEATER_HANDLER
0x64a0; CCSDS_CommandNotImplemented;Received action message with unknown action id;0xA0;mission/tmtc/CCSDSHandler.h;CCSDS_HANDLER
0x2701; SM_DataTooLarge;;1;fsfw/src/fsfw/storagemanager/StorageManagerIF.h;STORAGE_MANAGER_IF
0x2702; SM_DataStorageFull;;2;fsfw/src/fsfw/storagemanager/StorageManagerIF.h;STORAGE_MANAGER_IF
0x2703; SM_IllegalStorageId;;3;fsfw/src/fsfw/storagemanager/StorageManagerIF.h;STORAGE_MANAGER_IF
0x2704; SM_DataDoesNotExist;;4;fsfw/src/fsfw/storagemanager/StorageManagerIF.h;STORAGE_MANAGER_IF
0x2705; SM_IllegalAddress;;5;fsfw/src/fsfw/storagemanager/StorageManagerIF.h;STORAGE_MANAGER_IF
0x2706; SM_PoolTooLarge;;6;fsfw/src/fsfw/storagemanager/StorageManagerIF.h;STORAGE_MANAGER_IF
0x2301; MT_TooDetailedRequest;;1;fsfw/src/fsfw/globalfunctions/matching/MatchTree.h;MATCH_TREE_CLASS
0x2302; MT_TooGeneralRequest;;2;fsfw/src/fsfw/globalfunctions/matching/MatchTree.h;MATCH_TREE_CLASS
0x2303; MT_NoMatch;;3;fsfw/src/fsfw/globalfunctions/matching/MatchTree.h;MATCH_TREE_CLASS
0x2304; MT_Full;;4;fsfw/src/fsfw/globalfunctions/matching/MatchTree.h;MATCH_TREE_CLASS
0x2305; MT_NewNodeCreated;;5;fsfw/src/fsfw/globalfunctions/matching/MatchTree.h;MATCH_TREE_CLASS
0x3e01; DLEE_StreamTooShort;;0x01;fsfw/src/fsfw/globalfunctions/DleEncoder.h;DLE_ENCODER
0x3e02; DLEE_DecodingError;;0x02;fsfw/src/fsfw/globalfunctions/DleEncoder.h;DLE_ENCODER
0x2e01; ASC_TooLongForTargetType;;1;fsfw/src/fsfw/globalfunctions/AsciiConverter.h;ASCII_CONVERTER
0x2e02; ASC_InvalidCharacters;;2;fsfw/src/fsfw/globalfunctions/AsciiConverter.h;ASCII_CONVERTER
0x2e03; ASC_BufferTooSmall;;0x3;fsfw/src/fsfw/globalfunctions/AsciiConverter.h;ASCII_CONVERTER
0x1c01; TCD_PacketLost;;1;fsfw/src/fsfw/tcdistribution/TcDistributor.h;PACKET_DISTRIBUTION
0x1c02; TCD_DestinationNotFound;;2;fsfw/src/fsfw/tcdistribution/TcDistributor.h;PACKET_DISTRIBUTION
0x1c03; TCD_ServiceIdAlreadyExists;;3;fsfw/src/fsfw/tcdistribution/TcDistributor.h;PACKET_DISTRIBUTION
0x1b00; TCC_IllegalApid;;0;fsfw/src/fsfw/tcdistribution/TcPacketCheckPUS.h;TC_PACKET_CHECK
0x1b01; TCC_IncompletePacket;;1;fsfw/src/fsfw/tcdistribution/TcPacketCheckPUS.h;TC_PACKET_CHECK
0x1b02; TCC_IncorrectChecksum;;2;fsfw/src/fsfw/tcdistribution/TcPacketCheckPUS.h;TC_PACKET_CHECK
0x1b03; TCC_IllegalPacketType;;3;fsfw/src/fsfw/tcdistribution/TcPacketCheckPUS.h;TC_PACKET_CHECK
0x1b04; TCC_IllegalPacketSubtype;;4;fsfw/src/fsfw/tcdistribution/TcPacketCheckPUS.h;TC_PACKET_CHECK
0x1b05; TCC_IncorrectPrimaryHeader;;5;fsfw/src/fsfw/tcdistribution/TcPacketCheckPUS.h;TC_PACKET_CHECK
0x1b06; TCC_IncorrectSecondaryHeader;;6;fsfw/src/fsfw/tcdistribution/TcPacketCheckPUS.h;TC_PACKET_CHECK
0x3901; MQI_Empty;;1;fsfw/src/fsfw/ipc/MessageQueueIF.h;MESSAGE_QUEUE_IF
0x3902; MQI_Full;No space left for more messages;2;fsfw/src/fsfw/ipc/MessageQueueIF.h;MESSAGE_QUEUE_IF
0x3903; MQI_NoReplyPartner;Returned if a reply method was called without partner;3;fsfw/src/fsfw/ipc/MessageQueueIF.h;MESSAGE_QUEUE_IF
0x3904; MQI_DestinationInvalid;Returned if the target destination is invalid.;4;fsfw/src/fsfw/ipc/MessageQueueIF.h;MESSAGE_QUEUE_IF
0xf01; CM_UnknownCommand;;1;fsfw/src/fsfw/ipc/CommandMessageIF.h;COMMAND_MESSAGE
0x601; PP_DoItMyself;;1;fsfw/src/fsfw/memory/HasMemoryIF.h;HAS_MEMORY_IF
0x602; PP_PointsToVariable;;2;fsfw/src/fsfw/memory/HasMemoryIF.h;HAS_MEMORY_IF
0x603; PP_PointsToMemory;;3;fsfw/src/fsfw/memory/HasMemoryIF.h;HAS_MEMORY_IF
0x604; PP_ActivityCompleted;;4;fsfw/src/fsfw/memory/HasMemoryIF.h;HAS_MEMORY_IF
0x605; PP_PointsToVectorUint8;;5;fsfw/src/fsfw/memory/HasMemoryIF.h;HAS_MEMORY_IF
0x606; PP_PointsToVectorUint16;;6;fsfw/src/fsfw/memory/HasMemoryIF.h;HAS_MEMORY_IF
0x607; PP_PointsToVectorUint32;;7;fsfw/src/fsfw/memory/HasMemoryIF.h;HAS_MEMORY_IF
0x608; PP_PointsToVectorFloat;;8;fsfw/src/fsfw/memory/HasMemoryIF.h;HAS_MEMORY_IF
0x6a0; PP_DumpNotSupported;;0xA0;fsfw/src/fsfw/memory/HasMemoryIF.h;HAS_MEMORY_IF
0x6e0; PP_InvalidSize;;0xE0;fsfw/src/fsfw/memory/HasMemoryIF.h;HAS_MEMORY_IF
0x6e1; PP_InvalidAddress;;0xE1;fsfw/src/fsfw/memory/HasMemoryIF.h;HAS_MEMORY_IF
0x6e2; PP_InvalidContent;;0xE2;fsfw/src/fsfw/memory/HasMemoryIF.h;HAS_MEMORY_IF
0x6e3; PP_UnalignedAccess;;0xE3;fsfw/src/fsfw/memory/HasMemoryIF.h;HAS_MEMORY_IF
0x6e4; PP_WriteProtected;;0xE4;fsfw/src/fsfw/memory/HasMemoryIF.h;HAS_MEMORY_IF
0x4200; FILS_GenericFileError;;0;fsfw/src/fsfw/memory/HasFileSystemIF.h;FILE_SYSTEM
0x4201; FILS_IsBusy;;1;fsfw/src/fsfw/memory/HasFileSystemIF.h;FILE_SYSTEM
0x4202; FILS_InvalidParameters;;2;fsfw/src/fsfw/memory/HasFileSystemIF.h;FILE_SYSTEM
0x4205; FILS_FileDoesNotExist;;5;fsfw/src/fsfw/memory/HasFileSystemIF.h;FILE_SYSTEM
0x4206; FILS_FileAlreadyExists;;6;fsfw/src/fsfw/memory/HasFileSystemIF.h;FILE_SYSTEM
0x4207; FILS_FileLocked;;7;fsfw/src/fsfw/memory/HasFileSystemIF.h;FILE_SYSTEM
0x420a; FILS_DirectoryDoesNotExist;;10;fsfw/src/fsfw/memory/HasFileSystemIF.h;FILE_SYSTEM
0x420b; FILS_DirectoryAlreadyExists;;11;fsfw/src/fsfw/memory/HasFileSystemIF.h;FILE_SYSTEM
0x420c; FILS_DirectoryNotEmpty;;12;fsfw/src/fsfw/memory/HasFileSystemIF.h;FILE_SYSTEM
0x420f; FILS_SequencePacketMissingWrite;;15;fsfw/src/fsfw/memory/HasFileSystemIF.h;FILE_SYSTEM
0x4210; FILS_SequencePacketMissingRead;;16;fsfw/src/fsfw/memory/HasFileSystemIF.h;FILE_SYSTEM
0x13e0; MH_UnknownCmd;;0xE0;fsfw/src/fsfw/memory/MemoryHelper.h;MEMORY_HELPER
0x13e1; MH_InvalidAddress;;0xE1;fsfw/src/fsfw/memory/MemoryHelper.h;MEMORY_HELPER
0x13e2; MH_InvalidSize;;0xE2;fsfw/src/fsfw/memory/MemoryHelper.h;MEMORY_HELPER
0x13e3; MH_StateMismatch;;0xE3;fsfw/src/fsfw/memory/MemoryHelper.h;MEMORY_HELPER
0x37a1; SGP4_InvalidEccentricity;;0xA1;fsfw/src/fsfw/coordinates/Sgp4Propagator.h;SGP4PROPAGATOR_CLASS
0x37a2; SGP4_InvalidMeanMotion;;0xA2;fsfw/src/fsfw/coordinates/Sgp4Propagator.h;SGP4PROPAGATOR_CLASS
0x37a3; SGP4_InvalidPerturbationElements;;0xA3;fsfw/src/fsfw/coordinates/Sgp4Propagator.h;SGP4PROPAGATOR_CLASS
0x37a4; SGP4_InvalidSemiLatusRectum;;0xA4;fsfw/src/fsfw/coordinates/Sgp4Propagator.h;SGP4PROPAGATOR_CLASS
0x37a5; SGP4_InvalidEpochElements;;0xA5;fsfw/src/fsfw/coordinates/Sgp4Propagator.h;SGP4PROPAGATOR_CLASS
0x37a6; SGP4_SatelliteHasDecayed;;0xA6;fsfw/src/fsfw/coordinates/Sgp4Propagator.h;SGP4PROPAGATOR_CLASS
0x37b1; SGP4_TleTooOld;;0xB1;fsfw/src/fsfw/coordinates/Sgp4Propagator.h;SGP4PROPAGATOR_CLASS
0x37b2; SGP4_TleNotInitialized;;0xB2;fsfw/src/fsfw/coordinates/Sgp4Propagator.h;SGP4PROPAGATOR_CLASS
0x1101; AL_Full;;0x01;fsfw/src/fsfw/container/ArrayList.h;ARRAY_LIST
0x1501; FM_KeyAlreadyExists;;0x01;fsfw/src/fsfw/container/FixedMap.h;FIXED_MAP
0x1502; FM_MapFull;;0x02;fsfw/src/fsfw/container/FixedMap.h;FIXED_MAP
0x1503; FM_KeyDoesNotExist;;0x03;fsfw/src/fsfw/container/FixedMap.h;FIXED_MAP
0x1801; FF_Full;;1;fsfw/src/fsfw/container/FIFOBase.h;FIFO_CLASS
0x1802; FF_Empty;;2;fsfw/src/fsfw/container/FIFOBase.h;FIFO_CLASS
0x1601; FMM_MapFull;;0x01;fsfw/src/fsfw/container/FixedOrderedMultimap.h;FIXED_MULTIMAP
0x1602; FMM_KeyDoesNotExist;;0x02;fsfw/src/fsfw/container/FixedOrderedMultimap.h;FIXED_MULTIMAP
0x3801; MUX_NotEnoughResources;;1;fsfw/src/fsfw/ipc/MutexIF.h;MUTEX_IF
0x3802; MUX_InsufficientMemory;;2;fsfw/src/fsfw/ipc/MutexIF.h;MUTEX_IF
0x3803; MUX_NoPrivilege;;3;fsfw/src/fsfw/ipc/MutexIF.h;MUTEX_IF
@@ -147,20 +112,23 @@
0x380a; MUX_MutexTimeout;;10;fsfw/src/fsfw/ipc/MutexIF.h;MUTEX_IF
0x380b; MUX_MutexInvalidId;;11;fsfw/src/fsfw/ipc/MutexIF.h;MUTEX_IF
0x380c; MUX_MutexDestroyedWhileWaiting;;12;fsfw/src/fsfw/ipc/MutexIF.h;MUTEX_IF
0x2801; TC_InvalidTargetState;;1;fsfw/src/fsfw/thermal/ThermalComponentIF.h;THERMAL_COMPONENT_IF
0x28f1; TC_AboveOperationalLimit;;0xF1;fsfw/src/fsfw/thermal/ThermalComponentIF.h;THERMAL_COMPONENT_IF
0x28f2; TC_BelowOperationalLimit;;0xF2;fsfw/src/fsfw/thermal/ThermalComponentIF.h;THERMAL_COMPONENT_IF
0x801; DPS_InvalidParameterDefinition;;1;fsfw/src/fsfw/datapool/DataSetIF.h;DATA_SET_CLASS
0x802; DPS_SetWasAlreadyRead;;2;fsfw/src/fsfw/datapool/DataSetIF.h;DATA_SET_CLASS
0x803; DPS_CommitingWithoutReading;;3;fsfw/src/fsfw/datapool/DataSetIF.h;DATA_SET_CLASS
0x804; DPS_DataSetUninitialised;;4;fsfw/src/fsfw/datapool/DataSetIF.h;DATA_SET_CLASS
0x805; DPS_DataSetFull;;5;fsfw/src/fsfw/datapool/DataSetIF.h;DATA_SET_CLASS
0x806; DPS_PoolVarNull;;6;fsfw/src/fsfw/datapool/DataSetIF.h;DATA_SET_CLASS
0x3ca0; PVA_InvalidReadWriteMode;;0xA0;fsfw/src/fsfw/datapool/PoolVariableIF.h;POOL_VARIABLE_IF
0x3ca1; PVA_InvalidPoolEntry;;0xA1;fsfw/src/fsfw/datapool/PoolVariableIF.h;POOL_VARIABLE_IF
0x3901; MQI_Empty;;1;fsfw/src/fsfw/ipc/MessageQueueIF.h;MESSAGE_QUEUE_IF
0x3902; MQI_Full;No space left for more messages;2;fsfw/src/fsfw/ipc/MessageQueueIF.h;MESSAGE_QUEUE_IF
0x3903; MQI_NoReplyPartner;Returned if a reply method was called without partner;3;fsfw/src/fsfw/ipc/MessageQueueIF.h;MESSAGE_QUEUE_IF
0x3904; MQI_DestinationInvalid;Returned if the target destination is invalid.;4;fsfw/src/fsfw/ipc/MessageQueueIF.h;MESSAGE_QUEUE_IF
0xf01; CM_UnknownCommand;;1;fsfw/src/fsfw/ipc/CommandMessageIF.h;COMMAND_MESSAGE
0xe01; HM_InvalidMode;;0x01;fsfw/src/fsfw/modes/HasModesIF.h;HAS_MODES_IF
0xe02; HM_TransNotAllowed;;0x02;fsfw/src/fsfw/modes/HasModesIF.h;HAS_MODES_IF
0xe03; HM_InTransition;;0x03;fsfw/src/fsfw/modes/HasModesIF.h;HAS_MODES_IF
0xe04; HM_InvalidSubmode;;0x04;fsfw/src/fsfw/modes/HasModesIF.h;HAS_MODES_IF
0xc02; MS_InvalidEntry;;0x02;fsfw/src/fsfw/subsystem/modes/ModeStoreIF.h;MODE_STORE_IF
0xc03; MS_TooManyElements;;0x03;fsfw/src/fsfw/subsystem/modes/ModeStoreIF.h;MODE_STORE_IF
0xc04; MS_CantStoreEmpty;;0x04;fsfw/src/fsfw/subsystem/modes/ModeStoreIF.h;MODE_STORE_IF
0xb01; SB_ChildNotFound;;0x01;fsfw/src/fsfw/subsystem/SubsystemBase.h;SUBSYSTEM_BASE
0xb02; SB_ChildInfoUpdated;;0x02;fsfw/src/fsfw/subsystem/SubsystemBase.h;SUBSYSTEM_BASE
0xb03; SB_ChildDoesntHaveModes;;0x03;fsfw/src/fsfw/subsystem/SubsystemBase.h;SUBSYSTEM_BASE
0xb04; SB_CouldNotInsertChild;;0x04;fsfw/src/fsfw/subsystem/SubsystemBase.h;SUBSYSTEM_BASE
0xb05; SB_TableContainsInvalidObjectId;;0x05;fsfw/src/fsfw/subsystem/SubsystemBase.h;SUBSYSTEM_BASE
0xd01; SS_SequenceAlreadyExists;;0x01;fsfw/src/fsfw/subsystem/Subsystem.h;SUBSYSTEM
0xd02; SS_TableAlreadyExists;;0x02;fsfw/src/fsfw/subsystem/Subsystem.h;SUBSYSTEM
0xd03; SS_TableDoesNotExist;;0x03;fsfw/src/fsfw/subsystem/Subsystem.h;SUBSYSTEM
@@ -175,53 +143,7 @@
0xd0e; SS_TableInUse;;0x0E;fsfw/src/fsfw/subsystem/Subsystem.h;SUBSYSTEM
0xda1; SS_TargetTableNotReached;;0xA1;fsfw/src/fsfw/subsystem/Subsystem.h;SUBSYSTEM
0xda2; SS_TableCheckFailed;;0xA2;fsfw/src/fsfw/subsystem/Subsystem.h;SUBSYSTEM
0xb01; SB_ChildNotFound;;0x01;fsfw/src/fsfw/subsystem/SubsystemBase.h;SUBSYSTEM_BASE
0xb02; SB_ChildInfoUpdated;;0x02;fsfw/src/fsfw/subsystem/SubsystemBase.h;SUBSYSTEM_BASE
0xb03; SB_ChildDoesntHaveModes;;0x03;fsfw/src/fsfw/subsystem/SubsystemBase.h;SUBSYSTEM_BASE
0xb04; SB_CouldNotInsertChild;;0x04;fsfw/src/fsfw/subsystem/SubsystemBase.h;SUBSYSTEM_BASE
0xb05; SB_TableContainsInvalidObjectId;;0x05;fsfw/src/fsfw/subsystem/SubsystemBase.h;SUBSYSTEM_BASE
0xb00; SB_ConnBroken;;0;fsfw/src/fsfw/osal/common/TcpTmTcServer.h;SUBSYSTEM_BASE
0x2901; IEC_NoConfigurationTable;;0x01;fsfw/src/fsfw/osal/InternalErrorCodes.h;INTERNAL_ERROR_CODES
0x2902; IEC_NoCpuTable;;0x02;fsfw/src/fsfw/osal/InternalErrorCodes.h;INTERNAL_ERROR_CODES
0x2903; IEC_InvalidWorkspaceAddress;;0x03;fsfw/src/fsfw/osal/InternalErrorCodes.h;INTERNAL_ERROR_CODES
0x2904; IEC_TooLittleWorkspace;;0x04;fsfw/src/fsfw/osal/InternalErrorCodes.h;INTERNAL_ERROR_CODES
0x2905; IEC_WorkspaceAllocation;;0x05;fsfw/src/fsfw/osal/InternalErrorCodes.h;INTERNAL_ERROR_CODES
0x2906; IEC_InterruptStackTooSmall;;0x06;fsfw/src/fsfw/osal/InternalErrorCodes.h;INTERNAL_ERROR_CODES
0x2907; IEC_ThreadExitted;;0x07;fsfw/src/fsfw/osal/InternalErrorCodes.h;INTERNAL_ERROR_CODES
0x2908; IEC_InconsistentMpInformation;;0x08;fsfw/src/fsfw/osal/InternalErrorCodes.h;INTERNAL_ERROR_CODES
0x2909; IEC_InvalidNode;;0x09;fsfw/src/fsfw/osal/InternalErrorCodes.h;INTERNAL_ERROR_CODES
0x290a; IEC_NoMpci;;0x0a;fsfw/src/fsfw/osal/InternalErrorCodes.h;INTERNAL_ERROR_CODES
0x290b; IEC_BadPacket;;0x0b;fsfw/src/fsfw/osal/InternalErrorCodes.h;INTERNAL_ERROR_CODES
0x290c; IEC_OutOfPackets;;0x0c;fsfw/src/fsfw/osal/InternalErrorCodes.h;INTERNAL_ERROR_CODES
0x290d; IEC_OutOfGlobalObjects;;0x0d;fsfw/src/fsfw/osal/InternalErrorCodes.h;INTERNAL_ERROR_CODES
0x290e; IEC_OutOfProxies;;0x0e;fsfw/src/fsfw/osal/InternalErrorCodes.h;INTERNAL_ERROR_CODES
0x290f; IEC_InvalidGlobalId;;0x0f;fsfw/src/fsfw/osal/InternalErrorCodes.h;INTERNAL_ERROR_CODES
0x2910; IEC_BadStackHook;;0x10;fsfw/src/fsfw/osal/InternalErrorCodes.h;INTERNAL_ERROR_CODES
0x2911; IEC_BadAttributes;;0x11;fsfw/src/fsfw/osal/InternalErrorCodes.h;INTERNAL_ERROR_CODES
0x2912; IEC_ImplementationKeyCreateInconsistency;;0x12;fsfw/src/fsfw/osal/InternalErrorCodes.h;INTERNAL_ERROR_CODES
0x2913; IEC_ImplementationBlockingOperationCancel;;0x13;fsfw/src/fsfw/osal/InternalErrorCodes.h;INTERNAL_ERROR_CODES
0x2914; IEC_MutexObtainFromBadState;;0x14;fsfw/src/fsfw/osal/InternalErrorCodes.h;INTERNAL_ERROR_CODES
0x2915; IEC_UnlimitedAndMaximumIs0;;0x15;fsfw/src/fsfw/osal/InternalErrorCodes.h;INTERNAL_ERROR_CODES
0x1401; SE_BufferTooShort;;1;fsfw/src/fsfw/serialize/SerializeIF.h;SERIALIZE_IF
0x1402; SE_StreamTooShort;;2;fsfw/src/fsfw/serialize/SerializeIF.h;SERIALIZE_IF
0x1403; SE_TooManyElements;;3;fsfw/src/fsfw/serialize/SerializeIF.h;SERIALIZE_IF
0x4a00; SPPA_NoPacketFound;;0x00;fsfw/src/fsfw/tmtcservices/SpacePacketParser.h;SPACE_PACKET_PARSER
0x4a01; SPPA_SplitPacket;;0x01;fsfw/src/fsfw/tmtcservices/SpacePacketParser.h;SPACE_PACKET_PARSER
0x1d01; PUS_ActivityStarted;;1;fsfw/src/fsfw/tmtcservices/AcceptsTelecommandsIF.h;ACCEPTS_TELECOMMANDS_IF
0x1d02; PUS_InvalidSubservice;;2;fsfw/src/fsfw/tmtcservices/AcceptsTelecommandsIF.h;ACCEPTS_TELECOMMANDS_IF
0x1d03; PUS_IllegalApplicationData;;3;fsfw/src/fsfw/tmtcservices/AcceptsTelecommandsIF.h;ACCEPTS_TELECOMMANDS_IF
0x1d04; PUS_SendTmFailed;;4;fsfw/src/fsfw/tmtcservices/AcceptsTelecommandsIF.h;ACCEPTS_TELECOMMANDS_IF
0x1d05; PUS_Timeout;;5;fsfw/src/fsfw/tmtcservices/AcceptsTelecommandsIF.h;ACCEPTS_TELECOMMANDS_IF
0x1f01; CSB_ExecutionComplete;;1;fsfw/src/fsfw/tmtcservices/CommandingServiceBase.h;COMMAND_SERVICE_BASE
0x1f02; CSB_NoStepMessage;;2;fsfw/src/fsfw/tmtcservices/CommandingServiceBase.h;COMMAND_SERVICE_BASE
0x1f03; CSB_ObjectBusy;;3;fsfw/src/fsfw/tmtcservices/CommandingServiceBase.h;COMMAND_SERVICE_BASE
0x1f04; CSB_Busy;;4;fsfw/src/fsfw/tmtcservices/CommandingServiceBase.h;COMMAND_SERVICE_BASE
0x1f05; CSB_InvalidTc;;5;fsfw/src/fsfw/tmtcservices/CommandingServiceBase.h;COMMAND_SERVICE_BASE
0x1f06; CSB_InvalidObject;;6;fsfw/src/fsfw/tmtcservices/CommandingServiceBase.h;COMMAND_SERVICE_BASE
0x1f07; CSB_InvalidReply;;7;fsfw/src/fsfw/tmtcservices/CommandingServiceBase.h;COMMAND_SERVICE_BASE
0x2500; FDI_YourFault;;0;fsfw/src/fsfw/fdir/ConfirmsFailuresIF.h;HANDLES_FAILURES_IF
0x2501; FDI_MyFault;;1;fsfw/src/fsfw/fdir/ConfirmsFailuresIF.h;HANDLES_FAILURES_IF
0x2502; FDI_ConfirmLater;;2;fsfw/src/fsfw/fdir/ConfirmsFailuresIF.h;HANDLES_FAILURES_IF
0x2401; EV_ListenerNotFound;;1;fsfw/src/fsfw/events/EventManagerIF.h;EVENT_MANAGER_IF
0x4e1; RMP_CommandNoDescriptorsAvailable;;0xE1;fsfw/src/fsfw/rmap/RMAP.h;RMAP_CHANNEL
0x4e2; RMP_CommandBufferFull;;0xE2;fsfw/src/fsfw/rmap/RMAP.h;RMAP_CHANNEL
0x4e3; RMP_CommandChannelOutOfRange;;0xE3;fsfw/src/fsfw/rmap/RMAP.h;RMAP_CHANNEL
@@ -262,6 +184,128 @@
0x40a; RMP_ReplyCommandNotImplementedOrNotAuthorised;;10;fsfw/src/fsfw/rmap/RMAP.h;RMAP_CHANNEL
0x40b; RMP_ReplyRmwDataLengthError;;11;fsfw/src/fsfw/rmap/RMAP.h;RMAP_CHANNEL
0x40c; RMP_ReplyInvalidTargetLogicalAddress;;12;fsfw/src/fsfw/rmap/RMAP.h;RMAP_CHANNEL
0x1401; SE_BufferTooShort;;1;fsfw/src/fsfw/serialize/SerializeIF.h;SERIALIZE_IF
0x1402; SE_StreamTooShort;;2;fsfw/src/fsfw/serialize/SerializeIF.h;SERIALIZE_IF
0x1403; SE_TooManyElements;;3;fsfw/src/fsfw/serialize/SerializeIF.h;SERIALIZE_IF
0x3ca0; PVA_InvalidReadWriteMode;;0xA0;fsfw/src/fsfw/datapool/PoolVariableIF.h;POOL_VARIABLE_IF
0x3ca1; PVA_InvalidPoolEntry;;0xA1;fsfw/src/fsfw/datapool/PoolVariableIF.h;POOL_VARIABLE_IF
0x801; DPS_InvalidParameterDefinition;;1;fsfw/src/fsfw/datapool/DataSetIF.h;DATA_SET_CLASS
0x802; DPS_SetWasAlreadyRead;;2;fsfw/src/fsfw/datapool/DataSetIF.h;DATA_SET_CLASS
0x803; DPS_CommitingWithoutReading;;3;fsfw/src/fsfw/datapool/DataSetIF.h;DATA_SET_CLASS
0x804; DPS_DataSetUninitialised;;4;fsfw/src/fsfw/datapool/DataSetIF.h;DATA_SET_CLASS
0x805; DPS_DataSetFull;;5;fsfw/src/fsfw/datapool/DataSetIF.h;DATA_SET_CLASS
0x806; DPS_PoolVarNull;;6;fsfw/src/fsfw/datapool/DataSetIF.h;DATA_SET_CLASS
0x1b00; TCC_IllegalApid;;0;fsfw/src/fsfw/tcdistribution/TcPacketCheckPUS.h;TC_PACKET_CHECK
0x1b01; TCC_IncompletePacket;;1;fsfw/src/fsfw/tcdistribution/TcPacketCheckPUS.h;TC_PACKET_CHECK
0x1b02; TCC_IncorrectChecksum;;2;fsfw/src/fsfw/tcdistribution/TcPacketCheckPUS.h;TC_PACKET_CHECK
0x1b03; TCC_IllegalPacketType;;3;fsfw/src/fsfw/tcdistribution/TcPacketCheckPUS.h;TC_PACKET_CHECK
0x1b04; TCC_IllegalPacketSubtype;;4;fsfw/src/fsfw/tcdistribution/TcPacketCheckPUS.h;TC_PACKET_CHECK
0x1b05; TCC_IncorrectPrimaryHeader;;5;fsfw/src/fsfw/tcdistribution/TcPacketCheckPUS.h;TC_PACKET_CHECK
0x1b06; TCC_IncorrectSecondaryHeader;;6;fsfw/src/fsfw/tcdistribution/TcPacketCheckPUS.h;TC_PACKET_CHECK
0x1c01; TCD_PacketLost;;1;fsfw/src/fsfw/tcdistribution/TcDistributor.h;PACKET_DISTRIBUTION
0x1c02; TCD_DestinationNotFound;;2;fsfw/src/fsfw/tcdistribution/TcDistributor.h;PACKET_DISTRIBUTION
0x1c03; TCD_ServiceIdAlreadyExists;;3;fsfw/src/fsfw/tcdistribution/TcDistributor.h;PACKET_DISTRIBUTION
0x2f01; POS_InPowerTransition;;1;fsfw/src/fsfw/power/PowerSwitcher.h;POWER_SWITCHER
0x2f02; POS_SwitchStateMismatch;;2;fsfw/src/fsfw/power/PowerSwitcher.h;POWER_SWITCHER
0x501; PS_SwitchOn;;1;fsfw/src/fsfw/power/PowerSwitchIF.h;POWER_SWITCH_IF
0x500; PS_SwitchOff;;0;fsfw/src/fsfw/power/PowerSwitchIF.h;POWER_SWITCH_IF
0x502; PS_SwitchTimeout;;2;fsfw/src/fsfw/power/PowerSwitchIF.h;POWER_SWITCH_IF
0x503; PS_FuseOn;;3;fsfw/src/fsfw/power/PowerSwitchIF.h;POWER_SWITCH_IF
0x504; PS_FuseOff;;4;fsfw/src/fsfw/power/PowerSwitchIF.h;POWER_SWITCH_IF
0x3a00; SPH_ConnBroken;;0;fsfw/src/fsfw/osal/common/TcpTmTcServer.h;SEMAPHORE_IF
0x2901; IEC_NoConfigurationTable;;0x01;fsfw/src/fsfw/osal/InternalErrorCodes.h;INTERNAL_ERROR_CODES
0x2902; IEC_NoCpuTable;;0x02;fsfw/src/fsfw/osal/InternalErrorCodes.h;INTERNAL_ERROR_CODES
0x2903; IEC_InvalidWorkspaceAddress;;0x03;fsfw/src/fsfw/osal/InternalErrorCodes.h;INTERNAL_ERROR_CODES
0x2904; IEC_TooLittleWorkspace;;0x04;fsfw/src/fsfw/osal/InternalErrorCodes.h;INTERNAL_ERROR_CODES
0x2905; IEC_WorkspaceAllocation;;0x05;fsfw/src/fsfw/osal/InternalErrorCodes.h;INTERNAL_ERROR_CODES
0x2906; IEC_InterruptStackTooSmall;;0x06;fsfw/src/fsfw/osal/InternalErrorCodes.h;INTERNAL_ERROR_CODES
0x2907; IEC_ThreadExitted;;0x07;fsfw/src/fsfw/osal/InternalErrorCodes.h;INTERNAL_ERROR_CODES
0x2908; IEC_InconsistentMpInformation;;0x08;fsfw/src/fsfw/osal/InternalErrorCodes.h;INTERNAL_ERROR_CODES
0x2909; IEC_InvalidNode;;0x09;fsfw/src/fsfw/osal/InternalErrorCodes.h;INTERNAL_ERROR_CODES
0x290a; IEC_NoMpci;;0x0a;fsfw/src/fsfw/osal/InternalErrorCodes.h;INTERNAL_ERROR_CODES
0x290b; IEC_BadPacket;;0x0b;fsfw/src/fsfw/osal/InternalErrorCodes.h;INTERNAL_ERROR_CODES
0x290c; IEC_OutOfPackets;;0x0c;fsfw/src/fsfw/osal/InternalErrorCodes.h;INTERNAL_ERROR_CODES
0x290d; IEC_OutOfGlobalObjects;;0x0d;fsfw/src/fsfw/osal/InternalErrorCodes.h;INTERNAL_ERROR_CODES
0x290e; IEC_OutOfProxies;;0x0e;fsfw/src/fsfw/osal/InternalErrorCodes.h;INTERNAL_ERROR_CODES
0x290f; IEC_InvalidGlobalId;;0x0f;fsfw/src/fsfw/osal/InternalErrorCodes.h;INTERNAL_ERROR_CODES
0x2910; IEC_BadStackHook;;0x10;fsfw/src/fsfw/osal/InternalErrorCodes.h;INTERNAL_ERROR_CODES
0x2911; IEC_BadAttributes;;0x11;fsfw/src/fsfw/osal/InternalErrorCodes.h;INTERNAL_ERROR_CODES
0x2912; IEC_ImplementationKeyCreateInconsistency;;0x12;fsfw/src/fsfw/osal/InternalErrorCodes.h;INTERNAL_ERROR_CODES
0x2913; IEC_ImplementationBlockingOperationCancel;;0x13;fsfw/src/fsfw/osal/InternalErrorCodes.h;INTERNAL_ERROR_CODES
0x2914; IEC_MutexObtainFromBadState;;0x14;fsfw/src/fsfw/osal/InternalErrorCodes.h;INTERNAL_ERROR_CODES
0x2915; IEC_UnlimitedAndMaximumIs0;;0x15;fsfw/src/fsfw/osal/InternalErrorCodes.h;INTERNAL_ERROR_CODES
0x2500; FDI_YourFault;;0;fsfw/src/fsfw/fdir/ConfirmsFailuresIF.h;HANDLES_FAILURES_IF
0x2501; FDI_MyFault;;1;fsfw/src/fsfw/fdir/ConfirmsFailuresIF.h;HANDLES_FAILURES_IF
0x2502; FDI_ConfirmLater;;2;fsfw/src/fsfw/fdir/ConfirmsFailuresIF.h;HANDLES_FAILURES_IF
0x201; OM_InsertionFailed;;1;fsfw/src/fsfw/objectmanager/ObjectManagerIF.h;OBJECT_MANAGER_IF
0x202; OM_NotFound;;2;fsfw/src/fsfw/objectmanager/ObjectManagerIF.h;OBJECT_MANAGER_IF
0x203; OM_ChildInitFailed;;3;fsfw/src/fsfw/objectmanager/ObjectManagerIF.h;OBJECT_MANAGER_IF
0x204; OM_InternalErrReporterUninit;;4;fsfw/src/fsfw/objectmanager/ObjectManagerIF.h;OBJECT_MANAGER_IF
0x2101; TMF_Busy;;1;fsfw/src/fsfw/tmstorage/TmStoreFrontendIF.h;TM_STORE_FRONTEND_IF
0x2102; TMF_LastPacketFound;;2;fsfw/src/fsfw/tmstorage/TmStoreFrontendIF.h;TM_STORE_FRONTEND_IF
0x2103; TMF_StopFetch;;3;fsfw/src/fsfw/tmstorage/TmStoreFrontendIF.h;TM_STORE_FRONTEND_IF
0x2104; TMF_Timeout;;4;fsfw/src/fsfw/tmstorage/TmStoreFrontendIF.h;TM_STORE_FRONTEND_IF
0x2105; TMF_TmChannelFull;;5;fsfw/src/fsfw/tmstorage/TmStoreFrontendIF.h;TM_STORE_FRONTEND_IF
0x2106; TMF_NotStored;;6;fsfw/src/fsfw/tmstorage/TmStoreFrontendIF.h;TM_STORE_FRONTEND_IF
0x2107; TMF_AllDeleted;;7;fsfw/src/fsfw/tmstorage/TmStoreFrontendIF.h;TM_STORE_FRONTEND_IF
0x2108; TMF_InvalidData;;8;fsfw/src/fsfw/tmstorage/TmStoreFrontendIF.h;TM_STORE_FRONTEND_IF
0x2109; TMF_NotReady;;9;fsfw/src/fsfw/tmstorage/TmStoreFrontendIF.h;TM_STORE_FRONTEND_IF
0x2001; TMB_Busy;;1;fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h;TM_STORE_BACKEND_IF
0x2002; TMB_Full;;2;fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h;TM_STORE_BACKEND_IF
0x2003; TMB_Empty;;3;fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h;TM_STORE_BACKEND_IF
0x2004; TMB_NullRequested;;4;fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h;TM_STORE_BACKEND_IF
0x2005; TMB_TooLarge;;5;fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h;TM_STORE_BACKEND_IF
0x2006; TMB_NotReady;;6;fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h;TM_STORE_BACKEND_IF
0x2007; TMB_DumpError;;7;fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h;TM_STORE_BACKEND_IF
0x2008; TMB_CrcError;;8;fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h;TM_STORE_BACKEND_IF
0x2009; TMB_Timeout;;9;fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h;TM_STORE_BACKEND_IF
0x200a; TMB_IdlePacketFound;;10;fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h;TM_STORE_BACKEND_IF
0x200b; TMB_TelecommandFound;;11;fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h;TM_STORE_BACKEND_IF
0x200c; TMB_NoPusATm;;12;fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h;TM_STORE_BACKEND_IF
0x200d; TMB_TooSmall;;13;fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h;TM_STORE_BACKEND_IF
0x200e; TMB_BlockNotFound;;14;fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h;TM_STORE_BACKEND_IF
0x200f; TMB_InvalidRequest;;15;fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h;TM_STORE_BACKEND_IF
0x2c01; PAW_UnknownDatatype;;0x01;fsfw/src/fsfw/parameters/ParameterWrapper.h;PARAMETER_WRAPPER
0x2c02; PAW_DatatypeMissmatch;;0x02;fsfw/src/fsfw/parameters/ParameterWrapper.h;PARAMETER_WRAPPER
0x2c03; PAW_Readonly;;0x03;fsfw/src/fsfw/parameters/ParameterWrapper.h;PARAMETER_WRAPPER
0x2c04; PAW_TooBig;;0x04;fsfw/src/fsfw/parameters/ParameterWrapper.h;PARAMETER_WRAPPER
0x2c05; PAW_SourceNotSet;;0x05;fsfw/src/fsfw/parameters/ParameterWrapper.h;PARAMETER_WRAPPER
0x2c06; PAW_OutOfBounds;;0x06;fsfw/src/fsfw/parameters/ParameterWrapper.h;PARAMETER_WRAPPER
0x2c07; PAW_NotSet;;0x07;fsfw/src/fsfw/parameters/ParameterWrapper.h;PARAMETER_WRAPPER
0x2c08; PAW_ColumnOrRowsZero;;0x08;fsfw/src/fsfw/parameters/ParameterWrapper.h;PARAMETER_WRAPPER
0x2d01; HPA_InvalidIdentifierId;;0x01;fsfw/src/fsfw/parameters/HasParametersIF.h;HAS_PARAMETERS_IF
0x2d02; HPA_InvalidDomainId;;0x02;fsfw/src/fsfw/parameters/HasParametersIF.h;HAS_PARAMETERS_IF
0x2d03; HPA_InvalidValue;;0x03;fsfw/src/fsfw/parameters/HasParametersIF.h;HAS_PARAMETERS_IF
0x2d05; HPA_ReadOnly;;0x05;fsfw/src/fsfw/parameters/HasParametersIF.h;HAS_PARAMETERS_IF
0x3a01; SPH_SemaphoreTimeout;;1;fsfw/src/fsfw/tasks/SemaphoreIF.h;SEMAPHORE_IF
0x3a02; SPH_SemaphoreNotOwned;;2;fsfw/src/fsfw/tasks/SemaphoreIF.h;SEMAPHORE_IF
0x3a03; SPH_SemaphoreInvalid;;3;fsfw/src/fsfw/tasks/SemaphoreIF.h;SEMAPHORE_IF
0x1a01; TRC_NotEnoughSensors;;1;fsfw/src/fsfw/monitoring/TriplexMonitor.h;TRIPLE_REDUNDACY_CHECK
0x1a02; TRC_LowestValueOol;;2;fsfw/src/fsfw/monitoring/TriplexMonitor.h;TRIPLE_REDUNDACY_CHECK
0x1a03; TRC_HighestValueOol;;3;fsfw/src/fsfw/monitoring/TriplexMonitor.h;TRIPLE_REDUNDACY_CHECK
0x1a04; TRC_BothValuesOol;;4;fsfw/src/fsfw/monitoring/TriplexMonitor.h;TRIPLE_REDUNDACY_CHECK
0x1a05; TRC_DuplexOol;;5;fsfw/src/fsfw/monitoring/TriplexMonitor.h;TRIPLE_REDUNDACY_CHECK
0x3001; LIM_Unchecked;;1;fsfw/src/fsfw/monitoring/MonitoringIF.h;LIMITS_IF
0x3002; LIM_Invalid;;2;fsfw/src/fsfw/monitoring/MonitoringIF.h;LIMITS_IF
0x3003; LIM_Unselected;;3;fsfw/src/fsfw/monitoring/MonitoringIF.h;LIMITS_IF
0x3004; LIM_BelowLowLimit;;4;fsfw/src/fsfw/monitoring/MonitoringIF.h;LIMITS_IF
0x3005; LIM_AboveHighLimit;;5;fsfw/src/fsfw/monitoring/MonitoringIF.h;LIMITS_IF
0x3006; LIM_UnexpectedValue;;6;fsfw/src/fsfw/monitoring/MonitoringIF.h;LIMITS_IF
0x3007; LIM_OutOfRange;;7;fsfw/src/fsfw/monitoring/MonitoringIF.h;LIMITS_IF
0x30a0; LIM_FirstSample;;0xA0;fsfw/src/fsfw/monitoring/MonitoringIF.h;LIMITS_IF
0x30e0; LIM_InvalidSize;;0xE0;fsfw/src/fsfw/monitoring/MonitoringIF.h;LIMITS_IF
0x30e1; LIM_WrongType;;0xE1;fsfw/src/fsfw/monitoring/MonitoringIF.h;LIMITS_IF
0x30e2; LIM_WrongPid;;0xE2;fsfw/src/fsfw/monitoring/MonitoringIF.h;LIMITS_IF
0x30e3; LIM_WrongLimitId;;0xE3;fsfw/src/fsfw/monitoring/MonitoringIF.h;LIMITS_IF
0x30ee; LIM_MonitorNotFound;;0xEE;fsfw/src/fsfw/monitoring/MonitoringIF.h;LIMITS_IF
0x3501; CFDP_InvalidTlvType;;1;fsfw/src/fsfw/cfdp/definitions.h;CFDP
0x3502; CFDP_InvalidDirectiveFields;;2;fsfw/src/fsfw/cfdp/definitions.h;CFDP
0x3503; CFDP_InvalidPduDatafieldLen;;3;fsfw/src/fsfw/cfdp/definitions.h;CFDP
0x3504; CFDP_InvalidAckDirectiveFields;;4;fsfw/src/fsfw/cfdp/definitions.h;CFDP
0x3505; CFDP_MetadataCantParseOptions;;5;fsfw/src/fsfw/cfdp/definitions.h;CFDP
0x3506; CFDP_FinishedCantParseFsResponses;;6;fsfw/src/fsfw/cfdp/definitions.h;CFDP
0x3508; CFDP_FilestoreRequiresSecondFile;;8;fsfw/src/fsfw/cfdp/definitions.h;CFDP
0x3509; CFDP_FilestoreResponseCantParseFsMessage;;9;fsfw/src/fsfw/cfdp/definitions.h;CFDP
0x2b01; CCS_BcIsSetVrCommand;;0x01;fsfw/src/fsfw/datalinklayer/CCSDSReturnValuesIF.h;CCSDS_HANDLER_IF
0x2b02; CCS_BcIsUnlockCommand;;0x02;fsfw/src/fsfw/datalinklayer/CCSDSReturnValuesIF.h;CCSDS_HANDLER_IF
0x2bb0; CCS_BcIllegalCommand;;0xB0;fsfw/src/fsfw/datalinklayer/CCSDSReturnValuesIF.h;CCSDS_HANDLER_IF
@@ -291,97 +335,15 @@
0x2bd1; CCS_ShorterThanHeader;;0xD1;fsfw/src/fsfw/datalinklayer/CCSDSReturnValuesIF.h;CCSDS_HANDLER_IF
0x2bd2; CCS_TooShortBlockedPacket;;0xD2;fsfw/src/fsfw/datalinklayer/CCSDSReturnValuesIF.h;CCSDS_HANDLER_IF
0x2bd3; CCS_TooShortMapExtraction;;0xD3;fsfw/src/fsfw/datalinklayer/CCSDSReturnValuesIF.h;CCSDS_HANDLER_IF
0x37a1; SGP4_InvalidEccentricity;;0xA1;fsfw/src/fsfw/coordinates/Sgp4Propagator.h;SGP4PROPAGATOR_CLASS
0x37a2; SGP4_InvalidMeanMotion;;0xA2;fsfw/src/fsfw/coordinates/Sgp4Propagator.h;SGP4PROPAGATOR_CLASS
0x37a3; SGP4_InvalidPerturbationElements;;0xA3;fsfw/src/fsfw/coordinates/Sgp4Propagator.h;SGP4PROPAGATOR_CLASS
0x37a4; SGP4_InvalidSemiLatusRectum;;0xA4;fsfw/src/fsfw/coordinates/Sgp4Propagator.h;SGP4PROPAGATOR_CLASS
0x37a5; SGP4_InvalidEpochElements;;0xA5;fsfw/src/fsfw/coordinates/Sgp4Propagator.h;SGP4PROPAGATOR_CLASS
0x37a6; SGP4_SatelliteHasDecayed;;0xA6;fsfw/src/fsfw/coordinates/Sgp4Propagator.h;SGP4PROPAGATOR_CLASS
0x37b1; SGP4_TleTooOld;;0xB1;fsfw/src/fsfw/coordinates/Sgp4Propagator.h;SGP4PROPAGATOR_CLASS
0x37b2; SGP4_TleNotInitialized;;0xB2;fsfw/src/fsfw/coordinates/Sgp4Propagator.h;SGP4PROPAGATOR_CLASS
0x13e0; MH_UnknownCmd;;0xE0;fsfw/src/fsfw/memory/MemoryHelper.h;MEMORY_HELPER
0x13e1; MH_InvalidAddress;;0xE1;fsfw/src/fsfw/memory/MemoryHelper.h;MEMORY_HELPER
0x13e2; MH_InvalidSize;;0xE2;fsfw/src/fsfw/memory/MemoryHelper.h;MEMORY_HELPER
0x13e3; MH_StateMismatch;;0xE3;fsfw/src/fsfw/memory/MemoryHelper.h;MEMORY_HELPER
0x4100; FILS_GenericFileError;;0;fsfw/src/fsfw/memory/HasFileSystemIF.h;FILE_SYSTEM
0x4101; FILS_IsBusy;;1;fsfw/src/fsfw/memory/HasFileSystemIF.h;FILE_SYSTEM
0x4102; FILS_InvalidParameters;;2;fsfw/src/fsfw/memory/HasFileSystemIF.h;FILE_SYSTEM
0x4105; FILS_FileDoesNotExist;;5;fsfw/src/fsfw/memory/HasFileSystemIF.h;FILE_SYSTEM
0x4106; FILS_FileAlreadyExists;;6;fsfw/src/fsfw/memory/HasFileSystemIF.h;FILE_SYSTEM
0x4107; FILS_FileLocked;;7;fsfw/src/fsfw/memory/HasFileSystemIF.h;FILE_SYSTEM
0x410a; FILS_DirectoryDoesNotExist;;10;fsfw/src/fsfw/memory/HasFileSystemIF.h;FILE_SYSTEM
0x410b; FILS_DirectoryAlreadyExists;;11;fsfw/src/fsfw/memory/HasFileSystemIF.h;FILE_SYSTEM
0x410c; FILS_DirectoryNotEmpty;;12;fsfw/src/fsfw/memory/HasFileSystemIF.h;FILE_SYSTEM
0x410f; FILS_SequencePacketMissingWrite;;15;fsfw/src/fsfw/memory/HasFileSystemIF.h;FILE_SYSTEM
0x4110; FILS_SequencePacketMissingRead;;16;fsfw/src/fsfw/memory/HasFileSystemIF.h;FILE_SYSTEM
0x601; PP_DoItMyself;;1;fsfw/src/fsfw/memory/HasMemoryIF.h;HAS_MEMORY_IF
0x602; PP_PointsToVariable;;2;fsfw/src/fsfw/memory/HasMemoryIF.h;HAS_MEMORY_IF
0x603; PP_PointsToMemory;;3;fsfw/src/fsfw/memory/HasMemoryIF.h;HAS_MEMORY_IF
0x604; PP_ActivityCompleted;;4;fsfw/src/fsfw/memory/HasMemoryIF.h;HAS_MEMORY_IF
0x605; PP_PointsToVectorUint8;;5;fsfw/src/fsfw/memory/HasMemoryIF.h;HAS_MEMORY_IF
0x606; PP_PointsToVectorUint16;;6;fsfw/src/fsfw/memory/HasMemoryIF.h;HAS_MEMORY_IF
0x607; PP_PointsToVectorUint32;;7;fsfw/src/fsfw/memory/HasMemoryIF.h;HAS_MEMORY_IF
0x608; PP_PointsToVectorFloat;;8;fsfw/src/fsfw/memory/HasMemoryIF.h;HAS_MEMORY_IF
0x6a0; PP_DumpNotSupported;;0xA0;fsfw/src/fsfw/memory/HasMemoryIF.h;HAS_MEMORY_IF
0x6e0; PP_InvalidSize;;0xE0;fsfw/src/fsfw/memory/HasMemoryIF.h;HAS_MEMORY_IF
0x6e1; PP_InvalidAddress;;0xE1;fsfw/src/fsfw/memory/HasMemoryIF.h;HAS_MEMORY_IF
0x6e2; PP_InvalidContent;;0xE2;fsfw/src/fsfw/memory/HasMemoryIF.h;HAS_MEMORY_IF
0x6e3; PP_UnalignedAccess;;0xE3;fsfw/src/fsfw/memory/HasMemoryIF.h;HAS_MEMORY_IF
0x6e4; PP_WriteProtected;;0xE4;fsfw/src/fsfw/memory/HasMemoryIF.h;HAS_MEMORY_IF
0x201; OM_InsertionFailed;;1;fsfw/src/fsfw/objectmanager/ObjectManagerIF.h;OBJECT_MANAGER_IF
0x202; OM_NotFound;;2;fsfw/src/fsfw/objectmanager/ObjectManagerIF.h;OBJECT_MANAGER_IF
0x203; OM_ChildInitFailed;;3;fsfw/src/fsfw/objectmanager/ObjectManagerIF.h;OBJECT_MANAGER_IF
0x204; OM_InternalErrReporterUninit;;4;fsfw/src/fsfw/objectmanager/ObjectManagerIF.h;OBJECT_MANAGER_IF
0x501; PS_SwitchOn;;1;fsfw/src/fsfw/power/PowerSwitchIF.h;POWER_SWITCH_IF
0x500; PS_SwitchOff;;0;fsfw/src/fsfw/power/PowerSwitchIF.h;POWER_SWITCH_IF
0x502; PS_SwitchTimeout;;2;fsfw/src/fsfw/power/PowerSwitchIF.h;POWER_SWITCH_IF
0x503; PS_FuseOn;;3;fsfw/src/fsfw/power/PowerSwitchIF.h;POWER_SWITCH_IF
0x504; PS_FuseOff;;4;fsfw/src/fsfw/power/PowerSwitchIF.h;POWER_SWITCH_IF
0x2f01; POS_InPowerTransition;;1;fsfw/src/fsfw/power/PowerSwitcher.h;POWER_SWITCHER
0x2f02; POS_SwitchStateMismatch;;2;fsfw/src/fsfw/power/PowerSwitcher.h;POWER_SWITCHER
0x1000; TIM_UnsupportedTimeFormat;;0;fsfw/src/fsfw/timemanager/CCSDSTime.h;CCSDS_TIME_HELPER_CLASS
0x1001; TIM_NotEnoughInformationForTargetFormat;;1;fsfw/src/fsfw/timemanager/CCSDSTime.h;CCSDS_TIME_HELPER_CLASS
0x1002; TIM_LengthMismatch;;2;fsfw/src/fsfw/timemanager/CCSDSTime.h;CCSDS_TIME_HELPER_CLASS
0x1003; TIM_InvalidTimeFormat;;3;fsfw/src/fsfw/timemanager/CCSDSTime.h;CCSDS_TIME_HELPER_CLASS
0x1004; TIM_InvalidDayOfYear;;4;fsfw/src/fsfw/timemanager/CCSDSTime.h;CCSDS_TIME_HELPER_CLASS
0x1005; TIM_TimeDoesNotFitFormat;;5;fsfw/src/fsfw/timemanager/CCSDSTime.h;CCSDS_TIME_HELPER_CLASS
0x3601; TSI_BadTimestamp;;1;fsfw/src/fsfw/timemanager/TimeStamperIF.h;TIME_STAMPER_IF
0x2101; TMF_Busy;;1;fsfw/src/fsfw/tmstorage/TmStoreFrontendIF.h;TM_STORE_FRONTEND_IF
0x2102; TMF_LastPacketFound;;2;fsfw/src/fsfw/tmstorage/TmStoreFrontendIF.h;TM_STORE_FRONTEND_IF
0x2103; TMF_StopFetch;;3;fsfw/src/fsfw/tmstorage/TmStoreFrontendIF.h;TM_STORE_FRONTEND_IF
0x2104; TMF_Timeout;;4;fsfw/src/fsfw/tmstorage/TmStoreFrontendIF.h;TM_STORE_FRONTEND_IF
0x2105; TMF_TmChannelFull;;5;fsfw/src/fsfw/tmstorage/TmStoreFrontendIF.h;TM_STORE_FRONTEND_IF
0x2106; TMF_NotStored;;6;fsfw/src/fsfw/tmstorage/TmStoreFrontendIF.h;TM_STORE_FRONTEND_IF
0x2107; TMF_AllDeleted;;7;fsfw/src/fsfw/tmstorage/TmStoreFrontendIF.h;TM_STORE_FRONTEND_IF
0x2108; TMF_InvalidData;;8;fsfw/src/fsfw/tmstorage/TmStoreFrontendIF.h;TM_STORE_FRONTEND_IF
0x2109; TMF_NotReady;;9;fsfw/src/fsfw/tmstorage/TmStoreFrontendIF.h;TM_STORE_FRONTEND_IF
0x2001; TMB_Busy;;1;fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h;TM_STORE_BACKEND_IF
0x2002; TMB_Full;;2;fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h;TM_STORE_BACKEND_IF
0x2003; TMB_Empty;;3;fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h;TM_STORE_BACKEND_IF
0x2004; TMB_NullRequested;;4;fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h;TM_STORE_BACKEND_IF
0x2005; TMB_TooLarge;;5;fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h;TM_STORE_BACKEND_IF
0x2006; TMB_NotReady;;6;fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h;TM_STORE_BACKEND_IF
0x2007; TMB_DumpError;;7;fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h;TM_STORE_BACKEND_IF
0x2008; TMB_CrcError;;8;fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h;TM_STORE_BACKEND_IF
0x2009; TMB_Timeout;;9;fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h;TM_STORE_BACKEND_IF
0x200a; TMB_IdlePacketFound;;10;fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h;TM_STORE_BACKEND_IF
0x200b; TMB_TelecommandFound;;11;fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h;TM_STORE_BACKEND_IF
0x200c; TMB_NoPusATm;;12;fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h;TM_STORE_BACKEND_IF
0x200d; TMB_TooSmall;;13;fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h;TM_STORE_BACKEND_IF
0x200e; TMB_BlockNotFound;;14;fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h;TM_STORE_BACKEND_IF
0x200f; TMB_InvalidRequest;;15;fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h;TM_STORE_BACKEND_IF
0xe01; HM_InvalidMode;;0x01;fsfw/src/fsfw/modes/HasModesIF.h;HAS_MODES_IF
0xe02; HM_TransNotAllowed;;0x02;fsfw/src/fsfw/modes/HasModesIF.h;HAS_MODES_IF
0xe03; HM_InTransition;;0x03;fsfw/src/fsfw/modes/HasModesIF.h;HAS_MODES_IF
0xe04; HM_InvalidSubmode;;0x04;fsfw/src/fsfw/modes/HasModesIF.h;HAS_MODES_IF
0x1501; FM_KeyAlreadyExists;;0x01;fsfw/src/fsfw/container/FixedMap.h;FIXED_MAP
0x1502; FM_MapFull;;0x02;fsfw/src/fsfw/container/FixedMap.h;FIXED_MAP
0x1503; FM_KeyDoesNotExist;;0x03;fsfw/src/fsfw/container/FixedMap.h;FIXED_MAP
0x1101; AL_Full;;0x01;fsfw/src/fsfw/container/ArrayList.h;ARRAY_LIST
0x1601; FMM_MapFull;;0x01;fsfw/src/fsfw/container/FixedOrderedMultimap.h;FIXED_MULTIMAP
0x1602; FMM_KeyDoesNotExist;;0x02;fsfw/src/fsfw/container/FixedOrderedMultimap.h;FIXED_MULTIMAP
0x1801; FF_Full;;1;fsfw/src/fsfw/container/FIFOBase.h;FIFO_CLASS
0x1802; FF_Empty;;2;fsfw/src/fsfw/container/FIFOBase.h;FIFO_CLASS
0x4101; PUS11_InvalidTypeTimeWindow;;1;fsfw/src/fsfw/pus/Service11TelecommandScheduling.h;PUS_SERVICE_11
0x4102; PUS11_TimeshiftingNotPossible;;2;fsfw/src/fsfw/pus/Service11TelecommandScheduling.h;PUS_SERVICE_11
0x4103; PUS11_InvalidRelativeTime;;3;fsfw/src/fsfw/pus/Service11TelecommandScheduling.h;PUS_SERVICE_11
0x3301; DC_NoReplyReceived;;0x01;fsfw/src/fsfw/devicehandlers/DeviceCommunicationIF.h;DEVICE_COMMUNICATION_IF
0x3302; DC_ProtocolError;;0x02;fsfw/src/fsfw/devicehandlers/DeviceCommunicationIF.h;DEVICE_COMMUNICATION_IF
0x3303; DC_Nullpointer;;0x03;fsfw/src/fsfw/devicehandlers/DeviceCommunicationIF.h;DEVICE_COMMUNICATION_IF
0x3304; DC_InvalidCookieType;;0x04;fsfw/src/fsfw/devicehandlers/DeviceCommunicationIF.h;DEVICE_COMMUNICATION_IF
0x3305; DC_NotActive;;0x05;fsfw/src/fsfw/devicehandlers/DeviceCommunicationIF.h;DEVICE_COMMUNICATION_IF
0x3306; DC_TooMuchData;;0x06;fsfw/src/fsfw/devicehandlers/DeviceCommunicationIF.h;DEVICE_COMMUNICATION_IF
0x3a0; DHB_InvalidChannel;;0xA0;fsfw/src/fsfw/devicehandlers/DeviceHandlerBase.h;DEVICE_HANDLER_BASE
0x3b0; DHB_AperiodicReply;;0xB0;fsfw/src/fsfw/devicehandlers/DeviceHandlerBase.h;DEVICE_HANDLER_BASE
0x3b1; DHB_IgnoreReplyData;;0xB1;fsfw/src/fsfw/devicehandlers/DeviceHandlerBase.h;DEVICE_HANDLER_BASE
@@ -418,141 +380,183 @@
0x26c3; DHI_DeviceReplyInvalid;;0xC3;fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h;DEVICE_HANDLER_IF
0x26d0; DHI_InvalidCommandParameter;;0xD0;fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h;DEVICE_HANDLER_IF
0x26d1; DHI_InvalidNumberOrLengthOfParameters;;0xD1;fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h;DEVICE_HANDLER_IF
0x3301; DC_NoReplyReceived;;0x01;fsfw/src/fsfw/devicehandlers/DeviceCommunicationIF.h;DEVICE_COMMUNICATION_IF
0x3302; DC_ProtocolError;;0x02;fsfw/src/fsfw/devicehandlers/DeviceCommunicationIF.h;DEVICE_COMMUNICATION_IF
0x3303; DC_Nullpointer;;0x03;fsfw/src/fsfw/devicehandlers/DeviceCommunicationIF.h;DEVICE_COMMUNICATION_IF
0x3304; DC_InvalidCookieType;;0x04;fsfw/src/fsfw/devicehandlers/DeviceCommunicationIF.h;DEVICE_COMMUNICATION_IF
0x3305; DC_NotActive;;0x05;fsfw/src/fsfw/devicehandlers/DeviceCommunicationIF.h;DEVICE_COMMUNICATION_IF
0x3306; DC_TooMuchData;;0x06;fsfw/src/fsfw/devicehandlers/DeviceCommunicationIF.h;DEVICE_COMMUNICATION_IF
0x2401; EV_ListenerNotFound;;1;fsfw/src/fsfw/events/EventManagerIF.h;EVENT_MANAGER_IF
0x1a01; TRC_NotEnoughSensors;;1;fsfw/src/fsfw/monitoring/TriplexMonitor.h;TRIPLE_REDUNDACY_CHECK
0x1a02; TRC_LowestValueOol;;2;fsfw/src/fsfw/monitoring/TriplexMonitor.h;TRIPLE_REDUNDACY_CHECK
0x1a03; TRC_HighestValueOol;;3;fsfw/src/fsfw/monitoring/TriplexMonitor.h;TRIPLE_REDUNDACY_CHECK
0x1a04; TRC_BothValuesOol;;4;fsfw/src/fsfw/monitoring/TriplexMonitor.h;TRIPLE_REDUNDACY_CHECK
0x1a05; TRC_DuplexOol;;5;fsfw/src/fsfw/monitoring/TriplexMonitor.h;TRIPLE_REDUNDACY_CHECK
0x3001; LIM_Unchecked;;1;fsfw/src/fsfw/monitoring/MonitoringIF.h;LIMITS_IF
0x3002; LIM_Invalid;;2;fsfw/src/fsfw/monitoring/MonitoringIF.h;LIMITS_IF
0x3003; LIM_Unselected;;3;fsfw/src/fsfw/monitoring/MonitoringIF.h;LIMITS_IF
0x3004; LIM_BelowLowLimit;;4;fsfw/src/fsfw/monitoring/MonitoringIF.h;LIMITS_IF
0x3005; LIM_AboveHighLimit;;5;fsfw/src/fsfw/monitoring/MonitoringIF.h;LIMITS_IF
0x3006; LIM_UnexpectedValue;;6;fsfw/src/fsfw/monitoring/MonitoringIF.h;LIMITS_IF
0x3007; LIM_OutOfRange;;7;fsfw/src/fsfw/monitoring/MonitoringIF.h;LIMITS_IF
0x30a0; LIM_FirstSample;;0xA0;fsfw/src/fsfw/monitoring/MonitoringIF.h;LIMITS_IF
0x30e0; LIM_InvalidSize;;0xE0;fsfw/src/fsfw/monitoring/MonitoringIF.h;LIMITS_IF
0x30e1; LIM_WrongType;;0xE1;fsfw/src/fsfw/monitoring/MonitoringIF.h;LIMITS_IF
0x30e2; LIM_WrongPid;;0xE2;fsfw/src/fsfw/monitoring/MonitoringIF.h;LIMITS_IF
0x30e3; LIM_WrongLimitId;;0xE3;fsfw/src/fsfw/monitoring/MonitoringIF.h;LIMITS_IF
0x30ee; LIM_MonitorNotFound;;0xEE;fsfw/src/fsfw/monitoring/MonitoringIF.h;LIMITS_IF
0x3a01; SPH_SemaphoreTimeout;;1;fsfw/src/fsfw/tasks/SemaphoreIF.h;SEMAPHORE_IF
0x3a02; SPH_SemaphoreNotOwned;;2;fsfw/src/fsfw/tasks/SemaphoreIF.h;SEMAPHORE_IF
0x3a03; SPH_SemaphoreInvalid;;3;fsfw/src/fsfw/tasks/SemaphoreIF.h;SEMAPHORE_IF
0x7200; SDMA_OpOngoing;;0;bsp_q7s/memory/SdCardManager.h;SD_CARD_MANAGER
0x7201; SDMA_AlreadyOn;;1;bsp_q7s/memory/SdCardManager.h;SD_CARD_MANAGER
0x7202; SDMA_AlreadyMounted;;2;bsp_q7s/memory/SdCardManager.h;SD_CARD_MANAGER
0x7203; SDMA_AlreadyOff;;3;bsp_q7s/memory/SdCardManager.h;SD_CARD_MANAGER
0x720a; SDMA_StatusFileNexists;;10;bsp_q7s/memory/SdCardManager.h;SD_CARD_MANAGER
0x720b; SDMA_StatusFileFormatInvalid;;11;bsp_q7s/memory/SdCardManager.h;SD_CARD_MANAGER
0x720c; SDMA_MountError;;12;bsp_q7s/memory/SdCardManager.h;SD_CARD_MANAGER
0x720d; SDMA_UnmountError;;13;bsp_q7s/memory/SdCardManager.h;SD_CARD_MANAGER
0x720e; SDMA_SystemCallError;;14;bsp_q7s/memory/SdCardManager.h;SD_CARD_MANAGER
0x720f; SDMA_PopenCallError;;15;bsp_q7s/memory/SdCardManager.h;SD_CARD_MANAGER
0x7300; SCBU_KeyNotFound;;0;bsp_q7s/memory/scratchApi.h;SCRATCH_BUFFER
0x67a0;FSHLP_SdNotMounted;SD card specified with path string not mounted;0xA0;bsp_q7s/memory/FilesystemHelper.h;FILE_SYSTEM_HELPER
0x67a1;FSHLP_FileNotExists;Specified file does not exist on filesystem;0xA1;bsp_q7s/memory/FilesystemHelper.h;FILE_SYSTEM_HELPER
0x6aa0;MPSOCRTVIF_CrcFailure;Space Packet received from PLOC has invalid CRC;0xA0;linux/devices/devicedefinitions/MPSoCReturnValuesIF.h;MPSOC_RETURN_VALUES_IF
0x6aa1;MPSOCRTVIF_ReceivedAckFailure;Received ACK failure reply from PLOC;0xA1;linux/devices/devicedefinitions/MPSoCReturnValuesIF.h;MPSOC_RETURN_VALUES_IF
0x6aa2;MPSOCRTVIF_ReceivedExeFailure;Received execution failure reply from PLOC;0xA2;linux/devices/devicedefinitions/MPSoCReturnValuesIF.h;MPSOC_RETURN_VALUES_IF
0x6aa3;MPSOCRTVIF_InvalidApid;Received space packet with invalid APID from PLOC;0xA3;linux/devices/devicedefinitions/MPSoCReturnValuesIF.h;MPSOC_RETURN_VALUES_IF
0x6aa4;MPSOCRTVIF_InvalidLength;Received command with invalid length;0xA4;linux/devices/devicedefinitions/MPSoCReturnValuesIF.h;MPSOC_RETURN_VALUES_IF
0x6aa5;MPSOCRTVIF_FilenameTooLong;Filename of file in OBC filesystem is too long;0xA5;linux/devices/devicedefinitions/MPSoCReturnValuesIF.h;MPSOC_RETURN_VALUES_IF
0x6aa6;MPSOCRTVIF_MpsocHelperExecuting;MPSoC helper is currently executing a command;0xA6;linux/devices/devicedefinitions/MPSoCReturnValuesIF.h;MPSOC_RETURN_VALUES_IF
0x6aa7;MPSOCRTVIF_MpsocFilenameTooLong;Filename of MPSoC file is to long (max. 256 bytes);0xA7;linux/devices/devicedefinitions/MPSoCReturnValuesIF.h;MPSOC_RETURN_VALUES_IF
0x6aa8;MPSOCRTVIF_InvalidParameter;Command has invalid parameter;0xA8;linux/devices/devicedefinitions/MPSoCReturnValuesIF.h;MPSOC_RETURN_VALUES_IF
0x6aa9;MPSOCRTVIF_NameTooLong;Received command has file string with invalid length;0xA9;linux/devices/devicedefinitions/MPSoCReturnValuesIF.h;MPSOC_RETURN_VALUES_IF
0x6ba0;SPVRTVIF_CrcFailure;Space Packet received from PLOC supervisor has invalid CRC;0xA0;linux/devices/devicedefinitions/SupvReturnValuesIF.h;SUPV_RETURN_VALUES_IF
0x6ba1;SPVRTVIF_ReceivedAckFailure;Received ACK failure reply from PLOC supervisor;0xA1;linux/devices/devicedefinitions/SupvReturnValuesIF.h;SUPV_RETURN_VALUES_IF
0x6ba2;SPVRTVIF_ReceivedExeFailure;Received execution failure reply from PLOC supervisor;0xA2;linux/devices/devicedefinitions/SupvReturnValuesIF.h;SUPV_RETURN_VALUES_IF
0x6ba3;SPVRTVIF_InvalidApid;Received space packet with invalid APID from PLOC supervisor;0xA3;linux/devices/devicedefinitions/SupvReturnValuesIF.h;SUPV_RETURN_VALUES_IF
0x6ba4;SPVRTVIF_GetTimeFailure;Failed to read current system time;0xA4;linux/devices/devicedefinitions/SupvReturnValuesIF.h;SUPV_RETURN_VALUES_IF
0x6ba5;SPVRTVIF_InvalidWatchdog;Received command with invalid watchdog parameter. Valid watchdogs are 0 for PS, 1 for PL and 2 for INT;0xA5;linux/devices/devicedefinitions/SupvReturnValuesIF.h;SUPV_RETURN_VALUES_IF
0x6ba6;SPVRTVIF_InvalidWatchdogTimeout;Received watchdog timeout config command with invalid timeout. Valid timeouts must be in the range between 1000 and 360000 ms.;0xA6;linux/devices/devicedefinitions/SupvReturnValuesIF.h;SUPV_RETURN_VALUES_IF
0x6ba7;SPVRTVIF_InvalidLatchupId;Received latchup config command with invalid latchup ID;0xA7;linux/devices/devicedefinitions/SupvReturnValuesIF.h;SUPV_RETURN_VALUES_IF
0x6ba8;SPVRTVIF_SweepPeriodTooSmall;Received set adc sweep period command with invalid sweep period. Must be larger than 21.;0xA8;linux/devices/devicedefinitions/SupvReturnValuesIF.h;SUPV_RETURN_VALUES_IF
0x6ba9;SPVRTVIF_InvalidTestParam;Receive auto EM test command with invalid test param. Valid params are 1 and 2.;0xA9;linux/devices/devicedefinitions/SupvReturnValuesIF.h;SUPV_RETURN_VALUES_IF
0x6baa;SPVRTVIF_MramPacketParsingFailure;Returned when scanning for MRAM dump packets failed.;0xAA;linux/devices/devicedefinitions/SupvReturnValuesIF.h;SUPV_RETURN_VALUES_IF
0x6bab;SPVRTVIF_InvalidMramAddresses;Returned when the start and stop addresses of the MRAM dump or MRAM wipe commands are invalid (e.g. start address bigger than stop address);0xAB;linux/devices/devicedefinitions/SupvReturnValuesIF.h;SUPV_RETURN_VALUES_IF
0x6bac;SPVRTVIF_NoMramPacket;Expect reception of an MRAM dump packet but received space packet with other apid.;0xAC;linux/devices/devicedefinitions/SupvReturnValuesIF.h;SUPV_RETURN_VALUES_IF
0x6bad;SPVRTVIF_PathDoesNotExist;Path to PLOC directory on SD card does not exist;0xAD;linux/devices/devicedefinitions/SupvReturnValuesIF.h;SUPV_RETURN_VALUES_IF
0x6bae;SPVRTVIF_MramFileNotExists;MRAM dump file does not exists. The file should actually already have been created with the reception of the first dump packet.;0xAE;linux/devices/devicedefinitions/SupvReturnValuesIF.h;SUPV_RETURN_VALUES_IF
0x6baf;SPVRTVIF_InvalidLength;Received action command has invalid length;0xAF;linux/devices/devicedefinitions/SupvReturnValuesIF.h;SUPV_RETURN_VALUES_IF
0x6bb0;SPVRTVIF_FilenameTooLong;Filename too long;0xB0;linux/devices/devicedefinitions/SupvReturnValuesIF.h;SUPV_RETURN_VALUES_IF
0x6bb1;SPVRTVIF_UpdateStatusReportInvalidLength;Received update status report with invalid packet length field;0xB1;linux/devices/devicedefinitions/SupvReturnValuesIF.h;SUPV_RETURN_VALUES_IF
0x6bb2;SPVRTVIF_UpdateCrcFailure;Update status report does not contain expected CRC. There might be a bit flip in the update memory region.;0xB2;linux/devices/devicedefinitions/SupvReturnValuesIF.h;SUPV_RETURN_VALUES_IF
0x6bb3;SPVRTVIF_SupvHelperExecuting;Supervisor helper task ist currently executing a command (wait until helper tas has finished or interrupt by sending the terminate command);0xB3;linux/devices/devicedefinitions/SupvReturnValuesIF.h;SUPV_RETURN_VALUES_IF
0x57e0;DWLPWRON_InvalidMode;Received command has invalid JESD mode (valid modes are 0 - 5);0xE0;linux/devices/devicedefinitions/PlocMPSoCDefinitions.h;DWLPWRON_CMD
0x57e1;DWLPWRON_InvalidLaneRate;Received command has invalid lane rate (valid lane rate are 0 - 9);0xE1;linux/devices/devicedefinitions/PlocMPSoCDefinitions.h;DWLPWRON_CMD
0x61a0;PLMEMDUMP_MramAddressTooHigh;The capacity of the MRAM amounts to 512 kB. Thus the maximum address must not be higher than 0x7d000.;0xA0;linux/devices/ploc/PlocMemoryDumper.h;PLOC_MEMORY_DUMPER
0x61a1;PLMEMDUMP_MramInvalidAddressCombination;The specified end address is lower than the start address;0xA1;linux/devices/ploc/PlocMemoryDumper.h;PLOC_MEMORY_DUMPER
0x68a0; PLMPHLP_FileClosedAccidentally;File accidentally close;0xA0;linux/devices/ploc/PlocMPSoCHelper.h;PLOC_MPSOC_HELPER
0x5aa0;PLSPVhLP_FileClosedAccidentally;File accidentally close;0xA0;linux/devices/ploc/PlocSupvHelper.h;PLOC_SUPV_HELPER
0x5aa1;PLSPVhLP_ProcessTerminated;Process has been terminated by command;0xA1;linux/devices/ploc/PlocSupvHelper.h;PLOC_SUPV_HELPER
0x5aa2;PLSPVhLP_PathNotExists;Received command with invalid pathname;0xA2;linux/devices/ploc/PlocSupvHelper.h;PLOC_SUPV_HELPER
0x5aa3;PLSPVhLP_EventBufferReplyInvalidApid;Expected event buffer TM but received space packet with other APID;0xA3;linux/devices/ploc/PlocSupvHelper.h;PLOC_SUPV_HELPER
0x6501;JSONBASE_JsonFileNotExists;Specified json file does not exist;1;linux/devices/startracker/ArcsecJsonParamBase.h;ARCSEC_JSON_BASE
0x6502;JSONBASE_SetNotExists;Requested set does not exist in json file;2;linux/devices/startracker/ArcsecJsonParamBase.h;ARCSEC_JSON_BASE
0x6503;JSONBASE_ParamNotExists;Requested parameter does not exist in json file;3;linux/devices/startracker/ArcsecJsonParamBase.h;ARCSEC_JSON_BASE
0x56a0;STRH_TemperatureReqFailed;Status in temperature reply signals error;0xA0;linux/devices/startracker/StarTrackerHandler.h;STR_HANDLER
0x56a1;STRH_PingFailed;Ping command failed;0xA1;linux/devices/startracker/StarTrackerHandler.h;STR_HANDLER
0x56a2;STRH_VersionReqFailed;Status in version reply signals error;0xA2;linux/devices/startracker/StarTrackerHandler.h;STR_HANDLER
0x56a3;STRH_InterfaceReqFailed;Status in interface reply signals error;0xA3;linux/devices/startracker/StarTrackerHandler.h;STR_HANDLER
0x56a4;STRH_PowerReqFailed;Status in power reply signals error;0xA4;linux/devices/startracker/StarTrackerHandler.h;STR_HANDLER
0x56a5;STRH_SetParamFailed;Status of reply to parameter set command signals error;0xA5;linux/devices/startracker/StarTrackerHandler.h;STR_HANDLER
0x56a6;STRH_ActionFailed;Status of reply to action command signals error;0xA6;linux/devices/startracker/StarTrackerHandler.h;STR_HANDLER
0x56a7;STRH_FilePathTooLong;Received invalid path string. Exceeds allowed length;0xA7;linux/devices/startracker/StarTrackerHandler.h;STR_HANDLER
0x56a8;STRH_FilenameTooLong;Name of file received with command is too long;0xA8;linux/devices/startracker/StarTrackerHandler.h;STR_HANDLER
0x56a9;STRH_InvalidProgram;Received version reply with invalid program ID;0xA9;linux/devices/startracker/StarTrackerHandler.h;STR_HANDLER
0x56aa;STRH_ReplyError;Status field reply signals error;0xAA;linux/devices/startracker/StarTrackerHandler.h;STR_HANDLER
0x56ab;STRH_CommandTooShort;Received command which is too short (some data is missing for proper execution);0xAB;linux/devices/startracker/StarTrackerHandler.h;STR_HANDLER
0x56ac;STRH_InvalidLength;Received command with invalid length (too few or too many parameters);0xAC;linux/devices/startracker/StarTrackerHandler.h;STR_HANDLER
0x56ad;STRH_RegionMismatch;Region mismatch between send and received data;0xAD;linux/devices/startracker/StarTrackerHandler.h;STR_HANDLER
0x56ae;STRH_AddressMismatch;Address mismatch between send and received data;0xAE;linux/devices/startracker/StarTrackerHandler.h;STR_HANDLER
0x56af;STRH_LengthMismatch;Length field mismatch between send and received data;0xAF;linux/devices/startracker/StarTrackerHandler.h;STR_HANDLER
0x56b0;STRH_FileNotExists;Specified file does not exist;0xB0;linux/devices/startracker/StarTrackerHandler.h;STR_HANDLER
0x56b1;STRH_InvalidType;Download blob pixel command has invalid type field;0xB1;linux/devices/startracker/StarTrackerHandler.h;STR_HANDLER
0x56b2;STRH_InvalidId;Received FPGA action command with invalid ID;0xB2;linux/devices/startracker/StarTrackerHandler.h;STR_HANDLER
0x56b3;STRH_ReplyTooShort;Received reply is too short;0xB3;linux/devices/startracker/StarTrackerHandler.h;STR_HANDLER
0x56b4;STRH_CrcFailure;Received reply with invalid CRC;0xB4;linux/devices/startracker/StarTrackerHandler.h;STR_HANDLER
0x56b5;STRH_StrHelperExecuting;Star tracker handler currently executing a command and using the communication interface;0xB5;linux/devices/startracker/StarTrackerHandler.h;STR_HANDLER
0x56b6;STRH_StartrackerAlreadyBooted;Star tracker is already in firmware mode;0xB6;linux/devices/startracker/StarTrackerHandler.h;STR_HANDLER
0x56b7;STRH_StartrackerRunningFirmware;Star tracker is in firmware mode but must be in bootloader mode to execute this command;0xB7;linux/devices/startracker/StarTrackerHandler.h;STR_HANDLER
0x56b8;STRH_StartrackerRunningBootloader;Star tracker is in bootloader mode but must be in firmware mode to execute this command;0xB8;linux/devices/startracker/StarTrackerHandler.h;STR_HANDLER
0x5fa0;STRHLP_SdNotMounted;SD card specified in path string not mounted;0xA0;linux/devices/startracker/StrHelper.h;STR_HELPER
0x5fa1;STRHLP_FileNotExists;Specified file does not exist on filesystem;0xA1;linux/devices/startracker/StrHelper.h;STR_HELPER
0x5fa2;STRHLP_PathNotExists;Specified path does not exist;0xA2;linux/devices/startracker/StrHelper.h;STR_HELPER
0x5fa3;STRHLP_FileCreationFailed;Failed to create download image or read flash file;0xA3;linux/devices/startracker/StrHelper.h;STR_HELPER
0x5fa4;STRHLP_RegionMismatch;Region in flash write/read reply does not match expected region;0xA4;linux/devices/startracker/StrHelper.h;STR_HELPER
0x5fa5;STRHLP_AddressMismatch;Address in flash write/read reply does not match expected address;0xA5;linux/devices/startracker/StrHelper.h;STR_HELPER
0x5fa6;STRHLP_LengthMismatch;Length in flash write/read reply does not match expected length;0xA6;linux/devices/startracker/StrHelper.h;STR_HELPER
0x5fa7;STRHLP_StatusError;Status field in reply signals error;0xA7;linux/devices/startracker/StrHelper.h;STR_HELPER
0x5fa8;STRHLP_InvalidTypeId;Reply has invalid type ID (should be of action reply type);0xA8;linux/devices/startracker/StrHelper.h;STR_HELPER
0x5ca0;IPCI_PapbBusy;;0xA0;linux/obc/PapbVcInterface.h;CCSDS_IP_CORE_BRIDGE
0x5da0;PTME_UnknownVcId;;0xA0;linux/obc/Ptme.h;PTME
0x64a0;RS_RateNotSupported;The commanded rate is not supported by the current FPGA design;0xA0;linux/obc/PtmeConfig.h;RATE_SETTER
0x64a1;RS_BadBitRate;Bad bitrate has been commanded (e.g. 0);0xA1;linux/obc/PtmeConfig.h;RATE_SETTER
0x64a2;RS_ClkInversionFailed;Failed to invert clock and thus change the time the data is updated with respect to the tx clock;0xA2;linux/obc/PtmeConfig.h;RATE_SETTER
0x64a3;RS_TxManipulatorConfigFailed;Failed to change configuration bit of tx clock manipulator;0xA3;linux/obc/PtmeConfig.h;RATE_SETTER
0x62a0;PDEC_AbandonedCltu;;0xA0;linux/obc/PdecHandler.h;PDEC_HANDLER
0x62a1;PDEC_FrameDirty;;0xA1;linux/obc/PdecHandler.h;PDEC_HANDLER
0x62a2;PDEC_FrameIllegalMultipleReasons;;0xA2;linux/obc/PdecHandler.h;PDEC_HANDLER
0x62a3;PDEC_AdDiscardedLockout;;0xA3;linux/obc/PdecHandler.h;PDEC_HANDLER
0x62a4;PDEC_AdDiscardedWait;;0xA4;linux/obc/PdecHandler.h;PDEC_HANDLER
0x62a5;PDEC_AdDiscardedNsVs;;0xA5;linux/obc/PdecHandler.h;PDEC_HANDLER
0x62b0;PDEC_CommandNotImplemented;Received action message with unknown action id;0xB0;linux/obc/PdecHandler.h;PDEC_HANDLER
0x62a6;PDEC_NoReport;;0xA6;linux/obc/PdecHandler.h;PDEC_HANDLER
0x62a7;PDEC_ErrorVersionNumber;;0xA7;linux/obc/PdecHandler.h;PDEC_HANDLER
0x62a8;PDEC_IllegalCombination;;0xA8;linux/obc/PdecHandler.h;PDEC_HANDLER
0x62a9;PDEC_InvalidScId;;0xA9;linux/obc/PdecHandler.h;PDEC_HANDLER
0x62aa;PDEC_InvalidVcIdMsb;;0xAA;linux/obc/PdecHandler.h;PDEC_HANDLER
0x62ab;PDEC_InvalidVcIdLsb;;0xAB;linux/obc/PdecHandler.h;PDEC_HANDLER
0x62ac;PDEC_NsNotZero;;0xAC;linux/obc/PdecHandler.h;PDEC_HANDLER
0x62ae;PDEC_InvalidBcCc;;0xAE;linux/obc/PdecHandler.h;PDEC_HANDLER
0x2301; MT_TooDetailedRequest;;1;fsfw/src/fsfw/globalfunctions/matching/MatchTree.h;MATCH_TREE_CLASS
0x2302; MT_TooGeneralRequest;;2;fsfw/src/fsfw/globalfunctions/matching/MatchTree.h;MATCH_TREE_CLASS
0x2303; MT_NoMatch;;3;fsfw/src/fsfw/globalfunctions/matching/MatchTree.h;MATCH_TREE_CLASS
0x2304; MT_Full;;4;fsfw/src/fsfw/globalfunctions/matching/MatchTree.h;MATCH_TREE_CLASS
0x2305; MT_NewNodeCreated;;5;fsfw/src/fsfw/globalfunctions/matching/MatchTree.h;MATCH_TREE_CLASS
0x3e01; DLEE_StreamTooShort;;0x01;fsfw/src/fsfw/globalfunctions/DleEncoder.h;DLE_ENCODER
0x3e02; DLEE_DecodingError;;0x02;fsfw/src/fsfw/globalfunctions/DleEncoder.h;DLE_ENCODER
0x2e01; ASC_TooLongForTargetType;;1;fsfw/src/fsfw/globalfunctions/AsciiConverter.h;ASCII_CONVERTER
0x2e02; ASC_InvalidCharacters;;2;fsfw/src/fsfw/globalfunctions/AsciiConverter.h;ASCII_CONVERTER
0x2e03; ASC_BufferTooSmall;;0x3;fsfw/src/fsfw/globalfunctions/AsciiConverter.h;ASCII_CONVERTER
0x1701; HHI_ObjectNotHealthy;;1;fsfw/src/fsfw/health/HasHealthIF.h;HAS_HEALTH_IF
0x1702; HHI_InvalidHealthState;;2;fsfw/src/fsfw/health/HasHealthIF.h;HAS_HEALTH_IF
0x1703; HHI_IsExternallyControlled;;3;fsfw/src/fsfw/health/HasHealthIF.h;HAS_HEALTH_IF
0x3101; CF_ObjectHasNoFunctions;;1;fsfw/src/fsfw/action/CommandsActionsIF.h;COMMANDS_ACTIONS_IF
0x3102; CF_AlreadyCommanding;;2;fsfw/src/fsfw/action/CommandsActionsIF.h;COMMANDS_ACTIONS_IF
0x3201; HF_IsBusy;;1;fsfw/src/fsfw/action/HasActionsIF.h;HAS_ACTIONS_IF
0x3202; HF_InvalidParameters;;2;fsfw/src/fsfw/action/HasActionsIF.h;HAS_ACTIONS_IF
0x3203; HF_ExecutionFinished;;3;fsfw/src/fsfw/action/HasActionsIF.h;HAS_ACTIONS_IF
0x3204; HF_InvalidActionId;;4;fsfw/src/fsfw/action/HasActionsIF.h;HAS_ACTIONS_IF
0x3601; TSI_BadTimestamp;;1;fsfw/src/fsfw/timemanager/TimeStamperIF.h;TIME_STAMPER_IF
0x1000; TIM_UnsupportedTimeFormat;;0;fsfw/src/fsfw/timemanager/CCSDSTime.h;CCSDS_TIME_HELPER_CLASS
0x1001; TIM_NotEnoughInformationForTargetFormat;;1;fsfw/src/fsfw/timemanager/CCSDSTime.h;CCSDS_TIME_HELPER_CLASS
0x1002; TIM_LengthMismatch;;2;fsfw/src/fsfw/timemanager/CCSDSTime.h;CCSDS_TIME_HELPER_CLASS
0x1003; TIM_InvalidTimeFormat;;3;fsfw/src/fsfw/timemanager/CCSDSTime.h;CCSDS_TIME_HELPER_CLASS
0x1004; TIM_InvalidDayOfYear;;4;fsfw/src/fsfw/timemanager/CCSDSTime.h;CCSDS_TIME_HELPER_CLASS
0x1005; TIM_TimeDoesNotFitFormat;;5;fsfw/src/fsfw/timemanager/CCSDSTime.h;CCSDS_TIME_HELPER_CLASS
0x3b00; LPIF_PoolEntryNotFound;;0x00;fsfw/src/fsfw/datapoollocal/localPoolDefinitions.h;LOCAL_POOL_OWNER_IF
0x3b01; LPIF_PoolEntryTypeConflict;;0x01;fsfw/src/fsfw/datapoollocal/localPoolDefinitions.h;LOCAL_POOL_OWNER_IF
0x3d00; HKM_QueueOrDestinationInvalid;;0;fsfw/src/fsfw/datapoollocal/LocalDataPoolManager.h;HOUSEKEEPING_MANAGER
0x3d01; HKM_WrongHkPacketType;;1;fsfw/src/fsfw/datapoollocal/LocalDataPoolManager.h;HOUSEKEEPING_MANAGER
0x3d02; HKM_ReportingStatusUnchanged;;2;fsfw/src/fsfw/datapoollocal/LocalDataPoolManager.h;HOUSEKEEPING_MANAGER
0x3d03; HKM_PeriodicHelperInvalid;;3;fsfw/src/fsfw/datapoollocal/LocalDataPoolManager.h;HOUSEKEEPING_MANAGER
0x3d04; HKM_PoolobjectNotFound;;4;fsfw/src/fsfw/datapoollocal/LocalDataPoolManager.h;HOUSEKEEPING_MANAGER
0x3d05; HKM_DatasetNotFound;;5;fsfw/src/fsfw/datapoollocal/LocalDataPoolManager.h;HOUSEKEEPING_MANAGER
0x2801; TC_InvalidTargetState;;1;fsfw/src/fsfw/thermal/ThermalComponentIF.h;THERMAL_COMPONENT_IF
0x28f1; TC_AboveOperationalLimit;;0xF1;fsfw/src/fsfw/thermal/ThermalComponentIF.h;THERMAL_COMPONENT_IF
0x28f2; TC_BelowOperationalLimit;;0xF2;fsfw/src/fsfw/thermal/ThermalComponentIF.h;THERMAL_COMPONENT_IF
0x1f01; CSB_ExecutionComplete;;1;fsfw/src/fsfw/tmtcservices/CommandingServiceBase.h;COMMAND_SERVICE_BASE
0x1f02; CSB_NoStepMessage;;2;fsfw/src/fsfw/tmtcservices/CommandingServiceBase.h;COMMAND_SERVICE_BASE
0x1f03; CSB_ObjectBusy;;3;fsfw/src/fsfw/tmtcservices/CommandingServiceBase.h;COMMAND_SERVICE_BASE
0x1f04; CSB_Busy;;4;fsfw/src/fsfw/tmtcservices/CommandingServiceBase.h;COMMAND_SERVICE_BASE
0x1f05; CSB_InvalidTc;;5;fsfw/src/fsfw/tmtcservices/CommandingServiceBase.h;COMMAND_SERVICE_BASE
0x1f06; CSB_InvalidObject;;6;fsfw/src/fsfw/tmtcservices/CommandingServiceBase.h;COMMAND_SERVICE_BASE
0x1f07; CSB_InvalidReply;;7;fsfw/src/fsfw/tmtcservices/CommandingServiceBase.h;COMMAND_SERVICE_BASE
0x4b00; SPPA_NoPacketFound;;0x00;fsfw/src/fsfw/tmtcservices/SpacePacketParser.h;SPACE_PACKET_PARSER
0x4b01; SPPA_SplitPacket;;0x01;fsfw/src/fsfw/tmtcservices/SpacePacketParser.h;SPACE_PACKET_PARSER
0x1d01; PUS_ActivityStarted;;1;fsfw/src/fsfw/tmtcservices/AcceptsTelecommandsIF.h;ACCEPTS_TELECOMMANDS_IF
0x1d02; PUS_InvalidSubservice;;2;fsfw/src/fsfw/tmtcservices/AcceptsTelecommandsIF.h;ACCEPTS_TELECOMMANDS_IF
0x1d03; PUS_IllegalApplicationData;;3;fsfw/src/fsfw/tmtcservices/AcceptsTelecommandsIF.h;ACCEPTS_TELECOMMANDS_IF
0x1d04; PUS_SendTmFailed;;4;fsfw/src/fsfw/tmtcservices/AcceptsTelecommandsIF.h;ACCEPTS_TELECOMMANDS_IF
0x1d05; PUS_Timeout;;5;fsfw/src/fsfw/tmtcservices/AcceptsTelecommandsIF.h;ACCEPTS_TELECOMMANDS_IF
0x4400; HSPI_OpeningFileFailed;;0;fsfw/hal/src/fsfw_hal/linux/spi/SpiComIF.h;HAL_SPI
0x4401; HSPI_FullDuplexTransferFailed;;1;fsfw/hal/src/fsfw_hal/linux/spi/SpiComIF.h;HAL_SPI
0x4402; HSPI_HalfDuplexTransferFailed;;2;fsfw/hal/src/fsfw_hal/linux/spi/SpiComIF.h;HAL_SPI
0x4701; HGIO_UnknownGpioId;;1;fsfw/hal/src/fsfw_hal/linux/gpio/LinuxLibgpioIF.h;HAL_GPIO
0x4702; HGIO_DriveGpioFailure;;2;fsfw/hal/src/fsfw_hal/linux/gpio/LinuxLibgpioIF.h;HAL_GPIO
0x4703; HGIO_GpioTypeFailure;;3;fsfw/hal/src/fsfw_hal/linux/gpio/LinuxLibgpioIF.h;HAL_GPIO
0x4704; HGIO_GpioInvalidInstance;;4;fsfw/hal/src/fsfw_hal/linux/gpio/LinuxLibgpioIF.h;HAL_GPIO
0x4705; HGIO_GpioDuplicateDetected;;5;fsfw/hal/src/fsfw_hal/linux/gpio/LinuxLibgpioIF.h;HAL_GPIO
0x4706; HGIO_GpioInitFailed;;6;fsfw/hal/src/fsfw_hal/linux/gpio/LinuxLibgpioIF.h;HAL_GPIO
0x4707; HGIO_GpioGetValueFailed;;7;fsfw/hal/src/fsfw_hal/linux/gpio/LinuxLibgpioIF.h;HAL_GPIO
0x4501; HURT_UartReadFailure;;1;fsfw/hal/src/fsfw_hal/linux/uart/UartComIF.h;HAL_UART
0x4502; HURT_UartReadSizeMissmatch;;2;fsfw/hal/src/fsfw_hal/linux/uart/UartComIF.h;HAL_UART
0x4503; HURT_UartRxBufferTooSmall;;3;fsfw/hal/src/fsfw_hal/linux/uart/UartComIF.h;HAL_UART
0x4300; UXOS_ExecutionFinished;Execution of the current command has finished;0;fsfw/hal/src/fsfw_hal/linux/CommandExecutor.h;LINUX_OSAL
0x4301; UXOS_CommandPending;Command is pending. This will also be returned if the user tries to load another command but a command is still pending;1;fsfw/hal/src/fsfw_hal/linux/CommandExecutor.h;LINUX_OSAL
0x4302; UXOS_BytesRead;Some bytes have been read from the executing process;2;fsfw/hal/src/fsfw_hal/linux/CommandExecutor.h;LINUX_OSAL
0x4303; UXOS_CommandError;Command execution failed;3;fsfw/hal/src/fsfw_hal/linux/CommandExecutor.h;LINUX_OSAL
0x4304; UXOS_NoCommandLoadedOrPending;;4;fsfw/hal/src/fsfw_hal/linux/CommandExecutor.h;LINUX_OSAL
0x4306; UXOS_PcloseCallError;;6;fsfw/hal/src/fsfw_hal/linux/CommandExecutor.h;LINUX_OSAL
0x7400; SCBU_KeyNotFound;;0;bsp_q7s/memory/scratchApi.h;SCRATCH_BUFFER
0x68a0; FSHLP_SdNotMounted;SD card specified with path string not mounted;0xA0;bsp_q7s/memory/FilesystemHelper.h;FILE_SYSTEM_HELPER
0x68a1; FSHLP_FileNotExists;Specified file does not exist on filesystem;0xA1;bsp_q7s/memory/FilesystemHelper.h;FILE_SYSTEM_HELPER
0x7300; SDMA_OpOngoing;;0;bsp_q7s/memory/SdCardManager.h;SD_CARD_MANAGER
0x7301; SDMA_AlreadyOn;;1;bsp_q7s/memory/SdCardManager.h;SD_CARD_MANAGER
0x7302; SDMA_AlreadyMounted;;2;bsp_q7s/memory/SdCardManager.h;SD_CARD_MANAGER
0x7303; SDMA_AlreadyOff;;3;bsp_q7s/memory/SdCardManager.h;SD_CARD_MANAGER
0x730a; SDMA_StatusFileNexists;;10;bsp_q7s/memory/SdCardManager.h;SD_CARD_MANAGER
0x730b; SDMA_StatusFileFormatInvalid;;11;bsp_q7s/memory/SdCardManager.h;SD_CARD_MANAGER
0x730c; SDMA_MountError;;12;bsp_q7s/memory/SdCardManager.h;SD_CARD_MANAGER
0x730d; SDMA_UnmountError;;13;bsp_q7s/memory/SdCardManager.h;SD_CARD_MANAGER
0x730e; SDMA_SystemCallError;;14;bsp_q7s/memory/SdCardManager.h;SD_CARD_MANAGER
0x730f; SDMA_PopenCallError;;15;bsp_q7s/memory/SdCardManager.h;SD_CARD_MANAGER
0x69a0; PLMPHLP_FileClosedAccidentally;File accidentally close;0xA0;linux/devices/ploc/PlocMPSoCHelper.h;PLOC_MPSOC_HELPER
0x62a0; PLMEMDUMP_MramAddressTooHigh;The capacity of the MRAM amounts to 512 kB. Thus the maximum address must not be higher than 0x7d000.;0xA0;linux/devices/ploc/PlocMemoryDumper.h;PLOC_MEMORY_DUMPER
0x62a1; PLMEMDUMP_MramInvalidAddressCombination;The specified end address is lower than the start address;0xA1;linux/devices/ploc/PlocMemoryDumper.h;PLOC_MEMORY_DUMPER
0x5ba0; PLSPVhLP_FileClosedAccidentally;File accidentally close;0xA0;linux/devices/ploc/PlocSupvHelper.h;PLOC_SUPV_HELPER
0x5ba1; PLSPVhLP_ProcessTerminated;Process has been terminated by command;0xA1;linux/devices/ploc/PlocSupvHelper.h;PLOC_SUPV_HELPER
0x5ba2; PLSPVhLP_PathNotExists;Received command with invalid pathname;0xA2;linux/devices/ploc/PlocSupvHelper.h;PLOC_SUPV_HELPER
0x5ba3; PLSPVhLP_EventBufferReplyInvalidApid;Expected event buffer TM but received space packet with other APID;0xA3;linux/devices/ploc/PlocSupvHelper.h;PLOC_SUPV_HELPER
0x6ba0; MPSOCRTVIF_CrcFailure;Space Packet received from PLOC has invalid CRC;0xA0;linux/devices/devicedefinitions/MPSoCReturnValuesIF.h;MPSOC_RETURN_VALUES_IF
0x6ba1; MPSOCRTVIF_ReceivedAckFailure;Received ACK failure reply from PLOC;0xA1;linux/devices/devicedefinitions/MPSoCReturnValuesIF.h;MPSOC_RETURN_VALUES_IF
0x6ba2; MPSOCRTVIF_ReceivedExeFailure;Received execution failure reply from PLOC;0xA2;linux/devices/devicedefinitions/MPSoCReturnValuesIF.h;MPSOC_RETURN_VALUES_IF
0x6ba3; MPSOCRTVIF_InvalidApid;Received space packet with invalid APID from PLOC;0xA3;linux/devices/devicedefinitions/MPSoCReturnValuesIF.h;MPSOC_RETURN_VALUES_IF
0x6ba4; MPSOCRTVIF_InvalidLength;Received command with invalid length;0xA4;linux/devices/devicedefinitions/MPSoCReturnValuesIF.h;MPSOC_RETURN_VALUES_IF
0x6ba5; MPSOCRTVIF_FilenameTooLong;Filename of file in OBC filesystem is too long;0xA5;linux/devices/devicedefinitions/MPSoCReturnValuesIF.h;MPSOC_RETURN_VALUES_IF
0x6ba6; MPSOCRTVIF_MpsocHelperExecuting;MPSoC helper is currently executing a command;0xA6;linux/devices/devicedefinitions/MPSoCReturnValuesIF.h;MPSOC_RETURN_VALUES_IF
0x6ba7; MPSOCRTVIF_MpsocFilenameTooLong;Filename of MPSoC file is to long (max. 256 bytes);0xA7;linux/devices/devicedefinitions/MPSoCReturnValuesIF.h;MPSOC_RETURN_VALUES_IF
0x6ba8; MPSOCRTVIF_InvalidParameter;Command has invalid parameter;0xA8;linux/devices/devicedefinitions/MPSoCReturnValuesIF.h;MPSOC_RETURN_VALUES_IF
0x6ba9; MPSOCRTVIF_NameTooLong;Received command has file string with invalid length;0xA9;linux/devices/devicedefinitions/MPSoCReturnValuesIF.h;MPSOC_RETURN_VALUES_IF
0x6ca0; SPVRTVIF_CrcFailure;Space Packet received from PLOC supervisor has invalid CRC;0xA0;linux/devices/devicedefinitions/SupvReturnValuesIF.h;SUPV_RETURN_VALUES_IF
0x6ca1; SPVRTVIF_ReceivedAckFailure;Received ACK failure reply from PLOC supervisor;0xA1;linux/devices/devicedefinitions/SupvReturnValuesIF.h;SUPV_RETURN_VALUES_IF
0x6ca2; SPVRTVIF_ReceivedExeFailure;Received execution failure reply from PLOC supervisor;0xA2;linux/devices/devicedefinitions/SupvReturnValuesIF.h;SUPV_RETURN_VALUES_IF
0x6ca3; SPVRTVIF_InvalidApid;Received space packet with invalid APID from PLOC supervisor;0xA3;linux/devices/devicedefinitions/SupvReturnValuesIF.h;SUPV_RETURN_VALUES_IF
0x6ca4; SPVRTVIF_GetTimeFailure;Failed to read current system time;0xA4;linux/devices/devicedefinitions/SupvReturnValuesIF.h;SUPV_RETURN_VALUES_IF
0x6ca5; SPVRTVIF_InvalidWatchdog;Received command with invalid watchdog parameter. Valid watchdogs are 0 for PS, 1 for PL and 2 for INT;0xA5;linux/devices/devicedefinitions/SupvReturnValuesIF.h;SUPV_RETURN_VALUES_IF
0x6ca6; SPVRTVIF_InvalidWatchdogTimeout;Received watchdog timeout config command with invalid timeout. Valid timeouts must be in the range between 1000 and 360000 ms.;0xA6;linux/devices/devicedefinitions/SupvReturnValuesIF.h;SUPV_RETURN_VALUES_IF
0x6ca7; SPVRTVIF_InvalidLatchupId;Received latchup config command with invalid latchup ID;0xA7;linux/devices/devicedefinitions/SupvReturnValuesIF.h;SUPV_RETURN_VALUES_IF
0x6ca8; SPVRTVIF_SweepPeriodTooSmall;Received set adc sweep period command with invalid sweep period. Must be larger than 21.;0xA8;linux/devices/devicedefinitions/SupvReturnValuesIF.h;SUPV_RETURN_VALUES_IF
0x6ca9; SPVRTVIF_InvalidTestParam;Receive auto EM test command with invalid test param. Valid params are 1 and 2.;0xA9;linux/devices/devicedefinitions/SupvReturnValuesIF.h;SUPV_RETURN_VALUES_IF
0x6caa; SPVRTVIF_MramPacketParsingFailure;Returned when scanning for MRAM dump packets failed.;0xAA;linux/devices/devicedefinitions/SupvReturnValuesIF.h;SUPV_RETURN_VALUES_IF
0x6cab; SPVRTVIF_InvalidMramAddresses;Returned when the start and stop addresses of the MRAM dump or MRAM wipe commands are invalid (e.g. start address bigger than stop address);0xAB;linux/devices/devicedefinitions/SupvReturnValuesIF.h;SUPV_RETURN_VALUES_IF
0x6cac; SPVRTVIF_NoMramPacket;Expect reception of an MRAM dump packet but received space packet with other apid.;0xAC;linux/devices/devicedefinitions/SupvReturnValuesIF.h;SUPV_RETURN_VALUES_IF
0x6cad; SPVRTVIF_PathDoesNotExist;Path to PLOC directory on SD card does not exist;0xAD;linux/devices/devicedefinitions/SupvReturnValuesIF.h;SUPV_RETURN_VALUES_IF
0x6cae; SPVRTVIF_MramFileNotExists;MRAM dump file does not exists. The file should actually already have been created with the reception of the first dump packet.;0xAE;linux/devices/devicedefinitions/SupvReturnValuesIF.h;SUPV_RETURN_VALUES_IF
0x6caf; SPVRTVIF_InvalidLength;Received action command has invalid length;0xAF;linux/devices/devicedefinitions/SupvReturnValuesIF.h;SUPV_RETURN_VALUES_IF
0x6cb0; SPVRTVIF_FilenameTooLong;Filename too long;0xB0;linux/devices/devicedefinitions/SupvReturnValuesIF.h;SUPV_RETURN_VALUES_IF
0x6cb1; SPVRTVIF_UpdateStatusReportInvalidLength;Received update status report with invalid packet length field;0xB1;linux/devices/devicedefinitions/SupvReturnValuesIF.h;SUPV_RETURN_VALUES_IF
0x6cb2; SPVRTVIF_UpdateCrcFailure;Update status report does not contain expected CRC. There might be a bit flip in the update memory region.;0xB2;linux/devices/devicedefinitions/SupvReturnValuesIF.h;SUPV_RETURN_VALUES_IF
0x6cb3; SPVRTVIF_SupvHelperExecuting;Supervisor helper task ist currently executing a command (wait until helper tas has finished or interrupt by sending the terminate command);0xB3;linux/devices/devicedefinitions/SupvReturnValuesIF.h;SUPV_RETURN_VALUES_IF
0x58e0; DWLPWRON_InvalidMode;Received command has invalid JESD mode (valid modes are 0 - 5);0xE0;linux/devices/devicedefinitions/PlocMPSoCDefinitions.h;DWLPWRON_CMD
0x58e1; DWLPWRON_InvalidLaneRate;Received command has invalid lane rate (valid lane rate are 0 - 9);0xE1;linux/devices/devicedefinitions/PlocMPSoCDefinitions.h;DWLPWRON_CMD
0x6601; JSONBASE_JsonFileNotExists;Specified json file does not exist;1;linux/devices/startracker/ArcsecJsonParamBase.h;ARCSEC_JSON_BASE
0x6602; JSONBASE_SetNotExists;Requested set does not exist in json file;2;linux/devices/startracker/ArcsecJsonParamBase.h;ARCSEC_JSON_BASE
0x6603; JSONBASE_ParamNotExists;Requested parameter does not exist in json file;3;linux/devices/startracker/ArcsecJsonParamBase.h;ARCSEC_JSON_BASE
0x57a0; STRH_TemperatureReqFailed;Status in temperature reply signals error;0xA0;linux/devices/startracker/StarTrackerHandler.h;STR_HANDLER
0x57a1; STRH_PingFailed;Ping command failed;0xA1;linux/devices/startracker/StarTrackerHandler.h;STR_HANDLER
0x57a2; STRH_VersionReqFailed;Status in version reply signals error;0xA2;linux/devices/startracker/StarTrackerHandler.h;STR_HANDLER
0x60a0; STRHLP_SdNotMounted;SD card specified in path string not mounted;0xA0;linux/devices/startracker/StrHelper.h;STR_HELPER
0x60a1; STRHLP_FileNotExists;Specified file does not exist on filesystem;0xA1;linux/devices/startracker/StrHelper.h;STR_HELPER
0x60a2; STRHLP_PathNotExists;Specified path does not exist;0xA2;linux/devices/startracker/StrHelper.h;STR_HELPER
0x60a3; STRHLP_FileCreationFailed;Failed to create download image or read flash file;0xA3;linux/devices/startracker/StrHelper.h;STR_HELPER
0x60a4; STRHLP_RegionMismatch;Region in flash write/read reply does not match expected region;0xA4;linux/devices/startracker/StrHelper.h;STR_HELPER
0x60a5; STRHLP_AddressMismatch;Address in flash write/read reply does not match expected address;0xA5;linux/devices/startracker/StrHelper.h;STR_HELPER
0x60a6; STRHLP_LengthMismatch;Length in flash write/read reply does not match expected length;0xA6;linux/devices/startracker/StrHelper.h;STR_HELPER
0x60a7; STRHLP_StatusError;Status field in reply signals error;0xA7;linux/devices/startracker/StrHelper.h;STR_HELPER
0x60a8; STRHLP_InvalidTypeId;Reply has invalid type ID (should be of action reply type);0xA8;linux/devices/startracker/StrHelper.h;STR_HELPER
0x57a3; STRH_InterfaceReqFailed;Status in interface reply signals error;0xA3;linux/devices/startracker/StarTrackerHandler.h;STR_HANDLER
0x57a4; STRH_PowerReqFailed;Status in power reply signals error;0xA4;linux/devices/startracker/StarTrackerHandler.h;STR_HANDLER
0x57a5; STRH_SetParamFailed;Status of reply to parameter set command signals error;0xA5;linux/devices/startracker/StarTrackerHandler.h;STR_HANDLER
0x57a6; STRH_ActionFailed;Status of reply to action command signals error;0xA6;linux/devices/startracker/StarTrackerHandler.h;STR_HANDLER
0x57a7; STRH_FilePathTooLong;Received invalid path string. Exceeds allowed length;0xA7;linux/devices/startracker/StarTrackerHandler.h;STR_HANDLER
0x57a8; STRH_FilenameTooLong;Name of file received with command is too long;0xA8;linux/devices/startracker/StarTrackerHandler.h;STR_HANDLER
0x57a9; STRH_InvalidProgram;Received version reply with invalid program ID;0xA9;linux/devices/startracker/StarTrackerHandler.h;STR_HANDLER
0x57aa; STRH_ReplyError;Status field reply signals error;0xAA;linux/devices/startracker/StarTrackerHandler.h;STR_HANDLER
0x57ab; STRH_CommandTooShort;Received command which is too short (some data is missing for proper execution);0xAB;linux/devices/startracker/StarTrackerHandler.h;STR_HANDLER
0x57ac; STRH_InvalidLength;Received command with invalid length (too few or too many parameters);0xAC;linux/devices/startracker/StarTrackerHandler.h;STR_HANDLER
0x57ad; STRH_RegionMismatch;Region mismatch between send and received data;0xAD;linux/devices/startracker/StarTrackerHandler.h;STR_HANDLER
0x57ae; STRH_AddressMismatch;Address mismatch between send and received data;0xAE;linux/devices/startracker/StarTrackerHandler.h;STR_HANDLER
0x57af; STRH_LengthMismatch;Length field mismatch between send and received data;0xAF;linux/devices/startracker/StarTrackerHandler.h;STR_HANDLER
0x57b0; STRH_FileNotExists;Specified file does not exist;0xB0;linux/devices/startracker/StarTrackerHandler.h;STR_HANDLER
0x57b1; STRH_InvalidType;Download blob pixel command has invalid type field;0xB1;linux/devices/startracker/StarTrackerHandler.h;STR_HANDLER
0x57b2; STRH_InvalidId;Received FPGA action command with invalid ID;0xB2;linux/devices/startracker/StarTrackerHandler.h;STR_HANDLER
0x57b3; STRH_ReplyTooShort;Received reply is too short;0xB3;linux/devices/startracker/StarTrackerHandler.h;STR_HANDLER
0x57b4; STRH_CrcFailure;Received reply with invalid CRC;0xB4;linux/devices/startracker/StarTrackerHandler.h;STR_HANDLER
0x57b5; STRH_StrHelperExecuting;Star tracker handler currently executing a command and using the communication interface;0xB5;linux/devices/startracker/StarTrackerHandler.h;STR_HANDLER
0x57b6; STRH_StartrackerAlreadyBooted;Star tracker is already in firmware mode;0xB6;linux/devices/startracker/StarTrackerHandler.h;STR_HANDLER
0x57b7; STRH_StartrackerRunningFirmware;Star tracker is in firmware mode but must be in bootloader mode to execute this command;0xB7;linux/devices/startracker/StarTrackerHandler.h;STR_HANDLER
0x57b8; STRH_StartrackerRunningBootloader;Star tracker is in bootloader mode but must be in firmware mode to execute this command;0xB8;linux/devices/startracker/StarTrackerHandler.h;STR_HANDLER
0x5ea0; PTME_UnknownVcId;;0xA0;linux/obc/Ptme.h;PTME
0x63a0; PDEC_AbandonedCltu;;0xA0;linux/obc/PdecHandler.h;PDEC_HANDLER
0x63a1; PDEC_FrameDirty;;0xA1;linux/obc/PdecHandler.h;PDEC_HANDLER
0x63a2; PDEC_FrameIllegalMultipleReasons;;0xA2;linux/obc/PdecHandler.h;PDEC_HANDLER
0x63a3; PDEC_AdDiscardedLockout;;0xA3;linux/obc/PdecHandler.h;PDEC_HANDLER
0x63a4; PDEC_AdDiscardedWait;;0xA4;linux/obc/PdecHandler.h;PDEC_HANDLER
0x63a5; PDEC_AdDiscardedNsVs;;0xA5;linux/obc/PdecHandler.h;PDEC_HANDLER
0x63b0; PDEC_CommandNotImplemented;Received action message with unknown action id;0xB0;linux/obc/PdecHandler.h;PDEC_HANDLER
0x63a6; PDEC_NoReport;;0xA6;linux/obc/PdecHandler.h;PDEC_HANDLER
0x63a7; PDEC_ErrorVersionNumber;;0xA7;linux/obc/PdecHandler.h;PDEC_HANDLER
0x63a8; PDEC_IllegalCombination;;0xA8;linux/obc/PdecHandler.h;PDEC_HANDLER
0x63a9; PDEC_InvalidScId;;0xA9;linux/obc/PdecHandler.h;PDEC_HANDLER
0x63aa; PDEC_InvalidVcIdMsb;;0xAA;linux/obc/PdecHandler.h;PDEC_HANDLER
0x63ab; PDEC_InvalidVcIdLsb;;0xAB;linux/obc/PdecHandler.h;PDEC_HANDLER
0x63ac; PDEC_NsNotZero;;0xAC;linux/obc/PdecHandler.h;PDEC_HANDLER
0x63ae; PDEC_InvalidBcCc;;0xAE;linux/obc/PdecHandler.h;PDEC_HANDLER
0x65a0; RS_RateNotSupported;The commanded rate is not supported by the current FPGA design;0xA0;linux/obc/PtmeConfig.h;RATE_SETTER
0x65a1; RS_BadBitRate;Bad bitrate has been commanded (e.g. 0);0xA1;linux/obc/PtmeConfig.h;RATE_SETTER
0x65a2; RS_ClkInversionFailed;Failed to invert clock and thus change the time the data is updated with respect to the tx clock;0xA2;linux/obc/PtmeConfig.h;RATE_SETTER
0x65a3; RS_TxManipulatorConfigFailed;Failed to change configuration bit of tx clock manipulator;0xA3;linux/obc/PtmeConfig.h;RATE_SETTER
0x5da0; IPCI_PapbBusy;;0xA0;linux/obc/PapbVcInterface.h;CCSDS_IP_CORE_BRIDGE
1 0x0 OK System-wide code for ok. RETURN_OK HasReturnvaluesIF.h HasReturnvaluesIF
2 0x1 Failed Unspecified system-wide code for failed. RETURN_FAILED HasReturnvaluesIF.h HasReturnvaluesIF
3 0x63a0 0x67a0 CCSDS_CommandNotImplemented NVMB_KeyNotExists Received action message with unknown action id Specified key does not exist in json file 0xA0 mission/tmtc/CCSDSHandler.h mission/memory/NVMParameterBase.h CCSDS_HANDLER NVM_PARAM_BASE
4 0x69a0 0x5ca0 SADPL_CommandNotSupported SUSS_ErrorUnlockMutex 0xA0 mission/devices/SolarArrayDeploymentHandler.h mission/devices/SusHandler.h SA_DEPL_HANDLER SUS_HANDLER
5 0x69a1 0x5ca1 SADPL_DeploymentAlreadyExecuting SUSS_ErrorLockMutex 0xA1 mission/devices/SolarArrayDeploymentHandler.h mission/devices/SusHandler.h SA_DEPL_HANDLER SUS_HANDLER
6 0x69a2 0x6aa0 SADPL_MainSwitchTimeoutFailure SADPL_CommandNotSupported 0xA2 0xA0 mission/devices/SolarArrayDeploymentHandler.h SA_DEPL_HANDLER
7 0x69a3 0x6aa1 SADPL_SwitchingDeplSa1Failed SADPL_DeploymentAlreadyExecuting 0xA3 0xA1 mission/devices/SolarArrayDeploymentHandler.h SA_DEPL_HANDLER
8 0x69a4 0x6aa2 SADPL_SwitchingDeplSa2Failed SADPL_MainSwitchTimeoutFailure 0xA4 0xA2 mission/devices/SolarArrayDeploymentHandler.h SA_DEPL_HANDLER
9 0x5ba0 0x6aa3 SUSS_ErrorUnlockMutex SADPL_SwitchingDeplSa1Failed 0xA0 0xA3 mission/devices/SusHandler.h mission/devices/SolarArrayDeploymentHandler.h SUS_HANDLER SA_DEPL_HANDLER
10 0x5ba1 0x6aa4 SUSS_ErrorLockMutex SADPL_SwitchingDeplSa2Failed 0xA1 0xA4 mission/devices/SusHandler.h mission/devices/SolarArrayDeploymentHandler.h SUS_HANDLER SA_DEPL_HANDLER
11 0x55b0 0x56b0 RWHA_SpiWriteFailure 0xB0 mission/devices/RwHandler.h RW_HANDLER
12 0x55b1 0x56b1 RWHA_SpiReadFailure Used by the spi send function to tell a failing read call 0xB1 mission/devices/RwHandler.h RW_HANDLER
13 0x55b2 0x56b2 RWHA_MissingStartSign Can be used by the HDLC decoding mechanism to inform about a missing start sign 0x7E 0xB2 mission/devices/RwHandler.h RW_HANDLER
14 0x55b3 0x56b3 RWHA_InvalidSubstitute Can be used by the HDLC decoding mechanism to inform about an invalid substitution combination 0xB3 mission/devices/RwHandler.h RW_HANDLER
15 0x55b4 0x56b4 RWHA_MissingEndSign HDLC decoding mechanism never receives the end sign 0x7E 0xB4 mission/devices/RwHandler.h RW_HANDLER
16 0x55b5 0x56b5 RWHA_NoReply Reaction wheel only responds with empty frames. 0xB5 mission/devices/RwHandler.h RW_HANDLER
17 0x55b6 0x56b6 RWHA_NoStartMarker Expected a start marker as first byte 0xB6 mission/devices/RwHandler.h RW_HANDLER
18 0x55a0 0x56a0 RWHA_InvalidSpeed Action Message with invalid speed was received. Valid speeds must be in the range of [-65000 1000] or [1000 65000] 0xA0
19 0x55a1 0x56a1 RWHA_InvalidRampTime Action Message with invalid ramp time was received. 0xA1 mission/devices/RwHandler.h RW_HANDLER
20 0x55a2 0x56a2 RWHA_SetSpeedCommandInvalidLength Received set speed command has invalid length. Should be 6. 0xA2 mission/devices/RwHandler.h RW_HANDLER
21 0x55a3 0x56a3 RWHA_ExecutionFailed Command execution failed 0xA3 mission/devices/RwHandler.h RW_HANDLER
22 0x55a4 0x56a4 RWHA_CrcError Reaction wheel reply has invalid crc 0xA4 mission/devices/RwHandler.h RW_HANDLER
23 0x54a0 0x6100 IMTQ_InvalidCommandCode GOMS_PacketTooLong 0xA0 0 mission/devices/IMTQHandler.h mission/devices/GomspaceDeviceHandler.h IMTQ_HANDLER GOM_SPACE_HANDLER
24 0x54a1 0x6101 IMTQ_ParameterMissing GOMS_InvalidTableId 0xA1 1 mission/devices/IMTQHandler.h mission/devices/GomspaceDeviceHandler.h IMTQ_HANDLER GOM_SPACE_HANDLER
25 0x54a2 0x6102 IMTQ_ParameterInvalid GOMS_InvalidAddress 0xA2 2 mission/devices/IMTQHandler.h mission/devices/GomspaceDeviceHandler.h IMTQ_HANDLER GOM_SPACE_HANDLER
26 0x54a3 0x6103 IMTQ_CcUnavailable GOMS_InvalidParamSize 0xA3 3 mission/devices/IMTQHandler.h mission/devices/GomspaceDeviceHandler.h IMTQ_HANDLER GOM_SPACE_HANDLER
27 0x54a4 0x6104 IMTQ_InternalProcessingError GOMS_InvalidPayloadSize 0xA4 4 mission/devices/IMTQHandler.h mission/devices/GomspaceDeviceHandler.h IMTQ_HANDLER GOM_SPACE_HANDLER
28 0x54a5 0x6105 IMTQ_RejectedWithoutReason GOMS_UnknownReplyId 0xA5 5 mission/devices/IMTQHandler.h mission/devices/GomspaceDeviceHandler.h IMTQ_HANDLER GOM_SPACE_HANDLER
29 0x54a6 0x55a0 IMTQ_CmdErrUnknown IMTQ_InvalidCommandCode 0xA6 0xA0 mission/devices/IMTQHandler.h IMTQ_HANDLER
30 0x54a7 0x55a1 IMTQ_UnexpectedSelfTestReply IMTQ_ParameterMissing The status reply to a self test command was received but no self test command has been sent. This should normally never happen. 0xA7 0xA1 mission/devices/IMTQHandler.h IMTQ_HANDLER
31 0x52a1 0x55a2 HEATER_CommandNotSupported IMTQ_ParameterInvalid 0xA1 0xA2 mission/devices/HeaterHandler.h mission/devices/IMTQHandler.h HEATER_HANDLER IMTQ_HANDLER
32 0x52a2 0x55a3 HEATER_InitFailed IMTQ_CcUnavailable 0xA2 0xA3 mission/devices/HeaterHandler.h mission/devices/IMTQHandler.h HEATER_HANDLER IMTQ_HANDLER
33 0x52a3 0x55a4 HEATER_InvalidSwitchNr IMTQ_InternalProcessingError 0xA3 0xA4 mission/devices/HeaterHandler.h mission/devices/IMTQHandler.h HEATER_HANDLER IMTQ_HANDLER
34 0x52a4 0x55a5 HEATER_MainSwitchSetTimeout IMTQ_RejectedWithoutReason 0xA4 0xA5 mission/devices/HeaterHandler.h mission/devices/IMTQHandler.h HEATER_HANDLER IMTQ_HANDLER
35 0x52a5 0x55a6 HEATER_CommandAlreadyWaiting IMTQ_CmdErrUnknown 0xA5 0xA6 mission/devices/HeaterHandler.h mission/devices/IMTQHandler.h HEATER_HANDLER IMTQ_HANDLER
36 0x6000 0x55a7 GOMS_PacketTooLong IMTQ_UnexpectedSelfTestReply The status reply to a self test command was received but no self test command has been sent. This should normally never happen. 0 0xA7 mission/devices/GomspaceDeviceHandler.h mission/devices/IMTQHandler.h GOM_SPACE_HANDLER IMTQ_HANDLER
37 0x6001 0x54a0 GOMS_InvalidTableId SYRLINKS_CrcFailure 1 0xA0 mission/devices/GomspaceDeviceHandler.h mission/devices/SyrlinksHkHandler.h GOM_SPACE_HANDLER SYRLINKS_HANDLER
38 0x6002 0x54a1 GOMS_InvalidAddress SYRLINKS_UartFraminOrParityErrorAck 2 0xA1 mission/devices/GomspaceDeviceHandler.h mission/devices/SyrlinksHkHandler.h GOM_SPACE_HANDLER SYRLINKS_HANDLER
39 0x6003 0x54a2 GOMS_InvalidParamSize SYRLINKS_BadCharacterAck 3 0xA2 mission/devices/GomspaceDeviceHandler.h mission/devices/SyrlinksHkHandler.h GOM_SPACE_HANDLER SYRLINKS_HANDLER
40 0x6004 0x54a3 GOMS_InvalidPayloadSize SYRLINKS_BadParameterValueAck 4 0xA3 mission/devices/GomspaceDeviceHandler.h mission/devices/SyrlinksHkHandler.h GOM_SPACE_HANDLER SYRLINKS_HANDLER
41 0x6005 0x54a4 GOMS_UnknownReplyId SYRLINKS_BadEndOfFrameAck 5 0xA4 mission/devices/GomspaceDeviceHandler.h mission/devices/SyrlinksHkHandler.h GOM_SPACE_HANDLER SYRLINKS_HANDLER
42 0x53a0 0x54a5 SYRLINKS_CrcFailure SYRLINKS_UnknownCommandIdAck 0xA0 0xA5 mission/devices/SyrlinksHkHandler.h SYRLINKS_HANDLER
43 0x53a1 0x54a6 SYRLINKS_UartFraminOrParityErrorAck SYRLINKS_BadCrcAck 0xA1 0xA6 mission/devices/SyrlinksHkHandler.h SYRLINKS_HANDLER
44 0x53a2 0x54a7 SYRLINKS_BadCharacterAck SYRLINKS_ReplyWrongSize 0xA2 0xA7 mission/devices/SyrlinksHkHandler.h SYRLINKS_HANDLER
45 0x53a3 0x54a8 SYRLINKS_BadParameterValueAck SYRLINKS_MissingStartFrameCharacter 0xA3 0xA8 mission/devices/SyrlinksHkHandler.h SYRLINKS_HANDLER
46 0x53a4 0x53a1 SYRLINKS_BadEndOfFrameAck HEATER_CommandNotSupported 0xA4 0xA1 mission/devices/SyrlinksHkHandler.h mission/devices/HeaterHandler.h SYRLINKS_HANDLER HEATER_HANDLER
47 0x53a5 0x53a2 SYRLINKS_UnknownCommandIdAck HEATER_InitFailed 0xA5 0xA2 mission/devices/SyrlinksHkHandler.h mission/devices/HeaterHandler.h SYRLINKS_HANDLER HEATER_HANDLER
48 0x53a6 0x53a3 SYRLINKS_BadCrcAck HEATER_InvalidSwitchNr 0xA6 0xA3 mission/devices/SyrlinksHkHandler.h mission/devices/HeaterHandler.h SYRLINKS_HANDLER HEATER_HANDLER
49 0x53a7 0x53a4 SYRLINKS_ReplyWrongSize HEATER_MainSwitchSetTimeout 0xA7 0xA4 mission/devices/SyrlinksHkHandler.h mission/devices/HeaterHandler.h SYRLINKS_HANDLER HEATER_HANDLER
50 0x53a8 0x53a5 SYRLINKS_MissingStartFrameCharacter HEATER_CommandAlreadyWaiting 0xA8 0xA5 mission/devices/SyrlinksHkHandler.h mission/devices/HeaterHandler.h SYRLINKS_HANDLER HEATER_HANDLER
51 0x66a0 0x64a0 NVMB_KeyNotExists CCSDS_CommandNotImplemented Specified key does not exist in json file Received action message with unknown action id 0xA0 mission/memory/NVMParameterBase.h mission/tmtc/CCSDSHandler.h NVM_PARAM_BASE CCSDS_HANDLER
0x4300 HSPI_OpeningFileFailed 0 fsfw/hal/src/fsfw_hal/linux/spi/SpiComIF.h HAL_SPI
0x4301 HSPI_FullDuplexTransferFailed 1 fsfw/hal/src/fsfw_hal/linux/spi/SpiComIF.h HAL_SPI
0x4302 HSPI_HalfDuplexTransferFailed 2 fsfw/hal/src/fsfw_hal/linux/spi/SpiComIF.h HAL_SPI
0x4401 HURT_UartReadFailure 1 fsfw/hal/src/fsfw_hal/linux/uart/UartComIF.h HAL_UART
0x4402 HURT_UartReadSizeMissmatch 2 fsfw/hal/src/fsfw_hal/linux/uart/UartComIF.h HAL_UART
0x4403 HURT_UartRxBufferTooSmall 3 fsfw/hal/src/fsfw_hal/linux/uart/UartComIF.h HAL_UART
0x4601 HGIO_UnknownGpioId 1 fsfw/hal/src/fsfw_hal/linux/gpio/LinuxLibgpioIF.h HAL_GPIO
0x4602 HGIO_DriveGpioFailure 2 fsfw/hal/src/fsfw_hal/linux/gpio/LinuxLibgpioIF.h HAL_GPIO
0x4603 HGIO_GpioTypeFailure 3 fsfw/hal/src/fsfw_hal/linux/gpio/LinuxLibgpioIF.h HAL_GPIO
0x4604 HGIO_GpioInvalidInstance 4 fsfw/hal/src/fsfw_hal/linux/gpio/LinuxLibgpioIF.h HAL_GPIO
0x4605 HGIO_GpioDuplicateDetected 5 fsfw/hal/src/fsfw_hal/linux/gpio/LinuxLibgpioIF.h HAL_GPIO
0x4606 HGIO_GpioInitFailed 6 fsfw/hal/src/fsfw_hal/linux/gpio/LinuxLibgpioIF.h HAL_GPIO
0x4607 HGIO_GpioGetValueFailed 7 fsfw/hal/src/fsfw_hal/linux/gpio/LinuxLibgpioIF.h HAL_GPIO
0x4200 UXOS_ExecutionFinished Execution of the current command has finished 0 fsfw/hal/src/fsfw_hal/linux/CommandExecutor.h LINUX_OSAL
0x4201 UXOS_CommandPending Command is pending. This will also be returned if the user tries to load another command but a command is still pending 1 fsfw/hal/src/fsfw_hal/linux/CommandExecutor.h LINUX_OSAL
0x4202 UXOS_BytesRead Some bytes have been read from the executing process 2 fsfw/hal/src/fsfw_hal/linux/CommandExecutor.h LINUX_OSAL
0x4203 UXOS_CommandError Command execution failed 3 fsfw/hal/src/fsfw_hal/linux/CommandExecutor.h LINUX_OSAL
0x4204 UXOS_NoCommandLoadedOrPending 4 fsfw/hal/src/fsfw_hal/linux/CommandExecutor.h LINUX_OSAL
0x4206 UXOS_PcloseCallError 6 fsfw/hal/src/fsfw_hal/linux/CommandExecutor.h LINUX_OSAL
0x3b00 LPIF_PoolEntryNotFound 0x00 fsfw/src/fsfw/datapoollocal/localPoolDefinitions.h LOCAL_POOL_OWNER_IF
0x3b01 LPIF_PoolEntryTypeConflict 0x01 fsfw/src/fsfw/datapoollocal/localPoolDefinitions.h LOCAL_POOL_OWNER_IF
0x3d00 HKM_QueueOrDestinationInvalid 0 fsfw/src/fsfw/datapoollocal/LocalDataPoolManager.h HOUSEKEEPING_MANAGER
0x3d01 HKM_WrongHkPacketType 1 fsfw/src/fsfw/datapoollocal/LocalDataPoolManager.h HOUSEKEEPING_MANAGER
0x3d02 HKM_ReportingStatusUnchanged 2 fsfw/src/fsfw/datapoollocal/LocalDataPoolManager.h HOUSEKEEPING_MANAGER
0x3d03 HKM_PeriodicHelperInvalid 3 fsfw/src/fsfw/datapoollocal/LocalDataPoolManager.h HOUSEKEEPING_MANAGER
0x3d04 HKM_PoolobjectNotFound 4 fsfw/src/fsfw/datapoollocal/LocalDataPoolManager.h HOUSEKEEPING_MANAGER
0x3d05 HKM_DatasetNotFound 5 fsfw/src/fsfw/datapoollocal/LocalDataPoolManager.h HOUSEKEEPING_MANAGER
0x3501 CFDP_InvalidTlvType 1 fsfw/src/fsfw/cfdp/definitions.h CFDP
0x3502 CFDP_InvalidDirectiveFields 2 fsfw/src/fsfw/cfdp/definitions.h CFDP
0x3503 CFDP_InvalidPduDatafieldLen 3 fsfw/src/fsfw/cfdp/definitions.h CFDP
0x3504 CFDP_InvalidAckDirectiveFields 4 fsfw/src/fsfw/cfdp/definitions.h CFDP
0x3505 CFDP_MetadataCantParseOptions 5 fsfw/src/fsfw/cfdp/definitions.h CFDP
0x3506 CFDP_FinishedCantParseFsResponses 6 fsfw/src/fsfw/cfdp/definitions.h CFDP
0x3508 CFDP_FilestoreRequiresSecondFile 8 fsfw/src/fsfw/cfdp/definitions.h CFDP
0x3509 CFDP_FilestoreResponseCantParseFsMessage 9 fsfw/src/fsfw/cfdp/definitions.h CFDP
0x3101 CF_ObjectHasNoFunctions 1 fsfw/src/fsfw/action/CommandsActionsIF.h COMMANDS_ACTIONS_IF
0x3102 CF_AlreadyCommanding 2 fsfw/src/fsfw/action/CommandsActionsIF.h COMMANDS_ACTIONS_IF
0x3201 HF_IsBusy 1 fsfw/src/fsfw/action/HasActionsIF.h HAS_ACTIONS_IF
0x3202 HF_InvalidParameters 2 fsfw/src/fsfw/action/HasActionsIF.h HAS_ACTIONS_IF
0x3203 HF_ExecutionFinished 3 fsfw/src/fsfw/action/HasActionsIF.h HAS_ACTIONS_IF
0x3204 HF_InvalidActionId 4 fsfw/src/fsfw/action/HasActionsIF.h HAS_ACTIONS_IF
0x2d01 HPA_InvalidIdentifierId 0x01 fsfw/src/fsfw/parameters/HasParametersIF.h HAS_PARAMETERS_IF
0x2d02 HPA_InvalidDomainId 0x02 fsfw/src/fsfw/parameters/HasParametersIF.h HAS_PARAMETERS_IF
0x2d03 HPA_InvalidValue 0x03 fsfw/src/fsfw/parameters/HasParametersIF.h HAS_PARAMETERS_IF
0x2d05 HPA_ReadOnly 0x05 fsfw/src/fsfw/parameters/HasParametersIF.h HAS_PARAMETERS_IF
0x2c01 PAW_UnknownDatatype 0x01 fsfw/src/fsfw/parameters/ParameterWrapper.h PARAMETER_WRAPPER
0x2c02 PAW_DatatypeMissmatch 0x02 fsfw/src/fsfw/parameters/ParameterWrapper.h PARAMETER_WRAPPER
0x2c03 PAW_Readonly 0x03 fsfw/src/fsfw/parameters/ParameterWrapper.h PARAMETER_WRAPPER
0x2c04 PAW_TooBig 0x04 fsfw/src/fsfw/parameters/ParameterWrapper.h PARAMETER_WRAPPER
0x2c05 PAW_SourceNotSet 0x05 fsfw/src/fsfw/parameters/ParameterWrapper.h PARAMETER_WRAPPER
0x2c06 PAW_OutOfBounds 0x06 fsfw/src/fsfw/parameters/ParameterWrapper.h PARAMETER_WRAPPER
0x2c07 PAW_NotSet 0x07 fsfw/src/fsfw/parameters/ParameterWrapper.h PARAMETER_WRAPPER
0x2c08 PAW_ColumnOrRowsZero 0x08 fsfw/src/fsfw/parameters/ParameterWrapper.h PARAMETER_WRAPPER
0x1701 HHI_ObjectNotHealthy 1 fsfw/src/fsfw/health/HasHealthIF.h HAS_HEALTH_IF
0x1702 HHI_InvalidHealthState 2 fsfw/src/fsfw/health/HasHealthIF.h HAS_HEALTH_IF
52 0x2701 SM_DataTooLarge 1 fsfw/src/fsfw/storagemanager/StorageManagerIF.h STORAGE_MANAGER_IF
53 0x2702 SM_DataStorageFull 2 fsfw/src/fsfw/storagemanager/StorageManagerIF.h STORAGE_MANAGER_IF
54 0x2703 SM_IllegalStorageId 3 fsfw/src/fsfw/storagemanager/StorageManagerIF.h STORAGE_MANAGER_IF
55 0x2704 SM_DataDoesNotExist 4 fsfw/src/fsfw/storagemanager/StorageManagerIF.h STORAGE_MANAGER_IF
56 0x2705 SM_IllegalAddress 5 fsfw/src/fsfw/storagemanager/StorageManagerIF.h STORAGE_MANAGER_IF
57 0x2706 SM_PoolTooLarge 6 fsfw/src/fsfw/storagemanager/StorageManagerIF.h STORAGE_MANAGER_IF
58 0x2301 0x601 MT_TooDetailedRequest PP_DoItMyself 1 fsfw/src/fsfw/globalfunctions/matching/MatchTree.h fsfw/src/fsfw/memory/HasMemoryIF.h MATCH_TREE_CLASS HAS_MEMORY_IF
59 0x2302 0x602 MT_TooGeneralRequest PP_PointsToVariable 2 fsfw/src/fsfw/globalfunctions/matching/MatchTree.h fsfw/src/fsfw/memory/HasMemoryIF.h MATCH_TREE_CLASS HAS_MEMORY_IF
60 0x2303 0x603 MT_NoMatch PP_PointsToMemory 3 fsfw/src/fsfw/globalfunctions/matching/MatchTree.h fsfw/src/fsfw/memory/HasMemoryIF.h MATCH_TREE_CLASS HAS_MEMORY_IF
61 0x2304 0x604 MT_Full PP_ActivityCompleted 4 fsfw/src/fsfw/globalfunctions/matching/MatchTree.h fsfw/src/fsfw/memory/HasMemoryIF.h MATCH_TREE_CLASS HAS_MEMORY_IF
62 0x2305 0x605 MT_NewNodeCreated PP_PointsToVectorUint8 5 fsfw/src/fsfw/globalfunctions/matching/MatchTree.h fsfw/src/fsfw/memory/HasMemoryIF.h MATCH_TREE_CLASS HAS_MEMORY_IF
63 0x3e01 0x606 DLEE_StreamTooShort PP_PointsToVectorUint16 0x01 6 fsfw/src/fsfw/globalfunctions/DleEncoder.h fsfw/src/fsfw/memory/HasMemoryIF.h DLE_ENCODER HAS_MEMORY_IF
64 0x3e02 0x607 DLEE_DecodingError PP_PointsToVectorUint32 0x02 7 fsfw/src/fsfw/globalfunctions/DleEncoder.h fsfw/src/fsfw/memory/HasMemoryIF.h DLE_ENCODER HAS_MEMORY_IF
65 0x2e01 0x608 ASC_TooLongForTargetType PP_PointsToVectorFloat 1 8 fsfw/src/fsfw/globalfunctions/AsciiConverter.h fsfw/src/fsfw/memory/HasMemoryIF.h ASCII_CONVERTER HAS_MEMORY_IF
66 0x2e02 0x6a0 ASC_InvalidCharacters PP_DumpNotSupported 2 0xA0 fsfw/src/fsfw/globalfunctions/AsciiConverter.h fsfw/src/fsfw/memory/HasMemoryIF.h ASCII_CONVERTER HAS_MEMORY_IF
67 0x2e03 0x6e0 ASC_BufferTooSmall PP_InvalidSize 0x3 0xE0 fsfw/src/fsfw/globalfunctions/AsciiConverter.h fsfw/src/fsfw/memory/HasMemoryIF.h ASCII_CONVERTER HAS_MEMORY_IF
68 0x1c01 0x6e1 TCD_PacketLost PP_InvalidAddress 1 0xE1 fsfw/src/fsfw/tcdistribution/TcDistributor.h fsfw/src/fsfw/memory/HasMemoryIF.h PACKET_DISTRIBUTION HAS_MEMORY_IF
69 0x1c02 0x6e2 TCD_DestinationNotFound PP_InvalidContent 2 0xE2 fsfw/src/fsfw/tcdistribution/TcDistributor.h fsfw/src/fsfw/memory/HasMemoryIF.h PACKET_DISTRIBUTION HAS_MEMORY_IF
70 0x1c03 0x6e3 TCD_ServiceIdAlreadyExists PP_UnalignedAccess 3 0xE3 fsfw/src/fsfw/tcdistribution/TcDistributor.h fsfw/src/fsfw/memory/HasMemoryIF.h PACKET_DISTRIBUTION HAS_MEMORY_IF
71 0x1b00 0x6e4 TCC_IllegalApid PP_WriteProtected 0 0xE4 fsfw/src/fsfw/tcdistribution/TcPacketCheckPUS.h fsfw/src/fsfw/memory/HasMemoryIF.h TC_PACKET_CHECK HAS_MEMORY_IF
72 0x1b01 0x4200 TCC_IncompletePacket FILS_GenericFileError 1 0 fsfw/src/fsfw/tcdistribution/TcPacketCheckPUS.h fsfw/src/fsfw/memory/HasFileSystemIF.h TC_PACKET_CHECK FILE_SYSTEM
73 0x1b02 0x4201 TCC_IncorrectChecksum FILS_IsBusy 2 1 fsfw/src/fsfw/tcdistribution/TcPacketCheckPUS.h fsfw/src/fsfw/memory/HasFileSystemIF.h TC_PACKET_CHECK FILE_SYSTEM
74 0x1b03 0x4202 TCC_IllegalPacketType FILS_InvalidParameters 3 2 fsfw/src/fsfw/tcdistribution/TcPacketCheckPUS.h fsfw/src/fsfw/memory/HasFileSystemIF.h TC_PACKET_CHECK FILE_SYSTEM
75 0x1b04 0x4205 TCC_IllegalPacketSubtype FILS_FileDoesNotExist 4 5 fsfw/src/fsfw/tcdistribution/TcPacketCheckPUS.h fsfw/src/fsfw/memory/HasFileSystemIF.h TC_PACKET_CHECK FILE_SYSTEM
76 0x1b05 0x4206 TCC_IncorrectPrimaryHeader FILS_FileAlreadyExists 5 6 fsfw/src/fsfw/tcdistribution/TcPacketCheckPUS.h fsfw/src/fsfw/memory/HasFileSystemIF.h TC_PACKET_CHECK FILE_SYSTEM
77 0x1b06 0x4207 TCC_IncorrectSecondaryHeader FILS_FileLocked 6 7 fsfw/src/fsfw/tcdistribution/TcPacketCheckPUS.h fsfw/src/fsfw/memory/HasFileSystemIF.h TC_PACKET_CHECK FILE_SYSTEM
78 0x3901 0x420a MQI_Empty FILS_DirectoryDoesNotExist 1 10 fsfw/src/fsfw/ipc/MessageQueueIF.h fsfw/src/fsfw/memory/HasFileSystemIF.h MESSAGE_QUEUE_IF FILE_SYSTEM
79 0x3902 0x420b MQI_Full FILS_DirectoryAlreadyExists No space left for more messages 2 11 fsfw/src/fsfw/ipc/MessageQueueIF.h fsfw/src/fsfw/memory/HasFileSystemIF.h MESSAGE_QUEUE_IF FILE_SYSTEM
80 0x3903 0x420c MQI_NoReplyPartner FILS_DirectoryNotEmpty Returned if a reply method was called without partner 3 12 fsfw/src/fsfw/ipc/MessageQueueIF.h fsfw/src/fsfw/memory/HasFileSystemIF.h MESSAGE_QUEUE_IF FILE_SYSTEM
81 0x3904 0x420f MQI_DestinationInvalid FILS_SequencePacketMissingWrite Returned if the target destination is invalid. 4 15 fsfw/src/fsfw/ipc/MessageQueueIF.h fsfw/src/fsfw/memory/HasFileSystemIF.h MESSAGE_QUEUE_IF FILE_SYSTEM
82 0xf01 0x4210 CM_UnknownCommand FILS_SequencePacketMissingRead 1 16 fsfw/src/fsfw/ipc/CommandMessageIF.h fsfw/src/fsfw/memory/HasFileSystemIF.h COMMAND_MESSAGE FILE_SYSTEM
83 0x13e0 MH_UnknownCmd 0xE0 fsfw/src/fsfw/memory/MemoryHelper.h MEMORY_HELPER
84 0x13e1 MH_InvalidAddress 0xE1 fsfw/src/fsfw/memory/MemoryHelper.h MEMORY_HELPER
85 0x13e2 MH_InvalidSize 0xE2 fsfw/src/fsfw/memory/MemoryHelper.h MEMORY_HELPER
86 0x13e3 MH_StateMismatch 0xE3 fsfw/src/fsfw/memory/MemoryHelper.h MEMORY_HELPER
87 0x37a1 SGP4_InvalidEccentricity 0xA1 fsfw/src/fsfw/coordinates/Sgp4Propagator.h SGP4PROPAGATOR_CLASS
88 0x37a2 SGP4_InvalidMeanMotion 0xA2 fsfw/src/fsfw/coordinates/Sgp4Propagator.h SGP4PROPAGATOR_CLASS
89 0x37a3 SGP4_InvalidPerturbationElements 0xA3 fsfw/src/fsfw/coordinates/Sgp4Propagator.h SGP4PROPAGATOR_CLASS
90 0x37a4 SGP4_InvalidSemiLatusRectum 0xA4 fsfw/src/fsfw/coordinates/Sgp4Propagator.h SGP4PROPAGATOR_CLASS
91 0x37a5 SGP4_InvalidEpochElements 0xA5 fsfw/src/fsfw/coordinates/Sgp4Propagator.h SGP4PROPAGATOR_CLASS
92 0x37a6 SGP4_SatelliteHasDecayed 0xA6 fsfw/src/fsfw/coordinates/Sgp4Propagator.h SGP4PROPAGATOR_CLASS
93 0x37b1 SGP4_TleTooOld 0xB1 fsfw/src/fsfw/coordinates/Sgp4Propagator.h SGP4PROPAGATOR_CLASS
94 0x37b2 SGP4_TleNotInitialized 0xB2 fsfw/src/fsfw/coordinates/Sgp4Propagator.h SGP4PROPAGATOR_CLASS
95 0x1101 AL_Full 0x01 fsfw/src/fsfw/container/ArrayList.h ARRAY_LIST
96 0x1501 FM_KeyAlreadyExists 0x01 fsfw/src/fsfw/container/FixedMap.h FIXED_MAP
97 0x1502 FM_MapFull 0x02 fsfw/src/fsfw/container/FixedMap.h FIXED_MAP
98 0x1503 FM_KeyDoesNotExist 0x03 fsfw/src/fsfw/container/FixedMap.h FIXED_MAP
99 0x1801 FF_Full 1 fsfw/src/fsfw/container/FIFOBase.h FIFO_CLASS
100 0x1802 FF_Empty 2 fsfw/src/fsfw/container/FIFOBase.h FIFO_CLASS
101 0x1601 FMM_MapFull 0x01 fsfw/src/fsfw/container/FixedOrderedMultimap.h FIXED_MULTIMAP
102 0x1602 FMM_KeyDoesNotExist 0x02 fsfw/src/fsfw/container/FixedOrderedMultimap.h FIXED_MULTIMAP
103 0x3801 MUX_NotEnoughResources 1 fsfw/src/fsfw/ipc/MutexIF.h MUTEX_IF
104 0x3802 MUX_InsufficientMemory 2 fsfw/src/fsfw/ipc/MutexIF.h MUTEX_IF
105 0x3803 MUX_NoPrivilege 3 fsfw/src/fsfw/ipc/MutexIF.h MUTEX_IF
112 0x380a MUX_MutexTimeout 10 fsfw/src/fsfw/ipc/MutexIF.h MUTEX_IF
113 0x380b MUX_MutexInvalidId 11 fsfw/src/fsfw/ipc/MutexIF.h MUTEX_IF
114 0x380c MUX_MutexDestroyedWhileWaiting 12 fsfw/src/fsfw/ipc/MutexIF.h MUTEX_IF
115 0x2801 0x3901 TC_InvalidTargetState MQI_Empty 1 fsfw/src/fsfw/thermal/ThermalComponentIF.h fsfw/src/fsfw/ipc/MessageQueueIF.h THERMAL_COMPONENT_IF MESSAGE_QUEUE_IF
116 0x28f1 0x3902 TC_AboveOperationalLimit MQI_Full No space left for more messages 0xF1 2 fsfw/src/fsfw/thermal/ThermalComponentIF.h fsfw/src/fsfw/ipc/MessageQueueIF.h THERMAL_COMPONENT_IF MESSAGE_QUEUE_IF
117 0x28f2 0x3903 TC_BelowOperationalLimit MQI_NoReplyPartner Returned if a reply method was called without partner 0xF2 3 fsfw/src/fsfw/thermal/ThermalComponentIF.h fsfw/src/fsfw/ipc/MessageQueueIF.h THERMAL_COMPONENT_IF MESSAGE_QUEUE_IF
118 0x801 0x3904 DPS_InvalidParameterDefinition MQI_DestinationInvalid Returned if the target destination is invalid. 1 4 fsfw/src/fsfw/datapool/DataSetIF.h fsfw/src/fsfw/ipc/MessageQueueIF.h DATA_SET_CLASS MESSAGE_QUEUE_IF
119 0x802 0xf01 DPS_SetWasAlreadyRead CM_UnknownCommand 2 1 fsfw/src/fsfw/datapool/DataSetIF.h fsfw/src/fsfw/ipc/CommandMessageIF.h DATA_SET_CLASS COMMAND_MESSAGE
120 0x803 0xe01 DPS_CommitingWithoutReading HM_InvalidMode 3 0x01 fsfw/src/fsfw/datapool/DataSetIF.h fsfw/src/fsfw/modes/HasModesIF.h DATA_SET_CLASS HAS_MODES_IF
121 0x804 0xe02 DPS_DataSetUninitialised HM_TransNotAllowed 4 0x02 fsfw/src/fsfw/datapool/DataSetIF.h fsfw/src/fsfw/modes/HasModesIF.h DATA_SET_CLASS HAS_MODES_IF
122 0x805 0xe03 DPS_DataSetFull HM_InTransition 5 0x03 fsfw/src/fsfw/datapool/DataSetIF.h fsfw/src/fsfw/modes/HasModesIF.h DATA_SET_CLASS HAS_MODES_IF
123 0x806 0xe04 DPS_PoolVarNull HM_InvalidSubmode 6 0x04 fsfw/src/fsfw/datapool/DataSetIF.h fsfw/src/fsfw/modes/HasModesIF.h DATA_SET_CLASS HAS_MODES_IF
0x3ca0 PVA_InvalidReadWriteMode 0xA0 fsfw/src/fsfw/datapool/PoolVariableIF.h POOL_VARIABLE_IF
0x3ca1 PVA_InvalidPoolEntry 0xA1 fsfw/src/fsfw/datapool/PoolVariableIF.h POOL_VARIABLE_IF
124 0xc02 MS_InvalidEntry 0x02 fsfw/src/fsfw/subsystem/modes/ModeStoreIF.h MODE_STORE_IF
125 0xc03 MS_TooManyElements 0x03 fsfw/src/fsfw/subsystem/modes/ModeStoreIF.h MODE_STORE_IF
126 0xc04 MS_CantStoreEmpty 0x04 fsfw/src/fsfw/subsystem/modes/ModeStoreIF.h MODE_STORE_IF
127 0xb01 SB_ChildNotFound 0x01 fsfw/src/fsfw/subsystem/SubsystemBase.h SUBSYSTEM_BASE
128 0xb02 SB_ChildInfoUpdated 0x02 fsfw/src/fsfw/subsystem/SubsystemBase.h SUBSYSTEM_BASE
129 0xb03 SB_ChildDoesntHaveModes 0x03 fsfw/src/fsfw/subsystem/SubsystemBase.h SUBSYSTEM_BASE
130 0xb04 SB_CouldNotInsertChild 0x04 fsfw/src/fsfw/subsystem/SubsystemBase.h SUBSYSTEM_BASE
131 0xb05 SB_TableContainsInvalidObjectId 0x05 fsfw/src/fsfw/subsystem/SubsystemBase.h SUBSYSTEM_BASE
132 0xd01 SS_SequenceAlreadyExists 0x01 fsfw/src/fsfw/subsystem/Subsystem.h SUBSYSTEM
133 0xd02 SS_TableAlreadyExists 0x02 fsfw/src/fsfw/subsystem/Subsystem.h SUBSYSTEM
134 0xd03 SS_TableDoesNotExist 0x03 fsfw/src/fsfw/subsystem/Subsystem.h SUBSYSTEM
143 0xd0e SS_TableInUse 0x0E fsfw/src/fsfw/subsystem/Subsystem.h SUBSYSTEM
144 0xda1 SS_TargetTableNotReached 0xA1 fsfw/src/fsfw/subsystem/Subsystem.h SUBSYSTEM
145 0xda2 SS_TableCheckFailed 0xA2 fsfw/src/fsfw/subsystem/Subsystem.h SUBSYSTEM
146 0xb01 0x2401 SB_ChildNotFound EV_ListenerNotFound 0x01 1 fsfw/src/fsfw/subsystem/SubsystemBase.h fsfw/src/fsfw/events/EventManagerIF.h SUBSYSTEM_BASE EVENT_MANAGER_IF
0xb02 SB_ChildInfoUpdated 0x02 fsfw/src/fsfw/subsystem/SubsystemBase.h SUBSYSTEM_BASE
0xb03 SB_ChildDoesntHaveModes 0x03 fsfw/src/fsfw/subsystem/SubsystemBase.h SUBSYSTEM_BASE
0xb04 SB_CouldNotInsertChild 0x04 fsfw/src/fsfw/subsystem/SubsystemBase.h SUBSYSTEM_BASE
0xb05 SB_TableContainsInvalidObjectId 0x05 fsfw/src/fsfw/subsystem/SubsystemBase.h SUBSYSTEM_BASE
0xb00 SB_ConnBroken 0 fsfw/src/fsfw/osal/common/TcpTmTcServer.h SUBSYSTEM_BASE
0x2901 IEC_NoConfigurationTable 0x01 fsfw/src/fsfw/osal/InternalErrorCodes.h INTERNAL_ERROR_CODES
0x2902 IEC_NoCpuTable 0x02 fsfw/src/fsfw/osal/InternalErrorCodes.h INTERNAL_ERROR_CODES
0x2903 IEC_InvalidWorkspaceAddress 0x03 fsfw/src/fsfw/osal/InternalErrorCodes.h INTERNAL_ERROR_CODES
0x2904 IEC_TooLittleWorkspace 0x04 fsfw/src/fsfw/osal/InternalErrorCodes.h INTERNAL_ERROR_CODES
0x2905 IEC_WorkspaceAllocation 0x05 fsfw/src/fsfw/osal/InternalErrorCodes.h INTERNAL_ERROR_CODES
0x2906 IEC_InterruptStackTooSmall 0x06 fsfw/src/fsfw/osal/InternalErrorCodes.h INTERNAL_ERROR_CODES
0x2907 IEC_ThreadExitted 0x07 fsfw/src/fsfw/osal/InternalErrorCodes.h INTERNAL_ERROR_CODES
0x2908 IEC_InconsistentMpInformation 0x08 fsfw/src/fsfw/osal/InternalErrorCodes.h INTERNAL_ERROR_CODES
0x2909 IEC_InvalidNode 0x09 fsfw/src/fsfw/osal/InternalErrorCodes.h INTERNAL_ERROR_CODES
0x290a IEC_NoMpci 0x0a fsfw/src/fsfw/osal/InternalErrorCodes.h INTERNAL_ERROR_CODES
0x290b IEC_BadPacket 0x0b fsfw/src/fsfw/osal/InternalErrorCodes.h INTERNAL_ERROR_CODES
0x290c IEC_OutOfPackets 0x0c fsfw/src/fsfw/osal/InternalErrorCodes.h INTERNAL_ERROR_CODES
0x290d IEC_OutOfGlobalObjects 0x0d fsfw/src/fsfw/osal/InternalErrorCodes.h INTERNAL_ERROR_CODES
0x290e IEC_OutOfProxies 0x0e fsfw/src/fsfw/osal/InternalErrorCodes.h INTERNAL_ERROR_CODES
0x290f IEC_InvalidGlobalId 0x0f fsfw/src/fsfw/osal/InternalErrorCodes.h INTERNAL_ERROR_CODES
0x2910 IEC_BadStackHook 0x10 fsfw/src/fsfw/osal/InternalErrorCodes.h INTERNAL_ERROR_CODES
0x2911 IEC_BadAttributes 0x11 fsfw/src/fsfw/osal/InternalErrorCodes.h INTERNAL_ERROR_CODES
0x2912 IEC_ImplementationKeyCreateInconsistency 0x12 fsfw/src/fsfw/osal/InternalErrorCodes.h INTERNAL_ERROR_CODES
0x2913 IEC_ImplementationBlockingOperationCancel 0x13 fsfw/src/fsfw/osal/InternalErrorCodes.h INTERNAL_ERROR_CODES
0x2914 IEC_MutexObtainFromBadState 0x14 fsfw/src/fsfw/osal/InternalErrorCodes.h INTERNAL_ERROR_CODES
0x2915 IEC_UnlimitedAndMaximumIs0 0x15 fsfw/src/fsfw/osal/InternalErrorCodes.h INTERNAL_ERROR_CODES
0x1401 SE_BufferTooShort 1 fsfw/src/fsfw/serialize/SerializeIF.h SERIALIZE_IF
0x1402 SE_StreamTooShort 2 fsfw/src/fsfw/serialize/SerializeIF.h SERIALIZE_IF
0x1403 SE_TooManyElements 3 fsfw/src/fsfw/serialize/SerializeIF.h SERIALIZE_IF
0x4a00 SPPA_NoPacketFound 0x00 fsfw/src/fsfw/tmtcservices/SpacePacketParser.h SPACE_PACKET_PARSER
0x4a01 SPPA_SplitPacket 0x01 fsfw/src/fsfw/tmtcservices/SpacePacketParser.h SPACE_PACKET_PARSER
0x1d01 PUS_ActivityStarted 1 fsfw/src/fsfw/tmtcservices/AcceptsTelecommandsIF.h ACCEPTS_TELECOMMANDS_IF
0x1d02 PUS_InvalidSubservice 2 fsfw/src/fsfw/tmtcservices/AcceptsTelecommandsIF.h ACCEPTS_TELECOMMANDS_IF
0x1d03 PUS_IllegalApplicationData 3 fsfw/src/fsfw/tmtcservices/AcceptsTelecommandsIF.h ACCEPTS_TELECOMMANDS_IF
0x1d04 PUS_SendTmFailed 4 fsfw/src/fsfw/tmtcservices/AcceptsTelecommandsIF.h ACCEPTS_TELECOMMANDS_IF
0x1d05 PUS_Timeout 5 fsfw/src/fsfw/tmtcservices/AcceptsTelecommandsIF.h ACCEPTS_TELECOMMANDS_IF
0x1f01 CSB_ExecutionComplete 1 fsfw/src/fsfw/tmtcservices/CommandingServiceBase.h COMMAND_SERVICE_BASE
0x1f02 CSB_NoStepMessage 2 fsfw/src/fsfw/tmtcservices/CommandingServiceBase.h COMMAND_SERVICE_BASE
0x1f03 CSB_ObjectBusy 3 fsfw/src/fsfw/tmtcservices/CommandingServiceBase.h COMMAND_SERVICE_BASE
0x1f04 CSB_Busy 4 fsfw/src/fsfw/tmtcservices/CommandingServiceBase.h COMMAND_SERVICE_BASE
0x1f05 CSB_InvalidTc 5 fsfw/src/fsfw/tmtcservices/CommandingServiceBase.h COMMAND_SERVICE_BASE
0x1f06 CSB_InvalidObject 6 fsfw/src/fsfw/tmtcservices/CommandingServiceBase.h COMMAND_SERVICE_BASE
0x1f07 CSB_InvalidReply 7 fsfw/src/fsfw/tmtcservices/CommandingServiceBase.h COMMAND_SERVICE_BASE
0x2500 FDI_YourFault 0 fsfw/src/fsfw/fdir/ConfirmsFailuresIF.h HANDLES_FAILURES_IF
0x2501 FDI_MyFault 1 fsfw/src/fsfw/fdir/ConfirmsFailuresIF.h HANDLES_FAILURES_IF
0x2502 FDI_ConfirmLater 2 fsfw/src/fsfw/fdir/ConfirmsFailuresIF.h HANDLES_FAILURES_IF
147 0x4e1 RMP_CommandNoDescriptorsAvailable 0xE1 fsfw/src/fsfw/rmap/RMAP.h RMAP_CHANNEL
148 0x4e2 RMP_CommandBufferFull 0xE2 fsfw/src/fsfw/rmap/RMAP.h RMAP_CHANNEL
149 0x4e3 RMP_CommandChannelOutOfRange 0xE3 fsfw/src/fsfw/rmap/RMAP.h RMAP_CHANNEL
184 0x40a RMP_ReplyCommandNotImplementedOrNotAuthorised 10 fsfw/src/fsfw/rmap/RMAP.h RMAP_CHANNEL
185 0x40b RMP_ReplyRmwDataLengthError 11 fsfw/src/fsfw/rmap/RMAP.h RMAP_CHANNEL
186 0x40c RMP_ReplyInvalidTargetLogicalAddress 12 fsfw/src/fsfw/rmap/RMAP.h RMAP_CHANNEL
187 0x1401 SE_BufferTooShort 1 fsfw/src/fsfw/serialize/SerializeIF.h SERIALIZE_IF
188 0x1402 SE_StreamTooShort 2 fsfw/src/fsfw/serialize/SerializeIF.h SERIALIZE_IF
189 0x1403 SE_TooManyElements 3 fsfw/src/fsfw/serialize/SerializeIF.h SERIALIZE_IF
190 0x3ca0 PVA_InvalidReadWriteMode 0xA0 fsfw/src/fsfw/datapool/PoolVariableIF.h POOL_VARIABLE_IF
191 0x3ca1 PVA_InvalidPoolEntry 0xA1 fsfw/src/fsfw/datapool/PoolVariableIF.h POOL_VARIABLE_IF
192 0x801 DPS_InvalidParameterDefinition 1 fsfw/src/fsfw/datapool/DataSetIF.h DATA_SET_CLASS
193 0x802 DPS_SetWasAlreadyRead 2 fsfw/src/fsfw/datapool/DataSetIF.h DATA_SET_CLASS
194 0x803 DPS_CommitingWithoutReading 3 fsfw/src/fsfw/datapool/DataSetIF.h DATA_SET_CLASS
195 0x804 DPS_DataSetUninitialised 4 fsfw/src/fsfw/datapool/DataSetIF.h DATA_SET_CLASS
196 0x805 DPS_DataSetFull 5 fsfw/src/fsfw/datapool/DataSetIF.h DATA_SET_CLASS
197 0x806 DPS_PoolVarNull 6 fsfw/src/fsfw/datapool/DataSetIF.h DATA_SET_CLASS
198 0x1b00 TCC_IllegalApid 0 fsfw/src/fsfw/tcdistribution/TcPacketCheckPUS.h TC_PACKET_CHECK
199 0x1b01 TCC_IncompletePacket 1 fsfw/src/fsfw/tcdistribution/TcPacketCheckPUS.h TC_PACKET_CHECK
200 0x1b02 TCC_IncorrectChecksum 2 fsfw/src/fsfw/tcdistribution/TcPacketCheckPUS.h TC_PACKET_CHECK
201 0x1b03 TCC_IllegalPacketType 3 fsfw/src/fsfw/tcdistribution/TcPacketCheckPUS.h TC_PACKET_CHECK
202 0x1b04 TCC_IllegalPacketSubtype 4 fsfw/src/fsfw/tcdistribution/TcPacketCheckPUS.h TC_PACKET_CHECK
203 0x1b05 TCC_IncorrectPrimaryHeader 5 fsfw/src/fsfw/tcdistribution/TcPacketCheckPUS.h TC_PACKET_CHECK
204 0x1b06 TCC_IncorrectSecondaryHeader 6 fsfw/src/fsfw/tcdistribution/TcPacketCheckPUS.h TC_PACKET_CHECK
205 0x1c01 TCD_PacketLost 1 fsfw/src/fsfw/tcdistribution/TcDistributor.h PACKET_DISTRIBUTION
206 0x1c02 TCD_DestinationNotFound 2 fsfw/src/fsfw/tcdistribution/TcDistributor.h PACKET_DISTRIBUTION
207 0x1c03 TCD_ServiceIdAlreadyExists 3 fsfw/src/fsfw/tcdistribution/TcDistributor.h PACKET_DISTRIBUTION
208 0x2f01 POS_InPowerTransition 1 fsfw/src/fsfw/power/PowerSwitcher.h POWER_SWITCHER
209 0x2f02 POS_SwitchStateMismatch 2 fsfw/src/fsfw/power/PowerSwitcher.h POWER_SWITCHER
210 0x501 PS_SwitchOn 1 fsfw/src/fsfw/power/PowerSwitchIF.h POWER_SWITCH_IF
211 0x500 PS_SwitchOff 0 fsfw/src/fsfw/power/PowerSwitchIF.h POWER_SWITCH_IF
212 0x502 PS_SwitchTimeout 2 fsfw/src/fsfw/power/PowerSwitchIF.h POWER_SWITCH_IF
213 0x503 PS_FuseOn 3 fsfw/src/fsfw/power/PowerSwitchIF.h POWER_SWITCH_IF
214 0x504 PS_FuseOff 4 fsfw/src/fsfw/power/PowerSwitchIF.h POWER_SWITCH_IF
215 0x3a00 SPH_ConnBroken 0 fsfw/src/fsfw/osal/common/TcpTmTcServer.h SEMAPHORE_IF
216 0x2901 IEC_NoConfigurationTable 0x01 fsfw/src/fsfw/osal/InternalErrorCodes.h INTERNAL_ERROR_CODES
217 0x2902 IEC_NoCpuTable 0x02 fsfw/src/fsfw/osal/InternalErrorCodes.h INTERNAL_ERROR_CODES
218 0x2903 IEC_InvalidWorkspaceAddress 0x03 fsfw/src/fsfw/osal/InternalErrorCodes.h INTERNAL_ERROR_CODES
219 0x2904 IEC_TooLittleWorkspace 0x04 fsfw/src/fsfw/osal/InternalErrorCodes.h INTERNAL_ERROR_CODES
220 0x2905 IEC_WorkspaceAllocation 0x05 fsfw/src/fsfw/osal/InternalErrorCodes.h INTERNAL_ERROR_CODES
221 0x2906 IEC_InterruptStackTooSmall 0x06 fsfw/src/fsfw/osal/InternalErrorCodes.h INTERNAL_ERROR_CODES
222 0x2907 IEC_ThreadExitted 0x07 fsfw/src/fsfw/osal/InternalErrorCodes.h INTERNAL_ERROR_CODES
223 0x2908 IEC_InconsistentMpInformation 0x08 fsfw/src/fsfw/osal/InternalErrorCodes.h INTERNAL_ERROR_CODES
224 0x2909 IEC_InvalidNode 0x09 fsfw/src/fsfw/osal/InternalErrorCodes.h INTERNAL_ERROR_CODES
225 0x290a IEC_NoMpci 0x0a fsfw/src/fsfw/osal/InternalErrorCodes.h INTERNAL_ERROR_CODES
226 0x290b IEC_BadPacket 0x0b fsfw/src/fsfw/osal/InternalErrorCodes.h INTERNAL_ERROR_CODES
227 0x290c IEC_OutOfPackets 0x0c fsfw/src/fsfw/osal/InternalErrorCodes.h INTERNAL_ERROR_CODES
228 0x290d IEC_OutOfGlobalObjects 0x0d fsfw/src/fsfw/osal/InternalErrorCodes.h INTERNAL_ERROR_CODES
229 0x290e IEC_OutOfProxies 0x0e fsfw/src/fsfw/osal/InternalErrorCodes.h INTERNAL_ERROR_CODES
230 0x290f IEC_InvalidGlobalId 0x0f fsfw/src/fsfw/osal/InternalErrorCodes.h INTERNAL_ERROR_CODES
231 0x2910 IEC_BadStackHook 0x10 fsfw/src/fsfw/osal/InternalErrorCodes.h INTERNAL_ERROR_CODES
232 0x2911 IEC_BadAttributes 0x11 fsfw/src/fsfw/osal/InternalErrorCodes.h INTERNAL_ERROR_CODES
233 0x2912 IEC_ImplementationKeyCreateInconsistency 0x12 fsfw/src/fsfw/osal/InternalErrorCodes.h INTERNAL_ERROR_CODES
234 0x2913 IEC_ImplementationBlockingOperationCancel 0x13 fsfw/src/fsfw/osal/InternalErrorCodes.h INTERNAL_ERROR_CODES
235 0x2914 IEC_MutexObtainFromBadState 0x14 fsfw/src/fsfw/osal/InternalErrorCodes.h INTERNAL_ERROR_CODES
236 0x2915 IEC_UnlimitedAndMaximumIs0 0x15 fsfw/src/fsfw/osal/InternalErrorCodes.h INTERNAL_ERROR_CODES
237 0x2500 FDI_YourFault 0 fsfw/src/fsfw/fdir/ConfirmsFailuresIF.h HANDLES_FAILURES_IF
238 0x2501 FDI_MyFault 1 fsfw/src/fsfw/fdir/ConfirmsFailuresIF.h HANDLES_FAILURES_IF
239 0x2502 FDI_ConfirmLater 2 fsfw/src/fsfw/fdir/ConfirmsFailuresIF.h HANDLES_FAILURES_IF
240 0x201 OM_InsertionFailed 1 fsfw/src/fsfw/objectmanager/ObjectManagerIF.h OBJECT_MANAGER_IF
241 0x202 OM_NotFound 2 fsfw/src/fsfw/objectmanager/ObjectManagerIF.h OBJECT_MANAGER_IF
242 0x203 OM_ChildInitFailed 3 fsfw/src/fsfw/objectmanager/ObjectManagerIF.h OBJECT_MANAGER_IF
243 0x204 OM_InternalErrReporterUninit 4 fsfw/src/fsfw/objectmanager/ObjectManagerIF.h OBJECT_MANAGER_IF
244 0x2101 TMF_Busy 1 fsfw/src/fsfw/tmstorage/TmStoreFrontendIF.h TM_STORE_FRONTEND_IF
245 0x2102 TMF_LastPacketFound 2 fsfw/src/fsfw/tmstorage/TmStoreFrontendIF.h TM_STORE_FRONTEND_IF
246 0x2103 TMF_StopFetch 3 fsfw/src/fsfw/tmstorage/TmStoreFrontendIF.h TM_STORE_FRONTEND_IF
247 0x2104 TMF_Timeout 4 fsfw/src/fsfw/tmstorage/TmStoreFrontendIF.h TM_STORE_FRONTEND_IF
248 0x2105 TMF_TmChannelFull 5 fsfw/src/fsfw/tmstorage/TmStoreFrontendIF.h TM_STORE_FRONTEND_IF
249 0x2106 TMF_NotStored 6 fsfw/src/fsfw/tmstorage/TmStoreFrontendIF.h TM_STORE_FRONTEND_IF
250 0x2107 TMF_AllDeleted 7 fsfw/src/fsfw/tmstorage/TmStoreFrontendIF.h TM_STORE_FRONTEND_IF
251 0x2108 TMF_InvalidData 8 fsfw/src/fsfw/tmstorage/TmStoreFrontendIF.h TM_STORE_FRONTEND_IF
252 0x2109 TMF_NotReady 9 fsfw/src/fsfw/tmstorage/TmStoreFrontendIF.h TM_STORE_FRONTEND_IF
253 0x2001 TMB_Busy 1 fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h TM_STORE_BACKEND_IF
254 0x2002 TMB_Full 2 fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h TM_STORE_BACKEND_IF
255 0x2003 TMB_Empty 3 fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h TM_STORE_BACKEND_IF
256 0x2004 TMB_NullRequested 4 fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h TM_STORE_BACKEND_IF
257 0x2005 TMB_TooLarge 5 fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h TM_STORE_BACKEND_IF
258 0x2006 TMB_NotReady 6 fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h TM_STORE_BACKEND_IF
259 0x2007 TMB_DumpError 7 fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h TM_STORE_BACKEND_IF
260 0x2008 TMB_CrcError 8 fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h TM_STORE_BACKEND_IF
261 0x2009 TMB_Timeout 9 fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h TM_STORE_BACKEND_IF
262 0x200a TMB_IdlePacketFound 10 fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h TM_STORE_BACKEND_IF
263 0x200b TMB_TelecommandFound 11 fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h TM_STORE_BACKEND_IF
264 0x200c TMB_NoPusATm 12 fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h TM_STORE_BACKEND_IF
265 0x200d TMB_TooSmall 13 fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h TM_STORE_BACKEND_IF
266 0x200e TMB_BlockNotFound 14 fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h TM_STORE_BACKEND_IF
267 0x200f TMB_InvalidRequest 15 fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h TM_STORE_BACKEND_IF
268 0x2c01 PAW_UnknownDatatype 0x01 fsfw/src/fsfw/parameters/ParameterWrapper.h PARAMETER_WRAPPER
269 0x2c02 PAW_DatatypeMissmatch 0x02 fsfw/src/fsfw/parameters/ParameterWrapper.h PARAMETER_WRAPPER
270 0x2c03 PAW_Readonly 0x03 fsfw/src/fsfw/parameters/ParameterWrapper.h PARAMETER_WRAPPER
271 0x2c04 PAW_TooBig 0x04 fsfw/src/fsfw/parameters/ParameterWrapper.h PARAMETER_WRAPPER
272 0x2c05 PAW_SourceNotSet 0x05 fsfw/src/fsfw/parameters/ParameterWrapper.h PARAMETER_WRAPPER
273 0x2c06 PAW_OutOfBounds 0x06 fsfw/src/fsfw/parameters/ParameterWrapper.h PARAMETER_WRAPPER
274 0x2c07 PAW_NotSet 0x07 fsfw/src/fsfw/parameters/ParameterWrapper.h PARAMETER_WRAPPER
275 0x2c08 PAW_ColumnOrRowsZero 0x08 fsfw/src/fsfw/parameters/ParameterWrapper.h PARAMETER_WRAPPER
276 0x2d01 HPA_InvalidIdentifierId 0x01 fsfw/src/fsfw/parameters/HasParametersIF.h HAS_PARAMETERS_IF
277 0x2d02 HPA_InvalidDomainId 0x02 fsfw/src/fsfw/parameters/HasParametersIF.h HAS_PARAMETERS_IF
278 0x2d03 HPA_InvalidValue 0x03 fsfw/src/fsfw/parameters/HasParametersIF.h HAS_PARAMETERS_IF
279 0x2d05 HPA_ReadOnly 0x05 fsfw/src/fsfw/parameters/HasParametersIF.h HAS_PARAMETERS_IF
280 0x3a01 SPH_SemaphoreTimeout 1 fsfw/src/fsfw/tasks/SemaphoreIF.h SEMAPHORE_IF
281 0x3a02 SPH_SemaphoreNotOwned 2 fsfw/src/fsfw/tasks/SemaphoreIF.h SEMAPHORE_IF
282 0x3a03 SPH_SemaphoreInvalid 3 fsfw/src/fsfw/tasks/SemaphoreIF.h SEMAPHORE_IF
283 0x1a01 TRC_NotEnoughSensors 1 fsfw/src/fsfw/monitoring/TriplexMonitor.h TRIPLE_REDUNDACY_CHECK
284 0x1a02 TRC_LowestValueOol 2 fsfw/src/fsfw/monitoring/TriplexMonitor.h TRIPLE_REDUNDACY_CHECK
285 0x1a03 TRC_HighestValueOol 3 fsfw/src/fsfw/monitoring/TriplexMonitor.h TRIPLE_REDUNDACY_CHECK
286 0x1a04 TRC_BothValuesOol 4 fsfw/src/fsfw/monitoring/TriplexMonitor.h TRIPLE_REDUNDACY_CHECK
287 0x1a05 TRC_DuplexOol 5 fsfw/src/fsfw/monitoring/TriplexMonitor.h TRIPLE_REDUNDACY_CHECK
288 0x3001 LIM_Unchecked 1 fsfw/src/fsfw/monitoring/MonitoringIF.h LIMITS_IF
289 0x3002 LIM_Invalid 2 fsfw/src/fsfw/monitoring/MonitoringIF.h LIMITS_IF
290 0x3003 LIM_Unselected 3 fsfw/src/fsfw/monitoring/MonitoringIF.h LIMITS_IF
291 0x3004 LIM_BelowLowLimit 4 fsfw/src/fsfw/monitoring/MonitoringIF.h LIMITS_IF
292 0x3005 LIM_AboveHighLimit 5 fsfw/src/fsfw/monitoring/MonitoringIF.h LIMITS_IF
293 0x3006 LIM_UnexpectedValue 6 fsfw/src/fsfw/monitoring/MonitoringIF.h LIMITS_IF
294 0x3007 LIM_OutOfRange 7 fsfw/src/fsfw/monitoring/MonitoringIF.h LIMITS_IF
295 0x30a0 LIM_FirstSample 0xA0 fsfw/src/fsfw/monitoring/MonitoringIF.h LIMITS_IF
296 0x30e0 LIM_InvalidSize 0xE0 fsfw/src/fsfw/monitoring/MonitoringIF.h LIMITS_IF
297 0x30e1 LIM_WrongType 0xE1 fsfw/src/fsfw/monitoring/MonitoringIF.h LIMITS_IF
298 0x30e2 LIM_WrongPid 0xE2 fsfw/src/fsfw/monitoring/MonitoringIF.h LIMITS_IF
299 0x30e3 LIM_WrongLimitId 0xE3 fsfw/src/fsfw/monitoring/MonitoringIF.h LIMITS_IF
300 0x30ee LIM_MonitorNotFound 0xEE fsfw/src/fsfw/monitoring/MonitoringIF.h LIMITS_IF
301 0x3501 CFDP_InvalidTlvType 1 fsfw/src/fsfw/cfdp/definitions.h CFDP
302 0x3502 CFDP_InvalidDirectiveFields 2 fsfw/src/fsfw/cfdp/definitions.h CFDP
303 0x3503 CFDP_InvalidPduDatafieldLen 3 fsfw/src/fsfw/cfdp/definitions.h CFDP
304 0x3504 CFDP_InvalidAckDirectiveFields 4 fsfw/src/fsfw/cfdp/definitions.h CFDP
305 0x3505 CFDP_MetadataCantParseOptions 5 fsfw/src/fsfw/cfdp/definitions.h CFDP
306 0x3506 CFDP_FinishedCantParseFsResponses 6 fsfw/src/fsfw/cfdp/definitions.h CFDP
307 0x3508 CFDP_FilestoreRequiresSecondFile 8 fsfw/src/fsfw/cfdp/definitions.h CFDP
308 0x3509 CFDP_FilestoreResponseCantParseFsMessage 9 fsfw/src/fsfw/cfdp/definitions.h CFDP
309 0x2b01 CCS_BcIsSetVrCommand 0x01 fsfw/src/fsfw/datalinklayer/CCSDSReturnValuesIF.h CCSDS_HANDLER_IF
310 0x2b02 CCS_BcIsUnlockCommand 0x02 fsfw/src/fsfw/datalinklayer/CCSDSReturnValuesIF.h CCSDS_HANDLER_IF
311 0x2bb0 CCS_BcIllegalCommand 0xB0 fsfw/src/fsfw/datalinklayer/CCSDSReturnValuesIF.h CCSDS_HANDLER_IF
335 0x2bd1 CCS_ShorterThanHeader 0xD1 fsfw/src/fsfw/datalinklayer/CCSDSReturnValuesIF.h CCSDS_HANDLER_IF
336 0x2bd2 CCS_TooShortBlockedPacket 0xD2 fsfw/src/fsfw/datalinklayer/CCSDSReturnValuesIF.h CCSDS_HANDLER_IF
337 0x2bd3 CCS_TooShortMapExtraction 0xD3 fsfw/src/fsfw/datalinklayer/CCSDSReturnValuesIF.h CCSDS_HANDLER_IF
338 0x37a1 0x4101 SGP4_InvalidEccentricity PUS11_InvalidTypeTimeWindow 0xA1 1 fsfw/src/fsfw/coordinates/Sgp4Propagator.h fsfw/src/fsfw/pus/Service11TelecommandScheduling.h SGP4PROPAGATOR_CLASS PUS_SERVICE_11
339 0x37a2 0x4102 SGP4_InvalidMeanMotion PUS11_TimeshiftingNotPossible 0xA2 2 fsfw/src/fsfw/coordinates/Sgp4Propagator.h fsfw/src/fsfw/pus/Service11TelecommandScheduling.h SGP4PROPAGATOR_CLASS PUS_SERVICE_11
340 0x37a3 0x4103 SGP4_InvalidPerturbationElements PUS11_InvalidRelativeTime 0xA3 3 fsfw/src/fsfw/coordinates/Sgp4Propagator.h fsfw/src/fsfw/pus/Service11TelecommandScheduling.h SGP4PROPAGATOR_CLASS PUS_SERVICE_11
341 0x37a4 0x3301 SGP4_InvalidSemiLatusRectum DC_NoReplyReceived 0xA4 0x01 fsfw/src/fsfw/coordinates/Sgp4Propagator.h fsfw/src/fsfw/devicehandlers/DeviceCommunicationIF.h SGP4PROPAGATOR_CLASS DEVICE_COMMUNICATION_IF
342 0x37a5 0x3302 SGP4_InvalidEpochElements DC_ProtocolError 0xA5 0x02 fsfw/src/fsfw/coordinates/Sgp4Propagator.h fsfw/src/fsfw/devicehandlers/DeviceCommunicationIF.h SGP4PROPAGATOR_CLASS DEVICE_COMMUNICATION_IF
343 0x37a6 0x3303 SGP4_SatelliteHasDecayed DC_Nullpointer 0xA6 0x03 fsfw/src/fsfw/coordinates/Sgp4Propagator.h fsfw/src/fsfw/devicehandlers/DeviceCommunicationIF.h SGP4PROPAGATOR_CLASS DEVICE_COMMUNICATION_IF
344 0x37b1 0x3304 SGP4_TleTooOld DC_InvalidCookieType 0xB1 0x04 fsfw/src/fsfw/coordinates/Sgp4Propagator.h fsfw/src/fsfw/devicehandlers/DeviceCommunicationIF.h SGP4PROPAGATOR_CLASS DEVICE_COMMUNICATION_IF
345 0x37b2 0x3305 SGP4_TleNotInitialized DC_NotActive 0xB2 0x05 fsfw/src/fsfw/coordinates/Sgp4Propagator.h fsfw/src/fsfw/devicehandlers/DeviceCommunicationIF.h SGP4PROPAGATOR_CLASS DEVICE_COMMUNICATION_IF
346 0x13e0 0x3306 MH_UnknownCmd DC_TooMuchData 0xE0 0x06 fsfw/src/fsfw/memory/MemoryHelper.h fsfw/src/fsfw/devicehandlers/DeviceCommunicationIF.h MEMORY_HELPER DEVICE_COMMUNICATION_IF
0x13e1 MH_InvalidAddress 0xE1 fsfw/src/fsfw/memory/MemoryHelper.h MEMORY_HELPER
0x13e2 MH_InvalidSize 0xE2 fsfw/src/fsfw/memory/MemoryHelper.h MEMORY_HELPER
0x13e3 MH_StateMismatch 0xE3 fsfw/src/fsfw/memory/MemoryHelper.h MEMORY_HELPER
0x4100 FILS_GenericFileError 0 fsfw/src/fsfw/memory/HasFileSystemIF.h FILE_SYSTEM
0x4101 FILS_IsBusy 1 fsfw/src/fsfw/memory/HasFileSystemIF.h FILE_SYSTEM
0x4102 FILS_InvalidParameters 2 fsfw/src/fsfw/memory/HasFileSystemIF.h FILE_SYSTEM
0x4105 FILS_FileDoesNotExist 5 fsfw/src/fsfw/memory/HasFileSystemIF.h FILE_SYSTEM
0x4106 FILS_FileAlreadyExists 6 fsfw/src/fsfw/memory/HasFileSystemIF.h FILE_SYSTEM
0x4107 FILS_FileLocked 7 fsfw/src/fsfw/memory/HasFileSystemIF.h FILE_SYSTEM
0x410a FILS_DirectoryDoesNotExist 10 fsfw/src/fsfw/memory/HasFileSystemIF.h FILE_SYSTEM
0x410b FILS_DirectoryAlreadyExists 11 fsfw/src/fsfw/memory/HasFileSystemIF.h FILE_SYSTEM
0x410c FILS_DirectoryNotEmpty 12 fsfw/src/fsfw/memory/HasFileSystemIF.h FILE_SYSTEM
0x410f FILS_SequencePacketMissingWrite 15 fsfw/src/fsfw/memory/HasFileSystemIF.h FILE_SYSTEM
0x4110 FILS_SequencePacketMissingRead 16 fsfw/src/fsfw/memory/HasFileSystemIF.h FILE_SYSTEM
0x601 PP_DoItMyself 1 fsfw/src/fsfw/memory/HasMemoryIF.h HAS_MEMORY_IF
0x602 PP_PointsToVariable 2 fsfw/src/fsfw/memory/HasMemoryIF.h HAS_MEMORY_IF
0x603 PP_PointsToMemory 3 fsfw/src/fsfw/memory/HasMemoryIF.h HAS_MEMORY_IF
0x604 PP_ActivityCompleted 4 fsfw/src/fsfw/memory/HasMemoryIF.h HAS_MEMORY_IF
0x605 PP_PointsToVectorUint8 5 fsfw/src/fsfw/memory/HasMemoryIF.h HAS_MEMORY_IF
0x606 PP_PointsToVectorUint16 6 fsfw/src/fsfw/memory/HasMemoryIF.h HAS_MEMORY_IF
0x607 PP_PointsToVectorUint32 7 fsfw/src/fsfw/memory/HasMemoryIF.h HAS_MEMORY_IF
0x608 PP_PointsToVectorFloat 8 fsfw/src/fsfw/memory/HasMemoryIF.h HAS_MEMORY_IF
0x6a0 PP_DumpNotSupported 0xA0 fsfw/src/fsfw/memory/HasMemoryIF.h HAS_MEMORY_IF
0x6e0 PP_InvalidSize 0xE0 fsfw/src/fsfw/memory/HasMemoryIF.h HAS_MEMORY_IF
0x6e1 PP_InvalidAddress 0xE1 fsfw/src/fsfw/memory/HasMemoryIF.h HAS_MEMORY_IF
0x6e2 PP_InvalidContent 0xE2 fsfw/src/fsfw/memory/HasMemoryIF.h HAS_MEMORY_IF
0x6e3 PP_UnalignedAccess 0xE3 fsfw/src/fsfw/memory/HasMemoryIF.h HAS_MEMORY_IF
0x6e4 PP_WriteProtected 0xE4 fsfw/src/fsfw/memory/HasMemoryIF.h HAS_MEMORY_IF
0x201 OM_InsertionFailed 1 fsfw/src/fsfw/objectmanager/ObjectManagerIF.h OBJECT_MANAGER_IF
0x202 OM_NotFound 2 fsfw/src/fsfw/objectmanager/ObjectManagerIF.h OBJECT_MANAGER_IF
0x203 OM_ChildInitFailed 3 fsfw/src/fsfw/objectmanager/ObjectManagerIF.h OBJECT_MANAGER_IF
0x204 OM_InternalErrReporterUninit 4 fsfw/src/fsfw/objectmanager/ObjectManagerIF.h OBJECT_MANAGER_IF
0x501 PS_SwitchOn 1 fsfw/src/fsfw/power/PowerSwitchIF.h POWER_SWITCH_IF
0x500 PS_SwitchOff 0 fsfw/src/fsfw/power/PowerSwitchIF.h POWER_SWITCH_IF
0x502 PS_SwitchTimeout 2 fsfw/src/fsfw/power/PowerSwitchIF.h POWER_SWITCH_IF
0x503 PS_FuseOn 3 fsfw/src/fsfw/power/PowerSwitchIF.h POWER_SWITCH_IF
0x504 PS_FuseOff 4 fsfw/src/fsfw/power/PowerSwitchIF.h POWER_SWITCH_IF
0x2f01 POS_InPowerTransition 1 fsfw/src/fsfw/power/PowerSwitcher.h POWER_SWITCHER
0x2f02 POS_SwitchStateMismatch 2 fsfw/src/fsfw/power/PowerSwitcher.h POWER_SWITCHER
0x1000 TIM_UnsupportedTimeFormat 0 fsfw/src/fsfw/timemanager/CCSDSTime.h CCSDS_TIME_HELPER_CLASS
0x1001 TIM_NotEnoughInformationForTargetFormat 1 fsfw/src/fsfw/timemanager/CCSDSTime.h CCSDS_TIME_HELPER_CLASS
0x1002 TIM_LengthMismatch 2 fsfw/src/fsfw/timemanager/CCSDSTime.h CCSDS_TIME_HELPER_CLASS
0x1003 TIM_InvalidTimeFormat 3 fsfw/src/fsfw/timemanager/CCSDSTime.h CCSDS_TIME_HELPER_CLASS
0x1004 TIM_InvalidDayOfYear 4 fsfw/src/fsfw/timemanager/CCSDSTime.h CCSDS_TIME_HELPER_CLASS
0x1005 TIM_TimeDoesNotFitFormat 5 fsfw/src/fsfw/timemanager/CCSDSTime.h CCSDS_TIME_HELPER_CLASS
0x3601 TSI_BadTimestamp 1 fsfw/src/fsfw/timemanager/TimeStamperIF.h TIME_STAMPER_IF
0x2101 TMF_Busy 1 fsfw/src/fsfw/tmstorage/TmStoreFrontendIF.h TM_STORE_FRONTEND_IF
0x2102 TMF_LastPacketFound 2 fsfw/src/fsfw/tmstorage/TmStoreFrontendIF.h TM_STORE_FRONTEND_IF
0x2103 TMF_StopFetch 3 fsfw/src/fsfw/tmstorage/TmStoreFrontendIF.h TM_STORE_FRONTEND_IF
0x2104 TMF_Timeout 4 fsfw/src/fsfw/tmstorage/TmStoreFrontendIF.h TM_STORE_FRONTEND_IF
0x2105 TMF_TmChannelFull 5 fsfw/src/fsfw/tmstorage/TmStoreFrontendIF.h TM_STORE_FRONTEND_IF
0x2106 TMF_NotStored 6 fsfw/src/fsfw/tmstorage/TmStoreFrontendIF.h TM_STORE_FRONTEND_IF
0x2107 TMF_AllDeleted 7 fsfw/src/fsfw/tmstorage/TmStoreFrontendIF.h TM_STORE_FRONTEND_IF
0x2108 TMF_InvalidData 8 fsfw/src/fsfw/tmstorage/TmStoreFrontendIF.h TM_STORE_FRONTEND_IF
0x2109 TMF_NotReady 9 fsfw/src/fsfw/tmstorage/TmStoreFrontendIF.h TM_STORE_FRONTEND_IF
0x2001 TMB_Busy 1 fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h TM_STORE_BACKEND_IF
0x2002 TMB_Full 2 fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h TM_STORE_BACKEND_IF
0x2003 TMB_Empty 3 fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h TM_STORE_BACKEND_IF
0x2004 TMB_NullRequested 4 fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h TM_STORE_BACKEND_IF
0x2005 TMB_TooLarge 5 fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h TM_STORE_BACKEND_IF
0x2006 TMB_NotReady 6 fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h TM_STORE_BACKEND_IF
0x2007 TMB_DumpError 7 fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h TM_STORE_BACKEND_IF
0x2008 TMB_CrcError 8 fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h TM_STORE_BACKEND_IF
0x2009 TMB_Timeout 9 fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h TM_STORE_BACKEND_IF
0x200a TMB_IdlePacketFound 10 fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h TM_STORE_BACKEND_IF
0x200b TMB_TelecommandFound 11 fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h TM_STORE_BACKEND_IF
0x200c TMB_NoPusATm 12 fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h TM_STORE_BACKEND_IF
0x200d TMB_TooSmall 13 fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h TM_STORE_BACKEND_IF
0x200e TMB_BlockNotFound 14 fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h TM_STORE_BACKEND_IF
0x200f TMB_InvalidRequest 15 fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h TM_STORE_BACKEND_IF
0xe01 HM_InvalidMode 0x01 fsfw/src/fsfw/modes/HasModesIF.h HAS_MODES_IF
0xe02 HM_TransNotAllowed 0x02 fsfw/src/fsfw/modes/HasModesIF.h HAS_MODES_IF
0xe03 HM_InTransition 0x03 fsfw/src/fsfw/modes/HasModesIF.h HAS_MODES_IF
0xe04 HM_InvalidSubmode 0x04 fsfw/src/fsfw/modes/HasModesIF.h HAS_MODES_IF
0x1501 FM_KeyAlreadyExists 0x01 fsfw/src/fsfw/container/FixedMap.h FIXED_MAP
0x1502 FM_MapFull 0x02 fsfw/src/fsfw/container/FixedMap.h FIXED_MAP
0x1503 FM_KeyDoesNotExist 0x03 fsfw/src/fsfw/container/FixedMap.h FIXED_MAP
0x1101 AL_Full 0x01 fsfw/src/fsfw/container/ArrayList.h ARRAY_LIST
0x1601 FMM_MapFull 0x01 fsfw/src/fsfw/container/FixedOrderedMultimap.h FIXED_MULTIMAP
0x1602 FMM_KeyDoesNotExist 0x02 fsfw/src/fsfw/container/FixedOrderedMultimap.h FIXED_MULTIMAP
0x1801 FF_Full 1 fsfw/src/fsfw/container/FIFOBase.h FIFO_CLASS
0x1802 FF_Empty 2 fsfw/src/fsfw/container/FIFOBase.h FIFO_CLASS
347 0x3a0 DHB_InvalidChannel 0xA0 fsfw/src/fsfw/devicehandlers/DeviceHandlerBase.h DEVICE_HANDLER_BASE
348 0x3b0 DHB_AperiodicReply 0xB0 fsfw/src/fsfw/devicehandlers/DeviceHandlerBase.h DEVICE_HANDLER_BASE
349 0x3b1 DHB_IgnoreReplyData 0xB1 fsfw/src/fsfw/devicehandlers/DeviceHandlerBase.h DEVICE_HANDLER_BASE
380 0x26c3 DHI_DeviceReplyInvalid 0xC3 fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h DEVICE_HANDLER_IF
381 0x26d0 DHI_InvalidCommandParameter 0xD0 fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h DEVICE_HANDLER_IF
382 0x26d1 DHI_InvalidNumberOrLengthOfParameters 0xD1 fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h DEVICE_HANDLER_IF
383 0x3301 0x2301 DC_NoReplyReceived MT_TooDetailedRequest 0x01 1 fsfw/src/fsfw/devicehandlers/DeviceCommunicationIF.h fsfw/src/fsfw/globalfunctions/matching/MatchTree.h DEVICE_COMMUNICATION_IF MATCH_TREE_CLASS
384 0x3302 0x2302 DC_ProtocolError MT_TooGeneralRequest 0x02 2 fsfw/src/fsfw/devicehandlers/DeviceCommunicationIF.h fsfw/src/fsfw/globalfunctions/matching/MatchTree.h DEVICE_COMMUNICATION_IF MATCH_TREE_CLASS
385 0x3303 0x2303 DC_Nullpointer MT_NoMatch 0x03 3 fsfw/src/fsfw/devicehandlers/DeviceCommunicationIF.h fsfw/src/fsfw/globalfunctions/matching/MatchTree.h DEVICE_COMMUNICATION_IF MATCH_TREE_CLASS
386 0x3304 0x2304 DC_InvalidCookieType MT_Full 0x04 4 fsfw/src/fsfw/devicehandlers/DeviceCommunicationIF.h fsfw/src/fsfw/globalfunctions/matching/MatchTree.h DEVICE_COMMUNICATION_IF MATCH_TREE_CLASS
387 0x3305 0x2305 DC_NotActive MT_NewNodeCreated 0x05 5 fsfw/src/fsfw/devicehandlers/DeviceCommunicationIF.h fsfw/src/fsfw/globalfunctions/matching/MatchTree.h DEVICE_COMMUNICATION_IF MATCH_TREE_CLASS
388 0x3306 0x3e01 DC_TooMuchData DLEE_StreamTooShort 0x06 0x01 fsfw/src/fsfw/devicehandlers/DeviceCommunicationIF.h fsfw/src/fsfw/globalfunctions/DleEncoder.h DEVICE_COMMUNICATION_IF DLE_ENCODER
389 0x2401 0x3e02 EV_ListenerNotFound DLEE_DecodingError 1 0x02 fsfw/src/fsfw/events/EventManagerIF.h fsfw/src/fsfw/globalfunctions/DleEncoder.h EVENT_MANAGER_IF DLE_ENCODER
390 0x1a01 0x2e01 TRC_NotEnoughSensors ASC_TooLongForTargetType 1 fsfw/src/fsfw/monitoring/TriplexMonitor.h fsfw/src/fsfw/globalfunctions/AsciiConverter.h TRIPLE_REDUNDACY_CHECK ASCII_CONVERTER
391 0x1a02 0x2e02 TRC_LowestValueOol ASC_InvalidCharacters 2 fsfw/src/fsfw/monitoring/TriplexMonitor.h fsfw/src/fsfw/globalfunctions/AsciiConverter.h TRIPLE_REDUNDACY_CHECK ASCII_CONVERTER
392 0x1a03 0x2e03 TRC_HighestValueOol ASC_BufferTooSmall 3 0x3 fsfw/src/fsfw/monitoring/TriplexMonitor.h fsfw/src/fsfw/globalfunctions/AsciiConverter.h TRIPLE_REDUNDACY_CHECK ASCII_CONVERTER
393 0x1a04 0x1701 TRC_BothValuesOol HHI_ObjectNotHealthy 4 1 fsfw/src/fsfw/monitoring/TriplexMonitor.h fsfw/src/fsfw/health/HasHealthIF.h TRIPLE_REDUNDACY_CHECK HAS_HEALTH_IF
394 0x1a05 0x1702 TRC_DuplexOol HHI_InvalidHealthState 5 2 fsfw/src/fsfw/monitoring/TriplexMonitor.h fsfw/src/fsfw/health/HasHealthIF.h TRIPLE_REDUNDACY_CHECK HAS_HEALTH_IF
395 0x3001 0x1703 LIM_Unchecked HHI_IsExternallyControlled 1 3 fsfw/src/fsfw/monitoring/MonitoringIF.h fsfw/src/fsfw/health/HasHealthIF.h LIMITS_IF HAS_HEALTH_IF
396 0x3002 0x3101 LIM_Invalid CF_ObjectHasNoFunctions 2 1 fsfw/src/fsfw/monitoring/MonitoringIF.h fsfw/src/fsfw/action/CommandsActionsIF.h LIMITS_IF COMMANDS_ACTIONS_IF
397 0x3003 0x3102 LIM_Unselected CF_AlreadyCommanding 3 2 fsfw/src/fsfw/monitoring/MonitoringIF.h fsfw/src/fsfw/action/CommandsActionsIF.h LIMITS_IF COMMANDS_ACTIONS_IF
398 0x3004 0x3201 LIM_BelowLowLimit HF_IsBusy 4 1 fsfw/src/fsfw/monitoring/MonitoringIF.h fsfw/src/fsfw/action/HasActionsIF.h LIMITS_IF HAS_ACTIONS_IF
399 0x3005 0x3202 LIM_AboveHighLimit HF_InvalidParameters 5 2 fsfw/src/fsfw/monitoring/MonitoringIF.h fsfw/src/fsfw/action/HasActionsIF.h LIMITS_IF HAS_ACTIONS_IF
400 0x3006 0x3203 LIM_UnexpectedValue HF_ExecutionFinished 6 3 fsfw/src/fsfw/monitoring/MonitoringIF.h fsfw/src/fsfw/action/HasActionsIF.h LIMITS_IF HAS_ACTIONS_IF
401 0x3007 0x3204 LIM_OutOfRange HF_InvalidActionId 7 4 fsfw/src/fsfw/monitoring/MonitoringIF.h fsfw/src/fsfw/action/HasActionsIF.h LIMITS_IF HAS_ACTIONS_IF
402 0x30a0 0x3601 LIM_FirstSample TSI_BadTimestamp 0xA0 1 fsfw/src/fsfw/monitoring/MonitoringIF.h fsfw/src/fsfw/timemanager/TimeStamperIF.h LIMITS_IF TIME_STAMPER_IF
403 0x30e0 0x1000 LIM_InvalidSize TIM_UnsupportedTimeFormat 0xE0 0 fsfw/src/fsfw/monitoring/MonitoringIF.h fsfw/src/fsfw/timemanager/CCSDSTime.h LIMITS_IF CCSDS_TIME_HELPER_CLASS
404 0x30e1 0x1001 LIM_WrongType TIM_NotEnoughInformationForTargetFormat 0xE1 1 fsfw/src/fsfw/monitoring/MonitoringIF.h fsfw/src/fsfw/timemanager/CCSDSTime.h LIMITS_IF CCSDS_TIME_HELPER_CLASS
405 0x30e2 0x1002 LIM_WrongPid TIM_LengthMismatch 0xE2 2 fsfw/src/fsfw/monitoring/MonitoringIF.h fsfw/src/fsfw/timemanager/CCSDSTime.h LIMITS_IF CCSDS_TIME_HELPER_CLASS
406 0x30e3 0x1003 LIM_WrongLimitId TIM_InvalidTimeFormat 0xE3 3 fsfw/src/fsfw/monitoring/MonitoringIF.h fsfw/src/fsfw/timemanager/CCSDSTime.h LIMITS_IF CCSDS_TIME_HELPER_CLASS
407 0x30ee 0x1004 LIM_MonitorNotFound TIM_InvalidDayOfYear 0xEE 4 fsfw/src/fsfw/monitoring/MonitoringIF.h fsfw/src/fsfw/timemanager/CCSDSTime.h LIMITS_IF CCSDS_TIME_HELPER_CLASS
408 0x3a01 0x1005 SPH_SemaphoreTimeout TIM_TimeDoesNotFitFormat 1 5 fsfw/src/fsfw/tasks/SemaphoreIF.h fsfw/src/fsfw/timemanager/CCSDSTime.h SEMAPHORE_IF CCSDS_TIME_HELPER_CLASS
409 0x3a02 0x3b00 SPH_SemaphoreNotOwned LPIF_PoolEntryNotFound 2 0x00 fsfw/src/fsfw/tasks/SemaphoreIF.h fsfw/src/fsfw/datapoollocal/localPoolDefinitions.h SEMAPHORE_IF LOCAL_POOL_OWNER_IF
410 0x3a03 0x3b01 SPH_SemaphoreInvalid LPIF_PoolEntryTypeConflict 3 0x01 fsfw/src/fsfw/tasks/SemaphoreIF.h fsfw/src/fsfw/datapoollocal/localPoolDefinitions.h SEMAPHORE_IF LOCAL_POOL_OWNER_IF
411 0x7200 0x3d00 SDMA_OpOngoing HKM_QueueOrDestinationInvalid 0 bsp_q7s/memory/SdCardManager.h fsfw/src/fsfw/datapoollocal/LocalDataPoolManager.h SD_CARD_MANAGER HOUSEKEEPING_MANAGER
412 0x7201 0x3d01 SDMA_AlreadyOn HKM_WrongHkPacketType 1 bsp_q7s/memory/SdCardManager.h fsfw/src/fsfw/datapoollocal/LocalDataPoolManager.h SD_CARD_MANAGER HOUSEKEEPING_MANAGER
413 0x7202 0x3d02 SDMA_AlreadyMounted HKM_ReportingStatusUnchanged 2 bsp_q7s/memory/SdCardManager.h fsfw/src/fsfw/datapoollocal/LocalDataPoolManager.h SD_CARD_MANAGER HOUSEKEEPING_MANAGER
414 0x7203 0x3d03 SDMA_AlreadyOff HKM_PeriodicHelperInvalid 3 bsp_q7s/memory/SdCardManager.h fsfw/src/fsfw/datapoollocal/LocalDataPoolManager.h SD_CARD_MANAGER HOUSEKEEPING_MANAGER
415 0x720a 0x3d04 SDMA_StatusFileNexists HKM_PoolobjectNotFound 10 4 bsp_q7s/memory/SdCardManager.h fsfw/src/fsfw/datapoollocal/LocalDataPoolManager.h SD_CARD_MANAGER HOUSEKEEPING_MANAGER
416 0x720b 0x3d05 SDMA_StatusFileFormatInvalid HKM_DatasetNotFound 11 5 bsp_q7s/memory/SdCardManager.h fsfw/src/fsfw/datapoollocal/LocalDataPoolManager.h SD_CARD_MANAGER HOUSEKEEPING_MANAGER
417 0x720c 0x2801 SDMA_MountError TC_InvalidTargetState 12 1 bsp_q7s/memory/SdCardManager.h fsfw/src/fsfw/thermal/ThermalComponentIF.h SD_CARD_MANAGER THERMAL_COMPONENT_IF
418 0x720d 0x28f1 SDMA_UnmountError TC_AboveOperationalLimit 13 0xF1 bsp_q7s/memory/SdCardManager.h fsfw/src/fsfw/thermal/ThermalComponentIF.h SD_CARD_MANAGER THERMAL_COMPONENT_IF
419 0x720e 0x28f2 SDMA_SystemCallError TC_BelowOperationalLimit 14 0xF2 bsp_q7s/memory/SdCardManager.h fsfw/src/fsfw/thermal/ThermalComponentIF.h SD_CARD_MANAGER THERMAL_COMPONENT_IF
420 0x720f 0x1f01 SDMA_PopenCallError CSB_ExecutionComplete 15 1 bsp_q7s/memory/SdCardManager.h fsfw/src/fsfw/tmtcservices/CommandingServiceBase.h SD_CARD_MANAGER COMMAND_SERVICE_BASE
421 0x7300 0x1f02 SCBU_KeyNotFound CSB_NoStepMessage 0 2 bsp_q7s/memory/scratchApi.h fsfw/src/fsfw/tmtcservices/CommandingServiceBase.h SCRATCH_BUFFER COMMAND_SERVICE_BASE
422 0x67a0 0x1f03 FSHLP_SdNotMounted CSB_ObjectBusy SD card specified with path string not mounted 0xA0 3 bsp_q7s/memory/FilesystemHelper.h fsfw/src/fsfw/tmtcservices/CommandingServiceBase.h FILE_SYSTEM_HELPER COMMAND_SERVICE_BASE
423 0x67a1 0x1f04 FSHLP_FileNotExists CSB_Busy Specified file does not exist on filesystem 0xA1 4 bsp_q7s/memory/FilesystemHelper.h fsfw/src/fsfw/tmtcservices/CommandingServiceBase.h FILE_SYSTEM_HELPER COMMAND_SERVICE_BASE
424 0x6aa0 0x1f05 MPSOCRTVIF_CrcFailure CSB_InvalidTc Space Packet received from PLOC has invalid CRC 0xA0 5 linux/devices/devicedefinitions/MPSoCReturnValuesIF.h fsfw/src/fsfw/tmtcservices/CommandingServiceBase.h MPSOC_RETURN_VALUES_IF COMMAND_SERVICE_BASE
425 0x6aa1 0x1f06 MPSOCRTVIF_ReceivedAckFailure CSB_InvalidObject Received ACK failure reply from PLOC 0xA1 6 linux/devices/devicedefinitions/MPSoCReturnValuesIF.h fsfw/src/fsfw/tmtcservices/CommandingServiceBase.h MPSOC_RETURN_VALUES_IF COMMAND_SERVICE_BASE
426 0x6aa2 0x1f07 MPSOCRTVIF_ReceivedExeFailure CSB_InvalidReply Received execution failure reply from PLOC 0xA2 7 linux/devices/devicedefinitions/MPSoCReturnValuesIF.h fsfw/src/fsfw/tmtcservices/CommandingServiceBase.h MPSOC_RETURN_VALUES_IF COMMAND_SERVICE_BASE
427 0x6aa3 0x4b00 MPSOCRTVIF_InvalidApid SPPA_NoPacketFound Received space packet with invalid APID from PLOC 0xA3 0x00 linux/devices/devicedefinitions/MPSoCReturnValuesIF.h fsfw/src/fsfw/tmtcservices/SpacePacketParser.h MPSOC_RETURN_VALUES_IF SPACE_PACKET_PARSER
428 0x6aa4 0x4b01 MPSOCRTVIF_InvalidLength SPPA_SplitPacket Received command with invalid length 0xA4 0x01 linux/devices/devicedefinitions/MPSoCReturnValuesIF.h fsfw/src/fsfw/tmtcservices/SpacePacketParser.h MPSOC_RETURN_VALUES_IF SPACE_PACKET_PARSER
429 0x6aa5 0x1d01 MPSOCRTVIF_FilenameTooLong PUS_ActivityStarted Filename of file in OBC filesystem is too long 0xA5 1 linux/devices/devicedefinitions/MPSoCReturnValuesIF.h fsfw/src/fsfw/tmtcservices/AcceptsTelecommandsIF.h MPSOC_RETURN_VALUES_IF ACCEPTS_TELECOMMANDS_IF
430 0x6aa6 0x1d02 MPSOCRTVIF_MpsocHelperExecuting PUS_InvalidSubservice MPSoC helper is currently executing a command 0xA6 2 linux/devices/devicedefinitions/MPSoCReturnValuesIF.h fsfw/src/fsfw/tmtcservices/AcceptsTelecommandsIF.h MPSOC_RETURN_VALUES_IF ACCEPTS_TELECOMMANDS_IF
431 0x6aa7 0x1d03 MPSOCRTVIF_MpsocFilenameTooLong PUS_IllegalApplicationData Filename of MPSoC file is to long (max. 256 bytes) 0xA7 3 linux/devices/devicedefinitions/MPSoCReturnValuesIF.h fsfw/src/fsfw/tmtcservices/AcceptsTelecommandsIF.h MPSOC_RETURN_VALUES_IF ACCEPTS_TELECOMMANDS_IF
432 0x6aa8 0x1d04 MPSOCRTVIF_InvalidParameter PUS_SendTmFailed Command has invalid parameter 0xA8 4 linux/devices/devicedefinitions/MPSoCReturnValuesIF.h fsfw/src/fsfw/tmtcservices/AcceptsTelecommandsIF.h MPSOC_RETURN_VALUES_IF ACCEPTS_TELECOMMANDS_IF
433 0x6aa9 0x1d05 MPSOCRTVIF_NameTooLong PUS_Timeout Received command has file string with invalid length 0xA9 5 linux/devices/devicedefinitions/MPSoCReturnValuesIF.h fsfw/src/fsfw/tmtcservices/AcceptsTelecommandsIF.h MPSOC_RETURN_VALUES_IF ACCEPTS_TELECOMMANDS_IF
434 0x6ba0 0x4400 SPVRTVIF_CrcFailure HSPI_OpeningFileFailed Space Packet received from PLOC supervisor has invalid CRC 0xA0 0 linux/devices/devicedefinitions/SupvReturnValuesIF.h fsfw/hal/src/fsfw_hal/linux/spi/SpiComIF.h SUPV_RETURN_VALUES_IF HAL_SPI
435 0x6ba1 0x4401 SPVRTVIF_ReceivedAckFailure HSPI_FullDuplexTransferFailed Received ACK failure reply from PLOC supervisor 0xA1 1 linux/devices/devicedefinitions/SupvReturnValuesIF.h fsfw/hal/src/fsfw_hal/linux/spi/SpiComIF.h SUPV_RETURN_VALUES_IF HAL_SPI
436 0x6ba2 0x4402 SPVRTVIF_ReceivedExeFailure HSPI_HalfDuplexTransferFailed Received execution failure reply from PLOC supervisor 0xA2 2 linux/devices/devicedefinitions/SupvReturnValuesIF.h fsfw/hal/src/fsfw_hal/linux/spi/SpiComIF.h SUPV_RETURN_VALUES_IF HAL_SPI
437 0x6ba3 0x4701 SPVRTVIF_InvalidApid HGIO_UnknownGpioId Received space packet with invalid APID from PLOC supervisor 0xA3 1 linux/devices/devicedefinitions/SupvReturnValuesIF.h fsfw/hal/src/fsfw_hal/linux/gpio/LinuxLibgpioIF.h SUPV_RETURN_VALUES_IF HAL_GPIO
438 0x6ba4 0x4702 SPVRTVIF_GetTimeFailure HGIO_DriveGpioFailure Failed to read current system time 0xA4 2 linux/devices/devicedefinitions/SupvReturnValuesIF.h fsfw/hal/src/fsfw_hal/linux/gpio/LinuxLibgpioIF.h SUPV_RETURN_VALUES_IF HAL_GPIO
439 0x6ba5 0x4703 SPVRTVIF_InvalidWatchdog HGIO_GpioTypeFailure Received command with invalid watchdog parameter. Valid watchdogs are 0 for PS, 1 for PL and 2 for INT 0xA5 3 linux/devices/devicedefinitions/SupvReturnValuesIF.h fsfw/hal/src/fsfw_hal/linux/gpio/LinuxLibgpioIF.h SUPV_RETURN_VALUES_IF HAL_GPIO
440 0x6ba6 0x4704 SPVRTVIF_InvalidWatchdogTimeout HGIO_GpioInvalidInstance Received watchdog timeout config command with invalid timeout. Valid timeouts must be in the range between 1000 and 360000 ms. 0xA6 4 linux/devices/devicedefinitions/SupvReturnValuesIF.h fsfw/hal/src/fsfw_hal/linux/gpio/LinuxLibgpioIF.h SUPV_RETURN_VALUES_IF HAL_GPIO
441 0x6ba7 0x4705 SPVRTVIF_InvalidLatchupId HGIO_GpioDuplicateDetected Received latchup config command with invalid latchup ID 0xA7 5 linux/devices/devicedefinitions/SupvReturnValuesIF.h fsfw/hal/src/fsfw_hal/linux/gpio/LinuxLibgpioIF.h SUPV_RETURN_VALUES_IF HAL_GPIO
442 0x6ba8 0x4706 SPVRTVIF_SweepPeriodTooSmall HGIO_GpioInitFailed Received set adc sweep period command with invalid sweep period. Must be larger than 21. 0xA8 6 linux/devices/devicedefinitions/SupvReturnValuesIF.h fsfw/hal/src/fsfw_hal/linux/gpio/LinuxLibgpioIF.h SUPV_RETURN_VALUES_IF HAL_GPIO
443 0x6ba9 0x4707 SPVRTVIF_InvalidTestParam HGIO_GpioGetValueFailed Receive auto EM test command with invalid test param. Valid params are 1 and 2. 0xA9 7 linux/devices/devicedefinitions/SupvReturnValuesIF.h fsfw/hal/src/fsfw_hal/linux/gpio/LinuxLibgpioIF.h SUPV_RETURN_VALUES_IF HAL_GPIO
444 0x6baa 0x4501 SPVRTVIF_MramPacketParsingFailure HURT_UartReadFailure Returned when scanning for MRAM dump packets failed. 0xAA 1 linux/devices/devicedefinitions/SupvReturnValuesIF.h fsfw/hal/src/fsfw_hal/linux/uart/UartComIF.h SUPV_RETURN_VALUES_IF HAL_UART
445 0x6bab 0x4502 SPVRTVIF_InvalidMramAddresses HURT_UartReadSizeMissmatch Returned when the start and stop addresses of the MRAM dump or MRAM wipe commands are invalid (e.g. start address bigger than stop address) 0xAB 2 linux/devices/devicedefinitions/SupvReturnValuesIF.h fsfw/hal/src/fsfw_hal/linux/uart/UartComIF.h SUPV_RETURN_VALUES_IF HAL_UART
446 0x6bac 0x4503 SPVRTVIF_NoMramPacket HURT_UartRxBufferTooSmall Expect reception of an MRAM dump packet but received space packet with other apid. 0xAC 3 linux/devices/devicedefinitions/SupvReturnValuesIF.h fsfw/hal/src/fsfw_hal/linux/uart/UartComIF.h SUPV_RETURN_VALUES_IF HAL_UART
447 0x6bad 0x4300 SPVRTVIF_PathDoesNotExist UXOS_ExecutionFinished Path to PLOC directory on SD card does not exist Execution of the current command has finished 0xAD 0 linux/devices/devicedefinitions/SupvReturnValuesIF.h fsfw/hal/src/fsfw_hal/linux/CommandExecutor.h SUPV_RETURN_VALUES_IF LINUX_OSAL
448 0x6bae 0x4301 SPVRTVIF_MramFileNotExists UXOS_CommandPending MRAM dump file does not exists. The file should actually already have been created with the reception of the first dump packet. Command is pending. This will also be returned if the user tries to load another command but a command is still pending 0xAE 1 linux/devices/devicedefinitions/SupvReturnValuesIF.h fsfw/hal/src/fsfw_hal/linux/CommandExecutor.h SUPV_RETURN_VALUES_IF LINUX_OSAL
449 0x6baf 0x4302 SPVRTVIF_InvalidLength UXOS_BytesRead Received action command has invalid length Some bytes have been read from the executing process 0xAF 2 linux/devices/devicedefinitions/SupvReturnValuesIF.h fsfw/hal/src/fsfw_hal/linux/CommandExecutor.h SUPV_RETURN_VALUES_IF LINUX_OSAL
450 0x6bb0 0x4303 SPVRTVIF_FilenameTooLong UXOS_CommandError Filename too long Command execution failed 0xB0 3 linux/devices/devicedefinitions/SupvReturnValuesIF.h fsfw/hal/src/fsfw_hal/linux/CommandExecutor.h SUPV_RETURN_VALUES_IF LINUX_OSAL
451 0x6bb1 0x4304 SPVRTVIF_UpdateStatusReportInvalidLength UXOS_NoCommandLoadedOrPending Received update status report with invalid packet length field 0xB1 4 linux/devices/devicedefinitions/SupvReturnValuesIF.h fsfw/hal/src/fsfw_hal/linux/CommandExecutor.h SUPV_RETURN_VALUES_IF LINUX_OSAL
452 0x6bb2 0x4306 SPVRTVIF_UpdateCrcFailure UXOS_PcloseCallError Update status report does not contain expected CRC. There might be a bit flip in the update memory region. 0xB2 6 linux/devices/devicedefinitions/SupvReturnValuesIF.h fsfw/hal/src/fsfw_hal/linux/CommandExecutor.h SUPV_RETURN_VALUES_IF LINUX_OSAL
453 0x6bb3 0x7400 SPVRTVIF_SupvHelperExecuting SCBU_KeyNotFound Supervisor helper task ist currently executing a command (wait until helper tas has finished or interrupt by sending the terminate command) 0xB3 0 linux/devices/devicedefinitions/SupvReturnValuesIF.h bsp_q7s/memory/scratchApi.h SUPV_RETURN_VALUES_IF SCRATCH_BUFFER
454 0x57e0 0x68a0 DWLPWRON_InvalidMode FSHLP_SdNotMounted Received command has invalid JESD mode (valid modes are 0 - 5) SD card specified with path string not mounted 0xE0 0xA0 linux/devices/devicedefinitions/PlocMPSoCDefinitions.h bsp_q7s/memory/FilesystemHelper.h DWLPWRON_CMD FILE_SYSTEM_HELPER
455 0x57e1 0x68a1 DWLPWRON_InvalidLaneRate FSHLP_FileNotExists Received command has invalid lane rate (valid lane rate are 0 - 9) Specified file does not exist on filesystem 0xE1 0xA1 linux/devices/devicedefinitions/PlocMPSoCDefinitions.h bsp_q7s/memory/FilesystemHelper.h DWLPWRON_CMD FILE_SYSTEM_HELPER
456 0x61a0 0x7300 PLMEMDUMP_MramAddressTooHigh SDMA_OpOngoing The capacity of the MRAM amounts to 512 kB. Thus the maximum address must not be higher than 0x7d000. 0xA0 0 linux/devices/ploc/PlocMemoryDumper.h bsp_q7s/memory/SdCardManager.h PLOC_MEMORY_DUMPER SD_CARD_MANAGER
457 0x61a1 0x7301 PLMEMDUMP_MramInvalidAddressCombination SDMA_AlreadyOn The specified end address is lower than the start address 0xA1 1 linux/devices/ploc/PlocMemoryDumper.h bsp_q7s/memory/SdCardManager.h PLOC_MEMORY_DUMPER SD_CARD_MANAGER
458 0x68a0 0x7302 PLMPHLP_FileClosedAccidentally SDMA_AlreadyMounted File accidentally close 0xA0 2 linux/devices/ploc/PlocMPSoCHelper.h bsp_q7s/memory/SdCardManager.h PLOC_MPSOC_HELPER SD_CARD_MANAGER
459 0x5aa0 0x7303 PLSPVhLP_FileClosedAccidentally SDMA_AlreadyOff File accidentally close 0xA0 3 linux/devices/ploc/PlocSupvHelper.h bsp_q7s/memory/SdCardManager.h PLOC_SUPV_HELPER SD_CARD_MANAGER
460 0x5aa1 0x730a PLSPVhLP_ProcessTerminated SDMA_StatusFileNexists Process has been terminated by command 0xA1 10 linux/devices/ploc/PlocSupvHelper.h bsp_q7s/memory/SdCardManager.h PLOC_SUPV_HELPER SD_CARD_MANAGER
461 0x5aa2 0x730b PLSPVhLP_PathNotExists SDMA_StatusFileFormatInvalid Received command with invalid pathname 0xA2 11 linux/devices/ploc/PlocSupvHelper.h bsp_q7s/memory/SdCardManager.h PLOC_SUPV_HELPER SD_CARD_MANAGER
462 0x5aa3 0x730c PLSPVhLP_EventBufferReplyInvalidApid SDMA_MountError Expected event buffer TM but received space packet with other APID 0xA3 12 linux/devices/ploc/PlocSupvHelper.h bsp_q7s/memory/SdCardManager.h PLOC_SUPV_HELPER SD_CARD_MANAGER
463 0x6501 0x730d JSONBASE_JsonFileNotExists SDMA_UnmountError Specified json file does not exist 1 13 linux/devices/startracker/ArcsecJsonParamBase.h bsp_q7s/memory/SdCardManager.h ARCSEC_JSON_BASE SD_CARD_MANAGER
464 0x6502 0x730e JSONBASE_SetNotExists SDMA_SystemCallError Requested set does not exist in json file 2 14 linux/devices/startracker/ArcsecJsonParamBase.h bsp_q7s/memory/SdCardManager.h ARCSEC_JSON_BASE SD_CARD_MANAGER
465 0x6503 0x730f JSONBASE_ParamNotExists SDMA_PopenCallError Requested parameter does not exist in json file 3 15 linux/devices/startracker/ArcsecJsonParamBase.h bsp_q7s/memory/SdCardManager.h ARCSEC_JSON_BASE SD_CARD_MANAGER
466 0x56a0 0x69a0 STRH_TemperatureReqFailed PLMPHLP_FileClosedAccidentally Status in temperature reply signals error File accidentally close 0xA0 linux/devices/startracker/StarTrackerHandler.h linux/devices/ploc/PlocMPSoCHelper.h STR_HANDLER PLOC_MPSOC_HELPER
467 0x56a1 0x62a0 STRH_PingFailed PLMEMDUMP_MramAddressTooHigh Ping command failed The capacity of the MRAM amounts to 512 kB. Thus the maximum address must not be higher than 0x7d000. 0xA1 0xA0 linux/devices/startracker/StarTrackerHandler.h linux/devices/ploc/PlocMemoryDumper.h STR_HANDLER PLOC_MEMORY_DUMPER
468 0x56a2 0x62a1 STRH_VersionReqFailed PLMEMDUMP_MramInvalidAddressCombination Status in version reply signals error The specified end address is lower than the start address 0xA2 0xA1 linux/devices/startracker/StarTrackerHandler.h linux/devices/ploc/PlocMemoryDumper.h STR_HANDLER PLOC_MEMORY_DUMPER
469 0x56a3 0x5ba0 STRH_InterfaceReqFailed PLSPVhLP_FileClosedAccidentally Status in interface reply signals error File accidentally close 0xA3 0xA0 linux/devices/startracker/StarTrackerHandler.h linux/devices/ploc/PlocSupvHelper.h STR_HANDLER PLOC_SUPV_HELPER
470 0x56a4 0x5ba1 STRH_PowerReqFailed PLSPVhLP_ProcessTerminated Status in power reply signals error Process has been terminated by command 0xA4 0xA1 linux/devices/startracker/StarTrackerHandler.h linux/devices/ploc/PlocSupvHelper.h STR_HANDLER PLOC_SUPV_HELPER
471 0x56a5 0x5ba2 STRH_SetParamFailed PLSPVhLP_PathNotExists Status of reply to parameter set command signals error Received command with invalid pathname 0xA5 0xA2 linux/devices/startracker/StarTrackerHandler.h linux/devices/ploc/PlocSupvHelper.h STR_HANDLER PLOC_SUPV_HELPER
472 0x56a6 0x5ba3 STRH_ActionFailed PLSPVhLP_EventBufferReplyInvalidApid Status of reply to action command signals error Expected event buffer TM but received space packet with other APID 0xA6 0xA3 linux/devices/startracker/StarTrackerHandler.h linux/devices/ploc/PlocSupvHelper.h STR_HANDLER PLOC_SUPV_HELPER
473 0x56a7 0x6ba0 STRH_FilePathTooLong MPSOCRTVIF_CrcFailure Received invalid path string. Exceeds allowed length Space Packet received from PLOC has invalid CRC 0xA7 0xA0 linux/devices/startracker/StarTrackerHandler.h linux/devices/devicedefinitions/MPSoCReturnValuesIF.h STR_HANDLER MPSOC_RETURN_VALUES_IF
474 0x56a8 0x6ba1 STRH_FilenameTooLong MPSOCRTVIF_ReceivedAckFailure Name of file received with command is too long Received ACK failure reply from PLOC 0xA8 0xA1 linux/devices/startracker/StarTrackerHandler.h linux/devices/devicedefinitions/MPSoCReturnValuesIF.h STR_HANDLER MPSOC_RETURN_VALUES_IF
475 0x56a9 0x6ba2 STRH_InvalidProgram MPSOCRTVIF_ReceivedExeFailure Received version reply with invalid program ID Received execution failure reply from PLOC 0xA9 0xA2 linux/devices/startracker/StarTrackerHandler.h linux/devices/devicedefinitions/MPSoCReturnValuesIF.h STR_HANDLER MPSOC_RETURN_VALUES_IF
476 0x56aa 0x6ba3 STRH_ReplyError MPSOCRTVIF_InvalidApid Status field reply signals error Received space packet with invalid APID from PLOC 0xAA 0xA3 linux/devices/startracker/StarTrackerHandler.h linux/devices/devicedefinitions/MPSoCReturnValuesIF.h STR_HANDLER MPSOC_RETURN_VALUES_IF
477 0x56ab 0x6ba4 STRH_CommandTooShort MPSOCRTVIF_InvalidLength Received command which is too short (some data is missing for proper execution) Received command with invalid length 0xAB 0xA4 linux/devices/startracker/StarTrackerHandler.h linux/devices/devicedefinitions/MPSoCReturnValuesIF.h STR_HANDLER MPSOC_RETURN_VALUES_IF
478 0x56ac 0x6ba5 STRH_InvalidLength MPSOCRTVIF_FilenameTooLong Received command with invalid length (too few or too many parameters) Filename of file in OBC filesystem is too long 0xAC 0xA5 linux/devices/startracker/StarTrackerHandler.h linux/devices/devicedefinitions/MPSoCReturnValuesIF.h STR_HANDLER MPSOC_RETURN_VALUES_IF
479 0x56ad 0x6ba6 STRH_RegionMismatch MPSOCRTVIF_MpsocHelperExecuting Region mismatch between send and received data MPSoC helper is currently executing a command 0xAD 0xA6 linux/devices/startracker/StarTrackerHandler.h linux/devices/devicedefinitions/MPSoCReturnValuesIF.h STR_HANDLER MPSOC_RETURN_VALUES_IF
480 0x56ae 0x6ba7 STRH_AddressMismatch MPSOCRTVIF_MpsocFilenameTooLong Address mismatch between send and received data Filename of MPSoC file is to long (max. 256 bytes) 0xAE 0xA7 linux/devices/startracker/StarTrackerHandler.h linux/devices/devicedefinitions/MPSoCReturnValuesIF.h STR_HANDLER MPSOC_RETURN_VALUES_IF
481 0x56af 0x6ba8 STRH_LengthMismatch MPSOCRTVIF_InvalidParameter Length field mismatch between send and received data Command has invalid parameter 0xAF 0xA8 linux/devices/startracker/StarTrackerHandler.h linux/devices/devicedefinitions/MPSoCReturnValuesIF.h STR_HANDLER MPSOC_RETURN_VALUES_IF
482 0x56b0 0x6ba9 STRH_FileNotExists MPSOCRTVIF_NameTooLong Specified file does not exist Received command has file string with invalid length 0xB0 0xA9 linux/devices/startracker/StarTrackerHandler.h linux/devices/devicedefinitions/MPSoCReturnValuesIF.h STR_HANDLER MPSOC_RETURN_VALUES_IF
483 0x56b1 0x6ca0 STRH_InvalidType SPVRTVIF_CrcFailure Download blob pixel command has invalid type field Space Packet received from PLOC supervisor has invalid CRC 0xB1 0xA0 linux/devices/startracker/StarTrackerHandler.h linux/devices/devicedefinitions/SupvReturnValuesIF.h STR_HANDLER SUPV_RETURN_VALUES_IF
484 0x56b2 0x6ca1 STRH_InvalidId SPVRTVIF_ReceivedAckFailure Received FPGA action command with invalid ID Received ACK failure reply from PLOC supervisor 0xB2 0xA1 linux/devices/startracker/StarTrackerHandler.h linux/devices/devicedefinitions/SupvReturnValuesIF.h STR_HANDLER SUPV_RETURN_VALUES_IF
485 0x56b3 0x6ca2 STRH_ReplyTooShort SPVRTVIF_ReceivedExeFailure Received reply is too short Received execution failure reply from PLOC supervisor 0xB3 0xA2 linux/devices/startracker/StarTrackerHandler.h linux/devices/devicedefinitions/SupvReturnValuesIF.h STR_HANDLER SUPV_RETURN_VALUES_IF
486 0x56b4 0x6ca3 STRH_CrcFailure SPVRTVIF_InvalidApid Received reply with invalid CRC Received space packet with invalid APID from PLOC supervisor 0xB4 0xA3 linux/devices/startracker/StarTrackerHandler.h linux/devices/devicedefinitions/SupvReturnValuesIF.h STR_HANDLER SUPV_RETURN_VALUES_IF
487 0x56b5 0x6ca4 STRH_StrHelperExecuting SPVRTVIF_GetTimeFailure Star tracker handler currently executing a command and using the communication interface Failed to read current system time 0xB5 0xA4 linux/devices/startracker/StarTrackerHandler.h linux/devices/devicedefinitions/SupvReturnValuesIF.h STR_HANDLER SUPV_RETURN_VALUES_IF
488 0x56b6 0x6ca5 STRH_StartrackerAlreadyBooted SPVRTVIF_InvalidWatchdog Star tracker is already in firmware mode Received command with invalid watchdog parameter. Valid watchdogs are 0 for PS, 1 for PL and 2 for INT 0xB6 0xA5 linux/devices/startracker/StarTrackerHandler.h linux/devices/devicedefinitions/SupvReturnValuesIF.h STR_HANDLER SUPV_RETURN_VALUES_IF
489 0x56b7 0x6ca6 STRH_StartrackerRunningFirmware SPVRTVIF_InvalidWatchdogTimeout Star tracker is in firmware mode but must be in bootloader mode to execute this command Received watchdog timeout config command with invalid timeout. Valid timeouts must be in the range between 1000 and 360000 ms. 0xB7 0xA6 linux/devices/startracker/StarTrackerHandler.h linux/devices/devicedefinitions/SupvReturnValuesIF.h STR_HANDLER SUPV_RETURN_VALUES_IF
490 0x56b8 0x6ca7 STRH_StartrackerRunningBootloader SPVRTVIF_InvalidLatchupId Star tracker is in bootloader mode but must be in firmware mode to execute this command Received latchup config command with invalid latchup ID 0xB8 0xA7 linux/devices/startracker/StarTrackerHandler.h linux/devices/devicedefinitions/SupvReturnValuesIF.h STR_HANDLER SUPV_RETURN_VALUES_IF
491 0x5fa0 0x6ca8 STRHLP_SdNotMounted SPVRTVIF_SweepPeriodTooSmall SD card specified in path string not mounted Received set adc sweep period command with invalid sweep period. Must be larger than 21. 0xA0 0xA8 linux/devices/startracker/StrHelper.h linux/devices/devicedefinitions/SupvReturnValuesIF.h STR_HELPER SUPV_RETURN_VALUES_IF
492 0x5fa1 0x6ca9 STRHLP_FileNotExists SPVRTVIF_InvalidTestParam Specified file does not exist on filesystem Receive auto EM test command with invalid test param. Valid params are 1 and 2. 0xA1 0xA9 linux/devices/startracker/StrHelper.h linux/devices/devicedefinitions/SupvReturnValuesIF.h STR_HELPER SUPV_RETURN_VALUES_IF
493 0x5fa2 0x6caa STRHLP_PathNotExists SPVRTVIF_MramPacketParsingFailure Specified path does not exist Returned when scanning for MRAM dump packets failed. 0xA2 0xAA linux/devices/startracker/StrHelper.h linux/devices/devicedefinitions/SupvReturnValuesIF.h STR_HELPER SUPV_RETURN_VALUES_IF
494 0x5fa3 0x6cab STRHLP_FileCreationFailed SPVRTVIF_InvalidMramAddresses Failed to create download image or read flash file Returned when the start and stop addresses of the MRAM dump or MRAM wipe commands are invalid (e.g. start address bigger than stop address) 0xA3 0xAB linux/devices/startracker/StrHelper.h linux/devices/devicedefinitions/SupvReturnValuesIF.h STR_HELPER SUPV_RETURN_VALUES_IF
495 0x5fa4 0x6cac STRHLP_RegionMismatch SPVRTVIF_NoMramPacket Region in flash write/read reply does not match expected region Expect reception of an MRAM dump packet but received space packet with other apid. 0xA4 0xAC linux/devices/startracker/StrHelper.h linux/devices/devicedefinitions/SupvReturnValuesIF.h STR_HELPER SUPV_RETURN_VALUES_IF
496 0x5fa5 0x6cad STRHLP_AddressMismatch SPVRTVIF_PathDoesNotExist Address in flash write/read reply does not match expected address Path to PLOC directory on SD card does not exist 0xA5 0xAD linux/devices/startracker/StrHelper.h linux/devices/devicedefinitions/SupvReturnValuesIF.h STR_HELPER SUPV_RETURN_VALUES_IF
497 0x5fa6 0x6cae STRHLP_LengthMismatch SPVRTVIF_MramFileNotExists Length in flash write/read reply does not match expected length MRAM dump file does not exists. The file should actually already have been created with the reception of the first dump packet. 0xA6 0xAE linux/devices/startracker/StrHelper.h linux/devices/devicedefinitions/SupvReturnValuesIF.h STR_HELPER SUPV_RETURN_VALUES_IF
498 0x5fa7 0x6caf STRHLP_StatusError SPVRTVIF_InvalidLength Status field in reply signals error Received action command has invalid length 0xA7 0xAF linux/devices/startracker/StrHelper.h linux/devices/devicedefinitions/SupvReturnValuesIF.h STR_HELPER SUPV_RETURN_VALUES_IF
499 0x5fa8 0x6cb0 STRHLP_InvalidTypeId SPVRTVIF_FilenameTooLong Reply has invalid type ID (should be of action reply type) Filename too long 0xA8 0xB0 linux/devices/startracker/StrHelper.h linux/devices/devicedefinitions/SupvReturnValuesIF.h STR_HELPER SUPV_RETURN_VALUES_IF
500 0x5ca0 0x6cb1 IPCI_PapbBusy SPVRTVIF_UpdateStatusReportInvalidLength Received update status report with invalid packet length field 0xA0 0xB1 linux/obc/PapbVcInterface.h linux/devices/devicedefinitions/SupvReturnValuesIF.h CCSDS_IP_CORE_BRIDGE SUPV_RETURN_VALUES_IF
501 0x5da0 0x6cb2 PTME_UnknownVcId SPVRTVIF_UpdateCrcFailure Update status report does not contain expected CRC. There might be a bit flip in the update memory region. 0xA0 0xB2 linux/obc/Ptme.h linux/devices/devicedefinitions/SupvReturnValuesIF.h PTME SUPV_RETURN_VALUES_IF
502 0x64a0 0x6cb3 RS_RateNotSupported SPVRTVIF_SupvHelperExecuting The commanded rate is not supported by the current FPGA design Supervisor helper task ist currently executing a command (wait until helper tas has finished or interrupt by sending the terminate command) 0xA0 0xB3 linux/obc/PtmeConfig.h linux/devices/devicedefinitions/SupvReturnValuesIF.h RATE_SETTER SUPV_RETURN_VALUES_IF
503 0x64a1 0x58e0 RS_BadBitRate DWLPWRON_InvalidMode Bad bitrate has been commanded (e.g. 0) Received command has invalid JESD mode (valid modes are 0 - 5) 0xA1 0xE0 linux/obc/PtmeConfig.h linux/devices/devicedefinitions/PlocMPSoCDefinitions.h RATE_SETTER DWLPWRON_CMD
504 0x64a2 0x58e1 RS_ClkInversionFailed DWLPWRON_InvalidLaneRate Failed to invert clock and thus change the time the data is updated with respect to the tx clock Received command has invalid lane rate (valid lane rate are 0 - 9) 0xA2 0xE1 linux/obc/PtmeConfig.h linux/devices/devicedefinitions/PlocMPSoCDefinitions.h RATE_SETTER DWLPWRON_CMD
505 0x64a3 0x6601 RS_TxManipulatorConfigFailed JSONBASE_JsonFileNotExists Failed to change configuration bit of tx clock manipulator Specified json file does not exist 0xA3 1 linux/obc/PtmeConfig.h linux/devices/startracker/ArcsecJsonParamBase.h RATE_SETTER ARCSEC_JSON_BASE
506 0x62a0 0x6602 PDEC_AbandonedCltu JSONBASE_SetNotExists Requested set does not exist in json file 0xA0 2 linux/obc/PdecHandler.h linux/devices/startracker/ArcsecJsonParamBase.h PDEC_HANDLER ARCSEC_JSON_BASE
507 0x62a1 0x6603 PDEC_FrameDirty JSONBASE_ParamNotExists Requested parameter does not exist in json file 0xA1 3 linux/obc/PdecHandler.h linux/devices/startracker/ArcsecJsonParamBase.h PDEC_HANDLER ARCSEC_JSON_BASE
508 0x62a2 0x57a0 PDEC_FrameIllegalMultipleReasons STRH_TemperatureReqFailed Status in temperature reply signals error 0xA2 0xA0 linux/obc/PdecHandler.h linux/devices/startracker/StarTrackerHandler.h PDEC_HANDLER STR_HANDLER
509 0x62a3 0x57a1 PDEC_AdDiscardedLockout STRH_PingFailed Ping command failed 0xA3 0xA1 linux/obc/PdecHandler.h linux/devices/startracker/StarTrackerHandler.h PDEC_HANDLER STR_HANDLER
510 0x62a4 0x57a2 PDEC_AdDiscardedWait STRH_VersionReqFailed Status in version reply signals error 0xA4 0xA2 linux/obc/PdecHandler.h linux/devices/startracker/StarTrackerHandler.h PDEC_HANDLER STR_HANDLER
511 0x62a5 0x60a0 PDEC_AdDiscardedNsVs STRHLP_SdNotMounted SD card specified in path string not mounted 0xA5 0xA0 linux/obc/PdecHandler.h linux/devices/startracker/StrHelper.h PDEC_HANDLER STR_HELPER
512 0x62b0 0x60a1 PDEC_CommandNotImplemented STRHLP_FileNotExists Received action message with unknown action id Specified file does not exist on filesystem 0xB0 0xA1 linux/obc/PdecHandler.h linux/devices/startracker/StrHelper.h PDEC_HANDLER STR_HELPER
513 0x62a6 0x60a2 PDEC_NoReport STRHLP_PathNotExists Specified path does not exist 0xA6 0xA2 linux/obc/PdecHandler.h linux/devices/startracker/StrHelper.h PDEC_HANDLER STR_HELPER
514 0x62a7 0x60a3 PDEC_ErrorVersionNumber STRHLP_FileCreationFailed Failed to create download image or read flash file 0xA7 0xA3 linux/obc/PdecHandler.h linux/devices/startracker/StrHelper.h PDEC_HANDLER STR_HELPER
515 0x62a8 0x60a4 PDEC_IllegalCombination STRHLP_RegionMismatch Region in flash write/read reply does not match expected region 0xA8 0xA4 linux/obc/PdecHandler.h linux/devices/startracker/StrHelper.h PDEC_HANDLER STR_HELPER
516 0x62a9 0x60a5 PDEC_InvalidScId STRHLP_AddressMismatch Address in flash write/read reply does not match expected address 0xA9 0xA5 linux/obc/PdecHandler.h linux/devices/startracker/StrHelper.h PDEC_HANDLER STR_HELPER
517 0x62aa 0x60a6 PDEC_InvalidVcIdMsb STRHLP_LengthMismatch Length in flash write/read reply does not match expected length 0xAA 0xA6 linux/obc/PdecHandler.h linux/devices/startracker/StrHelper.h PDEC_HANDLER STR_HELPER
518 0x62ab 0x60a7 PDEC_InvalidVcIdLsb STRHLP_StatusError Status field in reply signals error 0xAB 0xA7 linux/obc/PdecHandler.h linux/devices/startracker/StrHelper.h PDEC_HANDLER STR_HELPER
519 0x62ac 0x60a8 PDEC_NsNotZero STRHLP_InvalidTypeId Reply has invalid type ID (should be of action reply type) 0xAC 0xA8 linux/obc/PdecHandler.h linux/devices/startracker/StrHelper.h PDEC_HANDLER STR_HELPER
520 0x62ae 0x57a3 PDEC_InvalidBcCc STRH_InterfaceReqFailed Status in interface reply signals error 0xAE 0xA3 linux/obc/PdecHandler.h linux/devices/startracker/StarTrackerHandler.h PDEC_HANDLER STR_HANDLER
521 0x57a4 STRH_PowerReqFailed Status in power reply signals error 0xA4 linux/devices/startracker/StarTrackerHandler.h STR_HANDLER
522 0x57a5 STRH_SetParamFailed Status of reply to parameter set command signals error 0xA5 linux/devices/startracker/StarTrackerHandler.h STR_HANDLER
523 0x57a6 STRH_ActionFailed Status of reply to action command signals error 0xA6 linux/devices/startracker/StarTrackerHandler.h STR_HANDLER
524 0x57a7 STRH_FilePathTooLong Received invalid path string. Exceeds allowed length 0xA7 linux/devices/startracker/StarTrackerHandler.h STR_HANDLER
525 0x57a8 STRH_FilenameTooLong Name of file received with command is too long 0xA8 linux/devices/startracker/StarTrackerHandler.h STR_HANDLER
526 0x57a9 STRH_InvalidProgram Received version reply with invalid program ID 0xA9 linux/devices/startracker/StarTrackerHandler.h STR_HANDLER
527 0x57aa STRH_ReplyError Status field reply signals error 0xAA linux/devices/startracker/StarTrackerHandler.h STR_HANDLER
528 0x57ab STRH_CommandTooShort Received command which is too short (some data is missing for proper execution) 0xAB linux/devices/startracker/StarTrackerHandler.h STR_HANDLER
529 0x57ac STRH_InvalidLength Received command with invalid length (too few or too many parameters) 0xAC linux/devices/startracker/StarTrackerHandler.h STR_HANDLER
530 0x57ad STRH_RegionMismatch Region mismatch between send and received data 0xAD linux/devices/startracker/StarTrackerHandler.h STR_HANDLER
531 0x57ae STRH_AddressMismatch Address mismatch between send and received data 0xAE linux/devices/startracker/StarTrackerHandler.h STR_HANDLER
532 0x57af STRH_LengthMismatch Length field mismatch between send and received data 0xAF linux/devices/startracker/StarTrackerHandler.h STR_HANDLER
533 0x57b0 STRH_FileNotExists Specified file does not exist 0xB0 linux/devices/startracker/StarTrackerHandler.h STR_HANDLER
534 0x57b1 STRH_InvalidType Download blob pixel command has invalid type field 0xB1 linux/devices/startracker/StarTrackerHandler.h STR_HANDLER
535 0x57b2 STRH_InvalidId Received FPGA action command with invalid ID 0xB2 linux/devices/startracker/StarTrackerHandler.h STR_HANDLER
536 0x57b3 STRH_ReplyTooShort Received reply is too short 0xB3 linux/devices/startracker/StarTrackerHandler.h STR_HANDLER
537 0x57b4 STRH_CrcFailure Received reply with invalid CRC 0xB4 linux/devices/startracker/StarTrackerHandler.h STR_HANDLER
538 0x57b5 STRH_StrHelperExecuting Star tracker handler currently executing a command and using the communication interface 0xB5 linux/devices/startracker/StarTrackerHandler.h STR_HANDLER
539 0x57b6 STRH_StartrackerAlreadyBooted Star tracker is already in firmware mode 0xB6 linux/devices/startracker/StarTrackerHandler.h STR_HANDLER
540 0x57b7 STRH_StartrackerRunningFirmware Star tracker is in firmware mode but must be in bootloader mode to execute this command 0xB7 linux/devices/startracker/StarTrackerHandler.h STR_HANDLER
541 0x57b8 STRH_StartrackerRunningBootloader Star tracker is in bootloader mode but must be in firmware mode to execute this command 0xB8 linux/devices/startracker/StarTrackerHandler.h STR_HANDLER
542 0x5ea0 PTME_UnknownVcId 0xA0 linux/obc/Ptme.h PTME
543 0x63a0 PDEC_AbandonedCltu 0xA0 linux/obc/PdecHandler.h PDEC_HANDLER
544 0x63a1 PDEC_FrameDirty 0xA1 linux/obc/PdecHandler.h PDEC_HANDLER
545 0x63a2 PDEC_FrameIllegalMultipleReasons 0xA2 linux/obc/PdecHandler.h PDEC_HANDLER
546 0x63a3 PDEC_AdDiscardedLockout 0xA3 linux/obc/PdecHandler.h PDEC_HANDLER
547 0x63a4 PDEC_AdDiscardedWait 0xA4 linux/obc/PdecHandler.h PDEC_HANDLER
548 0x63a5 PDEC_AdDiscardedNsVs 0xA5 linux/obc/PdecHandler.h PDEC_HANDLER
549 0x63b0 PDEC_CommandNotImplemented Received action message with unknown action id 0xB0 linux/obc/PdecHandler.h PDEC_HANDLER
550 0x63a6 PDEC_NoReport 0xA6 linux/obc/PdecHandler.h PDEC_HANDLER
551 0x63a7 PDEC_ErrorVersionNumber 0xA7 linux/obc/PdecHandler.h PDEC_HANDLER
552 0x63a8 PDEC_IllegalCombination 0xA8 linux/obc/PdecHandler.h PDEC_HANDLER
553 0x63a9 PDEC_InvalidScId 0xA9 linux/obc/PdecHandler.h PDEC_HANDLER
554 0x63aa PDEC_InvalidVcIdMsb 0xAA linux/obc/PdecHandler.h PDEC_HANDLER
555 0x63ab PDEC_InvalidVcIdLsb 0xAB linux/obc/PdecHandler.h PDEC_HANDLER
556 0x63ac PDEC_NsNotZero 0xAC linux/obc/PdecHandler.h PDEC_HANDLER
557 0x63ae PDEC_InvalidBcCc 0xAE linux/obc/PdecHandler.h PDEC_HANDLER
558 0x65a0 RS_RateNotSupported The commanded rate is not supported by the current FPGA design 0xA0 linux/obc/PtmeConfig.h RATE_SETTER
559 0x65a1 RS_BadBitRate Bad bitrate has been commanded (e.g. 0) 0xA1 linux/obc/PtmeConfig.h RATE_SETTER
560 0x65a2 RS_ClkInversionFailed Failed to invert clock and thus change the time the data is updated with respect to the tx clock 0xA2 linux/obc/PtmeConfig.h RATE_SETTER
561 0x65a3 RS_TxManipulatorConfigFailed Failed to change configuration bit of tx clock manipulator 0xA3 linux/obc/PtmeConfig.h RATE_SETTER
562 0x5da0 IPCI_PapbBusy 0xA0 linux/obc/PapbVcInterface.h CCSDS_IP_CORE_BRIDGE
+15 -11
View File
@@ -10,6 +10,7 @@ import enum
from tmtccmd.tc.pus_8_funccmd import generate_action_command
from tmtccmd.tc.definitions import PusTelecommand
from tmtccmd.utility import ObjectId
class GomspaceDeviceActionIds(enum.IntEnum):
@@ -43,7 +44,8 @@ class SetIds:
PDU_2_AUX = 4
P60_CORE = 5
P60_AUX = 6
ACU = 7
ACU_CORE = 7
ACU_AUX = 8
class TableIds:
@@ -67,7 +69,7 @@ class Channel:
def pack_get_param_command(
object_id: bytearray, table_id: int, memory_address: bytearray, parameter_size: int
object_id: bytes, table_id: int, memory_address: bytearray, parameter_size: int
) -> PusTelecommand:
"""Function to generate a command to retrieve parameters like the temperature from a gomspace device.
@param object_id: The object id of the gomspace device handler.
@@ -88,7 +90,7 @@ def pack_get_param_command(
def pack_set_param_command(
object_id: bytearray,
object_id: bytes,
memory_address: bytearray,
parameter_size: int,
parameter: int,
@@ -128,7 +130,7 @@ def pack_set_param_command(
)
def pack_ping_command(object_id: bytearray, data: bytearray) -> PusTelecommand:
def pack_ping_command(object_id: ObjectId, data: bytearray) -> PusTelecommand:
""" " Function to generate the command to ping a gomspace device
@param object_id Object Id of the gomspace device handler.
@param data Bytearray containing the bytes to send to the gomspace device. For now the on board software
@@ -137,33 +139,35 @@ def pack_ping_command(object_id: bytearray, data: bytearray) -> PusTelecommand:
data are simply copied by the device and then sent back.
"""
return generate_action_command(
object_id=object_id, action_id=GomspaceDeviceActionIds.PING, app_data=data
object_id=object_id.as_bytes,
action_id=GomspaceDeviceActionIds.PING,
app_data=data,
)
def pack_gnd_wdt_reset_command(object_id: bytearray) -> PusTelecommand:
def pack_gnd_wdt_reset_command(object_id: ObjectId) -> PusTelecommand:
""" " Function to generate the command to reset the watchdog of a gomspace device.
@param object_id Object Id of the gomspace device handler.
"""
return generate_action_command(
object_id=object_id, action_id=GomspaceDeviceActionIds.WDT_RESET
object_id=object_id.as_bytes, action_id=GomspaceDeviceActionIds.WDT_RESET
)
def pack_reboot_command(object_id: bytearray) -> PusTelecommand:
def pack_reboot_command(object_id: ObjectId) -> PusTelecommand:
"""Function to generate the command which triggers a reboot of a gomspace device
@param object_id The object id of the gomspace device handler.
"""
return generate_action_command(
object_id=object_id, action_id=GomspaceDeviceActionIds.REBOOT
object_id=object_id.as_bytes, action_id=GomspaceDeviceActionIds.REBOOT
)
def pack_request_full_hk_table_command(object_id: bytearray) -> PusTelecommand:
def pack_request_full_hk_table_command(object_id: ObjectId) -> PusTelecommand:
"""Function to generate the command to request the full housekeeping table from a gomspace
device.
@param object_id The object id of the gomspace device handler.
"""
return generate_action_command(
object_id=object_id, action_id=GomspaceDeviceActionIds.REQUEST_HK_TABLE
object_id=object_id.as_bytes, action_id=GomspaceDeviceActionIds.REQUEST_HK_TABLE
)
+53 -495
View File
@@ -1,4 +1,4 @@
from pus_tc.devs.gps import GpsOpCodes
from pus_tc.system.proc import add_proc_cmds
from tmtccmd.config import (
add_op_code_entry,
add_service_op_code_entry,
@@ -6,19 +6,28 @@ from tmtccmd.config import (
ServiceOpCodeDictT,
OpCodeDictKeys,
)
from config.definitions import CustomServiceList
from tmtccmd.config.globals import get_default_service_op_code_dict
from pus_tc.devs.gps import add_gps_cmds
from pus_tc.devs.pcdu import add_pcdu_cmds
from pus_tc.devs.plpcdu import add_pl_pcdu_cmds
from pus_tc.devs.rad_sensor import add_rad_sens_cmds
from pus_tc.system.core import add_core_controller_definitions
from pus_tc.devs.heater import add_heater_cmds
from pus_tc.devs.rtd import specify_rtd_cmds
from pus_tc.devs.reaction_wheels import add_rw_cmds
from pus_tc.devs.bpx_batt import BpxOpCodes
from config.definitions import CustomServiceList
def get_eive_service_op_code_dict() -> ServiceOpCodeDictT:
from tmtccmd.config.globals import get_default_service_op_code_dict
service_op_code_dict = get_default_service_op_code_dict()
add_bpx_cmd_definitions(cmd_dict=service_op_code_dict)
add_core_controller_definitions(cmd_dict=service_op_code_dict)
add_pl_pcdu_cmds(cmd_dict=service_op_code_dict)
add_pcdu_cmds(cmd_dict=service_op_code_dict)
specify_rtd_cmds(cmd_dict=service_op_code_dict)
add_imtq_cmds(cmd_dict=service_op_code_dict)
add_rad_sens_cmds(cmd_dict=service_op_code_dict)
add_rw_cmds(cmd_dict=service_op_code_dict)
@@ -33,6 +42,7 @@ def get_eive_service_op_code_dict() -> ServiceOpCodeDictT:
add_pdec_cmds(cmd_dict=service_op_code_dict)
add_heater_cmds(cmd_dict=service_op_code_dict)
add_tmp_sens_cmds(cmd_dict=service_op_code_dict)
add_proc_cmds(cmd_dict=service_op_code_dict)
return service_op_code_dict
@@ -83,15 +93,6 @@ def add_ccsds_cmds(cmd_dict: ServiceOpCodeDictT):
cmd_dict[CustomServiceList.CCSDS_HANDLER.value] = service_ccsds_handler_tuple
def add_gps_cmds(cmd_dict: ServiceOpCodeDictT):
op_code_dict = {
GpsOpCodes.RESET_GNSS.value: ("Reset GPS", {OpCodeDictKeys.TIMEOUT: 2.0})
}
service_tuple = ("GPS 0", op_code_dict)
cmd_dict[CustomServiceList.GPS_0.value] = service_tuple
cmd_dict[CustomServiceList.GPS_1.value] = service_tuple
def add_str_cmds(cmd_dict: ServiceOpCodeDictT):
op_code_dict_srv_star_tracker = {
"0": (
@@ -316,147 +317,6 @@ def add_bpx_cmd_definitions(cmd_dict: ServiceOpCodeDictT):
)
def add_core_controller_definitions(cmd_dict: ServiceOpCodeDictT):
from pus_tc.system.core import OpCodes
od = dict()
add_op_code_entry(op_code_dict=od, keys=OpCodes.REBOOT, info="Reboot with Prompt")
add_op_code_entry(op_code_dict=od, keys=OpCodes.REBOOT_SELF, info="Reboot Self")
add_op_code_entry(op_code_dict=od, keys=OpCodes.REBOOT_0_0, info="Reboot 0 0")
add_op_code_entry(op_code_dict=od, keys=OpCodes.REBOOT_0_1, info="Reboot 0 1")
add_op_code_entry(op_code_dict=od, keys=OpCodes.REBOOT_1_0, info="Reboot 1 0")
add_op_code_entry(op_code_dict=od, keys=OpCodes.REBOOT_1_1, info="Reboot 1 1")
add_op_code_entry(
op_code_dict=od,
keys=OpCodes.ENABLE_REBOOT_FILE_HANDLING,
info="Enable reboot file handling",
)
add_op_code_entry(
op_code_dict=od,
keys=OpCodes.DISABLE_REBOOT_FILE_HANDLING,
info="Disable reboot file handling",
)
add_op_code_entry(
op_code_dict=od,
keys=OpCodes.RESET_ALL_REBOOT_COUNTERS,
info="Reset all reboot counters",
)
add_op_code_entry(
op_code_dict=od,
keys=OpCodes.RESET_REBOOT_COUNTER_00,
info="Reset reboot counter 0 0",
)
add_op_code_entry(
op_code_dict=od,
keys=OpCodes.RESET_REBOOT_COUNTER_01,
info="Reset reboot counter 0 1",
)
add_op_code_entry(
op_code_dict=od,
keys=OpCodes.RESET_REBOOT_COUNTER_10,
info="Reset reboot counter 1 0",
)
add_op_code_entry(
op_code_dict=od,
keys=OpCodes.RESET_REBOOT_COUNTER_11,
info="Reset reboot counter 1 1",
)
add_op_code_entry(
op_code_dict=od,
keys=OpCodes.GET_HK,
info="Request housekeeping set",
)
add_service_op_code_entry(
srv_op_code_dict=cmd_dict,
name=CustomServiceList.CORE.value,
info="Reboot Self",
op_code_entry=od,
)
def add_pl_pcdu_cmds(cmd_dict: ServiceOpCodeDictT):
from pus_tc.devs.plpcdu import OpCodes, Info
op_code_dict = dict()
add_op_code_entry(
op_code_dict=op_code_dict, keys=OpCodes.SWITCH_ON, info=Info.SWITCH_ON
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=OpCodes.NORMAL_SSR,
info=Info.NORMAL_SSR,
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=OpCodes.NORMAL_DRO,
info=Info.NORMAL_DRO,
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=OpCodes.NORMAL_X8,
info=Info.NORMAL_X8,
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=OpCodes.NORMAL_TX,
info=Info.NORMAL_TX,
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=OpCodes.NORMAL_MPA,
info=Info.NORMAL_MPA,
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=OpCodes.NORMAL_HPA,
info=Info.NORMAL_HPA,
)
add_op_code_entry(
op_code_dict=op_code_dict, keys=OpCodes.SWITCH_OFF, info=Info.SWITCH_OFF
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=OpCodes.UPDATE_DRO_TO_X8_WAIT,
info="Update DRO to X8 wait time",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=OpCodes.INJECT_SSR_TO_DRO_FAILURE,
info="Inject failure SSR to DRO transition",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=OpCodes.INJECT_DRO_TO_X8_FAILURE,
info="Inject failure in DRO to X8 transition",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=OpCodes.INJECT_X8_TO_TX_FAILURE,
info="Inject failure in X8 to TX transition",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=OpCodes.INJECT_TX_TO_MPA_FAILURE,
info="Inject failure in TX to MPA transition",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=OpCodes.INJECT_MPA_TO_HPA_FAILURE,
info="Inject failure in MPA to HPA transition",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=OpCodes.INJECT_ALL_ON_FAILURE,
info="Inject failure in all on mode",
)
add_service_op_code_entry(
srv_op_code_dict=cmd_dict,
name=CustomServiceList.PL_PCDU.value,
info="PL PCDU",
op_code_entry=op_code_dict,
)
def add_time_cmds(cmd_dict: ServiceOpCodeDictT):
from pus_tc.system.time import OpCodes, Info
@@ -474,319 +334,30 @@ def add_time_cmds(cmd_dict: ServiceOpCodeDictT):
)
def add_pcdu_cmds(cmd_dict: ServiceOpCodeDictT):
from pus_tc.devs.p60dock import P60OpCodes, GomspaceOpCodes, Info
from pus_tc.devs.pdu1 import Pdu1OpCodes
from pus_tc.devs.pdu2 import Pdu2OpCodes
from gomspace.gomspace_common import Info as GsInfo
op_code_dict = dict()
add_op_code_entry(
op_code_dict=op_code_dict,
keys=P60OpCodes.STACK_3V3_ON,
info=Info.STACK_3V3_ON,
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=P60OpCodes.STACK_3V3_OFF,
info=Info.STACK_3V3_OFF,
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=P60OpCodes.STACK_5V_ON,
info=Info.STACK_5V_ON,
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=P60OpCodes.STACK_5V_OFF,
info=Info.STACK_5V_OFF,
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=GomspaceOpCodes.REQUEST_CORE_HK_ONCE,
info=GsInfo.REQUEST_CORE_HK_ONCE,
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=GomspaceOpCodes.REQUEST_AUX_HK_ONCE,
info=GsInfo.REQUEST_AUX_HK_ONCE,
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=GomspaceOpCodes.PRINT_SWITCH_V_I,
info="P60 Dock: Print Switches, Voltages, Currents",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=GomspaceOpCodes.PRINT_LATCHUPS,
info="P60 Dock: Print Latchups",
)
add_op_code_entry(op_code_dict=op_code_dict, keys=P60OpCodes.TEST, info="P60 Tests")
add_service_op_code_entry(
srv_op_code_dict=cmd_dict,
name=CustomServiceList.P60DOCK.value,
info="P60 Device",
op_code_entry=op_code_dict,
)
op_code_dict = dict()
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu1OpCodes.TCS_BOARD_ON.value,
info="PDU1: Turn TCS board on",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu1OpCodes.TCS_BOARD_OFF.value,
info="PDU1: Turn TCS board off",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu1OpCodes.STAR_TRACKER_ON.value,
info="PDU1: Turn star tracker on",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu1OpCodes.STAR_TRACKER_OFF.value,
info="PDU1: Turn star tracker off",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu1OpCodes.SUS_NOMINAL_ON.value,
info="PDU1: Turn SUS nominal on",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu1OpCodes.SUS_NOMINAL_OFF.value,
info="PDU1: Turn SUS nominal off",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu1OpCodes.ACS_A_SIDE_ON.value,
info="PDU1: Turn ACS A side on",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu1OpCodes.ACS_A_SIDE_OFF.value,
info="PDU1: Turn ACS A side off",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu1OpCodes.SYRLINKS_ON.value,
info="PDU1: Turn Syrlinks on",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu1OpCodes.SYRLINKS_OFF.value,
info="PDU1: Turn Syrlinks off",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu1OpCodes.MGT_ON.value,
info="PDU1: Turn MGT on",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu1OpCodes.MGT_OFF.value,
info="PDU1: Turn MGT off",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu1OpCodes.PLOC_ON.value,
info="PDU1: Turn PLOC on",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu1OpCodes.PLOC_OFF.value,
info="PDU1: Turn PLOC off",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu1OpCodes.SCEX_ON.value,
info="PDU1: Turn Solar Cell Experiment on",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu1OpCodes.SCEX_OFF.value,
info="PDU1: Turn Solar Cell Experiment off",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=GomspaceOpCodes.REQUEST_CORE_HK_ONCE,
info=GsInfo.REQUEST_CORE_HK_ONCE,
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=GomspaceOpCodes.REQUEST_AUX_HK_ONCE,
info=GsInfo.REQUEST_AUX_HK_ONCE,
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=GomspaceOpCodes.PRINT_SWITCH_V_I,
info="PDU1: Print Switches, Voltages, Currents",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=GomspaceOpCodes.PRINT_LATCHUPS,
info="PDU1: Print Latchups",
)
add_op_code_entry(
op_code_dict=op_code_dict, keys=Pdu1OpCodes.TESTS.value, info="PDU1 Tests"
)
add_service_op_code_entry(
srv_op_code_dict=cmd_dict,
name=CustomServiceList.PDU1.value,
info="PDU1 Device",
op_code_entry=op_code_dict,
)
op_code_dict = dict()
add_op_code_entry(op_code_dict=op_code_dict, keys="0", info="PDU2 Tests")
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu2OpCodes.ACS_SIDE_B_ON.value,
info="PDU2: Turn ACS Side B on",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu2OpCodes.ACS_SIDE_B_OFF.value,
info="PDU2: Turn ACS Side B off",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu2OpCodes.SUS_REDUNDANT_ON.value,
info="PDU2: Turn SUS redundant on",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu2OpCodes.SUS_REDUNDANT_OFF.value,
info="PDU2: Turn SUS redundant off",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu2OpCodes.RW_ON.value,
info="PDU2: Turn reaction wheels on",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu2OpCodes.RW_OFF.value,
info="PDU2: Turn reaction wheels off",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu2OpCodes.PL_PCDU_VBAT_NOM_ON.value,
info="PDU2: PL PCDU Switch Channel Nominal (1) on",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu2OpCodes.PL_PCDU_VBAT_NOM_OFF.value,
info="PDU2: PL PCDU Switch Channel Nominal (1) off",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu2OpCodes.PL_PCDU_VBAT_RED_ON.value,
info="PDU2: PL PCDU Switch Channel Redundant (1) on",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu2OpCodes.PL_PCDU_VBAT_RED_OFF.value,
info="PDU2: PL PCDU Switch Channel Redundant (1) off",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu2OpCodes.TCS_HEATER_IN_ON.value,
info="PDU2: Switch TCS Heater Input on",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu2OpCodes.TCS_HEATER_IN_OFF.value,
info="PDU2: Switch TCS Heater Input off",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu2OpCodes.SOLAR_ARRAY_DEPL_ON.value,
info="PDU2: Switch Solar Array Deployment On",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu2OpCodes.SOLAR_ARRAY_DEPL_OFF.value,
info="PDU2: Switch Solar Array Deployment Off",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu2OpCodes.PL_CAMERA_ON.value,
info="PDU2: Turn payload camera on",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu2OpCodes.PL_CAMERA_OFF.value,
info="PDU2: Turn payload camera off",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=GomspaceOpCodes.REQUEST_CORE_HK_ONCE,
info=GsInfo.REQUEST_CORE_HK_ONCE,
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=GomspaceOpCodes.REQUEST_AUX_HK_ONCE,
info=GsInfo.REQUEST_AUX_HK_ONCE,
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=GomspaceOpCodes.PRINT_SWITCH_V_I,
info="PDU2: Print Switches, Voltages, Currents",
options={OpCodeDictKeys.TIMEOUT: 2.0},
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=GomspaceOpCodes.PRINT_LATCHUPS,
info="PDU2: Print Latchups",
)
add_service_op_code_entry(
srv_op_code_dict=cmd_dict,
name="pdu2",
info="PDU2 Device",
op_code_entry=op_code_dict,
)
op_code_dict = {
"0": ("ACU: Tests", {OpCodeDictKeys.TIMEOUT: 2.0}),
"51": ("ACU: Print channel statistics", {OpCodeDictKeys.TIMEOUT: 2.0}),
}
service_tuple = ("ACU Devices", op_code_dict)
cmd_dict[CustomServiceList.ACU.value] = service_tuple
def add_imtq_cmds(cmd_dict: ServiceOpCodeDictT):
op_code_dict_srv_imtq = {
"0": ("IMTQ Tests All", {OpCodeDictKeys.TIMEOUT: 2.0}),
"1": ("IMTQ perform pos X self test", {OpCodeDictKeys.TIMEOUT: 2.0}),
"2": ("IMTQ perform neg X self test", {OpCodeDictKeys.TIMEOUT: 2.0}),
"3": ("IMTQ perform pos Y self test", {OpCodeDictKeys.TIMEOUT: 2.0}),
"4": ("IMTQ perform neg Y self test", {OpCodeDictKeys.TIMEOUT: 2.0}),
"5": ("IMTQ perform pos Z self test", {OpCodeDictKeys.TIMEOUT: 2.0}),
"6": ("IMTQ perform neg Z self test", {OpCodeDictKeys.TIMEOUT: 2.0}),
"7": ("IMTQ command dipole", {OpCodeDictKeys.TIMEOUT: 2.0}),
"8": ("IMTQ get commanded dipole", {OpCodeDictKeys.TIMEOUT: 2.0}),
"0": ("Mode off", {OpCodeDictKeys.TIMEOUT: 2.0}),
"1": ("Mode on", {OpCodeDictKeys.TIMEOUT: 2.0}),
"2": ("Mode normal", {OpCodeDictKeys.TIMEOUT: 2.0}),
"3": ("IMTQ perform pos X self test", {OpCodeDictKeys.TIMEOUT: 2.0}),
"4": ("IMTQ perform neg X self test", {OpCodeDictKeys.TIMEOUT: 2.0}),
"5": ("IMTQ perform pos Y self test", {OpCodeDictKeys.TIMEOUT: 2.0}),
"6": ("IMTQ perform neg Y self test", {OpCodeDictKeys.TIMEOUT: 2.0}),
"7": ("IMTQ perform pos Z self test", {OpCodeDictKeys.TIMEOUT: 2.0}),
"8": ("IMTQ perform neg Z self test", {OpCodeDictKeys.TIMEOUT: 2.0}),
"9": ("IMTQ command dipole", {OpCodeDictKeys.TIMEOUT: 2.0}),
"10": ("IMTQ get commanded dipole", {OpCodeDictKeys.TIMEOUT: 2.0}),
"11": ("IMTQ get engineering hk set", {OpCodeDictKeys.TIMEOUT: 2.0}),
"12": (
"IMTQ get calibrated MTM measurement one shot",
{OpCodeDictKeys.TIMEOUT: 2.0},
),
"13": ("IMTQ get raw MTM measurement one shot", {OpCodeDictKeys.TIMEOUT: 2.0}),
}
service_imtq_tuple = ("IMTQ Device", op_code_dict_srv_imtq)
cmd_dict[CustomServiceList.IMTQ.value] = service_imtq_tuple
def add_rad_sens_cmds(cmd_dict: ServiceOpCodeDictT):
op_code_dict_srv_rad_sensor = {
"0": ("Radiation Sensor: Set mode on", {OpCodeDictKeys.TIMEOUT: 2.0}),
"1": ("Radiation Sensor: Set mode normal", {OpCodeDictKeys.TIMEOUT: 2.0}),
"2": ("Radiation Sensor: Set mode off", {OpCodeDictKeys.TIMEOUT: 2.0}),
"3": ("Radiation Sensor: Start conversions", {OpCodeDictKeys.TIMEOUT: 2.0}),
"4": ("Radiation Sensor: Read conversions", {OpCodeDictKeys.TIMEOUT: 2.0}),
"5": ("Radiation Sensor: Enable debug output", {OpCodeDictKeys.TIMEOUT: 2.0}),
"6": ("Radiation Sensor: Disable debug putput", {OpCodeDictKeys.TIMEOUT: 2.0}),
}
service_rad_sensor_tuple = ("Radiation Sensor", op_code_dict_srv_rad_sensor)
cmd_dict[CustomServiceList.RAD_SENSOR.value] = service_rad_sensor_tuple
def add_ploc_mpsoc_cmds(cmd_dict: ServiceOpCodeDictT):
op_code_dict_srv_ploc_mpsoc = {
"0": ("Ploc MPSoC: Set mode off", {OpCodeDictKeys.TIMEOUT: 2.0}),
@@ -806,7 +377,7 @@ def add_ploc_mpsoc_cmds(cmd_dict: ServiceOpCodeDictT):
"14": ("Ploc MPSoC: Mode replay", {OpCodeDictKeys.TIMEOUT: 2.0}),
"15": ("Ploc MPSoC: Mode idle", {OpCodeDictKeys.TIMEOUT: 2.0}),
"16": ("Ploc MPSoC: Tc cam command send", {OpCodeDictKeys.TIMEOUT: 2.0}),
"17": ("Ploc MPSoC: Set UART TX tristate" , {OpCodeDictKeys.TIMEOUT: 2.0}),
"17": ("Ploc MPSoC: Set UART TX tristate", {OpCodeDictKeys.TIMEOUT: 2.0}),
"18": ("Ploc MPSoC: Relesase UART TX", {OpCodeDictKeys.TIMEOUT: 2.0}),
}
service_ploc_mpsoc_tuple = ("Ploc MPSoC", op_code_dict_srv_ploc_mpsoc)
@@ -902,43 +473,9 @@ def add_ploc_supv_cmds(cmd_dict: ServiceOpCodeDictT):
"55": ("PLOC Supervisor: Request ADC Report", {OpCodeDictKeys.TIMEOUT: 2.0}),
"56": ("PLOC Supervisor: Reset PL", {OpCodeDictKeys.TIMEOUT: 2.0}),
"57": ("PLOC Supervisor: Enable NVMs", {OpCodeDictKeys.TIMEOUT: 2.0}),
"58": ("PLOC Supervisor: Continue update", {OpCodeDictKeys.TIMEOUT: 2.0}),
}
service_ploc_supv_tuple = ("PLOC Supervisor", op_code_dict_srv_ploc_supv)
op_code_dict_srv_ploc_updater = {
"0": (
"Ploc Updater: Update uboot on partition A",
{OpCodeDictKeys.TIMEOUT: 2.0},
),
"1": (
"Ploc Updater: Update bitstream on partition A",
{OpCodeDictKeys.TIMEOUT: 2.0},
),
"2": (
"Ploc Updater: Update linux on partition A",
{OpCodeDictKeys.TIMEOUT: 2.0},
),
"3": (
"Ploc Updater: Update application on partition A",
{OpCodeDictKeys.TIMEOUT: 2.0},
),
"4": (
"Ploc Updater: Update uboot on partition B",
{OpCodeDictKeys.TIMEOUT: 2.0},
),
"5": (
"Ploc Updater: Update bitstream on partition B",
{OpCodeDictKeys.TIMEOUT: 2.0},
),
"6": (
"Ploc Updater: Update linux on partition B",
{OpCodeDictKeys.TIMEOUT: 2.0},
),
"7": (
"Ploc Updater: Update application on partition B",
{OpCodeDictKeys.TIMEOUT: 2.0},
),
}
cmd_dict[CustomServiceList.PLOC_SUPV.value] = service_ploc_supv_tuple
cmd_dict[
CustomServiceList.PLOC_MEMORY_DUMPER.value
@@ -948,6 +485,7 @@ def add_ploc_supv_cmds(cmd_dict: ServiceOpCodeDictT):
def add_system_cmds(cmd_dict: ServiceOpCodeDictT):
from pus_tc.system.acs import AcsOpCodes, SusOpCodes
import pus_tc.system.tcs as tcs
import pus_tc.system.controllers as controllers
default_opts = generate_op_code_options(
enter_listener_mode=False, custom_timeout=8.0
@@ -1053,3 +591,23 @@ def add_system_cmds(cmd_dict: ServiceOpCodeDictT):
info="TCS Board Assembly",
op_code_entry=op_code_dict,
)
op_code_dict = dict()
add_op_code_entry(
op_code_dict=op_code_dict,
keys=controllers.OpCodes.THERMAL_CONTROLLER,
info=controllers.Info.THERMAL_CONTROLLER,
options=default_opts,
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=controllers.OpCodes.CORE_CONTROLLER,
info=controllers.Info.CORE_CONTROLLER,
options=default_opts,
)
add_service_op_code_entry(
srv_op_code_dict=cmd_dict,
name=CustomServiceList.CONTROLLERS.value,
info="Controllers",
op_code_entry=op_code_dict,
)
+135 -79
View File
@@ -1,15 +1,105 @@
# -*- coding: utf-8 -*-
"""
@file tmtcc_tc_acu.py
@brief ACU tests
@author J. Meier
"""ACU commands
@author J. Meier, R. Mueller
@date 21.12.2020
"""
import struct
from config.definitions import CustomServiceList
from tmtccmd.config import add_op_code_entry, add_service_op_code_entry
from tmtccmd.tc.packer import TcQueueT
from tmtccmd.config.definitions import QueueCommands
from gomspace.gomspace_common import *
from tmtccmd.config.definitions import QueueCommands, ServiceOpCodeDictT
from tmtccmd.tc.pus_3_fsfw_hk import (
make_sid,
generate_one_diag_command,
generate_one_hk_command,
)
import gomspace.gomspace_common as gs
from gomspace.gomspace_common import GomspaceOpCodes
from gomspace.gomspace_common import Info as GsInfo
from config.object_ids import ACU_HANDLER_ID
from pus_tc.devs.p60dock import P60DockConfigTable
from tmtccmd.tc.pus_8_funccmd import generate_action_command
from tmtccmd.utility import ObjectId
class ACUConfigTable:
mppt_mode = gs.TableEntry(bytearray([0x00, 0x00]), gs.TableEntry.uint8_size)
mppt_d_mode = gs.TableEntry(bytearray([0x00, 0x01]), gs.TableEntry.uint8_size)
vboost = gs.TableEntry(bytearray([0x00, 0x02]), gs.TableEntry.uint16_size)
vbat_max_hi = gs.TableEntry(bytearray([0x00, 0x10]), gs.TableEntry.uint16_size)
vbat_max_lo = gs.TableEntry(bytearray([0x00, 0x12]), gs.TableEntry.uint16_size)
ov_mode = gs.TableEntry(bytearray([0x00, 0x1A]), gs.TableEntry.uint8_size)
class ACUHkTable:
temperature1 = gs.TableEntry(bytearray([0x00, 0x1C]), gs.TableEntry.uint16_size)
temperature2 = gs.TableEntry(bytearray([0x00, 0x1D]), gs.TableEntry.uint16_size)
temperature3 = gs.TableEntry(bytearray([0x00, 0x1E]), gs.TableEntry.uint16_size)
# Ground WDT value (remaining seconds until reboot)
wdt_gnd_left = gs.TableEntry(bytearray([0x00, 0x74]), gs.TableEntry.uint32_size)
class OpCodes:
TEST = ["0", "test"]
class Info:
TEST = "ACU Test"
def add_acu_cmds(cmd_dict: ServiceOpCodeDictT):
op_code_dict = dict()
add_op_code_entry(
op_code_dict=op_code_dict,
keys=GomspaceOpCodes.REQUEST_CORE_HK_ONCE,
info=GsInfo.REQUEST_CORE_HK_ONCE,
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=GomspaceOpCodes.REQUEST_AUX_HK_ONCE,
info=GsInfo.REQUEST_AUX_HK_ONCE,
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=GomspaceOpCodes.REQUEST_AUX_HK_ONCE,
info=GsInfo.REQUEST_AUX_HK_ONCE,
)
add_op_code_entry(op_code_dict=op_code_dict, keys=OpCodes.TEST, info=Info.TEST)
add_service_op_code_entry(
srv_op_code_dict=cmd_dict,
op_code_entry=op_code_dict,
name=CustomServiceList.ACU.value,
info="ACU Device",
)
def pack_acu_commands(
object_id: ObjectId, tc_queue: TcQueueT, op_code: str
) -> TcQueueT:
tc_queue.appendleft((QueueCommands.PRINT, "Handling ACU command"))
if op_code in GomspaceOpCodes.PRINT_SWITCH_V_I:
tc_queue.appendleft((QueueCommands.PRINT, "ACU: Print channel stats"))
command = generate_action_command(
object_id=object_id.as_bytes,
action_id=gs.GomspaceDeviceActionIds.PRINT_SWITCH_V_I,
)
tc_queue.appendleft(command.pack_command_tuple())
if op_code in GomspaceOpCodes.REQUEST_CORE_HK_ONCE:
tc_queue.appendleft(
(QueueCommands.PRINT, f"PDU1: {GsInfo.REQUEST_CORE_HK_ONCE}")
)
hk_sid = make_sid(object_id=object_id.as_bytes, set_id=gs.SetIds.ACU_CORE)
command = generate_one_diag_command(sid=hk_sid, ssc=0)
tc_queue.appendleft(command.pack_command_tuple())
if op_code in GomspaceOpCodes.REQUEST_AUX_HK_ONCE:
tc_queue.appendleft(
(QueueCommands.PRINT, f"PDU1: {GsInfo.REQUEST_AUX_HK_ONCE}")
)
hk_sid = make_sid(object_id=object_id.as_bytes, set_id=gs.SetIds.ACU_AUX)
command = generate_one_hk_command(sid=hk_sid, ssc=0)
tc_queue.appendleft(command.pack_command_tuple())
pack_test_cmds(object_id=object_id, tc_queue=tc_queue)
return tc_queue
class ACUTestProcedure:
@@ -26,59 +116,28 @@ class ACUTestProcedure:
ping = False
read_temperature1 = False
read_temperature2 = False
read_temperature3 = True
read_mppt_mode = True
read_vboost = True
read_vbat_max_hi = True
read_vbat_max_lo = True
read_ov_mode = True
read_temperature3 = False
read_mppt_mode = False
read_vboost = False
read_vbat_max_hi = False
read_vbat_max_lo = False
read_ov_mode = False
off = False
class ACUConfigTable:
mppt_mode = TableEntry(bytearray([0x00, 0x00]), TableEntry.uint8_size)
mppt_d_mode = TableEntry(bytearray([0x00, 0x01]), TableEntry.uint8_size)
vboost = TableEntry(bytearray([0x00, 0x02]), TableEntry.uint16_size)
vbat_max_hi = TableEntry(bytearray([0x00, 0x10]), TableEntry.uint16_size)
vbat_max_lo = TableEntry(bytearray([0x00, 0x12]), TableEntry.uint16_size)
ov_mode = TableEntry(bytearray([0x00, 0x1A]), TableEntry.uint8_size)
class ACUHkTable:
temperature1 = TableEntry(bytearray([0x00, 0x1C]), TableEntry.uint16_size)
temperature2 = TableEntry(bytearray([0x00, 0x1D]), TableEntry.uint16_size)
temperature3 = TableEntry(bytearray([0x00, 0x1E]), TableEntry.uint16_size)
# Ground WDT value (remaining seconds until reboot)
wdt_gnd_left = TableEntry(bytearray([0x00, 0x74]), TableEntry.uint32_size)
class CommandId:
PRINT_CHANNEL_STATS = 51
def pack_acu_test_into(
object_id: bytearray, tc_queue: TcQueueT, op_code: str
) -> TcQueueT:
tc_queue.appendleft((QueueCommands.PRINT, "Testing ACU"))
if op_code == "51":
tc_queue.appendleft((QueueCommands.PRINT, "ACU: Print channel stats"))
command = object_id + struct.pack("!I", CommandId.PRINT_CHANNEL_STATS)
command = PusTelecommand(service=8, subservice=128, ssc=30, app_data=command)
tc_queue.appendleft(command.pack_command_tuple())
return
def pack_test_cmds(object_id: ObjectId, tc_queue: TcQueueT):
if ACUTestProcedure.all or ACUTestProcedure.reboot:
tc_queue.appendleft((QueueCommands.PRINT, "ACU: Reboot"))
command = pack_reboot_command(object_id)
command = gs.pack_reboot_command(object_id)
# command = PusTelecommand(service=8, subservice=128, ssc=22, app_data=command)
tc_queue.appendleft(command.pack_command_tuple())
if ACUTestProcedure.all or ACUTestProcedure.read_gnd_wdt:
tc_queue.appendleft(
(QueueCommands.PRINT, "ACU: Reading ground watchdog timer value")
)
command = pack_get_param_command(
object_id,
TableIds.hk,
command = gs.pack_get_param_command(
object_id.as_bytes,
gs.TableIds.hk,
ACUHkTable.wdt_gnd_left.parameter_address,
ACUHkTable.wdt_gnd_left.parameter_size,
)
@@ -86,20 +145,20 @@ def pack_acu_test_into(
tc_queue.appendleft(command.pack_command_tuple())
if ACUTestProcedure.all or ACUTestProcedure.gnd_wdt_reset:
tc_queue.appendleft((QueueCommands.PRINT, "ACU: Testing ground watchdog reset"))
command = pack_gnd_wdt_reset_command(object_id)
command = gs.pack_gnd_wdt_reset_command(object_id)
# command = PusTelecommand(service=8, subservice=128, ssc=21, app_data=command)
tc_queue.appendleft(command.pack_command_tuple())
if ACUTestProcedure.all or ACUTestProcedure.ping:
tc_queue.appendleft((QueueCommands.PRINT, "ACU: Ping Test"))
ping_data = bytearray([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
command = pack_ping_command(object_id, ping_data)
command = gs.pack_ping_command(object_id, ping_data)
# command = PusTelecommand(service=8, subservice=128, ssc=22, app_data=command)
tc_queue.appendleft(command.pack_command_tuple())
if ACUTestProcedure.all or ACUTestProcedure.read_temperature3:
tc_queue.appendleft((QueueCommands.PRINT, "ACU: Reading temperature 3"))
command = pack_get_param_command(
object_id,
TableIds.hk,
command = gs.pack_get_param_command(
object_id.as_bytes,
gs.TableIds.hk,
ACUHkTable.temperature3.parameter_address,
ACUHkTable.temperature3.parameter_size,
)
@@ -107,9 +166,9 @@ def pack_acu_test_into(
tc_queue.appendleft(command.pack_command_tuple())
if ACUTestProcedure.all or ACUTestProcedure.read_vboost:
tc_queue.appendleft((QueueCommands.PRINT, "ACU: Reading vboost value"))
command = pack_get_param_command(
object_id,
TableIds.config,
command = gs.pack_get_param_command(
object_id.as_bytes,
gs.TableIds.config,
ACUConfigTable.vboost.parameter_address,
ACUConfigTable.vboost.parameter_size,
)
@@ -117,9 +176,9 @@ def pack_acu_test_into(
tc_queue.appendleft(command.pack_command_tuple())
if ACUTestProcedure.all or ACUTestProcedure.read_vbat_max_hi:
tc_queue.appendleft((QueueCommands.PRINT, "ACU: Reading vbat_max_hi"))
command = pack_get_param_command(
object_id,
TableIds.config,
command = gs.pack_get_param_command(
object_id.as_bytes,
gs.TableIds.config,
ACUConfigTable.vbat_max_hi.parameter_address,
ACUConfigTable.vbat_max_hi.parameter_size,
)
@@ -127,9 +186,9 @@ def pack_acu_test_into(
tc_queue.appendleft(command.pack_command_tuple())
if ACUTestProcedure.all or ACUTestProcedure.read_vbat_max_lo:
tc_queue.appendleft((QueueCommands.PRINT, "ACU: Reading vbat_max_lo"))
command = pack_get_param_command(
object_id,
TableIds.config,
command = gs.pack_get_param_command(
object_id.as_bytes,
gs.TableIds.config,
ACUConfigTable.vbat_max_lo.parameter_address,
ACUConfigTable.vbat_max_lo.parameter_size,
)
@@ -137,23 +196,20 @@ def pack_acu_test_into(
tc_queue.appendleft(command.pack_command_tuple())
if ACUTestProcedure.all or ACUTestProcedure.read_ov_mode:
tc_queue.appendleft((QueueCommands.PRINT, "ACU: Reading ov_mode"))
command = pack_get_param_command(
object_id,
TableIds.config,
command = gs.pack_get_param_command(
object_id.as_bytes,
gs.TableIds.config,
ACUConfigTable.ov_mode.parameter_address,
ACUConfigTable.ov_mode.parameter_size,
)
# command = PusTelecommand(service=8, subservice=128, ssc=23, app_data=command)
tc_queue.appendleft(command.pack_command_tuple())
tc_queue.appendleft((QueueCommands.PRINT, "P60 Dock: Turning off ACU"))
command = pack_set_param_command(
p60dock_object_id,
P60DockConfigTable.out_en_0.parameter_address,
P60DockConfigTable.out_en_0.parameter_size,
Channel.off,
)
# command = PusTelecommand(service=8, subservice=128, ssc=23, app_data=command)
tc_queue.appendleft(command.pack_command_tuple())
return tc_queue
if ACUTestProcedure.all or ACUTestProcedure.off:
tc_queue.appendleft((QueueCommands.PRINT, "P60 Dock: Turning off ACU"))
command = gs.pack_set_param_command(
ACU_HANDLER_ID,
P60DockConfigTable.out_en_0.parameter_address,
P60DockConfigTable.out_en_0.parameter_size,
gs.Channel.off,
)
tc_queue.appendleft(command.pack_command_tuple())
+42 -10
View File
@@ -1,22 +1,54 @@
import enum
from tmtccmd.config.definitions import QueueCommands
from config.definitions import CustomServiceList
from tmtccmd.config import add_op_code_entry, add_service_op_code_entry
from tmtccmd.tc.pus_3_fsfw_hk import make_sid, generate_one_hk_command
from tmtccmd.config.definitions import QueueCommands, ServiceOpCodeDictT
from tmtccmd.logging import get_console_logger
from tmtccmd.tc.definitions import TcQueueT
from tmtccmd.tc.pus_8_funccmd import generate_action_command
from config.object_ids import GPS_HANDLER_1_ID, GPS_HANDLER_0_ID
LOGGER = get_console_logger()
class GpsOpCodes(enum.Enum):
RESET_GNSS = "5"
class OpCodes:
REQ_OS_HK = ["0", "hk-os"]
RESET_GNSS = ["5", "reset"]
class Info:
REQ_OS_HK = "Request One-Shot HK"
RESET_GNSS = "Reset GNSS using reset pin"
class SetIds:
HK = 0
def add_gps_cmds(cmd_dict: ServiceOpCodeDictT):
op_code_dict = dict()
add_op_code_entry(
op_code_dict=op_code_dict, keys=OpCodes.RESET_GNSS, info=Info.RESET_GNSS
)
add_op_code_entry(
op_code_dict=op_code_dict, keys=OpCodes.REQ_OS_HK, info=Info.REQ_OS_HK
)
add_service_op_code_entry(
srv_op_code_dict=cmd_dict,
op_code_entry=op_code_dict,
name=CustomServiceList.GPS_CTRL.value,
info="GPS/GNSS Controller",
)
def pack_gps_command(object_id: bytes, tc_queue: TcQueueT, op_code: str):
if op_code == GpsOpCodes.RESET_GNSS.value:
if object_id == GPS_HANDLER_0_ID:
tc_queue.appendleft((QueueCommands.PRINT, "Resetting GPS device 0"))
elif object_id == GPS_HANDLER_1_ID:
tc_queue.appendleft((QueueCommands.PRINT, "Resetting GPS device 1"))
cmd = generate_action_command(object_id=object_id, action_id=int(op_code))
if op_code in OpCodes.RESET_GNSS:
# TODO: This needs to be re-implemented
LOGGER.warning("Reset pin handling needs to be re-implemented")
if op_code in OpCodes.REQ_OS_HK:
tc_queue.appendleft((QueueCommands.PRINT, f"GMSS: {Info.REQ_OS_HK}"))
cmd = generate_one_hk_command(
sid=make_sid(object_id=object_id, set_id=SetIds.HK), ssc=0
)
tc_queue.appendleft(cmd.pack_command_tuple())
+10
View File
@@ -0,0 +1,10 @@
import enum
class AdisGyroSetIds(enum.IntEnum):
CORE_HK = 0
CFG_HK = 1
class L3gGyroSetIds(enum.IntEnum):
CORE_HK = 0
+52 -11
View File
@@ -9,7 +9,12 @@ from tmtccmd.config.definitions import QueueCommands
from tmtccmd.tc.packer import TcQueueT
from spacepackets.ecss.tc import PusTelecommand
from tmtccmd.tc.pus_3_fsfw_hk import make_sid, generate_one_hk_command
from tmtccmd.tc.pus_3_fsfw_hk import (
make_sid,
generate_one_diag_command,
generate_one_hk_command,
)
from tmtccmd.tc.pus_200_fsfw_modes import pack_mode_data, Modes
class ImtqSetIds:
@@ -48,7 +53,22 @@ def pack_imtq_test_into(
)
)
if op_code == "0" or op_code == "1":
if op_code == "0":
tc_queue.appendleft((QueueCommands.PRINT, "IMTQ: Set mode off"))
command = pack_mode_data(object_id, Modes.OFF, 0)
command = PusTelecommand(service=200, subservice=1, ssc=9, app_data=command)
tc_queue.appendleft(command.pack_command_tuple())
if op_code == "1":
tc_queue.appendleft((QueueCommands.PRINT, "IMTQ: Set mode on"))
command = pack_mode_data(object_id, Modes.ON, 0)
command = PusTelecommand(service=200, subservice=1, ssc=10, app_data=command)
tc_queue.appendleft(command.pack_command_tuple())
if op_code == "2":
tc_queue.appendleft((QueueCommands.PRINT, "IMTQ: Mode Normal"))
command = pack_mode_data(object_id, Modes.NORMAL, 0)
command = PusTelecommand(service=200, subservice=1, ssc=11, app_data=command)
tc_queue.appendleft(command.pack_command_tuple())
if op_code == "3":
tc_queue.appendleft((QueueCommands.PRINT, "IMTQ: Perform positive x self test"))
command = object_id + ImtqActionIds.perform_positive_x_test
command = PusTelecommand(service=8, subservice=128, ssc=22, app_data=command)
@@ -74,7 +94,7 @@ def pack_imtq_test_into(
command = generate_one_hk_command(sid, 24)
tc_queue.appendleft(command.pack_command_tuple())
if op_code == "0" or op_code == "2":
if op_code == "4":
tc_queue.appendleft((QueueCommands.PRINT, "IMTQ: Perform negative x self test"))
command = object_id + ImtqActionIds.perform_negative_x_test
command = PusTelecommand(service=8, subservice=128, ssc=25, app_data=command)
@@ -100,7 +120,7 @@ def pack_imtq_test_into(
command = generate_one_hk_command(sid, 27)
tc_queue.appendleft(command.pack_command_tuple())
if op_code == "0" or op_code == "3":
if op_code == "5":
tc_queue.appendleft((QueueCommands.PRINT, "IMTQ: Perform positive y self test"))
command = object_id + ImtqActionIds.perform_positive_y_test
command = PusTelecommand(service=8, subservice=128, ssc=28, app_data=command)
@@ -126,7 +146,7 @@ def pack_imtq_test_into(
command = generate_one_hk_command(sid, 30)
tc_queue.appendleft(command.pack_command_tuple())
if op_code == "0" or op_code == "4":
if op_code == "6":
tc_queue.appendleft((QueueCommands.PRINT, "IMTQ: Perform negative y self test"))
command = object_id + ImtqActionIds.perform_negative_y_test
command = PusTelecommand(service=8, subservice=128, ssc=31, app_data=command)
@@ -152,7 +172,7 @@ def pack_imtq_test_into(
command = generate_one_hk_command(sid, 33)
tc_queue.appendleft(command.pack_command_tuple())
if op_code == "0" or op_code == "5":
if op_code == "7":
tc_queue.appendleft((QueueCommands.PRINT, "IMTQ: Perform positive z self test"))
command = object_id + ImtqActionIds.perform_positive_z_test
command = PusTelecommand(service=8, subservice=128, ssc=34, app_data=command)
@@ -178,7 +198,7 @@ def pack_imtq_test_into(
command = generate_one_hk_command(sid, 36)
tc_queue.appendleft(command.pack_command_tuple())
if op_code == "0" or op_code == "6":
if op_code == "8":
tc_queue.appendleft((QueueCommands.PRINT, "IMTQ: Perform negative z self test"))
command = object_id + ImtqActionIds.perform_negative_z_test
command = PusTelecommand(service=8, subservice=128, ssc=35, app_data=command)
@@ -204,28 +224,48 @@ def pack_imtq_test_into(
command = generate_one_hk_command(sid, 37)
tc_queue.appendleft(command.pack_command_tuple())
if op_code == "0" or op_code == "7":
if op_code == "9":
tc_queue.appendleft((QueueCommands.PRINT, "IMTQ: Commanding dipole"))
x_dipole = 0
y_dipole = 0
z_dipole = 0
duration = 0 # ms
command = pack_dipole_command(object_id, x_dipole, y_dipole, z_dipole, duration)
command = PusTelecommand(service=8, subservice=128, ssc=20, app_data=command)
tc_queue.appendleft(command.pack_command_tuple())
if op_code == "0" or op_code == "8":
if op_code == "10":
tc_queue.appendleft((QueueCommands.PRINT, "IMTQ: Get commanded dipole"))
command = object_id + ImtqActionIds.get_commanded_dipole
command = PusTelecommand(service=8, subservice=128, ssc=21, app_data=command)
tc_queue.appendleft(command.pack_command_tuple())
if op_code == "11":
tc_queue.appendleft((QueueCommands.PRINT, "IMTQ: Get engineering hk set"))
command = generate_one_diag_command(
sid=make_sid(object_id=object_id, set_id=ImtqSetIds.ENG_HK_SET), ssc=0
)
tc_queue.appendleft(command.pack_command_tuple())
if op_code == "12":
tc_queue.appendleft((QueueCommands.PRINT, "IMTQ: Get calibrated MTM hk set"))
command = generate_one_diag_command(
sid=make_sid(object_id=object_id, set_id=ImtqSetIds.CAL_MTM_SET), ssc=0
)
tc_queue.appendleft(command.pack_command_tuple())
if op_code == "13":
tc_queue.appendleft((QueueCommands.PRINT, "IMTQ: Get raw MTM hk set"))
command = generate_one_diag_command(
sid=make_sid(object_id=object_id, set_id=ImtqSetIds.RAW_MTM_SET), ssc=0
)
tc_queue.appendleft(command.pack_command_tuple())
return tc_queue
def pack_dipole_command(
object_id: bytearray, x_dipole: int, y_dipole: int, z_dipole: int, duration: int
) -> bytearray:
) -> PusTelecommand:
"""This function packs the command causing the ISIS IMTQ to generate a dipole.
@param object_id The object id of the IMTQ handler.
@param x_dipole The dipole of the x coil in 10^-4*Am^2 (max. 2000)
@@ -242,4 +282,5 @@ def pack_dipole_command(
command.extend(y_dipole.to_bytes(length=2, byteorder="big"))
command.extend(z_dipole.to_bytes(length=2, byteorder="big"))
command.extend(duration.to_bytes(length=2, byteorder="big"))
command = PusTelecommand(service=8, subservice=128, ssc=22, app_data=command)
return command
+9
View File
@@ -0,0 +1,9 @@
import enum
class MgmLis3SetIds(enum.IntEnum):
CORE_HK = 0
class MgmRm3100SetIds(enum.IntEnum):
CORE_HK = 0
+19 -21
View File
@@ -16,9 +16,6 @@ from gomspace.gomspace_common import *
from config.object_ids import P60_DOCK_HANDLER
HK_SET_ID = 0x3
class P60OpCodes:
STACK_3V3_ON = ["stack-3v3-on", "1"]
STACK_3V3_OFF = ["stack-3v3-off", "2"]
@@ -90,11 +87,12 @@ class P60DockHkTable:
wdt_gnd_left = TableEntry(bytearray([0x00, 0xA8]), TableEntry.uint32_size)
def pack_p60dock_cmds(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
def pack_p60dock_cmds(object_id: ObjectId, tc_queue: TcQueueT, op_code: str):
objb = object_id.as_bytes
if op_code in P60OpCodes.STACK_3V3_ON:
tc_queue.appendleft((QueueCommands.PRINT, Info.STACK_3V3_ON))
command = pack_set_param_command(
object_id,
objb,
P60DockConfigTable.out_en_9.parameter_address,
P60DockConfigTable.out_en_9.parameter_size,
Channel.on,
@@ -103,7 +101,7 @@ def pack_p60dock_cmds(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
if op_code in P60OpCodes.STACK_3V3_OFF:
tc_queue.appendleft((QueueCommands.PRINT, Info.STACK_3V3_OFF))
command = pack_set_param_command(
object_id,
objb,
P60DockConfigTable.out_en_9.parameter_address,
P60DockConfigTable.out_en_9.parameter_size,
Channel.off,
@@ -112,7 +110,7 @@ def pack_p60dock_cmds(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
if op_code in P60OpCodes.STACK_5V_ON:
tc_queue.appendleft((QueueCommands.PRINT, Info.STACK_5V_ON))
command = pack_set_param_command(
object_id,
objb,
P60DockConfigTable.out_en_10.parameter_address,
P60DockConfigTable.out_en_10.parameter_size,
Channel.on,
@@ -121,7 +119,7 @@ def pack_p60dock_cmds(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
if op_code in P60OpCodes.STACK_5V_OFF:
tc_queue.appendleft((QueueCommands.PRINT, Info.STACK_5V_OFF))
command = pack_set_param_command(
object_id,
objb,
P60DockConfigTable.out_en_10.parameter_address,
P60DockConfigTable.out_en_10.parameter_size,
Channel.off,
@@ -146,13 +144,13 @@ def pack_p60dock_cmds(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
(QueueCommands.PRINT, "P60 Dock: Print Switches, Voltages, Currents")
)
command = generate_action_command(
object_id=object_id, action_id=GomspaceDeviceActionIds.PRINT_SWITCH_V_I
object_id=objb, action_id=GomspaceDeviceActionIds.PRINT_SWITCH_V_I
)
tc_queue.appendleft(command.pack_command_tuple())
if op_code in GomspaceOpCodes.PRINT_LATCHUPS:
tc_queue.appendleft((QueueCommands.PRINT, "P60 Dock: Print Latchups"))
command = generate_action_command(
object_id=object_id, action_id=GomspaceDeviceActionIds.PRINT_LATCHUPS
object_id=objb, action_id=GomspaceDeviceActionIds.PRINT_LATCHUPS
)
tc_queue.appendleft(command.pack_command_tuple())
if P60DockTestProcedure.all or P60DockTestProcedure.reboot:
@@ -165,7 +163,7 @@ def pack_p60dock_cmds(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
(QueueCommands.PRINT, "P60 Dock: Reading ground watchdog timer value")
)
command = pack_get_param_command(
object_id,
objb,
TableIds.hk,
P60DockHkTable.wdt_gnd_left.parameter_address,
P60DockHkTable.wdt_gnd_left.parameter_size,
@@ -191,7 +189,7 @@ def pack_p60dock_cmds(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
)
parameter = 0 # set channel off
command = pack_set_param_command(
object_id,
objb,
P60DockConfigTable.out_en_3.parameter_address,
P60DockConfigTable.out_en_3.parameter_size,
parameter,
@@ -203,7 +201,7 @@ def pack_p60dock_cmds(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
(QueueCommands.PRINT, "P60 Dock: Testing temperature reading")
)
command = pack_get_param_command(
object_id,
objb,
TableIds.hk,
P60DockHkTable.temperature1.parameter_address,
P60DockHkTable.temperature1.parameter_size,
@@ -215,7 +213,7 @@ def pack_p60dock_cmds(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
(QueueCommands.PRINT, "P60 Dock: Testing Output Channel 3 state (PDU2)")
)
command = pack_get_param_command(
object_id,
objb,
TableIds.config,
P60DockConfigTable.out_en_3.parameter_address,
P60DockConfigTable.out_en_3.parameter_size,
@@ -230,7 +228,7 @@ def pack_p60dock_cmds(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
)
)
command = pack_get_param_command(
object_id,
objb,
TableIds.config,
P60DockConfigTable.cur_lu_lim_0.parameter_address,
P60DockConfigTable.cur_lu_lim_0.parameter_size,
@@ -243,7 +241,7 @@ def pack_p60dock_cmds(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
)
parameter = 1 # set channel on
command = pack_set_param_command(
object_id,
objb,
P60DockConfigTable.out_en_3.parameter_address,
P60DockConfigTable.out_en_3.parameter_size,
parameter,
@@ -256,7 +254,7 @@ def pack_p60dock_cmds(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
)
table_id_invalid = 5
command = pack_get_param_command(
object_id,
objb,
table_id_invalid,
P60DockHkTable.temperature1.parameter_address,
P60DockHkTable.temperature1.parameter_size,
@@ -272,7 +270,7 @@ def pack_p60dock_cmds(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
)
invalid_address = bytearray([0x01, 0xF4])
command = pack_get_param_command(
object_id,
objb,
TableIds.hk,
invalid_address,
P60DockHkTable.temperature1.parameter_size,
@@ -289,7 +287,7 @@ def pack_p60dock_cmds(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
parameter_size = 2
parameter = 1
command = pack_set_param_command(
object_id, invalid_address, parameter_size, parameter
objb, invalid_address, parameter_size, parameter
)
# command = PusTelecommand(service=8, subservice=128, ssc=30, app_data=command)
tc_queue.appendleft(command.pack_command_tuple())
@@ -302,7 +300,7 @@ def pack_p60dock_cmds(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
)
invalid_size = 5
command = pack_get_param_command(
object_id,
objb,
TableIds.hk,
P60DockHkTable.temperature1.parameter_address,
invalid_size,
@@ -317,7 +315,7 @@ def pack_p60dock_cmds(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
)
parameter = 1
command = pack_set_param_command(
object_id,
objb,
P60DockConfigTable.out_en_3.parameter_address,
invalid_size,
parameter,
+297
View File
@@ -0,0 +1,297 @@
from config.definitions import CustomServiceList
from tmtccmd.config import (
ServiceOpCodeDictT,
add_op_code_entry,
add_service_op_code_entry,
OpCodeDictKeys,
)
from pus_tc.devs.p60dock import P60OpCodes, GomspaceOpCodes, Info
from pus_tc.devs.pdu1 import Pdu1OpCodes
from pus_tc.devs.pdu2 import Pdu2OpCodes
from pus_tc.devs.acu import add_acu_cmds
from gomspace.gomspace_common import Info as GsInfo
def add_p60_cmds(cmd_dict: ServiceOpCodeDictT):
op_code_dict = dict()
add_op_code_entry(
op_code_dict=op_code_dict,
keys=P60OpCodes.STACK_3V3_ON,
info=Info.STACK_3V3_ON,
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=P60OpCodes.STACK_3V3_OFF,
info=Info.STACK_3V3_OFF,
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=P60OpCodes.STACK_5V_ON,
info=Info.STACK_5V_ON,
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=P60OpCodes.STACK_5V_OFF,
info=Info.STACK_5V_OFF,
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=GomspaceOpCodes.REQUEST_CORE_HK_ONCE,
info=GsInfo.REQUEST_CORE_HK_ONCE,
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=GomspaceOpCodes.REQUEST_AUX_HK_ONCE,
info=GsInfo.REQUEST_AUX_HK_ONCE,
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=GomspaceOpCodes.PRINT_SWITCH_V_I,
info="P60 Dock: Print Switches, Voltages, Currents",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=GomspaceOpCodes.PRINT_LATCHUPS,
info="P60 Dock: Print Latchups",
)
add_op_code_entry(op_code_dict=op_code_dict, keys=P60OpCodes.TEST, info="P60 Tests")
add_service_op_code_entry(
srv_op_code_dict=cmd_dict,
name=CustomServiceList.P60DOCK.value,
info="P60 Device",
op_code_entry=op_code_dict,
)
def add_pdu1_cmds(cmd_dict: ServiceOpCodeDictT):
op_code_dict = dict()
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu1OpCodes.TCS_BOARD_OFF.value,
info="PDU1: Turn TCS board off",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu1OpCodes.STAR_TRACKER_ON.value,
info="PDU1: Turn star tracker on",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu1OpCodes.STAR_TRACKER_OFF.value,
info="PDU1: Turn star tracker off",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu1OpCodes.SUS_NOMINAL_ON.value,
info="PDU1: Turn SUS nominal on",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu1OpCodes.SUS_NOMINAL_OFF.value,
info="PDU1: Turn SUS nominal off",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu1OpCodes.ACS_A_SIDE_ON.value,
info="PDU1: Turn ACS A side on",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu1OpCodes.ACS_A_SIDE_OFF.value,
info="PDU1: Turn ACS A side off",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu1OpCodes.SYRLINKS_ON.value,
info="PDU1: Turn Syrlinks on",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu1OpCodes.SYRLINKS_OFF.value,
info="PDU1: Turn Syrlinks off",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu1OpCodes.MGT_ON.value,
info="PDU1: Turn MGT on",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu1OpCodes.MGT_OFF.value,
info="PDU1: Turn MGT off",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu1OpCodes.PLOC_ON.value,
info="PDU1: Turn PLOC on",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu1OpCodes.PLOC_OFF.value,
info="PDU1: Turn PLOC off",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu1OpCodes.SCEX_ON.value,
info="PDU1: Turn Solar Cell Experiment on",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu1OpCodes.SCEX_OFF.value,
info="PDU1: Turn Solar Cell Experiment off",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=GomspaceOpCodes.REQUEST_CORE_HK_ONCE,
info=GsInfo.REQUEST_CORE_HK_ONCE,
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=GomspaceOpCodes.REQUEST_AUX_HK_ONCE,
info=GsInfo.REQUEST_AUX_HK_ONCE,
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=GomspaceOpCodes.PRINT_SWITCH_V_I,
info="PDU1: Print Switches, Voltages, Currents",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu1OpCodes.TCS_BOARD_ON.value,
info="PDU1: Turn TCS board on",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=GomspaceOpCodes.PRINT_LATCHUPS,
info="PDU1: Print Latchups",
)
add_op_code_entry(
op_code_dict=op_code_dict, keys=Pdu1OpCodes.TESTS.value, info="PDU1 Tests"
)
add_service_op_code_entry(
srv_op_code_dict=cmd_dict,
name=CustomServiceList.PDU1.value,
info="PDU1 Device",
op_code_entry=op_code_dict,
)
def add_pdu2_cmds(cmd_dict: ServiceOpCodeDictT):
op_code_dict = dict()
add_op_code_entry(op_code_dict=op_code_dict, keys="0", info="PDU2 Tests")
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu2OpCodes.ACS_SIDE_B_ON.value,
info="PDU2: Turn ACS Side B on",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu2OpCodes.ACS_SIDE_B_OFF.value,
info="PDU2: Turn ACS Side B off",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu2OpCodes.SUS_REDUNDANT_ON.value,
info="PDU2: Turn SUS redundant on",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu2OpCodes.SUS_REDUNDANT_OFF.value,
info="PDU2: Turn SUS redundant off",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu2OpCodes.RW_ON.value,
info="PDU2: Turn reaction wheels on",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu2OpCodes.RW_OFF.value,
info="PDU2: Turn reaction wheels off",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu2OpCodes.PL_PCDU_VBAT_NOM_ON.value,
info="PDU2: PL PCDU Switch Channel Nominal (1) on",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu2OpCodes.PL_PCDU_VBAT_NOM_OFF.value,
info="PDU2: PL PCDU Switch Channel Nominal (1) off",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu2OpCodes.PL_PCDU_VBAT_RED_ON.value,
info="PDU2: PL PCDU Switch Channel Redundant (1) on",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu2OpCodes.PL_PCDU_VBAT_RED_OFF.value,
info="PDU2: PL PCDU Switch Channel Redundant (1) off",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu2OpCodes.TCS_HEATER_IN_ON.value,
info="PDU2: Switch TCS Heater Input on",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu2OpCodes.TCS_HEATER_IN_OFF.value,
info="PDU2: Switch TCS Heater Input off",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu2OpCodes.SOLAR_ARRAY_DEPL_ON.value,
info="PDU2: Switch Solar Array Deployment On",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu2OpCodes.SOLAR_ARRAY_DEPL_OFF.value,
info="PDU2: Switch Solar Array Deployment Off",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu2OpCodes.PL_CAMERA_ON.value,
info="PDU2: Turn payload camera on",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu2OpCodes.PL_CAMERA_OFF.value,
info="PDU2: Turn payload camera off",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=GomspaceOpCodes.REQUEST_CORE_HK_ONCE,
info=GsInfo.REQUEST_CORE_HK_ONCE,
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=GomspaceOpCodes.REQUEST_AUX_HK_ONCE,
info=GsInfo.REQUEST_AUX_HK_ONCE,
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=GomspaceOpCodes.PRINT_SWITCH_V_I,
info="PDU2: Print Switches, Voltages, Currents",
options={OpCodeDictKeys.TIMEOUT: 2.0},
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=GomspaceOpCodes.PRINT_LATCHUPS,
info="PDU2: Print Latchups",
)
add_service_op_code_entry(
srv_op_code_dict=cmd_dict,
name="pdu2",
info="PDU2 Device",
op_code_entry=op_code_dict,
)
def add_pcdu_cmds(cmd_dict: ServiceOpCodeDictT):
add_p60_cmds(cmd_dict)
add_pdu1_cmds(cmd_dict)
add_pdu2_cmds(cmd_dict)
add_acu_cmds(cmd_dict)
+26 -26
View File
@@ -54,13 +54,13 @@ class PDU1TestProcedure:
turn_channel_3_off = False
def pack_pdu1_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
def pack_pdu1_commands(object_id: ObjectId, tc_queue: TcQueueT, op_code: str):
tc_queue.appendleft((QueueCommands.PRINT, "Commanding PDU1"))
objb = object_id.as_bytes
if op_code == Pdu1OpCodes.TCS_BOARD_ON.value:
tc_queue.appendleft((QueueCommands.PRINT, "PDU1: Turn TCS board on"))
command = pack_set_param_command(
object_id,
objb,
PDUConfigTable.out_en_0.parameter_address,
PDUConfigTable.out_en_0.parameter_size,
Channel.on,
@@ -69,7 +69,7 @@ def pack_pdu1_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
if op_code == Pdu1OpCodes.TCS_BOARD_OFF.value:
tc_queue.appendleft((QueueCommands.PRINT, "PDU1: Turn TCS board off"))
command = pack_set_param_command(
object_id,
objb,
PDUConfigTable.out_en_0.parameter_address,
PDUConfigTable.out_en_0.parameter_size,
Channel.off,
@@ -78,7 +78,7 @@ def pack_pdu1_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
if op_code == Pdu1OpCodes.STAR_TRACKER_ON.value:
tc_queue.appendleft((QueueCommands.PRINT, "PDU1: Turn star tracker on"))
command = pack_set_param_command(
object_id,
objb,
PDUConfigTable.out_en_2.parameter_address,
PDUConfigTable.out_en_2.parameter_size,
Channel.on,
@@ -87,7 +87,7 @@ def pack_pdu1_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
if op_code == Pdu1OpCodes.STAR_TRACKER_OFF.value:
tc_queue.appendleft((QueueCommands.PRINT, "PDU1: Turn star tracker off"))
command = pack_set_param_command(
object_id,
objb,
PDUConfigTable.out_en_2.parameter_address,
PDUConfigTable.out_en_2.parameter_size,
Channel.off,
@@ -96,7 +96,7 @@ def pack_pdu1_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
if op_code == Pdu1OpCodes.SUS_NOMINAL_ON.value:
tc_queue.appendleft((QueueCommands.PRINT, "PDU1: Turn SUS nominal on"))
command = pack_set_param_command(
object_id,
objb,
PDUConfigTable.out_en_4.parameter_address,
PDUConfigTable.out_en_4.parameter_size,
Channel.on,
@@ -105,7 +105,7 @@ def pack_pdu1_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
if op_code == Pdu1OpCodes.SUS_NOMINAL_OFF.value:
tc_queue.appendleft((QueueCommands.PRINT, "PDU1: Turn SUS nominal off"))
command = pack_set_param_command(
object_id,
objb,
PDUConfigTable.out_en_4.parameter_address,
PDUConfigTable.out_en_4.parameter_size,
Channel.off,
@@ -114,7 +114,7 @@ def pack_pdu1_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
if op_code == Pdu1OpCodes.ACS_A_SIDE_ON.value:
tc_queue.appendleft((QueueCommands.PRINT, "PDU1: Turn ACS Side A on"))
command = pack_set_param_command(
object_id,
objb,
PDUConfigTable.out_en_7.parameter_address,
PDUConfigTable.out_en_7.parameter_size,
Channel.on,
@@ -123,7 +123,7 @@ def pack_pdu1_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
if op_code == Pdu1OpCodes.ACS_A_SIDE_OFF.value:
tc_queue.appendleft((QueueCommands.PRINT, "PDU1: Turn ACS Side A off"))
command = pack_set_param_command(
object_id,
objb,
PDUConfigTable.out_en_7.parameter_address,
PDUConfigTable.out_en_7.parameter_size,
Channel.off,
@@ -132,7 +132,7 @@ def pack_pdu1_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
if op_code == Pdu1OpCodes.SUS_NOMINAL_OFF.value:
tc_queue.appendleft((QueueCommands.PRINT, "PDU1: Turn SUS nominal off"))
command = pack_set_param_command(
object_id,
objb,
PDUConfigTable.out_en_4.parameter_address,
PDUConfigTable.out_en_4.parameter_size,
Channel.off,
@@ -143,7 +143,7 @@ def pack_pdu1_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
(QueueCommands.PRINT, "PDU1: Turn Solar Cell Experiment on")
)
command = pack_set_param_command(
object_id,
objb,
PDUConfigTable.out_en_5.parameter_address,
PDUConfigTable.out_en_5.parameter_size,
Channel.on,
@@ -154,7 +154,7 @@ def pack_pdu1_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
(QueueCommands.PRINT, "PDU1: Turn Solar Cell Experiment off")
)
command = pack_set_param_command(
object_id,
objb,
PDUConfigTable.out_en_5.parameter_address,
PDUConfigTable.out_en_5.parameter_size,
Channel.off,
@@ -163,7 +163,7 @@ def pack_pdu1_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
if op_code == Pdu1OpCodes.SYRLINKS_ON.value:
tc_queue.appendleft((QueueCommands.PRINT, "PDU1: Turn Syrlinks on"))
command = pack_set_param_command(
object_id,
objb,
PDUConfigTable.out_en_1.parameter_address,
PDUConfigTable.out_en_1.parameter_size,
Channel.on,
@@ -172,7 +172,7 @@ def pack_pdu1_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
if op_code == Pdu1OpCodes.SYRLINKS_OFF.value:
tc_queue.appendleft((QueueCommands.PRINT, "PDU1: Turn Syrlinks off"))
command = pack_set_param_command(
object_id,
objb,
PDUConfigTable.out_en_1.parameter_address,
PDUConfigTable.out_en_1.parameter_size,
Channel.off,
@@ -181,7 +181,7 @@ def pack_pdu1_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
if op_code == Pdu1OpCodes.MGT_ON.value:
tc_queue.appendleft((QueueCommands.PRINT, "PDU1: Turn MGT on"))
command = pack_set_param_command(
object_id,
objb,
PDUConfigTable.out_en_3.parameter_address,
PDUConfigTable.out_en_3.parameter_size,
Channel.on,
@@ -190,7 +190,7 @@ def pack_pdu1_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
if op_code == Pdu1OpCodes.MGT_OFF.value:
tc_queue.appendleft((QueueCommands.PRINT, "PDU1: Turn MGT off"))
command = pack_set_param_command(
object_id,
objb,
PDUConfigTable.out_en_3.parameter_address,
PDUConfigTable.out_en_3.parameter_size,
Channel.off,
@@ -199,7 +199,7 @@ def pack_pdu1_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
if op_code == Pdu1OpCodes.PLOC_ON.value:
tc_queue.appendleft((QueueCommands.PRINT, "PDU1: Turn PLOC on"))
command = pack_set_param_command(
object_id,
objb,
PDUConfigTable.out_en_6.parameter_address,
PDUConfigTable.out_en_6.parameter_size,
Channel.on,
@@ -208,7 +208,7 @@ def pack_pdu1_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
if op_code == Pdu1OpCodes.PLOC_OFF.value:
tc_queue.appendleft((QueueCommands.PRINT, "PDU1: Turn PLOC off"))
command = pack_set_param_command(
object_id,
objb,
PDUConfigTable.out_en_6.parameter_address,
PDUConfigTable.out_en_6.parameter_size,
Channel.off,
@@ -229,13 +229,13 @@ def pack_pdu1_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
(QueueCommands.PRINT, "PDU1: Print Switches, Voltages, Currents")
)
command = generate_action_command(
object_id=object_id, action_id=GomspaceDeviceActionIds.PRINT_SWITCH_V_I
object_id=objb, action_id=GomspaceDeviceActionIds.PRINT_SWITCH_V_I
)
tc_queue.appendleft(command.pack_command_tuple())
if op_code in GomspaceOpCodes.PRINT_LATCHUPS:
tc_queue.appendleft((QueueCommands.PRINT, "PDU1: Print Latchups"))
command = generate_action_command(
object_id=object_id, action_id=GomspaceDeviceActionIds.PRINT_LATCHUPS
object_id=objb, action_id=GomspaceDeviceActionIds.PRINT_LATCHUPS
)
tc_queue.appendleft(command.pack_command_tuple())
if PDU1TestProcedure.all or PDU1TestProcedure.ping:
@@ -246,7 +246,7 @@ def pack_pdu1_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
if PDU1TestProcedure.all or PDU1TestProcedure.read_temperature:
tc_queue.appendleft((QueueCommands.PRINT, "PDU1: Testing temperature reading"))
command = pack_get_param_command(
object_id,
objb,
TableIds.hk,
PDUHkTable.temperature.parameter_address,
PDUHkTable.temperature.parameter_size,
@@ -257,7 +257,7 @@ def pack_pdu1_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
(QueueCommands.PRINT, "PDU1: Turn channel 2 on (Star Tracker)")
)
command = pack_set_param_command(
object_id,
objb,
PDUConfigTable.out_en_2.parameter_address,
PDUConfigTable.out_en_2.parameter_size,
Channel.on,
@@ -268,7 +268,7 @@ def pack_pdu1_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
(QueueCommands.PRINT, "PDU1: Turn channel 2 off (Star Tracker)")
)
command = pack_set_param_command(
object_id,
objb,
PDUConfigTable.out_en_2.parameter_address,
PDUConfigTable.out_en_2.parameter_size,
Channel.off,
@@ -277,7 +277,7 @@ def pack_pdu1_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
if PDU1TestProcedure.all or PDU1TestProcedure.turn_channel_3_on:
tc_queue.appendleft((QueueCommands.PRINT, "PDU1: Turn channel 3 on (MTQ)"))
command = pack_set_param_command(
object_id,
objb,
PDUConfigTable.out_en_3.parameter_address,
PDUConfigTable.out_en_3.parameter_size,
Channel.on,
@@ -286,7 +286,7 @@ def pack_pdu1_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
if PDU1TestProcedure.all or PDU1TestProcedure.turn_channel_3_off:
tc_queue.appendleft((QueueCommands.PRINT, "PDU1: Turn channel 3 off (MTQ)"))
command = pack_set_param_command(
object_id,
objb,
PDUConfigTable.out_en_3.parameter_address,
PDUConfigTable.out_en_3.parameter_size,
Channel.off,
+27 -27
View File
@@ -66,13 +66,13 @@ class PDU2TestProcedure:
request_hk_table = False
def pack_pdu2_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
def pack_pdu2_commands(object_id: ObjectId, tc_queue: TcQueueT, op_code: str):
tc_queue.appendleft((QueueCommands.PRINT, "Testing PDU2"))
objb = object_id.as_bytes
if op_code == Pdu2OpCodes.ACS_SIDE_B_ON.value:
tc_queue.appendleft((QueueCommands.PRINT, "PDU2: Turn ACS Side B on"))
command = pack_set_param_command(
object_id,
objb,
PDUConfigTable.out_en_7.parameter_address,
PDUConfigTable.out_en_7.parameter_size,
Channel.on,
@@ -82,7 +82,7 @@ def pack_pdu2_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
if op_code == Pdu2OpCodes.ACS_SIDE_B_OFF.value:
tc_queue.appendleft((QueueCommands.PRINT, "PDU2: Turn ACS Side B off"))
command = pack_set_param_command(
object_id,
objb,
PDUConfigTable.out_en_7.parameter_address,
PDUConfigTable.out_en_7.parameter_size,
Channel.off,
@@ -92,7 +92,7 @@ def pack_pdu2_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
if op_code == Pdu2OpCodes.Q7S_OFF.value:
tc_queue.appendleft((QueueCommands.PRINT, "Turning off Q7S OBC"))
command = pack_set_param_command(
object_id,
objb,
PDUConfigTable.out_en_0.parameter_address,
PDUConfigTable.out_en_0.parameter_size,
Channel.off,
@@ -101,7 +101,7 @@ def pack_pdu2_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
if op_code == Pdu2OpCodes.SUS_REDUNDANT_ON.value:
tc_queue.appendleft((QueueCommands.PRINT, "PDU2: Turn SUS redundant on"))
command = pack_set_param_command(
object_id,
objb,
PDUConfigTable.out_en_4.parameter_address,
PDUConfigTable.out_en_4.parameter_size,
Channel.on,
@@ -110,7 +110,7 @@ def pack_pdu2_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
if op_code == Pdu2OpCodes.SUS_REDUNDANT_OFF.value:
tc_queue.appendleft((QueueCommands.PRINT, "PDU2: Turn SUS redundant off"))
command = pack_set_param_command(
object_id,
objb,
PDUConfigTable.out_en_4.parameter_address,
PDUConfigTable.out_en_4.parameter_size,
Channel.off,
@@ -119,7 +119,7 @@ def pack_pdu2_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
if op_code == Pdu2OpCodes.RW_ON.value:
tc_queue.appendleft((QueueCommands.PRINT, "PDU2: Turn reaction wheels on"))
command = pack_set_param_command(
object_id,
objb,
PDUConfigTable.out_en_2.parameter_address,
PDUConfigTable.out_en_2.parameter_size,
Channel.on,
@@ -128,7 +128,7 @@ def pack_pdu2_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
if op_code == Pdu2OpCodes.RW_OFF.value:
tc_queue.appendleft((QueueCommands.PRINT, "PDU2: Turn reaction wheels off"))
command = pack_set_param_command(
object_id,
objb,
PDUConfigTable.out_en_2.parameter_address,
PDUConfigTable.out_en_2.parameter_size,
Channel.off,
@@ -139,7 +139,7 @@ def pack_pdu2_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
(QueueCommands.PRINT, "PDU2: Turn PDU2 PL PCDU Channel 1 on")
)
command = pack_set_param_command(
object_id,
objb,
PDUConfigTable.out_en_1.parameter_address,
PDUConfigTable.out_en_1.parameter_size,
Channel.on,
@@ -150,7 +150,7 @@ def pack_pdu2_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
(QueueCommands.PRINT, "PDU2: Turn PDU2 PL PCDU Channel 1 off")
)
command = pack_set_param_command(
object_id,
objb,
PDUConfigTable.out_en_1.parameter_address,
PDUConfigTable.out_en_1.parameter_size,
Channel.off,
@@ -161,7 +161,7 @@ def pack_pdu2_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
(QueueCommands.PRINT, "PDU2: Turn PDU2 PL PCDU Channel 6 on")
)
command = pack_set_param_command(
object_id,
objb,
PDUConfigTable.out_en_6.parameter_address,
PDUConfigTable.out_en_6.parameter_size,
Channel.off,
@@ -172,7 +172,7 @@ def pack_pdu2_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
(QueueCommands.PRINT, "PDU2: Turn PDU2 PL PCDU Channel 6 off")
)
command = pack_set_param_command(
object_id,
objb,
PDUConfigTable.out_en_6.parameter_address,
PDUConfigTable.out_en_6.parameter_size,
Channel.off,
@@ -181,7 +181,7 @@ def pack_pdu2_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
if op_code == Pdu2OpCodes.TCS_HEATER_IN_ON.value:
tc_queue.appendleft((QueueCommands.PRINT, "PDU2: Turn TCS Heater Input on"))
command = pack_set_param_command(
object_id,
objb,
PDUConfigTable.out_en_3.parameter_address,
PDUConfigTable.out_en_3.parameter_size,
Channel.on,
@@ -190,7 +190,7 @@ def pack_pdu2_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
if op_code == Pdu2OpCodes.TCS_HEATER_IN_OFF.value:
tc_queue.appendleft((QueueCommands.PRINT, "PDU2: Turn TCS Heater Input off"))
command = pack_set_param_command(
object_id,
objb,
PDUConfigTable.out_en_3.parameter_address,
PDUConfigTable.out_en_3.parameter_size,
Channel.off,
@@ -201,7 +201,7 @@ def pack_pdu2_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
(QueueCommands.PRINT, "PDU2: Turn Solar Array Deployment On")
)
command = pack_set_param_command(
object_id,
objb,
PDUConfigTable.out_en_5.parameter_address,
PDUConfigTable.out_en_5.parameter_size,
Channel.on,
@@ -212,7 +212,7 @@ def pack_pdu2_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
(QueueCommands.PRINT, "PDU2: Turn Solar Array Deployment Off")
)
command = pack_set_param_command(
object_id,
objb,
PDUConfigTable.out_en_5.parameter_address,
PDUConfigTable.out_en_5.parameter_size,
Channel.off,
@@ -221,7 +221,7 @@ def pack_pdu2_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
if op_code == Pdu2OpCodes.PL_CAMERA_ON.value:
tc_queue.appendleft((QueueCommands.PRINT, "PDU2: Turn payload camera on"))
command = pack_set_param_command(
object_id,
objb,
PDUConfigTable.out_en_8.parameter_address,
PDUConfigTable.out_en_8.parameter_size,
Channel.on,
@@ -230,7 +230,7 @@ def pack_pdu2_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
if op_code == Pdu2OpCodes.PL_CAMERA_OFF.value:
tc_queue.appendleft((QueueCommands.PRINT, "PDU2: Turn payload camera off"))
command = pack_set_param_command(
object_id,
objb,
PDUConfigTable.out_en_8.parameter_address,
PDUConfigTable.out_en_8.parameter_size,
Channel.off,
@@ -251,13 +251,13 @@ def pack_pdu2_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
(QueueCommands.PRINT, "PDU2: Print Switches, Currents, Voltahes")
)
command = generate_action_command(
object_id=object_id, action_id=GomspaceDeviceActionIds.PRINT_SWITCH_V_I
object_id=objb, action_id=GomspaceDeviceActionIds.PRINT_SWITCH_V_I
)
tc_queue.appendleft(command.pack_command_tuple())
if op_code in GomspaceOpCodes.PRINT_LATCHUPS:
tc_queue.appendleft((QueueCommands.PRINT, "PDU2: Print Latchups"))
command = generate_action_command(
object_id=object_id, action_id=GomspaceDeviceActionIds.PRINT_LATCHUPS
object_id=objb, action_id=GomspaceDeviceActionIds.PRINT_LATCHUPS
)
tc_queue.appendleft(command.pack_command_tuple())
if PDU2TestProcedure.all or PDU2TestProcedure.reboot:
@@ -269,7 +269,7 @@ def pack_pdu2_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
(QueueCommands.PRINT, "PDU2: Reading ground watchdog timer value")
)
command = pack_get_param_command(
object_id,
objb,
TableIds.hk,
PDUHkTable.wdt_gnd_left.parameter_address,
PDUHkTable.wdt_gnd_left.parameter_size,
@@ -294,7 +294,7 @@ def pack_pdu2_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
)
)
command = pack_set_param_command(
object_id,
objb,
PDUConfigTable.out_en_2.parameter_address,
PDUConfigTable.out_en_2.parameter_size,
Channel.on,
@@ -303,7 +303,7 @@ def pack_pdu2_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
if PDU2TestProcedure.all or PDU2TestProcedure.read_temperature:
tc_queue.appendleft((QueueCommands.PRINT, "PDU2: Testing temperature reading"))
command = pack_get_param_command(
object_id,
objb,
TableIds.hk,
PDUHkTable.temperature.parameter_address,
PDUHkTable.temperature.parameter_size,
@@ -314,7 +314,7 @@ def pack_pdu2_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
(QueueCommands.PRINT, "PDU2: Reading output channel 2 state (TCS Heater)")
)
command = pack_get_param_command(
object_id,
objb,
TableIds.config,
PDUConfigTable.out_en_2.parameter_address,
PDUConfigTable.out_en_2.parameter_size,
@@ -328,7 +328,7 @@ def pack_pdu2_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
)
)
command = pack_get_param_command(
object_id,
objb,
TableIds.config,
PDUConfigTable.cur_lu_lim_0.parameter_address,
PDUConfigTable.cur_lu_lim_0.parameter_size,
@@ -339,7 +339,7 @@ def pack_pdu2_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
(QueueCommands.PRINT, "PDU2: Testing setting output channel 2 off")
)
command = pack_set_param_command(
object_id,
objb,
PDUConfigTable.out_en_2.parameter_address,
PDUConfigTable.out_en_2.parameter_size,
Channel.off,
+15 -9
View File
@@ -98,6 +98,7 @@ class SupvActionIds:
REQUEST_ADC_REPORT = 57
RESET_PL = 58
ENABLE_NVMS = 59
CONTINUE_UPDATE = 60
class SupvHkIds:
@@ -125,7 +126,7 @@ def pack_ploc_supv_commands(
command = PusTelecommand(service=200, subservice=1, ssc=10, app_data=command)
tc_queue.appendleft(command.pack_command_tuple())
if op_code == "2":
tc_queue.appendleft((QueueCommands.PRINT, "Star tracker: Mode Normal"))
tc_queue.appendleft((QueueCommands.PRINT, "PLOC Supervisor: Mode Normal"))
command = pack_mode_data(object_id, Modes.NORMAL, 0)
command = PusTelecommand(service=200, subservice=1, ssc=11, app_data=command)
tc_queue.appendleft(command.pack_command_tuple())
@@ -277,18 +278,14 @@ def pack_ploc_supv_commands(
tc_queue.appendleft(
(QueueCommands.PRINT, "PLOC Supervisor: Restart supervisor")
)
command = object_id + struct.pack(
"!I", SupvActionIds.RESTART_SUPERVISOR
)
command = object_id + struct.pack("!I", SupvActionIds.RESTART_SUPERVISOR)
command = PusTelecommand(service=8, subservice=128, ssc=52, app_data=command)
tc_queue.appendleft(command.pack_command_tuple())
elif op_code == "38":
tc_queue.appendleft(
(QueueCommands.PRINT, "PLOC Supervisor: Factory reset clear all")
)
command = object_id + struct.pack(
"!I", SupvActionIds.FACTORY_RESET_CLEAR_ALL
)
command = object_id + struct.pack("!I", SupvActionIds.FACTORY_RESET_CLEAR_ALL)
command = PusTelecommand(service=8, subservice=128, ssc=53, app_data=command)
tc_queue.appendleft(command.pack_command_tuple())
elif op_code == "39":
@@ -393,10 +390,19 @@ def pack_ploc_supv_commands(
tc_queue.appendleft((QueueCommands.PRINT, "PLOC Supervisor: Enable NVMs"))
nvm01 = int(input("Enable (1) or disable(0) NVM 0 and 1: "))
nvm3 = int(input("Enable (1) or disable(0) NVM 3: "))
command = object_id + struct.pack('!I', SupvActionIds.ENABLE_NVMS) + struct.pack('B', nvm01) + \
struct.pack('B', nvm3)
command = (
object_id
+ struct.pack("!I", SupvActionIds.ENABLE_NVMS)
+ struct.pack("B", nvm01)
+ struct.pack("B", nvm3)
)
command = PusTelecommand(service=8, subservice=128, ssc=72, app_data=command)
tc_queue.appendleft(command.pack_command_tuple())
elif op_code == "58":
tc_queue.appendleft((QueueCommands.PRINT, "PLOC Supervisor: Continue update"))
command = object_id + struct.pack("!I", SupvActionIds.CONTINUE_UPDATE)
command = PusTelecommand(service=8, subservice=128, ssc=73, app_data=command)
tc_queue.appendleft(command.pack_command_tuple())
return tc_queue
+291 -46
View File
@@ -1,8 +1,25 @@
import enum
import struct
import time
from typing import Optional
from tmtccmd.config import QueueCommands
from config.definitions import CustomServiceList
from tmtccmd.config import (
QueueCommands,
ServiceOpCodeDictT,
add_op_code_entry,
add_service_op_code_entry,
)
from tmtccmd.tc.definitions import TcQueueT
from tmtccmd.tc.pus_3_fsfw_hk import (
generate_one_hk_command,
make_sid,
generate_one_diag_command,
)
from tmtccmd.tc.pus_11_tc_sched import (
generate_enable_tc_sched_cmd,
generate_time_tagged_cmd,
)
from tmtccmd.tc.pus_200_fsfw_modes import pack_mode_data, Modes, Subservices
from tmtccmd.tc.pus_20_params import (
pack_scalar_double_param_app_data,
@@ -17,14 +34,17 @@ LOGGER = get_console_logger()
class OpCodes:
SWITCH_ON = ["0", "on"]
SWITCH_OFF = ["1", "off"]
NORMAL_SSR = ["2", "nml-ssr"]
NORMAL_DRO = ["3", "nml-dro"]
NORMAL_X8 = ["4", "nml-x8"]
NORMAL_TX = ["5", "nml-tx"]
NORMAL_MPA = ["6", "nml-mpa"]
NORMAL_HPA = ["7", "nml-hpa"]
SWITCH_HPA_ON_PROC = ["0", "proc-hpa"]
SWITCH_ON = ["2", "on"]
SWITCH_OFF = ["3", "off"]
NORMAL_SSR = ["4", "nml-ssr"]
NORMAL_DRO = ["5", "nml-dro"]
NORMAL_X8 = ["6", "nml-x8"]
NORMAL_TX = ["7", "nml-tx"]
NORMAL_MPA = ["8", "nml-mpa"]
NORMAL_HPA = ["9", "nml-hpa"]
REQ_OS_HK = ["8", "hk-os"]
INJECT_SSR_TO_DRO_FAILURE = ["10", "inject-ssr-dro-fault"]
INJECT_DRO_TO_X8_FAILURE = ["11", "inject-dro-x8-fault"]
@@ -33,12 +53,6 @@ class OpCodes:
INJECT_MPA_TO_HPA_FAILURE = ["14", "inject-mpa-hpa-fault"]
INJECT_ALL_ON_FAILURE = ["15", "inject-all-on-fault"]
# The following commands might become deprecated in the future
UPDATE_DRO_TO_X8_WAIT = ["128", "dro-to-x8-wait"]
UPDATE_X8_TO_TX_WAIT_TIME = ["129", "x8-to-tx-wait"]
UPDATE_TX_TO_MPA_WAIT_TIME = ["130", "tx-to-mpa-wait"]
UPDATE_MPA_TO_HPA_WAIT_TIME = ["131", "mpa-to-hpa-wait"]
class Info:
NORMAL = "PL PCDU ADC modules normal"
@@ -50,6 +64,11 @@ class Info:
NORMAL_TX = f"{NORMAL}, TX on"
NORMAL_MPA = f"{NORMAL}, MPA on"
NORMAL_HPA = f"{NORMAL}, HPA on"
REQ_OS_HK = "Request One Shot HK"
class SetIds(enum.IntEnum):
ADC = 0
class NormalSubmodesMask(enum.IntEnum):
@@ -99,6 +118,85 @@ class ParamIds(enum.IntEnum):
INJECT_ALL_ON_FAILURE = 35
def add_pl_pcdu_cmds(cmd_dict: ServiceOpCodeDictT):
op_code_dict = dict()
add_op_code_entry(
op_code_dict=op_code_dict, keys=OpCodes.SWITCH_ON, info=Info.SWITCH_ON
)
add_op_code_entry(
op_code_dict=op_code_dict, keys=OpCodes.SWITCH_OFF, info=Info.SWITCH_OFF
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=OpCodes.NORMAL_SSR,
info=Info.NORMAL_SSR,
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=OpCodes.NORMAL_DRO,
info=Info.NORMAL_DRO,
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=OpCodes.NORMAL_X8,
info=Info.NORMAL_X8,
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=OpCodes.NORMAL_TX,
info=Info.NORMAL_TX,
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=OpCodes.NORMAL_MPA,
info=Info.NORMAL_MPA,
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=OpCodes.NORMAL_HPA,
info=Info.NORMAL_HPA,
)
add_op_code_entry(
op_code_dict=op_code_dict, keys=OpCodes.REQ_OS_HK, info=Info.REQ_OS_HK
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=OpCodes.INJECT_SSR_TO_DRO_FAILURE,
info="Inject failure SSR to DRO transition",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=OpCodes.INJECT_DRO_TO_X8_FAILURE,
info="Inject failure in DRO to X8 transition",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=OpCodes.INJECT_X8_TO_TX_FAILURE,
info="Inject failure in X8 to TX transition",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=OpCodes.INJECT_TX_TO_MPA_FAILURE,
info="Inject failure in TX to MPA transition",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=OpCodes.INJECT_MPA_TO_HPA_FAILURE,
info="Inject failure in MPA to HPA transition",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=OpCodes.INJECT_ALL_ON_FAILURE,
info="Inject failure in all on mode",
)
add_service_op_code_entry(
srv_op_code_dict=cmd_dict,
name=CustomServiceList.PL_PCDU.value,
info="PL PCDU",
op_code_entry=op_code_dict,
)
def pack_pl_pcdu_commands(tc_queue: TcQueueT, op_code: str):
if op_code in OpCodes.SWITCH_ON:
pack_pl_pcdu_mode_cmd(
@@ -113,68 +211,53 @@ def pack_pl_pcdu_commands(tc_queue: TcQueueT, op_code: str):
tc_queue=tc_queue,
info=Info.NORMAL_SSR,
mode=Modes.NORMAL,
submode=(1 << NormalSubmodesMask.SOLID_STATE_RELAYS_ADC_ON),
submode=submode_mask_to_submode(
NormalSubmodesMask.SOLID_STATE_RELAYS_ADC_ON
),
)
if op_code in OpCodes.NORMAL_DRO:
pack_pl_pcdu_mode_cmd(
tc_queue=tc_queue,
info=Info.NORMAL_DRO,
mode=Modes.NORMAL,
submode=(
1 << NormalSubmodesMask.DRO_ON
| (1 << NormalSubmodesMask.SOLID_STATE_RELAYS_ADC_ON)
),
submode=submode_mask_to_submode(NormalSubmodesMask.DRO_ON),
)
if op_code in OpCodes.NORMAL_X8:
pack_pl_pcdu_mode_cmd(
tc_queue=tc_queue,
info=Info.NORMAL_X8,
mode=Modes.NORMAL,
submode=(
1 << NormalSubmodesMask.DRO_ON
| (1 << NormalSubmodesMask.SOLID_STATE_RELAYS_ADC_ON)
| (1 << NormalSubmodesMask.X8_ON)
),
submode=submode_mask_to_submode(NormalSubmodesMask.X8_ON),
)
if op_code in OpCodes.NORMAL_TX:
pack_pl_pcdu_mode_cmd(
tc_queue=tc_queue,
info=Info.NORMAL_TX,
mode=Modes.NORMAL,
submode=(
1 << NormalSubmodesMask.DRO_ON
| (1 << NormalSubmodesMask.SOLID_STATE_RELAYS_ADC_ON)
| (1 << NormalSubmodesMask.X8_ON)
| (1 << NormalSubmodesMask.TX_ON)
),
submode=submode_mask_to_submode(NormalSubmodesMask.TX_ON),
)
if op_code in OpCodes.NORMAL_MPA:
pack_pl_pcdu_mode_cmd(
tc_queue=tc_queue,
info=Info.NORMAL_MPA,
mode=Modes.NORMAL,
submode=(
1 << NormalSubmodesMask.DRO_ON
| (1 << NormalSubmodesMask.SOLID_STATE_RELAYS_ADC_ON)
| (1 << NormalSubmodesMask.X8_ON)
| (1 << NormalSubmodesMask.TX_ON)
| (1 << NormalSubmodesMask.MPA_ON)
),
submode=submode_mask_to_submode(NormalSubmodesMask.MPA_ON),
)
if op_code in OpCodes.NORMAL_HPA:
pack_pl_pcdu_mode_cmd(
tc_queue=tc_queue,
info=Info.NORMAL_HPA,
mode=Modes.NORMAL,
submode=(
1 << NormalSubmodesMask.DRO_ON
| (1 << NormalSubmodesMask.SOLID_STATE_RELAYS_ADC_ON)
| (1 << NormalSubmodesMask.X8_ON)
| (1 << NormalSubmodesMask.TX_ON)
| (1 << NormalSubmodesMask.MPA_ON)
| (1 << NormalSubmodesMask.HPA_ON)
),
submode=submode_mask_to_submode(NormalSubmodesMask.HPA_ON),
)
if op_code in OpCodes.REQ_OS_HK:
tc_queue.appendleft((QueueCommands.PRINT, f"PL PCDU: {Info.REQ_OS_HK}"))
cmd = generate_one_diag_command(
sid=make_sid(object_id=PL_PCDU_ID, set_id=SetIds.ADC), ssc=0
)
tc_queue.appendleft(cmd.pack_command_tuple())
if op_code in OpCodes.SWITCH_HPA_ON_PROC:
hpa_on_procedure(tc_queue)
if op_code in OpCodes.INJECT_ALL_ON_FAILURE:
pack_failure_injection_cmd(
tc_queue=tc_queue,
@@ -183,6 +266,129 @@ def pack_pl_pcdu_commands(tc_queue: TcQueueT, op_code: str):
)
def hpa_on_procedure(tc_queue: TcQueueT):
delay_dro_to_x8 = request_wait_time()
if delay_dro_to_x8 is None:
delay_dro_to_x8 = 900
tc_queue.appendleft(
(
QueueCommands.PRINT,
f"Starting procedure to switch on PL PCDU HPA with DRO to X8 delay of {delay_dro_to_x8} seconds",
)
)
pl_pcdu_on = PusTelecommand(
service=200,
subservice=Subservices.TC_MODE_COMMAND,
app_data=pack_mode_data(object_id=PL_PCDU_ID, mode=Modes.ON, submode=0),
)
ssr_on = PusTelecommand(
service=200,
subservice=Subservices.TC_MODE_COMMAND,
app_data=pack_mode_data(
object_id=PL_PCDU_ID,
mode=Modes.NORMAL,
submode=submode_mask_to_submode(
NormalSubmodesMask.SOLID_STATE_RELAYS_ADC_ON
),
),
)
dro_on = PusTelecommand(
service=200,
subservice=Subservices.TC_MODE_COMMAND,
app_data=pack_mode_data(
object_id=PL_PCDU_ID,
mode=Modes.NORMAL,
submode=submode_mask_to_submode(NormalSubmodesMask.DRO_ON),
),
)
x8_on = PusTelecommand(
service=200,
subservice=Subservices.TC_MODE_COMMAND,
app_data=pack_mode_data(
object_id=PL_PCDU_ID,
mode=Modes.NORMAL,
submode=submode_mask_to_submode(NormalSubmodesMask.X8_ON),
),
)
tx_on = PusTelecommand(
service=200,
subservice=Subservices.TC_MODE_COMMAND,
app_data=pack_mode_data(
object_id=PL_PCDU_ID,
mode=Modes.NORMAL,
submode=submode_mask_to_submode(NormalSubmodesMask.TX_ON),
),
)
mpa_on = PusTelecommand(
service=200,
subservice=Subservices.TC_MODE_COMMAND,
app_data=pack_mode_data(
object_id=PL_PCDU_ID,
mode=Modes.NORMAL,
submode=submode_mask_to_submode(NormalSubmodesMask.MPA_ON),
),
)
hpa_on = PusTelecommand(
service=200,
subservice=Subservices.TC_MODE_COMMAND,
app_data=pack_mode_data(
object_id=PL_PCDU_ID,
mode=Modes.NORMAL,
submode=submode_mask_to_submode(NormalSubmodesMask.HPA_ON),
),
)
current_time = time.time()
enb_sched = generate_enable_tc_sched_cmd(ssc=0)
sched_time = current_time + 10
tc_queue.appendleft(enb_sched.pack_command_tuple())
tagged_on_cmd = generate_time_tagged_cmd(
release_time=struct.pack("!I", sched_time),
tc_to_insert=pl_pcdu_on,
ssc=1,
)
tc_queue.appendleft(tagged_on_cmd.pack_command_tuple())
sched_time += 5
tagged_ssr_cmd = generate_time_tagged_cmd(
release_time=struct.pack("!I", sched_time),
tc_to_insert=ssr_on,
ssc=2,
)
tc_queue.appendleft(tagged_ssr_cmd.pack_command_tuple())
sched_time += 5
tagged_dro_cmd = generate_time_tagged_cmd(
release_time=struct.pack("!I", sched_time), tc_to_insert=dro_on, ssc=3
)
tc_queue.appendleft(tagged_dro_cmd.pack_command_tuple())
sched_time += delay_dro_to_x8
tagged_x8_cmd = generate_time_tagged_cmd(
release_time=struct.pack("!I", sched_time), tc_to_insert=x8_on, ssc=4
)
tc_queue.appendleft(tagged_x8_cmd.pack_command_tuple())
sched_time += 5
tagged_tx_cmd = generate_time_tagged_cmd(
release_time=struct.pack("!I", sched_time), tc_to_insert=tx_on, ssc=5
)
tc_queue.appendleft(tagged_tx_cmd.pack_command_tuple())
sched_time += 5
tagged_mpa_cmd = generate_time_tagged_cmd(
release_time=struct.pack("!I", sched_time), tc_to_insert=mpa_on, ssc=6
)
tc_queue.appendleft(tagged_mpa_cmd.pack_command_tuple())
sched_time += 5
tagged_hpa_cmd = generate_time_tagged_cmd(
release_time=struct.pack("!I", sched_time), tc_to_insert=hpa_on, ssc=7
)
tc_queue.appendleft(tagged_hpa_cmd.pack_command_tuple())
def request_wait_time() -> Optional[float]:
while True:
wait_time = input("Please enter DRO to X8 wait time in seconds, x to cancel: ")
@@ -199,6 +405,45 @@ def request_wait_time() -> Optional[float]:
return wait_time
def submode_mask_to_submode(on_tgt: NormalSubmodesMask) -> int:
if on_tgt == NormalSubmodesMask.SOLID_STATE_RELAYS_ADC_ON:
return 1 << NormalSubmodesMask.SOLID_STATE_RELAYS_ADC_ON
if on_tgt == NormalSubmodesMask.DRO_ON:
return 1 << NormalSubmodesMask.DRO_ON | (
1 << NormalSubmodesMask.SOLID_STATE_RELAYS_ADC_ON
)
if on_tgt == NormalSubmodesMask.X8_ON:
return (
1 << NormalSubmodesMask.DRO_ON
| (1 << NormalSubmodesMask.SOLID_STATE_RELAYS_ADC_ON)
| (1 << NormalSubmodesMask.X8_ON)
)
if on_tgt == NormalSubmodesMask.TX_ON:
return (
1 << NormalSubmodesMask.DRO_ON
| (1 << NormalSubmodesMask.SOLID_STATE_RELAYS_ADC_ON)
| (1 << NormalSubmodesMask.X8_ON)
| (1 << NormalSubmodesMask.TX_ON)
)
if on_tgt == NormalSubmodesMask.MPA_ON:
return (
1 << NormalSubmodesMask.DRO_ON
| (1 << NormalSubmodesMask.SOLID_STATE_RELAYS_ADC_ON)
| (1 << NormalSubmodesMask.X8_ON)
| (1 << NormalSubmodesMask.TX_ON)
| (1 << NormalSubmodesMask.MPA_ON)
)
if on_tgt == NormalSubmodesMask.HPA_ON:
return (
1 << NormalSubmodesMask.DRO_ON
| (1 << NormalSubmodesMask.SOLID_STATE_RELAYS_ADC_ON)
| (1 << NormalSubmodesMask.X8_ON)
| (1 << NormalSubmodesMask.TX_ON)
| (1 << NormalSubmodesMask.MPA_ON)
| (1 << NormalSubmodesMask.HPA_ON)
)
def pack_wait_time_cmd(tc_queue: TcQueueT, param_id: int, print_str: str):
wait_time = request_wait_time()
tc_queue.appendleft(
+80 -42
View File
@@ -7,11 +7,37 @@
"""
import struct
from tmtccmd.config.definitions import QueueCommands
from config.definitions import CustomServiceList
from tmtccmd.config import add_op_code_entry, add_service_op_code_entry
from tmtccmd.config.definitions import QueueCommands, ServiceOpCodeDictT, OpCodeDictKeys
from tmtccmd.tc.packer import TcQueueT
from spacepackets.ecss.tc import PusTelecommand
from pus_tc.service_200_mode import pack_mode_data, Modes
from tmtccmd.tc.pus_3_fsfw_hk import generate_one_hk_command, make_sid
from tmtccmd.utility import ObjectId
class SetIds:
HK = 3
class OpCodes:
ON = ["0", "on"]
NORMAL = ["1", "normal"]
OFF = ["2", "off"]
REQ_HK_ONCE = ["3", "hk-os"]
DEBUG_ON = ["10", "dbg-on"]
DEBUG_OFF = ["11", "dbg-off"]
class Info:
ON = "Switch Rad Sensor on"
NORMAL = "Switch Rad Sensor normal"
OFF = "Switch Rad sensor off"
REQ_OS_HK = "Request one-shot HK"
DEBUG_ON = "Switch debug output on"
DEBUG_OFF = "Switch debug output off"
class CommandIds:
@@ -21,52 +47,64 @@ class CommandIds:
DISABLE_DEBUG_OUTPUT = 5
def pack_rad_sensor_test_into(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
tc_queue.appendleft(
(
QueueCommands.PRINT,
"Testing radiation sensor handler with object id: 0x" + object_id.hex(),
)
def add_rad_sens_cmds(cmd_dict: ServiceOpCodeDictT):
op_code_dict = dict()
add_op_code_entry(op_code_dict=op_code_dict, info=Info.ON, keys=OpCodes.ON)
add_op_code_entry(op_code_dict=op_code_dict, info=Info.OFF, keys=OpCodes.OFF)
add_op_code_entry(op_code_dict=op_code_dict, info=Info.NORMAL, keys=OpCodes.NORMAL)
add_op_code_entry(
op_code_dict=op_code_dict, info=Info.REQ_OS_HK, keys=OpCodes.REQ_HK_ONCE
)
add_op_code_entry(
op_code_dict=op_code_dict, info=Info.DEBUG_ON, keys=OpCodes.DEBUG_ON
)
add_op_code_entry(
op_code_dict=op_code_dict, info=Info.DEBUG_OFF, keys=OpCodes.DEBUG_OFF
)
add_service_op_code_entry(
srv_op_code_dict=cmd_dict,
name=CustomServiceList.RAD_SENSOR.value,
info="Radiation Sensor",
op_code_entry=op_code_dict,
)
if op_code == "0":
tc_queue.appendleft((QueueCommands.PRINT, "Rad sensor: Switch to mode on"))
mode_data = pack_mode_data(object_id, Modes.ON, 0)
command = PusTelecommand(service=200, subservice=1, ssc=41, app_data=mode_data)
tc_queue.appendleft(command.pack_command_tuple())
if op_code == "1":
tc_queue.appendleft((QueueCommands.PRINT, "Rad sensor: Switch to mode normal"))
mode_data = pack_mode_data(object_id, Modes.NORMAL, 0)
command = PusTelecommand(service=200, subservice=1, ssc=42, app_data=mode_data)
tc_queue.appendleft(command.pack_command_tuple())
def pack_rad_sensor_test_into(object_id: ObjectId, tc_queue: TcQueueT, op_code: str):
tc_queue.appendleft(
(QueueCommands.PRINT, f"Commanding Radiation sensor handler {object_id}")
)
if op_code == "2":
tc_queue.appendleft((QueueCommands.PRINT, "Rad sensor: Switch to mode off"))
mode_data = pack_mode_data(object_id, Modes.OFF, 0)
command = PusTelecommand(service=200, subservice=1, ssc=42, app_data=mode_data)
if op_code in OpCodes.ON:
rad_sensor_mode_cmd(object_id, Modes.ON, Info.ON, tc_queue)
if op_code in OpCodes.NORMAL:
rad_sensor_mode_cmd(object_id, Modes.NORMAL, Info.NORMAL, tc_queue)
if op_code in OpCodes.OFF:
rad_sensor_mode_cmd(object_id, Modes.OFF, Info.OFF, tc_queue)
if op_code in OpCodes.REQ_HK_ONCE:
tc_queue.appendleft((QueueCommands.PRINT, f"Rad sensor: {Info.REQ_OS_HK}"))
cmd = generate_one_hk_command(
sid=make_sid(object_id.as_bytes, set_id=SetIds.HK), ssc=0
)
tc_queue.appendleft(cmd.pack_command_tuple())
if op_code in OpCodes.DEBUG_ON:
tc_queue.appendleft((QueueCommands.PRINT, f"Rad sensor: {Info.DEBUG_ON}"))
command = object_id.as_bytes + struct.pack("!I", CommandIds.ENABLE_DEBUG_OUTPUT)
command = PusTelecommand(service=8, subservice=128, ssc=45, app_data=command)
tc_queue.appendleft(command.pack_command_tuple())
if op_code == "3":
tc_queue.appendleft((QueueCommands.PRINT, "Rad sensor: Start conversions"))
command = object_id + struct.pack("!I", CommandIds.START_CONVERSIONS)
command = PusTelecommand(service=8, subservice=128, ssc=43, app_data=command)
tc_queue.appendleft(command.pack_command_tuple())
if op_code == "4":
tc_queue.appendleft((QueueCommands.PRINT, "Rad sensor: Read conversions"))
command = object_id + struct.pack("!I", CommandIds.READ_CONVERSIONS)
command = PusTelecommand(service=8, subservice=128, ssc=44, app_data=command)
tc_queue.appendleft(command.pack_command_tuple())
if op_code == "5":
tc_queue.appendleft((QueueCommands.PRINT, "Rad sensor: Enable debug output"))
command = object_id + struct.pack("!I", CommandIds.ENABLE_DEBUG_OUTPUT)
if op_code in OpCodes.DEBUG_OFF:
tc_queue.appendleft((QueueCommands.PRINT, f"Rad sensor: {Info.DEBUG_OFF}"))
command = object_id.as_bytes + struct.pack(
"!I", CommandIds.DISABLE_DEBUG_OUTPUT
)
command = PusTelecommand(service=8, subservice=128, ssc=45, app_data=command)
tc_queue.appendleft(command.pack_command_tuple())
if op_code == "6":
tc_queue.appendleft((QueueCommands.PRINT, "Rad sensor: Disable debug output"))
command = object_id + struct.pack("!I", CommandIds.DISABLE_DEBUG_OUTPUT)
command = PusTelecommand(service=8, subservice=128, ssc=45, app_data=command)
tc_queue.appendleft(command.pack_command_tuple())
def rad_sensor_mode_cmd(
object_id: ObjectId, mode: Modes, info: str, tc_queue: TcQueueT
):
tc_queue.appendleft((QueueCommands.PRINT, f"Rad sensor: {info}"))
mode_data = pack_mode_data(object_id.as_bytes, mode, 0)
command = PusTelecommand(service=200, subservice=1, ssc=41, app_data=mode_data)
tc_queue.appendleft(command.pack_command_tuple())
+24 -5
View File
@@ -136,8 +136,7 @@ def pack_single_rw_test_into(
speed = int(input("Specify speed [0.1 RPM]: "))
ramp_time = int(input("Specify ramp time [ms]: "))
tc_queue.appendleft((QueueCommands.PRINT, f"RW {rw_idx}: {InfoDevs.SPEED}"))
command = pack_set_speed_command(object_id, speed, ramp_time)
command = PusTelecommand(service=8, subservice=128, ssc=40, app_data=command)
command = pack_set_speed_command(object_id, speed, ramp_time, 40)
tc_queue.appendleft(command.pack_command_tuple())
if op_code in OpCodesDevs.ON:
@@ -196,17 +195,37 @@ def pack_rw_ass_cmds(tc_queue: TcQueueT, object_id: bytes, op_code: str):
tc_queue.appendleft(cmd.pack_command_tuple())
def pack_set_speed_command(object_id: bytes, speed: int, ramp_time: int) -> bytearray:
def pack_set_speed_command(
object_id: bytes, speed: int, ramp_time_ms: int, ssc: int
) -> PusTelecommand:
"""With this function a command is packed to set the speed of a reaction wheel
:param object_id: The object id of the reaction wheel handler.
:param speed: Valid speeds are [-65000, -1000] and [1000, 65000]. Values are
specified in 0.1 * RPM
:param ramp_time: The time after which the reaction wheel will reached the commanded speed.
:param ramp_time_ms: The time after which the reaction wheel will reach the commanded speed.
Valid times are 10 - 10000 ms
:param ssc: Source sequence count
"""
if speed > 0:
if speed < 1000 or speed > 65000:
raise ValueError(
"Invalid RW speed specified. "
"Allowed range is [1000, 65000] 0.1 * RPM"
)
else:
if speed < -65000 or speed > -1000:
raise ValueError(
"Invalid RW speed specified. "
"Allowed range is [-65000, -1000] 0.1 * RPM"
)
if ramp_time_ms < 0 or (
ramp_time_ms > 0 and (ramp_time_ms > 10000 or ramp_time_ms < 10)
):
raise ValueError("Invalid Ramp Speed time. Allowed range is [10-10000] ms")
command_id = RwCommandIds.SET_SPEED
command = bytearray()
command += object_id + command_id
command = command + struct.pack("!i", speed)
command = command + ramp_time.to_bytes(length=2, byteorder="big")
command = command + ramp_time_ms.to_bytes(length=2, byteorder="big")
command = PusTelecommand(service=8, subservice=128, ssc=ssc, app_data=command)
return command
+105
View File
@@ -0,0 +1,105 @@
from typing import Optional
from config.definitions import CustomServiceList
from spacepackets.ecss import PusTelecommand
from tmtccmd.config import (
ServiceOpCodeDictT,
add_op_code_entry,
add_service_op_code_entry,
)
from tmtccmd.tc.definitions import TcQueueT
from tmtccmd.utility import ObjectId
from tmtccmd.tc.pus_200_fsfw_modes import Modes, pack_mode_data, Subservices
import config.object_ids as oids
from config.object_ids import get_object_ids
RTD_IDS = [
oids.RTD_0_PLOC_HSPD,
oids.RTD_1_PLOC_MISSIONBRD,
oids.RTD_2_4K_CAM,
oids.RTD_3_DAC_HSPD,
oids.RTD_4_STR,
oids.RTD_5_RW1_MX_MY,
oids.RTD_6_DRO,
oids.RTD_7_SCEX,
oids.RTD_8_X8,
oids.RTD_9_HPA,
oids.RTD_10_PL_TX,
oids.RTD_11_MPA,
oids.RTD_12_ACU,
oids.RTD_13_PLPCDU_HSPD,
oids.RTD_14_TCS_BRD,
oids.RTD_15_IMTQ,
]
class OpCodes:
ON = ["0", "on"]
OFF = ["1", "off"]
NORMAL = ["2", "normal"]
class Info:
ON = "Switch handler on"
OFF = "Switch handler off"
NORMAL = "Switch handler normal"
def specify_rtd_cmds(cmd_dict: ServiceOpCodeDictT):
op_code_dict = dict()
add_op_code_entry(op_code_dict=op_code_dict, keys=OpCodes.ON, info=Info.ON)
add_op_code_entry(op_code_dict=op_code_dict, keys=OpCodes.NORMAL, info=Info.NORMAL)
add_op_code_entry(op_code_dict=op_code_dict, keys=OpCodes.OFF, info=Info.OFF)
add_service_op_code_entry(
srv_op_code_dict=cmd_dict,
op_code_entry=op_code_dict,
name=CustomServiceList.RTD.value,
info="RTD commands",
)
def pack_rtd_commands(op_code: str, object_id: Optional[ObjectId], tc_queue: TcQueueT):
if object_id is not None and object_id not in RTD_IDS:
print("Specified object ID not a valid RTD ID")
object_id = None
if object_id is None:
tgt_rtd_idx = prompt_rtd_idx()
object_id_dict = get_object_ids()
object_id = object_id_dict.get(RTD_IDS[tgt_rtd_idx])
if op_code in OpCodes.ON:
app_data = pack_mode_data(
object_id=object_id.as_bytes, mode=Modes.ON, submode=0
)
cmd = PusTelecommand(
service=200, subservice=Subservices.TC_MODE_COMMAND, app_data=app_data
)
tc_queue.appendleft(cmd.pack_command_tuple())
if op_code in OpCodes.NORMAL:
app_data = pack_mode_data(
object_id=object_id.as_bytes, mode=Modes.NORMAL, submode=0
)
cmd = PusTelecommand(
service=200, subservice=Subservices.TC_MODE_COMMAND, app_data=app_data
)
tc_queue.appendleft(cmd.pack_command_tuple())
if op_code in OpCodes.OFF:
app_data = pack_mode_data(
object_id=object_id.as_bytes, mode=Modes.OFF, submode=0
)
cmd = PusTelecommand(
service=200, subservice=Subservices.TC_MODE_COMMAND, app_data=app_data
)
tc_queue.appendleft(cmd.pack_command_tuple())
def prompt_rtd_idx():
while True:
rtd_idx = input("Please specify RTD index [0-15]: ")
if not rtd_idx.isdigit():
print("Invalid input")
continue
rtd_idx = int(rtd_idx)
if rtd_idx < 0 or rtd_idx > 15:
print("Invalid device index")
continue
return rtd_idx
+4
View File
@@ -85,6 +85,10 @@ class StarTrackerActionIds:
FIRMWARE_UPDATE = 84
class SetIds:
TEMPERATURE = 25
class FileDefs:
download_path = "/mnt/sd0/startracker"
json_file = "/mnt/sd0/startracker/full.json"
+2
View File
@@ -0,0 +1,2 @@
class SetIds:
HK = 3
+124
View File
@@ -0,0 +1,124 @@
from PyQt5.QtWidgets import (
QDialog,
QDialogButtonBox,
QVBoxLayout,
QLabel,
QGroupBox,
QGridLayout,
QLineEdit,
)
from PyQt5 import QtCore
from tmtccmd.core.globals_manager import get_global
from tmtccmd.config.definitions import CoreGlobalIds, CoreModeList
class Parameter:
def __init__(self, name: str, defaultValue: str, widget: QLineEdit):
self.name = name
self.defaultValue = defaultValue
self.widget = widget
self.value = self.defaultValue
self.widget.setPlaceholderText(self.defaultValue)
def reset(self):
self.value = self.defaultValue
self.widget.setPlaceholderText(self.defaultValue)
self.widget.setText("")
class ParameterDialog(QDialog):
def __init__(self):
super().__init__()
self.setWindowTitle("Enter Parameters")
Buttons = QDialogButtonBox.Ok | QDialogButtonBox.Cancel | QDialogButtonBox.Reset
self.buttonBox = QDialogButtonBox(Buttons)
self.buttonBox.accepted.connect(self.accept)
self.buttonBox.rejected.connect(self.reject)
self.buttonBox.button(QDialogButtonBox.Reset).clicked.connect(self._reset)
self.data = 1
self.rootLayout = QVBoxLayout()
self.group = QGroupBox("Parameters")
self.rootLayout.addWidget(self.group)
self.rootLayout.addWidget(self.buttonBox)
self.setLayout(self.rootLayout)
self.groupLayout = QGridLayout()
self.group.setLayout(self.groupLayout)
self.parameters = {}
def addParameter(self, name: str, defaultValue: str):
row = self.groupLayout.rowCount() + 1
description = QLabel(name)
self.groupLayout.addWidget(description, row, 0)
valueWidget = QLineEdit()
self.groupLayout.addWidget(valueWidget, row, 1)
parameter = Parameter(name, defaultValue, valueWidget)
self.parameters[name] = parameter
def _reset(self):
for value in self.parameters.values():
value.reset()
def getParameters(self):
output = {}
for key, parameter in self.parameters.items():
if parameter.widget != None:
if parameter.widget.text() != "":
parameter.value = parameter.widget.text()
output[key] = parameter.value
return output
@QtCore.pyqtSlot()
def reject(self):
print("reject")
self._reset()
super().reject()
"""Prompt the user to specify additional Parameters
:param parameterList: array of dictionaries with name and defaultValue attributes
:return: dict with all names as key and user supplied input as value string
"""
def prompt_parameters(parameterList):
gui = get_global(CoreGlobalIds.GUI)
mode = get_global(CoreGlobalIds.MODE)
# gui only works in cont mode right now
if gui and mode == CoreModeList.CONTINUOUS_MODE:
return _gui_prompt(parameterList)
else:
return _cli_prompt(parameterList)
def _gui_prompt(parameterList):
dialog = ParameterDialog()
for parameter in parameterList:
dialog.addParameter(parameter["name"], parameter["defaultValue"])
dialog.exec_()
return dialog.getParameters()
def _cli_prompt(parameterList):
result = {}
for parameter in parameterList:
userInput = input(
"Specify {} [{}]: ".format(parameter["name"], parameter["defaultValue"])
)
if userInput == "":
userInput = parameter["defaultValue"]
result[parameter["name"]] = userInput
return result
+12 -12
View File
@@ -3,7 +3,7 @@ from tmtccmd.tc.definitions import TcQueueT
from tmtccmd.tc.pus_200_fsfw_modes import Modes
from config.object_ids import ACS_BOARD_ASS_ID, SUS_BOARD_ASS_ID
from .common import command_assembly
from .common import command_mode
class AcsOpCodes:
@@ -31,7 +31,7 @@ class DualSideSubmodes(enum.IntEnum):
def pack_acs_command(tc_queue: TcQueueT, op_code: str):
if op_code in AcsOpCodes.ACS_ASS_A_SIDE:
command_assembly(
command_mode(
object_id=ACS_BOARD_ASS_ID,
mode=Modes.NORMAL,
submode=DualSideSubmodes.A_SIDE,
@@ -39,7 +39,7 @@ def pack_acs_command(tc_queue: TcQueueT, op_code: str):
info="Switching to ACS board assembly A side",
)
if op_code in AcsOpCodes.ACS_ASS_B_SIDE:
command_assembly(
command_mode(
object_id=ACS_BOARD_ASS_ID,
mode=Modes.NORMAL,
submode=DualSideSubmodes.B_SIDE,
@@ -47,7 +47,7 @@ def pack_acs_command(tc_queue: TcQueueT, op_code: str):
info="Switching to ACS board assembly B side",
)
if op_code in AcsOpCodes.ACS_ASS_DUAL_MODE:
command_assembly(
command_mode(
object_id=ACS_BOARD_ASS_ID,
mode=Modes.NORMAL,
submode=DualSideSubmodes.DUAL_SIDE,
@@ -55,7 +55,7 @@ def pack_acs_command(tc_queue: TcQueueT, op_code: str):
info="Switching to ACS board assembly dual mode",
)
if op_code in AcsOpCodes.ACS_ASS_A_ON:
command_assembly(
command_mode(
object_id=ACS_BOARD_ASS_ID,
mode=Modes.ON,
submode=DualSideSubmodes.A_SIDE,
@@ -63,7 +63,7 @@ def pack_acs_command(tc_queue: TcQueueT, op_code: str):
info="Switching ACS board assembly A side on",
)
if op_code in AcsOpCodes.ACS_ASS_B_ON:
command_assembly(
command_mode(
object_id=ACS_BOARD_ASS_ID,
mode=Modes.ON,
submode=DualSideSubmodes.B_SIDE,
@@ -71,7 +71,7 @@ def pack_acs_command(tc_queue: TcQueueT, op_code: str):
info="Switching ACS board assembly B side on",
)
if op_code in AcsOpCodes.ACS_ASS_DUAL_ON:
command_assembly(
command_mode(
object_id=ACS_BOARD_ASS_ID,
mode=Modes.ON,
submode=DualSideSubmodes.B_SIDE,
@@ -79,7 +79,7 @@ def pack_acs_command(tc_queue: TcQueueT, op_code: str):
info="Switching ACS board assembly dual side on",
)
if op_code in AcsOpCodes.ACS_ASS_OFF:
command_assembly(
command_mode(
object_id=ACS_BOARD_ASS_ID,
mode=Modes.OFF,
submode=0,
@@ -90,7 +90,7 @@ def pack_acs_command(tc_queue: TcQueueT, op_code: str):
def pack_sus_cmds(tc_queue: TcQueueT, op_code: str):
if op_code in SusOpCodes.SUS_ASS_NOM_SIDE:
command_assembly(
command_mode(
object_id=SUS_BOARD_ASS_ID,
mode=Modes.NORMAL,
submode=DualSideSubmodes.A_SIDE,
@@ -98,7 +98,7 @@ def pack_sus_cmds(tc_queue: TcQueueT, op_code: str):
info="Switching to SUS board to nominal side",
)
if op_code in SusOpCodes.SUS_ASS_RED_SIDE:
command_assembly(
command_mode(
object_id=SUS_BOARD_ASS_ID,
mode=Modes.NORMAL,
submode=DualSideSubmodes.B_SIDE,
@@ -106,7 +106,7 @@ def pack_sus_cmds(tc_queue: TcQueueT, op_code: str):
info="Switching to SUS board to redundant side",
)
if op_code in SusOpCodes.SUS_ASS_OFF:
command_assembly(
command_mode(
object_id=SUS_BOARD_ASS_ID,
mode=Modes.OFF,
submode=0,
@@ -114,7 +114,7 @@ def pack_sus_cmds(tc_queue: TcQueueT, op_code: str):
info="Switching SUS board off",
)
if op_code in SusOpCodes.SUS_ASS_DUAL_MODE:
command_assembly(
command_mode(
object_id=SUS_BOARD_ASS_ID,
mode=Modes.NORMAL,
submode=DualSideSubmodes.DUAL_SIDE,
+8 -2
View File
@@ -1,10 +1,16 @@
from typing import Union
from tmtccmd.tc.definitions import TcQueueT, QueueCommands
from spacepackets.ecss.tc import PusTelecommand
from tmtccmd.tc.pus_200_fsfw_modes import pack_mode_data, Modes, Subservices
def command_assembly(
object_id: bytes, mode: Modes, submode: int, tc_queue: TcQueueT, info: str
def command_mode(
object_id: bytes,
mode: Union[int, Modes],
submode: int,
tc_queue: TcQueueT,
info: str,
):
tc_queue.appendleft((QueueCommands.PRINT, info))
mode_data = pack_mode_data(
+82
View File
@@ -0,0 +1,82 @@
from tmtccmd.tc.definitions import TcQueueT
from tmtccmd.config import QueueCommands
from tmtccmd.tc.pus_200_fsfw_modes import Modes
from tmtccmd.utility import ObjectId
from .common import command_mode
import config.object_ids as obj_ids
from pus_tc.prompt_parameters import prompt_parameters
class OpCodes:
THERMAL_CONTROLLER = [obj_ids.THERMAL_CONTROLLER_ID.hex(), "ctrl-th"]
CORE_CONTROLLER = [obj_ids.CORE_CONTROLLER_ID.hex(), "ctrl-core"]
class Info:
THERMAL_CONTROLLER = "Thermal controller"
CORE_CONTROLLER = "ACS controller"
def pack_cmd_ctrl_to_prompted_mode(tc_queue: TcQueueT, object_id: ObjectId):
parameters = prompt_parameters(
[
{"name": "Mode", "defaultValue": "2"},
{"name": "Submode", "defaultValue": "0"},
]
)
mode = int(parameters["Mode"])
if mode < 0 or mode > 2:
print("Invalid Mode, defaulting to OFF")
mode = 0
submode = int(parameters["Submode"])
command_mode(
object_id=object_id.as_bytes,
mode=mode,
submode=submode,
tc_queue=tc_queue,
info=f"Commanding {object_id} to {mode}, {submode}",
)
def pack_cmd_ctrl_to_off(tc_queue: TcQueueT, object_id: ObjectId):
command_mode(
object_id=object_id.as_bytes,
mode=Modes.OFF,
submode=0,
tc_queue=tc_queue,
info=f"Commanding {object_id} OFF",
)
def pack_cmd_ctrl_to_on(tc_queue: TcQueueT, object_id: ObjectId):
command_mode(
object_id=object_id.as_bytes,
mode=Modes.ON,
submode=0,
tc_queue=tc_queue,
info=f"Commanding {object_id} ON",
)
def pack_cmd_ctrl_to_nml(tc_queue: TcQueueT, object_id: ObjectId):
command_mode(
object_id=object_id.as_bytes,
mode=Modes.NORMAL,
submode=0,
tc_queue=tc_queue,
info=f"Commanding {object_id} NORMAL",
)
def get_object_from_op_code(op_code: str):
try:
return bytes.fromhex(op_code)
except:
pass
if op_code in OpCodes.THERMAL_CONTROLLER:
return obj_ids.THERMAL_CONTROLLER_ID
if op_code in OpCodes.CORE_CONTROLLER:
return obj_ids.CORE_CONTROLLER_ID
+104 -32
View File
@@ -1,6 +1,8 @@
import enum
from tmtccmd.config.definitions import QueueCommands
from config.definitions import CustomServiceList
from tmtccmd.config import add_op_code_entry, add_service_op_code_entry
from tmtccmd.config.definitions import QueueCommands, ServiceOpCodeDictT
from tmtccmd.tc.definitions import TcQueueT
from tmtccmd.tc.pus_8_funccmd import generate_action_command
from tmtccmd.logging import get_console_logger
@@ -19,7 +21,8 @@ class ActionIds(enum.IntEnum):
RESET_REBOOT_COUNTER_10 = 9
RESET_REBOOT_COUNTER_11 = 10
SET_MAX_REBOOT_CNT = 11
REBOOT = 32
XSC_REBOOT = 32
FULL_REBOOT = 34
class SetIds(enum.IntEnum):
@@ -27,21 +30,27 @@ class SetIds(enum.IntEnum):
class OpCodes:
REBOOT = ["0", "reboot"]
REBOOT_SELF = ["1", "reboot_self"]
REBOOT_0_0 = ["2", "reboot_0_0"]
REBOOT_0_1 = ["3", "reboot_0_1"]
REBOOT_1_0 = ["4", "reboot_1_0"]
REBOOT_1_1 = ["5", "reboot_1_1"]
ENABLE_REBOOT_FILE_HANDLING = ["6", "rbh-off"]
DISABLE_REBOOT_FILE_HANDLING = ["7", "rbh-on"]
RESET_ALL_REBOOT_COUNTERS = ["8", "rbh-reset-a"]
RESET_REBOOT_COUNTER_00 = ["9", "rbh-reset-00"]
RESET_REBOOT_COUNTER_01 = ["10", "rbh-reset-01"]
RESET_REBOOT_COUNTER_10 = ["11", "rbh-reset-10"]
RESET_REBOOT_COUNTER_11 = ["12", "rbh-reset-11"]
SET_MAX_REBOOT_CNT = ["13", "rbh-max-cnt"]
GET_HK = ["14", "get-hk"]
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"]
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"]
class Info:
REBOOT_XSC = "XSC reboot with prompt"
REBOOT_FULL = "Full regular reboot"
class Chip(enum.IntEnum):
@@ -56,8 +65,65 @@ class Copy(enum.IntEnum):
NONE = 2
def add_core_controller_definitions(cmd_dict: ServiceOpCodeDictT):
od = dict()
add_op_code_entry(op_code_dict=od, keys=OpCodes.REBOOT_XSC, info=Info.REBOOT_XSC)
add_op_code_entry(op_code_dict=od, keys=OpCodes.REBOOT_FULL, info=Info.REBOOT_FULL)
add_op_code_entry(op_code_dict=od, keys=OpCodes.XSC_REBOOT_SELF, info="Reboot Self")
add_op_code_entry(op_code_dict=od, keys=OpCodes.XSC_REBOOT_0_0, info="Reboot 0 0")
add_op_code_entry(op_code_dict=od, keys=OpCodes.XSC_REBOOT_0_1, info="Reboot 0 1")
add_op_code_entry(op_code_dict=od, keys=OpCodes.XSC_REBOOT_1_0, info="Reboot 1 0")
add_op_code_entry(op_code_dict=od, keys=OpCodes.XSC_REBOOT_1_1, info="Reboot 1 1")
add_op_code_entry(
op_code_dict=od,
keys=OpCodes.GET_HK,
info="Request housekeeping set",
)
add_op_code_entry(
op_code_dict=od,
keys=OpCodes.ENABLE_REBOOT_FILE_HANDLING,
info="Enable reboot file handling",
)
add_op_code_entry(
op_code_dict=od,
keys=OpCodes.DISABLE_REBOOT_FILE_HANDLING,
info="Disable reboot file handling",
)
add_op_code_entry(
op_code_dict=od,
keys=OpCodes.RESET_ALL_REBOOT_COUNTERS,
info="Reset all reboot counters",
)
add_op_code_entry(
op_code_dict=od,
keys=OpCodes.RESET_REBOOT_COUNTER_00,
info="Reset reboot counter 0 0",
)
add_op_code_entry(
op_code_dict=od,
keys=OpCodes.RESET_REBOOT_COUNTER_01,
info="Reset reboot counter 0 1",
)
add_op_code_entry(
op_code_dict=od,
keys=OpCodes.RESET_REBOOT_COUNTER_10,
info="Reset reboot counter 1 0",
)
add_op_code_entry(
op_code_dict=od,
keys=OpCodes.RESET_REBOOT_COUNTER_11,
info="Reset reboot counter 1 1",
)
add_service_op_code_entry(
srv_op_code_dict=cmd_dict,
name=CustomServiceList.CORE.value,
info="Core Controller",
op_code_entry=od,
)
def pack_core_commands(tc_queue: TcQueueT, op_code: str):
if op_code in OpCodes.REBOOT:
if op_code in OpCodes.REBOOT_XSC:
reboot_self, chip_select, copy_select = determine_reboot_params()
perform_reboot_cmd(
tc_queue=tc_queue,
@@ -65,31 +131,37 @@ def pack_core_commands(tc_queue: TcQueueT, op_code: str):
chip=chip_select,
copy=copy_select,
)
elif op_code in OpCodes.REBOOT_SELF:
if op_code in OpCodes.REBOOT_FULL:
tc_queue.appendleft((QueueCommands.PRINT, f"Core Command: {Info.REBOOT_FULL}"))
cmd = generate_action_command(
object_id=CORE_CONTROLLER_ID, action_id=ActionIds.FULL_REBOOT
)
tc_queue.appendleft(cmd.pack_command_tuple())
if op_code in OpCodes.XSC_REBOOT_SELF:
perform_reboot_cmd(tc_queue=tc_queue, reboot_self=True)
elif op_code in OpCodes.REBOOT_0_0:
if op_code in OpCodes.XSC_REBOOT_0_0:
perform_reboot_cmd(
tc_queue=tc_queue, reboot_self=False, chip=Chip.CHIP_0, copy=Copy.COPY_0_NOM
)
elif op_code in OpCodes.REBOOT_0_1:
if op_code in OpCodes.XSC_REBOOT_0_1:
perform_reboot_cmd(
tc_queue=tc_queue,
reboot_self=False,
chip=Chip.CHIP_0,
copy=Copy.COPY_1_GOLD,
)
elif op_code in OpCodes.REBOOT_1_0:
if op_code in OpCodes.XSC_REBOOT_1_0:
perform_reboot_cmd(
tc_queue=tc_queue, reboot_self=False, chip=Chip.CHIP_1, copy=Copy.COPY_0_NOM
)
elif op_code in OpCodes.REBOOT_1_1:
if op_code in OpCodes.XSC_REBOOT_1_1:
perform_reboot_cmd(
tc_queue=tc_queue,
reboot_self=False,
chip=Chip.CHIP_1,
copy=Copy.COPY_1_GOLD,
)
elif op_code in OpCodes.DISABLE_REBOOT_FILE_HANDLING:
if op_code in OpCodes.DISABLE_REBOOT_FILE_HANDLING:
tc_queue.appendleft((QueueCommands.PRINT, "Disabling reboot file handling"))
app_data = bytearray([0])
generate_action_command(
@@ -97,7 +169,7 @@ def pack_core_commands(tc_queue: TcQueueT, op_code: str):
action_id=ActionIds.SWITCH_REBOOT_FILE_HANDLING,
app_data=app_data,
)
elif op_code in OpCodes.ENABLE_REBOOT_FILE_HANDLING:
if op_code in OpCodes.ENABLE_REBOOT_FILE_HANDLING:
tc_queue.appendleft((QueueCommands.PRINT, "Enabling reboot file handling"))
app_data = bytearray([1])
generate_action_command(
@@ -105,32 +177,32 @@ def pack_core_commands(tc_queue: TcQueueT, op_code: str):
action_id=ActionIds.SWITCH_REBOOT_FILE_HANDLING,
app_data=app_data,
)
elif op_code in OpCodes.RESET_ALL_REBOOT_COUNTERS:
if op_code in OpCodes.RESET_ALL_REBOOT_COUNTERS:
tc_queue.appendleft((QueueCommands.PRINT, "Resetting all reboot counters"))
generate_action_command(
object_id=CORE_CONTROLLER_ID, action_id=ActionIds.RESET_ALL_REBOOT_COUNTERS
)
elif op_code in OpCodes.RESET_REBOOT_COUNTER_00:
if op_code in OpCodes.RESET_REBOOT_COUNTER_00:
tc_queue.appendleft((QueueCommands.PRINT, "Resetting reboot counter 0 0"))
generate_action_command(
object_id=CORE_CONTROLLER_ID, action_id=ActionIds.RESET_REBOOT_COUNTER_00
)
elif op_code in OpCodes.RESET_REBOOT_COUNTER_01:
if op_code in OpCodes.RESET_REBOOT_COUNTER_01:
tc_queue.appendleft((QueueCommands.PRINT, "Resetting reboot counter 0 1"))
generate_action_command(
object_id=CORE_CONTROLLER_ID, action_id=ActionIds.RESET_REBOOT_COUNTER_01
)
elif op_code in OpCodes.RESET_REBOOT_COUNTER_10:
if op_code in OpCodes.RESET_REBOOT_COUNTER_10:
tc_queue.appendleft((QueueCommands.PRINT, "Resetting reboot counter 1 0"))
generate_action_command(
object_id=CORE_CONTROLLER_ID, action_id=ActionIds.RESET_REBOOT_COUNTER_10
)
elif op_code in OpCodes.RESET_REBOOT_COUNTER_11:
if op_code in OpCodes.RESET_REBOOT_COUNTER_11:
tc_queue.appendleft((QueueCommands.PRINT, "Resetting reboot counter 1 1"))
generate_action_command(
object_id=CORE_CONTROLLER_ID, action_id=ActionIds.RESET_REBOOT_COUNTER_11
)
elif op_code in OpCodes.GET_HK:
if op_code in OpCodes.GET_HK:
tc_queue.appendleft((QueueCommands.PRINT, "Requesting housekeeping set"))
sid = make_sid(object_id=CORE_CONTROLLER_ID, set_id=SetIds.HK)
command = generate_one_hk_command(sid, 201)
@@ -192,7 +264,7 @@ def perform_reboot_cmd(
)
action_cmd = generate_action_command(
object_id=CORE_CONTROLLER_ID,
action_id=ActionIds.REBOOT,
action_id=ActionIds.XSC_REBOOT,
app_data=tc_data,
ssc=0,
)
+764
View File
@@ -0,0 +1,764 @@
from __future__ import annotations
import time
from typing import List
from config.definitions import CustomServiceList
from config.object_ids import get_object_ids
from pus_tc.system.tcs import pack_tcs_sys_commands
from tmtccmd.config import (
QueueCommands,
ServiceOpCodeDictT,
add_op_code_entry,
add_service_op_code_entry,
)
from tmtccmd.tc.definitions import TcQueueT
from tmtccmd.tc.pus_11_tc_sched import (
generate_time_tagged_cmd,
generate_enable_tc_sched_cmd,
generate_reset_tc_sched_cmd,
)
from tmtccmd.tc.pus_3_fsfw_hk import *
import config.object_ids as oids
from pus_tc.system.tcs import OpCodes as TcsOpCodes
from pus_tc.devs.bpx_batt import BpxSetIds
from pus_tc.system.core import SetIds as CoreSetIds
from gomspace.gomspace_common import SetIds as GsSetIds
from pus_tc.devs.rad_sensor import SetIds as RadSetIds
from pus_tc.devs.mgms import MgmLis3SetIds as MgmLis3SetIds_0_2
from pus_tc.devs.mgms import MgmRm3100SetIds as MgmRm3100SetIds_1_3
from pus_tc.devs.gyros import AdisGyroSetIds as AdisGyroSetIds_0_2
from pus_tc.devs.gyros import L3gGyroSetIds as L3gGyroSetIds_1_3
from pus_tc.devs.gps import SetIds as GpsSetIds
from pus_tc.devs.imtq import ImtqSetIds
from pus_tc.devs.sus import SetIds
from pus_tc.devs.star_tracker import SetIds as StrSetIds
from pus_tc.devs.reaction_wheels import RwSetIds
from pus_tc.system.controllers import pack_cmd_ctrl_to_off, pack_cmd_ctrl_to_nml
from pus_tc.system.acs import pack_acs_command, pack_sus_cmds
from pus_tc.devs.imtq import pack_imtq_test_into, pack_dipole_command
from pus_tc.devs.star_tracker import pack_star_tracker_commands
from pus_tc.devs.reaction_wheels import pack_rw_ass_cmds, pack_set_speed_command
class OpCodes:
TV_SETUP_TCS_FT_ON = ["s", "tcs-ft-on"]
RESET_SCHED = ["reset-sched", "rs"]
HEATER = ["heater"]
BAT_FT = ["bat-ft"]
CORE_FT = ["core-ft"]
PCDU_FT = ["pcdu-ft"]
RAD_SEN_FT = ["rad-sen-ft"]
ACS_FT = ["acs-ft"]
MGT_FT = ["mgt-ft"]
MGT_FT_DP = ["mgt-ft-dp"]
SUS_FT = ["sus-ft"]
STR_FT = ["str-ft"]
RW_FT_ONE_RW = ["rw-ft-one-rw"]
RW_FT_TWO_RWS = ["rw-ft-two-rws"]
TV_TEARDOWN_TCS_FT_OFF = ["t", "tcs-ft-off"]
class KeyAndInfo:
TV_SETUP_TCS_FT_ON = ["TCS Act.", "TCS functional test activation"]
RESET_SCHED = ["Reset Sched", "Reset/Clear TC schedule"]
HEATER = ["Heater", "heater procedure"]
BAT_FT = ["BPX Battery", "battery functional test"]
CORE_FT = ["OBC", "OBC functional test"]
PCDU_FT = ["PCDU", "PCDU functional test"]
RAD_SEN_FT = ["Radiation Sensor", "Radiation Sensor functional test"]
ACS_FT = ["ACS", "ACS functional test"]
MGT_FT = ["MGT", "MGT functional test"]
MGT_FT_DP = ["MGT dipole", "MGT functional test with dipole"]
SUS_FT = ["SUS", "SUS functional test"]
STR_FT = ["STR", "STR functional test"]
RW_FT_ONE_RW = ["RW ONE RW", "RW functional test with one RW"]
RW_FT_TWO_RWS = ["RW TWO RWS", "RW functional test with two RWs"]
TV_TEARDOWN_TCS_FT_OFF = ["TCS Deact.", "TCS functional test deactivation"]
KAI = KeyAndInfo
PROC_INFO_DICT = {
KAI.TV_SETUP_TCS_FT_ON[0]: [OpCodes.TV_SETUP_TCS_FT_ON, KAI.TV_SETUP_TCS_FT_ON[1], 120.0, 10.0],
KAI.TV_TEARDOWN_TCS_FT_OFF[0]: [
OpCodes.TV_TEARDOWN_TCS_FT_OFF,
KAI.TV_TEARDOWN_TCS_FT_OFF[1],
120.0,
10.0,
],
KAI.BAT_FT[0]: [OpCodes.BAT_FT, KAI.BAT_FT[1], 120.0, 10.0],
KAI.CORE_FT[0]: [OpCodes.CORE_FT, KAI.CORE_FT[1], 120.0, 10.0],
KAI.PCDU_FT[0]: [OpCodes.PCDU_FT, KAI.PCDU_FT[1], 120.0, 10.0],
KAI.RAD_SEN_FT[0]: [OpCodes.RAD_SEN_FT, KAI.RAD_SEN_FT[1], 120.0, 10.0],
KAI.ACS_FT[0]: [OpCodes.ACS_FT, KAI.ACS_FT[1], 120.0, 10.0],
KAI.MGT_FT[0]: [OpCodes.MGT_FT, KAI.MGT_FT[1], 120.0, 10.0],
# collection_time for KAI.MGT_FT_DP maybe be reduced as a full 120
# seconds is not needed after MGTs are tested
KAI.MGT_FT_DP[0]: [OpCodes.MGT_FT_DP, KAI.MGT_FT_DP[1], 10.0, 10.0],
KAI.SUS_FT[0]: [OpCodes.SUS_FT, KAI.SUS_FT[1], 120.0, 10.0],
KAI.STR_FT[0]: [OpCodes.STR_FT, KAI.STR_FT[1], 120.0, 10.0],
# collection_time for KAI.RW_FT_ONE_RW maybe be reduced as a full 120
# seconds is not needed after RWs are tested
KAI.RW_FT_ONE_RW[0]: [OpCodes.RW_FT_ONE_RW, KAI.RW_FT_ONE_RW[1], 10.0, 1.0],
# collection_time for KAI.RW_FT_ONE_RW maybe be reduced as a full 120
# seconds is not needed after RWs are tested
KAI.RW_FT_TWO_RWS[0]: [OpCodes.RW_FT_TWO_RWS, KAI.RW_FT_TWO_RWS[1], 10.0, 1.0],
}
class GenericHkListeningCfg:
def __init__(self, mgt: bool = False, one_rw: bool = False, two_rws: bool = False):
self.use_tc_sched = False
self.mgt = mgt
self.one_rw = one_rw
self.two_rws = two_rws
@classmethod
def default(cls) -> GenericHkListeningCfg:
return GenericHkListeningCfg(False, False, False)
def generic_print(tc_queue: TcQueueT, info: dict):
tc_queue.appendleft(
(QueueCommands.PRINT, f"Executing {info[1]} Procedure (OpCodes: {info[0]})")
)
def add_proc_cmds(cmd_dict: ServiceOpCodeDictT):
op_code_dict = dict()
for proc_entry in PROC_INFO_DICT.values():
add_op_code_entry(
op_code_dict=op_code_dict, keys=proc_entry[0], info=proc_entry[1]
)
add_service_op_code_entry(
srv_op_code_dict=cmd_dict,
name=CustomServiceList.PROCEDURE.value,
info="TV Test Procedures",
op_code_entry=op_code_dict,
)
def pack_generic_hk_listening_cmds(
tc_queue: TcQueueT,
proc_key: str,
sid_list: list[bytearray],
diag: bool,
cfg: GenericHkListeningCfg,
):
info = PROC_INFO_DICT[proc_key]
collection_time = info[2]
generic_print(tc_queue=tc_queue, info=info)
for sid in sid_list:
enable_listen_to_hk_for_x_seconds(
diag=diag,
tc_queue=tc_queue,
device=proc_key,
sid=sid,
interval_seconds=info[3],
)
if not cfg.use_tc_sched:
tc_queue.appendleft((QueueCommands.WAIT, 2.0))
if cfg.mgt:
activate_mgts_alternately(
tc_queue=tc_queue,
)
elif cfg.one_rw:
activate_all_rws_in_sequence(
tc_queue=tc_queue, test_speed=20000, test_ramp_time=10000, init_ssc=0
)
elif cfg.two_rws:
activate_all_rws_two_consecutively(tc_queue=tc_queue, init_ssc=0)
else:
pass
if not cfg.use_tc_sched:
tc_queue.appendleft((QueueCommands.WAIT, collection_time))
disable_cmd_list = []
for sid in sid_list:
disable_cmd_list.append(
gen_disable_listen_to_hk_for_x_seconds(
diag=diag,
tc_queue=tc_queue,
device=proc_key,
sid=sid,
)
)
current_time = time.time()
current_time += collection_time
if not cfg.use_tc_sched:
for cmd in disable_cmd_list:
tc_queue.appendleft(cmd.pack_command_tuple())
else:
for cmd in disable_cmd_list:
tc_queue.appendleft(
generate_time_tagged_cmd(
release_time=struct.pack("!I", current_time),
tc_to_insert=cmd,
ssc=0,
)
)
sid_list.clear()
def pack_proc_commands(tc_queue: TcQueueT, op_code: str):
sid_list = []
obj_id_dict = get_object_ids()
if op_code in OpCodes.RESET_SCHED:
tc_queue.appendleft((QueueCommands.PRINT, "Resetting/Clearing TC schedule"))
tc_queue.appendleft(generate_reset_tc_sched_cmd().pack_command_tuple())
if op_code in OpCodes.BAT_FT:
key = KAI.BAT_FT[0]
sid_list.append(make_sid(oids.BPX_HANDLER_ID, BpxSetIds.GET_HK_SET))
pack_generic_hk_listening_cmds(
tc_queue=tc_queue,
proc_key=key,
sid_list=sid_list,
diag=False,
cfg=GenericHkListeningCfg.default(),
)
if op_code in OpCodes.CORE_FT:
key = KAI.CORE_FT[0]
sid_list.append(make_sid(oids.CORE_CONTROLLER_ID, CoreSetIds.HK))
pack_generic_hk_listening_cmds(
tc_queue=tc_queue,
proc_key=key,
sid_list=sid_list,
diag=False,
cfg=GenericHkListeningCfg.default(),
)
if op_code in OpCodes.PCDU_FT:
key = KAI.PCDU_FT[0]
pcdu_pairs = [
(oids.P60_DOCK_HANDLER, GsSetIds.P60_CORE),
(oids.PDU_1_HANDLER_ID, GsSetIds.PDU_1_CORE),
(oids.PDU_2_HANDLER_ID, GsSetIds.PDU_2_CORE),
(oids.ACU_HANDLER_ID, GsSetIds.ACU_CORE),
(oids.P60_DOCK_HANDLER, GsSetIds.P60_AUX),
(oids.PDU_1_HANDLER_ID, GsSetIds.PDU_1_AUX),
(oids.PDU_2_HANDLER_ID, GsSetIds.PDU_2_AUX),
(oids.ACU_HANDLER_ID, GsSetIds.ACU_AUX),
]
for pcdu_dev in pcdu_pairs:
oid = pcdu_dev[0]
set_id = pcdu_dev[1]
sid_list.append(make_sid(oid, set_id))
pack_generic_hk_listening_cmds(
tc_queue=tc_queue,
proc_key=key,
sid_list=sid_list,
diag=False,
cfg=GenericHkListeningCfg.default(),
)
if op_code in OpCodes.RAD_SEN_FT:
key = KAI.RAD_SEN_FT[0]
sid_list.append(make_sid(oids.RAD_SENSOR_ID, RadSetIds.HK))
pack_generic_hk_listening_cmds(
tc_queue=tc_queue,
proc_key=key,
sid_list=sid_list,
diag=False,
cfg=GenericHkListeningCfg.default(),
)
if op_code in OpCodes.TV_SETUP_TCS_FT_ON:
# Enable scheduling
tc_queue.appendleft(generate_enable_tc_sched_cmd().pack_command_tuple())
# check whether tcs_assembly also has to be commanded to NORMAL Mode
pack_tcs_sys_commands(
tc_queue=tc_queue, op_code=TcsOpCodes.TCS_BOARD_ASS_NORMAL[0]
)
pack_cmd_ctrl_to_nml(
tc_queue=tc_queue, object_id=obj_id_dict.get(oids.THERMAL_CONTROLLER_ID)
)
if op_code in OpCodes.TV_TEARDOWN_TCS_FT_OFF:
# TCS board should always be on anyway, do not command it off here
pack_cmd_ctrl_to_off(
tc_queue=tc_queue, object_id=obj_id_dict.get(oids.THERMAL_CONTROLLER_ID)
)
if op_code in OpCodes.ACS_FT:
key = KAI.ACS_FT[0]
a_side_pairs = [
(oids.MGM_0_LIS3_HANDLER_ID, MgmLis3SetIds_0_2.CORE_HK),
(oids.MGM_1_RM3100_HANDLER_ID, MgmRm3100SetIds_1_3.CORE_HK),
(oids.GYRO_0_ADIS_HANDLER_ID, AdisGyroSetIds_0_2.CORE_HK),
(oids.GYRO_1_L3G_HANDLER_ID, L3gGyroSetIds_1_3.CORE_HK),
(oids.GPS_CONTROLLER, GpsSetIds.HK),
]
b_side_pairs = [
(oids.MGM_2_LIS3_HANDLER_ID, MgmLis3SetIds_0_2.CORE_HK),
(oids.MGM_3_RM3100_HANDLER_ID, MgmRm3100SetIds_1_3.CORE_HK),
(oids.GYRO_2_ADIS_HANDLER_ID, AdisGyroSetIds_0_2.CORE_HK),
(oids.GYRO_3_L3G_HANDLER_ID, L3gGyroSetIds_1_3.CORE_HK),
(oids.GPS_CONTROLLER, GpsSetIds.HK),
]
d_side_pairs = a_side_pairs + b_side_pairs
pack_acs_command(tc_queue=tc_queue, op_code="acs-a")
for a_side_dev in a_side_pairs:
oid = a_side_dev[0]
set_id = a_side_dev[1]
sid_list.append(make_sid(oid, set_id))
pack_generic_hk_listening_cmds(
tc_queue=tc_queue,
proc_key=key,
sid_list=sid_list,
diag=False,
cfg=GenericHkListeningCfg.default(),
)
pack_acs_command(tc_queue=tc_queue, op_code="acs-off")
tc_queue.appendleft((QueueCommands.WAIT, 5.0))
pack_acs_command(tc_queue=tc_queue, op_code="acs-b")
for b_side_dev in b_side_pairs:
oid = b_side_dev[0]
set_id = b_side_dev[1]
sid_list.append(make_sid(oid, set_id))
pack_generic_hk_listening_cmds(
tc_queue=tc_queue,
proc_key=key,
sid_list=sid_list,
diag=False,
cfg=GenericHkListeningCfg.default(),
)
pack_acs_command(tc_queue=tc_queue, op_code="acs-off")
tc_queue.appendleft((QueueCommands.WAIT, 5.0))
pack_acs_command(tc_queue=tc_queue, op_code="acs-d")
for d_side_dev in d_side_pairs:
oid = d_side_dev[0]
set_id = d_side_dev[1]
sid_list.append(make_sid(oid, set_id))
pack_generic_hk_listening_cmds(
tc_queue=tc_queue,
proc_key=key,
sid_list=sid_list,
diag=False,
cfg=GenericHkListeningCfg.default(),
)
pack_acs_command(tc_queue=tc_queue, op_code="acs-off")
if op_code in OpCodes.MGT_FT:
key = KAI.MGT_FT[0]
imtq_pairs = [
(oids.IMTQ_HANDLER_ID, ImtqSetIds.ENG_HK_SET),
(oids.IMTQ_HANDLER_ID, ImtqSetIds.CAL_MTM_SET),
(oids.IMTQ_HANDLER_ID, ImtqSetIds.RAW_MTM_SET),
]
# mgt 1: imtq und hk
pack_imtq_test_into(oids.IMTQ_HANDLER_ID, tc_queue=tc_queue, op_code="2")
for imtq_dev in imtq_pairs:
oid = imtq_dev[0]
set_id = imtq_dev[1]
sid_list.append(make_sid(oid, set_id))
pack_generic_hk_listening_cmds(
tc_queue=tc_queue, proc_key=key, sid_list=sid_list, diag=False, cfg=GenericHkListeningCfg.default()
)
pack_imtq_test_into(oids.IMTQ_HANDLER_ID, tc_queue=tc_queue, op_code="0")
if op_code in OpCodes.MGT_FT_DP:
key = KAI.MGT_FT_DP[0]
a_side_pairs = [
(oids.MGM_0_LIS3_HANDLER_ID, MgmLis3SetIds_0_2.CORE_HK),
(oids.MGM_1_RM3100_HANDLER_ID, MgmRm3100SetIds_1_3.CORE_HK),
(oids.GYRO_0_ADIS_HANDLER_ID, AdisGyroSetIds_0_2.CORE_HK),
(oids.GYRO_1_L3G_HANDLER_ID, L3gGyroSetIds_1_3.CORE_HK),
(oids.GPS_CONTROLLER, GpsSetIds.HK),
]
b_side_pairs = [
(oids.MGM_2_LIS3_HANDLER_ID, MgmLis3SetIds_0_2.CORE_HK),
(oids.MGM_3_RM3100_HANDLER_ID, MgmRm3100SetIds_1_3.CORE_HK),
(oids.GYRO_2_ADIS_HANDLER_ID, AdisGyroSetIds_0_2.CORE_HK),
(oids.GYRO_3_L3G_HANDLER_ID, L3gGyroSetIds_1_3.CORE_HK),
(oids.GPS_CONTROLLER, GpsSetIds.HK),
]
imtq_pairs = [
(oids.IMTQ_HANDLER_ID, ImtqSetIds.ENG_HK_SET),
(oids.IMTQ_HANDLER_ID, ImtqSetIds.CAL_MTM_SET),
(oids.IMTQ_HANDLER_ID, ImtqSetIds.RAW_MTM_SET),
]
d_side_and_imtq_pairs = a_side_pairs + b_side_pairs + imtq_pairs
pack_acs_command(tc_queue=tc_queue, op_code="acs-d")
# mgt 2.: imtq + dual side + dipole
pack_imtq_test_into(
object_id=oids.IMTQ_HANDLER_ID, tc_queue=tc_queue, op_code="2"
)
for d_side_and_imtq_dev in d_side_and_imtq_pairs:
oid = d_side_and_imtq_dev[0]
set_id = d_side_and_imtq_dev[1]
sid_list.append(make_sid(oid, set_id))
cfg = GenericHkListeningCfg.default()
cfg.mgt = True
pack_generic_hk_listening_cmds(
tc_queue=tc_queue,
proc_key=key,
sid_list=sid_list,
diag=False,
cfg=cfg,
)
pack_imtq_test_into(oids.IMTQ_HANDLER_ID, tc_queue=tc_queue, op_code="0")
pack_acs_command(tc_queue=tc_queue, op_code="acs-off")
if op_code in OpCodes.SUS_FT:
key = KAI.SUS_FT[0]
pack_sus_cmds(tc_queue=tc_queue, op_code="sus-nom")
sus_n_ids = [
oids.SUS_0_N_LOC_XFYFZM_PT_XF,
oids.SUS_1_N_LOC_XBYFZM_PT_XB,
oids.SUS_2_N_LOC_XFYBZB_PT_YB,
oids.SUS_3_N_LOC_XFYBZF_PT_YF,
oids.SUS_4_N_LOC_XMYFZF_PT_ZF,
oids.SUS_5_N_LOC_XFYMZB_PT_ZB,
]
sus_r_ids = [
oids.SUS_6_R_LOC_XFYBZM_PT_XF,
oids.SUS_7_R_LOC_XBYBZM_PT_XB,
oids.SUS_8_R_LOC_XBYBZB_PT_YB,
oids.SUS_9_R_LOC_XBYBZB_PT_YF,
oids.SUS_10_R_LOC_XMYBZF_PT_ZF,
oids.SUS_11_R_LOC_XBYMZB_PT_ZB,
]
# SUSs
for nom_sus in sus_n_ids:
sid_list.append(make_sid(nom_sus, SetIds.HK))
pack_generic_hk_listening_cmds(
tc_queue=tc_queue,
proc_key=key,
sid_list=sid_list,
diag=False,
cfg=GenericHkListeningCfg.default(),
)
pack_acs_command(tc_queue=tc_queue, op_code="sus-off")
tc_queue.appendleft((QueueCommands.WAIT, 5.0))
pack_sus_cmds(tc_queue=tc_queue, op_code="sus-red")
# SUSs
for red_sus in sus_r_ids:
sid_list.append(make_sid(red_sus, SetIds.HK))
pack_generic_hk_listening_cmds(
tc_queue=tc_queue,
proc_key=key,
sid_list=sid_list,
diag=False,
cfg=GenericHkListeningCfg.default(),
)
pack_acs_command(tc_queue=tc_queue, op_code="sus-off")
tc_queue.appendleft((QueueCommands.WAIT, 5.0))
pack_sus_cmds(tc_queue=tc_queue, op_code="sus-d")
# SUSs
for nom_sus in sus_n_ids:
sid_list.append(make_sid(nom_sus, SetIds.HK))
for red_sus in sus_r_ids:
sid_list.append(make_sid(red_sus, SetIds.HK))
pack_generic_hk_listening_cmds(
tc_queue=tc_queue,
proc_key=key,
sid_list=sid_list,
diag=False,
cfg=GenericHkListeningCfg.default(),
)
pack_acs_command(tc_queue=tc_queue, op_code="sus-off")
if op_code in OpCodes.STR_FT:
key = KAI.STR_FT[0]
pack_star_tracker_commands(
object_id=oids.STAR_TRACKER_ID, tc_queue=tc_queue, op_code="2"
)
# STR
sid_list.append(make_sid(oids.STAR_TRACKER_ID, StrSetIds.TEMPERATURE))
pack_generic_hk_listening_cmds(
tc_queue=tc_queue,
proc_key=key,
sid_list=sid_list,
diag=False,
cfg=GenericHkListeningCfg.default(),
)
pack_star_tracker_commands(
object_id=oids.STAR_TRACKER_ID, tc_queue=tc_queue, op_code="3"
)
if op_code in OpCodes.RW_FT_ONE_RW:
key = KAI.RW_FT_ONE_RW[0]
rw_pairs = [
(oids.RW1_ID, RwSetIds.STATUS_SET_ID),
(oids.RW1_ID, RwSetIds.TEMPERATURE_SET_ID),
(oids.RW1_ID, RwSetIds.LAST_RESET),
(oids.RW1_ID, RwSetIds.TM_SET),
(oids.RW2_ID, RwSetIds.STATUS_SET_ID),
(oids.RW2_ID, RwSetIds.TEMPERATURE_SET_ID),
(oids.RW2_ID, RwSetIds.LAST_RESET),
(oids.RW2_ID, RwSetIds.TM_SET),
(oids.RW3_ID, RwSetIds.STATUS_SET_ID),
(oids.RW3_ID, RwSetIds.TEMPERATURE_SET_ID),
(oids.RW3_ID, RwSetIds.LAST_RESET),
(oids.RW3_ID, RwSetIds.TM_SET),
(oids.RW4_ID, RwSetIds.STATUS_SET_ID),
(oids.RW4_ID, RwSetIds.TEMPERATURE_SET_ID),
(oids.RW4_ID, RwSetIds.LAST_RESET),
(oids.RW4_ID, RwSetIds.TM_SET),
]
# RW NORMAL
pack_rw_ass_cmds(object_id=oids.RW_ASSEMBLY, tc_queue=tc_queue, op_code="nml")
# RW HK für alle RWs nur einzeln
for rw_dev in rw_pairs:
oid = rw_dev[0]
set_id = rw_dev[1]
sid_list.append(make_sid(oid, set_id))
pack_generic_hk_listening_cmds(
tc_queue=tc_queue,
proc_key=key,
sid_list=sid_list,
diag=False,
cfg=GenericHkListeningCfg(mgt=False, one_rw=True, two_rws=False),
)
# RW OFF
pack_rw_ass_cmds(object_id=oids.RW_ASSEMBLY, tc_queue=tc_queue, op_code="off")
# ass command with 2 rws to speed
if op_code in OpCodes.RW_FT_TWO_RWS:
key = KAI.RW_FT_TWO_RWS[0]
rw_pairs = [
(oids.RW1_ID, RwSetIds.STATUS_SET_ID),
(oids.RW1_ID, RwSetIds.TEMPERATURE_SET_ID),
(oids.RW1_ID, RwSetIds.LAST_RESET),
(oids.RW1_ID, RwSetIds.TM_SET),
(oids.RW2_ID, RwSetIds.STATUS_SET_ID),
(oids.RW2_ID, RwSetIds.TEMPERATURE_SET_ID),
(oids.RW2_ID, RwSetIds.LAST_RESET),
(oids.RW2_ID, RwSetIds.TM_SET),
(oids.RW3_ID, RwSetIds.STATUS_SET_ID),
(oids.RW3_ID, RwSetIds.TEMPERATURE_SET_ID),
(oids.RW3_ID, RwSetIds.LAST_RESET),
(oids.RW3_ID, RwSetIds.TM_SET),
(oids.RW4_ID, RwSetIds.STATUS_SET_ID),
(oids.RW4_ID, RwSetIds.TEMPERATURE_SET_ID),
(oids.RW4_ID, RwSetIds.LAST_RESET),
(oids.RW4_ID, RwSetIds.TM_SET),
]
# RW NORMAL
pack_rw_ass_cmds(object_id=oids.RW_ASSEMBLY, tc_queue=tc_queue, op_code="nml")
# RW
for rw_dev in rw_pairs:
oid = rw_dev[0]
set_id = rw_dev[1]
sid_list.append(make_sid(oid, set_id))
pack_generic_hk_listening_cmds(
tc_queue=tc_queue,
proc_key=key,
sid_list=sid_list,
diag=False,
cfg=GenericHkListeningCfg(mgt=False, one_rw=False, two_rws=True),
)
# RW OFF
pack_rw_ass_cmds(object_id=oids.RW_ASSEMBLY, tc_queue=tc_queue, op_code="off")
def enable_listen_to_hk_for_x_seconds(
tc_queue: TcQueueT,
diag: bool,
device: str,
sid: bytes,
interval_seconds: float,
):
tc_queue.appendleft((QueueCommands.PRINT, f"Enabling periodic HK for {device}"))
cmd_tuple = enable_periodic_hk_command_with_interval(
diag=diag, sid=sid, interval_seconds=interval_seconds, ssc=0
)
for cmd in cmd_tuple:
tc_queue.appendleft(cmd.pack_command_tuple())
def gen_disable_listen_to_hk_for_x_seconds(
tc_queue: TcQueueT,
diag: bool,
device: str,
sid: bytes,
) -> PusTelecommand:
tc_queue.appendleft((QueueCommands.PRINT, f"Disabling periodic HK for {device}"))
return disable_periodic_hk_command(diag=diag, sid=sid, ssc=0)
def activate_mgts_alternately(
tc_queue: TcQueueT,
):
command = pack_dipole_command(
object_id=oids.IMTQ_HANDLER_ID,
x_dipole=2000,
y_dipole=0,
z_dipole=0,
duration=30000,
)
tc_queue.appendleft(command.pack_command_tuple())
tc_queue.appendleft((QueueCommands.WAIT, 40.0))
command = pack_dipole_command(
object_id=oids.IMTQ_HANDLER_ID,
x_dipole=-2000,
y_dipole=0,
z_dipole=0,
duration=30000,
)
tc_queue.appendleft(command.pack_command_tuple())
tc_queue.appendleft((QueueCommands.WAIT, 40.0))
command = pack_dipole_command(
object_id=oids.IMTQ_HANDLER_ID,
x_dipole=0,
y_dipole=2000,
z_dipole=0,
duration=30000,
)
tc_queue.appendleft(command.pack_command_tuple())
tc_queue.appendleft((QueueCommands.WAIT, 40.0))
command = pack_dipole_command(
object_id=oids.IMTQ_HANDLER_ID,
x_dipole=0,
y_dipole=-2000,
z_dipole=0,
duration=30000,
)
tc_queue.appendleft(command.pack_command_tuple())
tc_queue.appendleft((QueueCommands.WAIT, 40.0))
command = pack_dipole_command(
object_id=oids.IMTQ_HANDLER_ID,
x_dipole=0,
y_dipole=0,
z_dipole=2000,
duration=30000,
)
tc_queue.appendleft(command.pack_command_tuple())
tc_queue.appendleft((QueueCommands.WAIT, 40.0))
command = pack_dipole_command(
object_id=oids.IMTQ_HANDLER_ID,
x_dipole=0,
y_dipole=0,
z_dipole=-2000,
duration=30000,
)
tc_queue.appendleft(command.pack_command_tuple())
tc_queue.appendleft((QueueCommands.WAIT, 40.0))
def rw_speed_cmd_single(
tc_queue: TcQueueT, oid: bytes, init_ssc: int, speed: int, ramp_time: int
) -> int:
command = pack_set_speed_command(
object_id=oid, speed=speed, ramp_time_ms=ramp_time, ssc=init_ssc
)
init_ssc += 1
tc_queue.appendleft(command.pack_command_tuple())
tc_queue.appendleft((QueueCommands.WAIT, 70.0))
command = pack_set_speed_command(
object_id=oid, speed=0, ramp_time_ms=ramp_time, ssc=init_ssc
)
tc_queue.appendleft(command.pack_command_tuple())
return init_ssc + 1
def rw_speed_up_cmd_consec(
tc_queue: TcQueueT, obids: List[bytes], init_ssc: int, speed: int, ramp_time: int
) -> int:
for oid in obids:
command = pack_set_speed_command(
object_id=oid, speed=speed, ramp_time_ms=ramp_time, ssc=init_ssc
)
tc_queue.appendleft(command.pack_command_tuple())
init_ssc += 1
return init_ssc
def rw_speed_down_cmd_consec(
tc_queue: TcQueueT, obids: List[bytes], init_ssc: int, ramp_time: int
) -> int:
for oid in obids:
command = pack_set_speed_command(
object_id=oid, speed=0, ramp_time_ms=ramp_time, ssc=init_ssc
)
tc_queue.appendleft(command.pack_command_tuple())
init_ssc += 1
return init_ssc
def activate_all_rws_in_sequence(
tc_queue: TcQueueT, init_ssc: int, test_speed: int, test_ramp_time: int
) -> int:
new_ssc = init_ssc
# RW1 speed cmd
tc_queue.appendleft((QueueCommands.WAIT, 5.0))
new_ssc = rw_speed_cmd_single(
tc_queue, oids.RW1_ID, new_ssc, test_speed, test_ramp_time
)
tc_queue.appendleft((QueueCommands.WAIT, 15.0))
new_ssc = rw_speed_cmd_single(
tc_queue, oids.RW2_ID, new_ssc, test_speed, test_ramp_time
)
tc_queue.appendleft((QueueCommands.WAIT, 15.0))
new_ssc = rw_speed_cmd_single(
tc_queue, oids.RW3_ID, new_ssc, test_speed, test_ramp_time
)
tc_queue.appendleft((QueueCommands.WAIT, 15.0))
new_ssc = rw_speed_cmd_single(
tc_queue, oids.RW4_ID, new_ssc, test_speed, test_ramp_time
)
tc_queue.appendleft((QueueCommands.WAIT, 15.0))
return new_ssc
def activate_all_rws_two_consecutively(tc_queue: TcQueueT, init_ssc: int) -> int:
new_ssc = init_ssc
# RW1+3 speed cmd
tc_queue.appendleft((QueueCommands.WAIT, 5.0))
new_ssc = rw_speed_up_cmd_consec(
tc_queue, [oids.RW1_ID, oids.RW3_ID], new_ssc, -20000, 10000
)
tc_queue.appendleft((QueueCommands.WAIT, 70.0))
new_ssc = rw_speed_down_cmd_consec(
tc_queue, [oids.RW1_ID, oids.RW3_ID], new_ssc, 10000
)
tc_queue.appendleft((QueueCommands.WAIT, 15.0))
# RW2+4 speed cmd
new_ssc = rw_speed_up_cmd_consec(
tc_queue, [oids.RW2_ID, oids.RW4_ID], new_ssc, -20000, 10000
)
tc_queue.appendleft((QueueCommands.WAIT, 70.0))
new_ssc = rw_speed_down_cmd_consec(
tc_queue, [oids.RW2_ID, oids.RW4_ID], new_ssc, 10000
)
tc_queue.appendleft((QueueCommands.WAIT, 15.0))
return new_ssc
+3 -3
View File
@@ -1,7 +1,7 @@
from tmtccmd.tc.definitions import TcQueueT, QueueCommands
from tmtccmd.tc.pus_200_fsfw_modes import Modes
from .common import command_assembly
from .common import command_mode
from config.object_ids import TCS_BOARD_ASS_ID
@@ -17,7 +17,7 @@ class Info:
def pack_tcs_sys_commands(tc_queue: TcQueueT, op_code: str):
if op_code in OpCodes.TCS_BOARD_ASS_NORMAL:
command_assembly(
command_mode(
object_id=TCS_BOARD_ASS_ID,
mode=Modes.NORMAL,
submode=0,
@@ -25,7 +25,7 @@ def pack_tcs_sys_commands(tc_queue: TcQueueT, op_code: str):
info=Info.TCS_BOARD_ASS_NORMAL,
)
if op_code in OpCodes.TCS_BOARD_ASS_OFF:
command_assembly(
command_mode(
object_id=TCS_BOARD_ASS_ID,
mode=Modes.OFF,
submode=0,
+26 -17
View File
@@ -5,6 +5,7 @@ import os
from collections import deque
from typing import Union
from pus_tc.devs.rtd import pack_rtd_commands
from spacepackets.ecss import PusTelecommand
from tmtccmd.com_if.com_interface_base import CommunicationInterface
from tmtccmd.config.definitions import CoreServiceList, QueueCommands
@@ -20,7 +21,7 @@ from pus_tc.devs.p60dock import pack_p60dock_cmds
from pus_tc.devs.pdu2 import pack_pdu2_commands
from pus_tc.devs.pdu1 import pack_pdu1_commands
from pus_tc.devs.bpx_batt import pack_bpx_commands
from pus_tc.devs.acu import pack_acu_test_into
from pus_tc.devs.acu import pack_acu_commands
from pus_tc.devs.solar_array_deployment import pack_solar_array_deployment_test_into
from pus_tc.devs.imtq import pack_imtq_test_into
from pus_tc.devs.tmp1075 import pack_tmp1075_test_into
@@ -40,8 +41,11 @@ from pus_tc.system.acs import pack_acs_command, pack_sus_cmds
from pus_tc.devs.plpcdu import pack_pl_pcdu_commands
from pus_tc.devs.str_img_helper import pack_str_img_helper_command
from pus_tc.system.tcs import pack_tcs_sys_commands
from pus_tc.system.proc import pack_proc_commands
from pus_tc.system.controllers import pack_cmd_ctrl_to_prompted_mode
from config.definitions import CustomServiceList
from config.object_ids import (
get_object_ids,
P60_DOCK_HANDLER,
PDU_1_HANDLER_ID,
PDU_2_HANDLER_ID,
@@ -59,16 +63,16 @@ from config.object_ids import (
PLOC_SUPV_ID,
STAR_TRACKER_ID,
PLOC_MEMORY_DUMPER_ID,
GPS_HANDLER_0_ID,
GPS_HANDLER_1_ID,
GPS_CONTROLLER,
CCSDS_HANDLER_ID,
PDEC_HANDLER_ID,
STR_IMG_HELPER_ID,
SYRLINKS_HANDLER_ID,
SOLAR_ARRAY_DEPLOYMENT_ID,
RW_ASSEMBLY,
get_object_ids,
)
import config.object_ids as oids
LOGGER = get_console_logger()
@@ -96,6 +100,7 @@ def pre_tc_send_cb(
def pack_service_queue_user(
service: Union[str, int], op_code: str, service_queue: TcQueueT
):
obj_id_man = get_object_ids()
if service == CoreServiceList.SERVICE_5.value:
return pack_generic_service5_test_into(tc_queue=service_queue)
if service == CoreServiceList.SERVICE_17.value:
@@ -105,23 +110,27 @@ def pack_service_queue_user(
if service == CoreServiceList.SERVICE_200.value:
return pack_service200_test_into(tc_queue=service_queue)
if service == CustomServiceList.P60DOCK.value:
object_id = P60_DOCK_HANDLER
object_id = obj_id_man.get(P60_DOCK_HANDLER)
return pack_p60dock_cmds(
object_id=object_id, tc_queue=service_queue, op_code=op_code
)
if service == CustomServiceList.RTD.value:
return pack_rtd_commands(
object_id=None, tc_queue=service_queue, op_code=op_code
)
if service == CustomServiceList.PDU1.value:
object_id = PDU_1_HANDLER_ID
object_id = obj_id_man.get(PDU_1_HANDLER_ID)
return pack_pdu1_commands(
object_id=object_id, tc_queue=service_queue, op_code=op_code
)
if service == CustomServiceList.PDU2.value:
object_id = PDU_2_HANDLER_ID
object_id = obj_id_man.get(PDU_2_HANDLER_ID)
return pack_pdu2_commands(
object_id=object_id, tc_queue=service_queue, op_code=op_code
)
if service == CustomServiceList.ACU.value:
object_id = ACU_HANDLER_ID
return pack_acu_test_into(
object_id = obj_id_man.get(ACU_HANDLER_ID)
return pack_acu_commands(
object_id=object_id, tc_queue=service_queue, op_code=op_code
)
if service == CustomServiceList.BPX_BATTERY.value:
@@ -168,7 +177,7 @@ def pack_service_queue_user(
object_id=RW4_ID, rw_idx=4, tc_queue=service_queue, op_code=op_code
)
if service == CustomServiceList.RAD_SENSOR.value:
object_id = RAD_SENSOR_ID
object_id = obj_id_man.get(RAD_SENSOR_ID)
return pack_rad_sensor_test_into(
object_id=object_id, tc_queue=service_queue, op_code=op_code
)
@@ -196,13 +205,9 @@ def pack_service_queue_user(
)
if service == CustomServiceList.ACS.value:
return pack_acs_command(tc_queue=service_queue, op_code=op_code)
if service == CustomServiceList.GPS_0.value:
if service == CustomServiceList.GPS_CTRL.value:
return pack_gps_command(
object_id=GPS_HANDLER_0_ID, tc_queue=service_queue, op_code=op_code
)
if service == CustomServiceList.GPS_1.value:
return pack_gps_command(
object_id=GPS_HANDLER_1_ID, tc_queue=service_queue, op_code=op_code
object_id=oids.GPS_CONTROLLER, tc_queue=service_queue, op_code=op_code
)
if service == CustomServiceList.CCSDS_HANDLER.value:
return pack_ccsds_handler_test(
@@ -220,6 +225,8 @@ def pack_service_queue_user(
return pack_solar_array_deployment_test_into(
object_id=SOLAR_ARRAY_DEPLOYMENT_ID, tc_queue=service_queue
)
if service == CustomServiceList.PROCEDURE.value:
return pack_proc_commands(tc_queue=service_queue, op_code=op_code)
if service == CustomServiceList.SUS_ASS.value:
return pack_sus_cmds(tc_queue=service_queue, op_code=op_code)
if service == CustomServiceList.PL_PCDU.value:
@@ -234,7 +241,9 @@ def pack_service_queue_user(
return pack_rw_ass_cmds(
tc_queue=service_queue, object_id=RW_ASSEMBLY, op_code=op_code
)
LOGGER.warning("Invalid Service !")
if service == CustomServiceList.CONTROLLERS.value:
return pack_controller_commands(tc_queue=service_queue, op_code=op_code)
LOGGER.warning(f"Invalid Service {service}")
def create_total_tc_queue_user() -> TcQueueT:
+66
View File
@@ -0,0 +1,66 @@
import struct
from pus_tc.devs.bpx_batt import BpxSetIds
from pus_tm.defs import PrintWrapper
from tmtccmd.utility.tmtc_printer import FsfwTmTcPrinter
def handle_bpx_hk_data(printer: FsfwTmTcPrinter, set_id: int, hk_data: bytes):
pw = PrintWrapper(printer)
if set_id == BpxSetIds.GET_HK_SET:
fmt_str = "!HHHHhhhhIB"
inc_len = struct.calcsize(fmt_str)
(
charge_current,
discharge_current,
heater_current,
batt_voltage,
batt_temp_1,
batt_temp_2,
batt_temp_3,
batt_temp_4,
reboot_cntr,
boot_cause,
) = struct.unpack(fmt_str, hk_data[0:inc_len])
header_list = [
"Charge Current",
"Discharge Current",
"Heater Current",
"Battery Voltage",
"Batt Temp 1",
"Batt Temp 2",
"Batt Temp 3",
"Batt Temp 4",
"Reboot Counter",
"Boot Cause",
]
content_list = [
charge_current,
discharge_current,
heater_current,
batt_voltage,
batt_temp_1,
batt_temp_2,
batt_temp_3,
batt_temp_4,
reboot_cntr,
boot_cause,
]
validity_buffer = hk_data[inc_len:]
pw.dlog(str(header_list))
pw.dlog(str(content_list))
printer.print_validity_buffer(validity_buffer=validity_buffer, num_vars=10)
elif set_id == BpxSetIds.GET_CFG_SET:
battheat_mode = hk_data[0]
battheat_low = struct.unpack("!b", hk_data[1:2])[0]
battheat_high = struct.unpack("!b", hk_data[2:3])[0]
header_list = [
"Battery Heater Mode",
"Battery Heater Low Limit",
"Battery Heater High Limit",
]
content_list = [battheat_mode, battheat_low, battheat_high]
validity_buffer = hk_data[3:]
pw.dlog(str(header_list))
pw.dlog(str(content_list))
printer.print_validity_buffer(validity_buffer=validity_buffer, num_vars=10)
+39
View File
@@ -0,0 +1,39 @@
import struct
from pus_tm.defs import PrintWrapper
from tmtccmd.utility.tmtc_printer import FsfwTmTcPrinter
def handle_gps_data(printer: FsfwTmTcPrinter, hk_data: bytes):
pw = PrintWrapper(printer)
pw.dlog(f"Received GPS data, HK data length {len(hk_data)}")
current_idx = 0
fmt_str = "!ddddBBBHBBBBBI"
inc_len = struct.calcsize(fmt_str)
(
lat,
long,
alt,
speed,
fix,
sats_in_use,
sats_in_view,
year,
month,
day,
hours,
minutes,
seconds,
unix_seconds,
) = struct.unpack(fmt_str, hk_data[current_idx : current_idx + inc_len])
current_idx += inc_len
date_string = f"{day}.{month}.{year} {hours}:{minutes}:{seconds}"
pw.dlog(f"Lat: {lat} deg")
pw.dlog(f"Long: {long} deg")
pw.dlog(f"Altitude: {alt} m | Speed: {speed} m/s")
pw.dlog(
f"Fix Type: {fix} | Sats in View {sats_in_view} | Sats in Use {sats_in_use}"
)
pw.dlog(f"GNSS Date: {date_string}")
pw.dlog(f"Unix seconds {unix_seconds}")
printer.print_validity_buffer(validity_buffer=hk_data[current_idx:], num_vars=14)
+75
View File
@@ -0,0 +1,75 @@
import struct
from pus_tm.defs import PrintWrapper
from tmtccmd.utility import ObjectId
from tmtccmd.utility.tmtc_printer import FsfwTmTcPrinter
from pus_tc.devs.gyros import L3gGyroSetIds, AdisGyroSetIds
import config.object_ids as obj_ids
def handle_gyros_hk_data(
object_id: ObjectId, printer: FsfwTmTcPrinter, set_id: int, hk_data: bytes
):
if object_id.as_bytes in [
obj_ids.GYRO_0_ADIS_HANDLER_ID,
obj_ids.GYRO_2_ADIS_HANDLER_ID,
]:
handle_adis_gyro_hk(
object_id=object_id, printer=printer, set_id=set_id, hk_data=hk_data
)
elif object_id.as_bytes in [
obj_ids.GYRO_1_L3G_HANDLER_ID,
obj_ids.GYRO_3_L3G_HANDLER_ID,
]:
handle_l3g_gyro_hk(
object_id=object_id, printer=printer, set_id=set_id, hk_data=hk_data
)
def handle_adis_gyro_hk(
object_id: ObjectId, printer: FsfwTmTcPrinter, set_id: int, hk_data: bytes
):
if set_id == AdisGyroSetIds.CORE_HK:
pw = PrintWrapper(printer)
fmt_str = "!ddddddf"
inc_len = struct.calcsize(fmt_str)
(angVelocX, angVelocY, angVelocZ, accelX, accelY, accelZ, temp) = struct.unpack(
fmt_str, hk_data[0 : 0 + inc_len]
)
pw.dlog(f"Received ADIS1650X Gyro HK data from object {object_id}")
pw.dlog(
f"Angular Velocities (degrees per second): X {angVelocX} | "
f"Y {angVelocY} | Z {angVelocZ}"
)
pw.dlog(f"Acceleration (m/s^2): X {accelX} | Y {accelY} | Z {accelZ}")
pw.dlog(f"Temperature {temp} C")
if set_id == AdisGyroSetIds.CFG_HK:
pw = PrintWrapper(printer)
fmt_str = "!HBHH"
inc_len = struct.calcsize(fmt_str)
(diag_stat_reg, filter_setting, msc_ctrl_reg, dec_rate_reg) = struct.unpack(
fmt_str, hk_data[0 : 0 + inc_len]
)
pw.dlog(f"Diagnostic Status Register {diag_stat_reg:#018b}")
pw.dlog(f"Filter Settings {filter_setting:#010b}")
pw.dlog(f"Miscellaneous Control Register {msc_ctrl_reg:#018b}")
pw.dlog(f"Decimation Rate {dec_rate_reg:#06x}")
def handle_l3g_gyro_hk(
object_id: ObjectId, printer: FsfwTmTcPrinter, set_id: int, hk_data: bytes
):
if set_id == L3gGyroSetIds:
pw = PrintWrapper(printer)
fmt_str = "!ffff"
inc_len = struct.calcsize(fmt_str)
(angVelocX, angVelocY, angVelocZ, temp) = struct.unpack(
fmt_str, hk_data[0 : 0 + inc_len]
)
pw.dlog(f"Received L3GD20H Gyro HK data from object {object_id}")
pw.dlog(
f"Angular Velocities (degrees per second): X {angVelocX} | "
f"Y {angVelocY} | Z {angVelocZ}"
)
pw.dlog(f"Temperature {temp} C")
+228
View File
@@ -0,0 +1,228 @@
import struct
from pus_tm.defs import PrintWrapper
from tmtccmd.utility.tmtc_printer import FsfwTmTcPrinter
def handle_eng_set(printer: FsfwTmTcPrinter, hk_data: bytes):
pw = PrintWrapper(printer)
header_list = [
"Digital Voltage [mV]",
"Analog Voltage [mV]",
"Digital Current [mA]",
"Analog Current [mA]",
"Coil Current X [mA]",
"Coil Current Y [mA]",
"Coil Current Z [mA]",
"Coil X Temperature [°C]",
"Coil Y Temperature [°C]",
"Coil Z Temperature [°C]",
"Coil Z Temperature [°C]",
"MCU Temperature [°C]",
]
digital_voltage = struct.unpack("!H", hk_data[0:2])[0]
analog_voltage = struct.unpack("!H", hk_data[2:4])[0]
digital_current = struct.unpack("!f", hk_data[4:8])[0]
analog_current = struct.unpack("!f", hk_data[8:12])[0]
coil_x_current = struct.unpack("!f", hk_data[12:16])[0]
coil_y_current = struct.unpack("!f", hk_data[16:20])[0]
coil_z_current = struct.unpack("!f", hk_data[20:24])[0]
coil_x_temperature = struct.unpack("!H", hk_data[24:26])[0]
coil_y_temperature = struct.unpack("!H", hk_data[26:28])[0]
coil_z_temperature = struct.unpack("!H", hk_data[30:32])[0]
mcu_temperature = struct.unpack("!H", hk_data[32:34])[0]
validity_buffer = hk_data[42:]
content_list = [
digital_voltage,
analog_voltage,
digital_current,
analog_current,
coil_x_current,
coil_y_current,
coil_z_current,
coil_x_temperature,
coil_y_temperature,
coil_z_temperature,
mcu_temperature,
]
num_of_vars = len(header_list)
pw.dlog(str(header_list))
pw.dlog(str(content_list))
printer.print_validity_buffer(validity_buffer=validity_buffer, num_vars=num_of_vars)
def handle_calibrated_mtm_measurement(printer: FsfwTmTcPrinter, hk_data: bytes):
pw = PrintWrapper(printer)
header_list = [
"Calibrated MTM X [nT]",
"Calibrated MTM Y [nT]",
"Calibrated MTM Z [nT]",
"Coild actuation status",
]
mtm_x = struct.unpack("!I", hk_data[0:4])[0]
mtm_y = struct.unpack("!I", hk_data[4:8])[0]
mtm_z = struct.unpack("!I", hk_data[8:12])[0]
coil_actuation_status = hk_data[12]
validity_buffer = hk_data[12:]
content_list = [mtm_x, mtm_y, mtm_z, coil_actuation_status]
num_of_vars = len(header_list)
pw.dlog(str(header_list))
pw.dlog(str(content_list))
printer.print_validity_buffer(validity_buffer=validity_buffer, num_vars=num_of_vars)
def handle_raw_mtm_measurement(printer: FsfwTmTcPrinter, hk_data: bytes):
pw = PrintWrapper(printer)
header_list = [
"Raw MTM X [nT]",
"Raw MTM Y [nT]",
"Raw MTM Z [nT]",
"Coild actuation status",
]
mtm_x = struct.unpack("!f", hk_data[0:4])[0]
mtm_y = struct.unpack("!f", hk_data[4:8])[0]
mtm_z = struct.unpack("!f", hk_data[8:12])[0]
coil_actuation_status = hk_data[12]
validity_buffer = hk_data[12:]
content_list = [mtm_x, mtm_y, mtm_z, coil_actuation_status]
num_of_vars = len(header_list)
pw.dlog(str(header_list))
pw.dlog(str(content_list))
printer.print_validity_buffer(validity_buffer=validity_buffer, num_vars=num_of_vars)
def handle_self_test_data(printer: FsfwTmTcPrinter, hk_data: bytes):
pw = PrintWrapper(printer)
header_list = [
"Init Err",
"Init Raw Mag X [nT]",
"Init Raw Mag Y [nT]",
"Init Raw Mag Z [nT]",
"Init Cal Mag X [nT]",
"Init Cal Mag Y [nT]",
"Init Cal Mag Z [nT]",
"Init Coil X Current [mA]",
"Init Coil Y Current [mA]",
"Init Coil Z Current [mA]",
"Init Coil X Temperature [°C]",
"Init Coil Y Temperature [°C]",
"Init Coil Z Temperature [°C]",
"Err",
"Raw Mag X [nT]",
"Raw Mag Y [nT]",
"Raw Mag Z [nT]",
"Cal Mag X [nT]",
"Cal Mag Y [nT]",
"Cal Mag Z [nT]",
"Coil X Current [mA]",
"Coil Y Current [mA]",
"Coil Z Current [mA]",
"Coil X Temperature [°C]",
"Coil Y Temperature [°C]",
"Coil Z Temperature [°C]",
"Fina Err",
"Fina Raw Mag X [nT]",
"Fina Raw Mag Y [nT]",
"Fina Raw Mag Z [nT]",
"Fina Cal Mag X [nT]",
"Fina Cal Mag Y [nT]",
"Fina Cal Mag Z [nT]",
"Fina Coil X Current [mA]",
"Fina Coil Y Current [mA]",
"Fina Coil Z Current [mA]",
"Fina Coil X Temperature [°C]",
"Fina Coil Y Temperature [°C]",
"Fina Coil Z Temperature [°C]",
]
# INIT step (no coil actuation)
init_err = hk_data[0]
init_raw_mag_x = struct.unpack("!f", hk_data[1:5])[0]
init_raw_mag_y = struct.unpack("!f", hk_data[5:9])[0]
init_raw_mag_z = struct.unpack("!f", hk_data[9:13])[0]
init_cal_mag_x = struct.unpack("!f", hk_data[13:17])[0]
init_cal_mag_y = struct.unpack("!f", hk_data[17:21])[0]
init_cal_mag_z = struct.unpack("!f", hk_data[21:25])[0]
init_coil_x_current = struct.unpack("!f", hk_data[25:29])[0]
init_coil_y_current = struct.unpack("!f", hk_data[29:33])[0]
init_coil_z_current = struct.unpack("!f", hk_data[33:37])[0]
init_coil_x_temperature = struct.unpack("!H", hk_data[37:39])[0]
init_coil_y_temperature = struct.unpack("!H", hk_data[39:41])[0]
init_coil_z_temperature = struct.unpack("!H", hk_data[41:43])[0]
# Actuation step
err = hk_data[43]
raw_mag_x = struct.unpack("!f", hk_data[44:48])[0]
raw_mag_y = struct.unpack("!f", hk_data[48:52])[0]
raw_mag_z = struct.unpack("!f", hk_data[52:56])[0]
cal_mag_x = struct.unpack("!f", hk_data[56:60])[0]
cal_mag_y = struct.unpack("!f", hk_data[60:64])[0]
cal_mag_z = struct.unpack("!f", hk_data[64:68])[0]
coil_x_current = struct.unpack("!f", hk_data[68:72])[0]
coil_y_current = struct.unpack("!f", hk_data[72:76])[0]
coil_z_current = struct.unpack("!f", hk_data[76:80])[0]
coil_x_temperature = struct.unpack("!H", hk_data[80:82])[0]
coil_y_temperature = struct.unpack("!H", hk_data[82:84])[0]
coil_z_temperature = struct.unpack("!H", hk_data[84:86])[0]
# FINA step (no coil actuation)
fina_err = hk_data[86]
fina_raw_mag_x = struct.unpack("!f", hk_data[87:91])[0]
fina_raw_mag_y = struct.unpack("!f", hk_data[91:95])[0]
fina_raw_mag_z = struct.unpack("!f", hk_data[95:99])[0]
fina_cal_mag_x = struct.unpack("!f", hk_data[99:103])[0]
fina_cal_mag_y = struct.unpack("!f", hk_data[103:107])[0]
fina_cal_mag_z = struct.unpack("!f", hk_data[107:111])[0]
fina_coil_x_current = struct.unpack("!f", hk_data[111:115])[0]
fina_coil_y_current = struct.unpack("!f", hk_data[115:119])[0]
fina_coil_z_current = struct.unpack("!f", hk_data[119:123])[0]
fina_coil_x_temperature = struct.unpack("!H", hk_data[123:125])[0]
fina_coil_y_temperature = struct.unpack("!H", hk_data[125:127])[0]
fina_coil_z_temperature = struct.unpack("!H", hk_data[127:129])[0]
validity_buffer = hk_data[129:]
content_list = [
init_err,
init_raw_mag_x,
init_raw_mag_y,
init_raw_mag_z,
init_cal_mag_x,
init_cal_mag_y,
init_cal_mag_z,
init_coil_x_current,
init_coil_y_current,
init_coil_z_current,
init_coil_x_temperature,
init_coil_y_temperature,
init_coil_z_temperature,
err,
raw_mag_x,
init_raw_mag_y,
raw_mag_z,
cal_mag_x,
cal_mag_y,
cal_mag_z,
coil_x_current,
coil_y_current,
coil_z_current,
coil_x_temperature,
coil_y_temperature,
coil_z_temperature,
fina_err,
fina_raw_mag_x,
fina_raw_mag_y,
fina_raw_mag_z,
fina_cal_mag_x,
fina_cal_mag_y,
fina_cal_mag_z,
fina_coil_x_current,
fina_coil_y_current,
fina_coil_z_current,
fina_coil_x_temperature,
fina_coil_y_temperature,
fina_coil_z_temperature,
]
num_of_vars = len(header_list)
pw.dlog(str(header_list))
pw.dlog(str(content_list))
printer.print_validity_buffer(validity_buffer=validity_buffer, num_vars=num_of_vars)
+46
View File
@@ -0,0 +1,46 @@
import struct
from pus_tm.defs import PrintWrapper
from pus_tc.devs.mgms import MgmRm3100SetIds, MgmLis3SetIds
from tmtccmd.utility import ObjectId
from tmtccmd.utility.tmtc_printer import FsfwTmTcPrinter
import config.object_ids as obj_ids
def handle_mgm_hk_data(
object_id: ObjectId, printer: FsfwTmTcPrinter, set_id: int, hk_data: bytes
):
if object_id in [obj_ids.MGM_0_LIS3_HANDLER_ID, obj_ids.MGM_2_LIS3_HANDLER_ID]:
handle_mgm_lis3_hk_data(object_id, printer, set_id, hk_data)
pass
def handle_mgm_lis3_hk_data(
object_id: ObjectId, printer: FsfwTmTcPrinter, set_id: int, hk_data: bytes
):
if set_id == MgmLis3SetIds.CORE_HK:
pw = PrintWrapper(printer)
fmt_str = "!ffff"
inc_len = struct.calcsize(fmt_str)
(field_x, field_y, field_z, temp) = struct.unpack(
fmt_str, hk_data[0 : 0 + inc_len]
)
pw.dlog(f"Received MGM LIS3 from object {object_id}")
pw.dlog(
f"Field strengths in micro Tesla X {field_x} | Y {field_y} | Z {field_z}"
)
pw.dlog(f"Temperature {temp} C")
def handle_mgm_rm3100_hk_data(
object_id: ObjectId, printer: FsfwTmTcPrinter, set_id: int, hk_data: bytes
):
if set_id == MgmRm3100SetIds.CORE_HK:
pw = PrintWrapper(printer)
fmt_str = f"!fff"
inc_len = struct.calcsize(fmt_str)
(field_x, field_y, field_z) = struct.unpack(fmt_str, hk_data[0 : 0 + inc_len])
pw.dlog(f"Received MGM LIS3 from object {object_id}")
pw.dlog(
f"Field strengths in micro Tesla X {field_x} | Y {field_y} | Z {field_z}"
)
+425
View File
@@ -0,0 +1,425 @@
import struct
from typing import List, Tuple
from tmtccmd.utility.tmtc_printer import FsfwTmTcPrinter
from pus_tm.defs import PrintWrapper
from gomspace.gomspace_common import SetIds
P60_INDEX_LIST = [
"ACU VCC",
"PDU1 VCC",
"X3 IDLE VCC",
"PDU2 VCC",
"ACU VBAT",
"PDU1 VBAT",
"X3 IDLE VBAT",
"PDU2 VBAT",
"STACK VBAT",
"STACK 3V3",
"STACK 5V",
"GS3V3",
"GS5V",
]
WDT_LIST = ["GND", "I2C", "CAN", "CSP0", "CSP1"]
PDU1_CHANNELS_NAMES = [
"TCS Board",
"Syrlinks",
"Startracker",
"MGT",
"SUS Nominal",
"SCEX",
"PLOC",
"ACS A Side",
"Unused Channel 8",
]
PDU2_CHANNELS_NAMES = [
"Q7S",
"Payload PCDU CH1",
"RW",
"TCS Heater In",
"SUS Redundant",
"Deployment Mechanism",
"Payload PCDU CH6",
"ACS B Side",
"Payload Camera",
]
PDU_CHANNEL_NAMES = [PDU1_CHANNELS_NAMES, PDU2_CHANNELS_NAMES]
class WdtInfo:
def __init__(self, pw: PrintWrapper):
self.wdt_reboots_list = []
self.time_pings_left_list = []
self.pw = pw
def print(self):
wdt_info = "WDT Type | Reboots | Time or Pings left (CSP only)"
self.pw.dlog(wdt_info)
for idx in range(len(self.wdt_reboots_list)):
self.pw.dlog(
f"{WDT_LIST[idx].ljust(5)} | "
f"{self.wdt_reboots_list[idx]:010} | {self.time_pings_left_list[idx]:010}",
)
def parse(self, wdt_data: bytes, current_idx: int) -> int:
priv_idx = 0
self.wdt_reboots_list = []
self.time_pings_left_list = []
for idx in range(5):
self.wdt_reboots_list.append(
struct.unpack("!I", wdt_data[priv_idx : priv_idx + 4])[0]
)
priv_idx += 4
current_idx += 4
for idx in range(3):
self.time_pings_left_list.append(
struct.unpack("!I", wdt_data[priv_idx : priv_idx + 4])[0]
)
priv_idx += 4
current_idx += 4
for idx in range(2):
self.time_pings_left_list.append(wdt_data[priv_idx])
current_idx += 1
priv_idx += 1
return current_idx
class DevicesInfoParser:
def __init__(self):
self.dev_types = None
self.dev_statuses = None
def parse(self, hk_data: bytes, current_idx: int) -> int:
self.dev_types = []
self.dev_statuses = []
for idx in range(8):
self.dev_types.append(hk_data[current_idx])
current_idx += 1
for idx in range(8):
self.dev_statuses.append(hk_data[current_idx])
current_idx += 1
return current_idx
def print(self, pw: PrintWrapper):
pw.dlog(f"Device Type | Device State (0:None | 1:OK | 3:ERROR | 4:NOT FOUND)")
for i in range(len(self.dev_types)):
pw.dlog(
f"{self.map_idx_to_type(self.dev_types[i])} | {self.dev_statuses[i]}"
)
@staticmethod
def map_idx_to_type(devtype: int) -> str:
if devtype == 0:
return "Reserved"
if devtype == 1:
return "ADC"
if devtype == 2:
return "ADC"
if devtype == 3:
return "DAC"
if devtype == 4:
return "Temperature Sensor"
if devtype == 5:
return "Temperature Sensor (Bat Pack)"
if devtype == 6:
return "RTC"
if devtype == 7:
return "FRAM"
return "Unknown Type"
def handle_pdu_data(
printer: FsfwTmTcPrinter, pdu_idx: int, set_id: int, hk_data: bytes
):
pw = PrintWrapper(printer=printer)
current_idx = 0
priv_idx = pdu_idx - 1
if set_id == SetIds.PDU_1_AUX or set_id == SetIds.PDU_2_AUX:
fmt_str = "!hhBBBIIH"
inc_len = struct.calcsize(fmt_str)
(
vcc,
vbat,
conv_enb_0,
conv_enb_1,
conv_enb_2,
boot_cause,
uptime,
reset_cause,
) = struct.unpack(fmt_str, hk_data[current_idx : current_idx + inc_len])
pw.dlog(f"VCC {vcc} mV | VBAT {vbat} mV")
pw.dlog(f"Converter Enables [{conv_enb_0},{conv_enb_1},{conv_enb_2}]")
pw.dlog(
f"Boot Cause {boot_cause} | Uptime {uptime} | Reset Cause {reset_cause}",
)
current_idx += inc_len
latchup_list = []
pw.dlog("Latchups")
for idx in range(len(PDU1_CHANNELS_NAMES)):
latchup_list.append(
struct.unpack("!H", hk_data[current_idx : current_idx + 2])[0]
)
content_line = (
f"{PDU_CHANNEL_NAMES[priv_idx][idx].ljust(24)} | {latchup_list[idx]}"
)
pw.dlog(content_line)
current_idx += 2
dev_parser = DevicesInfoParser()
current_idx = dev_parser.parse(hk_data=hk_data, current_idx=current_idx)
wdt = WdtInfo(pw=pw)
current_idx = wdt.parse(wdt_data=hk_data[current_idx:], current_idx=current_idx)
wdt.print()
pw.dlog(f"PDU Device Types: 0:FRAM|1:ADC|2:ADC|3:TempSens|4,5,6,7:Reserved")
dev_parser.print(pw=pw)
if set_id == SetIds.PDU_1_CORE or set_id == SetIds.PDU_2_CORE:
pw.dlog(f"Received PDU HK from PDU {pdu_idx}")
current_list = []
for idx in range(len(PDU1_CHANNELS_NAMES)):
current_list.append(
struct.unpack("!h", hk_data[current_idx : current_idx + 2])[0]
)
current_idx += 2
voltage_list = []
for idx in range(len(PDU1_CHANNELS_NAMES)):
voltage_list.append(
struct.unpack("!H", hk_data[current_idx : current_idx + 2])[0]
)
current_idx += 2
output_enb_list = []
for idx in range(len(PDU1_CHANNELS_NAMES)):
output_enb_list.append(hk_data[current_idx])
current_idx += 1
header_str = f"{'Name'.ljust(24)} | OutEnb | U [mV] | I [mA]"
pw.dlog(header_str)
for idx in range(len(PDU1_CHANNELS_NAMES)):
out_enb = f"{output_enb_list[idx]}".ljust(6)
content_line = (
f"{PDU_CHANNEL_NAMES[priv_idx][idx].ljust(24)} | {out_enb} | "
f"{voltage_list[idx]:05} | {current_list[idx]:04}"
)
pw.dlog(content_line)
fmt_str = "!IBh"
inc_len = struct.calcsize(fmt_str)
(boot_count, batt_mode, temperature) = struct.unpack(
fmt_str, hk_data[current_idx : current_idx + inc_len]
)
info = (
f"Boot Count {boot_count} | Battery Mode {batt_mode} | "
f"Temperature {temperature / 10.0}"
)
pw.dlog(info)
def handle_p60_hk_data(printer: FsfwTmTcPrinter, set_id: int, hk_data: bytes):
pw = PrintWrapper(printer=printer)
if set_id == SetIds.P60_CORE:
pw.dlog("Received P60 Core HK. Voltages in mV, currents in mA")
current_idx = 0
current_list = []
for idx in range(13):
current_list.append(
struct.unpack("!h", hk_data[current_idx : current_idx + 2])[0]
)
current_idx += 2
voltage_list = []
for idx in range(13):
voltage_list.append(
struct.unpack("!H", hk_data[current_idx : current_idx + 2])[0]
)
current_idx += 2
out_enb_list = []
for idx in range(13):
out_enb_list.append(hk_data[current_idx])
current_idx += 1
header_str = f"{'Name'.ljust(24)} | OutEnb | U [mV] | I [mA]"
pw.dlog(header_str)
for idx in range(13):
out_enb = f"{out_enb_list[idx]}".ljust(6)
content_line = (
f"{P60_INDEX_LIST[idx].ljust(24)} | {out_enb} | "
f"{voltage_list[idx]:05} | {current_list[idx]:04}"
)
pw.dlog(content_line)
fmt_str = "!IBhHhh"
inc_len = struct.calcsize(fmt_str)
(
boot_count,
batt_mode,
batt_current,
batt_voltage,
temp_0,
temp_1,
) = struct.unpack(fmt_str, hk_data[current_idx : current_idx + inc_len])
current_idx += inc_len
batt_info = (
f"Batt: Mode {batt_mode} | Boot Count {boot_count} | "
f"Charge current {batt_current} | Voltage {batt_voltage}"
)
temps = f"In C: Temp 0 {temp_0 / 10.0} | Temp 1 {temp_1 / 10.0} | "
pw.dlog(temps)
pw.dlog(batt_info)
printer.print_validity_buffer(validity_buffer=hk_data[current_idx:], num_vars=9)
if set_id == SetIds.P60_AUX:
pw.dlog("Received P60 AUX HK. Voltages in mV, currents in mA")
current_idx = 0
latchup_list = []
pw.dlog("P60 Dock Latchups")
for idx in range(0, 13):
latchup_list.append(
struct.unpack("!H", hk_data[current_idx : current_idx + 2])[0]
)
content_line = f"{P60_INDEX_LIST[idx].ljust(24)} | {latchup_list[idx]}"
pw.dlog(content_line)
current_idx += 2
fmt_str = "!IIHBBHHhhB"
inc_len = struct.calcsize(fmt_str)
(
boot_cause,
uptime,
reset_cause,
heater_on,
conv_5v_on,
dock_vbat,
dock_vcc_c,
batt_temp_0,
batt_temp_1,
dearm_status,
) = struct.unpack(fmt_str, hk_data[current_idx : current_idx + inc_len])
current_idx += inc_len
wdt = WdtInfo(pw=pw)
current_idx = wdt.parse(wdt_data=hk_data[current_idx:], current_idx=current_idx)
fmt_str = "!hhbb"
inc_len = struct.calcsize(fmt_str)
(
batt_charge_current,
batt_discharge_current,
ant6_depl,
ar6_depl,
) = struct.unpack(fmt_str, hk_data[current_idx : current_idx + inc_len])
current_idx += inc_len
dev_parser = DevicesInfoParser()
current_idx = dev_parser.parse(hk_data=hk_data, current_idx=current_idx)
util_info = (
f"Reset Cause {reset_cause} | Boot Cause {boot_cause} | Uptime {uptime}"
)
util_info_2 = (
f"Conv 5V on {conv_5v_on} | Heater On {heater_on} | "
f"Dock VBAT {dock_vbat} | DOCK VCC Current {dock_vcc_c}"
)
pw.dlog(util_info)
pw.dlog(util_info_2)
wdt.print()
misc_info = (
f"Dearm {dearm_status} | ANT6 Depl {ant6_depl} | AR6 Deply {ar6_depl}"
)
pw.dlog(misc_info)
batt_info = (
f"Batt Temp 0 {batt_temp_0 / 10.0} | Batt Temp 1 {batt_temp_1 / 10.0} | "
f"Charge Current {batt_charge_current} | Discharge Current {batt_discharge_current}"
)
pw.dlog(batt_info)
pw.dlog(
"P60 Dock Dev Types: 0:FRAM|1:ADC|2:ADC|3:ADC|4:TempSens|5:RTC|"
"6:TempSens(BatPack)|7:TempSens(BatPack)"
)
dev_parser.print(pw=pw)
printer.print_validity_buffer(
validity_buffer=hk_data[current_idx:], num_vars=27
)
def gen_six_entry_u16_list(hk_data: bytes, current_idx: int) -> Tuple[int, List[int]]:
u16_list = []
for idx in range(6):
u16_list.append(struct.unpack("!H", hk_data[current_idx : current_idx + 2])[0])
current_idx += 2
return current_idx, u16_list
def handle_acu_hk_data(printer: FsfwTmTcPrinter, set_id: int, hk_data: bytes):
pw = PrintWrapper(printer=printer)
if set_id == SetIds.ACU_CORE:
mppt_mode = hk_data[0]
current_idx = 1
current_idx, currents = gen_six_entry_u16_list(
hk_data=hk_data, current_idx=current_idx
)
current_idx, voltages = gen_six_entry_u16_list(
hk_data=hk_data, current_idx=current_idx
)
vcc = struct.unpack("!H", hk_data[current_idx : current_idx + 2])[0]
current_idx += 2
vbat = struct.unpack("!H", hk_data[current_idx : current_idx + 2])[0]
current_idx += 2
current_idx, vboosts = gen_six_entry_u16_list(
hk_data=hk_data, current_idx=current_idx
)
current_idx, powers = gen_six_entry_u16_list(
hk_data=hk_data, current_idx=current_idx
)
fmt_str = "!HHHIIHH"
inc_len = struct.calcsize(fmt_str)
(tmp0, tmp1, tmp2, bootcnt, uptime, mppt_time, mppt_period) = struct.unpack(
fmt_str, hk_data[current_idx : current_idx + inc_len]
)
current_idx += inc_len
pw.dlog("Received ACU Core HK. Voltages in mV, currents in mA")
pw.dlog(f"VCC {vcc} mV | VBAT {vbat} mV | MPPT Mode {mppt_mode}")
header_str = (
f"Channel | Input U [mV] | Input I [mA] | U Boost [mV] | Power [mW]"
)
pw.dlog(header_str)
for i in range(6):
pw.dlog(
f"{i} | {str(voltages[i]).ljust(4)} | {str(currents[i]).ljust(4)} | "
f"{str(vboosts[i]).ljust(4)} | {str(powers[i]).ljust(2)}"
)
pw.dlog(
f"Temperatures in C: Ch0 {tmp0/10.0} | Ch1 {tmp1/10.0} | Ch2 {tmp2/10.0}"
)
pw.dlog(
f"Boot Count {bootcnt} | Uptime {uptime} sec | "
f"MPPT Time {mppt_time} msec | MPPT Period {mppt_period} msec"
)
printer.print_validity_buffer(
validity_buffer=hk_data[current_idx:], num_vars=12
)
if set_id == SetIds.ACU_AUX:
current_idx = 0
fmt_str = "!BBB"
inc_len = struct.calcsize(fmt_str)
enb_tuple = struct.unpack(fmt_str, hk_data[current_idx : current_idx + inc_len])
(dac_enb0, dac_enb1, dac_enb2) = enb_tuple
dac_enb_str = ["on" if entry == 1 else "off" for entry in enb_tuple]
current_idx += inc_len
current_idx, dac_channels_raw = gen_six_entry_u16_list(
hk_data=hk_data, current_idx=current_idx
)
fmt_str = "!IHII"
inc_len = struct.calcsize(fmt_str)
(boot_cause, reset_cause, wdt_cnt_gnd, wdt_gnd_time_left) = struct.unpack(
fmt_str, hk_data[current_idx : current_idx + inc_len]
)
current_idx += inc_len
dev_parser = DevicesInfoParser()
current_idx = dev_parser.parse(hk_data=hk_data, current_idx=current_idx)
pw.dlog("Received ACU Aux HK. Voltages in mV, currents in mA")
pw.dlog(
f"DAC Enable States: DAC 0 {dac_enb_str[0]} | DAC 1 {dac_enb_str[1]} | DAC 2 {dac_enb_str[2]}"
)
pw.dlog(f"Boot Cause {boot_cause} | Reset Cause {reset_cause}")
pw.dlog(
f"Ground WDT: Reboot Count {wdt_cnt_gnd} | Time Left {wdt_gnd_time_left} sec"
)
pw.dlog(
f"ACU Dev Types: 0:FRAM|1:ADC|2:ADC|3:DAC|4:DAC|"
f"5:DAC|6:TempSens|7:Reserved"
)
dev_parser.print(pw=pw)
printer.print_validity_buffer(validity_buffer=hk_data[current_idx:], num_vars=8)
+52
View File
@@ -0,0 +1,52 @@
import struct
from pus_tm.defs import PrintWrapper
from tmtccmd.utility.tmtc_printer import FsfwTmTcPrinter
from pus_tc.devs.plpcdu import SetIds
ADC_CHANNELS_NAMED = [
"U BAT DIV 6",
"U NEG V FB",
"I HPA",
"U HPA DIV 6",
"I MPA",
"U MPA DIV 6",
"I TX",
"U TX DIV 6",
"I X8",
"U X8 DIV 6",
"I DRO",
"U DRO DIV 6",
]
def handle_plpcdu_hk(printer: FsfwTmTcPrinter, set_id: int, hk_data: bytes):
if set_id == SetIds.ADC:
pw = PrintWrapper(printer)
current_idx = 0
pw.dlog("Received PL PCDU ADC HK data")
channels = []
ch_print = "Channels Raw (hex): ["
for i in range(12):
channels.append(
struct.unpack("!H", hk_data[current_idx : current_idx + 2])[0]
)
if i < 11:
ch_print += f"{channels[i]:06x},"
else:
ch_print += f"{channels[i]:06x}]"
current_idx += 2
processed_vals = []
for i in range(12):
processed_vals.append(
struct.unpack("!f", hk_data[current_idx : current_idx + 4])[0]
)
current_idx += 4
temp = struct.unpack("!f", hk_data[current_idx : current_idx + 4])[0]
current_idx += 4
pw.dlog(f"Temperature: {temp} C")
pw.dlog(ch_print)
for i in range(12):
pw.dlog(f"{ADC_CHANNELS_NAMED[i].ljust(24)} | {processed_vals[i]}")
printer.print_validity_buffer(validity_buffer=hk_data[current_idx:], num_vars=3)
+24
View File
@@ -0,0 +1,24 @@
import struct
from pus_tm.defs import PrintWrapper
from tmtccmd.utility.tmtc_printer import FsfwTmTcPrinter
from pus_tc.devs.rad_sensor import SetIds
def handle_rad_sensor_data(printer: FsfwTmTcPrinter, set_id: int, hk_data: bytes):
if set_id == SetIds.HK:
pw = PrintWrapper(printer)
current_idx = 0
pw.dlog("Received Radiation Sensor HK data")
fmt_str = "!fHHHHHH"
inc_len = struct.calcsize(fmt_str)
(temp, ain0, ain1, ain4, ain5, ain6, ain7) = struct.unpack(
fmt_str, hk_data[current_idx : current_idx + inc_len]
)
ain_dict = {0: ain0, 1: ain1, 4: ain4, 5: ain5, 6: ain6, 7: ain7}
pw.dlog(f"Temperature: {temp} C")
pw.dlog(f"AIN Channel | Raw Value (hex) | Raw Value (dec)")
for idx, val in ain_dict.items():
pw.dlog(f"{idx} | {val:#06x} | {str(val).ljust(5)}")
current_idx += inc_len
printer.print_validity_buffer(validity_buffer=hk_data[current_idx:], num_vars=7)
+26
View File
@@ -0,0 +1,26 @@
import struct
from pus_tm.defs import PrintWrapper
from pus_tc.devs.sus import SetIds
from tmtccmd.utility import ObjectId
from tmtccmd.utility.tmtc_printer import FsfwTmTcPrinter
def handle_sus_hk(
object_id: ObjectId, hk_data: bytes, printer: FsfwTmTcPrinter, set_id: int
):
pw = PrintWrapper(printer)
pw.dlog(f"Received SUS HK data from {object_id}")
if set_id == SetIds.HK:
current_idx = 0
temperature = struct.unpack("!f", hk_data[current_idx : current_idx + 4])[0]
current_idx += 4
channels = []
for _ in range(6):
channels.append(struct.unpack("!H", hk_data[current_idx : current_idx + 2]))
current_idx += 2
pw.dlog(f"Temperature: {temperature} C")
pw.dlog(f"AIN Channel | Raw Value (hex) | Raw Value (dec)")
for idx, val in enumerate(channels):
pw.dlog(f"{idx} | {val:#06x} | {str(val).ljust(5)}")
printer.print_validity_buffer(validity_buffer=hk_data[current_idx:], num_vars=7)
+67
View File
@@ -0,0 +1,67 @@
import struct
from pus_tm.defs import PrintWrapper
from pus_tc.devs.syrlinks_hk_handler import SetIds
from tmtccmd.utility.tmtc_printer import FsfwTmTcPrinter
def handle_syrlinks_hk_data(printer: FsfwTmTcPrinter, set_id: int, hk_data: bytes):
if set_id == SetIds.RX_REGISTERS_DATASET:
return handle_syrlinks_rx_registers_dataset(printer, hk_data)
elif set_id == SetIds.TX_REGISTERS_DATASET:
return handle_syrlinks_tx_registers_dataset(printer, hk_data)
else:
pw = PrintWrapper(printer)
pw.dlog(f"Service 3 TM: Syrlinks handler reply with unknown set ID {set_id}")
def handle_syrlinks_rx_registers_dataset(printer: FsfwTmTcPrinter, hk_data: bytes):
pw = PrintWrapper(printer)
header_list = [
"RX Status",
"RX Sensitivity",
"RX Frequency Shift",
"RX IQ Power",
"RX AGC Value",
"RX Demod Eb",
"RX Demod N0",
"RX Datarate",
]
rx_status = hk_data[0]
rx_sensitivity = struct.unpack("!I", hk_data[1:5])
rx_frequency_shift = struct.unpack("!I", hk_data[5:9])
rx_iq_power = struct.unpack("!H", hk_data[9:11])
rx_agc_value = struct.unpack("!H", hk_data[11:13])
rx_demod_eb = struct.unpack("!I", hk_data[13:17])
rx_demod_n0 = struct.unpack("!I", hk_data[17:21])
rx_data_rate = hk_data[21]
content_list = [
rx_status,
rx_sensitivity,
rx_frequency_shift,
rx_iq_power,
rx_agc_value,
rx_demod_eb,
rx_demod_n0,
rx_data_rate,
]
validity_buffer = hk_data[22:]
pw.dlog(str(header_list))
pw.dlog(str(content_list))
printer.print_validity_buffer(validity_buffer=validity_buffer, num_vars=8)
def handle_syrlinks_tx_registers_dataset(
printer: FsfwTmTcPrinter,
hk_data: bytes,
):
pw = PrintWrapper(printer)
header_list = ["TX Status", "TX Waveform", "TX AGC value"]
tx_status = hk_data[0]
tx_waveform = hk_data[1]
tx_agc_value = struct.unpack("!H", hk_data[2:4])
content_list = [tx_status, tx_waveform, tx_agc_value]
validity_buffer = hk_data[4:]
pw.dlog(str(header_list))
pw.dlog(str(content_list))
printer.print_validity_buffer(validity_buffer=validity_buffer, num_vars=3)
+8 -4
View File
@@ -41,7 +41,9 @@ def pus_factory_hook(raw_tm_packet: bytes):
subservice_type = raw_tm_packet[8]
file_logger = FSFW_PRINTER.file_logger
obj_id_dict = get_object_ids()
dedicated_handler = True
try:
tm_packet = None
if service_type == 1:
handle_service_1_packet(printer=FSFW_PRINTER, raw_tm=raw_tm_packet)
elif service_type == 3:
@@ -58,23 +60,25 @@ def pus_factory_hook(raw_tm_packet: bytes):
)
elif service_type == 17:
tm_packet = Service17TMExtended.unpack(raw_telemetry=raw_tm_packet)
FSFW_PRINTER.handle_long_tm_print(packet_if=tm_packet, info_if=tm_packet)
dedicated_handler = False
elif service_type == 20:
tm_packet = Service20FsfwTm.unpack(raw_telemetry=raw_tm_packet)
FSFW_PRINTER.handle_long_tm_print(packet_if=tm_packet, info_if=tm_packet)
dedicated_handler = False
elif service_type == 200:
tm_packet = Service200FsfwTm.unpack(raw_telemetry=raw_tm_packet)
FSFW_PRINTER.handle_long_tm_print(packet_if=tm_packet, info_if=tm_packet)
dedicated_handler = False
else:
LOGGER.info(
f"The service {service_type} is not implemented in Telemetry Factory"
)
tm_packet = PusTelemetry.unpack(raw_telemetry=raw_tm_packet)
tm_packet.print_source_data(PrintFormats.HEX)
dedicated_handler = True
if not dedicated_handler and tm_packet is not None:
FSFW_PRINTER.handle_long_tm_print(packet_if=tm_packet, info_if=tm_packet)
log_raw_pus_tm(
packet=raw_tm_packet, srv_subservice=(service_type, subservice_type)
)
except ValueError:
# TODO: Log faulty packet
LOGGER.warning("Invalid packet format detected")
log_raw_unknown_packet(packet=raw_tm_packet, packet_type=PacketTypes.TM)
+102 -642
View File
@@ -1,24 +1,37 @@
"""HK Handling for EIVE OBSW"""
import struct
import os
import datetime
from pus_tm.devs.plpcdu import handle_plpcdu_hk
from pus_tm.devs.rad_sensor import handle_rad_sensor_data
from pus_tm.devs.sus import handle_sus_hk
from pus_tm.system.tcs import handle_thermal_controller_hk_data, TM_TCP_SERVER
from tmtccmd.config.definitions import HkReplyUnpacked
from tmtccmd.tm.pus_3_fsfw_hk import (
Service3Base,
HkContentType,
Service3FsfwTm,
)
from tmtccmd.logging import get_console_logger
from pus_tc.devs.bpx_batt import BpxSetIds
from pus_tc.devs.syrlinks_hk_handler import SetIds
from pus_tc.devs.p60dock import SetIds
from pus_tc.devs.imtq import ImtqSetIds
from tmtccmd.utility.obj_id import ObjectId, ObjectIdDictT
import config.object_ids as obj_ids
from tmtccmd.logging import get_console_logger
from pus_tm.devs.bpx_bat import handle_bpx_hk_data
from pus_tm.devs.gps import handle_gps_data
from pus_tm.devs.gyros import handle_gyros_hk_data
from pus_tm.devs.imtq_mgt import (
handle_self_test_data,
handle_eng_set,
handle_calibrated_mtm_measurement,
handle_raw_mtm_measurement,
)
from pus_tm.devs.pcdu import handle_pdu_data, handle_p60_hk_data, handle_acu_hk_data
from pus_tm.devs.syrlinks import handle_syrlinks_hk_data
from pus_tc.devs.imtq import ImtqSetIds
from pus_tm.devs.reaction_wheels import handle_rw_hk_data
from pus_tm.defs import FsfwTmTcPrinter, log_to_both
from pus_tm.system.core import handle_core_hk_data
from pus_tm.devs.mgms import handle_mgm_hk_data
import config.object_ids as obj_ids
LOGGER = get_console_logger()
@@ -34,18 +47,26 @@ def handle_hk_packet(
named_obj_id = tm_packet.object_id
if tm_packet.subservice == 25 or tm_packet.subservice == 26:
hk_data = tm_packet.tm_data[8:]
TM_TCP_SERVER.report_raw_hk_data(
object_id=named_obj_id, set_id=tm_packet.set_id, hk_data=hk_data
)
printer.generic_hk_tm_print(
content_type=HkContentType.HK,
object_id=named_obj_id,
set_id=tm_packet.set_id,
hk_data=hk_data,
)
handle_regular_hk_print(
printer=printer,
object_id=named_obj_id,
hk_packet=tm_packet,
hk_data=hk_data,
)
try:
handle_regular_hk_print(
printer=printer,
object_id=named_obj_id,
hk_packet=tm_packet,
hk_data=hk_data,
)
except ValueError as e:
LOGGER.exception(
f"{e} error when parsing HK data coming from {named_obj_id}"
)
if tm_packet.subservice == 10 or tm_packet.subservice == 12:
LOGGER.warning("HK definitions printout not implemented yet")
@@ -61,649 +82,88 @@ def handle_regular_hk_print(
"""This function is called when a Service 3 Housekeeping packet is received."""
if object_id in [obj_ids.RW1_ID, obj_ids.RW2_ID, obj_ids.RW3_ID, obj_ids.RW4_ID]:
handle_rw_hk_data(printer, object_id, set_id, hk_data)
if objb == obj_ids.SYRLINKS_HANDLER_ID:
if set_id == SetIds.RX_REGISTERS_DATASET:
return handle_syrlinks_rx_registers_dataset(printer, hk_data)
elif set_id == SetIds.TX_REGISTERS_DATASET:
return handle_syrlinks_tx_registers_dataset(printer, hk_data)
else:
LOGGER.info("Service 3 TM: Syrlinks handler reply with unknown set id")
if objb == obj_ids.IMTQ_HANDLER_ID:
elif objb == obj_ids.SYRLINKS_HANDLER_ID:
handle_syrlinks_hk_data(printer=printer, hk_data=hk_data, set_id=set_id)
elif objb == obj_ids.IMTQ_HANDLER_ID:
if (set_id >= ImtqSetIds.POSITIVE_X_TEST) and (
set_id <= ImtqSetIds.NEGATIVE_Z_TEST
):
return handle_self_test_data(printer, hk_data)
elif set_id == ImtqSetIds.ENG_HK_SET:
return handle_eng_set(printer, hk_data)
elif set_id == ImtqSetIds.CAL_MTM_SET:
return handle_calibrated_mtm_measurement(printer, hk_data)
elif set_id == ImtqSetIds.RAW_MTM_SET:
return handle_raw_mtm_measurement(printer, hk_data)
else:
LOGGER.info("Service 3 TM: Syrlinks handler reply with unknown set id")
if objb == obj_ids.GPS_HANDLER_0_ID or object_id == obj_ids.GPS_HANDLER_1_ID:
handle_gps_data(printer=printer, hk_data=hk_data)
if objb == obj_ids.BPX_HANDLER_ID:
LOGGER.info("Service 3 TM: IMTQ handler reply with unknown set id")
elif objb == obj_ids.GPS_CONTROLLER:
return handle_gps_data(printer=printer, hk_data=hk_data)
elif objb == obj_ids.BPX_HANDLER_ID:
handle_bpx_hk_data(hk_data=hk_data, set_id=set_id, printer=printer)
if objb == obj_ids.CORE_CONTROLLER_ID:
return handle_core_hk_data(printer=printer, hk_data=hk_data)
if objb == obj_ids.PDU_1_HANDLER_ID:
elif objb == obj_ids.CORE_CONTROLLER_ID:
return handle_core_hk_data(printer=printer, hk_data=hk_data, set_id=set_id)
elif objb == obj_ids.PDU_1_HANDLER_ID:
return handle_pdu_data(
printer=printer, pdu_idx=1, set_id=set_id, hk_data=hk_data
)
if objb == obj_ids.PDU_2_HANDLER_ID:
elif objb == obj_ids.PDU_2_HANDLER_ID:
return handle_pdu_data(
printer=printer, pdu_idx=2, set_id=set_id, hk_data=hk_data
)
if objb in [obj_ids.RW1_ID, obj_ids.RW2_ID, obj_ids.RW3_ID, obj_ids.RW4_ID]:
elif objb == obj_ids.ACU_HANDLER_ID:
return handle_acu_hk_data(printer=printer, hk_data=hk_data, set_id=set_id)
elif objb == obj_ids.RAD_SENSOR_ID:
return handle_rad_sensor_data(printer=printer, hk_data=hk_data, set_id=set_id)
elif objb in [obj_ids.RW1_ID, obj_ids.RW2_ID, obj_ids.RW3_ID, obj_ids.RW4_ID]:
return handle_rw_hk_data(
printer=printer, object_id=object_id, set_id=set_id, hk_data=hk_data
)
if objb == obj_ids.P60_DOCK_HANDLER:
if objb in [
obj_ids.SUS_0_N_LOC_XFYFZM_PT_XF,
obj_ids.SUS_1_N_LOC_XBYFZM_PT_XB,
obj_ids.SUS_2_N_LOC_XFYBZB_PT_YB,
obj_ids.SUS_3_N_LOC_XFYBZF_PT_YF,
obj_ids.SUS_4_N_LOC_XMYFZF_PT_ZF,
obj_ids.SUS_5_N_LOC_XFYMZB_PT_ZB,
obj_ids.SUS_6_R_LOC_XFYBZM_PT_XF,
obj_ids.SUS_7_R_LOC_XBYBZM_PT_XB,
obj_ids.SUS_8_R_LOC_XBYBZB_PT_YB,
obj_ids.SUS_9_R_LOC_XBYBZB_PT_YF,
obj_ids.SUS_10_R_LOC_XMYBZF_PT_ZF,
obj_ids.SUS_11_R_LOC_XBYMZB_PT_ZB,
]:
handle_sus_hk(
object_id=object_id, hk_data=hk_data, printer=printer, set_id=set_id
)
elif objb == obj_ids.P60_DOCK_HANDLER:
handle_p60_hk_data(printer=printer, set_id=set_id, hk_data=hk_data)
if objb == obj_ids.PL_PCDU_ID:
log_to_both(printer, "Received PL PCDU HK data")
elif objb in [
obj_ids.GYRO_0_ADIS_HANDLER_ID,
obj_ids.GYRO_1_L3G_HANDLER_ID,
obj_ids.GYRO_2_ADIS_HANDLER_ID,
obj_ids.GYRO_3_L3G_HANDLER_ID,
]:
handle_gyros_hk_data(
object_id=object_id, hk_data=hk_data, printer=printer, set_id=set_id
)
elif objb in [
obj_ids.MGM_0_LIS3_HANDLER_ID,
obj_ids.MGM_1_RM3100_HANDLER_ID,
obj_ids.MGM_2_LIS3_HANDLER_ID,
obj_ids.MGM_3_RM3100_HANDLER_ID,
]:
handle_mgm_hk_data(
object_id=object_id, hk_data=hk_data, printer=printer, set_id=set_id
)
elif objb == obj_ids.PL_PCDU_ID:
handle_plpcdu_hk(set_id=set_id, hk_data=hk_data, printer=printer)
elif objb == obj_ids.THERMAL_CONTROLLER_ID:
handle_thermal_controller_hk_data(
object_id=object_id, printer=printer, set_id=set_id, hk_data=hk_data
)
else:
LOGGER.info("Service 3 TM: Parsing for this SID has not been implemented.")
return HkReplyUnpacked()
def handle_syrlinks_rx_registers_dataset(printer: FsfwTmTcPrinter, hk_data: bytes):
reply = HkReplyUnpacked()
header_list = [
"RX Status",
"RX Sensitivity",
"RX Frequency Shift",
"RX IQ Power",
"RX AGC Value",
"RX Demod Eb",
"RX Demod N0",
"RX Datarate",
]
rx_status = hk_data[0]
rx_sensitivity = struct.unpack("!I", hk_data[1:5])
rx_frequency_shift = struct.unpack("!I", hk_data[5:9])
rx_iq_power = struct.unpack("!H", hk_data[9:11])
rx_agc_value = struct.unpack("!H", hk_data[11:13])
rx_demod_eb = struct.unpack("!I", hk_data[13:17])
rx_demod_n0 = struct.unpack("!I", hk_data[17:21])
rx_data_rate = hk_data[21]
content_list = [
rx_status,
rx_sensitivity,
rx_frequency_shift,
rx_iq_power,
rx_agc_value,
rx_demod_eb,
rx_demod_n0,
rx_data_rate,
]
validity_buffer = hk_data[22:]
log_to_both(printer, str(header_list))
log_to_both(printer, str(content_list))
printer.print_validity_buffer(validity_buffer=validity_buffer, num_vars=8)
def handle_syrlinks_tx_registers_dataset(
printer: FsfwTmTcPrinter,
hk_data: bytes,
):
reply = HkReplyUnpacked()
header_list = ["TX Status", "TX Waveform", "TX AGC value"]
tx_status = hk_data[0]
tx_waveform = hk_data[1]
tx_agc_value = struct.unpack("!H", hk_data[2:4])
content_list = [tx_status, tx_waveform, tx_agc_value]
validity_buffer = hk_data[4:]
log_to_both(printer, str(header_list))
log_to_both(printer, str(content_list))
printer.print_validity_buffer(validity_buffer=validity_buffer, num_vars=3)
def handle_self_test_data(printer: FsfwTmTcPrinter, hk_data: bytes):
header_list = [
"Init Err",
"Init Raw Mag X [nT]",
"Init Raw Mag Y [nT]",
"Init Raw Mag Z [nT]",
"Init Cal Mag X [nT]",
"Init Cal Mag Y [nT]",
"Init Cal Mag Z [nT]",
"Init Coil X Current [mA]",
"Init Coil Y Current [mA]",
"Init Coil Z Current [mA]",
"Init Coil X Temperature [°C]",
"Init Coil Y Temperature [°C]",
"Init Coil Z Temperature [°C]",
"Err",
"Raw Mag X [nT]",
"Raw Mag Y [nT]",
"Raw Mag Z [nT]",
"Cal Mag X [nT]",
"Cal Mag Y [nT]",
"Cal Mag Z [nT]",
"Coil X Current [mA]",
"Coil Y Current [mA]",
"Coil Z Current [mA]",
"Coil X Temperature [°C]",
"Coil Y Temperature [°C]",
"Coil Z Temperature [°C]",
"Fina Err",
"Fina Raw Mag X [nT]",
"Fina Raw Mag Y [nT]",
"Fina Raw Mag Z [nT]",
"Fina Cal Mag X [nT]",
"Fina Cal Mag Y [nT]",
"Fina Cal Mag Z [nT]",
"Fina Coil X Current [mA]",
"Fina Coil Y Current [mA]",
"Fina Coil Z Current [mA]",
"Fina Coil X Temperature [°C]",
"Fina Coil Y Temperature [°C]",
"Fina Coil Z Temperature [°C]",
]
# INIT step (no coil actuation)
init_err = hk_data[0]
init_raw_mag_x = struct.unpack("!f", hk_data[1:5])[0]
init_raw_mag_y = struct.unpack("!f", hk_data[5:9])[0]
init_raw_mag_z = struct.unpack("!f", hk_data[9:13])[0]
init_cal_mag_x = struct.unpack("!f", hk_data[13:17])[0]
init_cal_mag_y = struct.unpack("!f", hk_data[17:21])[0]
init_cal_mag_z = struct.unpack("!f", hk_data[21:25])[0]
init_coil_x_current = struct.unpack("!f", hk_data[25:29])[0]
init_coil_y_current = struct.unpack("!f", hk_data[29:33])[0]
init_coil_z_current = struct.unpack("!f", hk_data[33:37])[0]
init_coil_x_temperature = struct.unpack("!H", hk_data[37:39])[0]
init_coil_y_temperature = struct.unpack("!H", hk_data[39:41])[0]
init_coil_z_temperature = struct.unpack("!H", hk_data[41:43])[0]
# Actuation step
err = hk_data[43]
raw_mag_x = struct.unpack("!f", hk_data[44:48])[0]
raw_mag_y = struct.unpack("!f", hk_data[48:52])[0]
raw_mag_z = struct.unpack("!f", hk_data[52:56])[0]
cal_mag_x = struct.unpack("!f", hk_data[56:60])[0]
cal_mag_y = struct.unpack("!f", hk_data[60:64])[0]
cal_mag_z = struct.unpack("!f", hk_data[64:68])[0]
coil_x_current = struct.unpack("!f", hk_data[68:72])[0]
coil_y_current = struct.unpack("!f", hk_data[72:76])[0]
coil_z_current = struct.unpack("!f", hk_data[76:80])[0]
coil_x_temperature = struct.unpack("!H", hk_data[80:82])[0]
coil_y_temperature = struct.unpack("!H", hk_data[82:84])[0]
coil_z_temperature = struct.unpack("!H", hk_data[84:86])[0]
# FINA step (no coil actuation)
fina_err = hk_data[86]
fina_raw_mag_x = struct.unpack("!f", hk_data[87:91])[0]
fina_raw_mag_y = struct.unpack("!f", hk_data[91:95])[0]
fina_raw_mag_z = struct.unpack("!f", hk_data[95:99])[0]
fina_cal_mag_x = struct.unpack("!f", hk_data[99:103])[0]
fina_cal_mag_y = struct.unpack("!f", hk_data[103:107])[0]
fina_cal_mag_z = struct.unpack("!f", hk_data[107:111])[0]
fina_coil_x_current = struct.unpack("!f", hk_data[111:115])[0]
fina_coil_y_current = struct.unpack("!f", hk_data[115:119])[0]
fina_coil_z_current = struct.unpack("!f", hk_data[119:123])[0]
fina_coil_x_temperature = struct.unpack("!H", hk_data[123:125])[0]
fina_coil_y_temperature = struct.unpack("!H", hk_data[125:127])[0]
fina_coil_z_temperature = struct.unpack("!H", hk_data[127:129])[0]
validity_buffer = hk_data[129:]
content_list = [
init_err,
init_raw_mag_x,
init_raw_mag_y,
init_raw_mag_z,
init_cal_mag_x,
init_cal_mag_y,
init_cal_mag_z,
init_coil_x_current,
init_coil_y_current,
init_coil_z_current,
init_coil_x_temperature,
init_coil_y_temperature,
init_coil_z_temperature,
err,
raw_mag_x,
init_raw_mag_y,
raw_mag_z,
cal_mag_x,
cal_mag_y,
cal_mag_z,
coil_x_current,
coil_y_current,
coil_z_current,
coil_x_temperature,
coil_y_temperature,
coil_z_temperature,
fina_err,
fina_raw_mag_x,
fina_raw_mag_y,
fina_raw_mag_z,
fina_cal_mag_x,
fina_cal_mag_y,
fina_cal_mag_z,
fina_coil_x_current,
fina_coil_y_current,
fina_coil_z_current,
fina_coil_x_temperature,
fina_coil_y_temperature,
fina_coil_z_temperature,
]
num_of_vars = len(header_list)
log_to_both(printer, str(header_list))
log_to_both(printer, str(content_list))
printer.print_validity_buffer(validity_buffer=validity_buffer, num_vars=num_of_vars)
def handle_gps_data(printer: FsfwTmTcPrinter, hk_data: bytes):
LOGGER.info(f"Received GPS data, HK data length {len(hk_data)}")
reply = HkReplyUnpacked()
var_index = 0
header_list = [
"Latitude",
"Longitude",
"Altitude",
"Fix Mode",
"Sats in Use",
"Date",
"Unix Seconds",
]
latitude = struct.unpack("!d", hk_data[0:8])[0]
longitude = struct.unpack("!d", hk_data[8:16])[0]
altitude = struct.unpack("!d", hk_data[16:24])[0]
fix_mode = hk_data[24]
sat_in_use = hk_data[25]
year = struct.unpack("!H", hk_data[26:28])[0]
month = hk_data[28]
day = hk_data[29]
hours = hk_data[30]
minutes = hk_data[31]
seconds = hk_data[32]
date_string = f"{day}.{month}.{year} {hours}:{minutes}:{seconds}"
unix_seconds = struct.unpack("!I", hk_data[33:37])[0]
content_list = [
latitude,
longitude,
altitude,
fix_mode,
sat_in_use,
date_string,
unix_seconds,
]
var_index += 13
reply.num_of_vars = var_index
if not os.path.isfile("gps_log.txt"):
with open("gps_log.txt", "w") as gps_file:
gps_file.write(
"Time, Latitude [deg], Longitude [deg], Altitude [m], Fix Mode, Sats in Use, "
"Date, Unix Seconds\n"
)
with open("gps_log.txt", "a") as gps_file:
gps_file.write(
f"{datetime.datetime.now()}, {latitude}, {longitude}, {altitude}, "
f"{fix_mode}, {sat_in_use}, {date_string}, {unix_seconds}\n"
)
validity_buffer = hk_data[37:39]
log_to_both(printer, str(header_list))
log_to_both(printer, str(content_list))
printer.print_validity_buffer(validity_buffer=validity_buffer, num_vars=10)
def handle_bpx_hk_data(printer: FsfwTmTcPrinter, set_id: int, hk_data: bytes):
if set_id == BpxSetIds.GET_HK_SET:
fmt_str = "!HHHHhhhhIB"
inc_len = struct.calcsize(fmt_str)
(
charge_current,
discharge_current,
heater_current,
batt_voltage,
batt_temp_1,
batt_temp_2,
batt_temp_3,
batt_temp_4,
reboot_cntr,
boot_cause,
) = struct.unpack(fmt_str, hk_data[0:inc_len])
header_list = [
"Charge Current",
"Discharge Current",
"Heater Current",
"Battery Voltage",
"Batt Temp 1",
"Batt Temp 2",
"Batt Temp 3",
"Batt Temp 4",
"Reboot Counter",
"Boot Cause",
]
content_list = [
charge_current,
discharge_current,
heater_current,
batt_voltage,
batt_temp_1,
batt_temp_2,
batt_temp_3,
batt_temp_4,
reboot_cntr,
boot_cause,
]
validity_buffer = hk_data[inc_len:]
log_to_both(printer, str(header_list))
log_to_both(printer, str(content_list))
printer.print_validity_buffer(validity_buffer=validity_buffer, num_vars=10)
elif set_id == BpxSetIds.GET_CFG_SET:
battheat_mode = hk_data[0]
battheat_low = struct.unpack("!b", hk_data[1:2])[0]
battheat_high = struct.unpack("!b", hk_data[2:3])[0]
header_list = [
"Battery Heater Mode",
"Battery Heater Low Limit",
"Battery Heater High Limit",
]
content_list = [battheat_mode, battheat_low, battheat_high]
validity_buffer = hk_data[3:]
log_to_both(printer, str(header_list))
log_to_both(printer, str(content_list))
printer.print_validity_buffer(validity_buffer=validity_buffer, num_vars=10)
def handle_core_hk_data(printer: FsfwTmTcPrinter, hk_data: bytes):
fmt_str = "!fffH"
inc_len = struct.calcsize(fmt_str)
(temperature, ps_voltage, pl_voltage, tx_agc_value) = struct.unpack(
fmt_str, hk_data[0 : 0 + inc_len]
)
printout = (
f"Chip Temperature [°C] {temperature} | PS Voltage [mV] {ps_voltage} | "
f"PL Voltage [mV] {pl_voltage} | TX AGC {tx_agc_value}"
)
log_to_both(printer, printout)
printer.print_validity_buffer(validity_buffer=hk_data[inc_len:], num_vars=4)
P60_INDEX_LIST = [
"ACU VCC",
"PDU1 VCC",
"X3 IDLE VCC",
"PDU2 VCC",
"ACU VBAT",
"PDU1 VBAT",
"X3 IDLE VBAT",
"PDU2 VBAT",
"STACK VBAT",
"STACK 3V3",
"STACK 5V",
"GS3V3",
"GS5V",
]
WDT_LIST = ["GND", "I2C", "CAN", "CSP0", "CSP1"]
PDU1_CHANNELS_NAMES = [
"TCS Board",
"Syrlinks",
"Startracker",
"MGT",
"SUS Nominal",
"SCEX",
"PLOC",
"ACS A Side",
"Unused Channel 8",
]
PDU2_CHANNELS_NAMES = [
"Q7S",
"Payload PCDU CH1",
"RW",
"TCS Heater In",
"SUS Redundant",
"Deployment Mechanism",
"Payload PCDU CH6",
"ACS B Side",
"Payload Camera",
]
PDU_CHANNEL_NAMES = [PDU1_CHANNELS_NAMES, PDU2_CHANNELS_NAMES]
class WdtInfo:
def __init__(self):
self.wdt_reboots_list = []
self.time_pings_left_list = []
def print(self, printer: FsfwTmTcPrinter):
wdt_info = "WDT Type | Reboots | Time or Pings left (CSP only)"
log_to_both(printer, wdt_info)
for idx in range(len(self.wdt_reboots_list)):
log_to_both(
printer,
f"{WDT_LIST[idx].ljust(5)} | "
f"{self.wdt_reboots_list[idx]:010} | {self.time_pings_left_list[idx]:010}",
)
def parse(self, wdt_data: bytes, current_idx: int) -> int:
priv_idx = 0
self.wdt_reboots_list = []
self.time_pings_left_list = []
for idx in range(5):
self.wdt_reboots_list.append(
struct.unpack("!I", wdt_data[priv_idx : priv_idx + 4])[0]
)
priv_idx += 4
current_idx += 4
for idx in range(3):
self.time_pings_left_list.append(
struct.unpack("!I", wdt_data[priv_idx : priv_idx + 4])[0]
)
priv_idx += 4
current_idx += 4
for idx in range(2):
self.time_pings_left_list.append(wdt_data[priv_idx])
current_idx += 1
priv_idx += 1
return current_idx
def handle_pdu_data(
printer: FsfwTmTcPrinter, pdu_idx: int, set_id: int, hk_data: bytes
):
current_idx = 0
priv_idx = pdu_idx - 1
if set_id == SetIds.PDU_1_AUX or set_id == SetIds.PDU_2_AUX:
fmt_str = "!hhBBBIIH"
inc_len = struct.calcsize(fmt_str)
(
vcc,
vbat,
conv_enb_0,
conv_enb_1,
conv_enb_2,
boot_cause,
uptime,
reset_cause,
) = struct.unpack(fmt_str, hk_data[current_idx : current_idx + inc_len])
log_to_both(printer, f"VCC {vcc} mV | VBAT {vbat} mV")
log_to_both(
printer, f"Converter Enables [{conv_enb_0},{conv_enb_1},{conv_enb_2}]"
)
log_to_both(
printer,
f"Boot Cause {boot_cause} | Uptime {uptime} | Reset Cause {reset_cause}",
)
current_idx += inc_len
latchup_list = []
log_to_both(printer, "Latchups")
for idx in range(len(PDU1_CHANNELS_NAMES)):
latchup_list.append(
struct.unpack("!H", hk_data[current_idx : current_idx + 2])[0]
)
content_line = (
f"{PDU_CHANNEL_NAMES[priv_idx][idx].ljust(24)} | {latchup_list[idx]}"
)
log_to_both(printer, content_line)
current_idx += 2
device_types = []
for idx in range(len(PDU1_CHANNELS_NAMES)):
device_types.append(hk_data[current_idx])
current_idx += 1
device_statuses = []
for idx in range(len(PDU1_CHANNELS_NAMES)):
device_statuses.append(hk_data[current_idx])
current_idx += 1
wdt = WdtInfo()
current_idx = wdt.parse(wdt_data=hk_data[current_idx:], current_idx=current_idx)
wdt.print(printer=printer)
if set_id == SetIds.PDU_1_CORE or set_id == SetIds.PDU_2_CORE:
log_to_both(printer, f"Received PDU HK from PDU {pdu_idx}")
current_list = []
for idx in range(len(PDU1_CHANNELS_NAMES)):
current_list.append(
struct.unpack("!h", hk_data[current_idx : current_idx + 2])[0]
)
current_idx += 2
voltage_list = []
for idx in range(len(PDU1_CHANNELS_NAMES)):
voltage_list.append(
struct.unpack("!H", hk_data[current_idx : current_idx + 2])[0]
)
current_idx += 2
output_enb_list = []
for idx in range(len(PDU1_CHANNELS_NAMES)):
output_enb_list.append(hk_data[current_idx])
current_idx += 1
header_str = f"{'Name'.ljust(24)} | OutEnb | U [mV] | I [mA]"
print(header_str)
printer.file_logger.info(header_str)
for idx in range(len(PDU1_CHANNELS_NAMES)):
out_enb = f"{output_enb_list[idx]}".ljust(6)
content_line = (
f"{PDU_CHANNEL_NAMES[priv_idx][idx].ljust(24)} | {out_enb} | "
f"{voltage_list[idx]:05} | {current_list[idx]:04}"
)
log_to_both(printer, content_line)
fmt_str = "!IBh"
inc_len = struct.calcsize(fmt_str)
(boot_count, batt_mode, temperature) = struct.unpack(
fmt_str, hk_data[current_idx : current_idx + inc_len]
)
info = (
f"Boot Count {boot_count} | Battery Mode {batt_mode} | "
f"Temperature {temperature / 10.0}"
)
log_to_both(printer, info)
def handle_p60_hk_data(printer: FsfwTmTcPrinter, set_id: int, hk_data: bytes):
if set_id == SetIds.P60_CORE:
log_to_both(printer, "Received P60 Core HK. Voltages in mV, currents in mA")
current_idx = 0
current_list = []
for idx in range(13):
current_list.append(
struct.unpack("!h", hk_data[current_idx : current_idx + 2])[0]
)
current_idx += 2
voltage_list = []
for idx in range(13):
voltage_list.append(
struct.unpack("!H", hk_data[current_idx : current_idx + 2])[0]
)
current_idx += 2
out_enb_list = []
for idx in range(13):
out_enb_list.append(hk_data[current_idx])
current_idx += 1
header_str = f"{'Name'.ljust(24)} | OutEnb | U [mV] | I [mA]"
print(header_str)
printer.file_logger.info(header_str)
for idx in range(13):
out_enb = f"{out_enb_list[idx]}".ljust(6)
content_line = (
f"{P60_INDEX_LIST[idx].ljust(24)} | {out_enb} | "
f"{voltage_list[idx]:05} | {current_list[idx]:04}"
)
log_to_both(printer, content_line)
fmt_str = "!IBhHhh"
inc_len = struct.calcsize(fmt_str)
(
boot_count,
batt_mode,
batt_current,
batt_voltage,
temp_0,
temp_1,
) = struct.unpack(fmt_str, hk_data[current_idx : current_idx + inc_len])
current_idx += inc_len
batt_info = (
f"Batt: Mode {batt_mode} | Boot Count {boot_count} | "
f"Charge current {batt_current} | Voltage {batt_voltage}"
)
temps = f"In C: Temp 0 {temp_0 / 10.0} | Temp 1 {temp_1 / 10.0} | "
log_to_both(printer, temps)
log_to_both(printer, batt_info)
printer.print_validity_buffer(validity_buffer=hk_data[current_idx:], num_vars=9)
if set_id == SetIds.P60_AUX:
log_to_both(printer, "Received P60 AUX HK. Voltages in mV, currents in mA")
current_idx = 0
latchup_list = []
log_to_both(printer, "P60 Dock Latchups")
for idx in range(0, 13):
latchup_list.append(
struct.unpack("!H", hk_data[current_idx : current_idx + 2])[0]
)
content_line = f"{P60_INDEX_LIST[idx].ljust(24)} | {latchup_list[idx]}"
log_to_both(printer, content_line)
current_idx += 2
fmt_str = "!IIHBBHHhhB"
inc_len = struct.calcsize(fmt_str)
(
boot_cause,
uptime,
reset_cause,
heater_on,
conv_5v_on,
dock_vbat,
dock_vcc_c,
batt_temp_0,
batt_temp_1,
dearm_status,
) = struct.unpack(fmt_str, hk_data[current_idx : current_idx + inc_len])
current_idx += inc_len
wdt = WdtInfo()
current_idx = wdt.parse(wdt_data=hk_data[current_idx:], current_idx=current_idx)
fmt_str = "!hhbb"
inc_len = struct.calcsize(fmt_str)
(
batt_charge_current,
batt_discharge_current,
ant6_depl,
ar6_depl,
) = struct.unpack(fmt_str, hk_data[current_idx : current_idx + inc_len])
current_idx += inc_len
device_types = []
device_statuses = []
for idx in range(8):
device_types.append(hk_data[current_idx])
current_idx += 1
for idx in range(8):
device_statuses.append(hk_data[current_idx])
current_idx += 1
util_info = (
f"Reset Cause {reset_cause} | Boot Cause {boot_cause} | Uptime {uptime}"
)
util_info_2 = (
f"Conv 5V on {conv_5v_on} | Heater On {heater_on} | "
f"Dock VBAT {dock_vbat} | DOCK VCC Current {dock_vcc_c}"
)
log_to_both(printer, util_info)
log_to_both(printer, util_info_2)
wdt.print(printer)
misc_info = (
f"Dearm {dearm_status} | ANT6 Depl {ant6_depl} | AR6 Deply {ar6_depl}"
)
log_to_both(printer, misc_info)
batt_info = (
f"Batt Temp 0 {batt_temp_0 / 10.0} | Batt Temp 1 {batt_temp_1 / 10.0} | "
f"Charge Current {batt_charge_current} | Discharge Current {batt_discharge_current}"
)
log_to_both(printer, batt_info)
printer.print_validity_buffer(
validity_buffer=hk_data[current_idx:], num_vars=27
LOGGER.info(
f"Service 3 TM: Parsing for object {object_id} and set ID {set_id} "
f"has not been implemented."
)
View File
Whitespace-only changes.
+21
View File
@@ -0,0 +1,21 @@
import struct
from pus_tm.defs import PrintWrapper
from pus_tc.system.core import SetIds
from tmtccmd.utility.tmtc_printer import FsfwTmTcPrinter
def handle_core_hk_data(printer: FsfwTmTcPrinter, set_id: int, hk_data: bytes):
if set_id == SetIds.HK:
pw = PrintWrapper(printer)
fmt_str = "!fff"
inc_len = struct.calcsize(fmt_str)
(temperature, ps_voltage, pl_voltage) = struct.unpack(
fmt_str, hk_data[0 : 0 + inc_len]
)
printout = (
f"Chip Temperature [°C] {temperature} | PS Voltage [mV] {ps_voltage} | "
f"PL Voltage [mV] {pl_voltage}"
)
pw.dlog(printout)
printer.print_validity_buffer(validity_buffer=hk_data[inc_len:], num_vars=3)
+41
View File
@@ -0,0 +1,41 @@
import struct
from pus_tm.defs import PrintWrapper
from pus_tm.tm_tcp_server import TmTcpServer
from tmtccmd.utility import ObjectId
from tmtccmd.utility.tmtc_printer import FsfwTmTcPrinter
TM_TCP_SERVER = TmTcpServer.getInstance()
def handle_thermal_controller_hk_data(
object_id: ObjectId, printer: FsfwTmTcPrinter, set_id: int, hk_data: bytes
):
if set_id == 0:
pw = PrintWrapper(printer)
pw.dlog("Received Sensor Temperature data")
# get all the floats
tm_data = struct.unpack("!ffffffffffffffff", hk_data[: 16 * 4])
parsed_data = {}
# put them into an nice dictionary
parsed_data["SENSOR_PLOC_HEATSPREADER"] = tm_data[0]
parsed_data["SENSOR_PLOC_MISSIONBOARD"] = tm_data[1]
parsed_data["SENSOR_4K_CAMERA"] = tm_data[2]
parsed_data["SENSOR_DAC_HEATSPREADER"] = tm_data[3]
parsed_data["SENSOR_STARTRACKER"] = tm_data[4]
parsed_data["SENSOR_RW1"] = tm_data[5]
parsed_data["SENSOR_DRO"] = tm_data[6]
parsed_data["SENSOR_SCEX"] = tm_data[7]
parsed_data["SENSOR_X8"] = tm_data[8]
parsed_data["SENSOR_HPA"] = tm_data[9]
parsed_data["SENSOR_TX_MODUL"] = tm_data[10]
parsed_data["SENSOR_MPA"] = tm_data[11]
parsed_data["SENSOR_ACU"] = tm_data[12]
parsed_data["SENSOR_PLPCDU_HEATSPREADER"] = tm_data[13]
parsed_data["SENSOR_TCS_BOARD"] = tm_data[14]
parsed_data["SENSOR_MAGNETTORQUER"] = tm_data[15]
TM_TCP_SERVER.report_parsed_hk_data(object_id, set_id, parsed_data)
+99
View File
@@ -0,0 +1,99 @@
import socket
from typing import Optional
import json
import base64
from tmtccmd.logging import get_console_logger
from tmtccmd.utility.obj_id import ObjectId
from dle_encoder import DleEncoder
# TODO add to configuration parameters
SERVER_HOST = ""
SERVER_PORT = 7305
LOGGER = get_console_logger()
class TmTcpServer:
_Instance = None
def __init__(self):
self.server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.server_socket.bind((SERVER_HOST, SERVER_PORT))
# for now, only accept one connection
self.server_socket.listen(0)
self.server_socket.setblocking(False)
self.client_connection: Optional[socket.socket] = None
self.dle_encoder = DleEncoder()
def __del__(self):
try:
self.close()
except:
LOGGER.warning("Could not close sockets!")
def close(self):
self.server_socket.close()
if self.client_connection != None:
self.client_connection.close()
def getInstance():
if TmTcpServer._Instance == None:
TmTcpServer._Instance = TmTcpServer()
return TmTcpServer._Instance
def _send_dictionary_over_socket(self, dictionary):
# keep listeners current
if self.client_connection == None:
# no running connection, see if a client wants to connect
try:
(self.client_connection, _) = self.server_socket.accept()
self.client_connection.setblocking(False)
except:
# no client waiting
return
data_json_bytes = json.dumps(dictionary).encode()
# dle encode the bytes
# adding a newline because someone might want to look at it in a console
data_json_bytes = self.dle_encoder.encode(data_json_bytes + b"\n")
try:
sent_length = self.client_connection.send(data_json_bytes)
except:
self.client_connection = None
return
if sent_length == 0:
self.client_connection.close()
self.client_connection = None
def report_raw_hk_data(self, object_id: ObjectId, set_id: int, hk_data: bytes):
data_dict = {
"type": "TM",
"tmType": "Raw HK",
"objectId": object_id.as_string,
"setId": set_id,
"rawData": base64.b64encode(hk_data).decode(),
}
self._send_dictionary_over_socket(data_dict)
def report_parsed_hk_data(self, object_id: ObjectId, set_id: int, data_dictionary):
data_dict = {
"type": "TM",
"tmType": "Parsed HK",
"objectId": object_id.as_string,
"setId": set_id,
"content": data_dictionary,
}
self._send_dictionary_over_socket(data_dict)
-2
View File
@@ -1,5 +1,3 @@
import logging
from datetime import datetime
from typing import cast
from tmtccmd.tm.pus_1_verification import Service1TMExtended
+1 -1
View File
@@ -1 +1 @@
tmtccmd >= 2.2.1
tmtccmd >= 2.2.2
+1 -1
View File
@@ -27,7 +27,7 @@ classifiers =
[options]
install_requires =
tmtccmd >= 2.2.1
tmtccmd >= 2.2.2
packages = find:
python_requires = >=3.8
+3 -1
View File
@@ -45,7 +45,9 @@ def tmtcc_pre_args() -> EiveHookObject:
return EiveHookObject(json_cfg_path=default_json_path())
def tmtcc_post_args(hook_obj: EiveHookObject, use_gui: bool, args: Optional[argparse.Namespace]):
def tmtcc_post_args(
hook_obj: EiveHookObject, use_gui: bool, args: Optional[argparse.Namespace]
):
setup_args = SetupArgs(
hook_obj=hook_obj, use_gui=use_gui, apid=PUS_APID, cli_args=args
)
+7 -2
View File
@@ -1,7 +1,12 @@
#!/usr/bin/env python3
"""TMTC commander for EIVE"""
from tmtcc import tmtcc_post_args, tmtcc_pre_args, create_default_args_parser, \
add_default_tmtccmd_args, parse_default_input_arguments
from tmtcc import (
tmtcc_post_args,
tmtcc_pre_args,
create_default_args_parser,
add_default_tmtccmd_args,
parse_default_input_arguments,
)
def main():
+1 -1
Submodule tmtccmd updated: 0895aae634...eaed332a69.
+14 -12
View File
@@ -11,6 +11,7 @@ try:
create_default_args_parser,
add_default_tmtccmd_args,
parse_default_input_arguments,
handle_unspecified_args,
)
from tmtccmd.ccsds.handler import CcsdsTmHandler, ApidHandler
from tmtccmd.logging import get_console_logger
@@ -58,27 +59,28 @@ def main():
)
tmtc_file_logger = create_tmtc_logger()
tmtc_backend.usr_send_wrapper = (pre_tc_send_cb, tmtc_file_logger)
tmtc_backend.set_mode(CoreModeList.CONTINUOUS_MODE)
get_console_logger().info("Disabling console logger for continuous operation")
get_console_logger().disabled = True
# get_console_logger().info("Disabling console logger for continuous operation")
# get_console_logger().setLevel("ERROR")
tmtccmd.init_and_start_daemons(tmtc_backend=tmtc_backend)
tmtccmd.performOperation(tmtc_backend=tmtc_backend)
tmtc_backend.perform_operation()
# remove cmdline args so that we can reuse code
sys.argv = sys.argv[:1]
while True:
args = parse_default_input_arguments(arg_parser, hook_obj)
setup_args = SetupArgs(
hook_obj=hook_obj, use_gui=False, apid=PUS_APID, cli_args=args
)
tmtccmd.setup(setup_args=setup_args)
args.service = None
args.op_code = None
handle_unspecified_args(args, hook_obj.get_service_op_code_dictionary())
tmtc_backend.set_service(args.service)
tmtc_backend.set_opcode(args.op_code)
tmtc_backend.set_mode(CoreModeList.CONTINUOUS_MODE)
tmtccmd.performOperation(tmtc_backend=tmtc_backend)
tmtc_backend.perform_operation()
if __name__ == "__main__":