Compare commits

...

109 Commits

Author SHA1 Message Date
97f99415d6 Merge pull request 'prep v5.9.0' (#248) from prep_v5.9.0 into main
All checks were successful
EIVE/-/pipeline/head This commit looks good
Reviewed-on: #248
2023-10-24 11:58:48 +02:00
c195d03b2e prep v5.9.0
Some checks are pending
EIVE/-/pipeline/head Build started...
2023-10-24 11:58:15 +02:00
8f8bcde90e Merge pull request 'PL PCDU parameter update' (#247) from pl-pcdu-param-update into main
All checks were successful
EIVE/-/pipeline/head This commit looks good
Reviewed-on: #247
2023-10-24 11:57:09 +02:00
d38fc53701 Merge remote-tracking branch 'origin/main' into pl-pcdu-param-update
Some checks are pending
EIVE/-/pipeline/pr-main Build started...
2023-10-24 11:56:12 +02:00
e4bc424093 Merge pull request 'CFDP file downlink generated files' (#242) from cfdp-file-downlink into main
All checks were successful
EIVE/-/pipeline/head This commit looks good
Reviewed-on: #242
2023-10-24 11:55:16 +02:00
5a87a17fa2 Merge branch 'main' into cfdp-file-downlink
All checks were successful
EIVE/-/pipeline/pr-main This commit looks good
2023-10-24 11:54:09 +02:00
b45b0b2271 another small bug
All checks were successful
EIVE/-/pipeline/pr-main This commit looks good
2023-10-23 17:20:04 +02:00
d900a689da bugfixes
All checks were successful
EIVE/-/pipeline/pr-main This commit looks good
2023-10-23 17:16:23 +02:00
70c3f9dcaa changelog
All checks were successful
EIVE/-/pipeline/head This commit looks good
2023-10-23 17:09:30 +02:00
9a1a686b9e PL PCDU param update 2023-10-23 16:30:16 +02:00
0747b6aa72 Merge pull request 'pwr ctrl re-export' (#243) from pwr-ctrl-reexport into main
All checks were successful
EIVE/-/pipeline/head This commit looks good
Reviewed-on: #243
Reviewed-by: Marius Eggert <eggertm@irs.uni-stuttgart.de>
2023-10-16 16:26:57 +02:00
d388676678 pwr ctrl re-export
All checks were successful
EIVE/-/pipeline/head This commit looks good
2023-10-16 15:49:46 +02:00
60f7ae5453 new retval
All checks were successful
EIVE/-/pipeline/head This commit looks good
EIVE/-/pipeline/pr-main This commit looks good
2023-10-13 15:23:53 +02:00
10e163be75 Merge branch 'refactor-fix-ptme' into cfdp-file-downlink
All checks were successful
EIVE/-/pipeline/head This commit looks good
2023-10-13 09:45:11 +02:00
84df438e9d new retvals
All checks were successful
EIVE/-/pipeline/head This commit looks good
2023-10-13 09:18:11 +02:00
e249f147bc Merge pull request 'Add Xiphos WDT commands' (#241) from add-xiphos-wdt-handling into main
All checks were successful
EIVE/-/pipeline/head This commit looks good
Reviewed-on: #241
2023-10-11 19:34:48 +02:00
d5118f0f98 Merge remote-tracking branch 'origin/main' into add-xiphos-wdt-handling
All checks were successful
EIVE/-/pipeline/pr-main This commit looks good
2023-10-11 19:33:15 +02:00
39e6a04889 prep v5.7.1
All checks were successful
EIVE/-/pipeline/head This commit looks good
2023-10-11 18:14:19 +02:00
eb697befe3 changelog
All checks were successful
EIVE/-/pipeline/pr-main This commit looks good
2023-10-11 15:05:40 +02:00
0bce6a506c Merge branch 'main' into add-xiphos-wdt-handling
All checks were successful
EIVE/-/pipeline/pr-main This commit looks good
2023-10-11 15:05:05 +02:00
dcae930895 disable works
All checks were successful
EIVE/-/pipeline/head This commit looks good
2023-10-11 14:59:56 +02:00
012e9b148e rerun gens
All checks were successful
EIVE/-/pipeline/head This commit looks good
2023-10-11 12:59:09 +02:00
34a3a67ac7 Merge remote-tracking branch 'origin/main' into cfdp-file-downlink
All checks were successful
EIVE/-/pipeline/head This commit looks good
2023-10-11 12:57:32 +02:00
aba369f11f added WDT enable and disable command
All checks were successful
EIVE/-/pipeline/head This commit looks good
2023-10-11 11:38:45 +02:00
1123c4d4df WDT
All checks were successful
EIVE/-/pipeline/head This commit looks good
2023-10-11 11:37:48 +02:00
7cd1b0070a add WDT module 2023-10-11 11:35:57 +02:00
ec8febf623 add new obj ID 2023-10-11 10:55:08 +02:00
c10a926b9f Merge pull request 'normal mode for SCEX' (#240) from scex-normal-mode into main
All checks were successful
EIVE/-/pipeline/head This commit looks good
Reviewed-on: #240
Reviewed-by: Marius Eggert <eggertm@irs.uni-stuttgart.de>
2023-10-11 10:51:49 +02:00
9711dd9242 normal mode for SCEX
All checks were successful
EIVE/-/pipeline/head This commit looks good
2023-10-10 18:29:07 +02:00
d82cecbe6e Merge pull request 'prep v5.7.0' (#239) from prep_v5.7.0 into main
All checks were successful
EIVE/-/pipeline/head This commit looks good
Reviewed-on: #239
2023-10-10 14:33:29 +02:00
14820d63ac ruff fixes
All checks were successful
EIVE/-/pipeline/head This commit looks good
2023-10-10 14:32:04 +02:00
3d27711abb prep 5.7.0
All checks were successful
EIVE/-/pipeline/head This commit looks good
2023-10-10 14:29:21 +02:00
1d5db0951e changelog 2023-10-10 14:29:06 +02:00
d67987745d Merge pull request 'Power Controller' (#238) from pwr-ctrl into main
All checks were successful
EIVE/-/pipeline/head This commit looks good
Reviewed-on: #238
Reviewed-by: Robin Müller <muellerr@irs.uni-stuttgart.de>
2023-10-10 13:54:20 +02:00
bde03fc9c0 gens
All checks were successful
EIVE/-/pipeline/pr-main This commit looks good
EIVE/-/pipeline/head This commit looks good
2023-10-10 13:51:35 +02:00
be1ac09515 gens
All checks were successful
EIVE/-/pipeline/pr-main This commit looks good
2023-10-10 12:08:55 +02:00
d1fde6f1e5 not sure why this is here
All checks were successful
EIVE/-/pipeline/pr-main This commit looks good
2023-10-09 15:43:16 +02:00
caa843fb1a fixes and subsystem 2023-10-09 15:43:03 +02:00
11f7ed8436 pwr ctrl init 2023-10-09 11:10:39 +02:00
88b0c33632 id defs 2023-10-09 11:10:20 +02:00
0c4762712b new events
All checks were successful
EIVE/-/pipeline/head This commit looks good
2023-10-04 09:51:51 +02:00
dd74f6c3ca ran gens
All checks were successful
EIVE/-/pipeline/head This commit looks good
EIVE/-/pipeline/pr-main This commit looks good
2023-09-29 09:58:21 +02:00
783bdd297a do not use deprecated API
All checks were successful
EIVE/-/pipeline/head This commit looks good
2023-09-25 17:41:45 +02:00
bf399c3d91 Merge pull request 'prep v5.6.0' (#237) from prep_v5.6.0 into main
All checks were successful
EIVE/-/pipeline/head This commit looks good
Reviewed-on: #237
2023-09-14 12:21:37 +02:00
06a058fc4d README
All checks were successful
EIVE/-/pipeline/pr-main This commit looks good
2023-09-14 12:20:35 +02:00
b464182df7 README 2023-09-14 12:18:21 +02:00
a30bccc995 move logo
All checks were successful
EIVE/-/pipeline/pr-main This commit looks good
2023-09-14 12:12:58 +02:00
980242404a switch to ruff
All checks were successful
EIVE/-/pipeline/head This commit looks good
2023-09-14 12:09:50 +02:00
a8545211e8 prep next version
All checks were successful
EIVE/-/pipeline/head This commit looks good
2023-09-14 12:07:25 +02:00
fe439b4d3c Merge pull request 'CFDP file downlink' (#233) from cfdp-file-downlink into main
All checks were successful
EIVE/-/pipeline/head This commit looks good
Reviewed-on: #233
Reviewed-by: Marius Eggert <eggertm@irs.uni-stuttgart.de>
2023-09-14 11:44:22 +02:00
f63f4b9193 bump tmtccmd dependency
All checks were successful
EIVE/-/pipeline/pr-main This commit looks good
2023-09-14 11:26:57 +02:00
8d28b321d4 update CFDP source code
All checks were successful
EIVE/-/pipeline/pr-main This commit looks good
2023-09-13 13:37:10 +02:00
8b45dd8bff Merge remote-tracking branch 'origin/main' into cfdp-file-downlink
All checks were successful
EIVE/-/pipeline/pr-main This commit looks good
2023-09-12 14:17:39 +02:00
b20abc5bfb Merge pull request 'eive-tmtc-bugfixes' (#236) from eive-tmtc-bugfixes into main
All checks were successful
EIVE/-/pipeline/head This commit looks good
Reviewed-on: #236
2023-09-12 13:50:25 +02:00
af1474f10c bump patch version
All checks were successful
EIVE/-/pipeline/pr-main This commit looks good
2023-09-12 13:49:27 +02:00
66db12796b black preview mode, flake8
All checks were successful
EIVE/-/pipeline/head This commit looks good
2023-09-12 13:48:38 +02:00
2d08fc0bfa that appears to be all
All checks were successful
EIVE/-/pipeline/head This commit looks good
2023-09-12 13:47:27 +02:00
9edc819a97 eive-tmtc bugfixes 2023-09-12 13:35:26 +02:00
d23cc6834a Merge pull request 'Prepare v5.5.0' (#235) from prep_next_release into main
All checks were successful
EIVE/-/pipeline/head This commit looks good
Reviewed-on: #235
2023-09-12 13:06:18 +02:00
33cff5e2d2 changelog
All checks were successful
EIVE/-/pipeline/head This commit looks good
2023-09-12 13:05:18 +02:00
acbcbbe98f some fixes for new version
All checks were successful
EIVE/-/pipeline/head This commit looks good
2023-09-12 13:03:54 +02:00
c3b0470aa6 prep next release 2023-09-12 13:01:40 +02:00
1860b754ce Merge remote-tracking branch 'origin/main' into cfdp-file-downlink
All checks were successful
EIVE/-/pipeline/pr-main This commit looks good
2023-09-12 10:52:40 +02:00
68138c6e79 update generates files
All checks were successful
EIVE/-/pipeline/pr-main This commit looks good
2023-09-12 10:51:35 +02:00
e56f8732be Merge pull request 'Relax SUS FDIR' (#205) from relax-sus-fdir-2 into main
All checks were successful
EIVE/-/pipeline/head This commit looks good
Reviewed-on: #205
2023-09-12 10:07:12 +02:00
af5e81158c update events and retvals
Some checks are pending
EIVE/-/pipeline/pr-main Build started...
2023-09-12 10:06:26 +02:00
baa1d20556 Merge branch 'cfdp-file-downlink' of https://egit.irs.uni-stuttgart.de/eive/eive-tmtc into cfdp-file-downlink
All checks were successful
EIVE/-/pipeline/pr-main This commit looks good
2023-09-08 17:50:25 +02:00
1faecb09de some more useful printout 2023-09-08 17:49:59 +02:00
1ad621e630 use tmtccmd main branch til next release
All checks were successful
EIVE/-/pipeline/pr-main This commit looks good
2023-09-07 16:23:28 +02:00
5fc3d8de99 run them yet again
All checks were successful
EIVE/-/pipeline/pr-main This commit looks good
2023-09-07 16:13:00 +02:00
224328cc85 re-run generators 2023-09-07 16:12:37 +02:00
d285b1caec Merge remote-tracking branch 'origin/main' into relax-sus-fdir-2
All checks were successful
EIVE/-/pipeline/pr-main This commit looks good
2023-09-07 16:03:17 +02:00
1f49f0c70d new events 2023-09-07 16:03:12 +02:00
649deac81b shorter delay for proxy operations
All checks were successful
EIVE/-/pipeline/pr-main This commit looks good
2023-09-06 11:45:32 +02:00
7fa1196633 run configs
All checks were successful
EIVE/-/pipeline/pr-main This commit looks good
2023-09-06 10:44:25 +02:00
1b0a7aeabd changelog
All checks were successful
EIVE/-/pipeline/pr-main This commit looks good
2023-09-04 16:13:20 +02:00
412d67494d bump pyproject.toml 2023-09-04 16:12:42 +02:00
25377ccfa2 update retvals
All checks were successful
EIVE/-/pipeline/pr-main This commit looks good
2023-09-04 11:20:08 +02:00
6657bf072c looking good
All checks were successful
EIVE/-/pipeline/pr-main This commit looks good
2023-09-04 11:17:25 +02:00
7f79ef6c12 need absolute paths..
All checks were successful
EIVE/-/pipeline/pr-main This commit looks good
2023-08-31 15:19:38 +02:00
d72b7d9d66 smaller tweaks, generator updates
All checks were successful
EIVE/-/pipeline/pr-main This commit looks good
2023-08-31 15:10:07 +02:00
c687b1411c adapt run file for file downlink
All checks were successful
EIVE/-/pipeline/pr-main This commit looks good
2023-08-31 09:25:57 +02:00
c2bed714dc call correct conversion function
All checks were successful
EIVE/-/pipeline/pr-main This commit looks good
2023-08-30 11:37:17 +02:00
f9f8f9481f hmm
All checks were successful
EIVE/-/pipeline/pr-main This commit looks good
2023-08-30 11:04:05 +02:00
8d6ca602f2 this finally looks correct
All checks were successful
EIVE/-/pipeline/pr-main This commit looks good
2023-08-29 23:28:57 +02:00
c0bd5f572c small fix 2023-08-29 22:56:26 +02:00
25c7decb1e add local entity as remote entity cfg 2023-08-29 22:34:57 +02:00
cc7b1d3331 this is annoying.. 2023-08-29 21:57:10 +02:00
948f3a1a41 improve architecture a bit 2023-08-29 21:41:29 +02:00
8743f59b56 fix for HK level parsing 2023-08-29 21:31:27 +02:00
2cc4a18c1e Merge remote-tracking branch 'origin/main' into cfdp-file-downlink 2023-08-29 21:31:14 +02:00
b1fbad39e3 Merge pull request 'Prep OBSW v6.4.1' (#234) from prep-obsw-v6.4.1 into main
All checks were successful
EIVE/-/pipeline/head This commit looks good
Reviewed-on: #234
2023-08-21 18:45:25 +02:00
de57b9da5b events (wherever these changes come from?)
All checks were successful
EIVE/-/pipeline/head This commit looks good
2023-08-21 15:59:55 +02:00
55624f0447 Merge branch 'cfdp-file-downlink' of https://egit.irs.uni-stuttgart.de/eive/eive-tmtc into cfdp-file-downlink
All checks were successful
EIVE/-/pipeline/pr-main This commit looks good
2023-08-17 16:44:41 +02:00
9841076699 maybe this works better 2023-08-17 16:44:34 +02:00
f1876681fd Merge branch 'main' into cfdp-file-downlink
Some checks failed
EIVE/-/pipeline/pr-main There was a failure building this commit
2023-08-17 16:44:00 +02:00
14b558b7f7 prepare file downlink
Some checks failed
EIVE/-/pipeline/head There was a failure building this commit
2023-08-17 16:42:53 +02:00
54a7c3566f added missing stuff
All checks were successful
EIVE/-/pipeline/head This commit looks good
2023-08-17 11:34:54 +02:00
011be9837e remove more unused includes
All checks were successful
EIVE/-/pipeline/head This commit looks good
2023-08-17 11:34:34 +02:00
88161ed125 more cleaning up, new cfdp module
All checks were successful
EIVE/-/pipeline/head This commit looks good
2023-08-17 11:33:42 +02:00
f02230804d Merge pull request 'mini fixes' (#232) from mini-fixes into main
All checks were successful
EIVE/-/pipeline/head This commit looks good
Reviewed-on: #232
2023-08-16 14:04:03 +02:00
8ddcc37c74 mini fixes
All checks were successful
EIVE/-/pipeline/head This commit looks good
2023-08-16 13:25:29 +02:00
b50c75c13c Merge pull request 'PLOC SUPV HK parsing' (#231) from parse-ploc-supv-hk into main
All checks were successful
EIVE/-/pipeline/head This commit looks good
Reviewed-on: #231
2023-08-15 14:39:09 +02:00
36799ef51d v5.4.3
All checks were successful
EIVE/-/pipeline/pr-main This commit looks good
2023-08-15 14:38:28 +02:00
772ef5b323 changelog
All checks were successful
EIVE/-/pipeline/pr-main This commit looks good
2023-08-15 14:35:45 +02:00
2f8bed4581 works
All checks were successful
EIVE/-/pipeline/head This commit looks good
2023-08-15 14:31:49 +02:00
72def77d40 parse ploc supv HK
All checks were successful
EIVE/-/pipeline/head This commit looks good
2023-08-15 14:15:06 +02:00
957d756d1e Merge remote-tracking branch 'origin/main' into relax-sus-fdir-2
All checks were successful
EIVE/-/pipeline/pr-main This commit looks good
2023-08-03 13:36:27 +02:00
0a05873f4e Squashed commit of the following:
All checks were successful
EIVE/-/pipeline/head This commit looks good
EIVE/-/pipeline/pr-main This commit looks good
commit 2b2ad0a23a
Author: Robin Mueller <muellerr@irs.uni-stuttgart.de>
Date:   Tue Jun 13 07:54:41 2023 +0200

    docs for events

commit 00205f0e75
Author: Robin Mueller <muellerr@irs.uni-stuttgart.de>
Date:   Tue Jun 13 07:43:12 2023 +0200

    new sus event

commit eae0120643
Merge: 4a990e7 fc3cf48
Author: Robin Müller <muellerr@irs.uni-stuttgart.de>
Date:   Sun Jun 11 13:36:27 2023 +0200

    Merge pull request 'switched to prebuilt docker image' (#198) from mohr/docker into main

    Reviewed-on: #198

commit fc3cf480dc
Author: Ulrich Mohr <mohr@irs.uni-stuttgart.de>
Date:   Sun Jun 11 12:14:52 2023 +0200

    bump docker version

commit acca981260
Author: Ulrich Mohr <mohr@irs.uni-stuttgart.de>
Date:   Sun Jun 11 12:12:47 2023 +0200

    jenkins user in docker

commit 822eaa4c89
Author: Ulrich Mohr <mohr@irs.uni-stuttgart.de>
Date:   Sun Jun 11 12:01:26 2023 +0200

    removed empty `environment` block in Jenkinsfile which Jenkins does not like

    diva....

commit 252d140b8e
Author: Ulrich Mohr <mohr@irs.uni-stuttgart.de>
Date:   Sun Jun 11 11:56:39 2023 +0200

    switched to prebuilt docker image

commit 4a990e704b
Author: Robin Mueller <robin.mueller.m@gmail.com>
Date:   Sat Jun 10 14:58:15 2023 +0200

    added basic automation file

commit 522f273c99
Author: Robin Mueller <robin.mueller.m@gmail.com>
Date:   Sat Jun 10 14:48:02 2023 +0200

    add date in changelog

commit 1724a90a26
Author: Robin Mueller <robin.mueller.m@gmail.com>
Date:   Sat Jun 10 14:46:00 2023 +0200

    add release checklist

commit 7b21070363
Author: Robin Mueller <robin.mueller.m@gmail.com>
Date:   Sat Jun 10 14:42:28 2023 +0200

    linter fixes, version bump

commit d390168829
Merge: 238bbd5 a969481
Author: Robin Müller <muellerr@irs.uni-stuttgart.de>
Date:   Sat Jun 10 14:10:42 2023 +0200

    Merge pull request 'v4.0.0-dev' (#197) from v4.0.0-dev into main

    Reviewed-on: #197

commit a969481698
Author: Robin Mueller <robin.mueller.m@gmail.com>
Date:   Fri Jun 9 18:53:11 2023 +0200

    imtq parsing fixes

commit 8bdba71dc3
Merge: 8804a4e e3800ac
Author: Robin Müller <muellerr@irs.uni-stuttgart.de>
Date:   Fri Jun 9 12:44:00 2023 +0200

    Merge pull request 'Rework logging handling' (#194) from rework_logging_handling into v4.0.0-dev

    Reviewed-on: #194

commit e3800ac0c9
Merge: 1548278 8804a4e
Author: Robin Müller <muellerr@irs.uni-stuttgart.de>
Date:   Fri Jun 9 12:43:21 2023 +0200

    Merge branch 'v4.0.0-dev' into rework_logging_handling

commit 8804a4e8e9
Author: Robin Mueller <robin.mueller.m@gmail.com>
Date:   Fri Jun 9 12:43:08 2023 +0200

    bump tmtccmd to v5.0.0rc0

commit 1548278ad6
Merge: 148a52a ac140ae
Author: Robin Mueller <robin.mueller.m@gmail.com>
Date:   Fri Jun 9 12:42:26 2023 +0200

    Merge remote-tracking branch 'origin/v4.0.0-dev' into rework_logging_handling

commit 148a52a69a
Merge: e45072c 238bbd5
Author: Robin Mueller <robin.mueller.m@gmail.com>
Date:   Fri Jun 9 12:42:16 2023 +0200

    Merge remote-tracking branch 'origin/main' into rework_logging_handling

commit ac140aeb2c
Merge: c6c4b9a a5a30d3
Author: Robin Müller <muellerr@irs.uni-stuttgart.de>
Date:   Fri Jun 9 12:41:55 2023 +0200

    Merge pull request 'moved 2 parameters' (#196) from move-pdu-datavar into v4.0.0-dev

    Reviewed-on: #196

commit a5a30d37eb
Author: Robin Mueller <robin.mueller.m@gmail.com>
Date:   Fri Jun 9 12:41:49 2023 +0200

    tweak changelog

commit d9194207a4
Merge: 14d14f1 c6c4b9a
Author: Robin Mueller <robin.mueller.m@gmail.com>
Date:   Fri Jun 9 12:39:38 2023 +0200

    Merge remote-tracking branch 'origin/v4.0.0-dev' into move-pdu-datavar

commit 14d14f12c0
Merge: 17dd9de 238bbd5
Author: Robin Müller <muellerr@irs.uni-stuttgart.de>
Date:   Wed Jun 7 17:27:52 2023 +0200

    Merge branch 'v3.2.0-dev' into move-pdu-datavar

commit 17dd9de51e
Author: Robin Mueller <muellerr@irs.uni-stuttgart.de>
Date:   Wed Jun 7 17:25:51 2023 +0200

    moved 2 parameters

commit 238bbd5843
Merge: 6182369 de02d81
Author: Robin Müller <muellerr@irs.uni-stuttgart.de>
Date:   Wed Jun 7 17:16:37 2023 +0200

    Merge pull request 'better exception handling' (#195) from better-exception-handling into v3.2.0-dev

    Reviewed-on: #195

commit de02d81e1d
Author: Robin Mueller <muellerr@irs.uni-stuttgart.de>
Date:   Wed Jun 7 16:56:43 2023 +0200

    better exception handling

commit e45072c38d
Author: Robin Mueller <muellerr@irs.uni-stuttgart.de>
Date:   Thu May 25 11:31:06 2023 +0200

    import replacement

commit fe96f115d5
Author: Robin Mueller <muellerr@irs.uni-stuttgart.de>
Date:   Wed May 24 13:50:37 2023 +0200

    that should be all

commit e9e43f03d2
Author: Robin Mueller <muellerr@irs.uni-stuttgart.de>
Date:   Wed May 24 13:44:45 2023 +0200

    more stuff

commit aab093cc0a
Author: Robin Mueller <robin.mueller.m@gmail.com>
Date:   Tue May 23 09:54:51 2023 +0200

    rework it

commit c6c4b9a995
Merge: 280c724 5f379bf
Author: Marius Eggert <eggertm@irs.uni-stuttgart.de>
Date:   Mon May 22 10:42:49 2023 +0200

    Merge pull request 'Bugfix CFDP' (#191) from bugfix-cfdp into v4.0.0-dev

    Reviewed-on: #191

commit 6182369e4f
Merge: d23c0c2 620360c
Author: Marius Eggert <eggertm@irs.uni-stuttgart.de>
Date:   Mon May 22 10:41:54 2023 +0200

    Merge pull request 'generic systemctl' (#193) from generic_systemctl into main

    Reviewed-on: #193
    Reviewed-by: Marius Eggert <eggertm@irs.uni-stuttgart.de>

commit 620360c8e8
Merge: 49dde29 d23c0c2
Author: Robin Müller <muellerr@irs.uni-stuttgart.de>
Date:   Fri May 19 11:02:35 2023 +0200

    Merge branch 'main' into generic_systemctl

commit 49dde29847
Author: Robin Mueller <muellerr@irs.uni-stuttgart.de>
Date:   Fri May 19 11:01:06 2023 +0200

    generic systemctl

commit d23c0c20fc
Merge: 280c724 ef1da1e
Author: Marius Eggert <eggertm@irs.uni-stuttgart.de>
Date:   Fri May 19 10:44:01 2023 +0200

    Merge pull request 'new MPSoC events and retvals' (#192) from mpsoc_new_events_retvals into main

    Reviewed-on: #192
    Reviewed-by: Marius Eggert <eggertm@irs.uni-stuttgart.de>

commit ef1da1e882
Author: Robin Mueller <robin.mueller.m@gmail.com>
Date:   Wed May 17 19:00:17 2023 +0200

    changelog

commit 6ec0ce20fa
Author: Robin Mueller <robin.mueller.m@gmail.com>
Date:   Wed May 17 17:15:43 2023 +0200

    new event

commit 5f379bf2bb
Author: Robin Mueller <muellerr@irs.uni-stuttgart.de>
Date:   Mon May 15 16:43:40 2023 +0200

    changelog

commit 7c1e7226e0
Author: Robin Mueller <muellerr@irs.uni-stuttgart.de>
Date:   Mon May 15 16:42:56 2023 +0200

    bugfix CFDP: bump tmtccmd

commit b8e1c7afe9
Author: Robin Mueller <muellerr@irs.uni-stuttgart.de>
Date:   Mon May 15 15:20:56 2023 +0200

    new MPSoC events and retvals

commit 280c72439e
Author: Robin Mueller <muellerr@irs.uni-stuttgart.de>
Date:   Mon May 15 14:18:18 2023 +0200

    bugfix MPSoC command

commit 14c42a91ff
Author: Robin Mueller <muellerr@irs.uni-stuttgart.de>
Date:   Mon May 15 13:43:26 2023 +0200

    rework read and write prompts for MPSoC

commit dd3e4c649b
Merge: 3b16717 0c1bfc6
Author: Marius Eggert <eggertm@irs.uni-stuttgart.de>
Date:   Mon May 15 09:10:41 2023 +0200

    Merge pull request 'MPSoC flash content reporter' (#190) from mpsoc_action_reply_handler into main

    Reviewed-on: #190
    Reviewed-by: Marius Eggert <eggertm@irs.uni-stuttgart.de>

commit 3b16717ce2
Merge: 377e98b f1a0334
Author: Robin Müller <muellerr@irs.uni-stuttgart.de>
Date:   Fri May 12 16:27:39 2023 +0200

    Merge pull request 'fixfixfix' (#189) from ploc_pwr_switching_fix into main

    Reviewed-on: #189

commit f1a0334d3d
Merge: f090c3a 377e98b
Author: Robin Müller <muellerr@irs.uni-stuttgart.de>
Date:   Fri May 12 16:27:33 2023 +0200

    Merge branch 'main' into ploc_pwr_switching_fix

commit 0c1bfc6fd3
Author: Robin Mueller <robin.mueller.m@gmail.com>
Date:   Fri May 12 16:27:16 2023 +0200

    bump changelog

commit 04bbe057e7
Author: Robin Mueller <robin.mueller.m@gmail.com>
Date:   Fri May 12 16:24:45 2023 +0200

    flash c ontent report works now

commit e05a54b076
Author: Robin Mueller <robin.mueller.m@gmail.com>
Date:   Fri May 12 16:08:57 2023 +0200

    somethings wrong with the format

commit ef0adef04a
Author: Robin Mueller <robin.mueller.m@gmail.com>
Date:   Fri May 12 15:51:17 2023 +0200

    start adding action reply handler for MPSoC

commit 377e98b5c2
Author: Robin Mueller <robin.mueller.m@gmail.com>
Date:   Fri May 12 13:22:58 2023 +0200

    bugfix MPSoC HK parsing

commit 87e5abe8eb
Author: Robin Mueller <robin.mueller.m@gmail.com>
Date:   Fri May 12 11:51:47 2023 +0200

    add missing command list of PLOC MPSoC commands

commit f090c3af66
Author: Robin Mueller <muellerr@irs.uni-stuttgart.de>
Date:   Thu May 11 17:55:15 2023 +0200

    fixfixfix

commit 13fd9a7d84
Merge: 4d921e0 bbcc0f9
Author: Marius Eggert <eggertm@irs.uni-stuttgart.de>
Date:   Thu May 4 15:30:49 2023 +0200

    Merge pull request 'impl MPSoC HK parsing' (#188) from mpsoc_commands into main

    Reviewed-on: #188
    Reviewed-by: Marius Eggert <eggertm@irs.uni-stuttgart.de>

commit bbcc0f9de7
Merge: a0aa652 1ab8710
Author: Robin Mueller <robin.mueller.m@gmail.com>
Date:   Thu May 4 15:17:12 2023 +0200

    Merge branch 'mpsoc_commands' of https://egit.irs.uni-stuttgart.de/eive/eive-tmtc into mpsoc_commands

commit a0aa6525e4
Author: Robin Mueller <robin.mueller.m@gmail.com>
Date:   Thu May 4 15:17:00 2023 +0200

    fix

commit 1ab8710040
Merge: f480d86 4d921e0
Author: Robin Müller <muellerr@irs.uni-stuttgart.de>
Date:   Thu May 4 14:51:13 2023 +0200

    Merge branch 'main' into mpsoc_commands

commit f480d86fbd
Author: Robin Mueller <robin.mueller.m@gmail.com>
Date:   Thu May 4 14:50:38 2023 +0200

    impl MPSoC HK parsing

commit 4d921e01af
Merge: e85d1a1 b505524
Author: Marius Eggert <eggertm@irs.uni-stuttgart.de>
Date:   Thu May 4 12:01:43 2023 +0200

    Merge pull request 'MPSoC module update' (#187) from mpsoc_commands into main

    Reviewed-on: #187
    Reviewed-by: Marius Eggert <eggertm@irs.uni-stuttgart.de>

commit b505524e0b
Merge: e0e9a31 e85d1a1
Author: Marius Eggert <eggertm@irs.uni-stuttgart.de>
Date:   Thu May 4 12:01:33 2023 +0200

    Merge branch 'main' into mpsoc_commands

commit e0e9a310b9
Author: Robin Mueller <robin.mueller.m@gmail.com>
Date:   Thu May 4 11:51:50 2023 +0200

    add command to get flash dir content

commit 0e9ebefc87
Author: Robin Mueller <robin.mueller.m@gmail.com>
Date:   Thu May 4 11:27:12 2023 +0200

    new mpsoc commands

commit e85d1a1966
Merge: 60fba8b 4ff50b6
Author: Marius Eggert <eggertm@irs.uni-stuttgart.de>
Date:   Wed May 3 13:36:31 2023 +0200

    Merge pull request 'most important bugfix' (#186) from most-important-bugfix into main

    Reviewed-on: #186

commit 4ff50b6559
Author: meggert <eggertm@irs.uni-stuttgart.de>
Date:   Wed May 3 13:34:14 2023 +0200

    bub

commit 60fba8b6d9
Merge: 5fbd19b 1707f24
Author: Robin Müller <muellerr@irs.uni-stuttgart.de>
Date:   Fri Apr 28 10:25:35 2023 +0200

    Merge pull request 'more system modes' (#185) from more-system-modes into main

    Reviewed-on: #185

commit 1707f24612
Author: meggert <eggertm@irs.uni-stuttgart.de>
Date:   Wed Apr 19 15:10:44 2023 +0200

    more system modes

commit 5fbd19bb6c
Merge: 4083a30 0c6a967
Author: Robin Mueller <robin.mueller.m@gmail.com>
Date:   Mon Apr 17 18:41:08 2023 +0200

    Merge branch 'main' of https://egit.irs.uni-stuttgart.de/eive/eive-tmtc
2023-06-19 18:03:45 +02:00
49 changed files with 1519 additions and 776 deletions

18
.flake8
View File

@ -1,18 +0,0 @@
[flake8]
max-line-length = 100
ignore = D203, W503
per-file-ignores =
*/__init__.py: F401
exclude =
.git,
__pycache__,
docs/conf.py,
deps
old,
build,
dist,
venv
max-complexity = 10
extend-ignore =
# See https://github.com/PyCQA/pycodestyle/issues/373
E203,

View File

@ -0,0 +1,24 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="CFDP Downlink Test Large" type="PythonConfigurationType" factoryName="Python" folderName="CFDP">
<module name="tmtc" />
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
<envs>
<env name="PYTHONUNBUFFERED" value="1" />
</envs>
<option name="SDK_HOME" value="" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
<option name="IS_MODULE_SDK" value="true" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/tmtcc.py" />
<option name="PARAMETERS" value="cfdp -p /tmp/obsw_update.bin /tmp/obsw_update_copy.bin -d 0.1" />
<option name="SHOW_COMMAND_LINE" value="false" />
<option name="EMULATE_TERMINAL" value="false" />
<option name="MODULE_MODE" value="false" />
<option name="REDIRECT_INPUT" value="false" />
<option name="INPUT_FILE" value="" />
<method v="2" />
</configuration>
</component>

View File

@ -0,0 +1,24 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="CFDP Downlink Test Larger" type="PythonConfigurationType" factoryName="Python" folderName="CFDP">
<module name="tmtc" />
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
<envs>
<env name="PYTHONUNBUFFERED" value="1" />
</envs>
<option name="SDK_HOME" value="" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
<option name="IS_MODULE_SDK" value="true" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/tmtcc.py" />
<option name="PARAMETERS" value="cfdp -p /tmp/fake_5kb.bin /tmp/fake_5kb_copy.bin -d 0.1" />
<option name="SHOW_COMMAND_LINE" value="false" />
<option name="EMULATE_TERMINAL" value="false" />
<option name="MODULE_MODE" value="false" />
<option name="REDIRECT_INPUT" value="false" />
<option name="INPUT_FILE" value="" />
<method v="2" />
</configuration>
</component>

View File

@ -0,0 +1,24 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="CFDP Downlink Test" type="PythonConfigurationType" factoryName="Python" folderName="CFDP">
<module name="tmtc" />
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
<envs>
<env name="PYTHONUNBUFFERED" value="1" />
</envs>
<option name="SDK_HOME" value="" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
<option name="IS_MODULE_SDK" value="true" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/tmtcc.py" />
<option name="PARAMETERS" value="cfdp -p /tmp/hello.txt /tmp/hello2.txt -d 0.1" />
<option name="SHOW_COMMAND_LINE" value="false" />
<option name="EMULATE_TERMINAL" value="false" />
<option name="MODULE_MODE" value="false" />
<option name="REDIRECT_INPUT" value="false" />
<option name="INPUT_FILE" value="" />
<method v="2" />
</configuration>
</component>

View File

@ -10,6 +10,60 @@ list yields a list of all related PRs for each release.
# [unreleased]
# [v5.9.0] 2023-10-24
## Added
- Added command to update PL PCDU I and V parameter bounds commands.
# [v5.8.0] 2023-10-11
## Added
- Xiphos WDT enable and disable command.
# [v5.7.1] 2023-10-11
## Added
- SCEX normal command
# [v5.7.0] 2023-10-10
- `tmtccmd` v6.0.0
- `spacepackets` v18.0.0
## Added
- Power controller commands.
# [v5.6.0] 2023-09-14
- `tmtccmd` v6.0.0
- `spacepackets` v18.0.0
## Added
- CFDP file downlink support.
# [v5.5.1] 2023-09-12
## Fixed
- Some API usage fixes related to `tmtccmd` update.
# [v5.5.0] 2023-09-12
- Version is not specfied dynamically anymore and can be updated in `pyproject.toml`
- New events and returnvalues
- Bump `tmtccmd` to v6.0.0rc0
# [v5.4.3] 2023-08-15
## Added
- PLOC SUPV HK parsing.
# [v5.4.2] 2023-08-15
## Added

View File

@ -4,7 +4,7 @@ This application can be used to test the EIVE On-Board Software. Furthermore, it
also be used to retrieve all sorts of telemetry data like housekeeping data.
It is recommended to use this application with a virtual environment.
The [virtual environemnt](#venv) chapter describes how to set one up. The [requirements](#reqs)
The [virtual environment](#venv) chapter describes how to set one up. The [requirements](#reqs)
describes how to install all required packages.
The configuration file can currently be found at `tmtc_conf.json`. It caches settings
@ -61,42 +61,57 @@ Run GUI mode
# <a id="reqs"></a> Install requirements
There are two ways to install the requirements. One is to install the primary dependency
`tmtccmd` interactively. This is the recommended way
`tmtccmd` interactively.
Assuming you are running in a virtual environment:
## Installing via PyPI
1. Install `tmtccmd` for virtual environment. `-e` for interactive installation.
It is recommended to install `eive-tmtc` itself interactively, which also installs
all required dependencies.
```sh
cd deps/tmtccmd
pip install -e .[gui]
```
```sh
pip install -e .
```
Alternatively you can also install the packages from PyPI completely, but the risk of
incompatibilities will be high there
If you only want to install all dependencies:
```sh
pip install -r requirements.txt
```
## Install interactively
Clone the dependency first inside the `deps` folder
```sh
cd deps
./install_tmtccmd.sh
```
Then you can install `tmtccmd` interactively
```sh
cd tmtccmd
pip install -e .
```
# Run Linter
Can be used to quickly check validity of script. Install `flake8` first
```sh
python3 -m pip install flake8
python3 -m pip install ruff
```
or on Windows
```sh
py -m pip install flake8
py -m pip install ruff
```
and then run the `lint.py` script
and then run it
```sh
./lint.py
ruff .
```
# Run Auto-Formatter

View File

@ -1,13 +1,6 @@
__version__ = "5.4.2"
import logging
from pathlib import Path
SW_NAME = "eive-tmtc"
VERSION_MAJOR = 5
VERSION_MINOR = 4
VERSION_REVISION = 2
EIVE_TMTC_ROOT = Path(__file__).parent
PACKAGE_ROOT = EIVE_TMTC_ROOT.parent

View File

View File

@ -0,0 +1,20 @@
import logging
from spacepackets.cfdp import ConditionCode
from tmtccmd.cfdp.mib import DefaultFaultHandlerBase
_LOGGER = logging.getLogger(__name__)
class EiveCfdpFaultHandler(DefaultFaultHandlerBase):
def notice_of_suspension_cb(self, cond: ConditionCode):
_LOGGER.info(f"Received notice of suspension: {cond!r}")
def notice_of_cancellation_cb(self, cond: ConditionCode):
_LOGGER.info(f"Received notice of cancellation: {cond!r}")
def abandoned_cb(self, cond: ConditionCode):
_LOGGER.info(f"Abandoned transaction: {cond!r}")
def ignore_cb(self, cond: ConditionCode):
_LOGGER.info(f"Ignored transaction: {cond!r}")

27
eive_tmtc/cfdp/tm.py Normal file
View File

@ -0,0 +1,27 @@
import logging
from eive_tmtc.config.definitions import CFDP_APID
from spacepackets.ccsds import SPACE_PACKET_HEADER_SIZE
from spacepackets.cfdp import PduFactory, PduType, DirectiveType
from tmtccmd.cfdp.handler import CfdpInCcsdsHandler
from tmtccmd.tm import SpecificApidHandlerBase
_LOGGER = logging.getLogger(__name__)
class CfdpInCcsdsWrapper(SpecificApidHandlerBase):
def __init__(self, cfdp_in_ccsds_handler: CfdpInCcsdsHandler):
super().__init__(CFDP_APID, None)
self.handler = cfdp_in_ccsds_handler
def handle_tm(self, packet: bytes, _user_args: any):
# Ignore the space packet header. Its only purpose is to use the same protocol and
# have a seaprate APID for space packets. If this function is called, the APID is correct.
pdu = packet[SPACE_PACKET_HEADER_SIZE:]
pdu_base = PduFactory.from_raw(pdu)
if pdu_base.pdu_type == PduType.FILE_DATA:
_LOGGER.info("Received File Data PDU")
else:
directive_type = DirectiveType(pdu_base.directive_type)
_LOGGER.info(f"Received File Directive PDU with type {directive_type!r}")
self.handler.insert_pdu_packet(pdu_base)

58
eive_tmtc/cfdp/user.py Normal file
View File

@ -0,0 +1,58 @@
import logging
from spacepackets.cfdp import ConditionCode
from tmtccmd.cfdp import CfdpUserBase, TransactionId
from tmtccmd.cfdp.user import (
TransactionFinishedParams,
MetadataRecvParams,
FileSegmentRecvdParams,
)
_LOGGER = logging.getLogger(__name__)
class EiveCfdpUser(CfdpUserBase):
def transaction_indication(self, transaction_id: TransactionId):
_LOGGER.info(f"CFDP User: Start of File {transaction_id}")
def eof_sent_indication(self, transaction_id: TransactionId):
_LOGGER.info(f"CFDP User: EOF sent for {transaction_id}")
def transaction_finished_indication(self, params: TransactionFinishedParams):
_LOGGER.info(f"CFDP User: {params.transaction_id} finished")
_LOGGER.info(f"Delivery Code: {params.delivery_code!r}")
_LOGGER.info(f"Condition code: {params.condition_code!r}")
_LOGGER.info(f"File delivery status: {params.delivery_code!r}")
def metadata_recv_indication(self, params: MetadataRecvParams):
pass
def file_segment_recv_indication(self, params: FileSegmentRecvdParams):
_LOGGER.info(
f"CFDP User: Received File Data PDU for {params.transaction_id} | Offset:"
f" {params.offset} | Segment Length: {params.length}"
)
def report_indication(self, transaction_id: TransactionId, status_report: any):
pass
def suspended_indication(
self, transaction_id: TransactionId, cond_code: ConditionCode
):
pass
def resumed_indication(self, transaction_id: TransactionId, progress: int):
pass
def fault_indication(
self, transaction_id: TransactionId, cond_code: ConditionCode, progress: int
):
pass
def abandoned_indication(
self, transaction_id: TransactionId, cond_code: ConditionCode, progress: int
):
pass
def eof_recv_indication(self, transaction_id: TransactionId):
_LOGGER.info(f"CFDP User: EOF received for {transaction_id}")

View File

@ -76,3 +76,6 @@ class CustomServiceList(str, enum.Enum):
SCEX = "scex"
TM_STORE = "tm_store"
SYSTEM = "system"
PWR_CTRL = "pwr_ctrl"
EPS_SS = "eps_subsystem"
XIPHOS_WDT = "xiphos_wdt"

View File

@ -86,6 +86,7 @@ Event ID (dec); Event ID (hex); Name; Severity; Description; File Path
10802;0x2a32;SERIALIZATION_ERROR;LOW;No description;fsfw/src/fsfw/cfdp/handler/defs.h
10803;0x2a33;FILESTORE_ERROR;LOW;No description;fsfw/src/fsfw/cfdp/handler/defs.h
10804;0x2a34;FILENAME_TOO_LARGE_ERROR;LOW;P1: Transaction step ID, P2: 0 for source file name, 1 for dest file name;fsfw/src/fsfw/cfdp/handler/defs.h
10805;0x2a35;HANDLING_CFDP_REQUEST_FAILED;LOW;CFDP request handling failed. P2: Returncode.;fsfw/src/fsfw/cfdp/handler/defs.h
11200;0x2bc0;SAFE_RATE_VIOLATION;MEDIUM;The limits for the rotation in safe mode were violated.;mission/acs/defs.h
11201;0x2bc1;SAFE_RATE_RECOVERY;MEDIUM;The system has recovered from a safe rate rotation violation.;mission/acs/defs.h
11202;0x2bc2;MULTIPLE_RW_INVALID;HIGH;Multiple RWs are invalid, uncommandable and therefore higher ACS modes cannot be maintained.;mission/acs/defs.h
@ -99,6 +100,11 @@ Event ID (dec); Event ID (hex); Name; Severity; Description; File Path
11301;0x2c25;SWITCH_HAS_CHANGED;INFO;Indicated that a switch state has changed P1: New switch state, 1 for on, 0 for off | P2: Switch Index;mission/power/defs.h
11302;0x2c26;SWITCHING_Q7S_DENIED;MEDIUM;No description;mission/power/defs.h
11303;0x2c27;FDIR_REACTION_IGNORED;MEDIUM;No description;mission/power/defs.h
11304;0x2c28;DATASET_READ_FAILED;INFO;The dataset read for the inputs of the Power Controller has failed.;mission/power/defs.h
11305;0x2c29;VOLTAGE_OUT_OF_BOUNDS;HIGH;No description;mission/power/defs.h
11306;0x2c2a;TIMEDELTA_OUT_OF_BOUNDS;LOW;Time difference for Coulomb Counter was too large. P1: time in s * 10;mission/power/defs.h
11307;0x2c2b;POWER_LEVEL_LOW;HIGH;The State of Charge is below the limit for payload use. Setting Payload to faulty.;mission/power/defs.h
11308;0x2c2c;POWER_LEVEL_CRITICAL;HIGH;The State of Charge is below the limit for higher modes. Setting Reaction Wheels to faulty.;mission/power/defs.h
11400;0x2c88;GPIO_PULL_HIGH_FAILED;LOW;No description;mission/tcs/HeaterHandler.h
11401;0x2c89;GPIO_PULL_LOW_FAILED;LOW;No description;mission/tcs/HeaterHandler.h
11402;0x2c8a;HEATER_WENT_ON;INFO;No description;mission/tcs/HeaterHandler.h
@ -122,6 +128,8 @@ Event ID (dec); Event ID (hex); Name; Severity; Description; File Path
11604;0x2d54;MPSOC_HANDLER_CRC_FAILURE;LOW;PLOC reply has invalid crc;linux/payload/PlocMpsocHandler.h
11605;0x2d55;MPSOC_HANDLER_SEQUENCE_COUNT_MISMATCH;LOW;Packet sequence count in received space packet does not match expected count P1: Expected sequence count P2: Received sequence count;linux/payload/PlocMpsocHandler.h
11606;0x2d56;MPSOC_SHUTDOWN_FAILED;HIGH;Supervisor fails to shutdown MPSoC. Requires to power off the PLOC and thus also to shutdown the supervisor.;linux/payload/PlocMpsocHandler.h
11607;0x2d57;SUPV_NOT_ON;LOW;SUPV not on for boot or shutdown process. P1: 0 for OFF transition, 1 for ON transition.;linux/payload/PlocMpsocHandler.h
11608;0x2d58;SUPV_REPLY_TIMEOUT;LOW;No description;linux/payload/PlocMpsocHandler.h
11701;0x2db5;SELF_TEST_I2C_FAILURE;LOW;Get self test result returns I2C failure P1: Indicates on which axis the failure occurred. 0 -> INIT, 1 -> +X, 2 -> -X, 3 -> +Y, 4 -> -Y, 5 -> +Z, 6 -> -Z, 7 -> FINA;mission/acs/ImtqHandler.h
11702;0x2db6;SELF_TEST_SPI_FAILURE;LOW;Get self test result returns SPI failure. This concerns the MTM connectivity. P1: Indicates on which axis the failure occurred. 0 -> INIT, 1 -> +X, 2 -> -X, 3 -> +Y, 4 -> -Y, 5 -> +Z, 6 -> -Z, 7 -> FINA;mission/acs/ImtqHandler.h
11703;0x2db7;SELF_TEST_ADC_FAILURE;LOW;Get self test result returns failure in measurement of current and temperature. P1: Indicates on which axis the failure occurred. 0 -> INIT, 1 -> +X, 2 -> -X, 3 -> +Y, 4 -> -Y, 5 -> +Z, 6 -> -Z, 7 -> FINA;mission/acs/ImtqHandler.h
@ -303,3 +311,5 @@ Event ID (dec); Event ID (hex); Name; Severity; Description; File Path
14312;0x37e8;DUMP_MISC_CANCELLED;LOW;P1: Number of dumped packets. P2: Total dumped bytes.;mission/persistentTmStoreDefs.h
14313;0x37e9;DUMP_HK_CANCELLED;LOW;P1: Number of dumped packets. P2: Total dumped bytes.;mission/persistentTmStoreDefs.h
14314;0x37ea;DUMP_CFDP_CANCELLED;LOW;P1: Number of dumped packets. P2: Total dumped bytes.;mission/persistentTmStoreDefs.h
14500;0x38a4;TEMPERATURE_ALL_ONES_START;MEDIUM;Detected invalid values, starting invalid message counting;mission/acs/SusHandler.h
14501;0x38a5;TEMPERATURE_ALL_ONES_RECOVERY;INFO;Detected valid values again, resetting invalid message counter. P1: Invalid message counter.;mission/acs/SusHandler.h

1 Event ID (dec) Event ID (hex) Name Severity Description File Path
86 10802 0x2a32 SERIALIZATION_ERROR LOW No description fsfw/src/fsfw/cfdp/handler/defs.h
87 10803 0x2a33 FILESTORE_ERROR LOW No description fsfw/src/fsfw/cfdp/handler/defs.h
88 10804 0x2a34 FILENAME_TOO_LARGE_ERROR LOW P1: Transaction step ID, P2: 0 for source file name, 1 for dest file name fsfw/src/fsfw/cfdp/handler/defs.h
89 10805 0x2a35 HANDLING_CFDP_REQUEST_FAILED LOW CFDP request handling failed. P2: Returncode. fsfw/src/fsfw/cfdp/handler/defs.h
90 11200 0x2bc0 SAFE_RATE_VIOLATION MEDIUM The limits for the rotation in safe mode were violated. mission/acs/defs.h
91 11201 0x2bc1 SAFE_RATE_RECOVERY MEDIUM The system has recovered from a safe rate rotation violation. mission/acs/defs.h
92 11202 0x2bc2 MULTIPLE_RW_INVALID HIGH Multiple RWs are invalid, uncommandable and therefore higher ACS modes cannot be maintained. mission/acs/defs.h
100 11301 0x2c25 SWITCH_HAS_CHANGED INFO Indicated that a switch state has changed P1: New switch state, 1 for on, 0 for off | P2: Switch Index mission/power/defs.h
101 11302 0x2c26 SWITCHING_Q7S_DENIED MEDIUM No description mission/power/defs.h
102 11303 0x2c27 FDIR_REACTION_IGNORED MEDIUM No description mission/power/defs.h
103 11304 0x2c28 DATASET_READ_FAILED INFO The dataset read for the inputs of the Power Controller has failed. mission/power/defs.h
104 11305 0x2c29 VOLTAGE_OUT_OF_BOUNDS HIGH No description mission/power/defs.h
105 11306 0x2c2a TIMEDELTA_OUT_OF_BOUNDS LOW Time difference for Coulomb Counter was too large. P1: time in s * 10 mission/power/defs.h
106 11307 0x2c2b POWER_LEVEL_LOW HIGH The State of Charge is below the limit for payload use. Setting Payload to faulty. mission/power/defs.h
107 11308 0x2c2c POWER_LEVEL_CRITICAL HIGH The State of Charge is below the limit for higher modes. Setting Reaction Wheels to faulty. mission/power/defs.h
108 11400 0x2c88 GPIO_PULL_HIGH_FAILED LOW No description mission/tcs/HeaterHandler.h
109 11401 0x2c89 GPIO_PULL_LOW_FAILED LOW No description mission/tcs/HeaterHandler.h
110 11402 0x2c8a HEATER_WENT_ON INFO No description mission/tcs/HeaterHandler.h
128 11604 0x2d54 MPSOC_HANDLER_CRC_FAILURE LOW PLOC reply has invalid crc linux/payload/PlocMpsocHandler.h
129 11605 0x2d55 MPSOC_HANDLER_SEQUENCE_COUNT_MISMATCH LOW Packet sequence count in received space packet does not match expected count P1: Expected sequence count P2: Received sequence count linux/payload/PlocMpsocHandler.h
130 11606 0x2d56 MPSOC_SHUTDOWN_FAILED HIGH Supervisor fails to shutdown MPSoC. Requires to power off the PLOC and thus also to shutdown the supervisor. linux/payload/PlocMpsocHandler.h
131 11607 0x2d57 SUPV_NOT_ON LOW SUPV not on for boot or shutdown process. P1: 0 for OFF transition, 1 for ON transition. linux/payload/PlocMpsocHandler.h
132 11608 0x2d58 SUPV_REPLY_TIMEOUT LOW No description linux/payload/PlocMpsocHandler.h
133 11701 0x2db5 SELF_TEST_I2C_FAILURE LOW Get self test result returns I2C failure P1: Indicates on which axis the failure occurred. 0 -> INIT, 1 -> +X, 2 -> -X, 3 -> +Y, 4 -> -Y, 5 -> +Z, 6 -> -Z, 7 -> FINA mission/acs/ImtqHandler.h
134 11702 0x2db6 SELF_TEST_SPI_FAILURE LOW Get self test result returns SPI failure. This concerns the MTM connectivity. P1: Indicates on which axis the failure occurred. 0 -> INIT, 1 -> +X, 2 -> -X, 3 -> +Y, 4 -> -Y, 5 -> +Z, 6 -> -Z, 7 -> FINA mission/acs/ImtqHandler.h
135 11703 0x2db7 SELF_TEST_ADC_FAILURE LOW Get self test result returns failure in measurement of current and temperature. P1: Indicates on which axis the failure occurred. 0 -> INIT, 1 -> +X, 2 -> -X, 3 -> +Y, 4 -> -Y, 5 -> +Z, 6 -> -Z, 7 -> FINA mission/acs/ImtqHandler.h
311 14312 0x37e8 DUMP_MISC_CANCELLED LOW P1: Number of dumped packets. P2: Total dumped bytes. mission/persistentTmStoreDefs.h
312 14313 0x37e9 DUMP_HK_CANCELLED LOW P1: Number of dumped packets. P2: Total dumped bytes. mission/persistentTmStoreDefs.h
313 14314 0x37ea DUMP_CFDP_CANCELLED LOW P1: Number of dumped packets. P2: Total dumped bytes. mission/persistentTmStoreDefs.h
314 14500 0x38a4 TEMPERATURE_ALL_ONES_START MEDIUM Detected invalid values, starting invalid message counting mission/acs/SusHandler.h
315 14501 0x38a5 TEMPERATURE_ALL_ONES_RECOVERY INFO Detected valid values again, resetting invalid message counter. P1: Invalid message counter. mission/acs/SusHandler.h

View File

@ -136,6 +136,7 @@ ACS_SUBSYSTEM_ID = bytes([0x73, 0x01, 0x00, 0x01])
PL_SUBSYSTEM_ID = bytes([0x73, 0x01, 0x00, 0x02])
TCS_SUBSYSTEM_ID = bytes([0x73, 0x01, 0x00, 0x03])
COM_SUBSYSTEM_ID = bytes([0x73, 0x01, 0x00, 0x04])
EPS_SUBSYSTEM_ID = bytes([0x73, 0x01, 0x00, 0x05])
# Legacy names, kept for backwards compatibility
ACS_BOARD_ASS_ID = bytes([0x73, 0x00, 0x00, 0x01])
@ -157,6 +158,8 @@ STR_ASSEMBLY = bytes([0x73, 0x00, 0x00, 0x09])
TCS_CONTROLLER = bytes([0x43, 0x40, 0x00, 0x01])
ACS_CONTROLLER = bytes([0x43, 0x00, 0x00, 0x02])
CORE_CONTROLLER_ID = bytes([0x43, 0x00, 0x00, 0x03])
PWR_CONTROLLER = bytes([0x43, 0x00, 0x00, 0x04])
XIPHOS_WDT_ID = bytes([0x43, 0x00, 0x00, 0x07])
MISC_TM_STORE = bytes([0x73, 0x02, 0x00, 0x01])
OK_TM_STORE = bytes([0x73, 0x02, 0x00, 0x02])

View File

@ -1,7 +1,9 @@
0x00005060;P60DOCK_TEST_TASK
0x43000002;ACS_CONTROLLER
0x43000003;CORE_CONTROLLER
0x43000004;POWER_CONTROLLER
0x43000006;GLOBAL_JSON_CFG
0x43000007;XIPHOS_WDT
0x43400001;THERMAL_CONTROLLER
0x44120006;MGM_0_LIS3_HANDLER
0x44120010;GYRO_0_ADIS_HANDLER
@ -161,6 +163,7 @@
0x73010002;PL_SUBSYSTEM
0x73010003;TCS_SUBSYSTEM
0x73010004;COM_SUBSYSTEM
0x73010005;EPS_SUBSYSTEM
0x73020001;MISC_TM_STORE
0x73020002;OK_TM_STORE
0x73020003;NOT_OK_TM_STORE

1 0x00005060 P60DOCK_TEST_TASK
2 0x43000002 ACS_CONTROLLER
3 0x43000003 CORE_CONTROLLER
4 0x43000004 POWER_CONTROLLER
5 0x43000006 GLOBAL_JSON_CFG
6 0x43000007 XIPHOS_WDT
7 0x43400001 THERMAL_CONTROLLER
8 0x44120006 MGM_0_LIS3_HANDLER
9 0x44120010 GYRO_0_ADIS_HANDLER
163 0x73010002 PL_SUBSYSTEM
164 0x73010003 TCS_SUBSYSTEM
165 0x73010004 COM_SUBSYSTEM
166 0x73010005 EPS_SUBSYSTEM
167 0x73020001 MISC_TM_STORE
168 0x73020002 OK_TM_STORE
169 0x73020003 NOT_OK_TM_STORE

View File

@ -210,6 +210,7 @@ Full ID (hex); Name; Description; Unique ID; Subsytem Name; File Path
0x27a8;DHI_NoReplyExpected;No description;168;DEVICE_HANDLER_IF;fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
0x27a9;DHI_NonOpTemperature;No description;169;DEVICE_HANDLER_IF;fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
0x27aa;DHI_CommandNotImplemented;No description;170;DEVICE_HANDLER_IF;fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
0x27ab;DHI_NonOpStateOfCharge;No description;171;DEVICE_HANDLER_IF;fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
0x27b0;DHI_ChecksumError;No description;176;DEVICE_HANDLER_IF;fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
0x27b1;DHI_LengthMissmatch;No description;177;DEVICE_HANDLER_IF;fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
0x27b2;DHI_InvalidData;No description;178;DEVICE_HANDLER_IF;fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
@ -322,289 +323,299 @@ Full ID (hex); Name; Description; Unique ID; Subsytem Name; File Path
0x3405;DC_NotActive;No description;5;DEVICE_COMMUNICATION_IF;fsfw/src/fsfw/devicehandlers/DeviceCommunicationIF.h
0x3406;DC_TooMuchData;No description;6;DEVICE_COMMUNICATION_IF;fsfw/src/fsfw/devicehandlers/DeviceCommunicationIF.h
0x3407;DC_Busy;No description;7;DEVICE_COMMUNICATION_IF;fsfw/src/fsfw/devicehandlers/DeviceCommunicationIF.h
0x3601;CFDP_InvalidTlvType;No description;1;CFDP;fsfw/src/fsfw/cfdp/definitions.h
0x3602;CFDP_InvalidDirectiveField;No description;2;CFDP;fsfw/src/fsfw/cfdp/definitions.h
0x3603;CFDP_InvalidPduDatafieldLen;No description;3;CFDP;fsfw/src/fsfw/cfdp/definitions.h
0x3604;CFDP_InvalidAckDirectiveFields;No description;4;CFDP;fsfw/src/fsfw/cfdp/definitions.h
0x3605;CFDP_MetadataCantParseOptions;No description;5;CFDP;fsfw/src/fsfw/cfdp/definitions.h
0x3606;CFDP_NakCantParseOptions;No description;6;CFDP;fsfw/src/fsfw/cfdp/definitions.h
0x3607;CFDP_FinishedCantParseFsResponses;No description;7;CFDP;fsfw/src/fsfw/cfdp/definitions.h
0x3608;CFDP_FilestoreRequiresSecondFile;No description;8;CFDP;fsfw/src/fsfw/cfdp/definitions.h
0x3609;CFDP_FilestoreResponseCantParseFsMessage;No description;9;CFDP;fsfw/src/fsfw/cfdp/definitions.h
0x360a;CFDP_InvalidPduFormat;No description;10;CFDP;fsfw/src/fsfw/cfdp/definitions.h
0x3701;TSI_BadTimestamp;No description;1;TIME_STAMPER_IF;fsfw/src/fsfw/timemanager/TimeStampIF.h
0x38a1;SGP4_InvalidEccentricity;No description;161;SGP4PROPAGATOR_CLASS;fsfw/src/fsfw/coordinates/Sgp4Propagator.h
0x38a2;SGP4_InvalidMeanMotion;No description;162;SGP4PROPAGATOR_CLASS;fsfw/src/fsfw/coordinates/Sgp4Propagator.h
0x38a3;SGP4_InvalidPerturbationElements;No description;163;SGP4PROPAGATOR_CLASS;fsfw/src/fsfw/coordinates/Sgp4Propagator.h
0x38a4;SGP4_InvalidSemiLatusRectum;No description;164;SGP4PROPAGATOR_CLASS;fsfw/src/fsfw/coordinates/Sgp4Propagator.h
0x38a5;SGP4_InvalidEpochElements;No description;165;SGP4PROPAGATOR_CLASS;fsfw/src/fsfw/coordinates/Sgp4Propagator.h
0x38a6;SGP4_SatelliteHasDecayed;No description;166;SGP4PROPAGATOR_CLASS;fsfw/src/fsfw/coordinates/Sgp4Propagator.h
0x38b1;SGP4_TleTooOld;No description;177;SGP4PROPAGATOR_CLASS;fsfw/src/fsfw/coordinates/Sgp4Propagator.h
0x38b2;SGP4_TleNotInitialized;No description;178;SGP4PROPAGATOR_CLASS;fsfw/src/fsfw/coordinates/Sgp4Propagator.h
0x3901;MUX_NotEnoughResources;No description;1;MUTEX_IF;fsfw/src/fsfw/ipc/MutexIF.h
0x3902;MUX_InsufficientMemory;No description;2;MUTEX_IF;fsfw/src/fsfw/ipc/MutexIF.h
0x3903;MUX_NoPrivilege;No description;3;MUTEX_IF;fsfw/src/fsfw/ipc/MutexIF.h
0x3904;MUX_WrongAttributeSetting;No description;4;MUTEX_IF;fsfw/src/fsfw/ipc/MutexIF.h
0x3905;MUX_MutexAlreadyLocked;No description;5;MUTEX_IF;fsfw/src/fsfw/ipc/MutexIF.h
0x3906;MUX_MutexNotFound;No description;6;MUTEX_IF;fsfw/src/fsfw/ipc/MutexIF.h
0x3907;MUX_MutexMaxLocks;No description;7;MUTEX_IF;fsfw/src/fsfw/ipc/MutexIF.h
0x3908;MUX_CurrThreadAlreadyOwnsMutex;No description;8;MUTEX_IF;fsfw/src/fsfw/ipc/MutexIF.h
0x3909;MUX_CurrThreadDoesNotOwnMutex;No description;9;MUTEX_IF;fsfw/src/fsfw/ipc/MutexIF.h
0x390a;MUX_MutexTimeout;No description;10;MUTEX_IF;fsfw/src/fsfw/ipc/MutexIF.h
0x390b;MUX_MutexInvalidId;No description;11;MUTEX_IF;fsfw/src/fsfw/ipc/MutexIF.h
0x390c;MUX_MutexDestroyedWhileWaiting;No description;12;MUTEX_IF;fsfw/src/fsfw/ipc/MutexIF.h
0x3a01;MQI_Empty;No description;1;MESSAGE_QUEUE_IF;fsfw/src/fsfw/ipc/MessageQueueIF.h
0x3a02;MQI_Full;No space left for more messages;2;MESSAGE_QUEUE_IF;fsfw/src/fsfw/ipc/MessageQueueIF.h
0x3a03;MQI_NoReplyPartner;Returned if a reply method was called without partner;3;MESSAGE_QUEUE_IF;fsfw/src/fsfw/ipc/MessageQueueIF.h
0x3a04;MQI_DestinationInvalid;Returned if the target destination is invalid.;4;MESSAGE_QUEUE_IF;fsfw/src/fsfw/ipc/MessageQueueIF.h
0x3b00;SPH_ConnBroken;No description;0;SEMAPHORE_IF;fsfw/src/fsfw/osal/common/TcpTmTcServer.h
0x3b01;SPH_SemaphoreTimeout;No description;1;SEMAPHORE_IF;fsfw/src/fsfw/tasks/SemaphoreIF.h
0x3b02;SPH_SemaphoreNotOwned;No description;2;SEMAPHORE_IF;fsfw/src/fsfw/tasks/SemaphoreIF.h
0x3b03;SPH_SemaphoreInvalid;No description;3;SEMAPHORE_IF;fsfw/src/fsfw/tasks/SemaphoreIF.h
0x3c00;LPIF_PoolEntryNotFound;No description;0;LOCAL_POOL_OWNER_IF;fsfw/src/fsfw/datapoollocal/localPoolDefinitions.h
0x3c01;LPIF_PoolEntryTypeConflict;No description;1;LOCAL_POOL_OWNER_IF;fsfw/src/fsfw/datapoollocal/localPoolDefinitions.h
0x3da0;PVA_InvalidReadWriteMode;No description;160;POOL_VARIABLE_IF;fsfw/src/fsfw/datapool/PoolVariableIF.h
0x3da1;PVA_InvalidPoolEntry;No description;161;POOL_VARIABLE_IF;fsfw/src/fsfw/datapool/PoolVariableIF.h
0x3e00;HKM_QueueOrDestinationInvalid;No description;0;HOUSEKEEPING_MANAGER;fsfw/src/fsfw/datapoollocal/LocalDataPoolManager.h
0x3e01;HKM_WrongHkPacketType;No description;1;HOUSEKEEPING_MANAGER;fsfw/src/fsfw/datapoollocal/LocalDataPoolManager.h
0x3e02;HKM_ReportingStatusUnchanged;No description;2;HOUSEKEEPING_MANAGER;fsfw/src/fsfw/datapoollocal/LocalDataPoolManager.h
0x3e03;HKM_PeriodicHelperInvalid;No description;3;HOUSEKEEPING_MANAGER;fsfw/src/fsfw/datapoollocal/LocalDataPoolManager.h
0x3e04;HKM_PoolobjectNotFound;No description;4;HOUSEKEEPING_MANAGER;fsfw/src/fsfw/datapoollocal/LocalDataPoolManager.h
0x3e05;HKM_DatasetNotFound;No description;5;HOUSEKEEPING_MANAGER;fsfw/src/fsfw/datapoollocal/LocalDataPoolManager.h
0x3f01;DLEE_StreamTooShort;No description;1;DLE_ENCODER;fsfw/src/fsfw/globalfunctions/DleEncoder.h
0x3f02;DLEE_DecodingError;No description;2;DLE_ENCODER;fsfw/src/fsfw/globalfunctions/DleEncoder.h
0x4201;PUS11_InvalidTypeTimeWindow;No description;1;PUS_SERVICE_11;fsfw/src/fsfw/pus/Service11TelecommandScheduling.h
0x4202;PUS11_InvalidTimeWindow;No description;2;PUS_SERVICE_11;fsfw/src/fsfw/pus/Service11TelecommandScheduling.h
0x4203;PUS11_TimeshiftingNotPossible;No description;3;PUS_SERVICE_11;fsfw/src/fsfw/pus/Service11TelecommandScheduling.h
0x4204;PUS11_InvalidRelativeTime;No description;4;PUS_SERVICE_11;fsfw/src/fsfw/pus/Service11TelecommandScheduling.h
0x4205;PUS11_ContainedTcTooSmall;No description;5;PUS_SERVICE_11;fsfw/src/fsfw/pus/Service11TelecommandScheduling.h
0x4206;PUS11_ContainedTcCrcMissmatch;No description;6;PUS_SERVICE_11;fsfw/src/fsfw/pus/Service11TelecommandScheduling.h
0x4300;FILS_GenericFileError;No description;0;FILE_SYSTEM;fsfw/src/fsfw/filesystem/HasFileSystemIF.h
0x4301;FILS_GenericDirError;No description;1;FILE_SYSTEM;fsfw/src/fsfw/filesystem/HasFileSystemIF.h
0x4302;FILS_FilesystemInactive;No description;2;FILE_SYSTEM;fsfw/src/fsfw/filesystem/HasFileSystemIF.h
0x4303;FILS_GenericRenameError;No description;3;FILE_SYSTEM;fsfw/src/fsfw/filesystem/HasFileSystemIF.h
0x4304;FILS_IsBusy;No description;4;FILE_SYSTEM;fsfw/src/fsfw/filesystem/HasFileSystemIF.h
0x4305;FILS_InvalidParameters;No description;5;FILE_SYSTEM;fsfw/src/fsfw/filesystem/HasFileSystemIF.h
0x430a;FILS_FileDoesNotExist;No description;10;FILE_SYSTEM;fsfw/src/fsfw/filesystem/HasFileSystemIF.h
0x430b;FILS_FileAlreadyExists;No description;11;FILE_SYSTEM;fsfw/src/fsfw/filesystem/HasFileSystemIF.h
0x430c;FILS_NotAFile;No description;12;FILE_SYSTEM;fsfw/src/fsfw/filesystem/HasFileSystemIF.h
0x430d;FILS_FileLocked;No description;13;FILE_SYSTEM;fsfw/src/fsfw/filesystem/HasFileSystemIF.h
0x430e;FILS_PermissionDenied;No description;14;FILE_SYSTEM;fsfw/src/fsfw/filesystem/HasFileSystemIF.h
0x4315;FILS_DirectoryDoesNotExist;No description;21;FILE_SYSTEM;fsfw/src/fsfw/filesystem/HasFileSystemIF.h
0x4316;FILS_DirectoryAlreadyExists;No description;22;FILE_SYSTEM;fsfw/src/fsfw/filesystem/HasFileSystemIF.h
0x4317;FILS_NotADirectory;No description;23;FILE_SYSTEM;fsfw/src/fsfw/filesystem/HasFileSystemIF.h
0x4318;FILS_DirectoryNotEmpty;No description;24;FILE_SYSTEM;fsfw/src/fsfw/filesystem/HasFileSystemIF.h
0x431e;FILS_SequencePacketMissingWrite;No description;30;FILE_SYSTEM;fsfw/src/fsfw/filesystem/HasFileSystemIF.h
0x431f;FILS_SequencePacketMissingRead;No description;31;FILE_SYSTEM;fsfw/src/fsfw/filesystem/HasFileSystemIF.h
0x4400;UXOS_ExecutionFinished;Execution of the current command has finished;0;LINUX_OSAL;fsfw/src/fsfw_hal/linux/CommandExecutor.h
0x4401;UXOS_CommandPending;Command is pending. This will also be returned if the user tries to load another command but a command is still pending;1;LINUX_OSAL;fsfw/src/fsfw_hal/linux/CommandExecutor.h
0x4402;UXOS_BytesRead;Some bytes have been read from the executing process;2;LINUX_OSAL;fsfw/src/fsfw_hal/linux/CommandExecutor.h
0x4403;UXOS_CommandError;Command execution failed;3;LINUX_OSAL;fsfw/src/fsfw_hal/linux/CommandExecutor.h
0x4404;UXOS_NoCommandLoadedOrPending;;4;LINUX_OSAL;fsfw/src/fsfw_hal/linux/CommandExecutor.h
0x4406;UXOS_PcloseCallError;No description;6;LINUX_OSAL;fsfw/src/fsfw_hal/linux/CommandExecutor.h
0x4500;HSPI_OpeningFileFailed;No description;0;HAL_SPI;fsfw/src/fsfw_hal/common/spi/spiCommon.h
0x4501;HSPI_FullDuplexTransferFailed;No description;1;HAL_SPI;fsfw/src/fsfw_hal/common/spi/spiCommon.h
0x4502;HSPI_HalfDuplexTransferFailed;No description;2;HAL_SPI;fsfw/src/fsfw_hal/common/spi/spiCommon.h
0x4503;HSPI_Timeout;No description;3;HAL_SPI;fsfw/src/fsfw_hal/common/spi/spiCommon.h
0x4504;HSPI_Busy;No description;4;HAL_SPI;fsfw/src/fsfw_hal/common/spi/spiCommon.h
0x4505;HSPI_GenericError;No description;5;HAL_SPI;fsfw/src/fsfw_hal/common/spi/spiCommon.h
0x4601;HURT_UartReadFailure;No description;1;HAL_UART;fsfw/src/fsfw_hal/linux/serial/SerialComIF.h
0x4602;HURT_UartReadSizeMissmatch;No description;2;HAL_UART;fsfw/src/fsfw_hal/linux/serial/SerialComIF.h
0x4603;HURT_UartRxBufferTooSmall;No description;3;HAL_UART;fsfw/src/fsfw_hal/linux/serial/SerialComIF.h
0x4801;HGIO_UnknownGpioId;No description;1;HAL_GPIO;fsfw/src/fsfw_hal/linux/gpio/LinuxLibgpioIF.h
0x4802;HGIO_DriveGpioFailure;No description;2;HAL_GPIO;fsfw/src/fsfw_hal/linux/gpio/LinuxLibgpioIF.h
0x4803;HGIO_GpioTypeFailure;No description;3;HAL_GPIO;fsfw/src/fsfw_hal/linux/gpio/LinuxLibgpioIF.h
0x4804;HGIO_GpioInvalidInstance;No description;4;HAL_GPIO;fsfw/src/fsfw_hal/linux/gpio/LinuxLibgpioIF.h
0x4805;HGIO_GpioDuplicateDetected;No description;5;HAL_GPIO;fsfw/src/fsfw_hal/linux/gpio/LinuxLibgpioIF.h
0x4806;HGIO_GpioInitFailed;No description;6;HAL_GPIO;fsfw/src/fsfw_hal/linux/gpio/LinuxLibgpioIF.h
0x4807;HGIO_GpioGetValueFailed;No description;7;HAL_GPIO;fsfw/src/fsfw_hal/linux/gpio/LinuxLibgpioIF.h
0x4c00;SPPA_NoPacketFound;No description;0;SPACE_PACKET_PARSER;fsfw/src/fsfw/tmtcservices/SpacePacketParser.h
0x4c01;SPPA_SplitPacket;No description;1;SPACE_PACKET_PARSER;fsfw/src/fsfw/tmtcservices/SpacePacketParser.h
0x4fa1;HEATER_CommandNotSupported;No description;161;HEATER_HANDLER;mission/tcs/HeaterHandler.h
0x4fa2;HEATER_InitFailed;No description;162;HEATER_HANDLER;mission/tcs/HeaterHandler.h
0x4fa3;HEATER_InvalidSwitchNr;No description;163;HEATER_HANDLER;mission/tcs/HeaterHandler.h
0x4fa4;HEATER_MainSwitchSetTimeout;No description;164;HEATER_HANDLER;mission/tcs/HeaterHandler.h
0x4fa5;HEATER_CommandAlreadyWaiting;No description;165;HEATER_HANDLER;mission/tcs/HeaterHandler.h
0x50a0;SYRLINKS_CrcFailure;No description;160;SYRLINKS_HANDLER;mission/com/SyrlinksHandler.h
0x50a1;SYRLINKS_UartFraminOrParityErrorAck;No description;161;SYRLINKS_HANDLER;mission/com/SyrlinksHandler.h
0x50a2;SYRLINKS_BadCharacterAck;No description;162;SYRLINKS_HANDLER;mission/com/SyrlinksHandler.h
0x50a3;SYRLINKS_BadParameterValueAck;No description;163;SYRLINKS_HANDLER;mission/com/SyrlinksHandler.h
0x50a4;SYRLINKS_BadEndOfFrameAck;No description;164;SYRLINKS_HANDLER;mission/com/SyrlinksHandler.h
0x50a5;SYRLINKS_UnknownCommandIdAck;No description;165;SYRLINKS_HANDLER;mission/com/SyrlinksHandler.h
0x50a6;SYRLINKS_BadCrcAck;No description;166;SYRLINKS_HANDLER;mission/com/SyrlinksHandler.h
0x50a7;SYRLINKS_ReplyWrongSize;No description;167;SYRLINKS_HANDLER;mission/com/SyrlinksHandler.h
0x50a8;SYRLINKS_MissingStartFrameCharacter;No description;168;SYRLINKS_HANDLER;mission/com/SyrlinksHandler.h
0x5100;IMTQ_InvalidCommandCode;No description;0;IMTQ_HANDLER;mission/acs/imtqHelpers.h
0x5101;IMTQ_MgmMeasurementLowLevelError;No description;1;IMTQ_HANDLER;mission/acs/imtqHelpers.h
0x5102;IMTQ_ActuateCmdLowLevelError;No description;2;IMTQ_HANDLER;mission/acs/imtqHelpers.h
0x5103;IMTQ_ParameterMissing;No description;3;IMTQ_HANDLER;mission/acs/imtqHelpers.h
0x5104;IMTQ_ParameterInvalid;No description;4;IMTQ_HANDLER;mission/acs/imtqHelpers.h
0x5105;IMTQ_CcUnavailable;No description;5;IMTQ_HANDLER;mission/acs/imtqHelpers.h
0x5106;IMTQ_InternalProcessingError;No description;6;IMTQ_HANDLER;mission/acs/imtqHelpers.h
0x5107;IMTQ_RejectedWithoutReason;No description;7;IMTQ_HANDLER;mission/acs/imtqHelpers.h
0x5108;IMTQ_CmdErrUnknown;No description;8;IMTQ_HANDLER;mission/acs/imtqHelpers.h
0x5109;IMTQ_StartupCfgError;No description;9;IMTQ_HANDLER;mission/acs/imtqHelpers.h
0x510a;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.;10;IMTQ_HANDLER;mission/acs/imtqHelpers.h
0x52b0;RWHA_SpiWriteFailure;No description;176;RW_HANDLER;mission/acs/rwHelpers.h
0x52b1;RWHA_SpiReadFailure;Used by the spi send function to tell a failing read call;177;RW_HANDLER;mission/acs/rwHelpers.h
0x52b2;RWHA_MissingStartSign;Can be used by the HDLC decoding mechanism to inform about a missing start sign 0x7E;178;RW_HANDLER;mission/acs/rwHelpers.h
0x52b3;RWHA_InvalidSubstitute;Can be used by the HDLC decoding mechanism to inform about an invalid substitution combination;179;RW_HANDLER;mission/acs/rwHelpers.h
0x52b4;RWHA_MissingEndSign;HDLC decoding mechanism never receives the end sign 0x7E;180;RW_HANDLER;mission/acs/rwHelpers.h
0x52b5;RWHA_NoReply;Reaction wheel only responds with empty frames.;181;RW_HANDLER;mission/acs/rwHelpers.h
0x52b6;RWHA_NoStartMarker;Expected a start marker as first byte;182;RW_HANDLER;mission/acs/rwHelpers.h
0x52b7;RWHA_SpiReadTimeout;Timeout when reading reply;183;RW_HANDLER;mission/acs/rwHelpers.h
0x53a0;STRH_TemperatureReqFailed;Status in temperature reply signals error;160;STR_HANDLER;mission/acs/str/StarTrackerHandler.h
0x53a1;STRH_PingFailed;Ping command failed;161;STR_HANDLER;mission/acs/str/StarTrackerHandler.h
0x53a2;STRH_VersionReqFailed;Status in version reply signals error;162;STR_HANDLER;mission/acs/str/StarTrackerHandler.h
0x53a3;STRH_InterfaceReqFailed;Status in interface reply signals error;163;STR_HANDLER;mission/acs/str/StarTrackerHandler.h
0x53a4;STRH_PowerReqFailed;Status in power reply signals error;164;STR_HANDLER;mission/acs/str/StarTrackerHandler.h
0x53a5;STRH_SetParamFailed;Status of reply to parameter set command signals error;165;STR_HANDLER;mission/acs/str/StarTrackerHandler.h
0x53a6;STRH_ActionFailed;Status of reply to action command signals error;166;STR_HANDLER;mission/acs/str/StarTrackerHandler.h
0x53a7;STRH_FilePathTooLong;Received invalid path string. Exceeds allowed length;167;STR_HANDLER;mission/acs/str/StarTrackerHandler.h
0x53a8;STRH_FilenameTooLong;Name of file received with command is too long;168;STR_HANDLER;mission/acs/str/StarTrackerHandler.h
0x53a9;STRH_InvalidProgram;Received version reply with invalid program ID;169;STR_HANDLER;mission/acs/str/StarTrackerHandler.h
0x53aa;STRH_ReplyError;Status field reply signals error;170;STR_HANDLER;mission/acs/str/StarTrackerHandler.h
0x53ab;STRH_CommandTooShort;Received command which is too short (some data is missing for proper execution);171;STR_HANDLER;mission/acs/str/StarTrackerHandler.h
0x53ac;STRH_InvalidLength;Received command with invalid length (too few or too many parameters);172;STR_HANDLER;mission/acs/str/StarTrackerHandler.h
0x53ad;STRH_RegionMismatch;Region mismatch between send and received data;173;STR_HANDLER;mission/acs/str/StarTrackerHandler.h
0x53ae;STRH_AddressMismatch;Address mismatch between send and received data;174;STR_HANDLER;mission/acs/str/StarTrackerHandler.h
0x53af;STRH_LengthMismatch;Length field mismatch between send and received data;175;STR_HANDLER;mission/acs/str/StarTrackerHandler.h
0x53b0;STRH_FileNotExists;Specified file does not exist;176;STR_HANDLER;mission/acs/str/StarTrackerHandler.h
0x53b1;STRH_InvalidType;Download blob pixel command has invalid type field;177;STR_HANDLER;mission/acs/str/StarTrackerHandler.h
0x53b2;STRH_InvalidId;Received FPGA action command with invalid ID;178;STR_HANDLER;mission/acs/str/StarTrackerHandler.h
0x53b3;STRH_ReplyTooShort;Received reply is too short;179;STR_HANDLER;mission/acs/str/StarTrackerHandler.h
0x53b4;STRH_CrcFailure;Received reply with invalid CRC;180;STR_HANDLER;mission/acs/str/StarTrackerHandler.h
0x53b5;STRH_StrHelperExecuting;Star tracker handler currently executing a command and using the communication interface;181;STR_HANDLER;mission/acs/str/StarTrackerHandler.h
0x53b6;STRH_StartrackerAlreadyBooted;Star tracker is already in firmware mode;182;STR_HANDLER;mission/acs/str/StarTrackerHandler.h
0x53b7;STRH_StartrackerNotRunningFirmware;Star tracker must be in firmware mode to run this command;183;STR_HANDLER;mission/acs/str/StarTrackerHandler.h
0x53b8;STRH_StartrackerNotRunningBootloader;Star tracker must be in bootloader mode to run this command;184;STR_HANDLER;mission/acs/str/StarTrackerHandler.h
0x54e0;DWLPWRON_InvalidMode;Received command has invalid JESD mode (valid modes are 0 - 5);224;DWLPWRON_CMD;linux/payload/plocMpsocHelpers.h
0x54e1;DWLPWRON_InvalidLaneRate;Received command has invalid lane rate (valid lane rate are 0 - 9);225;DWLPWRON_CMD;linux/payload/plocMpsocHelpers.h
0x5700;PLSPVhLP_RequestDone;No description;0;PLOC_SUPV_HELPER;linux/payload/PlocSupvUartMan.h
0x5701;PLSPVhLP_NoPacketFound;No description;1;PLOC_SUPV_HELPER;linux/payload/PlocSupvUartMan.h
0x5702;PLSPVhLP_DecodeBufTooSmall;No description;2;PLOC_SUPV_HELPER;linux/payload/PlocSupvUartMan.h
0x5703;PLSPVhLP_PossiblePacketLossConsecutiveStart;No description;3;PLOC_SUPV_HELPER;linux/payload/PlocSupvUartMan.h
0x5704;PLSPVhLP_PossiblePacketLossConsecutiveEnd;No description;4;PLOC_SUPV_HELPER;linux/payload/PlocSupvUartMan.h
0x5705;PLSPVhLP_HdlcError;No description;5;PLOC_SUPV_HELPER;linux/payload/PlocSupvUartMan.h
0x57a0;PLSPVhLP_FileClosedAccidentally;File accidentally close;160;PLOC_SUPV_HELPER;linux/payload/PlocSupvUartMan.h
0x57a1;PLSPVhLP_ProcessTerminated;Process has been terminated by command;161;PLOC_SUPV_HELPER;linux/payload/PlocSupvUartMan.h
0x57a2;PLSPVhLP_PathNotExists;Received command with invalid pathname;162;PLOC_SUPV_HELPER;linux/payload/PlocSupvUartMan.h
0x57a3;PLSPVhLP_EventBufferReplyInvalidApid;Expected event buffer TM but received space packet with other APID;163;PLOC_SUPV_HELPER;linux/payload/PlocSupvUartMan.h
0x58a0;SUSS_InvalidSpeed;Action Message with invalid speed was received. Valid speeds must be in the range of [-65000, 1000] or [1000, 65000];160;SUS_HANDLER;mission/acs/RwHandler.h
0x58a1;SUSS_InvalidRampTime;Action Message with invalid ramp time was received.;161;SUS_HANDLER;mission/acs/RwHandler.h
0x58a2;SUSS_SetSpeedCommandInvalidLength;Received set speed command has invalid length. Should be 6.;162;SUS_HANDLER;mission/acs/RwHandler.h
0x58a3;SUSS_ExecutionFailed;Command execution failed;163;SUS_HANDLER;mission/acs/RwHandler.h
0x58a4;SUSS_CrcError;Reaction wheel reply has invalid crc;164;SUS_HANDLER;mission/acs/RwHandler.h
0x58a5;SUSS_ValueNotRead;No description;165;SUS_HANDLER;mission/acs/RwHandler.h
0x59a0;IPCI_PapbBusy;No description;160;CCSDS_IP_CORE_BRIDGE;linux/ipcore/PapbVcInterface.h
0x5aa0;PTME_UnknownVcId;No description;160;PTME;linux/ipcore/Ptme.h
0x5c01;STRHLP_SdNotMounted;SD card specified in path string not mounted;1;STR_HELPER;linux/acs/StrComHandler.h
0x5c02;STRHLP_FileNotExists;Specified file does not exist on filesystem;2;STR_HELPER;linux/acs/StrComHandler.h
0x5c03;STRHLP_PathNotExists;Specified path does not exist;3;STR_HELPER;linux/acs/StrComHandler.h
0x5c04;STRHLP_FileCreationFailed;Failed to create download image or read flash file;4;STR_HELPER;linux/acs/StrComHandler.h
0x5c05;STRHLP_RegionMismatch;Region in flash write/read reply does not match expected region;5;STR_HELPER;linux/acs/StrComHandler.h
0x5c06;STRHLP_AddressMismatch;Address in flash write/read reply does not match expected address;6;STR_HELPER;linux/acs/StrComHandler.h
0x5c07;STRHLP_LengthMismatch;Length in flash write/read reply does not match expected length;7;STR_HELPER;linux/acs/StrComHandler.h
0x5c08;STRHLP_StatusError;Status field in reply signals error;8;STR_HELPER;linux/acs/StrComHandler.h
0x5c09;STRHLP_InvalidTypeId;Reply has invalid type ID (should be of action reply type);9;STR_HELPER;linux/acs/StrComHandler.h
0x5c0a;STRHLP_ReceptionTimeout;No description;10;STR_HELPER;linux/acs/StrComHandler.h
0x5c0b;STRHLP_DecodingError;No description;11;STR_HELPER;linux/acs/StrComHandler.h
0x5d00;GOMS_PacketTooLong;No description;0;GOM_SPACE_HANDLER;mission/power/GomspaceDeviceHandler.h
0x5d01;GOMS_InvalidTableId;No description;1;GOM_SPACE_HANDLER;mission/power/GomspaceDeviceHandler.h
0x5d02;GOMS_InvalidAddress;No description;2;GOM_SPACE_HANDLER;mission/power/GomspaceDeviceHandler.h
0x5d03;GOMS_InvalidParamSize;No description;3;GOM_SPACE_HANDLER;mission/power/GomspaceDeviceHandler.h
0x5d04;GOMS_InvalidPayloadSize;No description;4;GOM_SPACE_HANDLER;mission/power/GomspaceDeviceHandler.h
0x5d05;GOMS_UnknownReplyId;No description;5;GOM_SPACE_HANDLER;mission/power/GomspaceDeviceHandler.h
0x5ea0;PLMEMDUMP_MramAddressTooHigh;The capacity of the MRAM amounts to 512 kB. Thus the maximum address must not be higher than 0x7d000.;160;PLOC_MEMORY_DUMPER;linux/payload/PlocMemoryDumper.h
0x5ea1;PLMEMDUMP_MramInvalidAddressCombination;The specified end address is lower than the start address;161;PLOC_MEMORY_DUMPER;linux/payload/PlocMemoryDumper.h
0x5fa0;PDEC_AbandonedCltuRetval;No description;160;PDEC_HANDLER;linux/ipcore/pdec.h
0x5fa1;PDEC_FrameDirtyRetval;No description;161;PDEC_HANDLER;linux/ipcore/pdec.h
0x5fa2;PDEC_FrameIllegalMultipleReasons;No description;162;PDEC_HANDLER;linux/ipcore/pdec.h
0x5fa3;PDEC_AdDiscardedLockoutRetval;No description;163;PDEC_HANDLER;linux/ipcore/pdec.h
0x5fa4;PDEC_AdDiscardedWaitRetval;No description;164;PDEC_HANDLER;linux/ipcore/pdec.h
0x5fa5;PDEC_AdDiscardedNsVs;No description;165;PDEC_HANDLER;linux/ipcore/pdec.h
0x5fa6;PDEC_NoReportRetval;No description;166;PDEC_HANDLER;linux/ipcore/pdec.h
0x5fa7;PDEC_ErrorVersionNumberRetval;No description;167;PDEC_HANDLER;linux/ipcore/pdec.h
0x5fa8;PDEC_IllegalCombinationRetval;No description;168;PDEC_HANDLER;linux/ipcore/pdec.h
0x5fa9;PDEC_InvalidScIdRetval;No description;169;PDEC_HANDLER;linux/ipcore/pdec.h
0x5faa;PDEC_InvalidVcIdMsbRetval;No description;170;PDEC_HANDLER;linux/ipcore/pdec.h
0x5fab;PDEC_InvalidVcIdLsbRetval;No description;171;PDEC_HANDLER;linux/ipcore/pdec.h
0x5fac;PDEC_NsNotZeroRetval;No description;172;PDEC_HANDLER;linux/ipcore/pdec.h
0x5fae;PDEC_InvalidBcCc;No description;174;PDEC_HANDLER;linux/ipcore/pdec.h
0x5fb0;PDEC_CommandNotImplemented;Received action message with unknown action id;176;PDEC_HANDLER;linux/ipcore/pdec.h
0x60a0;CCSDS_CommandNotImplemented;Received action message with unknown action id;160;CCSDS_HANDLER;mission/com/CcsdsIpCoreHandler.h
0x61a0;RS_RateNotSupported;The commanded rate is not supported by the current FPGA design;160;RATE_SETTER;linux/ipcore/PtmeConfig.h
0x61a1;RS_BadBitRate;Bad bitrate has been commanded (e.g. 0);161;RATE_SETTER;linux/ipcore/PtmeConfig.h
0x61a2;RS_ClkInversionFailed;Failed to invert clock and thus change the time the data is updated with respect to the tx clock;162;RATE_SETTER;linux/ipcore/PtmeConfig.h
0x61a3;RS_TxManipulatorConfigFailed;Failed to change configuration bit of tx clock manipulator;163;RATE_SETTER;linux/ipcore/PtmeConfig.h
0x6201;JSONBASE_JsonFileNotExists;Specified json file does not exist;1;ARCSEC_JSON_BASE;mission/acs/str/ArcsecJsonParamBase.h
0x6202;JSONBASE_SetNotExists;Requested set does not exist in json file;2;ARCSEC_JSON_BASE;mission/acs/str/ArcsecJsonParamBase.h
0x6203;JSONBASE_ParamNotExists;Requested parameter does not exist in json file;3;ARCSEC_JSON_BASE;mission/acs/str/ArcsecJsonParamBase.h
0x63a0;NVMB_KeyNotExists;Specified key does not exist in json file;160;NVM_PARAM_BASE;mission/memory/NvmParameterBase.h
0x64a0;FSHLP_SdNotMounted;SD card specified with path string not mounted;160;FILE_SYSTEM_HELPER;bsp_q7s/fs/FilesystemHelper.h
0x64a1;FSHLP_FileNotExists;Specified file does not exist on filesystem;161;FILE_SYSTEM_HELPER;bsp_q7s/fs/FilesystemHelper.h
0x65a0;PLMPHLP_FileWriteError;File error occured for file transfers from OBC to the MPSoC.;160;PLOC_MPSOC_HELPER;linux/payload/PlocMpsocSpecialComHelper.h
0x65a1;PLMPHLP_FileReadError;File error occured for file transfers from MPSoC to OBC.;161;PLOC_MPSOC_HELPER;linux/payload/PlocMpsocSpecialComHelper.h
0x66a0;SADPL_CommandNotSupported;No description;160;SA_DEPL_HANDLER;mission/SolarArrayDeploymentHandler.h
0x66a1;SADPL_DeploymentAlreadyExecuting;No description;161;SA_DEPL_HANDLER;mission/SolarArrayDeploymentHandler.h
0x66a2;SADPL_MainSwitchTimeoutFailure;No description;162;SA_DEPL_HANDLER;mission/SolarArrayDeploymentHandler.h
0x66a3;SADPL_SwitchingDeplSa1Failed;No description;163;SA_DEPL_HANDLER;mission/SolarArrayDeploymentHandler.h
0x66a4;SADPL_SwitchingDeplSa2Failed;No description;164;SA_DEPL_HANDLER;mission/SolarArrayDeploymentHandler.h
0x67a0;MPSOCRTVIF_CrcFailure;Space Packet received from PLOC has invalid CRC;160;MPSOC_RETURN_VALUES_IF;linux/payload/mpsocRetvals.h
0x67a1;MPSOCRTVIF_ReceivedAckFailure;Received ACK failure reply from PLOC;161;MPSOC_RETURN_VALUES_IF;linux/payload/mpsocRetvals.h
0x67a2;MPSOCRTVIF_ReceivedExeFailure;Received execution failure reply from PLOC;162;MPSOC_RETURN_VALUES_IF;linux/payload/mpsocRetvals.h
0x67a3;MPSOCRTVIF_InvalidApid;Received space packet with invalid APID from PLOC;163;MPSOC_RETURN_VALUES_IF;linux/payload/mpsocRetvals.h
0x67a4;MPSOCRTVIF_InvalidLength;Received command with invalid length;164;MPSOC_RETURN_VALUES_IF;linux/payload/mpsocRetvals.h
0x67a5;MPSOCRTVIF_FilenameTooLong;Filename of file in OBC filesystem is too long;165;MPSOC_RETURN_VALUES_IF;linux/payload/mpsocRetvals.h
0x67a6;MPSOCRTVIF_MpsocHelperExecuting;MPSoC helper is currently executing a command;166;MPSOC_RETURN_VALUES_IF;linux/payload/mpsocRetvals.h
0x67a7;MPSOCRTVIF_MpsocFilenameTooLong;Filename of MPSoC file is to long (max. 256 bytes);167;MPSOC_RETURN_VALUES_IF;linux/payload/mpsocRetvals.h
0x67a8;MPSOCRTVIF_InvalidParameter;Command has invalid parameter;168;MPSOC_RETURN_VALUES_IF;linux/payload/mpsocRetvals.h
0x67a9;MPSOCRTVIF_NameTooLong;Received command has file string with invalid length;169;MPSOC_RETURN_VALUES_IF;linux/payload/mpsocRetvals.h
0x68a0;SPVRTVIF_CrcFailure;Space Packet received from PLOC supervisor has invalid CRC;160;SUPV_RETURN_VALUES_IF;linux/payload/plocSupvDefs.h
0x68a1;SPVRTVIF_InvalidServiceId;No description;161;SUPV_RETURN_VALUES_IF;linux/payload/plocSupvDefs.h
0x68a2;SPVRTVIF_ReceivedAckFailure;Received ACK failure reply from PLOC supervisor;162;SUPV_RETURN_VALUES_IF;linux/payload/plocSupvDefs.h
0x68a3;SPVRTVIF_ReceivedExeFailure;Received execution failure reply from PLOC supervisor;163;SUPV_RETURN_VALUES_IF;linux/payload/plocSupvDefs.h
0x68a4;SPVRTVIF_InvalidApid;Received space packet with invalid APID from PLOC supervisor;164;SUPV_RETURN_VALUES_IF;linux/payload/plocSupvDefs.h
0x68a5;SPVRTVIF_GetTimeFailure;Failed to read current system time;165;SUPV_RETURN_VALUES_IF;linux/payload/plocSupvDefs.h
0x68a6;SPVRTVIF_InvalidWatchdog;Received command with invalid watchdog parameter. Valid watchdogs are 0 for PS, 1 for PL and 2 for INT;166;SUPV_RETURN_VALUES_IF;linux/payload/plocSupvDefs.h
0x68a7;SPVRTVIF_InvalidWatchdogTimeout;Received watchdog timeout config command with invalid timeout. Valid timeouts must be in the range between 1000 and 360000 ms.;167;SUPV_RETURN_VALUES_IF;linux/payload/plocSupvDefs.h
0x68a8;SPVRTVIF_InvalidLatchupId;Received latchup config command with invalid latchup ID;168;SUPV_RETURN_VALUES_IF;linux/payload/plocSupvDefs.h
0x68a9;SPVRTVIF_SweepPeriodTooSmall;Received set adc sweep period command with invalid sweep period. Must be larger than 21.;169;SUPV_RETURN_VALUES_IF;linux/payload/plocSupvDefs.h
0x68aa;SPVRTVIF_InvalidTestParam;Receive auto EM test command with invalid test param. Valid params are 1 and 2.;170;SUPV_RETURN_VALUES_IF;linux/payload/plocSupvDefs.h
0x68ab;SPVRTVIF_MramPacketParsingFailure;Returned when scanning for MRAM dump packets failed.;171;SUPV_RETURN_VALUES_IF;linux/payload/plocSupvDefs.h
0x68ac;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);172;SUPV_RETURN_VALUES_IF;linux/payload/plocSupvDefs.h
0x68ad;SPVRTVIF_NoMramPacket;Expect reception of an MRAM dump packet but received space packet with other apid.;173;SUPV_RETURN_VALUES_IF;linux/payload/plocSupvDefs.h
0x68ae;SPVRTVIF_PathDoesNotExist;Path to PLOC directory on SD card does not exist;174;SUPV_RETURN_VALUES_IF;linux/payload/plocSupvDefs.h
0x68af;SPVRTVIF_MramFileNotExists;MRAM dump file does not exists. The file should actually already have been created with the reception of the first dump packet.;175;SUPV_RETURN_VALUES_IF;linux/payload/plocSupvDefs.h
0x68b0;SPVRTVIF_InvalidReplyLength;No description;176;SUPV_RETURN_VALUES_IF;linux/payload/plocSupvDefs.h
0x68b1;SPVRTVIF_InvalidLength;Received action command has invalid length;177;SUPV_RETURN_VALUES_IF;linux/payload/plocSupvDefs.h
0x68b2;SPVRTVIF_FilenameTooLong;Filename too long;178;SUPV_RETURN_VALUES_IF;linux/payload/plocSupvDefs.h
0x68b3;SPVRTVIF_UpdateStatusReportInvalidLength;Received update status report with invalid packet length field;179;SUPV_RETURN_VALUES_IF;linux/payload/plocSupvDefs.h
0x68b4;SPVRTVIF_UpdateCrcFailure;Update status report does not contain expected CRC. There might be a bit flip in the update memory region.;180;SUPV_RETURN_VALUES_IF;linux/payload/plocSupvDefs.h
0x68b5;SPVRTVIF_SupvHelperExecuting;Supervisor helper task ist currently executing a command (wait until helper tas has finished or interrupt by sending the terminate command);181;SUPV_RETURN_VALUES_IF;linux/payload/plocSupvDefs.h
0x68c0;SPVRTVIF_BufTooSmall;No description;192;SUPV_RETURN_VALUES_IF;linux/payload/plocSupvDefs.h
0x68c1;SPVRTVIF_NoReplyTimeout;No description;193;SUPV_RETURN_VALUES_IF;linux/payload/plocSupvDefs.h
0x6900;ACSCTRL_FileDeletionFailed;File deletion failed and at least one file is still existent.;0;ACS_CTRL;mission/controller/AcsController.h
0x6a02;ACSMEKF_MekfUninitialized;No description;2;ACS_MEKF;mission/controller/acs/MultiplicativeKalmanFilter.h
0x6a03;ACSMEKF_MekfNoGyrData;No description;3;ACS_MEKF;mission/controller/acs/MultiplicativeKalmanFilter.h
0x6a04;ACSMEKF_MekfNoModelVectors;No description;4;ACS_MEKF;mission/controller/acs/MultiplicativeKalmanFilter.h
0x6a05;ACSMEKF_MekfNoSusMgmStrData;No description;5;ACS_MEKF;mission/controller/acs/MultiplicativeKalmanFilter.h
0x6a06;ACSMEKF_MekfCovarianceInversionFailed;No description;6;ACS_MEKF;mission/controller/acs/MultiplicativeKalmanFilter.h
0x6a07;ACSMEKF_MekfNotFinite;No description;7;ACS_MEKF;mission/controller/acs/MultiplicativeKalmanFilter.h
0x6a08;ACSMEKF_MekfInitialized;No description;8;ACS_MEKF;mission/controller/acs/MultiplicativeKalmanFilter.h
0x6a09;ACSMEKF_MekfRunning;No description;9;ACS_MEKF;mission/controller/acs/MultiplicativeKalmanFilter.h
0x6b00;SDMA_OpOngoing;No description;0;SD_CARD_MANAGER;bsp_q7s/fs/SdCardManager.h
0x6b01;SDMA_AlreadyOn;No description;1;SD_CARD_MANAGER;bsp_q7s/fs/SdCardManager.h
0x6b02;SDMA_AlreadyMounted;No description;2;SD_CARD_MANAGER;bsp_q7s/fs/SdCardManager.h
0x6b03;SDMA_AlreadyOff;No description;3;SD_CARD_MANAGER;bsp_q7s/fs/SdCardManager.h
0x6b0a;SDMA_StatusFileNexists;No description;10;SD_CARD_MANAGER;bsp_q7s/fs/SdCardManager.h
0x6b0b;SDMA_StatusFileFormatInvalid;No description;11;SD_CARD_MANAGER;bsp_q7s/fs/SdCardManager.h
0x6b0c;SDMA_MountError;No description;12;SD_CARD_MANAGER;bsp_q7s/fs/SdCardManager.h
0x6b0d;SDMA_UnmountError;No description;13;SD_CARD_MANAGER;bsp_q7s/fs/SdCardManager.h
0x6b0e;SDMA_SystemCallError;No description;14;SD_CARD_MANAGER;bsp_q7s/fs/SdCardManager.h
0x6b0f;SDMA_PopenCallError;No description;15;SD_CARD_MANAGER;bsp_q7s/fs/SdCardManager.h
0x6c00;LPH_SdNotReady;No description;0;LOCAL_PARAM_HANDLER;bsp_q7s/memory/LocalParameterHandler.h
0x6d00;PTM_DumpDone;No description;0;PERSISTENT_TM_STORE;mission/tmtc/PersistentTmStore.h
0x6d01;PTM_BusyDumping;No description;1;PERSISTENT_TM_STORE;mission/tmtc/PersistentTmStore.h
0x6e00;TMS_IsBusy;No description;0;TM_SINK;mission/tmtc/DirectTmSinkIF.h
0x7000;SCBU_KeyNotFound;No description;0;SCRATCH_BUFFER;bsp_q7s/memory/scratchApi.h
0x3601;CFDP_InvalidTlvType;No description;1;CFDP_BASE;fsfw/src/fsfw/cfdp/definitions.h
0x3602;CFDP_InvalidDirectiveField;No description;2;CFDP_BASE;fsfw/src/fsfw/cfdp/definitions.h
0x3603;CFDP_InvalidPduDatafieldLen;No description;3;CFDP_BASE;fsfw/src/fsfw/cfdp/definitions.h
0x3604;CFDP_InvalidAckDirectiveFields;No description;4;CFDP_BASE;fsfw/src/fsfw/cfdp/definitions.h
0x3605;CFDP_MetadataCantParseOptions;No description;5;CFDP_BASE;fsfw/src/fsfw/cfdp/definitions.h
0x3606;CFDP_NakCantParseOptions;No description;6;CFDP_BASE;fsfw/src/fsfw/cfdp/definitions.h
0x3607;CFDP_FinishedCantParseFsResponses;No description;7;CFDP_BASE;fsfw/src/fsfw/cfdp/definitions.h
0x3608;CFDP_FilestoreRequiresSecondFile;No description;8;CFDP_BASE;fsfw/src/fsfw/cfdp/definitions.h
0x3609;CFDP_FilestoreResponseCantParseFsMessage;No description;9;CFDP_BASE;fsfw/src/fsfw/cfdp/definitions.h
0x360a;CFDP_InvalidPduFormat;No description;10;CFDP_BASE;fsfw/src/fsfw/cfdp/definitions.h
0x3700;CFDP_SourceTransactionPending;No description;0;CFDP_HANDLER;fsfw/src/fsfw/cfdp/handler/defs.h
0x3701;CFDP_FileDoesNotExist;No description;1;CFDP_HANDLER;fsfw/src/fsfw/cfdp/handler/defs.h
0x3702;CFDP_FileSegmentLenInvalid;No description;2;CFDP_HANDLER;fsfw/src/fsfw/cfdp/handler/defs.h
0x3703;CFDP_SourceNameEmpty;No description;3;CFDP_HANDLER;fsfw/src/fsfw/cfdp/handler/defs.h
0x3704;CFDP_DestNameEmpty;No description;4;CFDP_HANDLER;fsfw/src/fsfw/cfdp/handler/defs.h
0x3705;CFDP_WrongRemoteCfgEntityId;No description;5;CFDP_HANDLER;fsfw/src/fsfw/cfdp/handler/defs.h
0x3706;CFDP_TargetMsgQueueFull;No description;6;CFDP_HANDLER;fsfw/src/fsfw/cfdp/handler/defs.h
0x3707;CFDP_TmStoreFull;No description;7;CFDP_HANDLER;fsfw/src/fsfw/cfdp/handler/defs.h
0x3801;TSI_BadTimestamp;No description;1;TIME_STAMPER_IF;fsfw/src/fsfw/timemanager/TimeStampIF.h
0x39a1;SGP4_InvalidEccentricity;No description;161;SGP4PROPAGATOR_CLASS;fsfw/src/fsfw/coordinates/Sgp4Propagator.h
0x39a2;SGP4_InvalidMeanMotion;No description;162;SGP4PROPAGATOR_CLASS;fsfw/src/fsfw/coordinates/Sgp4Propagator.h
0x39a3;SGP4_InvalidPerturbationElements;No description;163;SGP4PROPAGATOR_CLASS;fsfw/src/fsfw/coordinates/Sgp4Propagator.h
0x39a4;SGP4_InvalidSemiLatusRectum;No description;164;SGP4PROPAGATOR_CLASS;fsfw/src/fsfw/coordinates/Sgp4Propagator.h
0x39a5;SGP4_InvalidEpochElements;No description;165;SGP4PROPAGATOR_CLASS;fsfw/src/fsfw/coordinates/Sgp4Propagator.h
0x39a6;SGP4_SatelliteHasDecayed;No description;166;SGP4PROPAGATOR_CLASS;fsfw/src/fsfw/coordinates/Sgp4Propagator.h
0x39b1;SGP4_TleTooOld;No description;177;SGP4PROPAGATOR_CLASS;fsfw/src/fsfw/coordinates/Sgp4Propagator.h
0x39b2;SGP4_TleNotInitialized;No description;178;SGP4PROPAGATOR_CLASS;fsfw/src/fsfw/coordinates/Sgp4Propagator.h
0x3a01;MUX_NotEnoughResources;No description;1;MUTEX_IF;fsfw/src/fsfw/ipc/MutexIF.h
0x3a02;MUX_InsufficientMemory;No description;2;MUTEX_IF;fsfw/src/fsfw/ipc/MutexIF.h
0x3a03;MUX_NoPrivilege;No description;3;MUTEX_IF;fsfw/src/fsfw/ipc/MutexIF.h
0x3a04;MUX_WrongAttributeSetting;No description;4;MUTEX_IF;fsfw/src/fsfw/ipc/MutexIF.h
0x3a05;MUX_MutexAlreadyLocked;No description;5;MUTEX_IF;fsfw/src/fsfw/ipc/MutexIF.h
0x3a06;MUX_MutexNotFound;No description;6;MUTEX_IF;fsfw/src/fsfw/ipc/MutexIF.h
0x3a07;MUX_MutexMaxLocks;No description;7;MUTEX_IF;fsfw/src/fsfw/ipc/MutexIF.h
0x3a08;MUX_CurrThreadAlreadyOwnsMutex;No description;8;MUTEX_IF;fsfw/src/fsfw/ipc/MutexIF.h
0x3a09;MUX_CurrThreadDoesNotOwnMutex;No description;9;MUTEX_IF;fsfw/src/fsfw/ipc/MutexIF.h
0x3a0a;MUX_MutexTimeout;No description;10;MUTEX_IF;fsfw/src/fsfw/ipc/MutexIF.h
0x3a0b;MUX_MutexInvalidId;No description;11;MUTEX_IF;fsfw/src/fsfw/ipc/MutexIF.h
0x3a0c;MUX_MutexDestroyedWhileWaiting;No description;12;MUTEX_IF;fsfw/src/fsfw/ipc/MutexIF.h
0x3b01;MQI_Empty;No description;1;MESSAGE_QUEUE_IF;fsfw/src/fsfw/ipc/MessageQueueIF.h
0x3b02;MQI_Full;No space left for more messages;2;MESSAGE_QUEUE_IF;fsfw/src/fsfw/ipc/MessageQueueIF.h
0x3b03;MQI_NoReplyPartner;Returned if a reply method was called without partner;3;MESSAGE_QUEUE_IF;fsfw/src/fsfw/ipc/MessageQueueIF.h
0x3b04;MQI_DestinationInvalid;Returned if the target destination is invalid.;4;MESSAGE_QUEUE_IF;fsfw/src/fsfw/ipc/MessageQueueIF.h
0x3c01;SPH_SemaphoreTimeout;No description;1;SEMAPHORE_IF;fsfw/src/fsfw/tasks/SemaphoreIF.h
0x3c02;SPH_SemaphoreNotOwned;No description;2;SEMAPHORE_IF;fsfw/src/fsfw/tasks/SemaphoreIF.h
0x3c03;SPH_SemaphoreInvalid;No description;3;SEMAPHORE_IF;fsfw/src/fsfw/tasks/SemaphoreIF.h
0x3d00;LPIF_PoolEntryNotFound;No description;0;LOCAL_POOL_OWNER_IF;fsfw/src/fsfw/datapoollocal/localPoolDefinitions.h
0x3d01;LPIF_PoolEntryTypeConflict;No description;1;LOCAL_POOL_OWNER_IF;fsfw/src/fsfw/datapoollocal/localPoolDefinitions.h
0x3ea0;PVA_InvalidReadWriteMode;No description;160;POOL_VARIABLE_IF;fsfw/src/fsfw/datapool/PoolVariableIF.h
0x3ea1;PVA_InvalidPoolEntry;No description;161;POOL_VARIABLE_IF;fsfw/src/fsfw/datapool/PoolVariableIF.h
0x3f00;HKM_QueueOrDestinationInvalid;No description;0;HOUSEKEEPING_MANAGER;fsfw/src/fsfw/datapoollocal/LocalDataPoolManager.h
0x3f01;HKM_WrongHkPacketType;No description;1;HOUSEKEEPING_MANAGER;fsfw/src/fsfw/datapoollocal/LocalDataPoolManager.h
0x3f02;HKM_ReportingStatusUnchanged;No description;2;HOUSEKEEPING_MANAGER;fsfw/src/fsfw/datapoollocal/LocalDataPoolManager.h
0x3f03;HKM_PeriodicHelperInvalid;No description;3;HOUSEKEEPING_MANAGER;fsfw/src/fsfw/datapoollocal/LocalDataPoolManager.h
0x3f04;HKM_PoolobjectNotFound;No description;4;HOUSEKEEPING_MANAGER;fsfw/src/fsfw/datapoollocal/LocalDataPoolManager.h
0x3f05;HKM_DatasetNotFound;No description;5;HOUSEKEEPING_MANAGER;fsfw/src/fsfw/datapoollocal/LocalDataPoolManager.h
0x4001;DLEE_StreamTooShort;No description;1;DLE_ENCODER;fsfw/src/fsfw/globalfunctions/DleEncoder.h
0x4002;DLEE_DecodingError;No description;2;DLE_ENCODER;fsfw/src/fsfw/globalfunctions/DleEncoder.h
0x4301;PUS11_InvalidTypeTimeWindow;No description;1;PUS_SERVICE_11;fsfw/src/fsfw/pus/Service11TelecommandScheduling.h
0x4302;PUS11_InvalidTimeWindow;No description;2;PUS_SERVICE_11;fsfw/src/fsfw/pus/Service11TelecommandScheduling.h
0x4303;PUS11_TimeshiftingNotPossible;No description;3;PUS_SERVICE_11;fsfw/src/fsfw/pus/Service11TelecommandScheduling.h
0x4304;PUS11_InvalidRelativeTime;No description;4;PUS_SERVICE_11;fsfw/src/fsfw/pus/Service11TelecommandScheduling.h
0x4305;PUS11_ContainedTcTooSmall;No description;5;PUS_SERVICE_11;fsfw/src/fsfw/pus/Service11TelecommandScheduling.h
0x4306;PUS11_ContainedTcCrcMissmatch;No description;6;PUS_SERVICE_11;fsfw/src/fsfw/pus/Service11TelecommandScheduling.h
0x4400;FILS_GenericFileError;No description;0;FILE_SYSTEM;fsfw/src/fsfw/filesystem/HasFileSystemIF.h
0x4401;FILS_GenericDirError;No description;1;FILE_SYSTEM;fsfw/src/fsfw/filesystem/HasFileSystemIF.h
0x4402;FILS_FilesystemInactive;No description;2;FILE_SYSTEM;fsfw/src/fsfw/filesystem/HasFileSystemIF.h
0x4403;FILS_GenericRenameError;No description;3;FILE_SYSTEM;fsfw/src/fsfw/filesystem/HasFileSystemIF.h
0x4404;FILS_IsBusy;No description;4;FILE_SYSTEM;fsfw/src/fsfw/filesystem/HasFileSystemIF.h
0x4405;FILS_InvalidParameters;No description;5;FILE_SYSTEM;fsfw/src/fsfw/filesystem/HasFileSystemIF.h
0x440a;FILS_FileDoesNotExist;No description;10;FILE_SYSTEM;fsfw/src/fsfw/filesystem/HasFileSystemIF.h
0x440b;FILS_FileAlreadyExists;No description;11;FILE_SYSTEM;fsfw/src/fsfw/filesystem/HasFileSystemIF.h
0x440c;FILS_NotAFile;No description;12;FILE_SYSTEM;fsfw/src/fsfw/filesystem/HasFileSystemIF.h
0x440d;FILS_FileLocked;No description;13;FILE_SYSTEM;fsfw/src/fsfw/filesystem/HasFileSystemIF.h
0x440e;FILS_PermissionDenied;No description;14;FILE_SYSTEM;fsfw/src/fsfw/filesystem/HasFileSystemIF.h
0x4415;FILS_DirectoryDoesNotExist;No description;21;FILE_SYSTEM;fsfw/src/fsfw/filesystem/HasFileSystemIF.h
0x4416;FILS_DirectoryAlreadyExists;No description;22;FILE_SYSTEM;fsfw/src/fsfw/filesystem/HasFileSystemIF.h
0x4417;FILS_NotADirectory;No description;23;FILE_SYSTEM;fsfw/src/fsfw/filesystem/HasFileSystemIF.h
0x4418;FILS_DirectoryNotEmpty;No description;24;FILE_SYSTEM;fsfw/src/fsfw/filesystem/HasFileSystemIF.h
0x441e;FILS_SequencePacketMissingWrite;No description;30;FILE_SYSTEM;fsfw/src/fsfw/filesystem/HasFileSystemIF.h
0x441f;FILS_SequencePacketMissingRead;No description;31;FILE_SYSTEM;fsfw/src/fsfw/filesystem/HasFileSystemIF.h
0x4500;UXOS_ExecutionFinished;Execution of the current command has finished;0;LINUX_OSAL;fsfw/src/fsfw_hal/linux/CommandExecutor.h
0x4501;UXOS_CommandPending;Command is pending. This will also be returned if the user tries to load another command but a command is still pending;1;LINUX_OSAL;fsfw/src/fsfw_hal/linux/CommandExecutor.h
0x4502;UXOS_BytesRead;Some bytes have been read from the executing process;2;LINUX_OSAL;fsfw/src/fsfw_hal/linux/CommandExecutor.h
0x4503;UXOS_CommandError;Command execution failed;3;LINUX_OSAL;fsfw/src/fsfw_hal/linux/CommandExecutor.h
0x4504;UXOS_NoCommandLoadedOrPending;;4;LINUX_OSAL;fsfw/src/fsfw_hal/linux/CommandExecutor.h
0x4506;UXOS_PcloseCallError;No description;6;LINUX_OSAL;fsfw/src/fsfw_hal/linux/CommandExecutor.h
0x4600;HSPI_OpeningFileFailed;No description;0;HAL_SPI;fsfw/src/fsfw_hal/common/spi/spiCommon.h
0x4601;HSPI_FullDuplexTransferFailed;No description;1;HAL_SPI;fsfw/src/fsfw_hal/common/spi/spiCommon.h
0x4602;HSPI_HalfDuplexTransferFailed;No description;2;HAL_SPI;fsfw/src/fsfw_hal/common/spi/spiCommon.h
0x4603;HSPI_Timeout;No description;3;HAL_SPI;fsfw/src/fsfw_hal/common/spi/spiCommon.h
0x4604;HSPI_Busy;No description;4;HAL_SPI;fsfw/src/fsfw_hal/common/spi/spiCommon.h
0x4605;HSPI_GenericError;No description;5;HAL_SPI;fsfw/src/fsfw_hal/common/spi/spiCommon.h
0x4701;HURT_UartReadFailure;No description;1;HAL_UART;fsfw/src/fsfw_hal/linux/serial/SerialComIF.h
0x4702;HURT_UartReadSizeMissmatch;No description;2;HAL_UART;fsfw/src/fsfw_hal/linux/serial/SerialComIF.h
0x4703;HURT_UartRxBufferTooSmall;No description;3;HAL_UART;fsfw/src/fsfw_hal/linux/serial/SerialComIF.h
0x4901;HGIO_UnknownGpioId;No description;1;HAL_GPIO;fsfw/src/fsfw_hal/linux/gpio/LinuxLibgpioIF.h
0x4902;HGIO_DriveGpioFailure;No description;2;HAL_GPIO;fsfw/src/fsfw_hal/linux/gpio/LinuxLibgpioIF.h
0x4903;HGIO_GpioTypeFailure;No description;3;HAL_GPIO;fsfw/src/fsfw_hal/linux/gpio/LinuxLibgpioIF.h
0x4904;HGIO_GpioInvalidInstance;No description;4;HAL_GPIO;fsfw/src/fsfw_hal/linux/gpio/LinuxLibgpioIF.h
0x4905;HGIO_GpioDuplicateDetected;No description;5;HAL_GPIO;fsfw/src/fsfw_hal/linux/gpio/LinuxLibgpioIF.h
0x4906;HGIO_GpioInitFailed;No description;6;HAL_GPIO;fsfw/src/fsfw_hal/linux/gpio/LinuxLibgpioIF.h
0x4907;HGIO_GpioGetValueFailed;No description;7;HAL_GPIO;fsfw/src/fsfw_hal/linux/gpio/LinuxLibgpioIF.h
0x4d00;SPPA_NoPacketFound;No description;0;SPACE_PACKET_PARSER;fsfw/src/fsfw/tmtcservices/SpacePacketParser.h
0x4d01;SPPA_SplitPacket;No description;1;SPACE_PACKET_PARSER;fsfw/src/fsfw/tmtcservices/SpacePacketParser.h
0x50a1;HEATER_CommandNotSupported;No description;161;HEATER_HANDLER;mission/tcs/HeaterHandler.h
0x50a2;HEATER_InitFailed;No description;162;HEATER_HANDLER;mission/tcs/HeaterHandler.h
0x50a3;HEATER_InvalidSwitchNr;No description;163;HEATER_HANDLER;mission/tcs/HeaterHandler.h
0x50a4;HEATER_MainSwitchSetTimeout;No description;164;HEATER_HANDLER;mission/tcs/HeaterHandler.h
0x50a5;HEATER_CommandAlreadyWaiting;No description;165;HEATER_HANDLER;mission/tcs/HeaterHandler.h
0x51a0;SYRLINKS_CrcFailure;No description;160;SYRLINKS_HANDLER;mission/com/SyrlinksHandler.h
0x51a1;SYRLINKS_UartFraminOrParityErrorAck;No description;161;SYRLINKS_HANDLER;mission/com/SyrlinksHandler.h
0x51a2;SYRLINKS_BadCharacterAck;No description;162;SYRLINKS_HANDLER;mission/com/SyrlinksHandler.h
0x51a3;SYRLINKS_BadParameterValueAck;No description;163;SYRLINKS_HANDLER;mission/com/SyrlinksHandler.h
0x51a4;SYRLINKS_BadEndOfFrameAck;No description;164;SYRLINKS_HANDLER;mission/com/SyrlinksHandler.h
0x51a5;SYRLINKS_UnknownCommandIdAck;No description;165;SYRLINKS_HANDLER;mission/com/SyrlinksHandler.h
0x51a6;SYRLINKS_BadCrcAck;No description;166;SYRLINKS_HANDLER;mission/com/SyrlinksHandler.h
0x51a7;SYRLINKS_ReplyWrongSize;No description;167;SYRLINKS_HANDLER;mission/com/SyrlinksHandler.h
0x51a8;SYRLINKS_MissingStartFrameCharacter;No description;168;SYRLINKS_HANDLER;mission/com/SyrlinksHandler.h
0x5200;IMTQ_InvalidCommandCode;No description;0;IMTQ_HANDLER;mission/acs/imtqHelpers.h
0x5201;IMTQ_MgmMeasurementLowLevelError;No description;1;IMTQ_HANDLER;mission/acs/imtqHelpers.h
0x5202;IMTQ_ActuateCmdLowLevelError;No description;2;IMTQ_HANDLER;mission/acs/imtqHelpers.h
0x5203;IMTQ_ParameterMissing;No description;3;IMTQ_HANDLER;mission/acs/imtqHelpers.h
0x5204;IMTQ_ParameterInvalid;No description;4;IMTQ_HANDLER;mission/acs/imtqHelpers.h
0x5205;IMTQ_CcUnavailable;No description;5;IMTQ_HANDLER;mission/acs/imtqHelpers.h
0x5206;IMTQ_InternalProcessingError;No description;6;IMTQ_HANDLER;mission/acs/imtqHelpers.h
0x5207;IMTQ_RejectedWithoutReason;No description;7;IMTQ_HANDLER;mission/acs/imtqHelpers.h
0x5208;IMTQ_CmdErrUnknown;No description;8;IMTQ_HANDLER;mission/acs/imtqHelpers.h
0x5209;IMTQ_StartupCfgError;No description;9;IMTQ_HANDLER;mission/acs/imtqHelpers.h
0x520a;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.;10;IMTQ_HANDLER;mission/acs/imtqHelpers.h
0x53b0;RWHA_SpiWriteFailure;No description;176;RW_HANDLER;mission/acs/rwHelpers.h
0x53b1;RWHA_SpiReadFailure;Used by the spi send function to tell a failing read call;177;RW_HANDLER;mission/acs/rwHelpers.h
0x53b2;RWHA_MissingStartSign;Can be used by the HDLC decoding mechanism to inform about a missing start sign 0x7E;178;RW_HANDLER;mission/acs/rwHelpers.h
0x53b3;RWHA_InvalidSubstitute;Can be used by the HDLC decoding mechanism to inform about an invalid substitution combination;179;RW_HANDLER;mission/acs/rwHelpers.h
0x53b4;RWHA_MissingEndSign;HDLC decoding mechanism never receives the end sign 0x7E;180;RW_HANDLER;mission/acs/rwHelpers.h
0x53b5;RWHA_NoReply;Reaction wheel only responds with empty frames.;181;RW_HANDLER;mission/acs/rwHelpers.h
0x53b6;RWHA_NoStartMarker;Expected a start marker as first byte;182;RW_HANDLER;mission/acs/rwHelpers.h
0x53b7;RWHA_SpiReadTimeout;Timeout when reading reply;183;RW_HANDLER;mission/acs/rwHelpers.h
0x54a0;STRH_TemperatureReqFailed;Status in temperature reply signals error;160;STR_HANDLER;mission/acs/str/StarTrackerHandler.h
0x54a1;STRH_PingFailed;Ping command failed;161;STR_HANDLER;mission/acs/str/StarTrackerHandler.h
0x54a2;STRH_VersionReqFailed;Status in version reply signals error;162;STR_HANDLER;mission/acs/str/StarTrackerHandler.h
0x54a3;STRH_InterfaceReqFailed;Status in interface reply signals error;163;STR_HANDLER;mission/acs/str/StarTrackerHandler.h
0x54a4;STRH_PowerReqFailed;Status in power reply signals error;164;STR_HANDLER;mission/acs/str/StarTrackerHandler.h
0x54a5;STRH_SetParamFailed;Status of reply to parameter set command signals error;165;STR_HANDLER;mission/acs/str/StarTrackerHandler.h
0x54a6;STRH_ActionFailed;Status of reply to action command signals error;166;STR_HANDLER;mission/acs/str/StarTrackerHandler.h
0x54a7;STRH_FilePathTooLong;Received invalid path string. Exceeds allowed length;167;STR_HANDLER;mission/acs/str/StarTrackerHandler.h
0x54a8;STRH_FilenameTooLong;Name of file received with command is too long;168;STR_HANDLER;mission/acs/str/StarTrackerHandler.h
0x54a9;STRH_InvalidProgram;Received version reply with invalid program ID;169;STR_HANDLER;mission/acs/str/StarTrackerHandler.h
0x54aa;STRH_ReplyError;Status field reply signals error;170;STR_HANDLER;mission/acs/str/StarTrackerHandler.h
0x54ab;STRH_CommandTooShort;Received command which is too short (some data is missing for proper execution);171;STR_HANDLER;mission/acs/str/StarTrackerHandler.h
0x54ac;STRH_InvalidLength;Received command with invalid length (too few or too many parameters);172;STR_HANDLER;mission/acs/str/StarTrackerHandler.h
0x54ad;STRH_RegionMismatch;Region mismatch between send and received data;173;STR_HANDLER;mission/acs/str/StarTrackerHandler.h
0x54ae;STRH_AddressMismatch;Address mismatch between send and received data;174;STR_HANDLER;mission/acs/str/StarTrackerHandler.h
0x54af;STRH_LengthMismatch;Length field mismatch between send and received data;175;STR_HANDLER;mission/acs/str/StarTrackerHandler.h
0x54b0;STRH_FileNotExists;Specified file does not exist;176;STR_HANDLER;mission/acs/str/StarTrackerHandler.h
0x54b1;STRH_InvalidType;Download blob pixel command has invalid type field;177;STR_HANDLER;mission/acs/str/StarTrackerHandler.h
0x54b2;STRH_InvalidId;Received FPGA action command with invalid ID;178;STR_HANDLER;mission/acs/str/StarTrackerHandler.h
0x54b3;STRH_ReplyTooShort;Received reply is too short;179;STR_HANDLER;mission/acs/str/StarTrackerHandler.h
0x54b4;STRH_CrcFailure;Received reply with invalid CRC;180;STR_HANDLER;mission/acs/str/StarTrackerHandler.h
0x54b5;STRH_StrHelperExecuting;Star tracker handler currently executing a command and using the communication interface;181;STR_HANDLER;mission/acs/str/StarTrackerHandler.h
0x54b6;STRH_StartrackerAlreadyBooted;Star tracker is already in firmware mode;182;STR_HANDLER;mission/acs/str/StarTrackerHandler.h
0x54b7;STRH_StartrackerNotRunningFirmware;Star tracker must be in firmware mode to run this command;183;STR_HANDLER;mission/acs/str/StarTrackerHandler.h
0x54b8;STRH_StartrackerNotRunningBootloader;Star tracker must be in bootloader mode to run this command;184;STR_HANDLER;mission/acs/str/StarTrackerHandler.h
0x55e0;DWLPWRON_InvalidMode;Received command has invalid JESD mode (valid modes are 0 - 5);224;DWLPWRON_CMD;linux/payload/plocMpsocHelpers.h
0x55e1;DWLPWRON_InvalidLaneRate;Received command has invalid lane rate (valid lane rate are 0 - 9);225;DWLPWRON_CMD;linux/payload/plocMpsocHelpers.h
0x5800;PLSPVhLP_RequestDone;No description;0;PLOC_SUPV_HELPER;linux/payload/PlocSupvUartMan.h
0x5801;PLSPVhLP_NoPacketFound;No description;1;PLOC_SUPV_HELPER;linux/payload/PlocSupvUartMan.h
0x5802;PLSPVhLP_DecodeBufTooSmall;No description;2;PLOC_SUPV_HELPER;linux/payload/PlocSupvUartMan.h
0x5803;PLSPVhLP_PossiblePacketLossConsecutiveStart;No description;3;PLOC_SUPV_HELPER;linux/payload/PlocSupvUartMan.h
0x5804;PLSPVhLP_PossiblePacketLossConsecutiveEnd;No description;4;PLOC_SUPV_HELPER;linux/payload/PlocSupvUartMan.h
0x5805;PLSPVhLP_HdlcError;No description;5;PLOC_SUPV_HELPER;linux/payload/PlocSupvUartMan.h
0x58a0;PLSPVhLP_FileClosedAccidentally;File accidentally close;160;PLOC_SUPV_HELPER;linux/payload/PlocSupvUartMan.h
0x58a1;PLSPVhLP_ProcessTerminated;Process has been terminated by command;161;PLOC_SUPV_HELPER;linux/payload/PlocSupvUartMan.h
0x58a2;PLSPVhLP_PathNotExists;Received command with invalid pathname;162;PLOC_SUPV_HELPER;linux/payload/PlocSupvUartMan.h
0x58a3;PLSPVhLP_EventBufferReplyInvalidApid;Expected event buffer TM but received space packet with other APID;163;PLOC_SUPV_HELPER;linux/payload/PlocSupvUartMan.h
0x59a0;SUSS_InvalidSpeed;Action Message with invalid speed was received. Valid speeds must be in the range of [-65000, 1000] or [1000, 65000];160;SUS_HANDLER;mission/acs/RwHandler.h
0x59a1;SUSS_InvalidRampTime;Action Message with invalid ramp time was received.;161;SUS_HANDLER;mission/acs/RwHandler.h
0x59a2;SUSS_SetSpeedCommandInvalidLength;Received set speed command has invalid length. Should be 6.;162;SUS_HANDLER;mission/acs/RwHandler.h
0x59a3;SUSS_ExecutionFailed;Command execution failed;163;SUS_HANDLER;mission/acs/RwHandler.h
0x59a4;SUSS_CrcError;Reaction wheel reply has invalid crc;164;SUS_HANDLER;mission/acs/RwHandler.h
0x59a5;SUSS_ValueNotRead;No description;165;SUS_HANDLER;mission/acs/RwHandler.h
0x5aa0;IPCI_PapbBusy;No description;160;CCSDS_IP_CORE_BRIDGE;linux/ipcore/PapbVcInterface.h
0x5ba0;PTME_UnknownVcId;No description;160;PTME;linux/ipcore/Ptme.h
0x5d01;STRHLP_SdNotMounted;SD card specified in path string not mounted;1;STR_HELPER;linux/acs/StrComHandler.h
0x5d02;STRHLP_FileNotExists;Specified file does not exist on filesystem;2;STR_HELPER;linux/acs/StrComHandler.h
0x5d03;STRHLP_PathNotExists;Specified path does not exist;3;STR_HELPER;linux/acs/StrComHandler.h
0x5d04;STRHLP_FileCreationFailed;Failed to create download image or read flash file;4;STR_HELPER;linux/acs/StrComHandler.h
0x5d05;STRHLP_RegionMismatch;Region in flash write/read reply does not match expected region;5;STR_HELPER;linux/acs/StrComHandler.h
0x5d06;STRHLP_AddressMismatch;Address in flash write/read reply does not match expected address;6;STR_HELPER;linux/acs/StrComHandler.h
0x5d07;STRHLP_LengthMismatch;Length in flash write/read reply does not match expected length;7;STR_HELPER;linux/acs/StrComHandler.h
0x5d08;STRHLP_StatusError;Status field in reply signals error;8;STR_HELPER;linux/acs/StrComHandler.h
0x5d09;STRHLP_InvalidTypeId;Reply has invalid type ID (should be of action reply type);9;STR_HELPER;linux/acs/StrComHandler.h
0x5d0a;STRHLP_ReceptionTimeout;No description;10;STR_HELPER;linux/acs/StrComHandler.h
0x5d0b;STRHLP_DecodingError;No description;11;STR_HELPER;linux/acs/StrComHandler.h
0x5e00;GOMS_PacketTooLong;No description;0;GOM_SPACE_HANDLER;mission/power/GomspaceDeviceHandler.h
0x5e01;GOMS_InvalidTableId;No description;1;GOM_SPACE_HANDLER;mission/power/GomspaceDeviceHandler.h
0x5e02;GOMS_InvalidAddress;No description;2;GOM_SPACE_HANDLER;mission/power/GomspaceDeviceHandler.h
0x5e03;GOMS_InvalidParamSize;No description;3;GOM_SPACE_HANDLER;mission/power/GomspaceDeviceHandler.h
0x5e04;GOMS_InvalidPayloadSize;No description;4;GOM_SPACE_HANDLER;mission/power/GomspaceDeviceHandler.h
0x5e05;GOMS_UnknownReplyId;No description;5;GOM_SPACE_HANDLER;mission/power/GomspaceDeviceHandler.h
0x5fa0;PLMEMDUMP_MramAddressTooHigh;The capacity of the MRAM amounts to 512 kB. Thus the maximum address must not be higher than 0x7d000.;160;PLOC_MEMORY_DUMPER;linux/payload/PlocMemoryDumper.h
0x5fa1;PLMEMDUMP_MramInvalidAddressCombination;The specified end address is lower than the start address;161;PLOC_MEMORY_DUMPER;linux/payload/PlocMemoryDumper.h
0x60a0;PDEC_AbandonedCltuRetval;No description;160;PDEC_HANDLER;linux/ipcore/pdec.h
0x60a1;PDEC_FrameDirtyRetval;No description;161;PDEC_HANDLER;linux/ipcore/pdec.h
0x60a2;PDEC_FrameIllegalMultipleReasons;No description;162;PDEC_HANDLER;linux/ipcore/pdec.h
0x60a3;PDEC_AdDiscardedLockoutRetval;No description;163;PDEC_HANDLER;linux/ipcore/pdec.h
0x60a4;PDEC_AdDiscardedWaitRetval;No description;164;PDEC_HANDLER;linux/ipcore/pdec.h
0x60a5;PDEC_AdDiscardedNsVs;No description;165;PDEC_HANDLER;linux/ipcore/pdec.h
0x60a6;PDEC_NoReportRetval;No description;166;PDEC_HANDLER;linux/ipcore/pdec.h
0x60a7;PDEC_ErrorVersionNumberRetval;No description;167;PDEC_HANDLER;linux/ipcore/pdec.h
0x60a8;PDEC_IllegalCombinationRetval;No description;168;PDEC_HANDLER;linux/ipcore/pdec.h
0x60a9;PDEC_InvalidScIdRetval;No description;169;PDEC_HANDLER;linux/ipcore/pdec.h
0x60aa;PDEC_InvalidVcIdMsbRetval;No description;170;PDEC_HANDLER;linux/ipcore/pdec.h
0x60ab;PDEC_InvalidVcIdLsbRetval;No description;171;PDEC_HANDLER;linux/ipcore/pdec.h
0x60ac;PDEC_NsNotZeroRetval;No description;172;PDEC_HANDLER;linux/ipcore/pdec.h
0x60ae;PDEC_InvalidBcCc;No description;174;PDEC_HANDLER;linux/ipcore/pdec.h
0x60b0;PDEC_CommandNotImplemented;Received action message with unknown action id;176;PDEC_HANDLER;linux/ipcore/pdec.h
0x61a0;CCSDS_CommandNotImplemented;Received action message with unknown action id;160;CCSDS_HANDLER;mission/com/CcsdsIpCoreHandler.h
0x62a0;RS_RateNotSupported;The commanded rate is not supported by the current FPGA design;160;RATE_SETTER;linux/ipcore/PtmeConfig.h
0x62a1;RS_BadBitRate;Bad bitrate has been commanded (e.g. 0);161;RATE_SETTER;linux/ipcore/PtmeConfig.h
0x62a2;RS_ClkInversionFailed;Failed to invert clock and thus change the time the data is updated with respect to the tx clock;162;RATE_SETTER;linux/ipcore/PtmeConfig.h
0x62a3;RS_TxManipulatorConfigFailed;Failed to change configuration bit of tx clock manipulator;163;RATE_SETTER;linux/ipcore/PtmeConfig.h
0x6301;JSONBASE_JsonFileNotExists;Specified json file does not exist;1;ARCSEC_JSON_BASE;mission/acs/str/ArcsecJsonParamBase.h
0x6302;JSONBASE_SetNotExists;Requested set does not exist in json file;2;ARCSEC_JSON_BASE;mission/acs/str/ArcsecJsonParamBase.h
0x6303;JSONBASE_ParamNotExists;Requested parameter does not exist in json file;3;ARCSEC_JSON_BASE;mission/acs/str/ArcsecJsonParamBase.h
0x64a0;NVMB_KeyNotExists;Specified key does not exist in json file;160;NVM_PARAM_BASE;mission/memory/NvmParameterBase.h
0x65a0;FSHLP_SdNotMounted;SD card specified with path string not mounted;160;FILE_SYSTEM_HELPER;bsp_q7s/fs/FilesystemHelper.h
0x65a1;FSHLP_FileNotExists;Specified file does not exist on filesystem;161;FILE_SYSTEM_HELPER;bsp_q7s/fs/FilesystemHelper.h
0x66a0;PLMPHLP_FileWriteError;File error occured for file transfers from OBC to the MPSoC.;160;PLOC_MPSOC_HELPER;linux/payload/PlocMpsocSpecialComHelper.h
0x66a1;PLMPHLP_FileReadError;File error occured for file transfers from MPSoC to OBC.;161;PLOC_MPSOC_HELPER;linux/payload/PlocMpsocSpecialComHelper.h
0x67a0;SADPL_CommandNotSupported;No description;160;SA_DEPL_HANDLER;mission/SolarArrayDeploymentHandler.h
0x67a1;SADPL_DeploymentAlreadyExecuting;No description;161;SA_DEPL_HANDLER;mission/SolarArrayDeploymentHandler.h
0x67a2;SADPL_MainSwitchTimeoutFailure;No description;162;SA_DEPL_HANDLER;mission/SolarArrayDeploymentHandler.h
0x67a3;SADPL_SwitchingDeplSa1Failed;No description;163;SA_DEPL_HANDLER;mission/SolarArrayDeploymentHandler.h
0x67a4;SADPL_SwitchingDeplSa2Failed;No description;164;SA_DEPL_HANDLER;mission/SolarArrayDeploymentHandler.h
0x68a0;MPSOCRTVIF_CrcFailure;Space Packet received from PLOC has invalid CRC;160;MPSOC_RETURN_VALUES_IF;linux/payload/mpsocRetvals.h
0x68a1;MPSOCRTVIF_ReceivedAckFailure;Received ACK failure reply from PLOC;161;MPSOC_RETURN_VALUES_IF;linux/payload/mpsocRetvals.h
0x68a2;MPSOCRTVIF_ReceivedExeFailure;Received execution failure reply from PLOC;162;MPSOC_RETURN_VALUES_IF;linux/payload/mpsocRetvals.h
0x68a3;MPSOCRTVIF_InvalidApid;Received space packet with invalid APID from PLOC;163;MPSOC_RETURN_VALUES_IF;linux/payload/mpsocRetvals.h
0x68a4;MPSOCRTVIF_InvalidLength;Received command with invalid length;164;MPSOC_RETURN_VALUES_IF;linux/payload/mpsocRetvals.h
0x68a5;MPSOCRTVIF_FilenameTooLong;Filename of file in OBC filesystem is too long;165;MPSOC_RETURN_VALUES_IF;linux/payload/mpsocRetvals.h
0x68a6;MPSOCRTVIF_MpsocHelperExecuting;MPSoC helper is currently executing a command;166;MPSOC_RETURN_VALUES_IF;linux/payload/mpsocRetvals.h
0x68a7;MPSOCRTVIF_MpsocFilenameTooLong;Filename of MPSoC file is to long (max. 256 bytes);167;MPSOC_RETURN_VALUES_IF;linux/payload/mpsocRetvals.h
0x68a8;MPSOCRTVIF_InvalidParameter;Command has invalid parameter;168;MPSOC_RETURN_VALUES_IF;linux/payload/mpsocRetvals.h
0x68a9;MPSOCRTVIF_NameTooLong;Received command has file string with invalid length;169;MPSOC_RETURN_VALUES_IF;linux/payload/mpsocRetvals.h
0x69a0;SPVRTVIF_CrcFailure;Space Packet received from PLOC supervisor has invalid CRC;160;SUPV_RETURN_VALUES_IF;linux/payload/plocSupvDefs.h
0x69a1;SPVRTVIF_InvalidServiceId;No description;161;SUPV_RETURN_VALUES_IF;linux/payload/plocSupvDefs.h
0x69a2;SPVRTVIF_ReceivedAckFailure;Received ACK failure reply from PLOC supervisor;162;SUPV_RETURN_VALUES_IF;linux/payload/plocSupvDefs.h
0x69a3;SPVRTVIF_ReceivedExeFailure;Received execution failure reply from PLOC supervisor;163;SUPV_RETURN_VALUES_IF;linux/payload/plocSupvDefs.h
0x69a4;SPVRTVIF_InvalidApid;Received space packet with invalid APID from PLOC supervisor;164;SUPV_RETURN_VALUES_IF;linux/payload/plocSupvDefs.h
0x69a5;SPVRTVIF_GetTimeFailure;Failed to read current system time;165;SUPV_RETURN_VALUES_IF;linux/payload/plocSupvDefs.h
0x69a6;SPVRTVIF_InvalidWatchdog;Received command with invalid watchdog parameter. Valid watchdogs are 0 for PS, 1 for PL and 2 for INT;166;SUPV_RETURN_VALUES_IF;linux/payload/plocSupvDefs.h
0x69a7;SPVRTVIF_InvalidWatchdogTimeout;Received watchdog timeout config command with invalid timeout. Valid timeouts must be in the range between 1000 and 360000 ms.;167;SUPV_RETURN_VALUES_IF;linux/payload/plocSupvDefs.h
0x69a8;SPVRTVIF_InvalidLatchupId;Received latchup config command with invalid latchup ID;168;SUPV_RETURN_VALUES_IF;linux/payload/plocSupvDefs.h
0x69a9;SPVRTVIF_SweepPeriodTooSmall;Received set adc sweep period command with invalid sweep period. Must be larger than 21.;169;SUPV_RETURN_VALUES_IF;linux/payload/plocSupvDefs.h
0x69aa;SPVRTVIF_InvalidTestParam;Receive auto EM test command with invalid test param. Valid params are 1 and 2.;170;SUPV_RETURN_VALUES_IF;linux/payload/plocSupvDefs.h
0x69ab;SPVRTVIF_MramPacketParsingFailure;Returned when scanning for MRAM dump packets failed.;171;SUPV_RETURN_VALUES_IF;linux/payload/plocSupvDefs.h
0x69ac;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);172;SUPV_RETURN_VALUES_IF;linux/payload/plocSupvDefs.h
0x69ad;SPVRTVIF_NoMramPacket;Expect reception of an MRAM dump packet but received space packet with other apid.;173;SUPV_RETURN_VALUES_IF;linux/payload/plocSupvDefs.h
0x69ae;SPVRTVIF_PathDoesNotExist;Path to PLOC directory on SD card does not exist;174;SUPV_RETURN_VALUES_IF;linux/payload/plocSupvDefs.h
0x69af;SPVRTVIF_MramFileNotExists;MRAM dump file does not exists. The file should actually already have been created with the reception of the first dump packet.;175;SUPV_RETURN_VALUES_IF;linux/payload/plocSupvDefs.h
0x69b0;SPVRTVIF_InvalidReplyLength;No description;176;SUPV_RETURN_VALUES_IF;linux/payload/plocSupvDefs.h
0x69b1;SPVRTVIF_InvalidLength;Received action command has invalid length;177;SUPV_RETURN_VALUES_IF;linux/payload/plocSupvDefs.h
0x69b2;SPVRTVIF_FilenameTooLong;Filename too long;178;SUPV_RETURN_VALUES_IF;linux/payload/plocSupvDefs.h
0x69b3;SPVRTVIF_UpdateStatusReportInvalidLength;Received update status report with invalid packet length field;179;SUPV_RETURN_VALUES_IF;linux/payload/plocSupvDefs.h
0x69b4;SPVRTVIF_UpdateCrcFailure;Update status report does not contain expected CRC. There might be a bit flip in the update memory region.;180;SUPV_RETURN_VALUES_IF;linux/payload/plocSupvDefs.h
0x69b5;SPVRTVIF_SupvHelperExecuting;Supervisor helper task ist currently executing a command (wait until helper tas has finished or interrupt by sending the terminate command);181;SUPV_RETURN_VALUES_IF;linux/payload/plocSupvDefs.h
0x69c0;SPVRTVIF_BufTooSmall;No description;192;SUPV_RETURN_VALUES_IF;linux/payload/plocSupvDefs.h
0x69c1;SPVRTVIF_NoReplyTimeout;No description;193;SUPV_RETURN_VALUES_IF;linux/payload/plocSupvDefs.h
0x6a00;ACSCTRL_FileDeletionFailed;File deletion failed and at least one file is still existent.;0;ACS_CTRL;mission/controller/AcsController.h
0x6b02;ACSMEKF_MekfUninitialized;No description;2;ACS_MEKF;mission/controller/acs/MultiplicativeKalmanFilter.h
0x6b03;ACSMEKF_MekfNoGyrData;No description;3;ACS_MEKF;mission/controller/acs/MultiplicativeKalmanFilter.h
0x6b04;ACSMEKF_MekfNoModelVectors;No description;4;ACS_MEKF;mission/controller/acs/MultiplicativeKalmanFilter.h
0x6b05;ACSMEKF_MekfNoSusMgmStrData;No description;5;ACS_MEKF;mission/controller/acs/MultiplicativeKalmanFilter.h
0x6b06;ACSMEKF_MekfCovarianceInversionFailed;No description;6;ACS_MEKF;mission/controller/acs/MultiplicativeKalmanFilter.h
0x6b07;ACSMEKF_MekfNotFinite;No description;7;ACS_MEKF;mission/controller/acs/MultiplicativeKalmanFilter.h
0x6b08;ACSMEKF_MekfInitialized;No description;8;ACS_MEKF;mission/controller/acs/MultiplicativeKalmanFilter.h
0x6b09;ACSMEKF_MekfRunning;No description;9;ACS_MEKF;mission/controller/acs/MultiplicativeKalmanFilter.h
0x6c00;SDMA_OpOngoing;No description;0;SD_CARD_MANAGER;bsp_q7s/fs/SdCardManager.h
0x6c01;SDMA_AlreadyOn;No description;1;SD_CARD_MANAGER;bsp_q7s/fs/SdCardManager.h
0x6c02;SDMA_AlreadyMounted;No description;2;SD_CARD_MANAGER;bsp_q7s/fs/SdCardManager.h
0x6c03;SDMA_AlreadyOff;No description;3;SD_CARD_MANAGER;bsp_q7s/fs/SdCardManager.h
0x6c0a;SDMA_StatusFileNexists;No description;10;SD_CARD_MANAGER;bsp_q7s/fs/SdCardManager.h
0x6c0b;SDMA_StatusFileFormatInvalid;No description;11;SD_CARD_MANAGER;bsp_q7s/fs/SdCardManager.h
0x6c0c;SDMA_MountError;No description;12;SD_CARD_MANAGER;bsp_q7s/fs/SdCardManager.h
0x6c0d;SDMA_UnmountError;No description;13;SD_CARD_MANAGER;bsp_q7s/fs/SdCardManager.h
0x6c0e;SDMA_SystemCallError;No description;14;SD_CARD_MANAGER;bsp_q7s/fs/SdCardManager.h
0x6c0f;SDMA_PopenCallError;No description;15;SD_CARD_MANAGER;bsp_q7s/fs/SdCardManager.h
0x6d00;LPH_SdNotReady;No description;0;LOCAL_PARAM_HANDLER;bsp_q7s/memory/LocalParameterHandler.h
0x6e00;PTM_DumpDone;No description;0;PERSISTENT_TM_STORE;mission/tmtc/PersistentTmStore.h
0x6e01;PTM_BusyDumping;No description;1;PERSISTENT_TM_STORE;mission/tmtc/PersistentTmStore.h
0x6f00;TMS_IsBusy;No description;0;TM_SINK;mission/tmtc/DirectTmSinkIF.h
0x6f01;TMS_PartiallyWritten;No description;1;TM_SINK;mission/tmtc/DirectTmSinkIF.h
0x6f02;TMS_NoWriteActive;No description;2;TM_SINK;mission/tmtc/DirectTmSinkIF.h
0x7000;VCS_ChannelDoesNotExist;No description;0;VIRTUAL_CHANNEL;mission/com/VirtualChannel.h
0x7200;SCBU_KeyNotFound;No description;0;SCRATCH_BUFFER;bsp_q7s/memory/scratchApi.h

1 Full ID (hex) Name Description Unique ID Subsytem Name File Path
210 0x27a8 DHI_NoReplyExpected No description 168 DEVICE_HANDLER_IF fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
211 0x27a9 DHI_NonOpTemperature No description 169 DEVICE_HANDLER_IF fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
212 0x27aa DHI_CommandNotImplemented No description 170 DEVICE_HANDLER_IF fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
213 0x27ab DHI_NonOpStateOfCharge No description 171 DEVICE_HANDLER_IF fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
214 0x27b0 DHI_ChecksumError No description 176 DEVICE_HANDLER_IF fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
215 0x27b1 DHI_LengthMissmatch No description 177 DEVICE_HANDLER_IF fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
216 0x27b2 DHI_InvalidData No description 178 DEVICE_HANDLER_IF fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
323 0x3405 DC_NotActive No description 5 DEVICE_COMMUNICATION_IF fsfw/src/fsfw/devicehandlers/DeviceCommunicationIF.h
324 0x3406 DC_TooMuchData No description 6 DEVICE_COMMUNICATION_IF fsfw/src/fsfw/devicehandlers/DeviceCommunicationIF.h
325 0x3407 DC_Busy No description 7 DEVICE_COMMUNICATION_IF fsfw/src/fsfw/devicehandlers/DeviceCommunicationIF.h
326 0x3601 CFDP_InvalidTlvType No description 1 CFDP CFDP_BASE fsfw/src/fsfw/cfdp/definitions.h
327 0x3602 CFDP_InvalidDirectiveField No description 2 CFDP CFDP_BASE fsfw/src/fsfw/cfdp/definitions.h
328 0x3603 CFDP_InvalidPduDatafieldLen No description 3 CFDP CFDP_BASE fsfw/src/fsfw/cfdp/definitions.h
329 0x3604 CFDP_InvalidAckDirectiveFields No description 4 CFDP CFDP_BASE fsfw/src/fsfw/cfdp/definitions.h
330 0x3605 CFDP_MetadataCantParseOptions No description 5 CFDP CFDP_BASE fsfw/src/fsfw/cfdp/definitions.h
331 0x3606 CFDP_NakCantParseOptions No description 6 CFDP CFDP_BASE fsfw/src/fsfw/cfdp/definitions.h
332 0x3607 CFDP_FinishedCantParseFsResponses No description 7 CFDP CFDP_BASE fsfw/src/fsfw/cfdp/definitions.h
333 0x3608 CFDP_FilestoreRequiresSecondFile No description 8 CFDP CFDP_BASE fsfw/src/fsfw/cfdp/definitions.h
334 0x3609 CFDP_FilestoreResponseCantParseFsMessage No description 9 CFDP CFDP_BASE fsfw/src/fsfw/cfdp/definitions.h
335 0x360a CFDP_InvalidPduFormat No description 10 CFDP CFDP_BASE fsfw/src/fsfw/cfdp/definitions.h
336 0x3701 0x3700 TSI_BadTimestamp CFDP_SourceTransactionPending No description 1 0 TIME_STAMPER_IF CFDP_HANDLER fsfw/src/fsfw/timemanager/TimeStampIF.h fsfw/src/fsfw/cfdp/handler/defs.h
337 0x38a1 0x3701 SGP4_InvalidEccentricity CFDP_FileDoesNotExist No description 161 1 SGP4PROPAGATOR_CLASS CFDP_HANDLER fsfw/src/fsfw/coordinates/Sgp4Propagator.h fsfw/src/fsfw/cfdp/handler/defs.h
338 0x38a2 0x3702 SGP4_InvalidMeanMotion CFDP_FileSegmentLenInvalid No description 162 2 SGP4PROPAGATOR_CLASS CFDP_HANDLER fsfw/src/fsfw/coordinates/Sgp4Propagator.h fsfw/src/fsfw/cfdp/handler/defs.h
339 0x38a3 0x3703 SGP4_InvalidPerturbationElements CFDP_SourceNameEmpty No description 163 3 SGP4PROPAGATOR_CLASS CFDP_HANDLER fsfw/src/fsfw/coordinates/Sgp4Propagator.h fsfw/src/fsfw/cfdp/handler/defs.h
340 0x38a4 0x3704 SGP4_InvalidSemiLatusRectum CFDP_DestNameEmpty No description 164 4 SGP4PROPAGATOR_CLASS CFDP_HANDLER fsfw/src/fsfw/coordinates/Sgp4Propagator.h fsfw/src/fsfw/cfdp/handler/defs.h
341 0x38a5 0x3705 SGP4_InvalidEpochElements CFDP_WrongRemoteCfgEntityId No description 165 5 SGP4PROPAGATOR_CLASS CFDP_HANDLER fsfw/src/fsfw/coordinates/Sgp4Propagator.h fsfw/src/fsfw/cfdp/handler/defs.h
342 0x38a6 0x3706 SGP4_SatelliteHasDecayed CFDP_TargetMsgQueueFull No description 166 6 SGP4PROPAGATOR_CLASS CFDP_HANDLER fsfw/src/fsfw/coordinates/Sgp4Propagator.h fsfw/src/fsfw/cfdp/handler/defs.h
343 0x38b1 0x3707 SGP4_TleTooOld CFDP_TmStoreFull No description 177 7 SGP4PROPAGATOR_CLASS CFDP_HANDLER fsfw/src/fsfw/coordinates/Sgp4Propagator.h fsfw/src/fsfw/cfdp/handler/defs.h
344 0x38b2 0x3801 SGP4_TleNotInitialized TSI_BadTimestamp No description 178 1 SGP4PROPAGATOR_CLASS TIME_STAMPER_IF fsfw/src/fsfw/coordinates/Sgp4Propagator.h fsfw/src/fsfw/timemanager/TimeStampIF.h
345 0x3901 0x39a1 MUX_NotEnoughResources SGP4_InvalidEccentricity No description 1 161 MUTEX_IF SGP4PROPAGATOR_CLASS fsfw/src/fsfw/ipc/MutexIF.h fsfw/src/fsfw/coordinates/Sgp4Propagator.h
346 0x3902 0x39a2 MUX_InsufficientMemory SGP4_InvalidMeanMotion No description 2 162 MUTEX_IF SGP4PROPAGATOR_CLASS fsfw/src/fsfw/ipc/MutexIF.h fsfw/src/fsfw/coordinates/Sgp4Propagator.h
347 0x3903 0x39a3 MUX_NoPrivilege SGP4_InvalidPerturbationElements No description 3 163 MUTEX_IF SGP4PROPAGATOR_CLASS fsfw/src/fsfw/ipc/MutexIF.h fsfw/src/fsfw/coordinates/Sgp4Propagator.h
348 0x3904 0x39a4 MUX_WrongAttributeSetting SGP4_InvalidSemiLatusRectum No description 4 164 MUTEX_IF SGP4PROPAGATOR_CLASS fsfw/src/fsfw/ipc/MutexIF.h fsfw/src/fsfw/coordinates/Sgp4Propagator.h
349 0x3905 0x39a5 MUX_MutexAlreadyLocked SGP4_InvalidEpochElements No description 5 165 MUTEX_IF SGP4PROPAGATOR_CLASS fsfw/src/fsfw/ipc/MutexIF.h fsfw/src/fsfw/coordinates/Sgp4Propagator.h
350 0x3906 0x39a6 MUX_MutexNotFound SGP4_SatelliteHasDecayed No description 6 166 MUTEX_IF SGP4PROPAGATOR_CLASS fsfw/src/fsfw/ipc/MutexIF.h fsfw/src/fsfw/coordinates/Sgp4Propagator.h
351 0x3907 0x39b1 MUX_MutexMaxLocks SGP4_TleTooOld No description 7 177 MUTEX_IF SGP4PROPAGATOR_CLASS fsfw/src/fsfw/ipc/MutexIF.h fsfw/src/fsfw/coordinates/Sgp4Propagator.h
352 0x3908 0x39b2 MUX_CurrThreadAlreadyOwnsMutex SGP4_TleNotInitialized No description 8 178 MUTEX_IF SGP4PROPAGATOR_CLASS fsfw/src/fsfw/ipc/MutexIF.h fsfw/src/fsfw/coordinates/Sgp4Propagator.h
353 0x3909 0x3a01 MUX_CurrThreadDoesNotOwnMutex MUX_NotEnoughResources No description 9 1 MUTEX_IF fsfw/src/fsfw/ipc/MutexIF.h
354 0x390a 0x3a02 MUX_MutexTimeout MUX_InsufficientMemory No description 10 2 MUTEX_IF fsfw/src/fsfw/ipc/MutexIF.h
355 0x390b 0x3a03 MUX_MutexInvalidId MUX_NoPrivilege No description 11 3 MUTEX_IF fsfw/src/fsfw/ipc/MutexIF.h
356 0x390c 0x3a04 MUX_MutexDestroyedWhileWaiting MUX_WrongAttributeSetting No description 12 4 MUTEX_IF fsfw/src/fsfw/ipc/MutexIF.h
357 0x3a01 0x3a05 MQI_Empty MUX_MutexAlreadyLocked No description 1 5 MESSAGE_QUEUE_IF MUTEX_IF fsfw/src/fsfw/ipc/MessageQueueIF.h fsfw/src/fsfw/ipc/MutexIF.h
358 0x3a02 0x3a06 MQI_Full MUX_MutexNotFound No space left for more messages No description 2 6 MESSAGE_QUEUE_IF MUTEX_IF fsfw/src/fsfw/ipc/MessageQueueIF.h fsfw/src/fsfw/ipc/MutexIF.h
359 0x3a03 0x3a07 MQI_NoReplyPartner MUX_MutexMaxLocks Returned if a reply method was called without partner No description 3 7 MESSAGE_QUEUE_IF MUTEX_IF fsfw/src/fsfw/ipc/MessageQueueIF.h fsfw/src/fsfw/ipc/MutexIF.h
360 0x3a04 0x3a08 MQI_DestinationInvalid MUX_CurrThreadAlreadyOwnsMutex Returned if the target destination is invalid. No description 4 8 MESSAGE_QUEUE_IF MUTEX_IF fsfw/src/fsfw/ipc/MessageQueueIF.h fsfw/src/fsfw/ipc/MutexIF.h
361 0x3b00 0x3a09 SPH_ConnBroken MUX_CurrThreadDoesNotOwnMutex No description 0 9 SEMAPHORE_IF MUTEX_IF fsfw/src/fsfw/osal/common/TcpTmTcServer.h fsfw/src/fsfw/ipc/MutexIF.h
362 0x3b01 0x3a0a SPH_SemaphoreTimeout MUX_MutexTimeout No description 1 10 SEMAPHORE_IF MUTEX_IF fsfw/src/fsfw/tasks/SemaphoreIF.h fsfw/src/fsfw/ipc/MutexIF.h
363 0x3b02 0x3a0b SPH_SemaphoreNotOwned MUX_MutexInvalidId No description 2 11 SEMAPHORE_IF MUTEX_IF fsfw/src/fsfw/tasks/SemaphoreIF.h fsfw/src/fsfw/ipc/MutexIF.h
364 0x3b03 0x3a0c SPH_SemaphoreInvalid MUX_MutexDestroyedWhileWaiting No description 3 12 SEMAPHORE_IF MUTEX_IF fsfw/src/fsfw/tasks/SemaphoreIF.h fsfw/src/fsfw/ipc/MutexIF.h
365 0x3c00 0x3b01 LPIF_PoolEntryNotFound MQI_Empty No description 0 1 LOCAL_POOL_OWNER_IF MESSAGE_QUEUE_IF fsfw/src/fsfw/datapoollocal/localPoolDefinitions.h fsfw/src/fsfw/ipc/MessageQueueIF.h
366 0x3c01 0x3b02 LPIF_PoolEntryTypeConflict MQI_Full No description No space left for more messages 1 2 LOCAL_POOL_OWNER_IF MESSAGE_QUEUE_IF fsfw/src/fsfw/datapoollocal/localPoolDefinitions.h fsfw/src/fsfw/ipc/MessageQueueIF.h
367 0x3da0 0x3b03 PVA_InvalidReadWriteMode MQI_NoReplyPartner No description Returned if a reply method was called without partner 160 3 POOL_VARIABLE_IF MESSAGE_QUEUE_IF fsfw/src/fsfw/datapool/PoolVariableIF.h fsfw/src/fsfw/ipc/MessageQueueIF.h
368 0x3da1 0x3b04 PVA_InvalidPoolEntry MQI_DestinationInvalid No description Returned if the target destination is invalid. 161 4 POOL_VARIABLE_IF MESSAGE_QUEUE_IF fsfw/src/fsfw/datapool/PoolVariableIF.h fsfw/src/fsfw/ipc/MessageQueueIF.h
369 0x3e00 0x3c01 HKM_QueueOrDestinationInvalid SPH_SemaphoreTimeout No description 0 1 HOUSEKEEPING_MANAGER SEMAPHORE_IF fsfw/src/fsfw/datapoollocal/LocalDataPoolManager.h fsfw/src/fsfw/tasks/SemaphoreIF.h
370 0x3e01 0x3c02 HKM_WrongHkPacketType SPH_SemaphoreNotOwned No description 1 2 HOUSEKEEPING_MANAGER SEMAPHORE_IF fsfw/src/fsfw/datapoollocal/LocalDataPoolManager.h fsfw/src/fsfw/tasks/SemaphoreIF.h
371 0x3e02 0x3c03 HKM_ReportingStatusUnchanged SPH_SemaphoreInvalid No description 2 3 HOUSEKEEPING_MANAGER SEMAPHORE_IF fsfw/src/fsfw/datapoollocal/LocalDataPoolManager.h fsfw/src/fsfw/tasks/SemaphoreIF.h
372 0x3e03 0x3d00 HKM_PeriodicHelperInvalid LPIF_PoolEntryNotFound No description 3 0 HOUSEKEEPING_MANAGER LOCAL_POOL_OWNER_IF fsfw/src/fsfw/datapoollocal/LocalDataPoolManager.h fsfw/src/fsfw/datapoollocal/localPoolDefinitions.h
373 0x3e04 0x3d01 HKM_PoolobjectNotFound LPIF_PoolEntryTypeConflict No description 4 1 HOUSEKEEPING_MANAGER LOCAL_POOL_OWNER_IF fsfw/src/fsfw/datapoollocal/LocalDataPoolManager.h fsfw/src/fsfw/datapoollocal/localPoolDefinitions.h
374 0x3e05 0x3ea0 HKM_DatasetNotFound PVA_InvalidReadWriteMode No description 5 160 HOUSEKEEPING_MANAGER POOL_VARIABLE_IF fsfw/src/fsfw/datapoollocal/LocalDataPoolManager.h fsfw/src/fsfw/datapool/PoolVariableIF.h
375 0x3f01 0x3ea1 DLEE_StreamTooShort PVA_InvalidPoolEntry No description 1 161 DLE_ENCODER POOL_VARIABLE_IF fsfw/src/fsfw/globalfunctions/DleEncoder.h fsfw/src/fsfw/datapool/PoolVariableIF.h
376 0x3f02 0x3f00 DLEE_DecodingError HKM_QueueOrDestinationInvalid No description 2 0 DLE_ENCODER HOUSEKEEPING_MANAGER fsfw/src/fsfw/globalfunctions/DleEncoder.h fsfw/src/fsfw/datapoollocal/LocalDataPoolManager.h
377 0x4201 0x3f01 PUS11_InvalidTypeTimeWindow HKM_WrongHkPacketType No description 1 PUS_SERVICE_11 HOUSEKEEPING_MANAGER fsfw/src/fsfw/pus/Service11TelecommandScheduling.h fsfw/src/fsfw/datapoollocal/LocalDataPoolManager.h
378 0x4202 0x3f02 PUS11_InvalidTimeWindow HKM_ReportingStatusUnchanged No description 2 PUS_SERVICE_11 HOUSEKEEPING_MANAGER fsfw/src/fsfw/pus/Service11TelecommandScheduling.h fsfw/src/fsfw/datapoollocal/LocalDataPoolManager.h
379 0x4203 0x3f03 PUS11_TimeshiftingNotPossible HKM_PeriodicHelperInvalid No description 3 PUS_SERVICE_11 HOUSEKEEPING_MANAGER fsfw/src/fsfw/pus/Service11TelecommandScheduling.h fsfw/src/fsfw/datapoollocal/LocalDataPoolManager.h
380 0x4204 0x3f04 PUS11_InvalidRelativeTime HKM_PoolobjectNotFound No description 4 PUS_SERVICE_11 HOUSEKEEPING_MANAGER fsfw/src/fsfw/pus/Service11TelecommandScheduling.h fsfw/src/fsfw/datapoollocal/LocalDataPoolManager.h
381 0x4205 0x3f05 PUS11_ContainedTcTooSmall HKM_DatasetNotFound No description 5 PUS_SERVICE_11 HOUSEKEEPING_MANAGER fsfw/src/fsfw/pus/Service11TelecommandScheduling.h fsfw/src/fsfw/datapoollocal/LocalDataPoolManager.h
382 0x4206 0x4001 PUS11_ContainedTcCrcMissmatch DLEE_StreamTooShort No description 6 1 PUS_SERVICE_11 DLE_ENCODER fsfw/src/fsfw/pus/Service11TelecommandScheduling.h fsfw/src/fsfw/globalfunctions/DleEncoder.h
383 0x4300 0x4002 FILS_GenericFileError DLEE_DecodingError No description 0 2 FILE_SYSTEM DLE_ENCODER fsfw/src/fsfw/filesystem/HasFileSystemIF.h fsfw/src/fsfw/globalfunctions/DleEncoder.h
384 0x4301 FILS_GenericDirError PUS11_InvalidTypeTimeWindow No description 1 FILE_SYSTEM PUS_SERVICE_11 fsfw/src/fsfw/filesystem/HasFileSystemIF.h fsfw/src/fsfw/pus/Service11TelecommandScheduling.h
385 0x4302 FILS_FilesystemInactive PUS11_InvalidTimeWindow No description 2 FILE_SYSTEM PUS_SERVICE_11 fsfw/src/fsfw/filesystem/HasFileSystemIF.h fsfw/src/fsfw/pus/Service11TelecommandScheduling.h
386 0x4303 FILS_GenericRenameError PUS11_TimeshiftingNotPossible No description 3 FILE_SYSTEM PUS_SERVICE_11 fsfw/src/fsfw/filesystem/HasFileSystemIF.h fsfw/src/fsfw/pus/Service11TelecommandScheduling.h
387 0x4304 FILS_IsBusy PUS11_InvalidRelativeTime No description 4 FILE_SYSTEM PUS_SERVICE_11 fsfw/src/fsfw/filesystem/HasFileSystemIF.h fsfw/src/fsfw/pus/Service11TelecommandScheduling.h
388 0x4305 FILS_InvalidParameters PUS11_ContainedTcTooSmall No description 5 FILE_SYSTEM PUS_SERVICE_11 fsfw/src/fsfw/filesystem/HasFileSystemIF.h fsfw/src/fsfw/pus/Service11TelecommandScheduling.h
389 0x430a 0x4306 FILS_FileDoesNotExist PUS11_ContainedTcCrcMissmatch No description 10 6 FILE_SYSTEM PUS_SERVICE_11 fsfw/src/fsfw/filesystem/HasFileSystemIF.h fsfw/src/fsfw/pus/Service11TelecommandScheduling.h
390 0x430b 0x4400 FILS_FileAlreadyExists FILS_GenericFileError No description 11 0 FILE_SYSTEM fsfw/src/fsfw/filesystem/HasFileSystemIF.h
391 0x430c 0x4401 FILS_NotAFile FILS_GenericDirError No description 12 1 FILE_SYSTEM fsfw/src/fsfw/filesystem/HasFileSystemIF.h
392 0x430d 0x4402 FILS_FileLocked FILS_FilesystemInactive No description 13 2 FILE_SYSTEM fsfw/src/fsfw/filesystem/HasFileSystemIF.h
393 0x430e 0x4403 FILS_PermissionDenied FILS_GenericRenameError No description 14 3 FILE_SYSTEM fsfw/src/fsfw/filesystem/HasFileSystemIF.h
394 0x4315 0x4404 FILS_DirectoryDoesNotExist FILS_IsBusy No description 21 4 FILE_SYSTEM fsfw/src/fsfw/filesystem/HasFileSystemIF.h
395 0x4316 0x4405 FILS_DirectoryAlreadyExists FILS_InvalidParameters No description 22 5 FILE_SYSTEM fsfw/src/fsfw/filesystem/HasFileSystemIF.h
396 0x4317 0x440a FILS_NotADirectory FILS_FileDoesNotExist No description 23 10 FILE_SYSTEM fsfw/src/fsfw/filesystem/HasFileSystemIF.h
397 0x4318 0x440b FILS_DirectoryNotEmpty FILS_FileAlreadyExists No description 24 11 FILE_SYSTEM fsfw/src/fsfw/filesystem/HasFileSystemIF.h
398 0x431e 0x440c FILS_SequencePacketMissingWrite FILS_NotAFile No description 30 12 FILE_SYSTEM fsfw/src/fsfw/filesystem/HasFileSystemIF.h
399 0x431f 0x440d FILS_SequencePacketMissingRead FILS_FileLocked No description 31 13 FILE_SYSTEM fsfw/src/fsfw/filesystem/HasFileSystemIF.h
400 0x4400 0x440e UXOS_ExecutionFinished FILS_PermissionDenied Execution of the current command has finished No description 0 14 LINUX_OSAL FILE_SYSTEM fsfw/src/fsfw_hal/linux/CommandExecutor.h fsfw/src/fsfw/filesystem/HasFileSystemIF.h
401 0x4401 0x4415 UXOS_CommandPending FILS_DirectoryDoesNotExist Command is pending. This will also be returned if the user tries to load another command but a command is still pending No description 1 21 LINUX_OSAL FILE_SYSTEM fsfw/src/fsfw_hal/linux/CommandExecutor.h fsfw/src/fsfw/filesystem/HasFileSystemIF.h
402 0x4402 0x4416 UXOS_BytesRead FILS_DirectoryAlreadyExists Some bytes have been read from the executing process No description 2 22 LINUX_OSAL FILE_SYSTEM fsfw/src/fsfw_hal/linux/CommandExecutor.h fsfw/src/fsfw/filesystem/HasFileSystemIF.h
403 0x4403 0x4417 UXOS_CommandError FILS_NotADirectory Command execution failed No description 3 23 LINUX_OSAL FILE_SYSTEM fsfw/src/fsfw_hal/linux/CommandExecutor.h fsfw/src/fsfw/filesystem/HasFileSystemIF.h
404 0x4404 0x4418 UXOS_NoCommandLoadedOrPending FILS_DirectoryNotEmpty No description 4 24 LINUX_OSAL FILE_SYSTEM fsfw/src/fsfw_hal/linux/CommandExecutor.h fsfw/src/fsfw/filesystem/HasFileSystemIF.h
405 0x4406 0x441e UXOS_PcloseCallError FILS_SequencePacketMissingWrite No description 6 30 LINUX_OSAL FILE_SYSTEM fsfw/src/fsfw_hal/linux/CommandExecutor.h fsfw/src/fsfw/filesystem/HasFileSystemIF.h
406 0x4500 0x441f HSPI_OpeningFileFailed FILS_SequencePacketMissingRead No description 0 31 HAL_SPI FILE_SYSTEM fsfw/src/fsfw_hal/common/spi/spiCommon.h fsfw/src/fsfw/filesystem/HasFileSystemIF.h
407 0x4501 0x4500 HSPI_FullDuplexTransferFailed UXOS_ExecutionFinished No description Execution of the current command has finished 1 0 HAL_SPI LINUX_OSAL fsfw/src/fsfw_hal/common/spi/spiCommon.h fsfw/src/fsfw_hal/linux/CommandExecutor.h
408 0x4502 0x4501 HSPI_HalfDuplexTransferFailed UXOS_CommandPending No description Command is pending. This will also be returned if the user tries to load another command but a command is still pending 2 1 HAL_SPI LINUX_OSAL fsfw/src/fsfw_hal/common/spi/spiCommon.h fsfw/src/fsfw_hal/linux/CommandExecutor.h
409 0x4503 0x4502 HSPI_Timeout UXOS_BytesRead No description Some bytes have been read from the executing process 3 2 HAL_SPI LINUX_OSAL fsfw/src/fsfw_hal/common/spi/spiCommon.h fsfw/src/fsfw_hal/linux/CommandExecutor.h
410 0x4504 0x4503 HSPI_Busy UXOS_CommandError No description Command execution failed 4 3 HAL_SPI LINUX_OSAL fsfw/src/fsfw_hal/common/spi/spiCommon.h fsfw/src/fsfw_hal/linux/CommandExecutor.h
411 0x4505 0x4504 HSPI_GenericError UXOS_NoCommandLoadedOrPending No description 5 4 HAL_SPI LINUX_OSAL fsfw/src/fsfw_hal/common/spi/spiCommon.h fsfw/src/fsfw_hal/linux/CommandExecutor.h
412 0x4601 0x4506 HURT_UartReadFailure UXOS_PcloseCallError No description 1 6 HAL_UART LINUX_OSAL fsfw/src/fsfw_hal/linux/serial/SerialComIF.h fsfw/src/fsfw_hal/linux/CommandExecutor.h
413 0x4602 0x4600 HURT_UartReadSizeMissmatch HSPI_OpeningFileFailed No description 2 0 HAL_UART HAL_SPI fsfw/src/fsfw_hal/linux/serial/SerialComIF.h fsfw/src/fsfw_hal/common/spi/spiCommon.h
414 0x4603 0x4601 HURT_UartRxBufferTooSmall HSPI_FullDuplexTransferFailed No description 3 1 HAL_UART HAL_SPI fsfw/src/fsfw_hal/linux/serial/SerialComIF.h fsfw/src/fsfw_hal/common/spi/spiCommon.h
415 0x4801 0x4602 HGIO_UnknownGpioId HSPI_HalfDuplexTransferFailed No description 1 2 HAL_GPIO HAL_SPI fsfw/src/fsfw_hal/linux/gpio/LinuxLibgpioIF.h fsfw/src/fsfw_hal/common/spi/spiCommon.h
416 0x4802 0x4603 HGIO_DriveGpioFailure HSPI_Timeout No description 2 3 HAL_GPIO HAL_SPI fsfw/src/fsfw_hal/linux/gpio/LinuxLibgpioIF.h fsfw/src/fsfw_hal/common/spi/spiCommon.h
417 0x4803 0x4604 HGIO_GpioTypeFailure HSPI_Busy No description 3 4 HAL_GPIO HAL_SPI fsfw/src/fsfw_hal/linux/gpio/LinuxLibgpioIF.h fsfw/src/fsfw_hal/common/spi/spiCommon.h
418 0x4804 0x4605 HGIO_GpioInvalidInstance HSPI_GenericError No description 4 5 HAL_GPIO HAL_SPI fsfw/src/fsfw_hal/linux/gpio/LinuxLibgpioIF.h fsfw/src/fsfw_hal/common/spi/spiCommon.h
419 0x4805 0x4701 HGIO_GpioDuplicateDetected HURT_UartReadFailure No description 5 1 HAL_GPIO HAL_UART fsfw/src/fsfw_hal/linux/gpio/LinuxLibgpioIF.h fsfw/src/fsfw_hal/linux/serial/SerialComIF.h
420 0x4806 0x4702 HGIO_GpioInitFailed HURT_UartReadSizeMissmatch No description 6 2 HAL_GPIO HAL_UART fsfw/src/fsfw_hal/linux/gpio/LinuxLibgpioIF.h fsfw/src/fsfw_hal/linux/serial/SerialComIF.h
421 0x4807 0x4703 HGIO_GpioGetValueFailed HURT_UartRxBufferTooSmall No description 7 3 HAL_GPIO HAL_UART fsfw/src/fsfw_hal/linux/gpio/LinuxLibgpioIF.h fsfw/src/fsfw_hal/linux/serial/SerialComIF.h
422 0x4c00 0x4901 SPPA_NoPacketFound HGIO_UnknownGpioId No description 0 1 SPACE_PACKET_PARSER HAL_GPIO fsfw/src/fsfw/tmtcservices/SpacePacketParser.h fsfw/src/fsfw_hal/linux/gpio/LinuxLibgpioIF.h
423 0x4c01 0x4902 SPPA_SplitPacket HGIO_DriveGpioFailure No description 1 2 SPACE_PACKET_PARSER HAL_GPIO fsfw/src/fsfw/tmtcservices/SpacePacketParser.h fsfw/src/fsfw_hal/linux/gpio/LinuxLibgpioIF.h
424 0x4fa1 0x4903 HEATER_CommandNotSupported HGIO_GpioTypeFailure No description 161 3 HEATER_HANDLER HAL_GPIO mission/tcs/HeaterHandler.h fsfw/src/fsfw_hal/linux/gpio/LinuxLibgpioIF.h
425 0x4fa2 0x4904 HEATER_InitFailed HGIO_GpioInvalidInstance No description 162 4 HEATER_HANDLER HAL_GPIO mission/tcs/HeaterHandler.h fsfw/src/fsfw_hal/linux/gpio/LinuxLibgpioIF.h
426 0x4fa3 0x4905 HEATER_InvalidSwitchNr HGIO_GpioDuplicateDetected No description 163 5 HEATER_HANDLER HAL_GPIO mission/tcs/HeaterHandler.h fsfw/src/fsfw_hal/linux/gpio/LinuxLibgpioIF.h
427 0x4fa4 0x4906 HEATER_MainSwitchSetTimeout HGIO_GpioInitFailed No description 164 6 HEATER_HANDLER HAL_GPIO mission/tcs/HeaterHandler.h fsfw/src/fsfw_hal/linux/gpio/LinuxLibgpioIF.h
428 0x4fa5 0x4907 HEATER_CommandAlreadyWaiting HGIO_GpioGetValueFailed No description 165 7 HEATER_HANDLER HAL_GPIO mission/tcs/HeaterHandler.h fsfw/src/fsfw_hal/linux/gpio/LinuxLibgpioIF.h
429 0x50a0 0x4d00 SYRLINKS_CrcFailure SPPA_NoPacketFound No description 160 0 SYRLINKS_HANDLER SPACE_PACKET_PARSER mission/com/SyrlinksHandler.h fsfw/src/fsfw/tmtcservices/SpacePacketParser.h
430 0x50a1 0x4d01 SYRLINKS_UartFraminOrParityErrorAck SPPA_SplitPacket No description 161 1 SYRLINKS_HANDLER SPACE_PACKET_PARSER mission/com/SyrlinksHandler.h fsfw/src/fsfw/tmtcservices/SpacePacketParser.h
431 0x50a2 0x50a1 SYRLINKS_BadCharacterAck HEATER_CommandNotSupported No description 162 161 SYRLINKS_HANDLER HEATER_HANDLER mission/com/SyrlinksHandler.h mission/tcs/HeaterHandler.h
432 0x50a3 0x50a2 SYRLINKS_BadParameterValueAck HEATER_InitFailed No description 163 162 SYRLINKS_HANDLER HEATER_HANDLER mission/com/SyrlinksHandler.h mission/tcs/HeaterHandler.h
433 0x50a4 0x50a3 SYRLINKS_BadEndOfFrameAck HEATER_InvalidSwitchNr No description 164 163 SYRLINKS_HANDLER HEATER_HANDLER mission/com/SyrlinksHandler.h mission/tcs/HeaterHandler.h
434 0x50a5 0x50a4 SYRLINKS_UnknownCommandIdAck HEATER_MainSwitchSetTimeout No description 165 164 SYRLINKS_HANDLER HEATER_HANDLER mission/com/SyrlinksHandler.h mission/tcs/HeaterHandler.h
435 0x50a6 0x50a5 SYRLINKS_BadCrcAck HEATER_CommandAlreadyWaiting No description 166 165 SYRLINKS_HANDLER HEATER_HANDLER mission/com/SyrlinksHandler.h mission/tcs/HeaterHandler.h
436 0x50a7 0x51a0 SYRLINKS_ReplyWrongSize SYRLINKS_CrcFailure No description 167 160 SYRLINKS_HANDLER mission/com/SyrlinksHandler.h
437 0x50a8 0x51a1 SYRLINKS_MissingStartFrameCharacter SYRLINKS_UartFraminOrParityErrorAck No description 168 161 SYRLINKS_HANDLER mission/com/SyrlinksHandler.h
438 0x5100 0x51a2 IMTQ_InvalidCommandCode SYRLINKS_BadCharacterAck No description 0 162 IMTQ_HANDLER SYRLINKS_HANDLER mission/acs/imtqHelpers.h mission/com/SyrlinksHandler.h
439 0x5101 0x51a3 IMTQ_MgmMeasurementLowLevelError SYRLINKS_BadParameterValueAck No description 1 163 IMTQ_HANDLER SYRLINKS_HANDLER mission/acs/imtqHelpers.h mission/com/SyrlinksHandler.h
440 0x5102 0x51a4 IMTQ_ActuateCmdLowLevelError SYRLINKS_BadEndOfFrameAck No description 2 164 IMTQ_HANDLER SYRLINKS_HANDLER mission/acs/imtqHelpers.h mission/com/SyrlinksHandler.h
441 0x5103 0x51a5 IMTQ_ParameterMissing SYRLINKS_UnknownCommandIdAck No description 3 165 IMTQ_HANDLER SYRLINKS_HANDLER mission/acs/imtqHelpers.h mission/com/SyrlinksHandler.h
442 0x5104 0x51a6 IMTQ_ParameterInvalid SYRLINKS_BadCrcAck No description 4 166 IMTQ_HANDLER SYRLINKS_HANDLER mission/acs/imtqHelpers.h mission/com/SyrlinksHandler.h
443 0x5105 0x51a7 IMTQ_CcUnavailable SYRLINKS_ReplyWrongSize No description 5 167 IMTQ_HANDLER SYRLINKS_HANDLER mission/acs/imtqHelpers.h mission/com/SyrlinksHandler.h
444 0x5106 0x51a8 IMTQ_InternalProcessingError SYRLINKS_MissingStartFrameCharacter No description 6 168 IMTQ_HANDLER SYRLINKS_HANDLER mission/acs/imtqHelpers.h mission/com/SyrlinksHandler.h
445 0x5107 0x5200 IMTQ_RejectedWithoutReason IMTQ_InvalidCommandCode No description 7 0 IMTQ_HANDLER mission/acs/imtqHelpers.h
446 0x5108 0x5201 IMTQ_CmdErrUnknown IMTQ_MgmMeasurementLowLevelError No description 8 1 IMTQ_HANDLER mission/acs/imtqHelpers.h
447 0x5109 0x5202 IMTQ_StartupCfgError IMTQ_ActuateCmdLowLevelError No description 9 2 IMTQ_HANDLER mission/acs/imtqHelpers.h
448 0x510a 0x5203 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. No description 10 3 IMTQ_HANDLER mission/acs/imtqHelpers.h
449 0x52b0 0x5204 RWHA_SpiWriteFailure IMTQ_ParameterInvalid No description 176 4 RW_HANDLER IMTQ_HANDLER mission/acs/rwHelpers.h mission/acs/imtqHelpers.h
450 0x52b1 0x5205 RWHA_SpiReadFailure IMTQ_CcUnavailable Used by the spi send function to tell a failing read call No description 177 5 RW_HANDLER IMTQ_HANDLER mission/acs/rwHelpers.h mission/acs/imtqHelpers.h
451 0x52b2 0x5206 RWHA_MissingStartSign IMTQ_InternalProcessingError Can be used by the HDLC decoding mechanism to inform about a missing start sign 0x7E No description 178 6 RW_HANDLER IMTQ_HANDLER mission/acs/rwHelpers.h mission/acs/imtqHelpers.h
452 0x52b3 0x5207 RWHA_InvalidSubstitute IMTQ_RejectedWithoutReason Can be used by the HDLC decoding mechanism to inform about an invalid substitution combination No description 179 7 RW_HANDLER IMTQ_HANDLER mission/acs/rwHelpers.h mission/acs/imtqHelpers.h
453 0x52b4 0x5208 RWHA_MissingEndSign IMTQ_CmdErrUnknown HDLC decoding mechanism never receives the end sign 0x7E No description 180 8 RW_HANDLER IMTQ_HANDLER mission/acs/rwHelpers.h mission/acs/imtqHelpers.h
454 0x52b5 0x5209 RWHA_NoReply IMTQ_StartupCfgError Reaction wheel only responds with empty frames. No description 181 9 RW_HANDLER IMTQ_HANDLER mission/acs/rwHelpers.h mission/acs/imtqHelpers.h
455 0x52b6 0x520a RWHA_NoStartMarker IMTQ_UnexpectedSelfTestReply Expected a start marker as first byte The status reply to a self test command was received but no self test command has been sent. This should normally never happen. 182 10 RW_HANDLER IMTQ_HANDLER mission/acs/rwHelpers.h mission/acs/imtqHelpers.h
456 0x52b7 0x53b0 RWHA_SpiReadTimeout RWHA_SpiWriteFailure Timeout when reading reply No description 183 176 RW_HANDLER mission/acs/rwHelpers.h
457 0x53a0 0x53b1 STRH_TemperatureReqFailed RWHA_SpiReadFailure Status in temperature reply signals error Used by the spi send function to tell a failing read call 160 177 STR_HANDLER RW_HANDLER mission/acs/str/StarTrackerHandler.h mission/acs/rwHelpers.h
458 0x53a1 0x53b2 STRH_PingFailed RWHA_MissingStartSign Ping command failed Can be used by the HDLC decoding mechanism to inform about a missing start sign 0x7E 161 178 STR_HANDLER RW_HANDLER mission/acs/str/StarTrackerHandler.h mission/acs/rwHelpers.h
459 0x53a2 0x53b3 STRH_VersionReqFailed RWHA_InvalidSubstitute Status in version reply signals error Can be used by the HDLC decoding mechanism to inform about an invalid substitution combination 162 179 STR_HANDLER RW_HANDLER mission/acs/str/StarTrackerHandler.h mission/acs/rwHelpers.h
460 0x53a3 0x53b4 STRH_InterfaceReqFailed RWHA_MissingEndSign Status in interface reply signals error HDLC decoding mechanism never receives the end sign 0x7E 163 180 STR_HANDLER RW_HANDLER mission/acs/str/StarTrackerHandler.h mission/acs/rwHelpers.h
461 0x53a4 0x53b5 STRH_PowerReqFailed RWHA_NoReply Status in power reply signals error Reaction wheel only responds with empty frames. 164 181 STR_HANDLER RW_HANDLER mission/acs/str/StarTrackerHandler.h mission/acs/rwHelpers.h
462 0x53a5 0x53b6 STRH_SetParamFailed RWHA_NoStartMarker Status of reply to parameter set command signals error Expected a start marker as first byte 165 182 STR_HANDLER RW_HANDLER mission/acs/str/StarTrackerHandler.h mission/acs/rwHelpers.h
463 0x53a6 0x53b7 STRH_ActionFailed RWHA_SpiReadTimeout Status of reply to action command signals error Timeout when reading reply 166 183 STR_HANDLER RW_HANDLER mission/acs/str/StarTrackerHandler.h mission/acs/rwHelpers.h
464 0x53a7 0x54a0 STRH_FilePathTooLong STRH_TemperatureReqFailed Received invalid path string. Exceeds allowed length Status in temperature reply signals error 167 160 STR_HANDLER mission/acs/str/StarTrackerHandler.h
465 0x53a8 0x54a1 STRH_FilenameTooLong STRH_PingFailed Name of file received with command is too long Ping command failed 168 161 STR_HANDLER mission/acs/str/StarTrackerHandler.h
466 0x53a9 0x54a2 STRH_InvalidProgram STRH_VersionReqFailed Received version reply with invalid program ID Status in version reply signals error 169 162 STR_HANDLER mission/acs/str/StarTrackerHandler.h
467 0x53aa 0x54a3 STRH_ReplyError STRH_InterfaceReqFailed Status field reply signals error Status in interface reply signals error 170 163 STR_HANDLER mission/acs/str/StarTrackerHandler.h
468 0x53ab 0x54a4 STRH_CommandTooShort STRH_PowerReqFailed Received command which is too short (some data is missing for proper execution) Status in power reply signals error 171 164 STR_HANDLER mission/acs/str/StarTrackerHandler.h
469 0x53ac 0x54a5 STRH_InvalidLength STRH_SetParamFailed Received command with invalid length (too few or too many parameters) Status of reply to parameter set command signals error 172 165 STR_HANDLER mission/acs/str/StarTrackerHandler.h
470 0x53ad 0x54a6 STRH_RegionMismatch STRH_ActionFailed Region mismatch between send and received data Status of reply to action command signals error 173 166 STR_HANDLER mission/acs/str/StarTrackerHandler.h
471 0x53ae 0x54a7 STRH_AddressMismatch STRH_FilePathTooLong Address mismatch between send and received data Received invalid path string. Exceeds allowed length 174 167 STR_HANDLER mission/acs/str/StarTrackerHandler.h
472 0x53af 0x54a8 STRH_LengthMismatch STRH_FilenameTooLong Length field mismatch between send and received data Name of file received with command is too long 175 168 STR_HANDLER mission/acs/str/StarTrackerHandler.h
473 0x53b0 0x54a9 STRH_FileNotExists STRH_InvalidProgram Specified file does not exist Received version reply with invalid program ID 176 169 STR_HANDLER mission/acs/str/StarTrackerHandler.h
474 0x53b1 0x54aa STRH_InvalidType STRH_ReplyError Download blob pixel command has invalid type field Status field reply signals error 177 170 STR_HANDLER mission/acs/str/StarTrackerHandler.h
475 0x53b2 0x54ab STRH_InvalidId STRH_CommandTooShort Received FPGA action command with invalid ID Received command which is too short (some data is missing for proper execution) 178 171 STR_HANDLER mission/acs/str/StarTrackerHandler.h
476 0x53b3 0x54ac STRH_ReplyTooShort STRH_InvalidLength Received reply is too short Received command with invalid length (too few or too many parameters) 179 172 STR_HANDLER mission/acs/str/StarTrackerHandler.h
477 0x53b4 0x54ad STRH_CrcFailure STRH_RegionMismatch Received reply with invalid CRC Region mismatch between send and received data 180 173 STR_HANDLER mission/acs/str/StarTrackerHandler.h
478 0x53b5 0x54ae STRH_StrHelperExecuting STRH_AddressMismatch Star tracker handler currently executing a command and using the communication interface Address mismatch between send and received data 181 174 STR_HANDLER mission/acs/str/StarTrackerHandler.h
479 0x53b6 0x54af STRH_StartrackerAlreadyBooted STRH_LengthMismatch Star tracker is already in firmware mode Length field mismatch between send and received data 182 175 STR_HANDLER mission/acs/str/StarTrackerHandler.h
480 0x53b7 0x54b0 STRH_StartrackerNotRunningFirmware STRH_FileNotExists Star tracker must be in firmware mode to run this command Specified file does not exist 183 176 STR_HANDLER mission/acs/str/StarTrackerHandler.h
481 0x53b8 0x54b1 STRH_StartrackerNotRunningBootloader STRH_InvalidType Star tracker must be in bootloader mode to run this command Download blob pixel command has invalid type field 184 177 STR_HANDLER mission/acs/str/StarTrackerHandler.h
482 0x54e0 0x54b2 DWLPWRON_InvalidMode STRH_InvalidId Received command has invalid JESD mode (valid modes are 0 - 5) Received FPGA action command with invalid ID 224 178 DWLPWRON_CMD STR_HANDLER linux/payload/plocMpsocHelpers.h mission/acs/str/StarTrackerHandler.h
483 0x54e1 0x54b3 DWLPWRON_InvalidLaneRate STRH_ReplyTooShort Received command has invalid lane rate (valid lane rate are 0 - 9) Received reply is too short 225 179 DWLPWRON_CMD STR_HANDLER linux/payload/plocMpsocHelpers.h mission/acs/str/StarTrackerHandler.h
484 0x5700 0x54b4 PLSPVhLP_RequestDone STRH_CrcFailure No description Received reply with invalid CRC 0 180 PLOC_SUPV_HELPER STR_HANDLER linux/payload/PlocSupvUartMan.h mission/acs/str/StarTrackerHandler.h
485 0x5701 0x54b5 PLSPVhLP_NoPacketFound STRH_StrHelperExecuting No description Star tracker handler currently executing a command and using the communication interface 1 181 PLOC_SUPV_HELPER STR_HANDLER linux/payload/PlocSupvUartMan.h mission/acs/str/StarTrackerHandler.h
486 0x5702 0x54b6 PLSPVhLP_DecodeBufTooSmall STRH_StartrackerAlreadyBooted No description Star tracker is already in firmware mode 2 182 PLOC_SUPV_HELPER STR_HANDLER linux/payload/PlocSupvUartMan.h mission/acs/str/StarTrackerHandler.h
487 0x5703 0x54b7 PLSPVhLP_PossiblePacketLossConsecutiveStart STRH_StartrackerNotRunningFirmware No description Star tracker must be in firmware mode to run this command 3 183 PLOC_SUPV_HELPER STR_HANDLER linux/payload/PlocSupvUartMan.h mission/acs/str/StarTrackerHandler.h
488 0x5704 0x54b8 PLSPVhLP_PossiblePacketLossConsecutiveEnd STRH_StartrackerNotRunningBootloader No description Star tracker must be in bootloader mode to run this command 4 184 PLOC_SUPV_HELPER STR_HANDLER linux/payload/PlocSupvUartMan.h mission/acs/str/StarTrackerHandler.h
489 0x5705 0x55e0 PLSPVhLP_HdlcError DWLPWRON_InvalidMode No description Received command has invalid JESD mode (valid modes are 0 - 5) 5 224 PLOC_SUPV_HELPER DWLPWRON_CMD linux/payload/PlocSupvUartMan.h linux/payload/plocMpsocHelpers.h
490 0x57a0 0x55e1 PLSPVhLP_FileClosedAccidentally DWLPWRON_InvalidLaneRate File accidentally close Received command has invalid lane rate (valid lane rate are 0 - 9) 160 225 PLOC_SUPV_HELPER DWLPWRON_CMD linux/payload/PlocSupvUartMan.h linux/payload/plocMpsocHelpers.h
491 0x57a1 0x5800 PLSPVhLP_ProcessTerminated PLSPVhLP_RequestDone Process has been terminated by command No description 161 0 PLOC_SUPV_HELPER linux/payload/PlocSupvUartMan.h
492 0x57a2 0x5801 PLSPVhLP_PathNotExists PLSPVhLP_NoPacketFound Received command with invalid pathname No description 162 1 PLOC_SUPV_HELPER linux/payload/PlocSupvUartMan.h
493 0x57a3 0x5802 PLSPVhLP_EventBufferReplyInvalidApid PLSPVhLP_DecodeBufTooSmall Expected event buffer TM but received space packet with other APID No description 163 2 PLOC_SUPV_HELPER linux/payload/PlocSupvUartMan.h
494 0x58a0 0x5803 SUSS_InvalidSpeed PLSPVhLP_PossiblePacketLossConsecutiveStart Action Message with invalid speed was received. Valid speeds must be in the range of [-65000, 1000] or [1000, 65000] No description 160 3 SUS_HANDLER PLOC_SUPV_HELPER mission/acs/RwHandler.h linux/payload/PlocSupvUartMan.h
495 0x58a1 0x5804 SUSS_InvalidRampTime PLSPVhLP_PossiblePacketLossConsecutiveEnd Action Message with invalid ramp time was received. No description 161 4 SUS_HANDLER PLOC_SUPV_HELPER mission/acs/RwHandler.h linux/payload/PlocSupvUartMan.h
496 0x58a2 0x5805 SUSS_SetSpeedCommandInvalidLength PLSPVhLP_HdlcError Received set speed command has invalid length. Should be 6. No description 162 5 SUS_HANDLER PLOC_SUPV_HELPER mission/acs/RwHandler.h linux/payload/PlocSupvUartMan.h
497 0x58a3 0x58a0 SUSS_ExecutionFailed PLSPVhLP_FileClosedAccidentally Command execution failed File accidentally close 163 160 SUS_HANDLER PLOC_SUPV_HELPER mission/acs/RwHandler.h linux/payload/PlocSupvUartMan.h
498 0x58a4 0x58a1 SUSS_CrcError PLSPVhLP_ProcessTerminated Reaction wheel reply has invalid crc Process has been terminated by command 164 161 SUS_HANDLER PLOC_SUPV_HELPER mission/acs/RwHandler.h linux/payload/PlocSupvUartMan.h
499 0x58a5 0x58a2 SUSS_ValueNotRead PLSPVhLP_PathNotExists No description Received command with invalid pathname 165 162 SUS_HANDLER PLOC_SUPV_HELPER mission/acs/RwHandler.h linux/payload/PlocSupvUartMan.h
500 0x59a0 0x58a3 IPCI_PapbBusy PLSPVhLP_EventBufferReplyInvalidApid No description Expected event buffer TM but received space packet with other APID 160 163 CCSDS_IP_CORE_BRIDGE PLOC_SUPV_HELPER linux/ipcore/PapbVcInterface.h linux/payload/PlocSupvUartMan.h
501 0x5aa0 0x59a0 PTME_UnknownVcId SUSS_InvalidSpeed No description Action Message with invalid speed was received. Valid speeds must be in the range of [-65000, 1000] or [1000, 65000] 160 PTME SUS_HANDLER linux/ipcore/Ptme.h mission/acs/RwHandler.h
502 0x5c01 0x59a1 STRHLP_SdNotMounted SUSS_InvalidRampTime SD card specified in path string not mounted Action Message with invalid ramp time was received. 1 161 STR_HELPER SUS_HANDLER linux/acs/StrComHandler.h mission/acs/RwHandler.h
503 0x5c02 0x59a2 STRHLP_FileNotExists SUSS_SetSpeedCommandInvalidLength Specified file does not exist on filesystem Received set speed command has invalid length. Should be 6. 2 162 STR_HELPER SUS_HANDLER linux/acs/StrComHandler.h mission/acs/RwHandler.h
504 0x5c03 0x59a3 STRHLP_PathNotExists SUSS_ExecutionFailed Specified path does not exist Command execution failed 3 163 STR_HELPER SUS_HANDLER linux/acs/StrComHandler.h mission/acs/RwHandler.h
505 0x5c04 0x59a4 STRHLP_FileCreationFailed SUSS_CrcError Failed to create download image or read flash file Reaction wheel reply has invalid crc 4 164 STR_HELPER SUS_HANDLER linux/acs/StrComHandler.h mission/acs/RwHandler.h
506 0x5c05 0x59a5 STRHLP_RegionMismatch SUSS_ValueNotRead Region in flash write/read reply does not match expected region No description 5 165 STR_HELPER SUS_HANDLER linux/acs/StrComHandler.h mission/acs/RwHandler.h
507 0x5c06 0x5aa0 STRHLP_AddressMismatch IPCI_PapbBusy Address in flash write/read reply does not match expected address No description 6 160 STR_HELPER CCSDS_IP_CORE_BRIDGE linux/acs/StrComHandler.h linux/ipcore/PapbVcInterface.h
508 0x5c07 0x5ba0 STRHLP_LengthMismatch PTME_UnknownVcId Length in flash write/read reply does not match expected length No description 7 160 STR_HELPER PTME linux/acs/StrComHandler.h linux/ipcore/Ptme.h
509 0x5c08 0x5d01 STRHLP_StatusError STRHLP_SdNotMounted Status field in reply signals error SD card specified in path string not mounted 8 1 STR_HELPER linux/acs/StrComHandler.h
510 0x5c09 0x5d02 STRHLP_InvalidTypeId STRHLP_FileNotExists Reply has invalid type ID (should be of action reply type) Specified file does not exist on filesystem 9 2 STR_HELPER linux/acs/StrComHandler.h
511 0x5c0a 0x5d03 STRHLP_ReceptionTimeout STRHLP_PathNotExists No description Specified path does not exist 10 3 STR_HELPER linux/acs/StrComHandler.h
512 0x5c0b 0x5d04 STRHLP_DecodingError STRHLP_FileCreationFailed No description Failed to create download image or read flash file 11 4 STR_HELPER linux/acs/StrComHandler.h
513 0x5d00 0x5d05 GOMS_PacketTooLong STRHLP_RegionMismatch No description Region in flash write/read reply does not match expected region 0 5 GOM_SPACE_HANDLER STR_HELPER mission/power/GomspaceDeviceHandler.h linux/acs/StrComHandler.h
514 0x5d01 0x5d06 GOMS_InvalidTableId STRHLP_AddressMismatch No description Address in flash write/read reply does not match expected address 1 6 GOM_SPACE_HANDLER STR_HELPER mission/power/GomspaceDeviceHandler.h linux/acs/StrComHandler.h
515 0x5d02 0x5d07 GOMS_InvalidAddress STRHLP_LengthMismatch No description Length in flash write/read reply does not match expected length 2 7 GOM_SPACE_HANDLER STR_HELPER mission/power/GomspaceDeviceHandler.h linux/acs/StrComHandler.h
516 0x5d03 0x5d08 GOMS_InvalidParamSize STRHLP_StatusError No description Status field in reply signals error 3 8 GOM_SPACE_HANDLER STR_HELPER mission/power/GomspaceDeviceHandler.h linux/acs/StrComHandler.h
517 0x5d04 0x5d09 GOMS_InvalidPayloadSize STRHLP_InvalidTypeId No description Reply has invalid type ID (should be of action reply type) 4 9 GOM_SPACE_HANDLER STR_HELPER mission/power/GomspaceDeviceHandler.h linux/acs/StrComHandler.h
518 0x5d05 0x5d0a GOMS_UnknownReplyId STRHLP_ReceptionTimeout No description 5 10 GOM_SPACE_HANDLER STR_HELPER mission/power/GomspaceDeviceHandler.h linux/acs/StrComHandler.h
519 0x5ea0 0x5d0b PLMEMDUMP_MramAddressTooHigh STRHLP_DecodingError The capacity of the MRAM amounts to 512 kB. Thus the maximum address must not be higher than 0x7d000. No description 160 11 PLOC_MEMORY_DUMPER STR_HELPER linux/payload/PlocMemoryDumper.h linux/acs/StrComHandler.h
520 0x5ea1 0x5e00 PLMEMDUMP_MramInvalidAddressCombination GOMS_PacketTooLong The specified end address is lower than the start address No description 161 0 PLOC_MEMORY_DUMPER GOM_SPACE_HANDLER linux/payload/PlocMemoryDumper.h mission/power/GomspaceDeviceHandler.h
521 0x5fa0 0x5e01 PDEC_AbandonedCltuRetval GOMS_InvalidTableId No description 160 1 PDEC_HANDLER GOM_SPACE_HANDLER linux/ipcore/pdec.h mission/power/GomspaceDeviceHandler.h
522 0x5fa1 0x5e02 PDEC_FrameDirtyRetval GOMS_InvalidAddress No description 161 2 PDEC_HANDLER GOM_SPACE_HANDLER linux/ipcore/pdec.h mission/power/GomspaceDeviceHandler.h
523 0x5fa2 0x5e03 PDEC_FrameIllegalMultipleReasons GOMS_InvalidParamSize No description 162 3 PDEC_HANDLER GOM_SPACE_HANDLER linux/ipcore/pdec.h mission/power/GomspaceDeviceHandler.h
524 0x5fa3 0x5e04 PDEC_AdDiscardedLockoutRetval GOMS_InvalidPayloadSize No description 163 4 PDEC_HANDLER GOM_SPACE_HANDLER linux/ipcore/pdec.h mission/power/GomspaceDeviceHandler.h
525 0x5fa4 0x5e05 PDEC_AdDiscardedWaitRetval GOMS_UnknownReplyId No description 164 5 PDEC_HANDLER GOM_SPACE_HANDLER linux/ipcore/pdec.h mission/power/GomspaceDeviceHandler.h
526 0x5fa5 0x5fa0 PDEC_AdDiscardedNsVs PLMEMDUMP_MramAddressTooHigh No description The capacity of the MRAM amounts to 512 kB. Thus the maximum address must not be higher than 0x7d000. 165 160 PDEC_HANDLER PLOC_MEMORY_DUMPER linux/ipcore/pdec.h linux/payload/PlocMemoryDumper.h
527 0x5fa6 0x5fa1 PDEC_NoReportRetval PLMEMDUMP_MramInvalidAddressCombination No description The specified end address is lower than the start address 166 161 PDEC_HANDLER PLOC_MEMORY_DUMPER linux/ipcore/pdec.h linux/payload/PlocMemoryDumper.h
528 0x5fa7 0x60a0 PDEC_ErrorVersionNumberRetval PDEC_AbandonedCltuRetval No description 167 160 PDEC_HANDLER linux/ipcore/pdec.h
529 0x5fa8 0x60a1 PDEC_IllegalCombinationRetval PDEC_FrameDirtyRetval No description 168 161 PDEC_HANDLER linux/ipcore/pdec.h
530 0x5fa9 0x60a2 PDEC_InvalidScIdRetval PDEC_FrameIllegalMultipleReasons No description 169 162 PDEC_HANDLER linux/ipcore/pdec.h
531 0x5faa 0x60a3 PDEC_InvalidVcIdMsbRetval PDEC_AdDiscardedLockoutRetval No description 170 163 PDEC_HANDLER linux/ipcore/pdec.h
532 0x5fab 0x60a4 PDEC_InvalidVcIdLsbRetval PDEC_AdDiscardedWaitRetval No description 171 164 PDEC_HANDLER linux/ipcore/pdec.h
533 0x5fac 0x60a5 PDEC_NsNotZeroRetval PDEC_AdDiscardedNsVs No description 172 165 PDEC_HANDLER linux/ipcore/pdec.h
534 0x5fae 0x60a6 PDEC_InvalidBcCc PDEC_NoReportRetval No description 174 166 PDEC_HANDLER linux/ipcore/pdec.h
535 0x5fb0 0x60a7 PDEC_CommandNotImplemented PDEC_ErrorVersionNumberRetval Received action message with unknown action id No description 176 167 PDEC_HANDLER linux/ipcore/pdec.h
536 0x60a0 0x60a8 CCSDS_CommandNotImplemented PDEC_IllegalCombinationRetval Received action message with unknown action id No description 160 168 CCSDS_HANDLER PDEC_HANDLER mission/com/CcsdsIpCoreHandler.h linux/ipcore/pdec.h
537 0x61a0 0x60a9 RS_RateNotSupported PDEC_InvalidScIdRetval The commanded rate is not supported by the current FPGA design No description 160 169 RATE_SETTER PDEC_HANDLER linux/ipcore/PtmeConfig.h linux/ipcore/pdec.h
538 0x61a1 0x60aa RS_BadBitRate PDEC_InvalidVcIdMsbRetval Bad bitrate has been commanded (e.g. 0) No description 161 170 RATE_SETTER PDEC_HANDLER linux/ipcore/PtmeConfig.h linux/ipcore/pdec.h
539 0x61a2 0x60ab RS_ClkInversionFailed PDEC_InvalidVcIdLsbRetval Failed to invert clock and thus change the time the data is updated with respect to the tx clock No description 162 171 RATE_SETTER PDEC_HANDLER linux/ipcore/PtmeConfig.h linux/ipcore/pdec.h
540 0x61a3 0x60ac RS_TxManipulatorConfigFailed PDEC_NsNotZeroRetval Failed to change configuration bit of tx clock manipulator No description 163 172 RATE_SETTER PDEC_HANDLER linux/ipcore/PtmeConfig.h linux/ipcore/pdec.h
541 0x6201 0x60ae JSONBASE_JsonFileNotExists PDEC_InvalidBcCc Specified json file does not exist No description 1 174 ARCSEC_JSON_BASE PDEC_HANDLER mission/acs/str/ArcsecJsonParamBase.h linux/ipcore/pdec.h
542 0x6202 0x60b0 JSONBASE_SetNotExists PDEC_CommandNotImplemented Requested set does not exist in json file Received action message with unknown action id 2 176 ARCSEC_JSON_BASE PDEC_HANDLER mission/acs/str/ArcsecJsonParamBase.h linux/ipcore/pdec.h
543 0x6203 0x61a0 JSONBASE_ParamNotExists CCSDS_CommandNotImplemented Requested parameter does not exist in json file Received action message with unknown action id 3 160 ARCSEC_JSON_BASE CCSDS_HANDLER mission/acs/str/ArcsecJsonParamBase.h mission/com/CcsdsIpCoreHandler.h
544 0x63a0 0x62a0 NVMB_KeyNotExists RS_RateNotSupported Specified key does not exist in json file The commanded rate is not supported by the current FPGA design 160 NVM_PARAM_BASE RATE_SETTER mission/memory/NvmParameterBase.h linux/ipcore/PtmeConfig.h
545 0x64a0 0x62a1 FSHLP_SdNotMounted RS_BadBitRate SD card specified with path string not mounted Bad bitrate has been commanded (e.g. 0) 160 161 FILE_SYSTEM_HELPER RATE_SETTER bsp_q7s/fs/FilesystemHelper.h linux/ipcore/PtmeConfig.h
546 0x64a1 0x62a2 FSHLP_FileNotExists RS_ClkInversionFailed Specified file does not exist on filesystem Failed to invert clock and thus change the time the data is updated with respect to the tx clock 161 162 FILE_SYSTEM_HELPER RATE_SETTER bsp_q7s/fs/FilesystemHelper.h linux/ipcore/PtmeConfig.h
547 0x65a0 0x62a3 PLMPHLP_FileWriteError RS_TxManipulatorConfigFailed File error occured for file transfers from OBC to the MPSoC. Failed to change configuration bit of tx clock manipulator 160 163 PLOC_MPSOC_HELPER RATE_SETTER linux/payload/PlocMpsocSpecialComHelper.h linux/ipcore/PtmeConfig.h
548 0x65a1 0x6301 PLMPHLP_FileReadError JSONBASE_JsonFileNotExists File error occured for file transfers from MPSoC to OBC. Specified json file does not exist 161 1 PLOC_MPSOC_HELPER ARCSEC_JSON_BASE linux/payload/PlocMpsocSpecialComHelper.h mission/acs/str/ArcsecJsonParamBase.h
549 0x66a0 0x6302 SADPL_CommandNotSupported JSONBASE_SetNotExists No description Requested set does not exist in json file 160 2 SA_DEPL_HANDLER ARCSEC_JSON_BASE mission/SolarArrayDeploymentHandler.h mission/acs/str/ArcsecJsonParamBase.h
550 0x66a1 0x6303 SADPL_DeploymentAlreadyExecuting JSONBASE_ParamNotExists No description Requested parameter does not exist in json file 161 3 SA_DEPL_HANDLER ARCSEC_JSON_BASE mission/SolarArrayDeploymentHandler.h mission/acs/str/ArcsecJsonParamBase.h
551 0x66a2 0x64a0 SADPL_MainSwitchTimeoutFailure NVMB_KeyNotExists No description Specified key does not exist in json file 162 160 SA_DEPL_HANDLER NVM_PARAM_BASE mission/SolarArrayDeploymentHandler.h mission/memory/NvmParameterBase.h
552 0x66a3 0x65a0 SADPL_SwitchingDeplSa1Failed FSHLP_SdNotMounted No description SD card specified with path string not mounted 163 160 SA_DEPL_HANDLER FILE_SYSTEM_HELPER mission/SolarArrayDeploymentHandler.h bsp_q7s/fs/FilesystemHelper.h
553 0x66a4 0x65a1 SADPL_SwitchingDeplSa2Failed FSHLP_FileNotExists No description Specified file does not exist on filesystem 164 161 SA_DEPL_HANDLER FILE_SYSTEM_HELPER mission/SolarArrayDeploymentHandler.h bsp_q7s/fs/FilesystemHelper.h
554 0x67a0 0x66a0 MPSOCRTVIF_CrcFailure PLMPHLP_FileWriteError Space Packet received from PLOC has invalid CRC File error occured for file transfers from OBC to the MPSoC. 160 MPSOC_RETURN_VALUES_IF PLOC_MPSOC_HELPER linux/payload/mpsocRetvals.h linux/payload/PlocMpsocSpecialComHelper.h
555 0x67a1 0x66a1 MPSOCRTVIF_ReceivedAckFailure PLMPHLP_FileReadError Received ACK failure reply from PLOC File error occured for file transfers from MPSoC to OBC. 161 MPSOC_RETURN_VALUES_IF PLOC_MPSOC_HELPER linux/payload/mpsocRetvals.h linux/payload/PlocMpsocSpecialComHelper.h
556 0x67a2 0x67a0 MPSOCRTVIF_ReceivedExeFailure SADPL_CommandNotSupported Received execution failure reply from PLOC No description 162 160 MPSOC_RETURN_VALUES_IF SA_DEPL_HANDLER linux/payload/mpsocRetvals.h mission/SolarArrayDeploymentHandler.h
557 0x67a3 0x67a1 MPSOCRTVIF_InvalidApid SADPL_DeploymentAlreadyExecuting Received space packet with invalid APID from PLOC No description 163 161 MPSOC_RETURN_VALUES_IF SA_DEPL_HANDLER linux/payload/mpsocRetvals.h mission/SolarArrayDeploymentHandler.h
558 0x67a4 0x67a2 MPSOCRTVIF_InvalidLength SADPL_MainSwitchTimeoutFailure Received command with invalid length No description 164 162 MPSOC_RETURN_VALUES_IF SA_DEPL_HANDLER linux/payload/mpsocRetvals.h mission/SolarArrayDeploymentHandler.h
559 0x67a5 0x67a3 MPSOCRTVIF_FilenameTooLong SADPL_SwitchingDeplSa1Failed Filename of file in OBC filesystem is too long No description 165 163 MPSOC_RETURN_VALUES_IF SA_DEPL_HANDLER linux/payload/mpsocRetvals.h mission/SolarArrayDeploymentHandler.h
560 0x67a6 0x67a4 MPSOCRTVIF_MpsocHelperExecuting SADPL_SwitchingDeplSa2Failed MPSoC helper is currently executing a command No description 166 164 MPSOC_RETURN_VALUES_IF SA_DEPL_HANDLER linux/payload/mpsocRetvals.h mission/SolarArrayDeploymentHandler.h
561 0x67a7 0x68a0 MPSOCRTVIF_MpsocFilenameTooLong MPSOCRTVIF_CrcFailure Filename of MPSoC file is to long (max. 256 bytes) Space Packet received from PLOC has invalid CRC 167 160 MPSOC_RETURN_VALUES_IF linux/payload/mpsocRetvals.h
562 0x67a8 0x68a1 MPSOCRTVIF_InvalidParameter MPSOCRTVIF_ReceivedAckFailure Command has invalid parameter Received ACK failure reply from PLOC 168 161 MPSOC_RETURN_VALUES_IF linux/payload/mpsocRetvals.h
563 0x67a9 0x68a2 MPSOCRTVIF_NameTooLong MPSOCRTVIF_ReceivedExeFailure Received command has file string with invalid length Received execution failure reply from PLOC 169 162 MPSOC_RETURN_VALUES_IF linux/payload/mpsocRetvals.h
564 0x68a0 0x68a3 SPVRTVIF_CrcFailure MPSOCRTVIF_InvalidApid Space Packet received from PLOC supervisor has invalid CRC Received space packet with invalid APID from PLOC 160 163 SUPV_RETURN_VALUES_IF MPSOC_RETURN_VALUES_IF linux/payload/plocSupvDefs.h linux/payload/mpsocRetvals.h
565 0x68a1 0x68a4 SPVRTVIF_InvalidServiceId MPSOCRTVIF_InvalidLength No description Received command with invalid length 161 164 SUPV_RETURN_VALUES_IF MPSOC_RETURN_VALUES_IF linux/payload/plocSupvDefs.h linux/payload/mpsocRetvals.h
566 0x68a2 0x68a5 SPVRTVIF_ReceivedAckFailure MPSOCRTVIF_FilenameTooLong Received ACK failure reply from PLOC supervisor Filename of file in OBC filesystem is too long 162 165 SUPV_RETURN_VALUES_IF MPSOC_RETURN_VALUES_IF linux/payload/plocSupvDefs.h linux/payload/mpsocRetvals.h
567 0x68a3 0x68a6 SPVRTVIF_ReceivedExeFailure MPSOCRTVIF_MpsocHelperExecuting Received execution failure reply from PLOC supervisor MPSoC helper is currently executing a command 163 166 SUPV_RETURN_VALUES_IF MPSOC_RETURN_VALUES_IF linux/payload/plocSupvDefs.h linux/payload/mpsocRetvals.h
568 0x68a4 0x68a7 SPVRTVIF_InvalidApid MPSOCRTVIF_MpsocFilenameTooLong Received space packet with invalid APID from PLOC supervisor Filename of MPSoC file is to long (max. 256 bytes) 164 167 SUPV_RETURN_VALUES_IF MPSOC_RETURN_VALUES_IF linux/payload/plocSupvDefs.h linux/payload/mpsocRetvals.h
569 0x68a5 0x68a8 SPVRTVIF_GetTimeFailure MPSOCRTVIF_InvalidParameter Failed to read current system time Command has invalid parameter 165 168 SUPV_RETURN_VALUES_IF MPSOC_RETURN_VALUES_IF linux/payload/plocSupvDefs.h linux/payload/mpsocRetvals.h
570 0x68a6 0x68a9 SPVRTVIF_InvalidWatchdog MPSOCRTVIF_NameTooLong Received command with invalid watchdog parameter. Valid watchdogs are 0 for PS, 1 for PL and 2 for INT Received command has file string with invalid length 166 169 SUPV_RETURN_VALUES_IF MPSOC_RETURN_VALUES_IF linux/payload/plocSupvDefs.h linux/payload/mpsocRetvals.h
571 0x68a7 0x69a0 SPVRTVIF_InvalidWatchdogTimeout SPVRTVIF_CrcFailure Received watchdog timeout config command with invalid timeout. Valid timeouts must be in the range between 1000 and 360000 ms. Space Packet received from PLOC supervisor has invalid CRC 167 160 SUPV_RETURN_VALUES_IF linux/payload/plocSupvDefs.h
572 0x68a8 0x69a1 SPVRTVIF_InvalidLatchupId SPVRTVIF_InvalidServiceId Received latchup config command with invalid latchup ID No description 168 161 SUPV_RETURN_VALUES_IF linux/payload/plocSupvDefs.h
573 0x68a9 0x69a2 SPVRTVIF_SweepPeriodTooSmall SPVRTVIF_ReceivedAckFailure Received set adc sweep period command with invalid sweep period. Must be larger than 21. Received ACK failure reply from PLOC supervisor 169 162 SUPV_RETURN_VALUES_IF linux/payload/plocSupvDefs.h
574 0x68aa 0x69a3 SPVRTVIF_InvalidTestParam SPVRTVIF_ReceivedExeFailure Receive auto EM test command with invalid test param. Valid params are 1 and 2. Received execution failure reply from PLOC supervisor 170 163 SUPV_RETURN_VALUES_IF linux/payload/plocSupvDefs.h
575 0x68ab 0x69a4 SPVRTVIF_MramPacketParsingFailure SPVRTVIF_InvalidApid Returned when scanning for MRAM dump packets failed. Received space packet with invalid APID from PLOC supervisor 171 164 SUPV_RETURN_VALUES_IF linux/payload/plocSupvDefs.h
576 0x68ac 0x69a5 SPVRTVIF_InvalidMramAddresses SPVRTVIF_GetTimeFailure 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) Failed to read current system time 172 165 SUPV_RETURN_VALUES_IF linux/payload/plocSupvDefs.h
577 0x68ad 0x69a6 SPVRTVIF_NoMramPacket SPVRTVIF_InvalidWatchdog Expect reception of an MRAM dump packet but received space packet with other apid. Received command with invalid watchdog parameter. Valid watchdogs are 0 for PS, 1 for PL and 2 for INT 173 166 SUPV_RETURN_VALUES_IF linux/payload/plocSupvDefs.h
578 0x68ae 0x69a7 SPVRTVIF_PathDoesNotExist SPVRTVIF_InvalidWatchdogTimeout Path to PLOC directory on SD card does not exist Received watchdog timeout config command with invalid timeout. Valid timeouts must be in the range between 1000 and 360000 ms. 174 167 SUPV_RETURN_VALUES_IF linux/payload/plocSupvDefs.h
579 0x68af 0x69a8 SPVRTVIF_MramFileNotExists SPVRTVIF_InvalidLatchupId MRAM dump file does not exists. The file should actually already have been created with the reception of the first dump packet. Received latchup config command with invalid latchup ID 175 168 SUPV_RETURN_VALUES_IF linux/payload/plocSupvDefs.h
580 0x68b0 0x69a9 SPVRTVIF_InvalidReplyLength SPVRTVIF_SweepPeriodTooSmall No description Received set adc sweep period command with invalid sweep period. Must be larger than 21. 176 169 SUPV_RETURN_VALUES_IF linux/payload/plocSupvDefs.h
581 0x68b1 0x69aa SPVRTVIF_InvalidLength SPVRTVIF_InvalidTestParam Received action command has invalid length Receive auto EM test command with invalid test param. Valid params are 1 and 2. 177 170 SUPV_RETURN_VALUES_IF linux/payload/plocSupvDefs.h
582 0x68b2 0x69ab SPVRTVIF_FilenameTooLong SPVRTVIF_MramPacketParsingFailure Filename too long Returned when scanning for MRAM dump packets failed. 178 171 SUPV_RETURN_VALUES_IF linux/payload/plocSupvDefs.h
583 0x68b3 0x69ac SPVRTVIF_UpdateStatusReportInvalidLength SPVRTVIF_InvalidMramAddresses Received update status report with invalid packet length field 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) 179 172 SUPV_RETURN_VALUES_IF linux/payload/plocSupvDefs.h
584 0x68b4 0x69ad SPVRTVIF_UpdateCrcFailure SPVRTVIF_NoMramPacket Update status report does not contain expected CRC. There might be a bit flip in the update memory region. Expect reception of an MRAM dump packet but received space packet with other apid. 180 173 SUPV_RETURN_VALUES_IF linux/payload/plocSupvDefs.h
585 0x68b5 0x69ae SPVRTVIF_SupvHelperExecuting SPVRTVIF_PathDoesNotExist Supervisor helper task ist currently executing a command (wait until helper tas has finished or interrupt by sending the terminate command) Path to PLOC directory on SD card does not exist 181 174 SUPV_RETURN_VALUES_IF linux/payload/plocSupvDefs.h
586 0x68c0 0x69af SPVRTVIF_BufTooSmall SPVRTVIF_MramFileNotExists No description MRAM dump file does not exists. The file should actually already have been created with the reception of the first dump packet. 192 175 SUPV_RETURN_VALUES_IF linux/payload/plocSupvDefs.h
587 0x68c1 0x69b0 SPVRTVIF_NoReplyTimeout SPVRTVIF_InvalidReplyLength No description 193 176 SUPV_RETURN_VALUES_IF linux/payload/plocSupvDefs.h
588 0x6900 0x69b1 ACSCTRL_FileDeletionFailed SPVRTVIF_InvalidLength File deletion failed and at least one file is still existent. Received action command has invalid length 0 177 ACS_CTRL SUPV_RETURN_VALUES_IF mission/controller/AcsController.h linux/payload/plocSupvDefs.h
589 0x6a02 0x69b2 ACSMEKF_MekfUninitialized SPVRTVIF_FilenameTooLong No description Filename too long 2 178 ACS_MEKF SUPV_RETURN_VALUES_IF mission/controller/acs/MultiplicativeKalmanFilter.h linux/payload/plocSupvDefs.h
590 0x6a03 0x69b3 ACSMEKF_MekfNoGyrData SPVRTVIF_UpdateStatusReportInvalidLength No description Received update status report with invalid packet length field 3 179 ACS_MEKF SUPV_RETURN_VALUES_IF mission/controller/acs/MultiplicativeKalmanFilter.h linux/payload/plocSupvDefs.h
591 0x6a04 0x69b4 ACSMEKF_MekfNoModelVectors SPVRTVIF_UpdateCrcFailure No description Update status report does not contain expected CRC. There might be a bit flip in the update memory region. 4 180 ACS_MEKF SUPV_RETURN_VALUES_IF mission/controller/acs/MultiplicativeKalmanFilter.h linux/payload/plocSupvDefs.h
592 0x6a05 0x69b5 ACSMEKF_MekfNoSusMgmStrData SPVRTVIF_SupvHelperExecuting No description Supervisor helper task ist currently executing a command (wait until helper tas has finished or interrupt by sending the terminate command) 5 181 ACS_MEKF SUPV_RETURN_VALUES_IF mission/controller/acs/MultiplicativeKalmanFilter.h linux/payload/plocSupvDefs.h
593 0x6a06 0x69c0 ACSMEKF_MekfCovarianceInversionFailed SPVRTVIF_BufTooSmall No description 6 192 ACS_MEKF SUPV_RETURN_VALUES_IF mission/controller/acs/MultiplicativeKalmanFilter.h linux/payload/plocSupvDefs.h
594 0x6a07 0x69c1 ACSMEKF_MekfNotFinite SPVRTVIF_NoReplyTimeout No description 7 193 ACS_MEKF SUPV_RETURN_VALUES_IF mission/controller/acs/MultiplicativeKalmanFilter.h linux/payload/plocSupvDefs.h
595 0x6a08 0x6a00 ACSMEKF_MekfInitialized ACSCTRL_FileDeletionFailed No description File deletion failed and at least one file is still existent. 8 0 ACS_MEKF ACS_CTRL mission/controller/acs/MultiplicativeKalmanFilter.h mission/controller/AcsController.h
596 0x6a09 0x6b02 ACSMEKF_MekfRunning ACSMEKF_MekfUninitialized No description 9 2 ACS_MEKF mission/controller/acs/MultiplicativeKalmanFilter.h
597 0x6b00 0x6b03 SDMA_OpOngoing ACSMEKF_MekfNoGyrData No description 0 3 SD_CARD_MANAGER ACS_MEKF bsp_q7s/fs/SdCardManager.h mission/controller/acs/MultiplicativeKalmanFilter.h
598 0x6b01 0x6b04 SDMA_AlreadyOn ACSMEKF_MekfNoModelVectors No description 1 4 SD_CARD_MANAGER ACS_MEKF bsp_q7s/fs/SdCardManager.h mission/controller/acs/MultiplicativeKalmanFilter.h
599 0x6b02 0x6b05 SDMA_AlreadyMounted ACSMEKF_MekfNoSusMgmStrData No description 2 5 SD_CARD_MANAGER ACS_MEKF bsp_q7s/fs/SdCardManager.h mission/controller/acs/MultiplicativeKalmanFilter.h
600 0x6b03 0x6b06 SDMA_AlreadyOff ACSMEKF_MekfCovarianceInversionFailed No description 3 6 SD_CARD_MANAGER ACS_MEKF bsp_q7s/fs/SdCardManager.h mission/controller/acs/MultiplicativeKalmanFilter.h
601 0x6b0a 0x6b07 SDMA_StatusFileNexists ACSMEKF_MekfNotFinite No description 10 7 SD_CARD_MANAGER ACS_MEKF bsp_q7s/fs/SdCardManager.h mission/controller/acs/MultiplicativeKalmanFilter.h
602 0x6b0b 0x6b08 SDMA_StatusFileFormatInvalid ACSMEKF_MekfInitialized No description 11 8 SD_CARD_MANAGER ACS_MEKF bsp_q7s/fs/SdCardManager.h mission/controller/acs/MultiplicativeKalmanFilter.h
603 0x6b0c 0x6b09 SDMA_MountError ACSMEKF_MekfRunning No description 12 9 SD_CARD_MANAGER ACS_MEKF bsp_q7s/fs/SdCardManager.h mission/controller/acs/MultiplicativeKalmanFilter.h
604 0x6b0d 0x6c00 SDMA_UnmountError SDMA_OpOngoing No description 13 0 SD_CARD_MANAGER bsp_q7s/fs/SdCardManager.h
605 0x6b0e 0x6c01 SDMA_SystemCallError SDMA_AlreadyOn No description 14 1 SD_CARD_MANAGER bsp_q7s/fs/SdCardManager.h
606 0x6b0f 0x6c02 SDMA_PopenCallError SDMA_AlreadyMounted No description 15 2 SD_CARD_MANAGER bsp_q7s/fs/SdCardManager.h
607 0x6c00 0x6c03 LPH_SdNotReady SDMA_AlreadyOff No description 0 3 LOCAL_PARAM_HANDLER SD_CARD_MANAGER bsp_q7s/memory/LocalParameterHandler.h bsp_q7s/fs/SdCardManager.h
608 0x6d00 0x6c0a PTM_DumpDone SDMA_StatusFileNexists No description 0 10 PERSISTENT_TM_STORE SD_CARD_MANAGER mission/tmtc/PersistentTmStore.h bsp_q7s/fs/SdCardManager.h
609 0x6d01 0x6c0b PTM_BusyDumping SDMA_StatusFileFormatInvalid No description 1 11 PERSISTENT_TM_STORE SD_CARD_MANAGER mission/tmtc/PersistentTmStore.h bsp_q7s/fs/SdCardManager.h
610 0x6e00 0x6c0c TMS_IsBusy SDMA_MountError No description 0 12 TM_SINK SD_CARD_MANAGER mission/tmtc/DirectTmSinkIF.h bsp_q7s/fs/SdCardManager.h
611 0x7000 0x6c0d SCBU_KeyNotFound SDMA_UnmountError No description 0 13 SCRATCH_BUFFER SD_CARD_MANAGER bsp_q7s/memory/scratchApi.h bsp_q7s/fs/SdCardManager.h
612 0x6c0e SDMA_SystemCallError No description 14 SD_CARD_MANAGER bsp_q7s/fs/SdCardManager.h
613 0x6c0f SDMA_PopenCallError No description 15 SD_CARD_MANAGER bsp_q7s/fs/SdCardManager.h
614 0x6d00 LPH_SdNotReady No description 0 LOCAL_PARAM_HANDLER bsp_q7s/memory/LocalParameterHandler.h
615 0x6e00 PTM_DumpDone No description 0 PERSISTENT_TM_STORE mission/tmtc/PersistentTmStore.h
616 0x6e01 PTM_BusyDumping No description 1 PERSISTENT_TM_STORE mission/tmtc/PersistentTmStore.h
617 0x6f00 TMS_IsBusy No description 0 TM_SINK mission/tmtc/DirectTmSinkIF.h
618 0x6f01 TMS_PartiallyWritten No description 1 TM_SINK mission/tmtc/DirectTmSinkIF.h
619 0x6f02 TMS_NoWriteActive No description 2 TM_SINK mission/tmtc/DirectTmSinkIF.h
620 0x7000 VCS_ChannelDoesNotExist No description 0 VIRTUAL_CHANNEL mission/com/VirtualChannel.h
621 0x7200 SCBU_KeyNotFound No description 0 SCRATCH_BUFFER bsp_q7s/memory/scratchApi.h

View File

@ -60,3 +60,4 @@
142;COM_SUBSYSTEM
143;PERSISTENT_TM_STORE
144;SYRLINKS_COM
145;SUS_HANDLER

1 22 MEMORY
60 142 COM_SUBSYSTEM
61 143 PERSISTENT_TM_STORE
62 144 SYRLINKS_COM
63 145 SUS_HANDLER

View File

@ -35,6 +35,7 @@ from eive_tmtc.tmtc.core import pack_core_commands
from eive_tmtc.tmtc.acs.star_tracker import pack_star_tracker_commands
from eive_tmtc.tmtc.com.syrlinks_handler import pack_syrlinks_command
from eive_tmtc.tmtc.com.pdec_handler import pack_pdec_handler_test
from eive_tmtc.tmtc.wdt import pack_wdt_commands
from eive_tmtc.tmtc.acs.acs_board import pack_acs_command
from eive_tmtc.config.definitions import CustomServiceList
from eive_tmtc.config.object_ids import (
@ -66,7 +67,7 @@ from eive_tmtc.config.object_ids import (
from eive_tmtc.tmtc.tcs.tmp1075 import pack_tmp1075_test_into
from eive_tmtc.tmtc.acs.gps import pack_gps_command
from eive_tmtc.tmtc.payload.rad_sensor import pack_rad_sensor_test_into
from eive_tmtc.tmtc.power.plpcdu import pack_pl_pcdu_commands
from eive_tmtc.tmtc.payload.plpcdu import pack_pl_pcdu_commands
from eive_tmtc.tmtc.acs.str_img_helper import pack_str_img_helper_command
from eive_tmtc.pus_tc.system.proc import pack_proc_commands
@ -205,6 +206,8 @@ def handle_default_procedure( # noqa C901: Complexity okay here.
queue_helper=queue_helper,
)
)
if service == CustomServiceList.XIPHOS_WDT.value:
return pack_wdt_commands(queue_helper, op_code)
if not route_to_registered_service_handlers(
service,
ServiceProviderParams(

View File

@ -0,0 +1,163 @@
import logging
from typing import cast
from eive_tmtc.config.definitions import (
CFDP_REMOTE_ENTITY_ID,
PUS_APID,
CFDP_LOCAL_ENTITY_ID,
)
from eive_tmtc.pus_tc.procedure_packer import handle_default_procedure
from tmtccmd import TcHandlerBase, ProcedureWrapper
from tmtccmd.cfdp.defs import CfdpRequestType
from tmtccmd.cfdp.handler import CfdpInCcsdsHandler
from tmtccmd.logging import get_current_time_string
from tmtccmd.logging.pus import RawTmtcTimedLogWrapper
from tmtccmd.tc import (
DefaultPusQueueHelper,
QueueWrapper,
FeedWrapper,
TcProcedureType,
SendCbParams,
TcQueueEntryType,
)
from tmtccmd.config.cfdp import generic_cfdp_params_to_put_request
from spacepackets.ecss import PusVerificator
from tmtccmd.util import FileSeqCountProvider
from spacepackets.cfdp import PduHolder, DirectiveType
_LOGGER = logging.getLogger(__name__)
class TcHandler(TcHandlerBase):
def __init__(
self,
seq_count_provider: FileSeqCountProvider,
cfdp_in_ccsds_handler: CfdpInCcsdsHandler,
pus_verificator: PusVerificator,
high_level_file_logger: logging.Logger,
raw_pus_logger: RawTmtcTimedLogWrapper,
gui: bool,
):
super().__init__()
self.cfdp_handler_started = False
self.seq_count_provider = seq_count_provider
self.pus_verificator = pus_verificator
self.high_level_file_logger = high_level_file_logger
self.pus_raw_logger = raw_pus_logger
self.gui = gui
self.proxy_op = True
self.queue_helper = DefaultPusQueueHelper(
queue_wrapper=QueueWrapper.empty(),
default_pus_apid=PUS_APID,
seq_cnt_provider=seq_count_provider,
pus_verificator=pus_verificator,
tc_sched_timestamp_len=4,
)
self.cfdp_in_ccsds_handler = cfdp_in_ccsds_handler
def cfdp_done(self) -> bool:
if self.cfdp_handler_started:
if (
not self.cfdp_in_ccsds_handler.put_request_pending()
and not self.proxy_op
):
self.cfdp_handler_started = False
return True
return False
def feed_cb(self, info: ProcedureWrapper, wrapper: FeedWrapper):
self.queue_helper.queue_wrapper = wrapper.queue_wrapper
if info.proc_type == TcProcedureType.DEFAULT:
handle_default_procedure(self, info.to_def_procedure(), self.queue_helper)
elif info.proc_type == TcProcedureType.CFDP:
self.handle_cfdp_procedure(info)
def send_cb(self, send_params: SendCbParams):
entry_helper = send_params.entry
if entry_helper.is_tc:
if entry_helper.entry_type == TcQueueEntryType.PUS_TC:
pus_tc_wrapper = entry_helper.to_pus_tc_entry()
# pus_tc_wrapper.pus_tc.apid = PUS_APID
raw_tc = pus_tc_wrapper.pus_tc.pack()
self.pus_raw_logger.log_tc(pus_tc_wrapper.pus_tc)
tc_info_string = f"Sent {pus_tc_wrapper.pus_tc}"
_LOGGER.info(tc_info_string)
self.high_level_file_logger.info(
f"{get_current_time_string(True)}: {tc_info_string}"
)
# with open("tc.bin", "wb") as of:
# of.write(raw_tc)
send_params.com_if.send(raw_tc)
elif entry_helper.entry_type == TcQueueEntryType.CCSDS_TC:
cfdp_packet_in_ccsds = entry_helper.to_space_packet_entry()
send_params.com_if.send(cfdp_packet_in_ccsds.space_packet.pack())
# TODO: Log raw CFDP packets similarly to how PUS packets are logged.
# - Log full raw format including space packet wrapper
# - Log context information: Transaction ID, and PDU type and directive
# Could re-use file logger. Should probably do that
# print(f"sending packet: [{cfdp_packet_in_ccsds.space_packet.pack()}]")
# with open(f"cfdp_packet_{self.cfdp_counter}", "wb") as of:
# of.write(cfdp_packet_in_ccsds.space_packet.pack())
# self.cfdp_counter += 1
elif entry_helper.entry_type == TcQueueEntryType.LOG:
log_entry = entry_helper.to_log_entry()
_LOGGER.info(log_entry.log_str)
self.high_level_file_logger.info(log_entry.log_str)
def handle_cfdp_procedure(self, info: ProcedureWrapper):
cfdp_procedure = info.to_cfdp_procedure()
if cfdp_procedure.cfdp_request_type == CfdpRequestType.PUT:
if (
not self.cfdp_in_ccsds_handler.put_request_pending()
and not self.cfdp_handler_started
):
put_req_cfg_wrapper = cfdp_procedure.request_wrapper.to_put_request()
if put_req_cfg_wrapper.cfg.proxy_op:
self.proxy_op = True
put_req = generic_cfdp_params_to_put_request(
params=put_req_cfg_wrapper.cfg,
local_id=CFDP_LOCAL_ENTITY_ID,
remote_id=CFDP_REMOTE_ENTITY_ID,
dest_id_proxy_put_req=CFDP_LOCAL_ENTITY_ID,
)
_LOGGER.info(
f"CFDP: Starting file put request with parameters:\n{put_req}"
)
self.cfdp_in_ccsds_handler.cfdp_handler.put_request(put_req)
self.cfdp_handler_started = True
for source_pair, dest_pair in self.cfdp_in_ccsds_handler:
pdu, sp = source_pair
pdu = cast(PduHolder, pdu)
if pdu.is_file_directive:
if pdu.pdu_directive_type == DirectiveType.METADATA_PDU:
metadata = pdu.to_metadata_pdu()
self.queue_helper.add_log_cmd(
"CFDP Source: Sending Metadata PDU for file with size "
f"{metadata.file_size}"
)
elif pdu.pdu_directive_type == DirectiveType.EOF_PDU:
self.queue_helper.add_log_cmd(
"CFDP Source: Sending EOF PDU"
)
else:
fd_pdu = pdu.to_file_data_pdu()
self.queue_helper.add_log_cmd(
"CFDP Source: Sending File Data PDU for segment at offset "
f"{fd_pdu.offset} with length {len(fd_pdu.file_data)}"
)
self.queue_helper.add_ccsds_tc(sp)
self.cfdp_in_ccsds_handler.confirm_source_packet_sent()
self.cfdp_in_ccsds_handler.source_handler.state_machine()
def queue_finished_cb(self, info: ProcedureWrapper):
if info is not None:
if info.proc_type == TcQueueEntryType.PUS_TC:
def_proc = info.to_def_procedure()
_LOGGER.info(
f"Finished queue for service {def_proc.service} and op code"
f" {def_proc.op_code}"
)
elif info.proc_type == TcProcedureType.CFDP:
_LOGGER.info("Finished CFDP queue")

View File

@ -37,12 +37,13 @@ def handle_event_packet( # noqa C901: Complexity okay here
else:
obj_name = obj_id_obj.name
generic_event_string = (
f"Object {obj_name} generated Event {info.name} (ID: {event_def.event_id:#04x}) "
f"at {tm.time_provider.as_date_time()}"
f"Object {obj_name} generated Event {info.name} (ID: {event_def.event_id:#04x})"
f" at {tm.time_provider.as_date_time()}"
)
_LOGGER.info(generic_event_string)
pw.file_logger.info(
f"{datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')}: {generic_event_string}"
f"{datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')}:"
f" {generic_event_string}"
)
specific_handler = False
if info.name == "MODE_TRANSITION_FAILED":
@ -54,8 +55,8 @@ def handle_event_packet( # noqa C901: Complexity okay here
if info.name == "SUPV_UPDATE_PROGRESS" or info.name == "WRITE_MEMORY_FAILED":
additional_event_info = f"Additional info: {info.info}"
context = (
f"Progress Percent: {event_def.param1 >> 24 & 0xff} | "
f"Sequence Count: {event_def.param1 & 0xffff} | Bytes Written: {event_def.param2}"
f"Progress Percent: {event_def.param1 >> 24 & 0xff} | Sequence Count:"
f" {event_def.param1 & 0xffff} | Bytes Written: {event_def.param2}"
)
pw.dlog(additional_event_info)
pw.dlog(context)

View File

@ -6,7 +6,7 @@ from eive_tmtc.tmtc.internal_err_reporter import handle_ier_hk_data
from eive_tmtc.tmtc.payload.ploc_mpsoc import handle_ploc_mpsoc_hk_data
from eive_tmtc.tmtc.tcs.rtd import RTD_NAMES, handle_rtd_hk
from eive_tmtc.tmtc.acs.star_tracker import handle_str_hk_data
from eive_tmtc.tmtc.power.plpcdu import handle_plpcdu_hk
from eive_tmtc.tmtc.payload.plpcdu import handle_plpcdu_hk
from eive_tmtc.tmtc.payload.rad_sensor import handle_rad_sensor_data
from eive_tmtc.tmtc.acs.sus import handle_sus_hk
from eive_tmtc.tmtc.payload.ploc_supervisor import handle_supv_hk_data
@ -188,5 +188,5 @@ def handle_regular_hk_print( # noqa C901: Complexity okay here
else:
_LOGGER.info(
f"Service 3 TM: Parsing for object {object_id} and set ID {set_id} "
f"has not been implemented."
"has not been implemented."
)

View File

@ -87,7 +87,8 @@ def pus_factory_hook( # noqa C901 : Complexity okay here
# TODO: Could improve display further by actually displaying a matrix as a
# matrix using row and column information
pw.dlog(
f"Received vector or matrix data: {param.param_raw.hex(sep=',')}"
"Received vector or matrix data:"
f" {param.param_raw.hex(sep=',')}"
)
except ValueError as e:
pw.dlog(f"received {e} when trying to parse parameters")

View File

@ -48,7 +48,7 @@ def generic_retval_printout(
if retval_info is None:
raw_err = retval
return [
f"No returnvalue information found for error code with "
"No returnvalue information found for error code with "
f"subsystem ID {(raw_err >> 8) & 0xff} and unique ID {raw_err & 0xff}"
]
else:
@ -58,9 +58,9 @@ def generic_retval_printout(
)
string_list = [retval_string]
if p1:
error_param_1_str = f"Error Parameter 1: hex {p1:#010x} " f"dec {p1} "
error_param_1_str = f"Error Parameter 1: hex {p1:#010x} dec {p1} "
string_list.append(error_param_1_str)
if p2:
error_param_2_str = f"Error Parameter 2: hex {p2:#010x} " f"dec {p2}"
error_param_2_str = f"Error Parameter 2: hex {p2:#010x} dec {p2}"
string_list.append(error_param_2_str)
return string_list

View File

@ -6,3 +6,4 @@ from .health import add_health_cmd_defs
from .system import add_system_cmd_defs
from .tm_store import add_persistent_tm_store_cmd_defs
from .tcs import add_tmp_sens_cmds
from .wdt import add_xiphos_wdt_defs

View File

@ -571,8 +571,8 @@ def pack_acs_ctrl_command(p: ServiceProviderParams): # noqa C901
def set_acs_ctrl_param_scalar(q: DefaultPusQueueHelper):
pt = int(
input(
'Specify parameter type to set {0: "uint8", 1: "uint16", 2: "int32", 3: "float", '
'4: "double"}: '
'Specify parameter type to set {0: "uint8", 1: "uint16", 2: "int32", 3:'
' "float", 4: "double"}: '
)
)
sid = int(input("Specify parameter struct ID to set: "))
@ -808,8 +808,8 @@ def handle_acs_ctrl_sus_raw_data(pw: PrintWrapper, hk_data: bytes):
def handle_acs_ctrl_sus_processed_data(pw: PrintWrapper, hk_data: bytes):
if len(hk_data) < 3 * 4 * 12 + 3 * 8 * 3:
pw.dlog(
f"SUS Processed dataset with size {len(hk_data)} does not have expected size"
f" of {3 * 4 * 12 + 3 * 8 * 3} bytes"
f"SUS Processed dataset with size {len(hk_data)} does not have expected"
f" size of {3 * 4 * 12 + 3 * 8 * 3} bytes"
)
return
current_idx = 0
@ -846,7 +846,8 @@ def handle_raw_mgm_data(pw: PrintWrapper, hk_data: bytes):
if len(hk_data) < 61:
pw.dlog(
f"ACS CTRL HK: MGM HK data with length {len(hk_data)} shorter than expected 61 bytes"
f"ACS CTRL HK: MGM HK data with length {len(hk_data)} shorter than expected"
" 61 bytes"
)
pw.dlog(f"Raw Data: {hk_data.hex(sep=',')}")
return
@ -1018,7 +1019,7 @@ def handle_gps_data_processed(pw: PrintWrapper, hk_data: bytes):
inc_len_source = struct.calcsize(fmt_source)
inc_len_scalar = struct.calcsize(fmt_scalar)
inc_len_vec = struct.calcsize(fmt_vec)
if len(hk_data) < 2 * inc_len_scalar + 2 * inc_len_vec + inc_len_source:
if len(hk_data) < 3 * inc_len_scalar + 2 * inc_len_vec + inc_len_source:
pw.dlog("Received HK set too small")
return
current_idx = 0
@ -1276,8 +1277,8 @@ def perform_mgm_calibration( # noqa C901: Complexity okay
reply = CALIBR_SOCKET.recv(1024)
if len(reply) != 2:
pw.dlog(
f"MGM calibration: Reply received command magnetometer_field has invalid "
f"length {len(reply)}"
"MGM calibration: Reply received command magnetometer_field has"
f" invalid length {len(reply)}"
)
return
else:

View File

@ -12,8 +12,8 @@ from tmtccmd.tc import DefaultPusQueueHelper
from tmtccmd.tc.pus_3_fsfw_hk import (
make_sid,
create_request_one_hk_command,
create_enable_periodic_hk_command_with_interval,
create_disable_periodic_hk_command,
create_enable_periodic_hk_command_with_interval_with_diag,
create_disable_periodic_hk_command_with_diag,
)
from tmtccmd.fsfw.tmtc_printer import FsfwTmTcPrinter
@ -74,7 +74,7 @@ def add_gps_cmds(defs: TmtcDefinitionWrapper):
def pack_gps_command( # noqa: C901
object_id: bytes, q: DefaultPusQueueHelper, op_code: str
): # noqa: C901
): # noqa: C901:
if op_code in OpCode.RESET_GNSS:
# TODO: This needs to be re-implemented
_LOGGER.warning("Reset pin handling needs to be re-implemented")
@ -83,7 +83,7 @@ def pack_gps_command( # noqa: C901
if interval <= 0:
raise ValueError("invalid interval")
q.add_log_cmd(f"GPS: {Info.ENABLE_CORE_HK}")
cmds = create_enable_periodic_hk_command_with_interval(
cmds = create_enable_periodic_hk_command_with_interval_with_diag(
diag=False,
sid=make_sid(object_id=object_id, set_id=SetId.CORE_HK),
interval_seconds=interval,
@ -93,7 +93,7 @@ def pack_gps_command( # noqa: C901
if op_code in OpCode.DISABLE_CORE_HK:
q.add_log_cmd(f"gps: {Info.DISABLE_CORE_HK}")
q.add_pus_tc(
create_disable_periodic_hk_command(
create_disable_periodic_hk_command_with_diag(
diag=False, sid=make_sid(object_id=object_id, set_id=SetId.CORE_HK)
)
)
@ -109,7 +109,7 @@ def pack_gps_command( # noqa: C901
if interval <= 0:
raise ValueError("invalid interval")
q.add_log_cmd(f"GPS: {Info.ENABLE_SKYVIEW_HK}")
cmds = create_enable_periodic_hk_command_with_interval(
cmds = create_enable_periodic_hk_command_with_interval_with_diag(
diag=False,
sid=make_sid(object_id=object_id, set_id=SetId.SKYVIEW_HK),
interval_seconds=interval,
@ -119,7 +119,7 @@ def pack_gps_command( # noqa: C901
if op_code in OpCode.DISABLE_SKYVIEW_HK:
q.add_log_cmd(f"gps: {Info.DISABLE_SKYVIEW_HK}")
q.add_pus_tc(
create_disable_periodic_hk_command(
create_disable_periodic_hk_command_with_diag(
diag=False, sid=make_sid(object_id=object_id, set_id=SetId.SKYVIEW_HK)
)
)
@ -217,7 +217,7 @@ def handle_skyview_data(pw: PrintWrapper, hk_data: bytes):
inc_len_uint8 = struct.calcsize(fmt_str_uint8)
unix = struct.unpack(
fmt_str_unix, hk_data[current_idx : current_idx + inc_len_unix]
)
)[0]
current_idx += inc_len_unix
prn_id = struct.unpack(
fmt_str_int16, hk_data[current_idx : current_idx + inc_len_int16]
@ -242,7 +242,7 @@ def handle_skyview_data(pw: PrintWrapper, hk_data: bytes):
pw.dlog(f"Skyview Time: {unix} unix-sec")
pw.dlog(
"{:<8} {:<8} {:<8} {:<8} {:<8}".format(
"PRN_ID", "AZ [°]", "EL [°]", "S2N [dBW]", "USED"
"PRN_ID", "AZ [°]", "EL [°]", "S2N [dBHz]", "USED"
)
)
for idx in range(GpsInfo.MAX_SATELLITES):

View File

@ -24,8 +24,8 @@ from tmtccmd.tc.pus_3_fsfw_hk import (
generate_one_diag_command,
generate_one_hk_command,
create_request_one_diag_command,
create_disable_periodic_hk_command,
create_enable_periodic_hk_command_with_interval,
create_enable_periodic_hk_command_with_interval_with_diag,
create_disable_periodic_hk_command_with_diag,
)
from tmtccmd.tc.pus_200_fsfw_mode import pack_mode_data, Mode
from tmtccmd.util import ObjectIdU32
@ -227,12 +227,13 @@ def pack_imtq_test_into( # noqa C901
duration = int(
input(
f"Specify torque duration [range [0, {pow(2, 16) - 1}, "
f"0 for continuous generation until update]: "
"0 for continuous generation until update]: "
)
)
dur_str = "infinite" if duration == 0 else str(duration)
q.add_log_cmd(
f"IMTQ: Commanding dipole X={x_dipole}, Y={y_dipole}, Z={y_dipole}, duration={dur_str}"
f"IMTQ: Commanding dipole X={x_dipole}, Y={y_dipole}, Z={y_dipole},"
f" duration={dur_str}"
)
q.add_pus_tc(
pack_dipole_command(
@ -248,7 +249,7 @@ def pack_imtq_test_into( # noqa C901
if op_code == OpCode.ENABLE_ENG_HK_NO_TORQUE:
q.add_log_cmd("IMTQ: Enable ENG HK")
interval = float(input("Please enter collection interval in seconds: "))
cmds = create_enable_periodic_hk_command_with_interval(
cmds = create_enable_periodic_hk_command_with_interval_with_diag(
diag=True,
sid=make_sid(object_id.as_bytes, ImtqSetId.ENG_HK_NO_TORQUE),
interval_seconds=interval,
@ -258,7 +259,7 @@ def pack_imtq_test_into( # noqa C901
if op_code == OpCode.DISABLE_ENG_HK_NO_TORQUE:
q.add_log_cmd("IMTQ: Disable ENG HK (No Torque)")
q.add_pus_tc(
create_disable_periodic_hk_command(
create_disable_periodic_hk_command_with_diag(
True, make_sid(object_id.as_bytes, ImtqSetId.ENG_HK_NO_TORQUE)
)
)
@ -275,7 +276,7 @@ def pack_imtq_test_into( # noqa C901
if op_code == OpCode.ENABLE_ENG_HK_WITH_TORQUE:
q.add_log_cmd("IMTQ: Enable ENG HK with torque")
interval = float(input("Please enter collection interval in seconds: "))
cmds = create_enable_periodic_hk_command_with_interval(
cmds = create_enable_periodic_hk_command_with_interval_with_diag(
diag=True,
sid=make_sid(object_id.as_bytes, ImtqSetId.ENG_HK_SET_WITH_TORQUE),
interval_seconds=interval,
@ -285,7 +286,7 @@ def pack_imtq_test_into( # noqa C901
if op_code == OpCode.DISABLE_ENG_HK_WITH_TORQUE:
q.add_log_cmd("IMTQ: Disable ENG HK with Torque")
q.add_pus_tc(
create_disable_periodic_hk_command(
create_disable_periodic_hk_command_with_diag(
True, make_sid(object_id.as_bytes, ImtqSetId.ENG_HK_SET_WITH_TORQUE)
)
)
@ -320,14 +321,14 @@ def pack_imtq_test_into( # noqa C901
if op_code == OpCode.DISABLE_MGM_RAW_NO_TORQUE:
q.add_log_cmd("IMTQ: Disable MGM RAW HK (No Torque)")
q.add_pus_tc(
create_disable_periodic_hk_command(
create_disable_periodic_hk_command_with_diag(
True, make_sid(object_id.as_bytes, ImtqSetId.RAW_MTM_NO_TORQUE)
)
)
if op_code == OpCode.ENABLE_MGM_RAW_NO_TORQUE:
q.add_log_cmd("IMTQ: Enable MGM RAW HK (No Torque)")
interval = float(input("Please enter collection interval in seconds: "))
cmds = create_enable_periodic_hk_command_with_interval(
cmds = create_enable_periodic_hk_command_with_interval_with_diag(
diag=True,
sid=make_sid(object_id.as_bytes, ImtqSetId.RAW_MTM_NO_TORQUE),
interval_seconds=interval,
@ -346,7 +347,7 @@ def pack_imtq_test_into( # noqa C901
if op_code == OpCode.ENABLE_MGM_RAW_WITH_TORQUE:
q.add_log_cmd("IMTQ: Enable MGM RAW HK (No Torque)")
interval = float(input("Please enter collection interval in seconds: "))
cmds = create_enable_periodic_hk_command_with_interval(
cmds = create_enable_periodic_hk_command_with_interval_with_diag(
diag=True,
sid=make_sid(object_id.as_bytes, ImtqSetId.RAW_MTM_WITH_TORQUE),
interval_seconds=interval,
@ -356,7 +357,7 @@ def pack_imtq_test_into( # noqa C901
if op_code == OpCode.DISABLE_MGM_RAW_WITH_TORQUE:
q.add_log_cmd("IMTQ: Disable MGM RAW HK (No Torque)")
q.add_pus_tc(
create_disable_periodic_hk_command(
create_disable_periodic_hk_command_with_diag(
True, make_sid(object_id.as_bytes, ImtqSetId.RAW_MTM_WITH_TORQUE)
)
)
@ -388,7 +389,8 @@ def pack_dipole_command(
duration = int(round(duration))
if duration < 0 or duration > pow(2, 16) - 1:
raise ValueError(
f"Duration in ms of {duration} smaller than 0 or larger than allowed {pow(2, 16) - 1}"
f"Duration in ms of {duration} smaller than 0 or larger than allowed"
f" {pow(2, 16) - 1}"
)
command += struct.pack("!h", x_dipole)
command += struct.pack("!h", y_dipole)
@ -400,7 +402,8 @@ def pack_dipole_command(
def raise_dipole_error(dipole_str: str, value: int):
raise ValueError(
f"{dipole_str} {value} negative or larger than maximum allowed 2000 * 10^-4*Am^2"
f"{dipole_str} {value} negative or larger than maximum allowed 2000 *"
" 10^-4*Am^2"
)

View File

@ -261,14 +261,12 @@ def pack_set_speed_command(
if speed > 0:
if speed < 1000 or speed > 65000:
raise ValueError(
"Invalid RW speed specified. "
"Allowed range is [1000, 65000] 0.1 * RPM"
"Invalid RW speed specified. Allowed range is [1000, 65000] 0.1 * RPM"
)
elif speed < 0:
if speed < -65000 or speed > -1000:
raise ValueError(
"Invalid RW speed specified. "
"Allowed range is [-65000, -1000] 0.1 * RPM"
"Invalid RW speed specified. Allowed range is [-65000, -1000] 0.1 * RPM"
)
else:
# Speed is 0
@ -304,15 +302,16 @@ def handle_rw_hk_data(
speed_rpm = speed / 10.0
ref_speed_rpm = ref_speed / 10.0
pw.dlog(
f"Temperature {temp} C | Speed {speed_rpm} rpm | Reference Speed {ref_speed_rpm} rpm"
f"Temperature {temp} C | Speed {speed_rpm} rpm | Reference Speed"
f" {ref_speed_rpm} rpm"
)
pw.dlog(
f"State {state}. 0: Error, 1: Idle, 2: Coasting, 3: Running, speed stable, "
f"4: Running, speed changing"
"4: Running, speed changing"
)
pw.dlog(
f"Current Limit Control mode {clc_mode}. 0: Low Current Mode (0.3 A), "
f"1: High Current Mode (0.6 A)"
"1: High Current Mode (0.6 A)"
)
pw.dlog(FsfwTmTcPrinter.get_validity_buffer(hk_data[current_idx:], 5))
if set_id == RwSetId.LAST_RESET:
@ -361,22 +360,24 @@ def handle_rw_hk_data(
) = struct.unpack(fmt_str, hk_data[current_idx : current_idx + inc_len])
pw.dlog(
f"MCU Temperature {mcu_temp} | Pressure Sensore Temperature {pressure_sens_temp} C"
f"MCU Temperature {mcu_temp} | Pressure Sensore Temperature"
f" {pressure_sens_temp} C"
)
pw.dlog(f"Last Reset Status {last_reset_status}")
pw.dlog(
f"Current Limit Control mode {clc_mode}. 0: Low Current Mode (0.3 A), "
f"1: High Current Mode (0.6 A)"
"1: High Current Mode (0.6 A)"
)
pw.dlog(f"Speed {current_speed} rpm | Reference Speed {ref_speed} rpm")
pw.dlog(
f"State {state}. 0: Error, 1: Idle, 2: Coasting, 3: Running, speed stable, "
f"4: Running, speed changing"
"4: Running, speed changing"
)
pw.dlog("Number Of Invalid Packets:")
pw.dlog("CRC | Length | CMD")
pw.dlog(
f"{num_invalid_crc_packets} | {num_invalid_len_packets} | {num_invalid_cmd_packets}"
f"{num_invalid_crc_packets} | {num_invalid_len_packets} |"
f" {num_invalid_cmd_packets}"
)
pw.dlog(
f"Num Of CMD Executed Requests {num_of_cmd_executed_requests} | "
@ -388,15 +389,16 @@ def handle_rw_hk_data(
"RegOverrunErrs | TotalErrs"
)
pw.dlog(
f"{uart_num_of_bytes_written} | {uart_num_of_bytes_read} | {uart_num_parity_errors} | "
f"{uart_num_noise_errors} | {uart_num_frame_errors} | {uart_num_reg_overrun_errors} | "
f"{uart_total_num_errors}"
f"{uart_num_of_bytes_written} | {uart_num_of_bytes_read} |"
f" {uart_num_parity_errors} | {uart_num_noise_errors} |"
f" {uart_num_frame_errors} | {uart_num_reg_overrun_errors} |"
f" {uart_total_num_errors}"
)
pw.dlog("SPI COM Info:")
pw.dlog("NumBytesWritten | NumBytesRead | RegOverrunErrs | TotalErrs")
pw.dlog(
f"{spi_num_bytes_written} | {spi_num_bytes_read} | {spi_num_reg_overrun_errors} | "
f"{spi_total_num_errors}"
f"{spi_num_bytes_written} | {spi_num_bytes_read} |"
f" {spi_num_reg_overrun_errors} | {spi_total_num_errors}"
)
if current_idx > 0:
pw.dlog(

View File

@ -83,7 +83,7 @@ def pack_pdec_handler_test(
0,
ParameterId.POSITIVE_WINDOW,
pw,
).pack()
)
)
)
if op_code == OpCode.NEGATIVE_WINDOW:
@ -96,7 +96,7 @@ def pack_pdec_handler_test(
0,
ParameterId.NEGATIVE_WINDOW,
nw,
).pack()
)
)
)
if op_code == OpCode.RESET_NO_INIT:

View File

@ -3,6 +3,7 @@ import enum
from eive_tmtc.config.definitions import CustomServiceList
from eive_tmtc.config.object_ids import COM_SUBSYSTEM_ID
from eive_tmtc.tmtc.com.syrlinks_handler import Datarate
from tmtccmd.pus.s20_fsfw_param_defs import create_scalar_u8_parameter
from .defs import Mode as ComMode
@ -21,7 +22,6 @@ from tmtccmd.tc.pus_200_fsfw_mode import (
)
from tmtccmd.tc.pus_20_fsfw_param import (
create_load_param_cmd,
pack_scalar_u8_parameter_app_data,
)
from tmtccmd.pus.s20_fsfw_param import create_scalar_u32_parameter
@ -87,7 +87,7 @@ def build_com_subsystem_cmd(p: ServiceProviderParams): # noqa C901
q.add_log_cmd(f"{prefix}: {Info.UPDATE_DEFAULT_DATARATE_LOW}")
q.add_pus_tc(
create_load_param_cmd(
pack_scalar_u8_parameter_app_data(
create_scalar_u8_parameter(
COM_SUBSYSTEM_ID,
0,
ParameterId.DATARATE,
@ -99,7 +99,7 @@ def build_com_subsystem_cmd(p: ServiceProviderParams): # noqa C901
q.add_log_cmd(f"{prefix}: {Info.UPDATE_DEFAULT_DATARATE_HIGH}")
q.add_pus_tc(
create_load_param_cmd(
pack_scalar_u8_parameter_app_data(
create_scalar_u8_parameter(
COM_SUBSYSTEM_ID,
0,
ParameterId.DATARATE,
@ -122,7 +122,7 @@ def build_com_subsystem_cmd(p: ServiceProviderParams): # noqa C901
0,
ParameterId.TRANSMITTER_TIMEOUT,
timeout,
).pack()
)
)
)
elif o == OpCode.READ_MODE:

View File

@ -21,9 +21,9 @@ from tmtccmd.tc import DefaultPusQueueHelper
from tmtccmd.tc.pus_3_fsfw_hk import (
make_sid,
create_request_one_diag_command,
create_enable_periodic_hk_command_with_interval,
create_disable_periodic_hk_command,
create_request_one_hk_command,
create_enable_periodic_hk_command_with_interval_with_diag,
create_disable_periodic_hk_command_with_diag,
)
from spacepackets.ecss.tc import PusTelecommand
from tmtccmd.tc.pus_200_fsfw_mode import Mode, create_mode_command
@ -182,24 +182,28 @@ def pack_syrlinks_command( # noqa C901: Complexity okay here.
q.add_log_cmd(f"{prefix}: {Info.ENABLE_HK_RX_REGS}")
sid = make_sid(obyt, SetId.RX_REGISTERS_DATASET)
interval = float(input("HK interval in floating point seconds"))
cmds = create_enable_periodic_hk_command_with_interval(True, sid, interval)
cmds = create_enable_periodic_hk_command_with_interval_with_diag(
True, sid, interval
)
for cmd in cmds:
q.add_pus_tc(cmd)
if op_code in OpCode.DISABLE_HK_RX_REGS:
q.add_log_cmd(f"{prefix}: {Info.DISABLE_HK_RX_REGS}")
sid = make_sid(obyt, SetId.RX_REGISTERS_DATASET)
q.add_pus_tc(create_disable_periodic_hk_command(True, sid))
q.add_pus_tc(create_disable_periodic_hk_command_with_diag(True, sid))
if op_code in OpCode.ENABLE_HK_TX_REGS:
q.add_log_cmd(f"{prefix}: {Info.ENABLE_HK_TX_REGS}")
sid = make_sid(obyt, SetId.TX_REGISTERS_DATASET)
interval = float(input("HK interval in floating point seconds"))
cmds = create_enable_periodic_hk_command_with_interval(True, sid, interval)
cmds = create_enable_periodic_hk_command_with_interval_with_diag(
True, sid, interval
)
for cmd in cmds:
q.add_pus_tc(cmd)
if op_code in OpCode.DISABLE_HK_TX_REGS:
q.add_log_cmd(f"{prefix}: {Info.DISABLE_HK_TX_REGS}")
sid = make_sid(obyt, SetId.TX_REGISTERS_DATASET)
q.add_pus_tc(create_disable_periodic_hk_command(True, sid))
q.add_pus_tc(create_disable_periodic_hk_command_with_diag(True, sid))
if op_code in OpCode.HK_TX_REGS:
q.add_log_cmd(f"{prefix}: {Info.HK_TX_REGS}")
sid = make_sid(obyt, SetId.TX_REGISTERS_DATASET)

View File

@ -570,12 +570,12 @@ def handle_ploc_mpsoc_hk_data(pw: PrintWrapper, hk_data: bytes, set_id: int):
pw.dlog(f"CAM SoC Temperature: {cam_soc_temp}")
pw.dlog(f"System Monitor Temperature: {sysmon_temp}")
pw.dlog(
f"SYSMON VCC INT {sysmon_vcc_int:.3f} | SYSMON VCC AUX {sysmon_vcc_aux:.3f} | "
f"SYSMON VCC BRAM {sysmon_vcc_bram:.3f}"
f"SYSMON VCC INT {sysmon_vcc_int:.3f} | SYSMON VCC AUX"
f" {sysmon_vcc_aux:.3f} | SYSMON VCC BRAM {sysmon_vcc_bram:.3f}"
)
pw.dlog(
f"SYSMON VCC PAUX {sysmon_vcc_paux:.3f} | SYSMON VCC PINT {sysmon_vcc_pint:.3f} | "
f"SYSMON VCC PDRO {sysmon_vcc_pdro:.3f}"
f"SYSMON VCC PAUX {sysmon_vcc_paux:.3f} | SYSMON VCC PINT"
f" {sysmon_vcc_pint:.3f} | SYSMON VCC PDRO {sysmon_vcc_pdro:.3f}"
)
fmt_str = "!fffffffffffff"
@ -602,8 +602,9 @@ def handle_ploc_mpsoc_hk_data(pw: PrintWrapper, hk_data: bytes, set_id: int):
f"SYSMON MBA 1V8 {sysmon_mb_1v8:.3f}"
)
pw.dlog(
f"SYSMON VCC 12V {sysmon_vcc_12v:.3f} | SYSMON VCC 5V {sysmon_vcc_5v:.3f} | "
f"SYSMON VCC 3V3 {sysmon_vcc_3v3:.3f} | SYSMON VCC 3V3VA {sysmon_vcc_3v3va}"
f"SYSMON VCC 12V {sysmon_vcc_12v:.3f} | SYSMON VCC 5V {sysmon_vcc_5v:.3f} |"
f" SYSMON VCC 3V3 {sysmon_vcc_3v3:.3f} | SYSMON VCC 3V3VA"
f" {sysmon_vcc_3v3va}"
)
pw.dlog(
f"SYSMON VCC 2V5DDR {sysmon_vcc_2v5ddr:.3f} | "

View File

@ -471,8 +471,8 @@ def pack_ploc_supv_commands(p: ServiceProviderParams): # noqa C901
custom_data.extend(struct.pack("!B", memory_id))
custom_data.extend(struct.pack("!I", start_address))
q.add_log_cmd(
f"{prefix}: {Info.MEM_CHECK} for file {update_file} at memory ID {memory_id} at start "
f"address {start_address}"
f"{prefix}: {Info.MEM_CHECK} for file {update_file} at memory ID"
f" {memory_id} at start address {start_address}"
)
command = create_action_cmd(
object_id.as_bytes, SupvActionId.MEM_CHECK, custom_data
@ -722,10 +722,42 @@ def get_event_buffer_path() -> str:
return file
class SocState(enum.IntEnum):
OFF = 0
BOOTING = 1
OPERATIONAL = 2
SHUTDOWN = 3
def handle_supv_hk_data(set_id: int, hk_data: bytes, pw: PrintWrapper):
current_idx = 0
if set_id == SetIds.HK_REPORT:
pass
fmt_str = "!IIIQIIIIIBBBB"
inc_len = struct.calcsize(fmt_str)
(
temp_ps,
temp_pl,
temp_sup,
uptime,
cpu_load,
avail_heap,
num_tcs,
num_tms,
soc_state,
nvm_0_1_state,
nvm_3_state,
mission_io_state,
fmc_state,
) = struct.unpack(fmt_str, hk_data[:inc_len])
pw.dlog(f"Temp PS {temp_ps} C | Temp PL {temp_pl} C | Temp SUP {temp_sup} C")
pw.dlog(f"Uptime {uptime} | CPU Load {cpu_load} | Avail Heap {avail_heap}")
pw.dlog(f"Number TCs {num_tcs} | Number TMs {num_tms}")
pw.dlog(f"SOC state {SocState(soc_state)}")
pw.dlog(f"NVM 01 State {nvm_0_1_state}")
pw.dlog(f"NVM 3 State {nvm_3_state}")
pw.dlog(f"Mission IO state {mission_io_state}")
pw.dlog(f"FMC state {fmc_state}")
pw.dlog(FsfwTmTcPrinter.get_validity_buffer(hk_data[inc_len:], 13))
elif set_id == SetIds.BOOT_STATUS_REPORT:
fmt_str = "!BBIIBBBBBB"
inc_len = struct.calcsize(fmt_str)
@ -743,7 +775,8 @@ def handle_supv_hk_data(set_id: int, hk_data: bytes, pw: PrintWrapper):
) = struct.unpack(fmt_str, hk_data[0 : 0 + inc_len])
current_idx += inc_len
pw.dlog(
f"SoC state (0:off, 1:booting, 2:update, 3:operating, 4:shutdown, 5:reset): {soc_state}"
"SoC state (0:off, 1:booting, 2:update, 3:operating, 4:shutdown, 5:reset):"
f" {soc_state}"
)
pw.dlog(f"Power Cycles {power_cycles}")
pw.dlog(f"Boot after {boot_after_ms} ms | Boot timeout {boot_timeout_ms} ms")

View File

@ -20,7 +20,8 @@ from tmtccmd.tc.pus_11_tc_sched import (
create_enable_tc_sched_cmd,
create_time_tagged_cmd,
)
from tmtccmd.tc.pus_200_fsfw_mode import pack_mode_data, Mode, Subservice
from tmtccmd.pus.s200_fsfw_mode import Subservice
from tmtccmd.tc.pus_200_fsfw_mode import pack_mode_data, Mode
from tmtccmd.tc.pus_20_fsfw_param import (
create_scalar_double_parameter,
create_load_param_cmd,
@ -35,18 +36,22 @@ _LOGGER = logging.getLogger(__name__)
class OpCode:
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"]
SWITCH_ON = "on"
SWITCH_OFF = "off"
NORMAL_SSR = "nml_ssr"
NORMAL_DRO = "nml_dro"
NORMAL_X8 = "nml_x8"
NORMAL_TX = "nml_tx"
NORMAL_MPA = "nml_mpa"
NORMAL_HPA = "nml_hpa"
ENABLE_HK = ["enable_hk"]
DISABLE_HK = ["disable_hk"]
REQ_OS_HK = ["hk_os"]
ENABLE_HK = "enable_hk"
DISABLE_HK = "disable_hk"
REQ_OS_HK = "hk_os"
UPDATE_I_UPPER_LIMIT = "update_i_upper_limit"
UPDATE_V_LOWER_LIMIT = "update_v_lower_limit"
UPDATE_V_UPPER_LIMIT = "update_v_upper_limit"
INJECT_SSR_TO_DRO_FAILURE = ["10", "inject_ssr_dro_fault"]
INJECT_DRO_TO_X8_FAILURE = ["11", "inject_dro_x8_fault"]
@ -70,6 +75,9 @@ class Info:
SWITCH_HPA_ON_PROC = "Switch HPA on procedure"
ENABLE_HK = "Enable HK"
DISABLE_HK = "Disable HK"
UPDATE_I_UPPER_LIMIT = "Update upper current parameter"
UPDATE_V_LOWER_LIMIT = "Update lower voltage parameter"
UPDATE_V_UPPER_LIMIT = "Update upper voltage parameter"
class SetId(enum.IntEnum):
@ -119,7 +127,7 @@ class SubmodeForNormalMode(enum.IntEnum):
)
class ParamIds(enum.IntEnum):
class ParamId(enum.IntEnum):
NEG_V_LOWER_BOUND = 0
NEG_V_UPPER_BOUND = 1
@ -157,6 +165,15 @@ class ParamIds(enum.IntEnum):
INJECT_ALL_ON_FAILURE = 35
class DevSelect(enum.IntEnum):
SSR_NEG_V = 0
DRO = 1
X8 = 2
TX = 3
MPA = 4
HPA = 5
@tmtc_definitions_provider
def add_pl_pcdu_cmds(defs: TmtcDefinitionWrapper):
oce = OpCodeEntry()
@ -171,6 +188,9 @@ def add_pl_pcdu_cmds(defs: TmtcDefinitionWrapper):
oce.add(keys=OpCode.NORMAL_HPA, info=Info.NORMAL_HPA)
oce.add(keys=OpCode.REQ_OS_HK, info=Info.REQ_OS_HK)
oce.add(keys=OpCode.ENABLE_HK, info=Info.ENABLE_HK)
oce.add(keys=OpCode.UPDATE_V_LOWER_LIMIT, info=Info.UPDATE_V_LOWER_LIMIT)
oce.add(keys=OpCode.UPDATE_V_UPPER_LIMIT, info=Info.UPDATE_V_UPPER_LIMIT)
oce.add(keys=OpCode.UPDATE_I_UPPER_LIMIT, info=Info.UPDATE_I_UPPER_LIMIT)
oce.add(
keys=OpCode.INJECT_SSR_TO_DRO_FAILURE,
info="Inject failure SSR to DRO transition",
@ -198,9 +218,9 @@ def add_pl_pcdu_cmds(defs: TmtcDefinitionWrapper):
def pack_pl_pcdu_commands( # noqa C901: Complexity is okay here.
q: DefaultPusQueueHelper, op_code: str
): # noqa C901: Complexity is okay here.
if op_code in OpCode.SWITCH_ON:
if op_code == OpCode.SWITCH_ON:
pack_pl_pcdu_mode_cmd(q=q, info=Info.SWITCH_ON, mode=Mode.ON, submode=0)
if op_code in OpCode.SWITCH_OFF:
if op_code == OpCode.SWITCH_OFF:
pack_pl_pcdu_mode_cmd(q=q, info=Info.SWITCH_OFF, mode=Mode.OFF, submode=0)
if op_code in OpCode.ENABLE_HK:
interval = float(
@ -212,13 +232,13 @@ def pack_pl_pcdu_commands( # noqa C901: Complexity is okay here.
q.add_log_cmd(f"Enable PL PCDU HK with interval of {interval} seconds")
for cmd in cmds:
q.add_pus_tc(cmd)
if op_code in OpCode.DISABLE_HK:
if op_code == OpCode.DISABLE_HK:
cmd = disable_periodic_hk_command(
diag=True, sid=make_sid(PL_PCDU_ID, SetId.ADC)
)
q.add_log_cmd("Disabling PL PCDU HK")
q.add_pus_tc(cmd)
if op_code in OpCode.NORMAL_SSR:
if op_code == OpCode.NORMAL_SSR:
pack_pl_pcdu_mode_cmd(
q=q,
info=Info.NORMAL_SSR,
@ -227,54 +247,90 @@ def pack_pl_pcdu_commands( # noqa C901: Complexity is okay here.
NormalSubmodesMask.SOLID_STATE_RELAYS_ADC_ON
),
)
if op_code in OpCode.NORMAL_DRO:
if op_code == OpCode.NORMAL_DRO:
pack_pl_pcdu_mode_cmd(
q=q,
info=Info.NORMAL_DRO,
mode=Mode.NORMAL,
submode=submode_mask_to_submode(NormalSubmodesMask.DRO_ON),
)
if op_code in OpCode.NORMAL_X8:
if op_code == OpCode.NORMAL_X8:
pack_pl_pcdu_mode_cmd(
q=q,
info=Info.NORMAL_X8,
mode=Mode.NORMAL,
submode=submode_mask_to_submode(NormalSubmodesMask.X8_ON),
)
if op_code in OpCode.NORMAL_TX:
if op_code == OpCode.NORMAL_TX:
pack_pl_pcdu_mode_cmd(
q=q,
info=Info.NORMAL_TX,
mode=Mode.NORMAL,
submode=submode_mask_to_submode(NormalSubmodesMask.TX_ON),
)
if op_code in OpCode.NORMAL_MPA:
if op_code == OpCode.NORMAL_MPA:
pack_pl_pcdu_mode_cmd(
q=q,
info=Info.NORMAL_MPA,
mode=Mode.NORMAL,
submode=submode_mask_to_submode(NormalSubmodesMask.MPA_ON),
)
if op_code in OpCode.NORMAL_HPA:
if op_code == OpCode.NORMAL_HPA:
pack_pl_pcdu_mode_cmd(
q=q,
info=Info.NORMAL_HPA,
mode=Mode.NORMAL,
submode=submode_mask_to_submode(NormalSubmodesMask.HPA_ON),
)
if op_code in OpCode.REQ_OS_HK:
if op_code == OpCode.REQ_OS_HK:
q.add_log_cmd(f"PL PCDU: {Info.REQ_OS_HK}")
q.add_pus_tc(
generate_one_diag_command(
sid=make_sid(object_id=PL_PCDU_ID, set_id=SetId.ADC)
)
)
if op_code in OpCode.SWITCH_HPA_ON_PROC:
if op_code == OpCode.UPDATE_I_UPPER_LIMIT:
q.add_log_cmd(Info.UPDATE_I_UPPER_LIMIT)
print("Select device to update lower current limit for: ")
param_id = dev_select_to_upper_i_update_param_id(dev_select_prompt(True))
new_param_value = float(
input("Please specify new parameter value as a double: ")
)
q.add_pus_tc(
create_load_param_cmd(
create_scalar_double_parameter(PL_PCDU_ID, 0, param_id, new_param_value)
)
)
if op_code == OpCode.UPDATE_V_LOWER_LIMIT:
q.add_log_cmd(Info.UPDATE_V_LOWER_LIMIT)
print("Select device to update lower voltage limit for: ")
param_id = dev_select_to_lower_u_update_param_id(dev_select_prompt(False))
new_param_value = float(
input("Please specify new parameter value as a double: ")
)
q.add_pus_tc(
create_load_param_cmd(
create_scalar_double_parameter(PL_PCDU_ID, 0, param_id, new_param_value)
)
)
if op_code == OpCode.UPDATE_V_UPPER_LIMIT:
q.add_log_cmd(Info.UPDATE_V_UPPER_LIMIT)
print("Select device to update upper voltage limit for: ")
param_id = dev_select_to_upper_u_update_param_id(dev_select_prompt(False))
new_param_value = float(
input("Please specify new parameter value as a double: ")
)
q.add_pus_tc(
create_load_param_cmd(
create_scalar_double_parameter(PL_PCDU_ID, 0, param_id, new_param_value)
)
)
if op_code == OpCode.SWITCH_HPA_ON_PROC:
hpa_on_procedure(q)
if op_code in OpCode.INJECT_ALL_ON_FAILURE:
if op_code == OpCode.INJECT_ALL_ON_FAILURE:
pack_failure_injection_cmd(
q=q,
param_id=ParamIds.INJECT_ALL_ON_FAILURE,
param_id=ParamId.INJECT_ALL_ON_FAILURE,
print_str="All On",
)
@ -284,7 +340,7 @@ def hpa_on_procedure(q: DefaultPusQueueHelper):
if delay_dro_to_x8 is None:
delay_dro_to_x8 = 900
q.add_log_cmd(
f"Starting procedure to switch on PL PCDU HPA with DRO to X8 "
"Starting procedure to switch on PL PCDU HPA with DRO to X8 "
f"delay of {delay_dro_to_x8} seconds"
)
pl_pcdu_on = PusTelecommand(
@ -510,3 +566,72 @@ def handle_plpcdu_hk(pw: PrintWrapper, set_id: int, hk_data: bytes):
FsfwTmTcPrinter.get_validity_buffer(
validity_buffer=hk_data[current_idx:], num_vars=3
)
def dev_select_prompt(skip_ssr: bool) -> DevSelect:
while True:
for dev in DevSelect:
if skip_ssr and dev == DevSelect.SSR_NEG_V:
continue
print(f"{dev}: {dev.name}")
dev_select = int(input("Select device by index: "))
try:
return DevSelect(dev_select)
except IndexError:
_LOGGER.warn("Invalid paramter index, try again.")
continue
def dev_select_to_upper_i_update_param_id(dev_select: DevSelect) -> ParamId:
param_id = None
if dev_select == DevSelect.DRO:
param_id = ParamId.DRO_I_UPPER_BOUND
elif dev_select == DevSelect.X8:
param_id = ParamId.X8_I_UPPER_BOUND
elif dev_select == DevSelect.TX:
param_id = ParamId.TX_I_UPPER_BOUND
elif dev_select == DevSelect.MPA:
param_id = ParamId.MPA_I_UPPER_BOUND
elif dev_select == DevSelect.HPA:
param_id = ParamId.HPA_I_UPPER_BOUND
if param_id is None:
raise ValueError("invalid parameter ID")
return param_id
def dev_select_to_lower_u_update_param_id(dev_select: DevSelect) -> ParamId:
param_id = None
if dev_select == DevSelect.SSR_NEG_V:
param_id = ParamId.NEG_V_LOWER_BOUND
if dev_select == DevSelect.DRO:
param_id = ParamId.DRO_U_LOWER_BOUND
elif dev_select == DevSelect.X8:
param_id = ParamId.X8_U_LOWER_BOUND
elif dev_select == DevSelect.TX:
param_id = ParamId.TX_U_LOWER_BOUND
elif dev_select == DevSelect.MPA:
param_id = ParamId.MPA_U_LOWER_BOUND
elif dev_select == DevSelect.HPA:
param_id = ParamId.HPA_U_LOWER_BOUND
if param_id is None:
raise ValueError("invalid parameter ID")
return param_id
def dev_select_to_upper_u_update_param_id(dev_select: DevSelect) -> ParamId:
param_id = None
if dev_select == DevSelect.SSR_NEG_V:
param_id = ParamId.NEG_V_UPPER_BOUND
if dev_select == DevSelect.DRO:
param_id = ParamId.DRO_U_UPPER_BOUND
elif dev_select == DevSelect.X8:
param_id = ParamId.X8_U_UPPER_BOUND
elif dev_select == DevSelect.TX:
param_id = ParamId.TX_U_UPPER_BOUND
elif dev_select == DevSelect.MPA:
param_id = ParamId.MPA_U_UPPER_BOUND
elif dev_select == DevSelect.HPA:
param_id = ParamId.HPA_U_UPPER_BOUND
if param_id is None:
raise ValueError("invalid parameter ID")
return param_id

View File

@ -26,8 +26,11 @@ class OpCode:
ALL_CELLS_CMD = "allcells"
FRAM = "fram"
ON = "on"
SWITCH_ON = "on"
SWITCH_OFF = "off"
OFF = "off"
SWITCH_OFF = OFF
NORMAL = "normal"
class ActionId(enum.IntEnum):
@ -53,6 +56,7 @@ class Info:
SWITCH_ON = "Switch Scex on"
SWITCH_OFF = "Switch Scex off"
NORMAL = "Switch SCEX to normal mode"
@tmtc_definitions_provider
@ -66,8 +70,9 @@ def add_scex_cmds(defs: TmtcDefinitionWrapper):
oce.add(keys=OpCode.ALL_CELLS_CMD, info=Info.ALL_CELLS_CMD)
oce.add(keys=OpCode.FRAM, info=Info.FRAM)
oce.add(keys=OpCode.SWITCH_ON, info=Info.SWITCH_ON)
oce.add(keys=OpCode.SWITCH_OFF, info=Info.SWITCH_OFF)
oce.add(keys=OpCode.ON, info=Info.SWITCH_ON)
oce.add(keys=OpCode.OFF, info=Info.SWITCH_OFF)
oce.add(keys=OpCode.NORMAL, info=Info.NORMAL)
defs.add_service(
name=CustomServiceList.SCEX.value, info="SCEX Device", op_code_entry=oce
@ -78,7 +83,7 @@ def add_scex_cmds(defs: TmtcDefinitionWrapper):
def pack_scex_cmds(p: ServiceProviderParams): # noqa C901
op_code = p.op_code
q = p.queue_helper
if op_code == OpCode.SWITCH_ON:
if op_code == OpCode.ON:
q.add_log_cmd(Info.SWITCH_ON)
q.add_pus_tc(
PusTelecommand(
@ -87,7 +92,16 @@ def pack_scex_cmds(p: ServiceProviderParams): # noqa C901
app_data=pack_mode_data(SCEX_HANDLER_ID, Mode.ON, 0),
)
)
if op_code == OpCode.SWITCH_OFF:
if op_code == OpCode.NORMAL:
q.add_log_cmd(Info.NORMAL)
q.add_pus_tc(
PusTelecommand(
service=200,
subservice=Subservice.TC_MODE_COMMAND,
app_data=pack_mode_data(SCEX_HANDLER_ID, Mode.NORMAL, 0),
)
)
if op_code == OpCode.OFF:
q.add_log_cmd(Info.SWITCH_OFF)
q.add_pus_tc(
PusTelecommand(
@ -131,8 +145,7 @@ def pack_scex_cmds(p: ServiceProviderParams): # noqa C901
cell_select = int(cell_select)
if cell_select < 1 or cell_select > 10:
print(
f"Invalid cell number {cell_select}, "
f"Please enter a valid number: "
f"Invalid cell number {cell_select}, Please enter a valid number: "
)
continue
cn = cell_select - 1

View File

@ -0,0 +1,2 @@
from .subsystem import add_eps_subsystem_cmds
from .pwr_ctrl import pwr_cmd_defs

View File

@ -200,7 +200,8 @@ def pack_common_gomspace_cmds( # noqa C901: Complexity is okay here.
if op_code in GomspaceOpCode.SAVE_TABLE_DEFAULT:
source_table = int(
input(
"Source table [0: Board Config, 1: Module Config, 2: Calibration Parameter]: "
"Source table [0: Board Config, 1: Module Config, 2: Calibration"
" Parameter]: "
)
)
if source_table not in [0, 1, 2]:
@ -215,8 +216,8 @@ def pack_common_gomspace_cmds( # noqa C901: Complexity is okay here.
if op_code in GomspaceOpCode.LOAD_TABLE:
target_table = int(
input(
"Target table ID [0: Board Config, 1: Module Config, 2: Calibration Parameter, "
"4: HK TM]: "
"Target table ID [0: Board Config, 1: Module Config, 2: Calibration"
" Parameter, 4: HK TM]: "
)
)
if target_table not in [0, 1, 2, 4]:
@ -224,8 +225,8 @@ def pack_common_gomspace_cmds( # noqa C901: Complexity is okay here.
if target_table != 4:
source_table = int(
input(
"Source table (file or default) [0: Board Config, 1: Module Config, "
"2: Calibration Parameter, value + 4 for default table]: "
"Source table (file or default) [0: Board Config, 1: Module Config,"
" 2: Calibration Parameter, value + 4 for default table]: "
)
)
if source_table not in [0, 1, 2, 4, 5, 6]:

View File

@ -0,0 +1,302 @@
import datetime
import enum
import logging
import struct
from eive_tmtc.config.definitions import CustomServiceList
from eive_tmtc.config.object_ids import PWR_CONTROLLER
from eive_tmtc.pus_tm.defs import PrintWrapper
from tmtccmd.config.tmtc import (
tmtc_definitions_provider,
TmtcDefinitionWrapper,
OpCodeEntry,
)
from tmtccmd.tc import service_provider
from tmtccmd.tc.queue import DefaultPusQueueHelper
from tmtccmd.tc.pus_200_fsfw_mode import Mode, pack_mode_command
from tmtccmd.tc.decorator import ServiceProviderParams
from tmtccmd.tc.pus_3_fsfw_hk import (
generate_one_hk_command,
make_sid,
enable_periodic_hk_command_with_interval,
disable_periodic_hk_command,
)
from tmtccmd.fsfw.tmtc_printer import FsfwTmTcPrinter
from tmtccmd.tc.pus_20_fsfw_param import create_load_param_cmd
from tmtccmd.pus.s20_fsfw_param_defs import (
create_scalar_float_parameter,
create_scalar_double_parameter,
)
_LOGGER = logging.getLogger(__name__)
class SetId(enum.IntEnum):
CORE_HK_SET = 0
ENABLE_PL_SET = 1
# class ActionId(enum.IntEnum):
class ParamId(enum.IntEnum):
BATTERY_INTERNAL_RESISTANCE = 0
BATTERY_MAXIMUM_CAPACITY = 1
COULOMB_COUNTER_VOLTAGE_UPPER_THRESHOLD = 2
MAX_ALLOWED_TIME_DIFF = 3
PAYLOAD_OP_LIMIT_ON = 4
PAYLOAD_OP_LIMIT_LOW = 5
HIGHER_MODES_LIMIT = 6
class OpCodes:
OFF = ["mode_off"]
ON = ["mode_on"]
NML = ["mode_normal"]
SET_PARAMETER = ["set_parameter"]
REQUEST_CORE_HK = ["core_hk"]
ENABLE_CORE_HK = ["core_enable_hk"]
DISABLE_CORE_HK = ["core_disable_hk"]
REQUEST_ENABLE_PL_HK = ["enable_pl_hk"]
ENABLE_ENABLE_PL_HK = ["enable_pl_enable_hk"]
DISABLE_ENABLE_PL_HK = ["enable_pl_disable_hk"]
class Info:
OFF = "PWR Ctrl Mode to OFF"
ON = "PWR Ctrl Mode to ON"
NML = "PWR Ctrl Mode to NORMAL"
SET_PARAMETER = "Set Parameter"
REQUEST_CORE_HK = "Request Core HK once"
ENABLE_CORE_HK = "Enable Core HK Data Generation"
DISABLE_CORE_HK = "Disable Core HK Data Generation"
REQUEST_ENABLE_PL_HK = "Request Enable PL HK once"
ENABLE_ENABLE_PL_HK = "Enable Enable PL HK Data Generation"
DISABLE_ENABLE_PL_HK = "Disable Enable PL HK Data Generation"
@tmtc_definitions_provider
def pwr_cmd_defs(defs: TmtcDefinitionWrapper):
oce = OpCodeEntry()
oce.add(keys=OpCodes.OFF, info=Info.OFF)
oce.add(keys=OpCodes.ON, info=Info.ON)
oce.add(keys=OpCodes.NML, info=Info.NML)
oce.add(keys=OpCodes.SET_PARAMETER, info=Info.SET_PARAMETER)
oce.add(keys=OpCodes.REQUEST_CORE_HK, info=Info.REQUEST_CORE_HK)
oce.add(keys=OpCodes.ENABLE_CORE_HK, info=Info.ENABLE_CORE_HK)
oce.add(keys=OpCodes.DISABLE_CORE_HK, info=Info.DISABLE_CORE_HK)
oce.add(keys=OpCodes.REQUEST_ENABLE_PL_HK, info=Info.REQUEST_ENABLE_PL_HK)
oce.add(keys=OpCodes.ENABLE_ENABLE_PL_HK, info=Info.ENABLE_ENABLE_PL_HK)
oce.add(keys=OpCodes.DISABLE_ENABLE_PL_HK, info=Info.DISABLE_ENABLE_PL_HK)
defs.add_service(
name=CustomServiceList.PWR_CTRL.value, info="PWR Controller", op_code_entry=oce
)
@service_provider(CustomServiceList.PWR_CTRL.value)
def pack_acs_ctrl_command(p: ServiceProviderParams):
op_code = p.op_code
q = p.queue_helper
if op_code in OpCodes.OFF:
q.add_log_cmd(f"{Info.OFF}")
q.add_pus_tc(pack_mode_command(PWR_CONTROLLER, Mode.OFF, 0))
elif op_code in OpCodes.ON:
q.add_log_cmd(f"{Info.ON}")
q.add_pus_tc(pack_mode_command(PWR_CONTROLLER, Mode.ON, 0))
elif op_code in OpCodes.NML:
q.add_log_cmd(f"{Info.NML}")
q.add_pus_tc(pack_mode_command(PWR_CONTROLLER, Mode.NORMAL, 0))
elif op_code in OpCodes.SET_PARAMETER:
q.add_log_cmd(f"{Info.SET_PARAMETER}")
set_pwr_ctrl_param(q)
elif op_code in OpCodes.REQUEST_CORE_HK:
q.add_log_cmd(Info.REQUEST_CORE_HK)
q.add_pus_tc(
generate_one_hk_command(make_sid(PWR_CONTROLLER, SetId.CORE_HK_SET))
)
elif op_code in OpCodes.ENABLE_CORE_HK:
interval = float(input("Please specify interval in floating point seconds: "))
q.add_log_cmd(Info.ENABLE_CORE_HK)
cmd_tuple = enable_periodic_hk_command_with_interval(
False, make_sid(PWR_CONTROLLER, SetId.CORE_HK_SET), interval
)
q.add_pus_tc(cmd_tuple[0])
q.add_pus_tc(cmd_tuple[1])
elif op_code in OpCodes.DISABLE_CORE_HK:
q.add_log_cmd(Info.DISABLE_CORE_HK)
q.add_pus_tc(
disable_periodic_hk_command(
False, make_sid(PWR_CONTROLLER, SetId.CORE_HK_SET)
)
)
elif op_code in OpCodes.REQUEST_ENABLE_PL_HK:
q.add_log_cmd(Info.REQUEST_ENABLE_PL_HK)
q.add_pus_tc(
generate_one_hk_command(make_sid(PWR_CONTROLLER, SetId.ENABLE_PL_SET))
)
elif op_code in OpCodes.ENABLE_ENABLE_PL_HK:
interval = float(input("Please specify interval in floating point seconds: "))
q.add_log_cmd(Info.ENABLE_ENABLE_PL_HK)
cmd_tuple = enable_periodic_hk_command_with_interval(
False, make_sid(PWR_CONTROLLER, SetId.ENABLE_PL_SET), interval
)
q.add_pus_tc(cmd_tuple[0])
q.add_pus_tc(cmd_tuple[1])
elif op_code in OpCodes.DISABLE_ENABLE_PL_HK:
q.add_log_cmd(Info.DISABLE_ENABLE_PL_HK)
q.add_pus_tc(
disable_periodic_hk_command(
False, make_sid(PWR_CONTROLLER, SetId.ENABLE_PL_SET)
)
)
def set_pwr_ctrl_param(q: DefaultPusQueueHelper):
for val in ParamId:
print("{:<2}: {:<20}".format(val, val.name))
param = int(input("Specify parameter to set \n" ""))
match param:
case ParamId.BATTERY_INTERNAL_RESISTANCE:
value = float(input("Specify parameter value to set [Ohm]: "))
q.add_pus_tc(
create_load_param_cmd(
create_scalar_float_parameter(
object_id=PWR_CONTROLLER,
domain_id=0,
unique_id=ParamId.BATTERY_INTERNAL_RESISTANCE,
parameter=value,
)
)
)
case ParamId.BATTERY_MAXIMUM_CAPACITY:
value = float(input("Specify parameter value to set [Ah]: "))
q.add_pus_tc(
create_load_param_cmd(
create_scalar_float_parameter(
object_id=PWR_CONTROLLER,
domain_id=0,
unique_id=ParamId.BATTERY_MAXIMUM_CAPACITY,
parameter=value,
)
)
)
case ParamId.COULOMB_COUNTER_VOLTAGE_UPPER_THRESHOLD:
value = float(input("Specify parameter value to set [V]: "))
q.add_pus_tc(
create_load_param_cmd(
create_scalar_float_parameter(
object_id=PWR_CONTROLLER,
domain_id=0,
unique_id=ParamId.COULOMB_COUNTER_VOLTAGE_UPPER_THRESHOLD,
parameter=value,
)
)
)
case ParamId.MAX_ALLOWED_TIME_DIFF:
value = float(input("Specify parameter value to set [s]: "))
q.add_pus_tc(
create_load_param_cmd(
create_scalar_double_parameter(
object_id=PWR_CONTROLLER,
domain_id=0,
unique_id=ParamId.MAX_ALLOWED_TIME_DIFF,
parameter=value,
)
)
)
case ParamId.PAYLOAD_OP_LIMIT_ON:
value = float(input("Specify parameter value to set [1]: "))
q.add_pus_tc(
create_load_param_cmd(
create_scalar_float_parameter(
object_id=PWR_CONTROLLER,
domain_id=0,
unique_id=ParamId.PAYLOAD_OP_LIMIT_ON,
parameter=value,
)
)
)
case ParamId.PAYLOAD_OP_LIMIT_LOW:
value = float(input("Specify parameter value to set [1]: "))
q.add_pus_tc(
create_load_param_cmd(
create_scalar_float_parameter(
object_id=PWR_CONTROLLER,
domain_id=0,
unique_id=ParamId.PAYLOAD_OP_LIMIT_LOW,
parameter=value,
)
)
)
case ParamId.HIGHER_MODES_LIMIT:
value = float(input("Specify parameter value to set [1]: "))
q.add_pus_tc(
create_load_param_cmd(
create_scalar_float_parameter(
object_id=PWR_CONTROLLER,
domain_id=0,
unique_id=ParamId.HIGHER_MODES_LIMIT,
parameter=value,
)
)
)
def handle_pwr_ctrl_hk_data(
pw: PrintWrapper,
set_id: int,
hk_data: bytes,
packet_time: datetime.datetime,
):
pw.ilog(_LOGGER, f"Received PWR CTRL HK with packet time {packet_time}")
match set_id:
case SetId.CORE_HK_SET:
handle_core_hk_data(pw, hk_data)
case SetId.ENABLE_PL_SET:
handle_enable_pl_data(pw, hk_data)
def handle_core_hk_data(pw: PrintWrapper, hk_data: bytes):
pw.dlog("Received Core HK Set")
fmt_int16 = "!h"
fmt_float = "!f"
inc_len_int16 = struct.calcsize(fmt_int16)
inc_len_float = struct.calcsize(fmt_float)
if len(hk_data) < inc_len_int16 + 2 * inc_len_float:
pw.dlog("Received HK set too small")
return
current_idx = 0
total_battery_current = struct.unpack(
fmt_int16, hk_data[current_idx : current_idx + inc_len_int16]
)[0]
current_idx += inc_len_int16
open_circuit_voltage_charge = struct.unpack(
fmt_float, hk_data[current_idx : current_idx + inc_len_float]
)[0]
current_idx += inc_len_float
coulomb_counter_charge = struct.unpack(
fmt_float, hk_data[current_idx : current_idx + inc_len_float]
)[0]
current_idx += inc_len_float
pw.dlog(f"Total Battery Current: {total_battery_current} [mA]")
pw.dlog(f"Open Circuit Voltage Charge: {open_circuit_voltage_charge*100:8.3f} [%]")
pw.dlog(f"Coulomb Counter Charge: {coulomb_counter_charge*100:8.3f} [%]")
FsfwTmTcPrinter.get_validity_buffer(hk_data[current_idx:], num_vars=3)
def handle_enable_pl_data(pw: PrintWrapper, hk_data: bytes):
pw.dlog("Received Enable PL HK Set")
fmt_uint16 = "!B"
inc_len_uint16 = struct.calcsize(fmt_uint16)
if len(hk_data) < inc_len_uint16:
pw.dlog("Received HK set too small")
return
current_idx = 0
pl_use_allowed = struct.unpack(
fmt_uint16, hk_data[current_idx : current_idx + inc_len_uint16]
)[0]
current_idx += inc_len_uint16
pw.dlog(f"PL Use Allowed: {pl_use_allowed}")
FsfwTmTcPrinter.get_validity_buffer(hk_data[current_idx:], num_vars=1)

View File

@ -0,0 +1,68 @@
import enum
from typing import Tuple, Dict
from spacepackets.ecss import PusTelecommand
from eive_tmtc.tmtc.common import pack_mode_cmd_with_info
from eive_tmtc.config.object_ids import EPS_SUBSYSTEM_ID
from eive_tmtc.config.definitions import CustomServiceList
from tmtccmd.config.tmtc import (
tmtc_definitions_provider,
TmtcDefinitionWrapper,
OpCodeEntry,
)
from tmtccmd.tc.pus_200_fsfw_mode import Subservice as ModeSubservices, Mode
from tmtccmd.tc import service_provider
from tmtccmd.tc.decorator import ServiceProviderParams
class OpCode(str, enum.Enum):
OFF = "off"
NML = "normal"
REPORT_ALL_MODES = "all_modes"
class Info(str, enum.Enum):
OFF = "Off Mode Command"
NML = "Normal Mode Command"
REPORT_ALL_MODES = "Report All Modes Recursively"
HANDLER_LIST: Dict[str, Tuple[int, int, str]] = {
OpCode.OFF: (Mode.OFF, 0, Info.OFF),
OpCode.NML: (Mode.NORMAL, 0, Info.NML),
}
@service_provider(CustomServiceList.EPS_SS.value)
def build_eps_subsystem_cmd(p: ServiceProviderParams):
op_code = p.op_code
q = p.queue_helper
info_prefix = "EPS Subsystem"
if op_code in OpCode.REPORT_ALL_MODES:
q.add_log_cmd(f"{info_prefix}: {Info.REPORT_ALL_MODES}")
q.add_pus_tc(
PusTelecommand(
service=200,
subservice=ModeSubservices.TC_MODE_ANNOUNCE_RECURSIVE,
app_data=EPS_SUBSYSTEM_ID,
)
)
mode_info_tup = HANDLER_LIST.get(op_code)
if mode_info_tup is None:
return
pack_mode_cmd_with_info(
object_id=EPS_SUBSYSTEM_ID,
info=f"{info_prefix}: {mode_info_tup[2]}",
mode=mode_info_tup[0],
submode=mode_info_tup[1],
q=q,
)
@tmtc_definitions_provider
def add_eps_subsystem_cmds(defs: TmtcDefinitionWrapper):
oce = OpCodeEntry()
for op_code, (_, _, info) in HANDLER_LIST.items():
oce.add(op_code, info)
oce.add(OpCode.REPORT_ALL_MODES, Info.REPORT_ALL_MODES)
defs.add_service(CustomServiceList.EPS_SS, "EPS Subsystem", oce)

View File

@ -75,8 +75,8 @@ class WdtInfo:
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}",
f"{WDT_LIST[idx].ljust(5)} | {self.wdt_reboots_list[idx]:010} |"
f" {self.time_pings_left_list[idx]:010}",
)
def parse(self, wdt_data: bytes, current_idx: int) -> int:
@ -327,8 +327,9 @@ def handle_p60_hk_data(pw: PrintWrapper, set_id: int, hk_data: bytes):
)
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}"
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"
f" {batt_discharge_current}"
)
pw.dlog(batt_info)
pw.dlog(
@ -419,12 +420,12 @@ def handle_acu_hk_data(pw: PrintWrapper, set_id: int, hk_data: bytes):
)
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"
f"Ground WDT: Reboot Count {wdt_cnt_gnd} | Time Left"
f" {wdt_gnd_time_left} sec"
)
pw.dlog(
"ACU Dev Types: 0:FRAM|1:ADC|2:ADC|3:DAC|4:DAC|"
"5:DAC|6:TempSens|7:Reserved"
"ACU Dev Types: 0:FRAM|1:ADC|2:ADC|3:DAC|4:DAC|5:DAC|6:TempSens|7:Reserved"
)
dev_parser.print(pw=pw)
FsfwTmTcPrinter.get_validity_buffer(
@ -474,7 +475,8 @@ def pdu_config_table_handler(
pw.dlog("[tcs, syrlinks, str, mgt, sus-n, scex, ploc, acs-a, unused]")
elif obj_id.as_bytes == PDU_2_HANDLER_ID:
pw.dlog(
"[obc, pl-pcdu-bat-nom, rw, heaters, sus-r, sa-depl, pl-pcdu-bat-red, acs-b, pl-cam]"
"[obc, pl-pcdu-bat-nom, rw, heaters, sus-r, sa-depl, pl-pcdu-bat-red,"
" acs-b, pl-cam]"
)
out_on_cnt = unpack_array_in_data(custom_data, 0x52, 2, 9, "H")
out_off_cnt = unpack_array_in_data(custom_data, 0x64, 2, 9, "H")

View File

@ -12,8 +12,8 @@ from tmtccmd.tc.pus_3_fsfw_hk import (
make_sid,
generate_one_hk_command,
create_request_one_diag_command,
create_enable_periodic_hk_command_with_interval,
create_request_one_hk_command,
create_enable_periodic_hk_command_with_interval_with_diag,
)
@ -68,7 +68,7 @@ def pack_tcs_ctrl_commands(q: DefaultPusQueueHelper, op_code: str):
)
if op_code == OpCode.ENABLE_TEMP_SET:
interval_seconds = float(input("Please specify interval in seconds: "))
cmds = create_enable_periodic_hk_command_with_interval(
cmds = create_enable_periodic_hk_command_with_interval_with_diag(
False, make_sid(TCS_CONTROLLER, CtrlSetId.PRIMARY_SENSORS), interval_seconds
)
for cmd in cmds:

View File

@ -148,8 +148,8 @@ def time_prompt_offset_from_now() -> datetime.datetime:
seconds_offset = math.floor(
float(
input(
"Please enter the time as a offset from now in seconds. Negative offset is "
"allowed: "
"Please enter the time as a offset from now in seconds. Negative offset"
" is allowed: "
)
)
)

43
eive_tmtc/tmtc/wdt.py Normal file
View File

@ -0,0 +1,43 @@
import enum
from tmtccmd.config.tmtc import (
OpCodeEntry,
TmtcDefinitionWrapper,
tmtc_definitions_provider,
)
from tmtccmd.pus.s8_fsfw_funccmd import create_action_cmd
from tmtccmd.tc import DefaultPusQueueHelper
from eive_tmtc.config.definitions import CustomServiceList
from eive_tmtc.config.object_ids import XIPHOS_WDT_ID
class OpCode:
ENABLE = "enable"
DISABLE = "disable"
class Info:
ENABLE = "Enable WDT"
DISABLE = "Disable WDT"
class ActionId(enum.IntEnum):
ENABLE = 0
DISABLE = 1
def pack_wdt_commands(q: DefaultPusQueueHelper, op_code: str):
if op_code == OpCode.ENABLE:
q.add_pus_tc(create_action_cmd(XIPHOS_WDT_ID, ActionId.ENABLE))
if op_code == OpCode.DISABLE:
q.add_pus_tc(create_action_cmd(XIPHOS_WDT_ID, ActionId.DISABLE))
@tmtc_definitions_provider
def add_xiphos_wdt_defs(defs: TmtcDefinitionWrapper):
oce = OpCodeEntry()
oce.add(keys=OpCode.ENABLE, info=Info.ENABLE)
oce.add(keys=OpCode.DISABLE, info=Info.DISABLE)
defs.add_service(
CustomServiceList.XIPHOS_WDT, info="Xiphos Watchdog Timer", op_code_entry=oce
)

42
lint.py
View File

@ -1,42 +0,0 @@
#!/usr/bin/env python3
import os
import sys
def main():
exclude_dirs_flag = ""
if not os.path.exists("setup.cfg"):
exclude_dirs_flag = (
"--exclude .git,__pycache__,docs/conf.py,old,build,dist,venv"
)
additional_flags_both_steps = "--count --statistics"
additional_flags_first_step = "--select=E9,F63,F7,F82 --show-source"
python_exe = ""
if os.name == "nt":
python_exe = "py -m"
flake8_first_step_cmd = (
f"{python_exe} flake8 . {additional_flags_both_steps} "
f"{additional_flags_first_step} {exclude_dirs_flag}"
)
status = os.system(flake8_first_step_cmd)
if os.name == "nt":
if status != 0:
print(f"Flake8 linter errors with status {status}")
else:
if os.WEXITSTATUS(status) != 0:
print(f"Flake8 linter errors with status {status}")
sys.exit(0)
additional_flags_second_step = (
'--exit-zero --max-complexity=10 --per-file-ignores="__init__.py:F401"'
)
if not os.path.exists("setup.cfg"):
additional_flags_second_step += " --max-line-length=100"
flake8_second_step_cmd = (
f"{python_exe} flake8 . {additional_flags_both_steps} {additional_flags_second_step}"
f" {exclude_dirs_flag}"
)
os.system(flake8_second_step_cmd)
if __name__ == "__main__":
main()

View File

Before

Width:  |  Height:  |  Size: 35 KiB

After

Width:  |  Height:  |  Size: 35 KiB

View File

@ -6,7 +6,7 @@ build-backend = "setuptools.build_meta"
name = "eive-tmtc"
description = "TMTC Commander EIVE"
readme = "README.md"
dynamic = ["version"]
version = "5.9.0"
requires-python = ">=3.10"
license = {text = "Apache-2.0"}
authors = [
@ -29,9 +29,9 @@ classifiers = [
"Topic :: Scientific/Engineering"
]
dependencies = [
"tmtccmd ~= 5.0",
"tmtccmd ~= 6.0",
"python-dateutil ~= 2.8",
# "tmtccmd @ git+https://github.com/robamu-org/tmtccmd@1b110d321ef85#egg=tmtccmd"
# "tmtccmd @ git+https://github.com/robamu-org/tmtccmd@main"
]
[project.urls]
@ -40,9 +40,11 @@ dependencies = [
[tool.setuptools]
include-package-data = true
[tool.setuptools.dynamic]
version = {attr = "eive_tmtc.__version__"}
# Auto-Discovery is problematic for some reason, so use custom-discovery
[tool.setuptools.packages]
find = {}
[tool.ruff]
ignore = ["E501"]
[tool.ruff.extend-per-file-ignores]
"__init__.py" = ["F401"]

View File

@ -3,11 +3,11 @@ Checklist for new releases
# Pre-Release
1. Bump version inside the `eive_tmtc/__init__.py` file.
1. Bump version inside the `pyproject.toml` file.
2. Update `CHANGELOG.md`: Convert `unreleased` section into version section
with date and new `unreleased`section.
3. Run auto-formatter with `black .`
4. Run linter with `flake8 .`
4. Run linter with `ruff .`
# Post-Release

View File

@ -1,12 +0,0 @@
#!/usr/bin/env python3
"""
We do the package handling in the static setup.cfg but include an empty setup.py
to allow editable installs https://packaging.python.org/tutorials/packaging-projects/
and provide extensibility
"""
try:
from setuptools import setup
except ImportError:
from distutils.core import setup
setup()

288
tmtcc.py
View File

@ -2,59 +2,28 @@
import logging
import sys
import time
import traceback
from pathlib import Path
from typing import cast
from spacepackets.ccsds import SPACE_PACKET_HEADER_SIZE
import tmtccmd
from eive_tmtc.cfdp.fault_handler import EiveCfdpFaultHandler
from eive_tmtc.cfdp.tm import CfdpInCcsdsWrapper
from eive_tmtc.cfdp.user import EiveCfdpUser
from spacepackets.ecss import PusVerificator
from spacepackets.version import get_version as get_sp_version
from spacepackets.cfdp import (
ConditionCode,
ChecksumType,
TransmissionMode,
PduHolder,
DirectiveType,
PduFactory,
PduType,
)
from eive_tmtc.pus_tc.tc_handler import TcHandler
from tmtccmd.logging import add_colorlog_console_logger
from tmtccmd.cfdp import CfdpUserBase, TransactionId
from tmtccmd.cfdp.defs import CfdpRequestType
from tmtccmd.cfdp.handler import CfdpInCcsdsHandler
from tmtccmd.cfdp.mib import (
DefaultFaultHandlerBase,
LocalEntityCfg,
IndicationCfg,
RemoteEntityCfg,
)
from tmtccmd.cfdp.user import (
TransactionFinishedParams,
MetadataRecvParams,
FileSegmentRecvdParams,
)
from tmtccmd.tc.handler import SendCbParams
try:
import spacepackets
except ImportError as error:
print(error)
print("Python spacepackets module could not be imported")
print(
'Install with "cd spacepackets && python3 -m pip intall -e ." for interative installation'
)
sys.exit(1)
try:
import tmtccmd
except ImportError:
run_tmtc_commander = None
initialize_tmtc_commander = None
tb = traceback.format_exc()
print(tb)
print("Python tmtccmd submodule could not be imported")
sys.exit(1)
from spacepackets.ecss import PusVerificator
from tmtccmd import TcHandlerBase, BackendBase
from tmtccmd import BackendBase
from tmtccmd.util import FileSeqCountProvider, PusFileSeqCountProvider
from tmtccmd.fsfw.tmtc_printer import FsfwTmTcPrinter
@ -66,15 +35,6 @@ from tmtccmd.logging.pus import (
from tmtccmd.pus import VerificationWrapper
from tmtccmd.tm import SpecificApidHandlerBase, GenericApidHandlerBase, CcsdsTmHandler
from tmtccmd.core import BackendRequest
from tmtccmd.logging import get_current_time_string
from tmtccmd.tc import (
ProcedureWrapper,
FeedWrapper,
TcProcedureType,
TcQueueEntryType,
DefaultPusQueueHelper,
QueueWrapper,
)
from tmtccmd.config import (
default_json_path,
SetupWrapper,
@ -86,7 +46,7 @@ from tmtccmd.config.args import (
ProcedureParamsWrapper,
)
from eive_tmtc import APP_LOGGER
from eive_tmtc import __version__
from importlib.metadata import version
from eive_tmtc.config.definitions import (
PUS_APID,
CFDP_APID,
@ -95,7 +55,6 @@ from eive_tmtc.config.definitions import (
)
from eive_tmtc.config.hook import EiveHookObject
from eive_tmtc.pus_tm.pus_demux import pus_factory_hook
from eive_tmtc.pus_tc.procedure_packer import handle_default_procedure
_LOGGER = APP_LOGGER
_LOG_LEVEL = logging.INFO
@ -105,61 +64,6 @@ ROTATING_TIMED_LOGGER_INTERVAL_WHEN = TimedLogWhen.PER_MINUTE
ROTATING_TIMED_LOGGER_INTERVAL = 30
class EiveCfdpFaultHandler(DefaultFaultHandlerBase):
def notice_of_suspension_cb(self, cond: ConditionCode):
pass
def notice_of_cancellation_cb(self, cond: ConditionCode):
pass
def abandoned_cb(self, cond: ConditionCode):
pass
def ignore_cb(self, cond: ConditionCode):
pass
class EiveCfdpUser(CfdpUserBase):
def transaction_indication(self, transaction_id: TransactionId):
_LOGGER.info(f"CFDP User: Start of File {transaction_id}")
def eof_sent_indication(self, transaction_id: TransactionId):
_LOGGER.info(f"CFDP User: EOF sent for {transaction_id}")
def transaction_finished_indication(self, params: TransactionFinishedParams):
_LOGGER.info(f"CFDP User: {params.transaction_id} finished")
def metadata_recv_indication(self, params: MetadataRecvParams):
pass
def file_segment_recv_indication(self, params: FileSegmentRecvdParams):
pass
def report_indication(self, transaction_id: TransactionId, status_report: any):
pass
def suspended_indication(
self, transaction_id: TransactionId, cond_code: ConditionCode
):
pass
def resumed_indication(self, transaction_id: TransactionId, progress: int):
pass
def fault_indication(
self, transaction_id: TransactionId, cond_code: ConditionCode, progress: int
):
pass
def abandoned_indication(
self, transaction_id: TransactionId, cond_code: ConditionCode, progress: int
):
pass
def eof_recv_indication(self, transaction_id: TransactionId):
pass
class PusHandler(SpecificApidHandlerBase):
def __init__(
self,
@ -194,151 +98,6 @@ class CustomCcsdsTmHandler(CcsdsTmHandler):
_LOGGER.debug(f"Received packet {packet.hex(sep=',')} with APID {apid}")
class CfdpInCcsdsWrapper(SpecificApidHandlerBase):
def __init__(self, cfdp_in_ccsds_handler: CfdpInCcsdsHandler):
super().__init__(CFDP_APID, None)
self.handler = cfdp_in_ccsds_handler
def handle_tm(self, packet: bytes, _user_args: any):
# Ignore the space packet header. Its only purpose is to use the same protocol and
# have a seaprate APID for space packets. If this function is called, the APID is correct.
pdu = packet[SPACE_PACKET_HEADER_SIZE:]
pdu_base = PduFactory.from_raw(pdu)
if pdu_base.pdu_type == PduType.FILE_DATA:
_LOGGER.info("Received File Data PDU TM")
else:
if pdu_base.directive_type == DirectiveType.FINISHED_PDU:
_LOGGER.info("Received Finished PDU TM")
else:
_LOGGER.info(
f"Received File Directive PDU with type {pdu_base.directive_type!r} TM"
)
self.handler.pass_pdu_packet(pdu_base)
class TcHandler(TcHandlerBase):
def __init__(
self,
seq_count_provider: FileSeqCountProvider,
cfdp_in_ccsds_wrapper: CfdpInCcsdsWrapper,
pus_verificator: PusVerificator,
high_level_file_logger: logging.Logger,
raw_pus_logger: RawTmtcTimedLogWrapper,
gui: bool,
):
super().__init__()
self.cfdp_handler_started = False
self.cfdp_dest_id = CFDP_REMOTE_ENTITY_ID
self.seq_count_provider = seq_count_provider
self.pus_verificator = pus_verificator
self.high_level_file_logger = high_level_file_logger
self.pus_raw_logger = raw_pus_logger
self.gui = gui
self.queue_helper = DefaultPusQueueHelper(
queue_wrapper=QueueWrapper.empty(),
default_pus_apid=PUS_APID,
seq_cnt_provider=seq_count_provider,
pus_verificator=pus_verificator,
tc_sched_timestamp_len=4,
)
self.cfdp_in_ccsds_wrapper = cfdp_in_ccsds_wrapper
def cfdp_done(self) -> bool:
if self.cfdp_handler_started:
if not self.cfdp_in_ccsds_wrapper.handler.put_request_pending():
self.cfdp_handler_started = False
return True
return False
def feed_cb(self, info: ProcedureWrapper, wrapper: FeedWrapper):
self.queue_helper.queue_wrapper = wrapper.queue_wrapper
if info.proc_type == TcProcedureType.DEFAULT:
handle_default_procedure(self, info.to_def_procedure(), self.queue_helper)
elif info.proc_type == TcProcedureType.CFDP:
self.handle_cfdp_procedure(info)
def send_cb(self, send_params: SendCbParams):
entry_helper = send_params.entry
if entry_helper.is_tc:
if entry_helper.entry_type == TcQueueEntryType.PUS_TC:
pus_tc_wrapper = entry_helper.to_pus_tc_entry()
# pus_tc_wrapper.pus_tc.apid = PUS_APID
raw_tc = pus_tc_wrapper.pus_tc.pack()
self.pus_raw_logger.log_tc(pus_tc_wrapper.pus_tc)
tc_info_string = f"Sent {pus_tc_wrapper.pus_tc}"
_LOGGER.info(tc_info_string)
self.high_level_file_logger.info(
f"{get_current_time_string(True)}: {tc_info_string}"
)
# with open("tc.bin", "wb") as of:
# of.write(raw_tc)
send_params.com_if.send(raw_tc)
elif entry_helper.entry_type == TcQueueEntryType.CCSDS_TC:
cfdp_packet_in_ccsds = entry_helper.to_space_packet_entry()
send_params.com_if.send(cfdp_packet_in_ccsds.space_packet.pack())
# TODO: Log raw CFDP packets similarly to how PUS packets are logged.
# - Log full raw format including space packet wrapper
# - Log context information: Transaction ID, and PDU type and directive
# Could re-use file logger. Should probably do that
# print(f"sending packet: [{cfdp_packet_in_ccsds.space_packet.pack()}]")
# with open(f"cfdp_packet_{self.cfdp_counter}", "wb") as of:
# of.write(cfdp_packet_in_ccsds.space_packet.pack())
# self.cfdp_counter += 1
elif entry_helper.entry_type == TcQueueEntryType.LOG:
log_entry = entry_helper.to_log_entry()
_LOGGER.info(log_entry.log_str)
self.high_level_file_logger.info(log_entry.log_str)
def handle_cfdp_procedure(self, info: ProcedureWrapper):
cfdp_procedure = info.to_cfdp_procedure()
if cfdp_procedure.cfdp_request_type == CfdpRequestType.PUT:
if (
not self.cfdp_in_ccsds_wrapper.handler.put_request_pending()
and not self.cfdp_handler_started
):
put_req = cfdp_procedure.request_wrapper.to_put_request()
put_req.cfg.destination_id = self.cfdp_dest_id
_LOGGER.info(
f"CFDP: Starting file put request with parameters:\n{put_req}"
)
self.cfdp_in_ccsds_wrapper.handler.cfdp_handler.put_request(put_req)
self.cfdp_handler_started = True
for source_pair, dest_pair in self.cfdp_in_ccsds_wrapper.handler:
pdu, sp = source_pair
pdu = cast(PduHolder, pdu)
if pdu.is_file_directive:
if pdu.pdu_directive_type == DirectiveType.METADATA_PDU:
metadata = pdu.to_metadata_pdu()
self.queue_helper.add_log_cmd(
f"CFDP Source: Sending Metadata PDU for file with size "
f"{metadata.file_size}"
)
elif pdu.pdu_directive_type == DirectiveType.EOF_PDU:
self.queue_helper.add_log_cmd(
"CFDP Source: Sending EOF PDU"
)
else:
fd_pdu = pdu.to_file_data_pdu()
self.queue_helper.add_log_cmd(
f"CFDP Source: Sending File Data PDU for segment at offset "
f"{fd_pdu.offset} with length {len(fd_pdu.file_data)}"
)
self.queue_helper.add_ccsds_tc(sp)
self.cfdp_in_ccsds_wrapper.handler.confirm_source_packet_sent()
self.cfdp_in_ccsds_wrapper.handler.source_handler.state_machine()
def queue_finished_cb(self, info: ProcedureWrapper):
if info is not None:
if info.proc_type == TcQueueEntryType.PUS_TC:
def_proc = info.to_def_procedure()
_LOGGER.info(
f"Finished queue for service {def_proc.service} and op code {def_proc.op_code}"
)
elif info.proc_type == TcProcedureType.CFDP:
_LOGGER.info("Finished CFDP queue")
def setup_params() -> (SetupWrapper, int):
hook_obj = EiveHookObject(default_json_path())
params = SetupParams()
@ -361,7 +120,10 @@ def setup_params() -> (SetupWrapper, int):
post_arg_parsing_wrapper.set_params_with_prompts(proc_param_wrapper)
else:
post_arg_parsing_wrapper.set_params_without_prompts(proc_param_wrapper)
hk_level = int(post_arg_parsing_wrapper.args_raw.hk)
if hasattr(post_arg_parsing_wrapper.args_raw, "hk"):
hk_level = int(post_arg_parsing_wrapper.args_raw.hk)
else:
hk_level = 0
params.apid = PUS_APID
if params.com_if is None:
raise ValueError("could not determine a COM interface.")
@ -378,6 +140,15 @@ def setup_cfdp_handler() -> CfdpInCcsdsWrapper:
indication_cfg=IndicationCfg(),
default_fault_handlers=fh_base,
)
self_as_remote = RemoteEntityCfg(
closure_requested=False,
entity_id=CFDP_LOCAL_ENTITY_ID,
max_file_segment_len=990,
check_limit=None,
crc_on_transmission=False,
crc_type=ChecksumType.CRC_32,
default_transmission_mode=TransmissionMode.UNACKNOWLEDGED,
)
remote_cfg = RemoteEntityCfg(
closure_requested=False,
entity_id=CFDP_REMOTE_ENTITY_ID,
@ -396,7 +167,7 @@ def setup_cfdp_handler() -> CfdpInCcsdsWrapper:
cfdp_user = EiveCfdpUser()
cfdp_in_ccsds_handler = CfdpInCcsdsHandler(
cfg=cfdp_cfg,
remote_cfgs=[remote_cfg],
remote_cfgs=[remote_cfg, self_as_remote],
ccsds_apid=CFDP_APID,
ccsds_seq_cnt_provider=cfdp_ccsds_seq_count_provider,
cfdp_seq_cnt_provider=cfdp_seq_count_provider,
@ -427,7 +198,7 @@ def setup_tmtc_handlers(
high_level_file_logger=printer.file_logger,
raw_pus_logger=raw_logger,
gui=gui,
cfdp_in_ccsds_wrapper=cfdp_in_ccsds_wrapper,
cfdp_in_ccsds_handler=cfdp_in_ccsds_wrapper.handler,
)
return ccsds_handler, tc_handler
@ -449,8 +220,8 @@ def setup_backend(
def main(): # noqa C901: Complexity okay here.
print(f"-- eive tmtc v{__version__} --")
print(f"-- spacepackets v{spacepackets.__version__} --")
print(f"-- eive tmtc v{version('eive-tmtc')} --")
print(f"-- spacepackets v{get_sp_version()} --")
add_colorlog_console_logger(_LOGGER)
# TODO: -V CLI argument to enable this?
_LOGGER.setLevel(_LOG_LEVEL)
@ -478,13 +249,16 @@ def main(): # noqa C901: Complexity okay here.
try:
while True:
state = tmtc_backend.periodic_op(None)
tc_handler.cfdp_in_ccsds_wrapper.handler.fsm()
tc_handler.cfdp_in_ccsds_handler.state_machine()
if state.request == BackendRequest.TERMINATION_NO_ERROR:
sys.exit(0)
elif state.request == BackendRequest.DELAY_IDLE:
_LOGGER.info("TMTC Client in IDLE mode")
time.sleep(3.0)
elif state.request == BackendRequest.DELAY_LISTENER:
if tc_handler.proxy_op:
time.sleep(0.1)
continue
if tc_handler.cfdp_done():
_LOGGER.info("CFDP transaction done, closing client")
sys.exit(0)