Compare commits

...

1709 Commits

Author SHA1 Message Date
bf5e72af8e Merge pull request 'COM Subsystem' (#358) from com_subsystem into develop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #358
2023-01-28 14:58:01 +01:00
079228e559 update retvals
Some checks are pending
EIVE/eive-obsw/pipeline/pr-develop Build started...
2023-01-28 14:57:40 +01:00
ddce821295 prepare for v1.22.0
Some checks are pending
EIVE/eive-obsw/pipeline/pr-develop Build started...
2023-01-28 14:55:41 +01:00
c63ca66f68 done
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2023-01-28 14:49:28 +01:00
036b388928 do not check transitions in COM SS
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2023-01-28 12:52:00 +01:00
13a3f78e56 finally fixed the stupid bug
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2023-01-28 12:47:21 +01:00
8f7ff3da7c some dumb bug
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2023-01-27 20:23:55 +01:00
7bbf40a5ab update changelog
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2023-01-27 19:04:31 +01:00
13f3963f69 Update
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
- COM Subsystem now handles datarate config
- torquer config and comCfg moved to mission/config folder
- CCSDS Handler: Added default rate submode
2023-01-27 18:38:36 +01:00
54e6c4826f fix hosted build
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2023-01-27 17:40:42 +01:00
8d9eb9ac58 last tweaks, all works now 2023-01-27 17:34:22 +01:00
83ab34dfc3 slightly larger delay
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2023-01-27 17:13:32 +01:00
4707581c41 update generated files, COM subsystem first tests
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2023-01-27 15:57:18 +01:00
d9e1a331b2 COM mode tree
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2023-01-27 15:42:49 +01:00
9ad34aa395 schedule COM subsystem
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2023-01-27 15:19:09 +01:00
9b211e1de7 do COM SS interconnect
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2023-01-27 15:10:26 +01:00
438f9f3358 com subsystem
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2023-01-27 14:44:40 +01:00
d58e79d1ec Merge remote-tracking branch 'origin/develop' into com_subsystem 2023-01-27 13:26:48 +01:00
c9f8d2e219 COM compiles again
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2023-01-27 11:29:13 +01:00
e2f98778f8 move config constants
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2023-01-27 11:02:04 +01:00
1a7b4ded27 bump tmtc
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2023-01-26 20:53:36 +01:00
0c595c5aeb update changelog
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2023-01-26 20:33:16 +01:00
0536522ed3 bump changelog
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2023-01-26 20:04:50 +01:00
985c71fa2a afmt
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2023-01-26 20:03:33 +01:00
f6bdbe897f bump minor version
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2023-01-26 20:03:18 +01:00
5ac549a384 update returnvalues
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2023-01-26 20:03:00 +01:00
e387a61278 Merge pull request 'Syrlinks Update' (#353) from refactor_syrlinks into develop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #353
Reviewed-by: Jakob Meier <meierj@irs.uni-stuttgart.de>
2023-01-26 19:18:31 +01:00
7182d9b8cc start to manually transfer com mode tree from old PR
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2023-01-26 17:18:05 +01:00
241da2c591 bump tmtc
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2023-01-26 17:14:05 +01:00
bc2a8cba94 Merge remote-tracking branch 'origin/develop' into refactor_syrlinks
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2023-01-26 17:06:42 +01:00
ecc5ec05f3 Merge pull request 'Add CCSDS handler modes' (#352) from add_ccsds_handler_modes into develop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #352
2023-01-26 17:04:07 +01:00
c07f188542 parameter update seems to work now
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2023-01-26 17:01:16 +01:00
fa8a2c7666 add new syrlinks events
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2023-01-26 16:45:28 +01:00
693613037a logic tweak
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2023-01-26 16:33:11 +01:00
311c2e947a bump changelog
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2023-01-26 16:22:15 +01:00
bd1031b92a event update
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2023-01-26 16:21:37 +01:00
694b885c0f move core subsystem ID 2023-01-26 16:20:46 +01:00
7d1bf3f9ba update retvals
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2023-01-26 16:19:10 +01:00
77761ee9e3 try to add shutdown handling
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2023-01-26 16:16:23 +01:00
e1e690d487 submodes seem to work
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2023-01-26 15:52:49 +01:00
e234f4c6b0 add some buffer time
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2023-01-26 14:58:03 +01:00
4725882ada larger transition delay
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2023-01-26 14:57:33 +01:00
d8e191e5c3 i dont think the default mode is required
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2023-01-26 14:52:58 +01:00
4ad6584782 afmt and possible bugfix
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2023-01-26 14:42:13 +01:00
03a3c3a761 changelog correction
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2023-01-26 14:39:23 +01:00
4dca9f21d4 add new submode for default datarate handling
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2023-01-26 14:00:39 +01:00
9410902454 go to startup immediately
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2023-01-26 13:02:29 +01:00
915f66f248 syrlinks: go to normal mode immdaitely 2023-01-26 13:00:03 +01:00
4deee6b98f Merge branch 'develop' into add_ccsds_handler_modes
Some checks are pending
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
EIVE/eive-obsw/pipeline/head Build queued...
2023-01-26 12:22:31 +01:00
744f689556 this should be the complete impl for new submodes
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2023-01-26 12:21:49 +01:00
1128d355bb added some missing mode helper usage
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2023-01-26 12:04:58 +01:00
b879533d41 extend syrlinks code a bit
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2023-01-25 17:02:46 +01:00
46da8508c3 Merge pull request 'Disable MGM Calibration' (#355) from disable-mgm-calib into develop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #355
Reviewed-by: Robin Müller <muellerr@irs.uni-stuttgart.de>
2023-01-25 16:31:31 +01:00
3319a3fa48 removed calibration settings
Some checks are pending
EIVE/eive-obsw/pipeline/head Build started...
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2023-01-25 16:12:14 +01:00
a4bf6d9872 Merge remote-tracking branch 'origin/develop' into refactor_syrlinks
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2023-01-25 14:05:23 +01:00
eef84f4d09 fixes from PR
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2023-01-25 14:03:49 +01:00
fbab1a6aa9 Merge remote-tracking branch 'origin/develop' into add_ccsds_handler_modes
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2023-01-25 14:02:03 +01:00
bc82073ebb Merge pull request 'MGM4 fix' (#354) from mgm4-fix into develop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #354
Reviewed-by: Robin Müller <muellerr@irs.uni-stuttgart.de>
2023-01-25 13:51:00 +01:00
d71c522891 bump changelog
Some checks are pending
EIVE/eive-obsw/pipeline/pr-develop Build started...
2023-01-25 13:47:29 +01:00
d9b4250dba fix
Some checks are pending
EIVE/eive-obsw/pipeline/head Build started...
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2023-01-25 13:37:29 +01:00
4611e32200 update changelog
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2023-01-24 19:48:20 +01:00
ce12293dcc update changelog
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2023-01-24 19:47:30 +01:00
ae6f6538d2 add syrlinks submode handling
Some checks are pending
EIVE/eive-obsw/pipeline/head Build started...
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2023-01-24 19:40:27 +01:00
1f08d85319 rename syrlinks handler
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2023-01-24 19:11:17 +01:00
8f8416c078 add modes
Some checks are pending
EIVE/eive-obsw/pipeline/head Build queued...
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2023-01-24 19:07:37 +01:00
b74db7b087 added EM Only port script
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2023-01-24 18:43:00 +01:00
fbe0c35373 make some sets diagnostic
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2023-01-24 13:18:29 +01:00
c2fd3b22f3 update changelog
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2023-01-24 12:30:23 +01:00
a58beb85e6 bump version
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2023-01-24 12:26:20 +01:00
c49bda449f bump changelog
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2023-01-24 12:25:16 +01:00
2698c71d27 expose base set of periodic HK for str 2023-01-24 12:24:29 +01:00
c6366f4906 Merge pull request 'some syrlinks tweaks and fixes' (#350) from syrlink_fixes_tweaks into develop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #350
Reviewed-by: Jakob Meier <meierj@irs.uni-stuttgart.de>
2023-01-23 19:06:51 +01:00
e3726a7078 Merge remote-tracking branch 'origin/develop' into syrlink_fixes_tweaks
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
EIVE/eive-obsw/pipeline/head This commit looks good
2023-01-23 16:18:52 +01:00
c1b9a0f4ff some improvements, docs and smaller stuff
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2023-01-23 16:18:06 +01:00
3fe6b19dc0 Merge pull request 'GYR fix' (#346) from eggert/gyr-fix into develop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #346
Reviewed-by: Robin Müller <muellerr@irs.uni-stuttgart.de>
2023-01-23 16:11:37 +01:00
1b0d86620e Merge branch 'develop' into eggert/gyr-fix
Some checks are pending
EIVE/eive-obsw/pipeline/pr-develop Build started...
2023-01-23 16:09:04 +01:00
ee5024f4ce update changelog
Some checks are pending
EIVE/eive-obsw/pipeline/pr-develop Build started...
2023-01-23 16:07:51 +01:00
a3b05fb527 Merge branch 'develop' into eggert/gyr-fix 2023-01-23 16:02:03 +01:00
0419561ff8 some syrlinks tweakd and fixes
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2023-01-23 15:35:43 +01:00
1926e7f864 Merge pull request 'this fixed the unrequested reply' (#349) from mueller/tcs_subsystem into develop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #349
2023-01-23 14:18:21 +01:00
72071e467e Merge branch 'mueller/tcs_subsystem' of https://egit.irs.uni-stuttgart.de/eive/eive-obsw into mueller/tcs_subsystem 2023-01-23 14:18:19 +01:00
95299cf522 remove duplicate code 2023-01-23 14:18:12 +01:00
3586ce3c31 Merge branch 'develop' into mueller/tcs_subsystem
Some checks are pending
EIVE/eive-obsw/pipeline/pr-develop Build started...
2023-01-23 14:17:13 +01:00
8c9d215672 this fixed the unrequested reply
Some checks are pending
EIVE/eive-obsw/pipeline/head Build started...
2023-01-23 14:15:32 +01:00
21eacd4c43 Merge pull request 'Add basic TCS mode tree' (#319) from mueller/tcs_subsystem into develop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #319
Reviewed-by: Jakob Meier <meierj@irs.uni-stuttgart.de>
2023-01-23 13:39:09 +01:00
9ec69bb649 Merge branch 'mueller/tcs_subsystem' of https://egit.irs.uni-stuttgart.de/eive/eive-obsw into mueller/tcs_subsystem
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2023-01-23 12:45:10 +01:00
3920671dd3 bump changelog
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2023-01-23 11:55:49 +01:00
fe80ff4070 move some config and tweak queue sizes
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2023-01-23 11:52:46 +01:00
588cc16fc5 use helper types + afmt
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2023-01-23 11:44:03 +01:00
aa4f0b4eea tested TCS subsystem
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2023-01-23 11:31:15 +01:00
eb6f397bb8 Merge remote-tracking branch 'origin/develop' into mueller/tcs_subsystem
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2023-01-20 14:26:42 +01:00
6e0f2c0dee changelog
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2023-01-20 14:25:21 +01:00
43fa8bf403 Merge pull request 'some fixes, this should work now' (#347) from allow_switch_interval_specification into develop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #347
2023-01-20 14:23:34 +01:00
c03b6c9268 bump tmtc
Some checks are pending
EIVE/eive-obsw/pipeline/pr-develop Build started...
EIVE/eive-obsw/pipeline/head Build queued...
2023-01-20 14:23:09 +01:00
96525d4aef bump tmtc
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2023-01-20 13:55:21 +01:00
45413726e7 update docs
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2023-01-20 12:31:42 +01:00
3d0ecadb1f Merge remote-tracking branch 'origin/develop' into allow_switch_interval_specification
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2023-01-20 12:30:39 +01:00
fecfa4b1c3 update changelog
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2023-01-20 12:29:17 +01:00
d2fe685a74 bump submodules 2023-01-20 12:28:09 +01:00
c9221a2b95 Merge pull request 'RTD Fix' (#345) from meier/rtd-fix into develop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #345
2023-01-20 12:27:12 +01:00
fee8282cc5 bump changelog
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2023-01-20 12:26:45 +01:00
09381ee86b update changelog
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2023-01-20 12:25:14 +01:00
f8196de089 update changelog
Some checks are pending
EIVE/eive-obsw/pipeline/head Build started...
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2023-01-20 12:24:19 +01:00
694d626081 some fixes, this should work now
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2023-01-20 11:51:29 +01:00
326b28b43e bump submodules
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2023-01-20 11:31:25 +01:00
81cc900b9b bump submodules
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2023-01-20 10:45:27 +01:00
c85dd691ae Merge branch 'meier/rtd-fix' of https://egit.irs.uni-stuttgart.de/eive/eive-obsw into meier/rtd-fix
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2023-01-20 10:44:51 +01:00
5670af7198 bump changelog 2023-01-20 10:44:44 +01:00
e82a2945e3 Merge branch 'develop' into meier/rtd-fix
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2023-01-20 10:43:08 +01:00
aeddc92cf3 changed ang vel calculation to being sensitivity based instead of range based
Some checks are pending
EIVE/eive-obsw/pipeline/head Build queued...
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2023-01-20 10:33:36 +01:00
e66567eb94 tweaks for PL ss
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2023-01-20 10:08:41 +01:00
e38044a3d0 Merge branch 'develop' into meier/rtd-fix
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2023-01-19 17:09:34 +01:00
3751646c2b tmtc update
Some checks are pending
EIVE/eive-obsw/pipeline/pr-develop Build queued...
2023-01-19 17:04:43 +01:00
111a91d98e periodically rewrite config byte
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2023-01-19 16:42:47 +01:00
5f377a6c9e Merge pull request 'Swap SUS0 and SUS6' (#344) from sus0-sus6-fix into develop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #344
2023-01-19 16:42:26 +01:00
47fd6b1add Merge branch 'develop' into sus0-sus6-fix
Some checks are pending
EIVE/eive-obsw/pipeline/pr-develop Build queued...
EIVE/eive-obsw/pipeline/head Build queued...
2023-01-19 16:39:39 +01:00
5167f275be Merge pull request 'Gyro Sets and MEKF diagnostic now' (#343) from gyr_sets_diagnostic_now into develop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #343
Reviewed-by: Marius Eggert <eggertm@irs.uni-stuttgart.de>
2023-01-19 16:39:24 +01:00
08a4491a15 Merge remote-tracking branch 'origin/develop' into gyr_sets_diagnostic_now
Some checks are pending
EIVE/eive-obsw/pipeline/pr-develop Build started...
2023-01-19 16:35:42 +01:00
17a1d8145c Merge branch 'develop' into sus0-sus6-fix
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2023-01-19 16:34:50 +01:00
b9ba14e395 Merge pull request 'ADIS16505: add handling for correct range setting' (#342) from gyro_adis_fix into develop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #342
Reviewed-by: Marius Eggert <eggertm@irs.uni-stuttgart.de>
2023-01-19 16:33:58 +01:00
586cca2f39 tmtc update
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2023-01-19 13:22:05 +01:00
cc6c25cba6 command to rewrite config of RTDs
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2023-01-19 13:20:24 +01:00
879e6fa758 swapped SUS0 and SUS6 in ObjectFactory
Some checks are pending
EIVE/eive-obsw/pipeline/head Build started...
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2023-01-19 11:54:48 +01:00
f0554311a2 Merge branch 'develop' into meier/rtd-filter 2023-01-19 11:02:33 +01:00
c291caba7d comment 2023-01-19 11:01:59 +01:00
d4e2ff2e71 Merge remote-tracking branch 'origin/develop' into mueller/tcs_subsystem 2023-01-19 09:19:18 +01:00
59a8003ad8 ok this should work
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2023-01-18 17:51:54 +01:00
c7c66364dc bump changelog
Some checks are pending
EIVE/eive-obsw/pipeline/head Build started...
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2023-01-18 16:10:14 +01:00
e31aaf5b97 Merge remote-tracking branch 'origin/develop' into gyro_adis_fix
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2023-01-18 16:09:06 +01:00
11d8b66db2 bump tmtc 2023-01-18 16:08:44 +01:00
7e6ab01528 mekf is now diagnostic as well
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2023-01-18 16:02:57 +01:00
a0750210ca gyro sets are diagnostic now 2023-01-18 15:58:38 +01:00
8d4ee96c52 re-run generators
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2023-01-18 14:34:35 +01:00
1546062433 update changelog
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2023-01-18 14:24:17 +01:00
980009b1cb re-run generators
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2023-01-18 14:03:20 +01:00
3682a22021 add handling for correct range setting
Some checks are pending
EIVE/eive-obsw/pipeline/head Build started...
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2023-01-18 13:43:28 +01:00
a70570f79d always include syrlinks code now
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2023-01-18 12:58:45 +01:00
dbe2c4572b Merge pull request 'SUS PoolIds fix' (#341) from sus-hotfix into develop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #341
Reviewed-by: Robin Müller <muellerr@irs.uni-stuttgart.de>
2023-01-16 17:46:54 +01:00
080ff82531 Merge branch 'develop' into sus-hotfix
Some checks are pending
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
EIVE/eive-obsw/pipeline/head Build queued...
2023-01-16 17:15:02 +01:00
b78fa73c75 sus PoolIds fix
Some checks are pending
EIVE/eive-obsw/pipeline/head Build started...
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2023-01-16 17:12:32 +01:00
588a6572b3 bump tmtc
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2023-01-16 15:17:47 +01:00
d144502f1c Merge pull request 'Init Boot Delay OBSW' (#340) from mueller_init_boot_delay_obsw into develop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #340
Reviewed-by: Jakob Meier <meierj@irs.uni-stuttgart.de>
2023-01-13 17:18:51 +01:00
f6706c4f9b update changelog
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
EIVE/eive-obsw/pipeline/head This commit looks good
2023-01-13 13:16:26 +01:00
9e9aa71e9b this works
Some checks are pending
EIVE/eive-obsw/pipeline/head Build started...
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2023-01-13 13:14:11 +01:00
3f079b415d small tweaks
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2023-01-13 11:59:11 +01:00
4ebf73bd03 include missing type
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2023-01-13 11:44:16 +01:00
83361a5e16 add init boot delay handling in OBSW 2023-01-13 11:43:44 +01:00
3ae08a4a57 bump fsfw and tmtc, update changelog
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2023-01-13 11:21:02 +01:00
46904ee3f1 Merge pull request 'Added a udp forwarding' (#339) from gaisser/udp_forwarding into develop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #339
Reviewed-by: Robin Müller <muellerr@irs.uni-stuttgart.de>
2023-01-13 09:41:25 +01:00
7ea03106f7 Added a udp forwarding
Some checks are pending
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
EIVE/eive-obsw/pipeline/head Build queued...
2023-01-12 19:14:47 +01:00
93eac8c6eb update README
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2023-01-11 09:26:33 +01:00
2a41b4361c Merge remote-tracking branch 'origin/develop' into mueller/tcs_subsystem
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2023-01-11 09:19:06 +01:00
ce9fac6b71 v1.19.0
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2023-01-10 16:23:54 +01:00
5910527d5e Merge pull request '5V stack commanding for device handlers' (#335) from mueller_5v_stack_cmd_for_devices into develop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #335
Reviewed-by: Jakob Meier <meierj@irs.uni-stuttgart.de>
2023-01-10 15:49:08 +01:00
27e2708b7b update changelog
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
EIVE/eive-obsw/pipeline/head This commit looks good
2023-01-10 15:41:09 +01:00
82d4569e79 bump tmtc
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2023-01-10 15:40:04 +01:00
d52ee5ff38 finally appears to work
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2023-01-10 15:16:52 +01:00
635473b687 better naming
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2023-01-10 15:08:38 +01:00
557162fe8c some more bugfixes
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2023-01-10 15:04:49 +01:00
6503778cd5 various bugfixes
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2023-01-10 14:17:55 +01:00
7b6e32ff86 bump tmtc
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2023-01-10 14:03:41 +01:00
eb30696cad Merge remote-tracking branch 'origin/develop' into mueller_5v_stack_cmd_for_devices 2023-01-10 14:02:58 +01:00
7df1046f71 Merge branch 'develop' of https://egit.irs.uni-stuttgart.de/eive/eive-obsw into develop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2023-01-10 13:26:57 +01:00
e383c90487 bump fsfw and tmtc 2023-01-10 13:26:50 +01:00
39dfed2ab5 bump tmtc
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2023-01-10 11:17:04 +01:00
fca45014e4 fixes for switchig algorithm
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2023-01-10 11:13:34 +01:00
8fde9ee9be small fix for PL PCDU handler shutdown handling
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2023-01-10 11:01:30 +01:00
88dcba7966 Merge branch 'develop' into mueller_5v_stack_cmd_for_devices
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2023-01-10 10:56:19 +01:00
189bba9f45 Merge pull request 'No PCDU for EM' (#338) from no_pcdu_em into develop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #338
Reviewed-by: Jakob Meier <meierj@irs.uni-stuttgart.de>
2023-01-10 09:44:30 +01:00
98ecbfba61 this is more correct
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
EIVE/eive-obsw/pipeline/head This commit looks good
2023-01-09 17:50:31 +01:00
772fab2b71 no PCDU for EM for now
Some checks are pending
EIVE/eive-obsw/pipeline/head Build started...
2023-01-09 17:48:28 +01:00
4de1495c40 Merge pull request 'Build Hosted SW without proprietary libraries' (#337) from build_host_without_proprietary_libs into develop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #337
Reviewed-by: Jakob Meier <meierj@irs.uni-stuttgart.de>
2023-01-09 16:07:54 +01:00
cb7608b4e6 bumpchangelog
Some checks are pending
EIVE/eive-obsw/pipeline/pr-develop Build started...
EIVE/eive-obsw/pipeline/head Build queued...
2023-01-09 16:03:04 +01:00
25e7872a6f this is consistent
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2023-01-09 15:59:42 +01:00
1d8549f810 this should work better
Some checks are pending
EIVE/eive-obsw/pipeline/head Build started...
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2023-01-09 15:55:01 +01:00
663fa0f4ac that should be better
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2023-01-09 15:47:27 +01:00
217d1b63f2 some tweaks
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2023-01-09 15:44:29 +01:00
4f01026883 add json clone
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2023-01-09 15:21:36 +01:00
5303139498 helper script to clone all necessary submodules
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2023-01-09 15:21:06 +01:00
fb37014b65 make proprietary library
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2023-01-09 15:19:15 +01:00
a704986d74 update README
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2023-01-09 14:50:03 +01:00
cce2da5229 yeah, its sequence counter ping-pong..
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2023-01-09 13:29:59 +01:00
d51904de2d disabled damaged PL PCDU1 TMP1075
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2023-01-09 11:57:48 +01:00
76b162113f add normal to on trnasition
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-12-23 12:50:10 +01:00
0afadc05a4 repoint tmtc
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-12-23 12:23:04 +01:00
8d0448341b Merge remote-tracking branch 'origin/develop' into mueller_5v_stack_cmd_for_devices 2022-12-23 12:22:39 +01:00
2531de507a bump changelog
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-12-23 12:18:44 +01:00
8fedaa43e9 important bugfix for PLOC SUPV
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-12-23 12:14:01 +01:00
cfae090de4 improvements for ploc supv SW
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-12-23 11:46:01 +01:00
04b9b03502 bump tmtc
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-12-23 11:00:28 +01:00
5e1d0543d7 afmt
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-12-23 10:32:21 +01:00
0163791e26 bump tmtc
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-12-23 10:17:54 +01:00
30aa802069 minor udpates for PLOC SUPV code
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-12-23 10:13:26 +01:00
cbf5ca6d93 minor fixes for MPSoC code
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-12-22 17:17:23 +01:00
998c39d564 some minor fixes
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-12-22 16:30:38 +01:00
3edf429557 Merge remote-tracking branch 'origin/develop' into mueller_5v_stack_cmd_for_devices
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-12-22 16:22:14 +01:00
0f29fd51ce Merge remote-tracking branch 'origin/develop' into mueller_5v_stack_cmd_for_devices
Some checks are pending
EIVE/eive-obsw/pipeline/pr-develop Build queued...
2022-12-22 16:21:58 +01:00
ac44690966 place that outside of the lock
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-12-22 16:20:32 +01:00
55ecb34665 set swither set entries valid
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-12-22 16:18:30 +01:00
c1b95e8bbd minor bugfix, push tmtc
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-12-22 16:14:11 +01:00
39ac8c8422 Merge pull request 'added 5v stack command' (#334) from mueller_pcdu_handler_stack_command into develop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #334
2022-12-22 16:06:17 +01:00
7f29cf7e58 Merge branch 'develop' into mueller_pcdu_handler_stack_command 2022-12-22 16:06:09 +01:00
099759c5f5 changelog update
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-12-22 14:37:25 +01:00
95113179d8 Merge branch 'mueller_5v_stack_cmd_for_devices' of https://egit.irs.uni-stuttgart.de/eive/eive-obsw into mueller_5v_stack_cmd_for_devices
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-12-22 14:33:04 +01:00
150073ae8e bump tmtc 2022-12-22 14:32:36 +01:00
a3d1dde455 this should do the job
Some checks are pending
EIVE/eive-obsw/pipeline/head Build started...
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-12-22 14:13:41 +01:00
268233551d use stack handler in PL PCDU component
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-12-22 11:10:55 +01:00
c2d2848020 use stack handler in rad sensor handler as well
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-12-22 11:02:33 +01:00
9aedc32527 disable rad sensor auto-on
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-12-22 11:00:04 +01:00
7aae4efd69 added 5v stack status read in PCDU handler
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-12-21 17:30:21 +01:00
b53cc475fe bugfix acs controller
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-12-21 16:11:53 +01:00
dcf6367314 this is annoying
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-12-21 14:43:12 +01:00
164bfc3521 continue stack 5v
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-12-21 14:34:07 +01:00
b75102f670 add 5V stack handler
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-12-21 14:11:31 +01:00
9024460da3 changelog update
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-12-21 13:44:48 +01:00
7df7ced43e added 5v stack command
Some checks are pending
EIVE/eive-obsw/pipeline/head Build started...
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-12-21 13:40:31 +01:00
b981878c58 Merge pull request 'use memset for zeroing' (#333) from mueller_use_memset_for_zeroing into develop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #333
2022-12-20 15:14:49 +01:00
0507bf14b1 Merge branch 'develop' into mueller_use_memset_for_zeroing
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-12-20 15:08:10 +01:00
c83a6a44c6 actually use those defines
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-12-20 11:45:46 +01:00
de3b2cefb0 reinitiate reboot file disabled
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-12-20 11:45:21 +01:00
98597b98d7 use memset for zeroing
Some checks are pending
EIVE/eive-obsw/pipeline/head Build started...
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-12-20 11:43:02 +01:00
fa245d3c4a Merge remote-tracking branch 'origin/develop' into mueller/tcs_subsystem
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-12-14 11:02:13 +01:00
25873da6c0 afmt
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-12-12 10:06:55 +01:00
87b07384ad bump tmtc
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-12-12 09:00:57 +01:00
bc66a88d74 bump deps
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-12-06 10:34:55 +01:00
ace8900ca4 Merge pull request 'allow consecutive tcp and udp server' (#331) from mueller_consecutive_tmtc_server into develop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #331
2022-12-02 18:03:38 +01:00
46248a5b69 schedule all dummy components
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-12-02 16:58:21 +01:00
60bf8df9ef update BSP hosted
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-12-02 16:47:28 +01:00
93cc7af5ee bump tmtc
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-12-02 16:39:54 +01:00
1c4e9c8db6 Merge remote-tracking branch 'origin/develop' into mueller_consecutive_tmtc_server 2022-12-02 16:39:45 +01:00
c9697572c3 bump tmtc
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-12-02 16:25:04 +01:00
b1f861b59c Merge remote-tracking branch 'origin/develop' into mueller/tcs_subsystem 2022-12-02 16:24:50 +01:00
3c29a4fc55 Merge pull request 'First Version of ACS Controller' (#329) from acs-ctrl-v1 into develop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #329
2022-12-02 16:21:46 +01:00
c6c2469487 allow consecutive tcp and udp server
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-12-02 13:55:19 +01:00
ee1fc8aa8b Merge branch 'develop' into acs-ctrl-v1
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-12-02 11:57:18 +01:00
d72052fe2a bump tmtc
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-12-02 11:39:30 +01:00
622ce1d4f3 Merge branch 'acs-ctrl-v1' of https://egit.irs.uni-stuttgart.de/eive/eive-obsw into acs-ctrl-v1 2022-12-02 11:39:18 +01:00
60418f6fdc small compile fixes 2022-12-02 11:38:51 +01:00
1d0a13a79d update generated files
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-12-01 17:08:03 +01:00
72300f0217 Merge remote-tracking branch 'origin/develop' into acs-ctrl-v1
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-12-01 16:39:54 +01:00
e51670f615 Merge pull request 'v1.18.0' (#330) from develop into main
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #330
2022-12-01 16:37:32 +01:00
7d99d8e805 bump minor version and changelog
Some checks are pending
EIVE/eive-obsw/pipeline/pr-main Build queued...
EIVE/eive-obsw/pipeline/head This commit looks good
2022-12-01 16:30:39 +01:00
a726f7535d bump tmtc
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-12-01 16:21:29 +01:00
b38afa5df3 repoint json dependency
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-12-01 16:01:50 +01:00
0bbdd21d81 bump changelog
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-12-01 15:58:39 +01:00
fb2325b9ea Merge remote-tracking branch 'origin/develop' into acs-ctrl-v1 2022-12-01 15:57:09 +01:00
828738ba0e afmt
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-12-01 15:56:55 +01:00
a3a919437e bump submodules 2022-12-01 15:56:40 +01:00
3180602217 Merge branch 'develop' of https://egit.irs.uni-stuttgart.de/eive/eive-obsw into develop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-12-01 14:47:42 +01:00
d3252434aa bump tmtc 2022-12-01 14:47:21 +01:00
08bdc87505 removed hardcoded modes
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-12-01 14:19:42 +01:00
377a672cd2 detumblecounter init 2022-12-01 14:17:51 +01:00
ce83b64ca2 working versions of inverse calc and determinant calc
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-12-01 13:50:48 +01:00
b2442041f0 gauss-jordan v2 that hopefully noone ever sees 2022-12-01 13:50:18 +01:00
b2e0ef24f3 first version for gauss-jordan matrix inversion 2022-12-01 13:49:44 +01:00
f73d293cdd schedule PL task
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-11-30 18:08:16 +01:00
5f929f6cf8 bump tmtc
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-11-30 17:26:33 +01:00
2d939a2894 update
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-11-30 10:35:30 +01:00
84a3466b4d fixed array list min len 1
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-11-29 23:24:45 +01:00
2b327bf3a7 initialize a variable
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-11-29 23:09:55 +01:00
fbf8f5ef6c bump tmtc
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-11-29 16:55:55 +01:00
b93a278cbf Merge pull request 'Rename some device files/symlinks' (#328) from mueller/rename_dev_files into develop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #328
2022-11-29 11:08:53 +01:00
a1c9fece1e bump changelog
Some checks are pending
EIVE/eive-obsw/pipeline/pr-develop Build queued...
2022-11-29 11:08:34 +01:00
d4acdb67bb bump changelog
Some checks are pending
EIVE/eive-obsw/pipeline/head Build started...
EIVE/eive-obsw/pipeline/pr-develop Build queued...
2022-11-29 11:07:02 +01:00
ffbf7df557 rename ploc supv and i2c dev symlinks
Some checks are pending
EIVE/eive-obsw/pipeline/head Build started...
2022-11-29 11:05:19 +01:00
b9191eb9ac Merge remote-tracking branch 'origin/main' into develop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-11-28 18:31:57 +01:00
b0f000a42f new PLOC SUPV baudrate 921600 2022-11-28 18:31:44 +01:00
3cdb129870 Merge pull request 'v1.17.0' (#327) from develop into main
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #327
2022-11-28 18:29:29 +01:00
44ef698c35 bump version
Some checks are pending
EIVE/eive-obsw/pipeline/pr-main Build queued...
EIVE/eive-obsw/pipeline/head This commit looks good
2022-11-28 18:27:59 +01:00
fdef405878 Merge pull request 'TAS PLOC SUPV 3' (#326) from mueller/tas_ploc_supv_3 into develop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #326
2022-11-28 18:26:43 +01:00
5ba5e69273 re-run generators
Some checks are pending
EIVE/eive-obsw/pipeline/pr-develop Build started...
2022-11-28 18:25:08 +01:00
87ab84c649 bump changelog
Some checks are pending
EIVE/eive-obsw/pipeline/pr-develop Build started...
2022-11-28 18:23:55 +01:00
0763f11998 revert baud rate
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-28 18:21:53 +01:00
acc7739958 bump changelog
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-28 16:33:50 +01:00
425e7c1e52 increase regular delay to up to 80 ms
Some checks are pending
EIVE/eive-obsw/pipeline/head Build started...
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-28 16:27:33 +01:00
2c223712ff various fixes and improvements
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-11-28 16:24:18 +01:00
003d37c490 bump fsfw
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-11-28 11:21:46 +01:00
2338d951c7 some more robustness tweaks 2022-11-28 11:21:12 +01:00
bd3350c28a this might be a bug
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-11-28 09:38:32 +01:00
a20dce5a87 cmakelists fix, bump fsfw
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-11-28 08:48:19 +01:00
f771fefbc9 rename scheduling file
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-11-25 11:04:33 +01:00
c731418b65 disable PLOC SUPV for host build
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-11-25 10:28:20 +01:00
a08b695fa5 Merge pull request 'PLOC SUPV update 2' (#324) from mueller/tas_ploc_supv_update_2 into develop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #324
2022-11-24 14:48:22 +01:00
4786905678 Merge remote-tracking branch 'origin/develop' into mueller/tas_ploc_supv_update_2
Some checks are pending
EIVE/eive-obsw/pipeline/pr-develop Build started...
2022-11-24 14:47:25 +01:00
6766395f44 works, but SW updates hangs at 21504 bytes 2022-11-24 14:42:17 +01:00
c7b90fb8e0 something hangs up
Some checks are pending
EIVE/eive-obsw/pipeline/head This commit looks good
EIVE/eive-obsw/pipeline/pr-develop Build started...
2022-11-24 11:58:41 +01:00
63a8f31a45 bump tmtc
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-11-24 11:23:21 +01:00
cf80ab01fd create dummy switcher 2022-11-24 11:23:13 +01:00
1b92aa03f3 create dummy switcher
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-11-24 11:22:55 +01:00
f327bdcd91 Merge remote-tracking branch 'origin/develop' into mueller/tas_ploc_supv_update_2
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-11-24 11:21:05 +01:00
cc79ffc57b some remaining bugfixes
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-11-21 18:32:23 +01:00
9953a49b09 minor improvements for PLOC SUPV update
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-11-21 17:55:56 +01:00
4dfd97a300 add PCDU for EM permanently
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-11-21 14:17:23 +01:00
697e27f876 scex working
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-11-21 14:16:21 +01:00
0a5b79b8cd extend power switch handling
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-11-21 14:01:31 +01:00
c1e92605d4 bump tmtc
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-11-21 13:38:33 +01:00
3eed1508fd bump tmtc and scex baud
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-11-21 13:37:05 +01:00
13fe25ff03 added dataPool Output, in case MEKF inverion fails
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-11-21 11:24:42 +01:00
f07b905df5 corrected output direction of sunVectors 2022-11-21 11:23:51 +01:00
902caa3985 double length fixes 2022-11-21 11:23:10 +01:00
281eb3237c fixed susTotVec and mgmTotVec types to dataSet types 2022-11-21 11:22:24 +01:00
f3ac6d4a7e added GPS and RW sensor readings. added RW1..4 dummies to acsTask 2022-11-21 11:18:39 +01:00
c430caadd7 changed SusDummies from ExtendedController to DeviceHandler 2022-11-21 11:14:56 +01:00
98fcf06e31 various improvements and bugfixes
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-11-18 17:25:52 +01:00
f545928adc some bugfixes 2022-11-18 16:13:55 +01:00
30f020bff3 Merge pull request 'PLOC SUPV Update to newer firmware' (#316) from mueller/tas_ploc_supv_update into develop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #316
2022-11-18 14:27:10 +01:00
28c662e6a7 update changelog
Some checks are pending
EIVE/eive-obsw/pipeline/pr-develop Build queued...
2022-11-18 14:26:40 +01:00
4b36cdc3da Merge branch 'develop' into mueller/tas_ploc_supv_update
Some checks are pending
EIVE/eive-obsw/pipeline/pr-develop Build queued...
2022-11-18 14:25:58 +01:00
6e5a8ffc31 Merge pull request 'v1.16.0' (#323) from develop into main
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #323
2022-11-18 14:23:22 +01:00
2bbe98a403 bump version and changelog
Some checks are pending
EIVE/eive-obsw/pipeline/pr-main Build queued...
EIVE/eive-obsw/pipeline/head This commit looks good
2022-11-18 14:22:00 +01:00
2a00f5af47 bump deps
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-11-18 14:20:57 +01:00
02eff4a26f some more bugfixes
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-18 14:18:45 +01:00
c248cdb876 fix for error handling longer request
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-17 17:46:06 +01:00
0857a480e5 zero init some values
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-17 17:39:16 +01:00
2c00119b47 set SP max size
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-17 17:28:41 +01:00
ae11f73e24 disable debug mode
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-17 16:43:54 +01:00
3ab27f63f2 fix scheduling order
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-17 16:20:13 +01:00
7c821e33f0 somethings wrong
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-17 15:59:31 +01:00
9a3fd51337 tweak do off activity
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-17 15:48:44 +01:00
f08709ef29 switch off debugging spam
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-17 15:24:26 +01:00
114d16224e bump fsfw
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-17 15:22:15 +01:00
cdadb02420 mask corrections ,set sec header flag
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-17 13:58:40 +01:00
9bf6ac7a9a clean up printouts a bit
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-17 13:48:40 +01:00
00dd2e99a8 getting there
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-17 13:39:59 +01:00
ffc4a3456b some better names
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-17 13:26:03 +01:00
72f8e359bb CRC failure
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-17 13:24:39 +01:00
53535b6023 fix bugs in SW
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-17 11:45:09 +01:00
bb66228837 re-test the simpler method
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-17 11:38:45 +01:00
bce8c71e38 crc check now works 2022-11-17 11:33:47 +01:00
612a475eec update event translations
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-16 15:26:47 +01:00
4e3abb92f2 update events
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-16 15:25:29 +01:00
eb371b3024 ctor fix
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-16 15:05:12 +01:00
3ef0b3ea6d TAS PLOC SUPV
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-11-16 15:03:10 +01:00
03e007fd36 afmt
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-11-16 14:43:22 +01:00
5b770a6407 remove HDLC framing including CRC
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-11-16 14:42:18 +01:00
3510cc85fc a lot of bugfixes
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-11-16 13:26:49 +01:00
32005a2d3a more printouts, switch on debug mode
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-11-16 11:57:29 +01:00
9163db6bcf add debug statements
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-11-15 18:02:17 +01:00
1f6f11ee88 bugfix for start method
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-11-15 17:51:22 +01:00
a55e6a1725 logic fix 2022-11-15 17:48:44 +01:00
3059e196a3 update object list
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-11-15 17:47:24 +01:00
42c52295f7 re-run generators
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-11-15 17:44:47 +01:00
38e0df5d12 increase prio a bit
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-11-15 17:42:53 +01:00
c436a2abda rename helper
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-11-15 17:41:15 +01:00
2b4ec6d274 add start method for uart man
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-11-15 17:40:19 +01:00
38e74e6eaf rename ploc supv uart man
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-11-15 17:24:38 +01:00
7fb689b451 it was not the #pragma once
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-11-15 17:22:28 +01:00
e5ec8a7490 now the linux files are compiling
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-11-15 17:21:12 +01:00
23cfe3aa69 unbelievable
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-11-15 17:15:14 +01:00
9481cc2eb0 rename bsp hosted scheduling file
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-11-15 17:08:10 +01:00
99f92a87da rename scheduling file
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-11-15 17:03:46 +01:00
b9f4a7be0c dumb undefined reference
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-11-15 16:59:33 +01:00
f96d831cc9 simiplify hosted SW
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-11-15 16:46:47 +01:00
7d7efaca42 improve hosted SW
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-11-15 16:44:07 +01:00
9ee969218c add README entry for udevadm usage
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-11-15 16:06:23 +01:00
cf57be14bc assign name for hosted ploc supv
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-11-15 16:00:32 +01:00
2f0f837534 Merge remote-tracking branch 'origin/develop' into mueller/tas_ploc_supv_update
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-11-15 13:42:22 +01:00
7384c5ce16 update changelog
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-11-15 13:41:39 +01:00
f6fc47671f Merge pull request 'Compile Linux files conditionally for Host' (#322) from mueller/compile_linux_files_conditionally_for_host into develop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #322
2022-11-15 13:40:16 +01:00
3c469e5c7a uart test class tweak
Some checks are pending
EIVE/eive-obsw/pipeline/head Build started...
EIVE/eive-obsw/pipeline/pr-develop Build started...
2022-11-15 13:35:18 +01:00
478e3b9237 add thirdparty CMakeLists.txt 2022-11-15 13:33:53 +01:00
9da5a55ef3 lets see if that works
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-11-15 13:32:05 +01:00
f6729cb3b4 bump deps
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-11-15 13:20:12 +01:00
6c56810233 bump fsfw
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-11-15 09:55:38 +01:00
6b03902465 Merge branch 'develop' of https://egit.irs.uni-stuttgart.de/eive/eive-obsw into develop 2022-11-15 09:55:31 +01:00
5690e35a58 bump fsfw 2022-11-15 09:55:23 +01:00
d08546e5fe added TCS subsystem normal sequence
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-14 17:17:34 +01:00
94bf91ab2b Merge remote-tracking branch 'origin/develop' into mueller/tcs_subsystem
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-14 17:12:02 +01:00
89af06a310 update object list
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-11-14 17:10:41 +01:00
0d08a282b4 fix for set capacity
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-11-14 17:05:46 +01:00
1dee4e5e0d add off sequence for TCS
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-14 16:58:01 +01:00
24093e13e7 continue TCS mode tree
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-14 13:46:26 +01:00
859855ed31 expect reference
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-14 13:36:51 +01:00
0c681a06c7 Merge remote-tracking branch 'origin/develop' into mueller/tcs_subsystem
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-14 13:27:23 +01:00
37558c0fdc Merge pull request 'add missing TMP1075 devs in TCS ctrl' (#321) from mueller/tcs_ctrl_add_missing_tmp_devs into develop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #321
2022-11-14 13:01:15 +01:00
876c2b36bf add missing tmp devs in ctrel map as well
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-14 10:11:44 +01:00
012590273f add missing TMP1075 devs in TCS ctrl
Some checks are pending
EIVE/eive-obsw/pipeline/head Build queued...
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-14 10:04:41 +01:00
d2d13e3de6 Merge pull request 'update TMP1075 dev handlers' (#318) from mueller/tmp_dev_updates into develop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #318
2022-11-14 09:24:11 +01:00
31f6a865d3 remove unused code
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-14 09:19:34 +01:00
d51c088afd there is only one tmp1075 left
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-14 09:16:17 +01:00
a39ff34a0a re-name enum
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-14 09:13:20 +01:00
a855920fb2 README update, I2C addr update
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-14 09:12:15 +01:00
ee6bb4df3b add some informative comments
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-11 18:56:34 +01:00
1a17770bbc all TMP1075 dev except the OBC IF board one working
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-11 18:52:12 +01:00
6261296a0a there is an issue..
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-11 17:01:19 +01:00
d4de445112 update changelog
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-11 16:26:16 +01:00
0815380044 create all available TMP devices
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-11 16:24:44 +01:00
7921acefd4 Merge remote-tracking branch 'origin/develop' into mueller/tmp_dev_updates
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-11 15:50:23 +01:00
a21e938f36 renamed cookie as well
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-11-11 11:41:40 +01:00
bc32c51460 add basic TCS mode tree framework
Some checks are pending
EIVE/eive-obsw/pipeline/head Build started...
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-11 11:23:13 +01:00
7ce24ef392 update TMP1075 dev handlers
Some checks are pending
EIVE/eive-obsw/pipeline/head Build started...
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-11 11:12:43 +01:00
4c5515c05c update status code handling
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-11 11:06:08 +01:00
a07a55eac1 Merge remote-tracking branch 'origin/develop' into mueller/tas_ploc_supv_update
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-10 18:14:53 +01:00
ceba3b9dca renaming of fsfw_hal components
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-11-10 18:07:59 +01:00
a74ddbbb9f small bugfix
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-10 17:46:57 +01:00
02df949a48 this seems to work
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-10 17:42:19 +01:00
ec7ce5ddb6 ploc components now compile for hosted (linux)
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-11-10 17:32:11 +01:00
ca9ef28199 dummy stuff
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-11-10 16:31:59 +01:00
5ed0ade358 bump fsfw
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-10 16:23:51 +01:00
e7005c18a4 bump fsfw
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-10 15:58:48 +01:00
63f48c5f45 Merge remote-tracking branch 'origin/develop' into mueller/tas_ploc_supv_update
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-10 15:44:49 +01:00
b47d00844a Merge pull request 'Payload Subsystem' (#231) from mueller/pl-ss into develop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #231
2022-11-10 15:42:53 +01:00
19cf64f5f0 Merge branch 'develop' into mueller/pl-ss
Some checks are pending
EIVE/eive-obsw/pipeline/pr-develop Build started...
2022-11-10 15:42:08 +01:00
d690a54005 connect payload children to subsystem
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-10 15:39:08 +01:00
f90120191f pl ss fixes
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-10 15:12:50 +01:00
4c0bf18268 fix for object IDs
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-10 14:18:58 +01:00
76ca81b997 wrap in preproc defines
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-10 14:12:09 +01:00
07d93b6b67 schedule PL components differently
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-10 14:08:44 +01:00
09ccb5ddf7 re-enable wipe cmd
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-10 13:50:18 +01:00
47b65a1fa3 create cam switcher, create new PL task
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-10 13:09:31 +01:00
a2b0e53301 bugfix SW update
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-10 13:08:17 +01:00
3be45b32ef renaming
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-10 11:20:27 +01:00
b88b4cc06d tweaks and fixes for UART man
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-09 19:47:42 +01:00
9e006d93fe move other function to graveyard
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-09 19:27:18 +01:00
c42eae9c17 re-enabled some commands
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-09 19:24:48 +01:00
b6dc81da0e keep old baud for FM
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-11-09 15:23:40 +01:00
cb49ec1c7e Merge remote-tracking branch 'origin/develop' into mueller/pl-ss
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-09 15:15:57 +01:00
2118c0691c Merge remote-tracking branch 'origin/develop' into mueller/tas_ploc_supv_update
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-09 15:15:40 +01:00
7515f88843 Merge pull request 'Smaller fixes and improvements' (#317) from mueller/smaller_fixes_improvements into develop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #317
2022-11-09 15:00:28 +01:00
4a070f2b7f bump tmtc
Some checks are pending
EIVE/eive-obsw/pipeline/head This commit looks good
EIVE/eive-obsw/pipeline/pr-develop Build queued...
2022-11-09 14:53:08 +01:00
ea6fd8c952 smaller fixes and improvements
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-11-09 13:07:20 +01:00
e2a0db8fcc command and function graveyard
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-08 20:41:20 +01:00
d3da5bd2d8 add factory reset cmd
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-08 20:37:57 +01:00
52f15906d8 kick out more commands
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-08 20:14:42 +01:00
fd5cc19231 remove non-working commands
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-08 20:04:57 +01:00
27e46615b6 repaire exe handling 2022-11-08 19:53:26 +01:00
54523b25d1 fixed ack reply handling
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-08 17:07:12 +01:00
1d6258d223 start fixing dev handler ack handling
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-08 16:56:42 +01:00
28cd78db96 implemented the last tricky parts 2022-11-08 16:26:30 +01:00
f564fb5c1a some fixes for thread shutdown code
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-08 14:52:07 +01:00
763bf2d85b remove flush call, belongs in lower layer
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-08 14:29:41 +01:00
9d02322cd7 continue refactoring
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-08 14:26:52 +01:00
cfe7599f62 use result namespace instead of interface
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-08 11:18:03 +01:00
4515703efa added tm service IDs
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-08 11:08:21 +01:00
8cc368b131 fixed types for actuatorCmdData
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-11-08 10:56:12 +01:00
4bf22f689a create TM base class
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-08 10:22:57 +01:00
3b575acd55 comment out more code which was removed
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-08 10:10:57 +01:00
8dbb3dcd9b continue refactoring
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-07 17:31:16 +01:00
e46bb42266 continue switch to new packet format 2022-11-07 13:37:51 +01:00
f32f68d0e0 continue switch to new packet format 2022-11-07 11:26:36 +01:00
95a3ea1d23 start using new packet format 2022-11-07 11:19:10 +01:00
23025eec7a no payload packet impl 2022-11-07 10:30:09 +01:00
32865d1834 use on/off semantics and rename handler 2022-11-07 10:00:54 +01:00
bb2f8edc77 add new APID defs 2022-11-07 09:26:36 +01:00
d184f7487e post merge cleanup
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-11-04 14:54:23 +01:00
2b9afbedff important fix and clarification
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-04 14:19:58 +01:00
895d03a35c Merge branch 'develop' into eggert/acs
# Conflicts:
#	dummies/CMakeLists.txt
#	mission/controller/AcsController.cpp
#	mission/controller/AcsController.h
2022-11-04 14:19:43 +01:00
dc024e5385 low level impl complete
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-04 13:40:42 +01:00
5df45f9fa7 start com IF function impl
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-11-04 12:51:01 +01:00
74837753bf add IPC ring buf and buffer
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-04 12:45:20 +01:00
a4735defaa amended gyr sensor fusion
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-11-04 12:41:35 +01:00
b5cd873f6d completed ring buffer parser
Some checks are pending
EIVE/eive-obsw/pipeline/head Build started...
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-04 12:38:30 +01:00
af0853a42b continue HDLC parsing 2022-11-04 12:04:47 +01:00
45c95e559e started HDLC ring buffer decoder
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-11-04 11:53:07 +01:00
6350dbe0e9 now its getting tricky
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-11-04 11:38:21 +01:00
d254331b8e add basic manual UART reading 2022-11-04 11:34:33 +01:00
826f4ce29c add lock, use generic sem interface
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-11-04 11:16:22 +01:00
de66ac66c6 supv helper is a com IF now
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-11-04 11:08:47 +01:00
048cd89053 use scoped includes
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-11-04 09:45:32 +01:00
5dc41badc3 bump tmtc
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-11-04 09:37:14 +01:00
1ac9e53b1f add TAS sources
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-11-04 09:35:17 +01:00
e3c245b99f update changelog
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-04 08:37:59 +01:00
c8ddf7472c remove PLOC_SWITCHER and PLOC_SUBSYSTEM usage
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-04 08:30:47 +01:00
fe6b13bb81 start fixing this crap 2022-11-03 22:59:51 +01:00
ba70bde3e9 small fix 2022-11-03 20:57:55 +01:00
9503b2ca93 Merge remote-tracking branch 'origin/develop' into mueller/pl-ss 2022-11-03 20:10:05 +01:00
10611d0415 afmt
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-11-03 16:14:57 +01:00
42f5f6e943 re-run generators, TCS ctrl adaption
- Scoped TCS controller device temperature copy handling
2022-11-03 16:13:53 +01:00
2b545f67ec Merge pull request 'dhb2normal' (#313) from dhb2normal into develop
Reviewed-on: #313
2022-11-03 15:36:22 +01:00
6069948b4e bump changelog again 2022-11-03 15:35:32 +01:00
60d81fac41 bump changelog 2022-11-03 15:34:07 +01:00
7ce9bbf2e8 bump fsfw 2022-11-03 15:33:29 +01:00
89083cdbc8 important bugfix 2022-11-03 15:29:54 +01:00
b742f91ea8 remove debug dummy 2022-11-03 15:11:19 +01:00
8e26ad2871 simplify max RTD low level handler 2022-11-03 15:10:42 +01:00
c7bfe4002d added event for SAFE to DETUMBLE transition. changed actuator input from double to int
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-11-03 14:24:09 +01:00
4faf00de94 converted MTQ MGM readings from nT to uT 2022-11-03 14:23:06 +01:00
9044a5476c even larger queues 2022-11-03 13:38:41 +01:00
aed2d077af Merge remote-tracking branch 'origin/develop' into dhb2normal 2022-11-03 13:32:44 +01:00
954cd91c93 Merge pull request 'print correction' (#314) from pdec_handler_print_correction into develop
Reviewed-on: #314
Reviewed-by: Jakob Meier <meierj@irs.uni-stuttgart.de>
2022-11-03 12:15:05 +01:00
a13ccb43d2 removed OutputValues
amended sumbode list
inserted writes to output DataPools
2022-11-03 10:43:27 +01:00
1f2c410a5f print correction 2022-11-03 10:40:59 +01:00
caa81e3b8e larger queues 2022-11-03 10:34:19 +01:00
264a34d227 tweak for gomspace to normal function 2022-11-03 10:24:55 +01:00
d5a908ab75 remove stray info printout 2022-11-03 10:15:44 +01:00
23684710e7 bump fsfw again 2022-11-03 10:12:25 +01:00
772e189040 bump fsfw 2022-11-03 10:11:14 +01:00
957d4a61d8 Merge remote-tracking branch 'origin/develop' into dhb2normal 2022-11-02 20:06:07 +01:00
0e3918a3a7 bump tmtc 2022-11-02 20:04:00 +01:00
beb99d53f7 pus test service has higher prio now 2022-11-02 19:35:35 +01:00
1afd34b450 Merge remote-tracking branch 'origin/develop' into dhb2normal 2022-11-02 19:17:42 +01:00
a2c1ca97b8 Merge pull request 'PDEC IRQ Handling' (#310) from mueller/pdec_irq_handling into develop
Reviewed-on: #310
2022-11-02 18:16:18 +01:00
70092b348a pdec handler has higher priority now 2022-11-02 19:15:07 +01:00
2d821ef8df irq working 2022-11-02 18:58:29 +01:00
b2e3bc7e7a some more tests 2022-11-02 16:32:00 +01:00
ddc68669fc bump deps 2022-11-02 16:08:44 +01:00
098f69b1bc dummy fix 2022-11-02 15:56:05 +01:00
3995b15ccf bugfixes for dummies 2022-11-02 15:55:40 +01:00
a45e7d7561 debug printout 2022-11-02 15:33:54 +01:00
8297bca969 small EM fix 2022-11-02 15:22:05 +01:00
964f9dc688 Merge remote-tracking branch 'origin/develop' into mueller/pdec_irq_handling
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-02 14:16:14 +01:00
ce743e238b Merge branch 'mueller/tm_funnel_improvements' into dhb2normal
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-02 14:07:15 +01:00
53214f0019 hosted build works again
Some checks are pending
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
EIVE/eive-obsw/pipeline/head Build started...
2022-11-02 14:03:54 +01:00
004e79580e Merge pull request 'refactored TM funnels to allow multiple TM recipients' (#312) from mueller/tm_funnel_improvements into develop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #312
Reviewed-by: Jakob Meier <meierj@irs.uni-stuttgart.de>
2022-11-02 13:10:42 +01:00
802b851924 bump changelog
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-02 10:59:21 +01:00
e1526f712e bump changelog
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-11-02 10:58:40 +01:00
14b8b00880 small logic fix
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-11-02 10:55:40 +01:00
621966b6f3 Merge remote-tracking branch 'origin/develop' into dhb2normal
Some checks failed
EIVE/eive-obsw/pipeline/head Build queued...
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-11-02 10:47:49 +01:00
b6cde9e8fc Merge remote-tracking branch 'origin/develop' into mueller/pl-ss
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-02 10:39:50 +01:00
b1f7c66066 Merge remote-tracking branch 'origin/develop' into mueller/pdec_irq_handling
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-11-02 10:37:52 +01:00
39778f9663 Merge remote-tracking branch 'origin/develop' into mueller/tm_funnel_improvements
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-11-02 10:37:15 +01:00
a0c784113b Merge pull request 'ACS Subsystem Init' (#228) from mueller/acs-ss-init into develop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #228
2022-11-02 10:34:38 +01:00
0c549dd1ce Merge remote-tracking branch 'origin/develop' into mueller/acs-ss-init 2022-11-02 10:33:34 +01:00
76283e0e49 refactored TM funnels to allow multiple TM recipients 2022-11-02 10:26:45 +01:00
97fd35fe7b bump fsfw 2022-11-02 10:25:42 +01:00
191d5f1268 refactored TM funnels to allow multiple TM recipients 2022-11-02 10:20:14 +01:00
e5fd62a121 some updates for pdec and EM syrlinks tests 2022-10-31 18:45:39 +01:00
3f3162fb36 Merge remote-tracking branch 'origin/develop' into mueller/pdec_irq_handling 2022-10-31 18:13:34 +01:00
885a7b0c6a bump submodules 2022-10-31 18:13:29 +01:00
7dcc00312f bump fsfw
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-10-28 10:11:42 +02:00
d19ddaa46c Merge branch 'mueller/acs-ss-init' into mueller/pl-ss
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-10-27 17:00:14 +02:00
51572208a9 Merge remote-tracking branch 'origin/develop' into mueller/acs-ss-init
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-10-27 16:59:32 +02:00
745fad2a19 use baudrate 115200 for SCEX now
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-10-27 16:37:16 +02:00
655c38a210 Merge remote-tracking branch 'origin/develop' into mueller/pdec_irq_handling
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-10-27 15:34:54 +02:00
09642eb6bf fixes for bash script
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-10-27 14:11:09 +02:00
23da59fec5 bugfixes and improvements
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-10-27 14:09:55 +02:00
833f7c6885 syrlink sim flag now EM/FM dependent
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-10-27 14:04:55 +02:00
82af8e00df bufixes for PDEC
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-10-27 14:02:34 +02:00
e5ccc6473e Merge remote-tracking branch 'origin/main' into mueller/pdec_irq_handling
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-10-27 11:32:01 +02:00
59bfa2526e Merge pull request 'v1.15.0' (#311) from develop into main
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #311
2022-10-27 11:28:45 +02:00
24c050765b countdown to ensure periodic lock checking
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-10-27 10:51:34 +02:00
95d2bc0887 first IRQ impl
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-10-27 10:49:52 +02:00
bc277067ed add PDEC IRQ uio file entry
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-10-27 09:20:41 +02:00
890fba18e1 Merge remote-tracking branch 'origin/develop' into mueller/acs-ss-init
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-10-27 09:18:12 +02:00
a3a9bc8b39 Merge remote-tracking branch 'origin/develop' into mueller/pdec_irq_handling
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-10-27 09:17:01 +02:00
d6adde92fc add dates to changelog
All checks were successful
EIVE/eive-obsw/pipeline/pr-main This commit looks good
EIVE/eive-obsw/pipeline/head This commit looks good
2022-10-27 09:11:10 +02:00
1d6b5cbda4 add missing changelog entry
All checks were successful
EIVE/eive-obsw/pipeline/pr-main This commit looks good
2022-10-27 09:08:26 +02:00
b54c40db11 missing define renaming
All checks were successful
EIVE/eive-obsw/pipeline/pr-main This commit looks good
2022-10-27 09:06:34 +02:00
cd1eb02f02 re-run generators
Some checks are pending
EIVE/eive-obsw/pipeline/head Build queued...
EIVE/eive-obsw/pipeline/pr-main This commit looks good
2022-10-27 09:03:39 +02:00
b059e831c0 complete changelog
Some checks are pending
EIVE/eive-obsw/pipeline/head Build queued...
2022-10-27 09:02:55 +02:00
35f9869861 tab replacements
Some checks are pending
EIVE/eive-obsw/pipeline/head Build queued...
2022-10-27 09:01:09 +02:00
ae16dcc4a7 afmt + changelog
Some checks are pending
EIVE/eive-obsw/pipeline/head Build started...
2022-10-27 09:00:21 +02:00
0f60c7f356 bump minor version
Some checks are pending
EIVE/eive-obsw/pipeline/head Build started...
2022-10-27 08:57:47 +02:00
ffb93dacd7 Merge remote-tracking branch 'origin/develop' into mueller/pdec_irq_handling
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-10-27 08:57:24 +02:00
e1c0a451ee update changelog
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-10-27 08:56:20 +02:00
4e1df940d9 Merge pull request 'New UIO file names' (#309) from mueller/uio-updates into develop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #309
2022-10-27 08:53:21 +02:00
f24ea413c8 Merge branch 'develop' into mueller/uio-updates
Some checks are pending
EIVE/eive-obsw/pipeline/pr-develop Build started...
2022-10-27 08:53:08 +02:00
921f413888 small bugfix
Some checks are pending
EIVE/eive-obsw/pipeline/pr-develop Build queued...
2022-10-27 08:53:03 +02:00
8dd1d81e0d consistent dev names
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-10-27 08:51:49 +02:00
23238a1e58 reenable core ctrl + minor fm fix
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-10-27 08:48:46 +02:00
7799e3477f pdec handler now compiles
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-10-27 08:34:45 +02:00
115c6a6a57 Merge remote-tracking branch 'origin/develop' into mueller/pdec_irq_handling
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-10-27 08:31:58 +02:00
db47e56474 Merge branch 'mueller/acs-ss-init' into mueller/pl-ss
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-10-27 08:31:47 +02:00
592cbf6fad Merge remote-tracking branch 'origin/develop' into mueller/acs-ss-init
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-10-27 08:31:21 +02:00
cace1217df Merge remote-tracking branch 'origin/develop' into mueller/uio-updates
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-10-27 08:29:49 +02:00
e200e2d0df remove boolean which does not exist anymore
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-10-27 08:28:43 +02:00
2256ffecbe scex speed is now set from cfg
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-10-26 18:32:53 +02:00
e86831fb40 initialize value
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-10-26 17:21:35 +02:00
451581e1aa enable IP core components for both EM and FM
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-10-26 17:18:23 +02:00
44dda9455d SensorProcessing writes to AcsController DataSets now
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-10-26 17:13:23 +02:00
5173a0c9cb its the rad sensor
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-10-26 17:11:57 +02:00
d7ff74b6bd better configurability for PDEC/PTME usage
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-10-26 16:11:34 +02:00
3475e167ee perform SD card check more often for 2-3 cycles
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-10-26 15:57:07 +02:00
00059251f0 further clean up em and general code
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-10-26 15:47:23 +02:00
c2845aefaf further reduce EM SW
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-10-26 15:31:04 +02:00
d25e883e65 further reduce EM obj factory 2022-10-26 15:30:04 +02:00
2286451039 split up Pdec Handler
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-10-26 14:35:47 +02:00
278db35ae0 small fix
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-10-25 19:19:57 +02:00
b5d3422d90 add some baseline defines and config values
Some checks failed
EIVE/eive-obsw/pipeline/head Build started...
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-10-25 19:12:04 +02:00
4a8096998d added two todos and new uio file names
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-10-25 18:21:48 +02:00
1c9c2aba5b Merge pull request 'safety mechanism on reboots' (#308) from mueller/sdc-safety-mechanism-on-reboot into develop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #308
Reviewed-by: Jakob Meier <meierj@irs.uni-stuttgart.de>
2022-10-25 14:33:58 +02:00
9b8d2f3097 Merge remote-tracking branch 'origin/develop' into mueller/acs-ss-init
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-10-25 13:13:41 +02:00
5204afb9bd Merge pull request 'IMTQ Updates' (#306) from mueller/imtq-updates into develop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #306
Reviewed-by: Marius Eggert <eggertm@irs.uni-stuttgart.de>
2022-10-25 13:12:14 +02:00
4af8c85a84 small fix
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
EIVE/eive-obsw/pipeline/head This commit looks good
2022-10-25 11:39:57 +02:00
0135bebc70 impl bugfix
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-10-25 11:33:21 +02:00
69099881bd small stuff
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-10-25 11:31:54 +02:00
b1e8be2ba5 checked FS usage
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-10-25 11:31:06 +02:00
f198a401f2 this should work as well 2022-10-25 11:22:31 +02:00
a9096a46c0 safety mechanism on reboots
Some checks are pending
EIVE/eive-obsw/pipeline/head Build started...
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-10-25 11:04:24 +02:00
a3ed5aef8e bump fsfw
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-10-24 14:26:35 +02:00
4bd2a2dac8 added and implemented all ACS related DataPools to AcsController
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-10-24 10:41:28 +02:00
8b23fd3dd2 fixed int32_t to double warnings. reformats 2022-10-24 10:29:57 +02:00
c54f52eff6 Merge remote-tracking branch 'origin/develop' into mueller/acs-ss-init
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-10-21 15:45:46 +02:00
72d9775de0 re-run generators
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-10-21 15:42:08 +02:00
f4067abdac Merge branch 'mueller/acs-ss-init' into mueller/pl-ss
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-10-21 15:37:52 +02:00
dd7521cc4b Merge remote-tracking branch 'origin/develop' into mueller/acs-ss-init
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-10-21 15:37:25 +02:00
83b8cf3198 Merge remote-tracking branch 'origin/develop' into mueller/imtq-updates
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-10-21 15:33:47 +02:00
eca0cdf99b Merge pull request 'CFDP: Add TM support' (#307) from mueller/cfdp-add-closure-support into develop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #307
2022-10-21 15:30:51 +02:00
bf5474fd24 repoint submodules
Some checks are pending
EIVE/eive-obsw/pipeline/pr-develop Build started...
2022-10-21 15:30:36 +02:00
440bc22a83 bump tmtc
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-10-21 15:25:07 +02:00
917d746d1a small fix (which is not an issue right now)
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-10-21 15:19:47 +02:00
b9b850f621 object ID corrections
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-10-21 14:49:54 +02:00
c0c83faf64 hosted compiles again
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-10-21 12:01:07 +02:00
b6a5c8c854 added TODO, remove obsolete code
Some checks failed
EIVE/eive-obsw/pipeline/head Build started...
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-10-21 11:54:14 +02:00
dc45c53e38 add new CFDP and PUS TM funnel
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-10-21 11:51:44 +02:00
22d4d7085d adaptions so it compiles
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-10-21 11:31:38 +02:00
e0399a5db3 Merge branch 'mueller/acs-ss-init' into mueller/pl-ss
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-10-21 11:20:01 +02:00
b2688c5ac0 Merge remote-tracking branch 'origin/develop' into mueller/acs-ss-init
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-10-21 11:18:39 +02:00
f29b578cae do not install watchdog in yocto install script
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-10-20 18:14:26 +02:00
6effbaa85e EM installer updates
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-10-20 18:03:37 +02:00
da177f1170 create SA deployment dummy
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-10-20 17:25:27 +02:00
5abbaeddb0 update EM obj factory
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-10-20 17:16:37 +02:00
def93d3e59 bump deps
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-10-20 17:09:38 +02:00
48ed7500d8 Merge remote-tracking branch 'origin/develop' into mueller/acs-ss-init
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-10-20 17:03:50 +02:00
a5f2f3e8ea Merge remote-tracking branch 'origin/develop' into mueller/imtq-updates
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-10-20 16:26:35 +02:00
bff4f6fa8d reformatinng
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-10-20 16:09:49 +02:00
75a4cd1b69 awful solution but works
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-10-20 16:09:18 +02:00
29a34256a7 old code seems to work
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-10-20 15:08:33 +02:00
0d3509b991 added actuator command values DataSet
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-10-20 11:09:52 +02:00
62bf792888 removed comment 2022-10-20 11:09:02 +02:00
06941fcf5b fixed int32_t to double warnings 2022-10-20 11:08:21 +02:00
deb7c4e500 added saftCtrl to acsController 2022-10-20 11:07:45 +02:00
ada1111252 removed TODO
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-10-20 10:52:13 +02:00
07fe2cb122 some tweaks for dipole set handling
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-10-20 10:51:19 +02:00
2b6334b9dc this works
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-10-20 10:44:28 +02:00
ab273a8a59 re-use dipole set in IMTQ handler
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-10-20 10:32:17 +02:00
42bb2f554f added fat TODO
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-10-19 19:11:21 +02:00
6bdc420d0e bump tmtc
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-10-19 19:08:36 +02:00
386fc60441 new static variables to make torque status available
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-10-19 18:52:16 +02:00
a0356a5092 imtq update
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-10-19 15:36:57 +02:00
5c2266e214 added variances for sensors for sensor fusion
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-10-19 11:01:53 +02:00
c50f8c716f amended GYR sensor fusion. replaced MGM sensor fusion 2022-10-19 11:01:27 +02:00
86450f9d66 Added DataSets for all OutputValues/Sensors 2022-10-19 11:00:46 +02:00
371a11684a cleanr PL PCDU data on off cmd
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-10-19 10:46:57 +02:00
83362f7a00 bump tmtc
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-10-18 17:51:20 +02:00
c3b2e3ef0f rw fix and higher timeout for tctrl locks
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-10-18 14:08:26 +02:00
a0f8872ad7 bump tmtc
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-10-18 11:41:27 +02:00
b01217cf16 bump tmtc
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-10-18 11:08:38 +02:00
e781da1be4 simplify power set ID handling 2022-10-18 11:01:33 +02:00
13a6a45d30 bump tmtc
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-10-18 10:22:02 +02:00
2d64892a81 inserted fusion weight optimum 2022-10-17 14:53:49 +02:00
d190165bf3 Merge remote-tracking branch 'origin/mueller/acs-ss-init' into mueller/pl-ss
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-10-17 10:52:05 +02:00
ed7bba2cf5 renaming
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-10-17 10:34:57 +02:00
a8e03ab8fe Merge remote-tracking branch 'origin/develop' into mueller/acs-ss-init
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-10-17 10:28:53 +02:00
81696b334c Merge pull request 'Solar Array Deployment Update' (#305) from mueller/solar-array-depl-autonomous into develop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #305
2022-10-17 10:26:08 +02:00
43f25e8002 default time windows
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-10-14 20:37:02 +02:00
c800ddfa31 basic SD card remount FDIR
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-10-14 15:33:34 +02:00
e9a4c63127 fix one shot flag
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-10-14 15:05:44 +02:00
0a5bd6ef73 added sensor fusion logic for GYR
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-10-14 14:57:22 +02:00
3cff1c48e9 some more testing and bugfixes
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-10-14 14:55:37 +02:00
99f703a2eb some more important bugfixes
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-10-14 14:34:35 +02:00
7aca487888 Merge branch 'mueller/solar-array-depl-autonomous' of https://egit.irs.uni-stuttgart.de/eive/eive-obsw into mueller/solar-array-depl-autonomous
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-10-14 14:17:28 +02:00
5d721706f3 bugfix for autonomous handling 2022-10-14 14:17:20 +02:00
bcef1f5d33 small delay
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-10-14 13:30:35 +02:00
19c73167c9 bugfixes for alternation
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-10-14 13:13:23 +02:00
69f34acbd2 rerun generator script
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-10-14 11:55:21 +02:00
8f61d14a82 implemented getParameter for AcsParameters 2022-10-14 11:11:23 +02:00
470f0ad7e8 convert some debug output into info output
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-10-13 18:52:44 +02:00
f939bfc469 remember commander
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-10-13 18:44:50 +02:00
4714c15d65 some more fixes
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-10-13 18:42:47 +02:00
b783e9865e start the FSM properly
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-10-13 18:39:14 +02:00
d8907d5ccc important fix
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-10-13 18:20:17 +02:00
213787d435 start SA depl task
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-10-13 18:15:28 +02:00
a4bf47499e remove channel param from cmd
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-10-13 18:11:05 +02:00
0e8a085f97 add debug mode
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-10-13 17:48:32 +02:00
f9ee01b02d removed TODO
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-10-13 17:35:57 +02:00
773747dd54 implemented alternating GPIO SA Deployment
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-10-13 17:34:33 +02:00
d97e0a1a6a update depl handler
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-10-13 16:04:34 +02:00
0ebd0a0c0b completed impl
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-10-13 15:59:56 +02:00
18e8827a84 add missing public keyword
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-10-13 15:13:19 +02:00
db7f7bdae2 continue SA DEPL impl
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-10-13 15:09:47 +02:00
f89f7630c1 removed comment
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-10-13 10:49:39 +02:00
20b57906b7 added TODO
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-10-12 19:55:47 +02:00
e1b3688869 finish file handling
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-10-12 19:55:20 +02:00
22691b6950 add TODO
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-10-12 17:23:54 +02:00
10da5cd45b action handler init
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-10-12 17:21:10 +02:00
15fb86ddb7 continue SA DEPL handler
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-10-12 17:18:57 +02:00
cc35db91cd added calibration of raw MGM values
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-10-12 17:14:33 +02:00
8edf7fc0de deprecated code removed
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-10-12 15:22:26 +02:00
2bc7c7b3ae continue autonomous depl handling
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-10-12 15:19:21 +02:00
43497b399f enabled processGps
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-10-12 15:18:07 +02:00
84fc44fd5f fixed GPS and STR inputs
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-10-12 15:06:24 +02:00
2a9dc518a0 added GpsDummy 2022-10-12 15:04:19 +02:00
6a900693f3 continue SA DEPL
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-10-12 14:24:45 +02:00
a2e1ed56c9 pass SDC man to SA DEPL handler
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-10-12 14:09:07 +02:00
3289a40320 update comment block
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-10-12 13:58:48 +02:00
09c0afbe7f simplified SA Depl init
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-10-12 13:56:25 +02:00
ea82748496 new solar array deployment task
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-10-12 13:29:38 +02:00
b6b258d82c remove gpio pst
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-10-12 13:21:58 +02:00
214428295b only do time file handling with mounted SD card
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-10-12 12:01:48 +02:00
4aecd07970 added PtgCtrl code. matched inputs to actual SensorValues inputs
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-10-12 10:28:44 +02:00
7be6bbc948 removed deprecated SusData input 2022-10-12 10:27:28 +02:00
430646afd0 added STR to SensorValues 2022-10-12 10:27:01 +02:00
d929b27c08 emplaced STR quaternion related dataPool. added STR dummy to acsTask 2022-10-12 10:26:33 +02:00
d3d29a3691 Merge remote-tracking branch 'origin/develop' into mueller/acs-ss-init
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-10-11 23:13:37 +02:00
bcf7fa216a bump changelog
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-10-11 23:10:09 +02:00
5824b28993 Merge remote-tracking branch 'origin/main' into develop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-10-11 23:08:51 +02:00
f196838f6b bump revision
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-10-11 23:08:37 +02:00
607822b413 fix in SDC manager
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-10-11 23:07:44 +02:00
21258c2d79 fix core controller
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-10-11 22:58:31 +02:00
f5adbea923 safe mode is now callback sequence
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-10-11 15:19:03 +02:00
8536c79445 clean up
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-10-11 15:01:44 +02:00
46dd2b92e5 renamed RMU related stuff to GYR. added GYR processing 2022-10-11 15:01:32 +02:00
b2a715ef6a added GYR dummies to acsTask. Added complete GYR dataSets to the dummies 2022-10-11 15:00:37 +02:00
0f06219fd3 changed initial Mgm values to arbitrary other than 0 values 2022-10-11 14:57:58 +02:00
c8d91dce7d format fix. added GYR orientation matrices 2022-10-11 14:56:18 +02:00
bb0ce1a329 Merge remote-tracking branch 'origin/develop' into mueller/acs-ss-init
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-10-11 14:04:12 +02:00
cca96f2a96 scoped thermal ctrl locks
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-10-10 18:29:06 +02:00
73d9bad9e2 Merge remote-tracking branch 'origin/develop' into mueller/acs-ss-init
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-10-10 18:01:16 +02:00
1780a09dc5 bump deps 2022-10-10 18:01:09 +02:00
7f3d827a6e move finish action call
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-10-10 18:00:43 +02:00
28881b99d1 Merge pull request 'v1.14.0' (#304) from develop into main
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #304
2022-10-10 17:46:37 +02:00
74f053ae5d bump subversion
Some checks are pending
EIVE/eive-obsw/pipeline/pr-main Build started...
EIVE/eive-obsw/pipeline/head This commit looks good
2022-10-10 17:44:58 +02:00
3d1d31c020 update changelog
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-10-10 17:44:28 +02:00
964e0a3d8e re-run afmt
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-10-10 17:41:52 +02:00
0f57810a9a re-run afmt
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-10-10 17:40:30 +02:00
63d660119e Merge remote-tracking branch 'origin/develop' into mueller/acs-ss-init
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-10-10 17:39:47 +02:00
4f7ad7154b Merge pull request 'scex code' (#303) from scex-additions into develop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #303
Reviewed-by: Robin Müller <muellerr@irs.uni-stuttgart.de>
2022-10-10 17:36:36 +02:00
12feb989ae small tweaks
Some checks are pending
EIVE/eive-obsw/pipeline/pr-develop Build started...
2022-10-10 17:36:01 +02:00
076e67dd0b switched sensor input from AcsController to SensorValues
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-10-10 16:02:57 +02:00
82e9c6d092 comments 2022-10-10 16:02:17 +02:00
f0fec11ad7 set channel output valid flag to true 2022-10-10 16:00:31 +02:00
d9f2dfa725 fixed warnings 2022-10-10 15:58:51 +02:00
5b4f97358f bump fsfw
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-10-10 15:32:03 +02:00
57dff4258a disable parity bit
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-10-10 15:21:41 +02:00
c82c4cf9d1 Merge remote-tracking branch 'origin/develop' into scex-additions
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-10-10 11:16:19 +02:00
20b7f8b46b Merge remote-tracking branch 'origin/develop' into mueller/acs-ss-init
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-10-10 11:10:07 +02:00
d8757ede0e bump submodules
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-10-10 11:09:28 +02:00
bba3ba7944 Merge pull request 'EM SW Update' (#300) from mueller/em-sw-updates into develop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #300
Reviewed-by: Jakob Meier <meierj@irs.uni-stuttgart.de>
2022-10-10 11:00:18 +02:00
454c2f0ad1 Merge remote-tracking branch 'origin/develop' into mueller/acs-ss-init
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-10-10 10:30:45 +02:00
8e9a91f32a bump fsfw
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-10-10 10:29:47 +02:00
f4cceeb21e fix one merge conflict
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
EIVE/eive-obsw/pipeline/head This commit looks good
2022-10-10 10:26:26 +02:00
fd1d53aa23 Merge remote-tracking branch 'origin/develop' into scex-additions
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-10-10 10:18:29 +02:00
50d41215fa Merge remote-tracking branch 'origin/develop' into mueller/em-sw-updates
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-10-10 10:15:55 +02:00
7cf91a8ac3 Merge pull request 'Global Config Handler' (#271) from petri_dev into develop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #271
Reviewed-by: Robin Müller <muellerr@irs.uni-stuttgart.de>
2022-10-10 10:14:21 +02:00
f77b3498ec fixed inputs. removed outputs. minor fixes
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-10-10 09:54:06 +02:00
bbf4be1cfe removed reduntant parts. fixed integers messing up divisions 2022-10-10 09:53:33 +02:00
5cbbf4ceb2 corrected SUS dummy outputs to match student project 2022-10-10 09:44:28 +02:00
d726ce4e49 permanently activated ACS_CTRL 2022-10-10 09:43:52 +02:00
4d97a82206 Merge remote-tracking branch 'origin/develop' into scex-additions
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-10-06 18:09:44 +02:00
9173c4d2cb missing commandActive reset
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-10-06 18:05:06 +02:00
36c9feaf3f parity helps for some reason
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-10-06 17:01:04 +02:00
f20acf417e some fixes
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-10-06 16:58:43 +02:00
3079dabc20 combined SensorProcessing and SusConverter
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-10-06 15:38:23 +02:00
84e960a9ef enabled performSafe 2022-10-06 15:37:41 +02:00
6d9999292c Merge branch 'mueller/scex-em-tests' into scex-additions
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-10-06 15:36:26 +02:00
1844df2195 SusDummy output matched to student test case 2022-10-06 15:33:01 +02:00
8b35bbd241 use new SCEX uart dev name
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-10-06 15:08:33 +02:00
0341865e98 this seems to work
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-10-06 11:15:55 +02:00
adbece25aa add code to get frame, parity and overrun errors
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-10-05 19:18:25 +02:00
9e81384c5e two stop bits and even parity helps
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-10-05 18:44:52 +02:00
c5e5df03d9 new Uart16550 for SCEX, try stop bits
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-10-05 18:13:49 +02:00
3fa2c63a03 add EM code
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-10-05 14:38:48 +02:00
1a192cd8fb found the bug
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-10-04 23:04:50 +02:00
a44141c476 something is still wrong
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-10-04 21:17:54 +02:00
b930af52b0 simplified DLE parser 2022-10-04 20:52:11 +02:00
0c389177e3 refactor DLE parsing and move semaphore release up top
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-10-04 18:38:53 +02:00
763fc54855 bump changelog
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-10-04 14:54:39 +02:00
3f12d3500e re-generate csvs
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-10-04 14:51:15 +02:00
9d0e10eb1e fixed dummies, scheduled dummies as part of acsTask
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-10-04 13:45:13 +02:00
797ed9200f bump tmtc
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-10-04 13:34:15 +02:00
526ddd0208 Merge branch 'develop' into petri_dev
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-10-04 13:18:34 +02:00
353cda832d unittest fix
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-09-30 15:32:46 +02:00
54a3d31c00 TCS ctrl bugfix
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-09-30 15:30:31 +02:00
a562d7e4ca improved retval checker
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-09-30 15:07:20 +02:00
470b236008 fixed some of the acs ss code 2022-09-30 15:05:48 +02:00
66c6f08447 connect acs ctrl to subsystem
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-09-30 14:30:30 +02:00
f0e4d5a61e bump tmtc
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-09-30 14:22:23 +02:00
57d37f14f3 fixed some bugs
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-09-30 14:14:59 +02:00
dcd0a650f0 this should do the job
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-09-30 13:30:22 +02:00
d10ff4efa6 compiles again
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-09-30 12:09:03 +02:00
abe5f43ae9 added performDetumble and implemented ckeckModeCommand
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-09-30 11:06:17 +02:00
16429009b4 added LocalDataPool entries
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-09-30 10:13:27 +02:00
68fdb68fe6 Merge branch 'irini' into scex-additions
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
EIVE/eive-obsw/pipeline/head This commit looks good
2022-09-29 23:38:59 +02:00
612426ce3b Merge branch 'scex-additions' into irini
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-09-29 23:36:15 +02:00
9c07a26615 commets removed
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-09-29 19:50:12 +02:00
6af7ccc6a2 need to fix all of these TODOs
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-09-29 19:40:00 +02:00
43cda300e3 scex directory
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-09-29 19:38:19 +02:00
9512a7d280 Merge remote-tracking branch 'origin/develop' into mueller/acs-ss-init
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-09-29 17:50:09 +02:00
82cb87abae re-point fsfw
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-09-29 17:47:09 +02:00
08c03520f5 bump tmtc
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-09-29 17:41:50 +02:00
30dd6f1778 bump fsfw
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-09-29 17:24:58 +02:00
3e5a717845 bump fsfw
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-09-29 17:22:09 +02:00
f27fccfd29 set DHB parents differently now 2022-09-29 17:06:19 +02:00
0f609fdaba thats a bit tricky
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-09-29 16:47:47 +02:00
ee6d13abcc Merge branch 'develop' into petri_dev
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-09-29 14:21:08 +02:00
0f081e52bd bump tmtc
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-09-29 14:20:44 +02:00
660d42f615 Merge remote-tracking branch 'origin/develop' into scex-additions
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-09-29 14:10:29 +02:00
541b44cea7 re-run afmt
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-09-29 14:10:21 +02:00
b3f4eaa0f2 Merge remote-tracking branch 'origin/develop' into petri_dev
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-09-29 14:09:33 +02:00
2ad93f7735 Merge remote-tracking branch 'origin/develop' into mueller/em-sw-updates
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-09-29 14:09:02 +02:00
865ca46974 Merge remote-tracking branch 'origin/develop' into scex-additions
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-09-29 14:08:22 +02:00
e161eeb537 re-run generators and bump dependencies
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-09-29 14:06:46 +02:00
8a5248a46d include fix
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-09-29 14:03:09 +02:00
a215657f4e small bugfix
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-09-29 14:01:04 +02:00
92cf4580ca Merge remote-tracking branch 'origin/develop' into mueller/acs-ss-init
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-09-29 13:57:39 +02:00
49efbc4725 some bugfixes
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-09-29 13:53:42 +02:00
96497df7ba bump tmtc
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-09-29 13:49:39 +02:00
aa56c26e25 Merge remote-tracking branch 'origin/develop' into petri_dev
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-09-29 13:45:42 +02:00
151d27985f Merge remote-tracking branch 'origin/develop' into scex-additions
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-09-29 13:43:58 +02:00
a152553d00 Merge remote-tracking branch 'origin/develop' into mueller/em-sw-updates
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-09-29 13:32:10 +02:00
ffb9e5e03c Merge pull request 'OBSW Update Commands' (#302) from mueller/obsw-update-cmds into develop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #302
Reviewed-by: Jakob Meier <meierj@irs.uni-stuttgart.de>
2022-09-29 13:24:16 +02:00
fcef7e42a5 some unittest fixes
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-09-29 13:23:55 +02:00
1463963532 unittest builds now
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-09-29 13:20:05 +02:00
6bdc0b23de bump fsfw and tmtc
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-09-29 13:13:38 +02:00
b9f48a533a Merge remote-tracking branch 'origin/develop' into scex-additions
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-09-28 17:02:21 +02:00
97f02401fe bugfix for SCEX code
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-09-28 17:01:40 +02:00
eb08d8849b added SUS datapool to AcsController
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-09-28 15:27:51 +02:00
02333d8267 Merge remote-tracking branch 'origin/develop' into mueller/acs-ss-init
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-09-28 10:13:53 +02:00
5d0c07467f update changelog
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
EIVE/eive-obsw/pipeline/head This commit looks good
2022-09-28 10:05:36 +02:00
103d53181c Merge remote-tracking branch 'origin/develop' into mueller/obsw-update-cmds
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-09-28 10:04:22 +02:00
c602d7bb28 clean up the dependency mess
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-09-28 00:19:29 +02:00
0bae128536 bump fsfw again
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-09-28 00:03:28 +02:00
e2b83f9222 update .cproject file
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-09-28 00:02:03 +02:00
6888df5c44 afmt
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-09-27 23:59:38 +02:00
0c75997ba0 now it compiles for windows again 2022-09-27 23:59:17 +02:00
1aa3cc3595 cant build GW SW of windows 2022-09-27 21:45:22 +02:00
26dc4ba56e fixes for compilation
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-09-27 19:38:35 +02:00
a04372ff55 Merge remote-tracking branch 'origin/develop' into petri_dev
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-09-27 19:31:57 +02:00
f415adccc2 repoint fsfw
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-09-27 19:30:42 +02:00
269de1782a Merge branch 'mueller/obsw-update-cmds' into mueller/acs-ss-init
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-09-27 19:26:23 +02:00
c7e06f8878 changelog update
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-09-27 19:22:06 +02:00
5f2a0e107d Merge branch 'scex-additions' of https://egit.irs.uni-stuttgart.de/eive/eive-obsw into scex-additions
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-09-27 19:18:19 +02:00
3fd8230f03 Merge branch 'irini' into scex-additions 2022-09-27 19:18:12 +02:00
071e00e0ef dog fixed
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-09-27 19:17:24 +02:00
aab2dc6367 Merge branch 'develop' into scex-additions
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-09-27 19:14:40 +02:00
3240c843a1 Merge branch 'scex-additions' of https://egit.irs.uni-stuttgart.de/eive/eive-obsw into scex-additions
Some checks are pending
EIVE/eive-obsw/pipeline/head Build started...
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-09-27 19:09:31 +02:00
d3c7bae087 Merge branch 'irini' into scex-additions 2022-09-27 19:08:40 +02:00
32c2b2038c constructor correction
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-09-27 19:06:55 +02:00
308a855d8c bugfix for scex testcode
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-09-27 18:54:48 +02:00
a1cc5b0ca7 Merge remote-tracking branch 'origin/develop' into irini
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-09-27 17:36:19 +02:00
5813c5dd43 bump fsfw
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-09-27 14:58:40 +02:00
2b41b3ee26 Merge remote-tracking branch 'origin/develop' into mueller/acs-ss-init 2022-09-27 14:57:01 +02:00
24062071c0 bump json dependency to concrete version v3.11.2
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-09-27 14:56:32 +02:00
3c746e954b updates on same image are problematic..
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-09-27 14:29:39 +02:00
ff243fa46c some bugfixes
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-09-27 12:19:42 +02:00
2c3c3c76af check out explicit json version
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-09-27 12:14:33 +02:00
4a1cce19c4 fixed minor bugs
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-09-27 11:57:15 +02:00
51976730aa important bugfix
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-09-27 11:14:54 +02:00
5f17f365e3 fixed local includes
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-09-27 11:06:11 +02:00
caca7f5da8 small bugfix
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-09-27 10:55:00 +02:00
8c0fd8d9e2 some informative docs
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-09-27 10:51:56 +02:00
90962c9f8e rudimentary SD commanding interface
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-09-27 10:51:07 +02:00
dca4335329 fixed array assignment after intialization
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-09-27 10:49:46 +02:00
9b6636fe31 rerun generators
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-09-27 09:33:34 +02:00
2614239fe4 this should work for the same chip/copy as well
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-09-27 09:27:40 +02:00
d87baa8da9 successfull SW update
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-09-26 23:17:12 +02:00
9d440838e9 set correct owner for SW update procedure
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-09-26 18:40:31 +02:00
cbb1fdfd5e args not needed but keep them there (commented)
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-09-26 18:07:23 +02:00
ab919131fb accept rsa keys for q7s-cp.py as well
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-09-26 16:20:53 +02:00
e7b6ca42bf cleaned up includes
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-09-26 13:23:20 +02:00
8161d1cd88 finished update cmd impl
Some checks are pending
EIVE/eive-obsw/pipeline/head Build started...
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-09-26 12:26:08 +02:00
eb0ace3bc6 continuing SW update impl
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-09-26 12:00:57 +02:00
b3275d015f start update handler impl
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-09-26 11:50:35 +02:00
05adc91f94 moved definitions
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-09-26 11:39:17 +02:00
7d824f5448 updated helper scripts
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-09-26 11:31:29 +02:00
ec91d9977a move shell scripts helpers to root
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-09-26 11:20:03 +02:00
80f0664139 added some more fixed file names
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-09-26 11:15:37 +02:00
65a7d38f54 adaptions for update sequence
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-09-26 11:12:41 +02:00
15641c61ea these commands make more sense
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-09-26 10:56:57 +02:00
96bbde7bbc removed HasReturnValuesIF
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-09-26 10:39:57 +02:00
2ede1ed27c added CMake files for new directories. amended existing controller Cmake
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-09-26 10:15:03 +02:00
e140ae4063 fixed typo in filename
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-09-26 10:13:00 +02:00
cd11e08193 removed redundant loop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-09-23 14:37:48 +02:00
46ec376e4d amended SusConverter for use as OBSW
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-09-23 14:27:05 +02:00
e70ee1bf9d initial commit of SusConverter
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-09-23 09:56:32 +02:00
4b96997f6c added SUS transformation matrices to AcsParameters
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-09-22 14:47:53 +02:00
7986686739 added SUS calibration coefficients to AcsParameters
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-09-22 13:39:42 +02:00
b2484136b1 further fixes for HasReturnValuesIF
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-09-20 15:45:49 +02:00
5ebdc9e767 amended includes. removed links to HasParametersIF
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-09-20 15:06:05 +02:00
7885205a07 added Navitation
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-09-20 14:15:55 +02:00
858b291f61 added config. added classIds
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-09-20 13:52:17 +02:00
40917ab988 added SafeCtrl
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-09-20 13:46:42 +02:00
497149a628 added PtgCtrl
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-09-20 13:43:26 +02:00
3d123a09f3 added control subfolder. added Detumble
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-09-20 13:36:17 +02:00
cc82b8aa42 small formatting fixes
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-09-20 11:20:13 +02:00
28dfcbf0ef added SensorProcessing
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-09-19 15:44:14 +02:00
295a2e3fdc added SensorValues
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-09-19 15:37:05 +02:00
84b0856b52 added OutputValues
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-09-19 15:26:51 +02:00
053c1a7fe8 added Guidance
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-09-19 15:17:39 +02:00
338c8299e2 added Commanding as ActuatorCmd
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-09-19 15:03:25 +02:00
a95f7ff8b0 added CholeskyDecomposition
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-09-19 14:36:08 +02:00
d497dd53c5 added MKF
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-09-19 14:28:54 +02:00
8b6d3c9835 small formating-fixes
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-09-19 14:09:14 +02:00
edb64d2ec5 small fixes
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-09-19 13:24:20 +02:00
b42986dd8a added MathOperations to util folder
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-09-19 11:10:28 +02:00
4583f0cb86 added Igrf13Model
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-09-19 10:46:21 +02:00
2ddd95c7fd helper scripts and README section for OBSW update
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-09-16 19:57:19 +02:00
b308a037b4 bump fsfw
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-09-16 18:56:03 +02:00
afba412fe2 separate script to create obsw version file
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-09-16 18:53:11 +02:00
0fc639cc11 added action IDs for new commands
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-09-16 18:48:05 +02:00
d2ca1139a7 bump tmtc
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-09-16 18:29:41 +02:00
cb6366b208 bump fsfw
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-09-16 18:24:46 +02:00
b48c5d528e larger TC and TM store
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-09-16 18:16:52 +02:00
8aa412e865 add CFDP APID to TCP parse list
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-09-16 18:10:23 +02:00
9411b740ae CFDP integration almost complete
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-09-16 17:28:43 +02:00
cee114af7e bump fsfw
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-09-16 15:13:22 +02:00
2f18347430 move object ID definition
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-09-16 15:12:32 +02:00
d9427c6112 added AcsParameters
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-09-16 14:22:17 +02:00
a827351a75 Merge branch 'mueller/em-sw-updates' of https://egit.irs.uni-stuttgart.de/eive/eive-obsw into mueller/em-sw-updates
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-09-16 14:02:11 +02:00
54f73661fc fix init error 2022-09-16 14:01:54 +02:00
65f4daf305 move config define
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-09-16 12:35:10 +02:00
8dce434746 fix bsp_hosted
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-09-16 12:34:05 +02:00
68039d5d4a clean up config code
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-09-16 12:28:39 +02:00
0b43c3137f add new constants for CFDP, clean up
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-09-16 12:22:46 +02:00
6b48fb64d8 start integrating cfdp code
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-09-16 12:14:27 +02:00
547fcf22dd add very basic test in Q7S Test task for FS helpers
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-09-16 12:05:50 +02:00
26216eca88 new fs helper module
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-09-16 11:53:33 +02:00
38f435d1ae update for new FSFW code
Some checks are pending
EIVE/eive-obsw/pipeline/head Build started...
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-09-16 11:43:11 +02:00
dac799bb97 Merge branch 'develop' into mueller/em-sw-updates
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-09-15 18:21:44 +02:00
3673ae8e62 doc correction
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-09-15 17:46:41 +02:00
2e03cfa116 small update for .cproject file
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-09-15 13:44:54 +02:00
9ad649e43e ACS controller running in EM SW withour errors now
Some checks are pending
EIVE/eive-obsw/pipeline/head Build started...
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-09-15 13:40:57 +02:00
8a6a69d230 update EM code
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-09-15 13:15:39 +02:00
8ebc62cbe6 new ACS preproc defines
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-09-15 13:03:22 +02:00
3313604cb5 move some dummy creation into separate function
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-09-15 12:00:58 +02:00
c616720095 update .cproject file again
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-09-15 11:58:00 +02:00
3230efa4aa new dummy helper functions 2022-09-15 11:54:43 +02:00
2261ccb304 create ACS controller in EM sw
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-09-15 11:40:10 +02:00
57331380c3 small fix for ACS task
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-09-15 11:38:29 +02:00
94a70aa2fc update .cproject file
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-09-15 11:36:04 +02:00
ea60767825 Merge branch 'irini' into scex-additions
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
EIVE/eive-obsw/pipeline/head This commit looks good
2022-09-14 19:05:23 +02:00
3fc97f9ee9 Merge pull request 'updated to new fsfw' (#299) from mohr/updated_fsfw into develop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #299
2022-09-14 19:03:41 +02:00
92e06352be Merge branch 'develop' into mohr/updated_fsfw
Some checks are pending
EIVE/eive-obsw/pipeline/pr-develop Build started...
2022-09-14 19:03:26 +02:00
63e4448178 run afmt, bump proj files
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-09-14 16:47:58 +02:00
4d93368b4c fixed for new fsfw
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-09-14 13:44:43 +02:00
ff3bc7da73 fix for new fsfw
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-09-14 13:18:50 +02:00
f7196a4791 updated to new fsfw
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-09-14 12:55:53 +02:00
fb3214fef9 swap order
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-09-12 17:25:20 +02:00
4649a75d40 update to new API
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-09-12 17:23:43 +02:00
002f776bef start RPiSdCardManager
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-09-12 17:15:02 +02:00
7bc866a105 add RPI SD card manager
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-09-12 17:09:27 +02:00
31b3de784b stuff
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-09-12 17:00:49 +02:00
da739636f3 Merge branch 'develop' into scex-additions
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-09-12 16:23:08 +02:00
e381b00a13 re-point tmtc
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-09-02 13:19:55 +02:00
a76816f055 update changelog
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-09-02 13:16:56 +02:00
983f073e54 Merge pull request 'GomSpace commands' (#293) from mueller/new-gomspace-commdsn into develop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #293
Reviewed-by: Jakob Meier <meierj@irs.uni-stuttgart.de>
2022-09-02 12:40:44 +02:00
923adbdb1a bump tmtc
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
EIVE/eive-obsw/pipeline/head This commit looks good
2022-09-01 17:40:21 +02:00
6ae0249fdc load table command
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-09-01 17:31:43 +02:00
87f430fdee some bugfixes for save table feature
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-09-01 16:58:51 +02:00
4e92fd4421 some simplifications
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-09-01 15:23:39 +02:00
aecbbfdc7d Merge pull request 'increase number of allowed consecutive commands' (#294) from mueller/allow-more-service-8-consecutive-cmds into develop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #294
Reviewed-by: Jakob Meier <meierj@irs.uni-stuttgart.de>
2022-09-01 11:29:54 +02:00
27129f3b66 increase number of allowed consecutive commands
Some checks are pending
EIVE/eive-obsw/pipeline/pr-develop Build started...
EIVE/eive-obsw/pipeline/head This commit looks good
for service 8
2022-09-01 11:18:55 +02:00
3d71cce30b bugfix
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-09-01 11:04:24 +02:00
7dde1150e8 gom space commands
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-08-31 22:52:32 +02:00
d295ca905e Merge remote-tracking branch 'origin/irini' into mueller/test-new-cmd-handling
All checks were successful
EIVE/eive-obsw/pipeline/pr-irini This commit looks good
EIVE/eive-obsw/pipeline/head This commit looks good
2022-08-31 16:39:16 +02:00
079fa04d69 Merge remote-tracking branch 'origin/develop' into irini
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-08-31 16:37:32 +02:00
da7cedc910 perform finish in command builder
All checks were successful
EIVE/eive-obsw/pipeline/pr-irini This commit looks good
2022-08-31 16:37:15 +02:00
c3fb285f35 Merge remote-tracking branch 'origin/develop' into mueller/test-new-cmd-handling 2022-08-31 16:32:18 +02:00
7c15ecbad2 apply afmt
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
EIVE/eive-obsw/pipeline/pr-irini This commit looks good
2022-08-31 16:12:32 +02:00
839851914a update SCEX code 2022-08-31 16:07:38 +02:00
74d4741380 ScexDeviceHandler: adjusted comments
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-08-31 11:06:37 +02:00
8c0e261f44 ScexDeviceHandler: fileId includes date and time
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-08-31 10:58:21 +02:00
fd674b3d61 Merge pull request 'DHB TM better handling' (#291) from mueller/dhb-tm-even-better into develop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #291
Reviewed-by: Jakob Meier <meierj@irs.uni-stuttgart.de>
2022-08-31 07:35:48 +02:00
20df16916a bump fsfw
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
EIVE/eive-obsw/pipeline/head This commit looks good
2022-08-31 00:03:00 +02:00
822e8eea4a this is better
Some checks are pending
EIVE/eive-obsw/pipeline/head Build started...
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-08-30 23:54:05 +02:00
9319d58137 Merge branch 'develop' of https://egit.irs.uni-stuttgart.de/eive/eive-obsw into develop 2022-08-30 23:49:09 +02:00
2c6127d98b Merge pull request 'Use new DHB TM handler' (#290) from mueller/use-new-dhb-tm-handler into develop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #290
Reviewed-by: Jakob Meier <meierj@irs.uni-stuttgart.de>
2022-08-30 20:22:38 +02:00
0f91800cf8 works but reply handling is annoying
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-08-30 18:52:50 +02:00
a6582313f7 writing file works now
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-08-30 18:36:00 +02:00
4ce48d01c6 Merge remote-tracking branch 'origin/mueller/use-new-dhb-tm-handler' into irini
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-08-30 16:52:19 +02:00
b156d78274 huh 2022-08-30 16:51:30 +02:00
13e89e1342 bump deps
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-08-30 16:34:24 +02:00
4649ae2edb minor tweaks
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
EIVE/eive-obsw/pipeline/head This commit looks good
2022-08-30 16:06:17 +02:00
74b45f30a0 move to new DHB TM handler
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-08-30 15:53:20 +02:00
86337d8f47 retval replacements
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-08-29 16:05:05 +02:00
86d3732f65 retval replacements
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-08-29 15:57:26 +02:00
aa86bc722f retval corrections
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-08-29 15:56:18 +02:00
3ad7a35f0e Merge remote-tracking branch 'origin/develop' into mueller/acs-ss-init
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-08-29 15:53:57 +02:00
975f202ddb Merge remote-tracking branch 'origin/develop' into mueller/pl-ss
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-08-29 15:50:55 +02:00
aa0da618ca Merge remote-tracking branch 'origin/develop' into irini
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-08-29 15:49:23 +02:00
04fb2b1261 bump tmtc
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-08-29 15:44:40 +02:00
a70bfd319c Merge remote-tracking branch 'origin/main' into develop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-08-29 13:40:16 +02:00
3a80c4cb0c additional nullptr check
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-08-29 13:32:49 +02:00
f308718256 safety check
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-08-29 13:26:13 +02:00
f8ee516d46 bump dependencies
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-08-29 13:21:00 +02:00
34ede28fda Merge pull request 'Update Power Modules' (#287) from mueller/update-p60-module-code into develop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #287
Reviewed-by: Jakob Meier <meierj@irs.uni-stuttgart.de>
2022-08-29 08:27:35 +02:00
108b7620b8 bump tmtc
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
EIVE/eive-obsw/pipeline/head This commit looks good
2022-08-27 17:18:00 +02:00
c8c103e5e6 update changelog
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-08-27 16:04:55 +02:00
3b2794735b disable test
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-08-27 15:54:52 +02:00
7de26586fb need to link gs sw for hosted now
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-08-27 15:51:45 +02:00
e8208a21a4 config table retrieval works
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-08-27 01:02:08 +02:00
8c110460a6 added test to retrieve pdu config
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-08-26 14:28:06 +02:00
e804d433aa merge conflict
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-08-26 13:46:18 +02:00
0f553e3431 Merge remote-tracking branch 'origin/develop' into mueller/update-p60-module-code
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-08-26 13:45:53 +02:00
a7482b657a changed all table parsing to use gom space API
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-08-26 13:42:58 +02:00
efb0bce718 finally it works
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-08-26 03:20:44 +02:00
d098ed6403 gomspace lib working 2022-08-26 00:39:06 +02:00
774e060def Merge branch 'develop' of https://egit.irs.uni-stuttgart.de/eive/eive-obsw into develop 2022-08-25 23:24:08 +02:00
7a1dbf8456 add gom space client code
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-08-25 23:22:17 +02:00
ad783018bd add some more compile options
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-08-25 20:59:35 +02:00
f264b9781b bump gomspace-sw submodule
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-08-25 20:58:07 +02:00
65ec5c35e3 another try 2022-08-25 20:57:04 +02:00
63b8aec894 damn it 2022-08-25 20:55:56 +02:00
7841a5c8c0 more complicated than expected
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-08-25 18:48:07 +02:00
c0a78e6fef start extending p60 module code
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-08-25 18:19:33 +02:00
440fb4d488 Merge pull request 'all returnvalue replacements' (#286) from mueller/update-retval-if into develop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #286
Reviewed-by: Jakob Meier <meierj@irs.uni-stuttgart.de>
2022-08-25 14:50:07 +02:00
8aa65ebbd6 bump tmtc 2022-08-25 09:55:42 +02:00
86b4747249 apid mask
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-08-24 19:54:16 +02:00
691505ffa9 update changelog
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
EIVE/eive-obsw/pipeline/head This commit looks good
2022-08-24 17:35:06 +02:00
447c4d5c88 all retval replacements
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-08-24 17:27:47 +02:00
084ff3c5ca Merge pull request 'ACS IMTQ Update' (#284) from mueller/acs-imtq-update into develop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #284
2022-08-24 16:56:51 +02:00
5bfe72e430 Merge remote-tracking branch 'origin/develop' into petri_dev
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-08-24 16:55:37 +02:00
bddaf120f4 Merge remote-tracking branch 'origin/develop' into irini
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-08-24 16:54:39 +02:00
2be35768cc Merge pull request 'TMTC Refactoring' (#276) from mueller/tmtc-stack-refactoring into develop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #276
2022-08-24 16:52:09 +02:00
790a71974e Merge branch 'mueller/tmtc-stack-refactoring' into mueller/acs-imtq-update
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-08-24 16:51:42 +02:00
28d00b78a3 Merge remote-tracking branch 'origin/develop' into mueller/tmtc-stack-refactoring
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-08-24 16:48:13 +02:00
0d0f32b751 re-run generators
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-08-24 16:46:13 +02:00
4d39a1dcc6 Merge branch 'develop'
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-08-24 16:39:31 +02:00
049832d6cc update changelog and cmakelists.txt
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-08-24 16:38:38 +02:00
9873b17ceb Merge pull request 'v1.13.0' (#285) from develop into main
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #285
2022-08-24 16:36:49 +02:00
e653dbe8ca Merge branch 'main' into develop
All checks were successful
EIVE/eive-obsw/pipeline/pr-main This commit looks good
EIVE/eive-obsw/pipeline/head This commit looks good
2022-08-24 16:30:38 +02:00
e7cbcee873 re-run auto-formatter
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-08-24 16:29:24 +02:00
84cc961340 re-run generators
Some checks are pending
EIVE/eive-obsw/pipeline/head Build started...
2022-08-24 16:29:04 +02:00
85172616f8 bump tmtc
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-08-24 16:25:09 +02:00
920545b709 comment typo fix
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-08-24 15:24:57 +02:00
6d53a38f9f small update
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-08-24 15:16:46 +02:00
3c23ede9dd Merge branch 'mueller/tmtc-stack-refactoring' of https://egit.irs.uni-stuttgart.de/eive/eive-obsw into mueller/tmtc-stack-refactoring
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-08-24 15:00:13 +02:00
86bfa85e00 bump tmtc 2022-08-24 14:59:52 +02:00
ef92673e4e bump tmtc
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-08-24 12:07:55 +02:00
b4b9774fde Merge branch 'mueller/tmtc-stack-refactoring' of https://egit.irs.uni-stuttgart.de/eive/eive-obsw into mueller/tmtc-stack-refactoring
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-08-24 12:02:24 +02:00
e561805f3a update ploc supv helper 2022-08-24 12:02:16 +02:00
4cfbd5c88c Merge branch 'develop' into mueller/tmtc-stack-refactoring
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-08-23 18:26:44 +02:00
1aeebcc0ee important bugfix for update conitnuation
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-08-23 18:26:14 +02:00
d7bc35ea45 crc check fails on mem 0
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-08-22 22:25:22 +02:00
e09eaae42f update events
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-08-22 22:18:14 +02:00
208856ef52 bump tmtc again
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-08-22 21:44:18 +02:00
84268c6dd6 bump tmtc
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-08-22 17:35:32 +02:00
42e3d92fb9 set hk set valid as well
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-08-22 17:10:19 +02:00
64b2ceea0a set boot status report set valid
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-08-22 17:09:39 +02:00
519c7840cc bump tmtc
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-08-22 15:09:05 +02:00
51463700d5 smaller bugfixes
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-08-22 13:52:39 +02:00
663b65f159 memory check always based on file now
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-08-22 13:50:24 +02:00
b3bb029c47 something wrong with mem check
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-08-22 12:41:08 +02:00
e71e2e7879 new command to only perform mem check
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-08-22 12:08:39 +02:00
f98411f421 speed up crc proc significantly 2022-08-22 10:35:23 +02:00
1f3365960d re-run generators
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-08-21 08:38:21 +02:00
b503836a3d hopefully last bugfix
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-08-21 01:38:45 +02:00
47ebf3d8cc allow starting update in the middle
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-08-20 22:52:48 +02:00
c094b45fb4 percent progress event
And some changes to allow restarting from the middle
2022-08-20 20:26:25 +02:00
f2190f8aa1 resolve merge conflict
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-08-20 12:24:24 +02:00
5aa0b3530a bugfixes
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-08-20 12:18:12 +02:00
8ea6df273d moved a size check
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-08-20 12:16:11 +02:00
f9061d5494 fix 2022-08-20 12:14:49 +02:00
c8d38cf852 bugfixes
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-08-20 12:11:08 +02:00
c85035c62e bugfixes in tc packaging classes
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-08-20 10:27:43 +02:00
ad3bdbcf96 mode check for commands executed by supervisor helper 2022-08-20 10:26:19 +02:00
83382de330 Merge branch 'mueller/acs-imtq-update' of https://egit.irs.uni-stuttgart.de/eive/eive-obsw into mueller/acs-imtq-update 2022-08-20 01:50:24 +02:00
2e2afcd6c5 moved a size check 2022-08-20 01:45:49 +02:00
9eb2107958 fix
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-08-19 21:41:24 +02:00
70d9f00372 bump tmtc
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-08-19 16:53:25 +02:00
0ea993e16b some bugfixes
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-08-19 15:49:22 +02:00
4aad06469d tmtc bugfix
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-08-19 12:43:35 +02:00
d318ff9781 bump tmtc
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-08-19 12:38:37 +02:00
fd17e299fb Merge branch 'mueller/tmtc-stack-refactoring' of https://egit.irs.uni-stuttgart.de/eive/eive-obsw into mueller/tmtc-stack-refactoring 2022-08-19 12:35:49 +02:00
726e448af9 fixes for IMTQ mgm reading
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-08-18 18:18:44 +02:00
3d0d10dc32 try IMTQ change
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-08-18 17:27:39 +02:00
48ef6e6a5c bump tmtc
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-08-18 15:52:59 +02:00
ba56c72d91 simpler way to check crc16 2022-08-18 15:34:26 +02:00
ec47d7eeef important bugfix for CRC calculation
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-08-18 15:32:24 +02:00
732602a4cc supv ack failure
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-08-18 15:11:32 +02:00
d9321a83cf retval translation still fails
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-08-18 11:25:39 +02:00
5de9a812bb use default cross-user path for x-compiler installation
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-08-17 14:44:27 +02:00
2d795c6dd0 add sun sensor set
Some checks are pending
EIVE/eive-obsw/pipeline/head Build started...
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-08-17 09:27:19 +02:00
7455514797 it compiles now
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-08-17 09:05:58 +02:00
a134f3f100 Merge remote-tracking branch 'origin/develop' into irini
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-08-16 18:52:16 +02:00
b81218e2d4 Merge branch 'mueller/tmtc-stack-refactoring' into petri_dev
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-08-16 18:48:10 +02:00
8ecf04f005 Merge remote-tracking branch 'origin/develop' into petri_dev 2022-08-16 18:48:06 +02:00
79f5077a25 some issues 2022-08-16 18:46:10 +02:00
0c9018c0c9 specify where some info is coming from
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-08-16 18:41:50 +02:00
e649d45e3e better size checks
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-08-16 18:37:51 +02:00
5c32114bdb this check is sufficient
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-08-16 18:13:54 +02:00
800cabb8a1 small bugfix
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-08-16 18:02:32 +02:00
91600bcce9 remove redundant call
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-08-16 17:51:36 +02:00
6ead94b5f4 this is even better
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-08-16 17:49:50 +02:00
21903c4443 that works as well.
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-08-16 17:43:53 +02:00
595d098653 use new API
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-08-16 17:43:05 +02:00
a669137d5c Merge remote-tracking branch 'origin/develop' into mueller/tmtc-stack-refactoring
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-08-16 17:39:35 +02:00
d8fa3881f6 Merge pull request 'ACS Controller Init' (#275) from mueller/acs-ctrl into develop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #275
Reviewed-by: Jakob Meier <meierj@irs.uni-stuttgart.de>
2022-08-16 17:34:21 +02:00
17279a6fd0 host compiles
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-08-16 17:09:46 +02:00
3c03471197 update changelog
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
EIVE/eive-obsw/pipeline/head This commit looks good
2022-08-16 16:45:14 +02:00
ffed82575c bump tmtc
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-08-16 16:43:30 +02:00
30e7636bc9 add periodic HK subscription 2022-08-16 16:37:54 +02:00
80347a0e23 bump tmtc
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-08-16 12:57:43 +02:00
676b94b139 map dataset to sid
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-08-16 11:56:17 +02:00
ce08695137 bump tmtc
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-08-16 11:44:59 +02:00
b8b6a14e3b some bugfixes
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-08-16 11:27:16 +02:00
eb54a384b4 bump fsfw
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-08-15 19:19:23 +02:00
67ab3f981b missing packet checks
Some checks failed
EIVE/eive-obsw/pipeline/head Build started...
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-08-15 19:03:08 +02:00
e1c06ce1f5 possible bugfix
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-08-15 18:58:56 +02:00
232372fd96 more defensive buffer handling
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-08-15 18:53:25 +02:00
458929957d generic TM checker
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-08-15 18:43:28 +02:00
7e3517d309 it compiles again 2022-08-15 18:34:26 +02:00
0c371623c6 change PLOC/MPSOC code to using new SP code
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-08-15 17:25:16 +02:00
f071b7eba4 thats a lot of rewriting..
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-08-15 13:03:23 +02:00
859ced185d start refactoring of PLOC SUPV packet defs
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-08-15 12:23:54 +02:00
4a28f79e3a updates for new API 2022-08-15 11:57:57 +02:00
751ae6062e finished MGM data copying function
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-08-15 11:19:08 +02:00
6821a95095 continued ACS controller impl
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-08-15 10:50:19 +02:00
c99cb4a81e schedule ACS controller
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-08-15 09:58:18 +02:00
6003c6afb5 Merge remote-tracking branch 'origin/develop' into mueller/acs-ctrl
Some checks are pending
EIVE/eive-obsw/pipeline/head Build started...
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-08-12 13:13:57 +02:00
ed6c90b106 retain old order
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-08-12 13:12:58 +02:00
2eac346e41 re-add arcsec submodule
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-08-12 13:11:34 +02:00
e6da1824df something went wrong here 2022-08-12 13:11:15 +02:00
c0157ca506 remove etl submodule
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-08-12 13:09:58 +02:00
01be3ffc9d Merge branch 'develop' into petri_dev
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-08-12 13:08:09 +02:00
19f75b598a Merge remote-tracking branch 'origin/develop' into irini
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-08-12 13:06:35 +02:00
12f38aa58c Merge pull request 'Bump dependencies' (#274) from mueller/bump-deps into develop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #274
2022-08-12 12:59:14 +02:00
eb623e7d7c this should fix the CI/CD error
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-08-12 12:55:43 +02:00
f8f51c8fd6 include fix
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-08-12 12:35:56 +02:00
44c12a141c Merge branch 'develop' into petri_dev
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-08-12 12:34:33 +02:00
05a10485d9 Merge remote-tracking branch 'origin/develop' into irini
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-08-12 12:34:10 +02:00
a8b1fe2e8d re-run generator scripts
Some checks failed
EIVE/eive-obsw/pipeline/head Build started...
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-08-12 12:31:13 +02:00
961e012972 bump fsfw and tmtc dependency 2022-08-12 12:30:08 +02:00
77cfc6e714 ACS controller init
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-08-12 12:29:28 +02:00
6551cbe1b4 using correct retval translation files now
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-08-09 10:38:47 +02:00
80b1c69244 re-point tmtc
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-08-08 17:12:22 +02:00
4649c97205 Merge remote-tracking branch 'origin/develop' into mueller/acs-ss-init
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-08-08 17:12:12 +02:00
22181ec76d Merge remote-tracking branch 'origin/develop' into petri_dev
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-08-08 17:11:36 +02:00
bd40af34c8 Merge branch 'develop' into irini
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-08-08 17:10:57 +02:00
89b3b2ff42 Merge remote-tracking branch 'origin/develop' into mueller/pl-ss
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-08-08 17:08:56 +02:00
1280b77e95 re-run generators
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-08-08 17:07:55 +02:00
b12cac1e80 install obsw into variant specfiic folders now
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-08-04 12:08:55 +02:00
722d7a67f5 important bugfix for FM SW
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-08-04 01:45:49 +02:00
89c9911be6 fix install script
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-08-02 20:12:25 +02:00
9911f58424 Merge pull request 'update-develop' (#273) from update-develop into develop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #273
Reviewed-by: Jakob Meier <meierj@irs.uni-stuttgart.de>
2022-07-15 08:55:46 +02:00
3ca11b5894 run auto-formatter
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-07-14 17:35:49 +02:00
2c3c05e2d4 Merge remote-tracking branch 'origin/develop' into petri_dev 2022-07-14 17:31:08 +02:00
5b3927d988 bump tmtc
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
EIVE/eive-obsw/pipeline/head This commit looks good
2022-07-14 17:27:41 +02:00
035eda9cfd update develop 2022-07-14 15:46:22 +02:00
201ef9cb0c smaller bugfixes
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-07-13 15:51:21 +02:00
8a23615462 added printout in scex uart reader 2022-07-13 12:02:32 +02:00
8b39f65472 modify oss to append at end 2022-07-13 11:25:53 +02:00
d1bfc512ec update .cproject file 2022-07-13 10:32:41 +02:00
b4bb46726c Changed filesystem include to new version 2022-07-13 09:38:42 +02:00
3bad503694 Fixed submodules file 2022-07-13 09:34:27 +02:00
84c4f47ed1 Removed obsolete stuff 2022-07-13 09:26:22 +02:00
303f538076 countdown based reply handling
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-07-08 17:11:21 +02:00
fc639a3e3f move countdown reset
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-07-08 16:57:40 +02:00
57f97de58e rerun generator scripts
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-07-08 16:46:27 +02:00
a462677ed2 smaller fixes, always download ETL
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-07-08 16:39:07 +02:00
563e13765d Merge remote-tracking branch 'origin/develop' into irini
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-07-08 16:27:50 +02:00
5e4d07bd25 Code refactoring and bug fixes for config file handler. Added new test cases for config file handler
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-07-05 14:56:31 +02:00
d9060734b0 Removed insert function in config handler, not needed. Added more tests for config handler
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-07-05 12:57:50 +02:00
c6f60fbe82 Merge pull request 'v1.12.1' (#270) from develop into main
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #270
Reviewed-by: Jakob Meier <meierj@irs.uni-stuttgart.de>
2022-07-05 11:39:58 +02:00
269c93a9f3 Merge branch 'main' into develop
All checks were successful
EIVE/eive-obsw/pipeline/pr-main This commit looks good
EIVE/eive-obsw/pipeline/head This commit looks good
2022-07-05 11:24:52 +02:00
2e966aba77 repoint tmtc
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-07-05 11:19:42 +02:00
c4b8fa5444 Merged from development, added unit test for config file handler, removed obsolete stuff from handler
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-07-05 10:02:43 +02:00
76a217ffc2 bump changelog and version
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-07-05 02:14:32 +02:00
be7a9af8cd disable TCS ctrl spam 2022-07-05 02:13:07 +02:00
75e71f7dca Merge pull request 'v1.12.0' (#269) from develop into main
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #269
2022-07-04 11:19:04 +02:00
62f725beea bump changelog and version
All checks were successful
EIVE/eive-obsw/pipeline/pr-main This commit looks good
EIVE/eive-obsw/pipeline/head This commit looks good
2022-07-04 11:13:26 +02:00
812c814a30 bump tmtc
Some checks are pending
EIVE/eive-obsw/pipeline/head Build started...
EIVE/eive-obsw/pipeline/pr-main This commit looks good
2022-07-04 11:08:05 +02:00
b133a0538c Merge remote-tracking branch 'origin/develop' into mueller/acs-ss-init
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-07-04 10:47:23 +02:00
9e89a0689f Merge remote-tracking branch 'origin/develop' into mueller/pl-ss
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-07-04 10:46:47 +02:00
5a92b9e616 tmtc
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-06-30 21:53:02 +02:00
e092d9bf3d Merge pull request 'CCSDS Handler Improvements' (#268) from meier/ccsds into develop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #268
Reviewed-by: Robin Müller <muellerr@irs.uni-stuttgart.de>
2022-06-29 13:53:29 +02:00
bf8ffac624 removed unused event
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-06-27 15:03:37 +02:00
d78155fd79 remove ccsds components from em object factory
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-06-27 14:56:46 +02:00
3a93cdc105 add thermal controller for hosted build
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-06-27 13:53:38 +02:00
a2e7c6cca6 moved ccsds object creation back to core object factory and run auto formatter
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-06-27 10:58:46 +02:00
b5ff0edbc9 fixed merge conflict
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-06-27 09:31:39 +02:00
95da2372c9 run generators
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-06-27 09:15:29 +02:00
70450041e6 removed command action helper form ccsds handler
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-06-27 08:53:14 +02:00
ed0eb4fe9c adaptions for setup with ccsds testbed
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-06-23 20:12:56 +02:00
af039c540a moved TmFunnel 2022-06-23 12:05:56 +02:00
20328f89ae ping cmd working
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-06-21 17:46:59 +02:00
2584e51bb4 tmtc update
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-06-21 16:49:26 +02:00
005e548059 comntinued scex handler 2022-06-21 16:44:14 +02:00
d2a12ea71e Merge pull request 'fsfwgen update' (#267) from mueller/gen-update into develop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #267
2022-06-21 10:40:15 +02:00
53e556d0b3 improve csv format
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-06-21 01:21:23 +02:00
72ab141b41 use lib logger
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-06-21 01:02:00 +02:00
c6b00e2448 update deps and gen files
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-06-21 00:58:59 +02:00
d4a1cb9f62 fsfwgen update
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-06-20 18:05:05 +02:00
83c93a9637 Merge pull request 'Thermal controller and temperature bugfixes' (#266) from meier/thermal-bugfixes into develop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #266
Reviewed-by: Robin Müller <muellerr@irs.uni-stuttgart.de>
2022-06-20 09:43:03 +02:00
89757c447c run auto-formatter
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-06-17 08:31:36 +02:00
61aa57f021 Merge branch 'develop' into meier/thermal-bugfixes
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-06-16 09:00:56 +02:00
0ee912665e removed mock files from mission directory
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-06-16 08:47:56 +02:00
b53bfb9a6f dummy devices
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-06-16 08:26:40 +02:00
bd11d13b99 dummy devices for hosted build, adaptions to run thermal controller unit test 2022-06-16 07:00:09 +02:00
1133736d48 Merge pull request 'Fixed tmtc and fsfw submodule' (#265) from meier/submodules into develop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #265
Reviewed-by: Robin Müller <muellerr@irs.uni-stuttgart.de>
2022-06-15 11:02:48 +02:00
9918c7c255 tmtc update
Some checks are pending
EIVE/eive-obsw/pipeline/head This commit looks good
EIVE/eive-obsw/pipeline/pr-develop Build started...
2022-06-15 10:49:46 +02:00
b0a175610a fsfw update 2022-06-15 10:49:22 +02:00
d96d3b155b syrlinks carrier wave command
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-06-15 10:37:00 +02:00
eff80a58ee improvements for hosted build
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-06-13 08:58:06 +02:00
5f796ec1e3 init poll variable
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-06-10 14:22:35 +02:00
3825304088 rtd set id
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-06-10 14:13:59 +02:00
66d6b6d707 changed max13865 namespace
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-06-10 14:01:34 +02:00
a787de531b changed namespace
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-06-10 13:56:35 +02:00
772ab430e0 only include core definitions in thermal controller
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-06-10 12:18:23 +02:00
35ea8a50f4 update tmtc submodule
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-06-10 11:26:00 +02:00
63c669bc27 fixed type of imtq self test temperatures
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-06-10 11:06:05 +02:00
17d17dce06 bugfix for some negative temperature conversions
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-06-10 10:39:43 +02:00
61257dfdd2 Minor refactoring config file handler
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-06-08 12:53:41 +02:00
8b6992df6d Added parameter interface to config file handler
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-06-08 11:08:19 +02:00
7cd048b03f Added events for failure of config file handler functions 2022-06-08 09:18:17 +02:00
0fb620b290 Implemented set/get/insert functions for config file handler 2022-06-08 08:27:45 +02:00
1ebae7f938 fixes for te0720 build 2022-06-08 07:16:12 +02:00
74b38a6d06 Worked on config file handler, added all functions
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-06-07 09:54:52 +02:00
8c850614e5 fixed merge conflicts 2022-06-05 10:54:46 +02:00
b8cf825307 rerun generators 2022-06-05 09:13:08 +02:00
f2d5932883 fixes in build config 2022-06-05 09:12:56 +02:00
917090e39d Merge branch 'meier/thermal-controller-fix' of https://egit.irs.uni-stuttgart.de/eive/eive-obsw into meier/thermal-controller-fix 2022-06-04 09:42:59 +02:00
67037e2dae use memset to set invalid temperatures of cau 2022-06-04 09:31:34 +02:00
f72dfa255d submodule update
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-06-03 18:05:54 +02:00
b3bb76c75f bugfixes in hk handling
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-06-03 18:03:25 +02:00
6c32ddf864 changed gomspace temperatures to float
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-06-03 09:33:08 +02:00
b1c20b22c8 set temeprature to invalid value when invalid flag is set by owner 2022-06-03 07:51:04 +02:00
678b22438f tmtc update
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-06-02 18:52:09 +02:00
f47712552e hk set fixes 2022-06-02 18:46:08 +02:00
cbb8832fab tmtc update
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-06-01 18:47:52 +02:00
b66dcc0a86 local port forward script 2022-06-01 18:46:53 +02:00
04b7c82501 type fixes in device temperatures sets
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-06-01 18:46:22 +02:00
5051af82c2 tmtc update
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-06-01 15:52:51 +02:00
ba7ac6bab2 variable for number of sus entries 2022-06-01 13:08:34 +02:00
52d94f44d4 device temeprature set
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-06-01 10:48:18 +02:00
87783b01f5 device temperature set wip
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-05-31 16:46:07 +02:00
593cc68b84 rtd dataset
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-05-31 16:44:57 +02:00
521b17a8f8 initmission
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-05-30 20:52:45 +02:00
0e6d2354fc thermal set fix
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-05-30 14:32:50 +02:00
23cabe4ca6 Merge branch 'develop' into mohr/thermal_controller
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-05-30 12:10:19 +02:00
f5ee21334c formatted
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-05-29 17:54:17 +02:00
24cb555849 update
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-05-29 17:52:13 +02:00
3d1e104fa4 Merge pull request 'Adaptions for EM' (#264) from meier/q7s-em into develop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #264
Reviewed-by: Robin Müller <muellerr@irs.uni-stuttgart.de>
2022-05-28 12:21:49 +02:00
8106722a08 replaced EM preprocessor define
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
EIVE/eive-obsw/pipeline/head This commit looks good
2022-05-27 16:24:41 +02:00
4632a56346 Merge branch 'develop' into mueller/acs-ss-init
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-27 15:28:41 +02:00
10a82eca25 Merge branch 'develop' into mueller/pl-ss
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-27 15:28:23 +02:00
9e93f1c814 adaptions for EM
Some checks are pending
EIVE/eive-obsw/pipeline/head Build started...
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-27 13:44:40 +02:00
1f1e1e8eae Merge pull request 'Bugfix SdCardManager' (#263) from meier/SdCardManager into develop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #263
Reviewed-by: Robin Müller <muellerr@irs.uni-stuttgart.de>
2022-05-26 12:15:32 +02:00
6f9d3c2f63 Merge branch 'develop' into meier/SdCardManager
Some checks are pending
EIVE/eive-obsw/pipeline/pr-develop Build queued...
2022-05-26 12:15:14 +02:00
25070d9543 Merge pull request 'MPSoC Status Codes' (#262) from meier/ploc into develop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #262
Reviewed-by: Robin Müller <muellerr@irs.uni-stuttgart.de>
2022-05-26 12:14:19 +02:00
bbdfc0427a Merge branch 'develop' into meier/ploc
Some checks are pending
EIVE/eive-obsw/pipeline/pr-develop Build started...
EIVE/eive-obsw/pipeline/head This commit looks good
EIVE/-/pipeline/head Build queued...
2022-05-26 12:14:01 +02:00
1f616a101d add scex preproc define to OBSWConfig.h.in
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-05-26 12:10:56 +02:00
b306116eac remove duplicate declarations
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-05-26 12:09:36 +02:00
5c91697cf1 removed accidental typed stuff 2022-05-26 12:09:01 +02:00
9f42ac9875 Merge branch 'mueller/scex-additions' into irini
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-05-26 12:08:18 +02:00
a1faa3a73c Merge remote-tracking branch 'origin/develop' into irini
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-05-26 12:08:07 +02:00
1276cc2dc6 scex additions
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-05-26 12:04:27 +02:00
97db44e500 fix raspberry pi build
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-05-26 11:46:28 +02:00
c588ec4a1a bugfix SdCardManager
Some checks are pending
EIVE/eive-obsw/pipeline/head Build started...
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-26 01:56:19 +02:00
09a6707c6c run generator scripts
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-25 18:42:40 +02:00
ee9a13f59b Merge branch 'develop' into meier/ploc 2022-05-25 18:40:39 +02:00
e9ccb2fd4f status code parsing, fix in cam command 2022-05-25 18:38:54 +02:00
e5459bb1f7 re-run generators
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-05-25 18:15:44 +02:00
5b0f1efefd Merge remote-tracking branch 'origin/develop' into mueller/pl-ss
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-25 15:48:00 +02:00
95121b5120 Merge remote-tracking branch 'origin/develop' into mueller/acs-ss-init
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-25 15:47:21 +02:00
335d3ba3b0 bump submodules
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-05-25 15:45:11 +02:00
f50682b56a Merge pull request 'Split ACU HK' (#256) from mueller/split-acu-hk into develop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #256
Reviewed-by: Jakob.Meier <meierj@irs.uni-stuttgart.de>
2022-05-25 15:23:19 +02:00
ad679a810e Merge pull request 'add and schedule PUS11' (#259) from mueller/add-schedule-pus-11 into develop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #259
Reviewed-by: Jakob.Meier <meierj@irs.uni-stuttgart.de>
2022-05-25 15:21:25 +02:00
686ec4bffa Merge pull request 'GPS Reset Pin Handling Update' (#261) from mueller/gps-reset-pin-update into develop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #261
Reviewed-by: Jakob.Meier <meierj@irs.uni-stuttgart.de>
2022-05-25 15:20:12 +02:00
ae434853aa bump number stored packets
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-05-25 13:14:36 +02:00
bb1e1d80cc resolve merge conflict
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
EIVE/eive-obsw/pipeline/head This commit looks good
2022-05-25 11:00:18 +02:00
01bac87afb update reset pin handling
Some checks are pending
EIVE/eive-obsw/pipeline/head Build started...
2022-05-25 10:59:20 +02:00
44d36587aa precised printouts
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-05-25 10:51:22 +02:00
5d2a70b6c6 Merge remote-tracking branch 'origin/develop' into mueller/acs-ss-init
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-25 10:28:06 +02:00
96564f890e Merge remote-tracking branch 'origin/develop' into mueller/acs-ss-init 2022-05-25 10:28:00 +02:00
ffdd6bbc3c Merge branch 'develop' into mueller/add-schedule-pus-11
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
EIVE/eive-obsw/pipeline/head This commit looks good
2022-05-25 10:27:36 +02:00
d870f5ab10 Merge pull request 'Core Controller Remount SD Handling' (#253) from mueller/core-controller-remount-sd-handling into develop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #253
Reviewed-by: Jakob.Meier <meierj@irs.uni-stuttgart.de>
2022-05-25 10:27:10 +02:00
c86e000f09 Update PL SS
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-25 10:25:40 +02:00
f7d436dc6b Merge remote-tracking branch 'origin/develop' into mueller/pl-ss 2022-05-25 10:23:22 +02:00
0b3fd65c9a Merge remote-tracking branch 'origin/develop' into mueller/add-schedule-pus-11
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-25 10:16:31 +02:00
0ac38e8490 Merge remote-tracking branch 'origin/develop' into mueller/split-acu-hk
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
EIVE/eive-obsw/pipeline/head This commit looks good
2022-05-25 10:16:14 +02:00
d79177e544 Merge remote-tracking branch 'origin/develop' into mueller/core-controller-remount-sd-handling
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-25 10:15:48 +02:00
addcb2b21f Merge pull request 'IMTQ improvements' (#260) from meier/imtq into develop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #260
Reviewed-by: Robin Müller <muellerr@irs.uni-stuttgart.de>
2022-05-25 10:15:13 +02:00
e537080166 Merge branch 'mueller/acs-ss-init' into mueller/pl-ss
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-05-25 10:14:09 +02:00
83c7ec8067 solve merge conflicts
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-25 10:12:37 +02:00
581423a40e Merge branch 'mueller/acs-ss-init' into mueller/pl-ss
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-05-25 10:09:24 +02:00
e1ed532f91 Merge remote-tracking branch 'origin/develop' into mueller/acs-ss-init
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-05-25 10:01:53 +02:00
7646b683b2 Merge remote-tracking branch 'origin/develop' into mueller/split-acu-hk
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-25 09:59:14 +02:00
3eca96fef5 Merge remote-tracking branch 'origin/develop' into mueller/core-controller-remount-sd-handling
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-25 09:58:06 +02:00
43fc1ab780 Merge remote-tracking branch 'origin/develop' into mueller/add-schedule-pus-11
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-25 09:57:34 +02:00
2bf044422f Merge remote-tracking branch 'origin/develop' into meier/imtq
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-25 09:56:41 +02:00
7f180ebc45 Merge pull request 'Reboot Command' (#242) from mueller/reboot-cmd into develop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #242
Reviewed-by: Jakob.Meier <meierj@irs.uni-stuttgart.de>
2022-05-24 19:11:07 +02:00
1ccd12e2e1 enable hk in imtq
Some checks are pending
EIVE/eive-obsw/pipeline/head Build started...
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-24 19:08:00 +02:00
2f4d44433d scexDeviceHandler::interpretDeviceReply
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-05-24 18:38:34 +02:00
b878508fec Thermal COntroller collecting Sus Temperatures
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-05-24 16:52:21 +02:00
88faf8f87d bump fsfw
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-24 16:23:00 +02:00
c0da8aef2e delete obsolete folder
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-24 15:50:39 +02:00
59d0d880bb bump fsfw
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-05-24 15:45:12 +02:00
3eb8525419 update changelog
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-05-24 15:22:45 +02:00
3fff3ba21e add and schedule PUS11
Some checks failed
EIVE/eive-obsw/pipeline/head Build queued...
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-05-24 15:21:37 +02:00
3e9b337e31 changelog
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
EIVE/eive-obsw/pipeline/head This commit looks good
2022-05-24 01:14:47 +02:00
633fe00cd6 run afmt, minor improvements
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-24 01:14:04 +02:00
23d7b8f2fb repoint tmtc
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-24 00:55:17 +02:00
d088d728b1 Merge branch 'mueller/reboot-cmd' of https://egit.irs.uni-stuttgart.de/eive/eive-obsw into mueller/reboot-cmd 2022-05-24 00:54:55 +02:00
237dd00216 Merge branch 'develop' into mueller/reboot-cmd
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-24 00:54:49 +02:00
f7075a1397 Merge remote-tracking branch 'origin/develop' into mueller/reboot-cmd 2022-05-24 00:54:39 +02:00
2ebdb5c797 tweak sd card check countdown
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-24 00:53:29 +02:00
1519b13b78 appears to work now
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-24 00:52:08 +02:00
b2c286cd7e improve and optimize SD card handling
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-24 00:20:23 +02:00
a1d2ec3db4 Merge remote-tracking branch 'origin/develop' into mueller/split-acu-hk
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-23 22:24:28 +02:00
b66a91da2e Merge branch 'develop' into mueller/core-controller-remount-sd-handling
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-23 21:32:27 +02:00
72305cc4c2 Merge pull request 'rtd bugfixes' (#258) from mueller/rtd-bugfixes into develop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #258
Reviewed-by: Jakob.Meier <meierj@irs.uni-stuttgart.de>
2022-05-23 19:36:13 +02:00
f111001572 bump tmtc
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-23 18:59:31 +02:00
5df905182c these brackets are less confusing
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-23 18:40:17 +02:00
2f155d8350 bump changelog
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-23 18:39:13 +02:00
e9908139e7 Merge branch 'develop' into mueller/core-controller-remount-sd-handling
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-23 18:37:50 +02:00
43269d4add Merge branch 'develop' into mueller/rtd-bugfixes
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
EIVE/eive-obsw/pipeline/head This commit looks good
2022-05-23 18:37:40 +02:00
40b02aa46b Merge remote-tracking branch 'origin/develop' into mueller/split-acu-hk
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-23 18:37:28 +02:00
7d9ef6f887 run afmt
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-05-23 18:37:04 +02:00
a2fad6061a repoint tmtc
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-23 18:36:38 +02:00
62ef9c7e70 set datapool entries of rad sensor valid
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-23 18:25:39 +02:00
1f62d8284c Merge remote-tracking branch 'origin/develop' into mueller/split-acu-hk
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-23 18:01:37 +02:00
a4de3e9eb1 Merge remote-tracking branch 'origin/develop' into mueller/rtd-bugfixes
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-23 18:00:45 +02:00
cc008623b6 Merge pull request 'PLOC handler improvements' (#257) from meier/ploc into develop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #257
Reviewed-by: Robin Müller <muellerr@irs.uni-stuttgart.de>
2022-05-23 17:53:55 +02:00
10e075efaf update changelog
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-23 17:52:44 +02:00
8aa664b49f rtd bugfixes
Some checks are pending
EIVE/eive-obsw/pipeline/head Build started...
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-23 17:50:54 +02:00
f18507d278 boot image select memory default argument
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
EIVE/eive-obsw/pipeline/head This commit looks good
2022-05-23 17:05:06 +02:00
e365b36ecd tmtc update 2022-05-23 17:04:03 +02:00
990759fbc6 commented in core controller file write
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-05-23 16:54:18 +02:00
d808a12c31 fixed conflicts
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-05-23 16:53:20 +02:00
379c5f06ba supervisor command to continue interrupted mpsoc update
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-05-23 16:43:46 +02:00
a2eabdce01 Merge pull request 'RTD Update' (#251) from mueller/rtds-update into develop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #251
Reviewed-by: Jakob.Meier <meierj@irs.uni-stuttgart.de>
2022-05-23 16:20:37 +02:00
01ca80fa30 bump submodules
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
EIVE/eive-obsw/pipeline/head This commit looks good
2022-05-23 16:12:03 +02:00
660f0d2dcd some minor fixes
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-23 14:19:57 +02:00
e522aadd44 set HKs valid
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-23 14:04:46 +02:00
8ae6fe0be5 moved HK defs
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-23 12:39:10 +02:00
fb5c6c4c17 continuation of failed mpsoc update
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-05-23 12:05:42 +02:00
4e62f3b112 bugfixes for cp script
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-23 11:35:55 +02:00
99e27a5a63 run afmt
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-23 11:25:58 +02:00
3bdad61ac0 split ACU HK set
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-05-23 10:42:57 +02:00
d960c371b9 bump submodules
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-23 09:37:16 +02:00
c024756540 WIP extending thermal controller
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-05-23 00:37:49 +02:00
dc6fa57c03 Merge branch 'develop' into mueller/core-controller-remount-sd-handling
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-20 08:20:13 +02:00
49a06772d2 Merge remote-tracking branch 'origin/develop' into mueller/rtds-update
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-05-20 08:18:57 +02:00
0119f3f8a6 Merge remote-tracking branch 'origin/develop' into mohr/thermal_controller
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-05-19 23:15:39 +02:00
93cb07238a fixing task initialization (produced warnings) 2022-05-19 23:13:29 +02:00
2f8f5ce79b thermal controller is reading pt1000 values from datapool 2022-05-19 23:08:54 +02:00
4a0aa6443b dummy faking the PT1000 Temperature Sensors for host build 2022-05-19 23:06:56 +02:00
e9725e3093 gcc 12 complained... 2022-05-19 23:06:18 +02:00
79d3755c16 Merge pull request 'fixed for new SPI HAL API' (#255) from mueller/fixes-for-spi-update into develop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #255
Reviewed-by: Jakob.Meier <meierj@irs.uni-stuttgart.de>
2022-05-19 19:09:54 +02:00
a63e87f5f4 subscribe for periodic core ctrl packet
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
EIVE/eive-obsw/pipeline/head This commit looks good
2022-05-19 18:46:49 +02:00
eb20dda221 small fix for yocto script
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-19 17:52:46 +02:00
ef14fa3789 Merge remote-tracking branch 'origin/mueller/fixes-for-spi-update' into mohr/thermal_controller 2022-05-19 16:29:30 +02:00
e73bfc2c64 dev string for FM/EM
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-19 16:00:26 +02:00
Uli
710bd58ee1 Merge branch 'develop' into mohr/thermal_controller 2022-05-19 15:31:13 +02:00
d274f5647d fix EM cofig
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-19 15:28:02 +02:00
377f762ca5 fixed for new SPI HAL API
Some checks are pending
EIVE/eive-obsw/pipeline/head Build queued...
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-19 14:54:44 +02:00
847aadc7bf update shell script helper to support EM installation
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-05-19 14:48:16 +02:00
e8882b11cf ScexDeviceHandler
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-05-19 11:56:59 +02:00
b4e1451501 ScexDeviceHandler DeviceReply
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-05-19 10:16:46 +02:00
7179d9dec3 deSerialize
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-05-19 09:59:33 +02:00
90a92feee1 some thermal controller code to test TM chain
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-05-19 00:40:42 +02:00
e49a1af9b7 bump fsfw
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-18 14:51:33 +02:00
cf49d98524 bump fsfw
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-05-17 18:15:21 +02:00
28a4f782f9 Merge remote-tracking branch 'origin/develop' into mueller/rtds-update
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-05-17 17:55:25 +02:00
8eaae461b4 Merge pull request 'apply new auto-formatter on all files' (#254) from mueller/update-aformatters into develop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #254
Reviewed-by: Jakob.Meier <meierj@irs.uni-stuttgart.de>
2022-05-17 14:53:20 +02:00
140bbcb7b8 Merge remote-tracking branch 'origin/develop' into mueller/rtds-update
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-17 13:43:21 +02:00
d4dd75acae Merge remote-tracking branch 'origin/develop' into mueller/core-controller-remount-sd-handling
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-17 13:42:08 +02:00
8a5090b8ee apply new auto-formatter on all files
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
EIVE/eive-obsw/pipeline/head This commit looks good
2022-05-17 13:40:19 +02:00
e2cfce634b GenericFactory bugfix
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-05-17 13:35:21 +02:00
8b875e13c5 repoint fsfw
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-05-16 15:46:20 +02:00
7080758c67 Merge remote-tracking branch 'origin/develop' into mueller/core-controller-remount-sd-handling
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-16 15:18:55 +02:00
3713617ea5 Merge remote-tracking branch 'origin/develop' into mueller/acs-ss-init
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-16 15:18:13 +02:00
a26b1bb311 Merge remote-tracking branch 'origin/develop' into mueller/rtds-update
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-16 15:17:29 +02:00
5f165f666b Merge pull request 'PLOC Handler Improvements' (#252) from meier/ploc into develop
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
Reviewed-on: #252
Reviewed-by: Robin Müller <muellerr@irs.uni-stuttgart.de>
2022-05-16 15:12:28 +02:00
2fa1061c65 Merge remote-tracking branch 'origin/develop' into mueller/acs-ss-init
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-16 15:11:24 +02:00
a6abeb697f comment
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-16 15:09:02 +02:00
a92024a858 now supports auto mode as well
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-14 17:32:33 +02:00
036024db7e perm loop not necessary anymore
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-14 17:22:57 +02:00
e040f6b218 bump tmtc
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-14 17:12:29 +02:00
f20fcd9a72 Merge remote-tracking branch 'origin/develop' into mueller/rtds-update 2022-05-14 17:07:27 +02:00
017cfb9d56 a lot of fixes, but some stuff doesnt work..
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-14 17:04:51 +02:00
2cfd2cc1fc switch to new dev handlers completely
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-14 15:26:08 +02:00
478975db26 spi setup more stable now
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-14 11:34:25 +02:00
1c9f411e75 new RTD handler working
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-14 09:41:28 +02:00
d60e7a706a fixed conflicts
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-13 18:44:52 +02:00
45f34df6b9 Merge branch 'develop' of https://egit.irs.uni-stuttgart.de/eive/eive-obsw into develop 2022-05-13 18:38:26 +02:00
4cbe732087 Merge pull request 'Heater Health IF' (#236) from mueller/heater-health-if into develop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #236
Reviewed-by: Jakob.Meier <meierj@irs.uni-stuttgart.de>
2022-05-13 18:38:12 +02:00
54d7392467 improved mpsoc update handling
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-13 18:37:16 +02:00
8715683d6b enable periodic reply for eie RTD
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-13 17:25:06 +02:00
2c684643b3 some smaller fixed for new rtd handler
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-13 16:29:57 +02:00
b12a634b81 typo
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-13 15:16:48 +02:00
3ae1812c32 some renaming
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-13 15:16:10 +02:00
80eeebfaf5 Merge remote-tracking branch 'origin/develop' into mueller/core-controller-remount-sd-handling
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-13 11:21:06 +02:00
e6ec6bcfa4 Merge remote-tracking branch 'origin/develop' into mueller/reboot-cmd
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-13 11:15:09 +02:00
bb397a58de event with packet number for which mpsoc update failed
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-13 10:47:10 +02:00
44e7f06c2e shorter debug string
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-13 10:33:35 +02:00
f3b473ea99 some more rtd tweaks
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-13 10:27:26 +02:00
706e3d458b switch to direct handler again
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-13 10:13:16 +02:00
d999f57fef apply afmt
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-13 10:10:56 +02:00
6b54a4dea9 cleaning up, better fault status handling
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-13 10:10:02 +02:00
fd0de9426f Merge remote-tracking branch 'origin/develop' into mueller/rtds-update
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-13 09:51:22 +02:00
bf7acf83ff update .cproject file
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-05-13 09:51:11 +02:00
23f37e19af bump fsfw
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
EIVE/eive-obsw/pipeline/head This commit looks good
2022-05-13 09:39:49 +02:00
b5821ec6dc changelog update
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-05-13 09:35:47 +02:00
be1c26ddf7 rtd testing
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-13 01:17:23 +02:00
da4d3e4891 update changelog
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-12 20:47:19 +02:00
ac34bcbb3d Merge remote-tracking branch 'origin/develop' into mueller/heater-health-if
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-12 20:46:00 +02:00
e81ddaa1a5 added auto-shutdown for faulty heaters 2022-05-12 20:44:36 +02:00
21ba8c95ff additional parameter to identify cmd source
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-12 20:12:01 +02:00
e25c492aa4 create and schedule health PUS service
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-12 19:22:20 +02:00
82f75bde97 fix for heater creation call 2022-05-12 19:12:12 +02:00
919141ae10 ccsds handler sending command to enable transmitter 2022-05-12 18:32:19 +02:00
e48aa64766 repoint fsfw
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-05-12 17:48:18 +02:00
3c3884476b Merge branch 'develop' into meier/ccsds 2022-05-12 15:57:26 +02:00
569754bdad Merge branch 'develop' into meier/ploc
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-12 15:48:56 +02:00
5fe814e972 Merge remote-tracking branch 'origin/develop' into mueller/rtds-update
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-12 15:48:26 +02:00
06219744ea Merge branch 'meier/ploc' of https://egit.irs.uni-stuttgart.de/eive/eive-obsw into meier/ploc
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-12 15:47:16 +02:00
9db58210b8 Merge branch 'develop' into meier/ploc 2022-05-12 15:47:06 +02:00
ee99c3312e Merge pull request 'Update EIVE OBSW' (#250) from mueller/update-eive-obsw into develop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #250
Reviewed-by: Jakob.Meier <meierj@irs.uni-stuttgart.de>
2022-05-12 15:34:07 +02:00
3a6beafae5 commented time file writing in again
Some checks are pending
EIVE/eive-obsw/pipeline/head Build started...
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-12 15:31:52 +02:00
d7316eff66 remove merge conflict markers
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-05-12 14:23:10 +02:00
51466e68d7 Merge remote-tracking branch 'origin/develop' into mueller/heater-health-if
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-05-12 14:11:46 +02:00
e6f55ba2c1 increased execution timeout of prepare update command
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-05-12 14:04:55 +02:00
dd67191044 Merge remote-tracking branch 'origin/develop' into mueller/acs-ss-init
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-12 14:02:15 +02:00
c1faf65409 schedule new rtd reader component
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-12 12:35:05 +02:00
382d93863f create and pass correct comIF
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-05-12 12:21:47 +02:00
a173ef4308 create low level rtd handler in obj factory
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-05-12 12:12:47 +02:00
6b9e49e632 continued low level MAX31865 handler
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-05-12 11:27:30 +02:00
0dd0af73a1 change in mpsoc status codes 2022-05-12 10:50:12 +02:00
23f209fb07 added eive specific max31865 handler
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-05-12 09:48:41 +02:00
e5710784b9 Merge branch 'develop' into meier/ccsds 2022-05-12 07:47:28 +02:00
56f491befb compile fix
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-05-12 00:48:49 +02:00
93f605bc0a Merge remote-tracking branch 'origin/develop' into mueller/rtds-update
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-05-12 00:45:57 +02:00
d1d365c76d bump tmtc again
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
EIVE/eive-obsw/pipeline/head This commit looks good
2022-05-11 18:00:11 +02:00
38d03dbe57 bump deps, regenerate translation files
Some checks are pending
EIVE/eive-obsw/pipeline/head Build started...
2022-05-11 17:59:08 +02:00
af52b90abe fsfwgen update
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-05-11 17:16:40 +02:00
a315a8b529 fixed conflicts
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-05-11 17:08:44 +02:00
5f96d157a7 repoint fsfw
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-11 17:04:31 +02:00
c1992f59d6 Merge remote-tracking branch 'origin/develop' into mueller/reboot-cmd 2022-05-11 17:04:19 +02:00
658acb0554 Merge pull request 'RW Assembly' (#224) from mueller/rw-ass into develop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #224
Reviewed-by: Jakob.Meier <meierj@irs.uni-stuttgart.de>
2022-05-11 17:03:32 +02:00
5a82fe93d9 core ctrl remount sd handling
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-11 17:02:57 +02:00
8a90f0025b commented in time file write
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-05-11 17:01:03 +02:00
beba258a77 update fsfw
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-05-11 16:57:23 +02:00
c7e2cc22af init sequence count 2022-05-11 16:49:07 +02:00
835a10e538 sequence count init
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-05-11 16:11:17 +02:00
1d1f04f57b Merge branch 'develop' into mueller/reboot-cmd
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-05-11 15:48:34 +02:00
625abcfd5b important bugfixes
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
EIVE/eive-obsw/pipeline/head This commit looks good
2022-05-11 15:45:38 +02:00
914acd9925 fixed conflicts
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-05-11 14:37:36 +02:00
c7e4704234 fixed merge conflict 2022-05-11 14:36:23 +02:00
c5bccb661e Merge remote-tracking branch 'origin/develop' into mueller/rw-ass
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-05-11 13:54:04 +02:00
37002b47b3 sequence count init value
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-05-11 12:46:04 +02:00
c043375ae3 RW Refactoring
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
- FSFW update: SPI device is part of ComIF now
- Only set RW mode (speed is set a side effect but not necessary) once
- Release SPI bus in the 70 ms delay duration
2022-05-11 11:13:00 +02:00
62c885e1de re-point tmtc
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-05-11 10:17:49 +02:00
cf98d446f9 Merge branch 'develop' into mueller/rw-ass
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-11 10:11:55 +02:00
96710159b8 added missing eclipse instructions
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-05-11 10:09:58 +02:00
17802aaa55 fix images in README
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-05-11 10:07:19 +02:00
f5b1427c38 fix images in README
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-11 10:06:56 +02:00
543ec5dfff Merge remote-tracking branch 'origin/develop' into mueller/rw-ass
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-11 10:05:23 +02:00
3924430ea7 update .cproject file again
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-05-11 10:04:25 +02:00
4120befef0 update changelog
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-11 01:50:49 +02:00
91b69eacf6 A lot of stuff
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
- refactored and simplified RW assemblies
- create separate SPI Com IF for RWs
- Update .cproject file: Fixed to decrease indexer parsing times
2022-05-11 01:48:26 +02:00
df7e0007d0 schedule RW ASS
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-11 01:02:29 +02:00
95fd3238e7 another .cproject update
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-11 01:00:21 +02:00
8ccd55dd06 update .cproject file
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-11 00:58:19 +02:00
7e87bd713d Merge remote-tracking branch 'origin/develop' into mueller/rw-ass 2022-05-11 00:54:37 +02:00
4e78ee85c8 continued rw ass creation 2022-05-11 00:54:29 +02:00
cb8f0e61be Merge pull request 'Init ACS Test files' (#249) from mueller/acs-test-init into develop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #249
Reviewed-by: Jakob.Meier <meierj@irs.uni-stuttgart.de>
2022-05-11 00:54:00 +02:00
1904cc168d catch exceptions
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-11 00:42:32 +02:00
924f114fb3 sth crashes CI..
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-11 00:36:31 +02:00
604dbea372 Merge remote-tracking branch 'origin/develop' into mueller/rw-ass
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-11 00:28:57 +02:00
ca640ea18f hmm
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-05-11 00:24:58 +02:00
491736335b Merge remote-tracking branch 'origin/develop' into mueller/acs-test-init
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-05-11 00:19:40 +02:00
de0872072f Merge pull request 'Add yocto helper scripts' (#248) from mueller/yocto-helper-scripts into develop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #248
Reviewed-by: Jakob.Meier <meierj@irs.uni-stuttgart.de>
2022-05-10 18:45:54 +02:00
db7dcc7e32 start creating rw ass in obj factory
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-10 18:39:23 +02:00
75d19790b8 another .cproject file update
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-05-10 18:36:00 +02:00
1893e87f5f update .cproject file again
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-10 18:35:44 +02:00
b021590103 update .cproject file
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-05-10 18:35:03 +02:00
45c1ac0f61 update
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-10 18:34:39 +02:00
0bd20ac9fd init acs test files
Some checks failed
EIVE/eive-obsw/pipeline/head Build started...
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-05-10 17:49:10 +02:00
9d63eb837a added void cast
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-10 17:02:40 +02:00
49d21fef2a Merge branch 'develop' into meier/ccsds 2022-05-10 07:49:05 +02:00
907b8f4a5d ccsds config for te0720-1cfa 2022-05-10 07:48:36 +02:00
50c363fb6f new RTD reader module handling all RTD SPI Communication
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-05-09 21:29:54 +02:00
4864394590 renamed heaters
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-09 16:13:33 +02:00
71d9553f90 Merge remote-tracking branch 'origin/develop' into mueller/rw-ass
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-08 13:11:56 +02:00
646925c571 removed redundant SUS OBJ ID defs
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-08 13:08:49 +02:00
d9085e81a1 Merge remote-tracking branch 'origin/develop' into mueller/heater-health-if
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-08 13:06:47 +02:00
54a36ac275 added back deleted part
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
EIVE/eive-obsw/pipeline/head This commit looks good
2022-05-08 12:57:24 +02:00
e59026d87c update README
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-08 12:55:17 +02:00
7de968937e repoint tmtc
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-08 12:33:49 +02:00
a66632c040 Merge remote-tracking branch 'origin/develop' into mueller/yocto-helper-scripts 2022-05-08 12:33:17 +02:00
9f9fa9b41b Merge pull request 'PLOC Handler Update' (#234) from meier/plocSupv into develop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #234
Reviewed-by: Robin Müller <muellerr@irs.uni-stuttgart.de>
2022-05-08 12:32:47 +02:00
421237bfb7 fixed ploc supervisor build error which was hidden by prerocessor define
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-08 12:01:35 +02:00
37e81d34c9 Merge branch 'develop' into mueller/heater-health-if
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-07 22:50:13 +02:00
1fea619ac0 Merge remote-tracking branch 'origin/develop' into mueller/rw-ass
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-07 22:44:23 +02:00
2bc2325b1f removed unused includes
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-07 13:59:53 +02:00
d9024b6c22 adaption in DummyGpioIF due to API change in GpioIF 2022-05-07 13:50:36 +02:00
f8addd9365 preprocessor define fixes 2022-05-07 13:38:09 +02:00
2ff8923c81 fixed reorder warning in imtq handler 2022-05-07 13:19:59 +02:00
a4e36ebdb6 update changelog
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-07 12:55:48 +02:00
9884ea225e update CHANGELOG
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-07 12:54:25 +02:00
3cca73ae9f update other helper scripts as well
Some checks are pending
EIVE/eive-obsw/pipeline/head Build started...
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-07 12:51:47 +02:00
631bc61d6c changed set ids
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-07 12:01:05 +02:00
43b0ed4b04 preprocessor define adjustments
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-06 20:33:46 +02:00
d9c7cccf76 run clang format script
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-06 19:53:33 +02:00
322db3d617 removed ploc updater 2022-05-06 19:52:43 +02:00
6dd57a3f5e fixed merge conflicts
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-05-06 19:44:18 +02:00
4ba26f057d Merge branch 'meier/ploc' into meier/plocSupv
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-06 19:36:03 +02:00
97222cafd9 increased mram dump execution timeout
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-06 19:34:12 +02:00
cbb3c92885 tmtc update 2022-05-06 19:31:09 +02:00
132751893b bugfix in missed reply hanling of supervsior MRAM dump 2022-05-06 19:30:20 +02:00
a5a79da723 install non-stripped files now
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-05-06 16:47:09 +02:00
7ab0a3683c this works better
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-05-06 16:46:22 +02:00
08dc8630d6 create generic OBSW by default and copy to unique
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-05-06 16:43:12 +02:00
cc25489e75 important bugfix
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-05-06 15:54:45 +02:00
e4bbdbc532 copy version file as well
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-05-06 15:53:16 +02:00
2f182a5e21 docs
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-05-06 15:41:29 +02:00
bacce95881 corrections for install script
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-05-06 15:38:50 +02:00
9383a6088b build script bugfixes
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-05-06 15:33:05 +02:00
338cb9d502 Merge remote-tracking branch 'origin/develop' into mueller/yocto-helper-scripts
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-05-06 15:29:25 +02:00
fe4315666b added helper script for yocto installation
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
- Installs compiled binaries into yocto repo for rootfs rebuild
2022-05-06 15:27:56 +02:00
576f71304c updated eclipse launch files
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-05-06 10:45:53 +02:00
385d8df466 fix .cproject file
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-05-06 10:43:04 +02:00
bfd7d9d82d bump fsfw (hotfix)
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-05-06 10:37:54 +02:00
e6cbe3068d Merge branch 'develop' into mueller/heater-health-if
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-06 10:12:23 +02:00
99a8cd0f2d Merge branch 'develop' into mueller/reboot-cmd
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-06 10:11:58 +02:00
1c2f80f48e Merge branch 'develop' into mueller/rw-ass
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-06 10:11:32 +02:00
9918aae94a Merge pull request 'install Catch2 for CI/CD' (#247) from mueller/install-catch2-docker into develop
Reviewed-on: #247
Reviewed-by: Jakob.Meier <meierj@irs.uni-stuttgart.de>
2022-05-06 10:00:12 +02:00
355ca27d31 Merge remote-tracking branch 'origin/develop' into mueller/acs-ss-init
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-06 08:58:31 +02:00
22060b9b16 Merge remote-tracking branch 'origin/develop' into mueller/rw-ass
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-06 01:12:07 +02:00
68938c3b42 remove duplicate object ID
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-05 20:27:20 +02:00
a11a8c493d Merge remote-tracking branch 'origin/develop' into mueller/heater-health-if
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-05-05 19:53:18 +02:00
5c7c5b468a tmtc update
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-05-05 19:21:42 +02:00
fabd81365b supervisor do startup set time 2022-05-05 19:20:14 +02:00
5911ca79b5 nvm enable command 2022-05-05 19:18:39 +02:00
cf4edac604 maybe this fixes the timing issue?
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-05 16:32:09 +02:00
c1dc5846cd bump submodules
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-05 16:24:23 +02:00
4c809e354d better heater obj id names
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-05 16:23:46 +02:00
1f6aab8124 apply afmt, some more renaming
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-05 13:40:43 +02:00
590fe6ca39 Some RW improvements
- Moved Events to definitions file
- Added new event if reset occurs
- Deliver state if there is an error (going to be 0, still deliver it)
2022-05-05 12:48:56 +02:00
9bd5595999 no time command sent during startup of supervisor 2022-05-05 10:50:23 +02:00
e5fdf23dd7 tmtc update
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-05-05 09:15:05 +02:00
8832d06d03 improvements for mram dump
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-05 08:55:45 +02:00
28c9e33d1c separate PST for RWs 2022-05-05 02:00:56 +02:00
95a634ea7f update .cproject file 2022-05-05 01:33:18 +02:00
3a0cf0cb38 Merge branch 'develop' into mueller/rw-ass
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-05 00:51:30 +02:00
e4ebd87875 Merge branch 'develop' into mueller/reboot-cmd
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-05 00:51:11 +02:00
bcb6df87b0 update tmtc, gen files and formatting in config file
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-05 00:47:50 +02:00
5441520369 tmtc update
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-05-04 19:11:01 +02:00
8aacbc2b40 cam cmd reply handling 2022-05-04 19:08:37 +02:00
79d48d9630 Merge remote-tracking branch 'origin/develop' into mueller/rw-ass
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-04 17:25:11 +02:00
9c888e75bc bump tmtc again
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-04 17:23:56 +02:00
0d15694fc3 Merge remote-tracking branch 'origin/develop' into mueller/heater-health-if 2022-05-04 17:23:34 +02:00
be7cab6032 Merge remote-tracking branch 'origin/develop' into mueller/reboot-cmd
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-04 17:22:19 +02:00
d108f7bbda Merge remote-tracking branch 'origin/develop' into mueller/reboot-cmd
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-04 16:54:39 +02:00
3458c272ad Merge remote-tracking branch 'origin/develop' into mueller/rw-ass
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-04 16:47:49 +02:00
1508a1e147 Merge remote-tracking branch 'origin/develop' into mueller/acs-ss-init
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-04 16:43:31 +02:00
a6c6325d41 Merge remote-tracking branch 'origin/develop' into mueller/pl-ss
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-04 16:41:08 +02:00
73e4b0cc81 bump tmtc
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-04 16:38:02 +02:00
4311c5b6a7 Merge remote-tracking branch 'origin/develop' into mueller/heater-health-if 2022-05-04 16:37:53 +02:00
d59e71b056 Merge remote-tracking branch 'origin/develop' into mueller/heater-health-if 2022-05-04 16:37:47 +02:00
a3e33bb627 Merge remote-tracking branch 'origin/develop' into mueller/heater-health-if
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-04 14:37:36 +02:00
92f95b2b97 comment out debug printout
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-04 13:25:42 +02:00
475f6f1687 removed unused ploc commands, fix in logging report reply 2022-05-04 12:49:43 +02:00
d0e18f8b35 add mutex protections for switcher states 2022-05-04 11:11:29 +02:00
86dd67bf06 bump fsfw
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-04 10:36:45 +02:00
50ca378318 update for updated gpio API
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-04 10:34:11 +02:00
5f5c996cfd bump tmtc IF
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-04 09:26:11 +02:00
1536a0f94b named heaters
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-03 18:17:10 +02:00
d79323c6ca small fix for generic factory header
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-03 17:45:39 +02:00
ae0120f3ef Merge branch 'mueller/refactoring-conf-handling' into mueller/heater-health-if
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-03 17:44:02 +02:00
8f9e8fe3fb ignore new build folder name
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-03 17:39:02 +02:00
bc28ae4d1f bump submodules 2022-05-03 17:38:37 +02:00
2470039dfb Merge remote-tracking branch 'origin/develop' into mueller/heater-health-if 2022-05-03 17:38:10 +02:00
f598ac3daf Merge remote-tracking branch 'origin/develop' into mueller/pl-ss
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-03 16:15:45 +02:00
77704b3e79 Merge remote-tracking branch 'origin/develop' into mueller/acs-ss-init
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-03 16:15:23 +02:00
e8e3138fba Merge remote-tracking branch 'origin/develop' into mueller/pl-ss
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-03 16:05:01 +02:00
b49ed2bacf fsfw update
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-03 16:03:57 +02:00
3b40e622fe Merge remote-tracking branch 'origin/develop' into mueller/acs-ss-init
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-03 16:02:45 +02:00
06df558be0 Merge remote-tracking branch 'origin/develop' into mueller/rw-ass
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-03 16:01:09 +02:00
88842d4f07 Merge remote-tracking branch 'origin/develop' into mueller/heater-health-if
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-03 15:59:28 +02:00
5380ed216b supervisor do startup fix 2022-05-03 15:36:38 +02:00
70884d3a46 tmtc update 2022-05-03 15:28:11 +02:00
464821cc6f supervisor set time during start up 2022-05-03 14:59:23 +02:00
c413d90b88 Minor adaption ti filesystem include and removed arcsect submodule to make it work on my local machine 2022-05-03 08:10:07 +02:00
0172351e89 additional try catch block
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-02 22:58:06 +02:00
1f8a68dabe re-use existing enum
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-02 22:55:39 +02:00
9449919b2b Heaters are own objects with HealthIF now
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-02 22:45:27 +02:00
b98c691c2b added health helper to heater handler
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-02 17:51:00 +02:00
238afbaa8b add health IF to heater handler
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-02 17:37:00 +02:00
0abb726b30 bump submodules
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-05-02 16:15:43 +02:00
a54d89c90f Merge branch 'develop' into mueller/rw-ass
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-02 15:55:41 +02:00
7a6b45b102 removed debug print 2022-05-02 14:43:53 +02:00
d1a9924acc tmtc update 2022-05-02 14:43:17 +02:00
690b41777b bugfix pcdu handler command queue reading 2022-05-02 13:48:34 +02:00
3c858d26f1 tmtc update 2022-05-02 13:47:59 +02:00
eb6b166662 bump fsfw
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-02 12:56:42 +02:00
0e97c4ad9a Merge branch 'mueller/acs-ss-init' into mueller/pl-ss
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-02 12:55:15 +02:00
3a52540d0e bump tmtc
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-05-02 12:53:43 +02:00
aa9acef76a bump tmtc submodule
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-02 12:53:12 +02:00
7db0872ee3 Merge remote-tracking branch 'origin/develop' into mueller/acs-ss-init
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-05-02 12:49:53 +02:00
bab8412f10 Merge remote-tracking branch 'origin/develop' into mueller/rw-ass
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
2022-05-02 12:41:45 +02:00
9e2eca3e36 re-generate event list
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-05-02 12:41:20 +02:00
49b0825f63 added doSendReadHook to prevent com if polling when com if is used by helper task 2022-05-02 09:56:15 +02:00
be752997eb fixed merge conflicts
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-04-30 19:12:21 +02:00
3ff709a814 removed changes can rx task
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-04-30 16:52:22 +02:00
03b7b802c5 removed ptme test data sending
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-04-30 16:33:34 +02:00
20138d52b1 decreased stack size of supervisor helper task
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-04-30 16:23:51 +02:00
6d322c6e78 run clang format script
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-04-30 16:21:59 +02:00
016ca8cb7e decreased acs handler task stack size
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-04-30 16:20:33 +02:00
729b8f547c time file writing commended in again
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-04-30 16:19:00 +02:00
6636f42dc2 tmtc update
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-04-30 15:34:28 +02:00
cf4305be55 tmtc update
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-04-30 11:10:56 +02:00
e1ffa97232 improved acknowledgment and execution handling in supervisor handler 2022-04-30 11:08:36 +02:00
6524f924c9 run generator scripts 2022-04-30 09:53:42 +02:00
6f53c39485 fix conflict
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-04-30 09:28:22 +02:00
8ecbeb058c tmtc update 2022-04-30 09:26:55 +02:00
1635e40c79 tmtc update
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-04-29 23:36:09 +02:00
816dc43214 restructuring execution report handling
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-04-29 23:34:28 +02:00
7afb8e9070 execution status codes 2022-04-29 23:22:44 +02:00
cedc6bec23 gpio state sent with execution report 2022-04-29 22:55:01 +02:00
cf20d8e94d commented in time file writing again
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-04-29 18:23:31 +02:00
02f352e51f tmtc update
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-04-29 18:22:03 +02:00
f2cb43a52f scexDataHandler
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-04-29 15:46:16 +02:00
9d4cb2ea8d xecution status code parsing 2022-04-29 13:31:58 +02:00
57f3103e52 update
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-04-29 13:31:14 +02:00
7c15eb57bb update
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-04-29 12:48:13 +02:00
be7b141126 update
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-04-29 12:30:52 +02:00
e16e6c2d17 fileId
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-04-29 12:26:18 +02:00
5888d90fbc continued reboot command
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-04-29 11:16:53 +02:00
fe28588875 repoint tmtc submodule 2022-04-29 10:56:43 +02:00
bf281343c6 fixed conflicts
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-04-29 09:04:49 +02:00
73c653d21d execution status code wip 2022-04-29 09:03:13 +02:00
09fc8babc4 fsfw update 2022-04-29 08:35:06 +02:00
f0884c0096 read gpio tm handling 2022-04-29 08:34:23 +02:00
0b64999ce2 added generic GPIO checker
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-04-28 18:38:38 +02:00
7c770b5aec fixed conflicts
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-04-28 18:33:27 +02:00
794ed04761 prevent sending boot command when mpsoc booted via jtag 2022-04-28 18:30:40 +02:00
73fbdfeb25 remove etl::pair usage
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-04-28 18:27:40 +02:00
31fa2f0d8d include fix 2022-04-28 18:27:13 +02:00
1527b60fd6 Merge remote-tracking branch 'origin/develop' into mueller/rw-ass
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-04-28 18:26:34 +02:00
cb47667d01 Merge remote-tracking branch 'origin/develop' into mueller/acs-ss-init
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-04-28 17:56:33 +02:00
9c0a89bbdc added all checks, made checker func generic
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-04-28 16:20:41 +02:00
5de45a7ae7 more readable
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-04-28 16:05:01 +02:00
c1fe7563d2 finished first rudimentary pl ss
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-04-28 15:05:38 +02:00
e18661bb59 update fsfw
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-04-28 14:30:35 +02:00
582d2db05f fixed conflicts 2022-04-28 14:29:23 +02:00
df73e95d13 Merge remote-tracking branch 'origin/develop' into mueller/hand-written-subsystem
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-04-28 13:22:41 +02:00
4f72fb355c update fsfwgen
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-04-28 13:08:44 +02:00
ca1365df5b Merge remote-tracking branch 'origin/develop' into mueller/rw-ass 2022-04-28 13:08:34 +02:00
40b84b0576 update changelog
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-04-28 13:08:19 +02:00
b4a54804df submodule update
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-04-28 13:07:28 +02:00
636e2d62d8 Merge remote-tracking branch 'origin/develop' into mueller/acs-ss-init 2022-04-28 13:06:48 +02:00
898753f6e3 supervisor reset pl command 2022-04-28 11:27:28 +02:00
e11c84a5ed update
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-04-27 18:21:32 +02:00
7682a1d214 fixed conflicts 2022-04-27 16:56:16 +02:00
c5683afe9f fram
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-04-27 16:46:11 +02:00
7543a92dd9 added test code 2022-04-27 16:44:03 +02:00
20a2aa73ae tmtc update
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-04-27 16:09:07 +02:00
8610e48b19 countdown based timeout 2022-04-27 16:08:17 +02:00
e2f0c0f1be fram rec
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-04-26 13:22:56 +02:00
f5723dc181 continued pl ss
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-04-25 18:44:38 +02:00
42194abb4a commented in read function again 2022-04-25 13:36:30 +02:00
0697cca88a started acs subsystem
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-04-25 13:36:11 +02:00
3e8429b34b warning print when memory check command fails 2022-04-25 13:36:06 +02:00
311ec7b194 mpsoc shutdown after running update procedure 2022-04-25 11:03:02 +02:00
f9dd77b8ec create and schedule ACS SS
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-04-25 10:50:59 +02:00
f014e2d5c7 system folder restructuring
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-04-25 10:36:03 +02:00
9ba65b04fd add IDLE charge mode
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-04-25 10:30:47 +02:00
298148eebf bump fsfwgen
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-04-25 10:08:54 +02:00
bbb4ba2191 baseline acs mode tree done 2022-04-25 10:08:29 +02:00
baa6f05f8e neat
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-04-25 08:48:22 +02:00
6876952bbd regenerated events 2022-04-24 12:34:08 +02:00
6bdb13b6a0 submodule update
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-04-23 12:37:40 +02:00
9f3a56e5e6 Merge remote-tracking branch 'origin/develop' into mueller/rw-ass 2022-04-23 12:37:25 +02:00
e3783d0941 small fix
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-04-23 12:37:12 +02:00
c262d1ef90 Merge remote-tracking branch 'origin/develop' into mueller/hand-written-subsystem 2022-04-23 12:21:04 +02:00
9301206485 fixes identified during tests
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-04-22 18:05:03 +02:00
874e06baa1 continued acs subsystem
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-04-22 17:49:28 +02:00
a0db5dcc7c add first mode sequence for acs ss
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-04-22 17:00:23 +02:00
ce41e4c219 tmtc update
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-04-22 14:21:41 +02:00
4a2ba043cb fixed conflicts 2022-04-22 14:20:17 +02:00
b63c3bb9c3 increased delay cycles of execution report 2022-04-22 14:17:16 +02:00
8b612d9116 include fix 2022-04-22 14:16:40 +02:00
974ff0a13e make RW handler more generic
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-04-22 11:29:51 +02:00
d29dd48d1e update project file: changed default unix sysroot
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-04-22 11:18:10 +02:00
1069762903 update config.h.in file
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-04-22 11:11:04 +02:00
88249cd5be update changelog
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-04-22 11:07:40 +02:00
165a4ef814 continued RW Assembly
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
2022-04-22 10:28:29 +02:00
3fbebd6a9f Merge remote-tracking branch 'origin/develop' into mueller/rw-ass 2022-04-22 10:28:14 +02:00
2ee9b09b27 logging command
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-04-22 08:55:57 +02:00
578899b5a5 scexhelper
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-04-21 19:47:09 +02:00
a8f5a4054f Merge branch 'develop' into meier/plocSupvUpdate 2022-04-21 17:34:26 +02:00
1d9fb354f7 Merge branch 'irini' of https://egit.irs.uni-stuttgart.de/eive/eive-obsw into irini
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-04-21 16:59:26 +02:00
a99b0007db fsfw update 2022-04-21 16:58:43 +02:00
afc0f37e8a rw assembly
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-04-21 16:56:46 +02:00
23b2d895bb submodule updates
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-04-21 16:40:28 +02:00
836a2327f9 tmtc update
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-04-21 16:31:14 +02:00
cf37d74728 adc report 2022-04-21 16:30:23 +02:00
0bcb332ce9 tmtc update
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-04-21 14:26:46 +02:00
52c539bc6b fsfw update 2022-04-21 14:26:15 +02:00
4895f940f3 tmtc update
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-04-19 14:26:21 +02:00
ffd64d0463 improvements in supervisor helper
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-04-19 13:33:37 +02:00
1ce45acba3 merged develop 2022-04-17 14:52:43 +02:00
7b54855397 supervisor fixes detected during testing 2022-04-16 17:19:32 +02:00
01f812b932 reorder fix
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-04-15 01:42:00 +02:00
ad12fa6060 repoint fsfw again 2022-04-15 01:40:53 +02:00
f52c2a32b7 repoint fsfw 2022-04-15 01:40:14 +02:00
5c3e91b5aa Merge remote-tracking branch 'origin/develop' into irini 2022-04-15 01:40:00 +02:00
57cc77e197 fixed some tiny bugs 2022-04-15 01:39:47 +02:00
285ec9be6a tmtc update
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-04-14 07:53:44 +02:00
10343a0dab supervisor event buffer request 2022-04-14 07:52:21 +02:00
bbdd3c052e mutex
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-04-13 17:47:24 +02:00
9f3f264eac continued scex uart reader, some bugs
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-04-13 17:43:16 +02:00
f679461164 tmtc update 2022-04-13 15:31:54 +02:00
5b2cfd2c84 Merge remote-tracking branch 'origin' into irini
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-04-13 14:47:12 +02:00
bd8cd49117 event buffer request wip 2022-04-13 11:56:37 +02:00
7f51ffc8fb use structs instead of classes 2022-04-12 17:42:41 +02:00
0fba1b6494 tmtc update
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-04-11 16:53:38 +02:00
05a85ab8a1 implemeted ICD changes 2022-04-11 16:52:50 +02:00
b440fc3df6 ploc update
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-04-10 18:46:39 +02:00
d00cb6d4a5 updates for new dle parser API
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-04-09 15:38:09 +02:00
808e01dfd3 DLE FRAM packets can be read now
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-04-09 14:43:06 +02:00
44c8f5f730 bugfix for SCEX 2022-04-09 01:00:42 +02:00
6071e34771 some refactoring 2022-04-08 21:16:02 +02:00
f6bc884edd Merge remote-tracking branch 'origin/develop' into irini
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-04-08 20:50:13 +02:00
01d86a0c7b huge progress
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-04-08 19:12:21 +02:00
35f2d2cb9c solve merge comflioct
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-04-08 15:25:07 +02:00
188f8863d0 Merge remote-tracking branch 'origin/develop' into irini
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-04-08 15:21:31 +02:00
dbe4f70d8e Merge branch 'meier/plocSupv' into meier/plocSupvUpdate 2022-04-07 12:26:30 +02:00
c0fd9aee6f update helper wip 2022-04-07 11:00:07 +02:00
df2295b430 tmtc update
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-04-06 17:53:23 +02:00
d51a73f15b tmtc update
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-04-06 17:51:31 +02:00
3f6a534db5 fixes identified during tests
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-04-06 17:27:44 +02:00
f058cf5e31 supervisor udpate wip
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-04-06 08:36:34 +02:00
9837a1b62c changes in supervisor commands
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
2022-04-06 07:10:20 +02:00
df712c7100 scex reader task started
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
2022-03-25 17:48:38 +01:00
647 changed files with 34671 additions and 28817 deletions

8
.gitmodules vendored
View File

@ -11,7 +11,7 @@
path = thirdparty/lwgps
url = https://github.com/rmspacefish/lwgps.git
[submodule "generators/fsfwgen"]
path = generators/fsfwgen
path = generators/deps/fsfwgen
url = https://egit.irs.uni-stuttgart.de/fsfw/fsfw-gen.git
[submodule "thirdparty/arcsec_star_tracker"]
path = thirdparty/arcsec_star_tracker
@ -19,3 +19,9 @@
[submodule "thirdparty/json"]
path = thirdparty/json
url = https://github.com/nlohmann/json.git
[submodule "thirdparty/rapidcsv"]
path = thirdparty/rapidcsv
url = https://github.com/d99kris/rapidcsv.git
[submodule "thirdparty/gomspace-sw"]
path = thirdparty/gomspace-sw
url = https://egit.irs.uni-stuttgart.de/eive/gomspace-sw.git

View File

@ -8,12 +8,263 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/).
The [milestone](https://egit.irs.uni-stuttgart.de/eive/eive-obsw/milestones)
list yields a list of all related PRs for each release.
Starting at v2.0.0, the following changes will consitute of a breaking
change warranting a new major release:
- The TMTC interface changes in any shape of form.
- The behavour of the OBSW changes in a major shape or form relevant
for operations
# [unreleased]
# [v1.12.0]
# [v1.22.0] 2023-01-28
TMTC version: v2.6.0
## Added
- First COM subsystem implementation. It mirrors the Syrlinks mode/submodes but also takes
care of commanding the CCSDS handler. It expects the Syrlinks submodes as mode commands.
PR: https://egit.irs.uni-stuttgart.de/eive/eive-obsw/pulls/358
- The CCSDS handler has has a new submode (3) to configure the default datarate.
- Default datarate parameter commanding moved to COM subsystem.
PR: https://egit.irs.uni-stuttgart.de/eive/eive-obsw/pulls/358
# [v1.21.0] 2023-01-26
TMTC version: v2.5.0
Syrlinks PR: PR: https://egit.irs.uni-stuttgart.de/eive/eive-obsw/pulls/353
## Fixed
- The `OBSW_SYRLINKS_SIMULATED` flag is set to 0 for for both EM and FM.
- MGM4 handling in ACS sensor processing: Bugfix in `mulScalar` operation
PR: https://egit.irs.uni-stuttgart.de/eive/eive-obsw/pulls/354
- Subsystem ID clash: CORE subsystem ID was the same as Syrlinks subsystem ID.
## Changed
- Startracker temperature set and PCDU switcher set are diagnostic now
- `SyrlinksHkHandler` renamed to `SyrlinksHandler` to better reflect that it does more than
just HK and is also responsible for setting the TX mode of the device.
- `SyrlinksHandler`: Go to startup immediately because the Syrlinks device should always be on
by default.
- `SyrlinksHandler`: Go to normal mode at startup.
## Added
- The Syrlinks handler has submodes for the TX mode now: RX Only (0), RX and TX default
datarate (1), RX and TX Low Rate (2), RX and TX High Rate (3) and TX Carrier Wave (4).
The submodes apply for both ON and NORMAL mode. The default datarate can be updated using
a parameter command (domain ID 0 and unique ID 0) with value 0 for low rate and 1 for high rate.
- The Syrlinks handler always sets TX to standby when switching off
- The Syrlinks handler triggers a new TX_ON event when the transmitter was switched on successfully
and a TX_OFF event when it was switched off successfully.
- Startracker temperature set and PCDU switcher set are diagnostic now
- The CCSDS handler can accept mode commands now. It accepts ON and OFF commands. Furthermore
it has a submode for low datarate (1) and high datarate (2) for the ON command.
PR: https://egit.irs.uni-stuttgart.de/eive/eive-obsw/pulls/352
# [v1.20.0] 2023-01-24
## Added
- The Q7S SW now checks for a file named `boot_delay_secs.txt` in the home directory.
If it exists and the file is empty, it will delay for 6 seconds before continuing
with the regular boot. It can also try to read delay seconds from the file.
PR: https://egit.irs.uni-stuttgart.de/eive/eive-obsw/pulls/340.
- Basic TCS Subsystem component.
PR: https://egit.irs.uni-stuttgart.de/eive/eive-obsw/pulls/319
- Expose base set of STR periodic housekeeping packets
## Changed
- Moved some PDEC/PTME configuration to `common/config/eive/definitions.h`
PR: https://egit.irs.uni-stuttgart.de/eive/eive-obsw/pulls/319
- The ACS Controller Gyro Sets (raw and processed) and the MEKF dataset are diagnostics now.
- Bumped FSFW for Service 11 improvement which includes size and CRC check for contained TC
- Syrlinks module now always included for both EM and FM
- SA Deployment: Allow specifying the switch interval and the initial channel. This allows testing
the new deployment procedure where each channel is burned for half of the whole burn duration.
It also allows burning only one channel for the whole burn duration. The autonomous mechanism
was adapted to burn each channel for half of the burn time by default.
PR: https://egit.irs.uni-stuttgart.de/eive/eive-obsw/pulls/347
TMTC PR: https://egit.irs.uni-stuttgart.de/eive/eive-tmtc/pulls/127
- `Max31865RtdLowlevelHandler.cpp`: For each RTD device, the config is now re-written before
every read. This seems to fix some issue with invalid temperature sensor readings.
PR: https://egit.irs.uni-stuttgart.de/eive/eive-obsw/pulls/345
## Fixed
- `GyroADIS1650XHandler`: Updated handler to determine correct dynamic range from `RANG_MDL`
register readout. This is because ADIS16505-3BMLZ devices are used on the ACS board and the
previous range setting was wrong. Also fixed a small error properly set internal state
on shut-down.
PR: https://egit.irs.uni-stuttgart.de/eive/eive-obsw/pulls/342
- Syrlinks Handler: Read RX frequency shift as 24 bit signed number now. Also include
validity handling for datasets.
PR: https://egit.irs.uni-stuttgart.de/eive/eive-obsw/pulls/350
- `GyroADIS1650XHandler`: Changed calculation of angular rate to be sensitivity based instead of
max. range based, as previous fix still left an margin of error between ADIS16505 sensors
and L3GD20 sensors.
PR: https://egit.irs.uni-stuttgart.de/eive/eive-obsw/pulls/346
# [v1.19.0] 2023-01-10
## Changed
- 5V stack is now off by default
## Fixed
- PLOC SUPV: Minor adaptions and important bugfix for UART manager
- Allow cloning and building the hosted OBSW version without proprietary libraries,
which also avoids the need to have a Gitea account.
PR: https://egit.irs.uni-stuttgart.de/eive/eive-obsw/pulls/337
## Added
- First version of ACS controller
PR: https://egit.irs.uni-stuttgart.de/eive/eive-obsw/pulls/329
- Allow commanding the 5V stack internally in software
PR: https://egit.irs.uni-stuttgart.de/eive/eive-obsw/pulls/334
- Add automatic 5V stack commanding for all connected devices
PR: https://egit.irs.uni-stuttgart.de/eive/eive-obsw/pulls/335
# [v1.18.0] 2022-12-01
## Changed
- PLOC Supervisor: Changes baudrate to 921600
- Renamed `/dev/ul-plsv` to `/dev/ploc_supv`, is not a UART lite anymore
- Renamed `/dev/i2c_eive` to `/dev/i2c_pl` and `/dev/i2c-2` to `/dev/i2c_ps`.
PR: https://egit.irs.uni-stuttgart.de/eive/eive-obsw/pulls/328
# [v1.17.0] 2022-11-28
## Added
- PLOC Supervisor Update: Update SW to use newest PLOC SUPV version by TAS
PR 1: https://egit.irs.uni-stuttgart.de/eive/eive-obsw/pulls/316
PR 2: https://egit.irs.uni-stuttgart.de/eive/eive-obsw/pulls/324
PR 3: https://egit.irs.uni-stuttgart.de/eive/eive-obsw/pulls/326
# [v1.16.0] 2022-11-18
- It is now possible to compile Linux components for the hosted build conditionally
PR: https://egit.irs.uni-stuttgart.de/eive/eive-obsw/pulls/322
- ACS Subsystem. PR: https://egit.irs.uni-stuttgart.de/eive/eive-obsw/pulls/231
- Payload Subsystem. PR: https://egit.irs.uni-stuttgart.de/eive/eive-obsw/pulls/231
- Add IRQ mode for PDEC handler. PR: https://egit.irs.uni-stuttgart.de/eive/eive-obsw/pulls/310
- Extended TM funnels to allow multiple TM recipients.
PR: https://egit.irs.uni-stuttgart.de/eive/eive-obsw/pulls/312
- DHB: Transitions to normal mode now possible directly, which simplifies subsystem implementations
PR: https://egit.irs.uni-stuttgart.de/eive/eive-obsw/pulls/313
- MAX3185 Low Level Handler and Device Handler: Simplifications and bugfixes to allow switching
off without triggering unrequested replies
PR: https://egit.irs.uni-stuttgart.de/eive/eive-obsw/pulls/313
- Add remaining missing TMP1075 device handlers.
PR: https://egit.irs.uni-stuttgart.de/eive/eive-obsw/pulls/318
# [v1.15.0] 2022-10-27
- Consistent device file naming
- Remove rad sensor from EM build, lead to weird bugs on EM which
prevented `xsc_boot_copy` from working properly
- CFDP closure handling is now working
PR: https://egit.irs.uni-stuttgart.de/eive/eive-obsw/pulls/307
- Safety mechanism for SD card handling on graceful reboots
PR: https://egit.irs.uni-stuttgart.de/eive/eive-obsw/pulls/308
- Solar Array Deployment handler update
PR: https://egit.irs.uni-stuttgart.de/eive/eive-obsw/pulls/305
- IMTQ updates as preparation for ACS controller expansion
PR: https://egit.irs.uni-stuttgart.de/eive/eive-obsw/pulls/306
- P60 Module: Reduce number of set IDs, use same set IDs for core, auxiliary
and config HK set across the three PCDU modules
# [v1.14.1] 11.10.2022
- Various bugfixes and regression fixes
- General file handling at program initialization now works properly again
- Scratch buffer preferred SD card handling works again
- Use scoped locks in TCS controller to avoid deadlocks
# [v1.14.0] 10.10.2022
- Provide full SW update capability for the OBSW.
This includes very basic CFDP integration, a software update
procedure specified in detail in the README and some high level
commands to make this easier for operators.
PR: https://egit.irs.uni-stuttgart.de/eive/eive-obsw/pulls/302
- Update for FSFW: `HasReturnvaluesIF` class replaced by namespace `returnvalue`
- Add some GomSpace clients as a submodule dependency. Use this dependency to deserialize the
GomSpace TM tables
- Add API to retrieve GomSpace device parameter tables
PR: https://egit.irs.uni-stuttgart.de/eive/eive-obsw/pulls/287
- Add API to save and load GomSpace config tables
PR: https://egit.irs.uni-stuttgart.de/eive/eive-obsw/pulls/293
- Increase number of allowed consescutive action commands from 3 to 16
PR: https://egit.irs.uni-stuttgart.de/eive/eive-obsw/pulls/294
- Fix for EM SW: Always create ACS Task
- Added Scex device handler and Scex uart reader
PR: https://egit.irs.uni-stuttgart.de/eive/eive-obsw/pulls/303
- ACS Subsystem. PR: https://egit.irs.uni-stuttgart.de/eive/eive-obsw/pulls/228
# [v1.13.0] 24.08.2022
- Added first version of ACS Controller with gathers MGM data in a set
- Some tweaks for IMTQ handler
# [v1.12.1] 05.07.2022
- Disable periodic TCS controller HK generation by default
# [v1.12.0] 04.07.2022
## Added
- Dummy components to run OBSW without relying on external hardware
PR: https://egit.irs.uni-stuttgart.de/eive/eive-obsw/pulls/266
- Basic Thermal Controller
PR: https://egit.irs.uni-stuttgart.de/eive/eive-obsw/pulls/266
- PUS11 TC scheduler
PR: https://egit.irs.uni-stuttgart.de/eive/eive-obsw/pulls/259
- Regular reboot command
PR: https://egit.irs.uni-stuttgart.de/eive/eive-obsw/pulls/242
- Commands for individual RTD devices
PR: https://egit.irs.uni-stuttgart.de/eive/eive-tmtc/pulls/84
- `RwAssembly` added to system components. Assembly works in principle,
issues making 4 consecutives RWs communicate at once..
PR: https://egit.irs.uni-stuttgart.de/eive/eive-obsw/pulls/224
- Adds a yocto helper script which is able to install the release build binaries
(OBSW and Watchdog) into the `q7s-yocto` repository as long as the `q7s-package`
or `q7s-yocto` repo was cloned in the same directory the EIVE OBSW repo.
This makes updating the root filesystem a lot easier. It also creates and installs a
version file.
PR: https://egit.irs.uni-stuttgart.de/eive/eive-obsw/pulls/248
- Create the generic image by default for the Q7S build. The unique binary with the
username appended at the end is created as a side-product now
PR: https://egit.irs.uni-stuttgart.de/eive/eive-obsw/pulls/248
## Fixed
- `q7s-cp.py` bugfix
PR: https://egit.irs.uni-stuttgart.de/eive/eive-obsw/pulls/256
- Generator scripts output now produce platform-independent artifacts
PR: https://egit.irs.uni-stuttgart.de/eive/eive-obsw/pulls/267
### Heater
- Adds `HealthIF` to heaters. Heaters are own system object with queues now which allows to set them faulty.
- SW will attempt to shut down heaters which are on but marked faulty
- Some simplifications for `HeaterHandler`, use `std::vector` instead of `std::unordered_map` for primary container. Using the heater indexes 0 to 7 allows to use natural array indexing
- Some additional input sanity checks in `executeAction`
PR: https://egit.irs.uni-stuttgart.de/eive/eive-obsw/pulls/236
## Changed
- CCSDS handler improvements
PR: https://egit.irs.uni-stuttgart.de/eive/eive-obsw/pulls/268
- Build unittest as default side product of hosted builds
PR: https://egit.irs.uni-stuttgart.de/eive/eive-obsw/pulls/244
- Let CI/CD build host build and run unittest side product in same step

View File

@ -1,42 +1,50 @@
################################################################################
# ##############################################################################
# CMake support for the EIVE OBSW
#
#
# Author: R. Mueller
################################################################################
# ##############################################################################
################################################################################
# ##############################################################################
# Pre-Project preparation
################################################################################
# ##############################################################################
cmake_minimum_required(VERSION 3.13)
set(OBSW_VERSION_MAJOR_IF_GIT_FAILS 0)
set(OBSW_VERSION_MINOR_IF_GIT_FAILS 0)
set(OBSW_VERSION_MAJOR_IF_GIT_FAILS 1)
set(OBSW_VERSION_MINOR_IF_GIT_FAILS 22)
set(OBSW_VERSION_REVISION_IF_GIT_FAILS 0)
# set(CMAKE_VERBOSE TRUE)
option(EIVE_HARDCODED_TOOLCHAIN_FILE "\
option(
EIVE_HARDCODED_TOOLCHAIN_FILE
"\
For Linux Board Target BSPs, a default toolchain file will be set. Should be set to OFF \
if a different toolchain file is set externally" ON
)
if a different toolchain file is set externally"
ON)
if(NOT FSFW_OSAL)
set(FSFW_OSAL linux CACHE STRING "OS for the FSFW.")
set(FSFW_OSAL
linux
CACHE STRING "OS for the FSFW.")
endif()
if(TGT_BSP)
if(TGT_BSP MATCHES "arm/q7s" OR TGT_BSP MATCHES "arm/raspberrypi" OR TGT_BSP MATCHES "arm/beagleboneblack")
option(LINUX_CROSS_COMPILE ON)
endif()
if(TGT_BSP MATCHES "arm/raspberrypi" OR TGT_BSP MATCHES "arm/beagleboneblack")
option(EIVE_BUILD_GPSD_GPS_HANDLER "Build GPSD dependent GPS Handler" OFF)
elseif(TGT_BSP MATCHES "arm/q7s")
option(EIVE_Q7S_EM "Build configuration for the EM" OFF)
option(EIVE_BUILD_GPSD_GPS_HANDLER "Build GPSD dependent GPS Handler" ON)
endif()
option(EIVE_CREATE_UNIQUE_OBSW_BIN "Append username to generated binary name" ON)
if(TGT_BSP MATCHES "arm/q7s"
OR TGT_BSP MATCHES "arm/raspberrypi"
OR TGT_BSP MATCHES "arm/beagleboneblack")
option(LINUX_CROSS_COMPILE ON)
endif()
if(TGT_BSP MATCHES "arm/raspberrypi" OR TGT_BSP MATCHES "arm/beagleboneblack")
option(EIVE_BUILD_GPSD_GPS_HANDLER "Build GPSD dependent GPS Handler" OFF)
elseif(TGT_BSP MATCHES "arm/q7s")
option(EIVE_Q7S_EM "Build configuration for the EM" OFF)
option(EIVE_BUILD_GPSD_GPS_HANDLER "Build GPSD dependent GPS Handler" ON)
endif()
option(EIVE_CREATE_UNIQUE_OBSW_BIN "Append username to generated binary name"
ON)
else()
option(EIVE_CREATE_UNIQUE_OBSW_BIN "Append username to generated binary name" OFF)
option(EIVE_CREATE_UNIQUE_OBSW_BIN "Append username to generated binary name"
OFF)
endif()
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
@ -56,61 +64,132 @@ include(EiveHelpers)
option(EIVE_ADD_ETL_LIB "Add ETL library" ON)
option(EIVE_ADD_JSON_LIB "Add JSON library" ON)
if(EIVE_Q7S_EM)
set(OBSW_Q7S_EM 1 CACHE STRING "Q7S EM configuration")
set(INIT_VAL 0)
else()
set(OBSW_Q7S_EM 0 CACHE STRING "Q7S EM configuration")
set(INIT_VAL 1)
endif()
set(OBSW_ADD_MGT ${INIT_VAL} CACHE STRING "Add MGT module" )
set(OBSW_ADD_BPX_BATTERY_HANDLER ${INIT_VAL} CACHE STRING "Add MGT module")
set(OBSW_ADD_STAR_TRACKER ${INIT_VAL} CACHE STRING "Add Startracker module")
set(OBSW_ADD_SUN_SENSORS ${INIT_VAL} CACHE STRING "Add sun sensor module")
set(OBSW_ADD_SUS_BOARD_ASS ${INIT_VAL} CACHE STRING "Add sun sensor board assembly")
set(OBSW_ADD_ACS_BOARD ${INIT_VAL} CACHE STRING "Add ACS board module")
set(OBSW_ADD_ACS_HANDLERS ${INIT_VAL} CACHE STRING "Add ACS handlers")
set(OBSW_ADD_RTD_DEVICES ${INIT_VAL} CACHE STRING "Add RTD devices")
set(OBSW_ADD_RAD_SENSORS ${INIT_VAL} CACHE STRING "Add Rad Sensor module")
set(OBSW_ADD_PL_PCDU ${INIT_VAL} CACHE STRING "Add Payload PCDU modukle")
set(OBSW_ADD_SYRLINKS ${INIT_VAL} CACHE STRING "Add Syrlinks module")
set(OBSW_ADD_TMP_DEVICES ${INIT_VAL} CACHE STRING "Add TMP devices")
set(OBSW_ADD_GOMSPACE_PCDU ${INIT_VAL} CACHE STRING "Add GomSpace PCDU modules")
set(OBSW_ADD_RW ${INIT_VAL} CACHE STRING "Add RW modules")
set(OBSW_MAX_SCHEDULED_TCS 500)
################################################################################
if(EIVE_Q7S_EM)
set(OBSW_Q7S_EM
1
CACHE STRING "Q7S EM configuration")
set(INIT_VAL 0)
else()
set(OBSW_Q7S_EM
0
CACHE STRING "Q7S EM configuration")
set(INIT_VAL 1)
endif()
set(OBSW_ADD_MGT
${INIT_VAL}
CACHE STRING "Add MGT module")
set(OBSW_ADD_BPX_BATTERY_HANDLER
${INIT_VAL}
CACHE STRING "Add MGT module")
set(OBSW_ADD_STAR_TRACKER
${INIT_VAL}
CACHE STRING "Add Startracker module")
set(OBSW_ADD_SUN_SENSORS
${INIT_VAL}
CACHE STRING "Add sun sensor module")
set(OBSW_ADD_SUS_BOARD_ASS
${INIT_VAL}
CACHE STRING "Add sun sensor board assembly")
set(OBSW_ADD_ACS_BOARD
${INIT_VAL}
CACHE STRING "Add ACS board module")
set(OBSW_ADD_GPS_CTRL
${INIT_VAL}
CACHE STRING "Add GPS controllers")
set(OBSW_ADD_CCSDS_IP_CORES
1
CACHE STRING "Add CCSDS IP cores")
set(OBSW_TM_TO_PTME
1
CACHE STRING "Send telemetry to PTME IP core")
set(OBSW_TC_FROM_PDEC
1
CACHE STRING "Poll telecommand from PDEC IP core")
set(OBSW_ADD_TCS_CTRL
${INIT_VAL}
CACHE STRING "Add TCS controllers")
set(OBSW_ADD_HEATERS
${INIT_VAL}
CACHE STRING "Add TCS heaters")
set(OBSW_ADD_PLOC_SUPERVISOR
${INIT_VAL}
CACHE STRING "Add PLOC supervisor handler")
set(OBSW_ADD_SA_DEPL
${INIT_VAL}
CACHE STRING "Add SA deployment handler")
set(OBSW_ADD_PLOC_MPSOC
${INIT_VAL}
CACHE STRING "Add MPSoC handler")
set(OBSW_ADD_ACS_CTRL
${INIT_VAL}
CACHE STRING "Add ACS controller")
set(OBSW_ADD_RTD_DEVICES
${INIT_VAL}
CACHE STRING "Add RTD devices")
set(OBSW_ADD_RAD_SENSORS
${INIT_VAL}
CACHE STRING "Add Rad Sensor module")
set(OBSW_ADD_PL_PCDU
${INIT_VAL}
CACHE STRING "Add Payload PCDU modukle")
set(OBSW_ADD_SYRLINKS
1
CACHE STRING "Add Syrlinks module")
set(OBSW_ADD_TMP_DEVICES
${INIT_VAL}
CACHE STRING "Add TMP devices")
set(OBSW_ADD_GOMSPACE_PCDU
${INIT_VAL}
CACHE STRING "Add GomSpace PCDU modules")
set(OBSW_ADD_RW
${INIT_VAL}
CACHE STRING "Add RW modules")
set(OBSW_ADD_SCEX_DEVICE
${INIT_VAL}
CACHE STRING "Add Solar Cell Experiment module")
set(OBSW_SYRLINKS_SIMULATED
0
CACHE STRING "Syrlinks is simulated")
# ##############################################################################
# Pre-Sources preparation
################################################################################
# ##############################################################################
# Version handling
set(GIT_VER_HANDLING_OK FALSE)
if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/.git)
determine_version_with_git("--exclude" "docker_*")
set(GIT_INFO ${GIT_INFO} CACHE STRING "Version information retrieved with git describe")
if(GIT_INFO)
set(GIT_INFO ${GIT_INFO} CACHE STRING "Version information retrieved with git describe")
list(GET GIT_INFO 1 OBSW_VERSION_MAJOR)
list(GET GIT_INFO 2 OBSW_VERSION_MINOR)
list(GET GIT_INFO 3 OBSW_VERSION_REVISION)
list(GET GIT_INFO 4 OBSW_VERSION_CST_GIT_SHA1)
if(NOT OBSW_VERSION_MAJOR)
set(OBSW_VERSION_MAJOR ${OBSW_VERSION_MAJOR_IF_GIT_FAILS})
endif()
if(NOT OBSW_VERSION_MINOR)
set(FSFW_SUBVERSION ${OBSW_VERSION_MINOR_IF_GIT_FAILS})
endif()
if(NOT OBSW_VERSION_REVISION)
set(FSFW_REVISION ${OBSW_VERSION_REVISION_IF_GIT_FAILS})
endif()
set(GIT_VER_HANDLING_OK TRUE)
else()
set(GIT_VER_HANDLING_OK FALSE)
endif()
determine_version_with_git("--exclude" "docker_*")
set(GIT_INFO
${GIT_INFO}
CACHE STRING "Version information retrieved with git describe")
if(GIT_INFO)
set(GIT_INFO
${GIT_INFO}
CACHE STRING "Version information retrieved with git describe")
list(GET GIT_INFO 1 OBSW_VERSION_MAJOR)
list(GET GIT_INFO 2 OBSW_VERSION_MINOR)
list(GET GIT_INFO 3 OBSW_VERSION_REVISION)
list(GET GIT_INFO 4 OBSW_VERSION_CST_GIT_SHA1)
if(NOT OBSW_VERSION_MAJOR)
set(OBSW_VERSION_MAJOR ${OBSW_VERSION_MAJOR_IF_GIT_FAILS})
endif()
if(NOT OBSW_VERSION_MINOR)
set(FSFW_SUBVERSION ${OBSW_VERSION_MINOR_IF_GIT_FAILS})
endif()
if(NOT OBSW_VERSION_REVISION)
set(FSFW_REVISION ${OBSW_VERSION_REVISION_IF_GIT_FAILS})
endif()
set(GIT_VER_HANDLING_OK TRUE)
else()
set(GIT_VER_HANDLING_OK FALSE)
endif()
endif()
if(NOT GIT_VER_HANDLING_OK)
set(OBSW_VERSION_MAJOR ${OBSW_VERSION_MAJOR_IF_GIT_FAILS})
set(OBSW_VERSION_MINOR ${OBSW_VERSION_MINOR_IF_GIT_FAILS})
set(OBSW_VERSION_REVISION ${OBSW_VERSION_REVISION_IF_GIT_FAILS})
set(OBSW_VERSION_MAJOR ${OBSW_VERSION_MAJOR_IF_GIT_FAILS})
set(OBSW_VERSION_MINOR ${OBSW_VERSION_MINOR_IF_GIT_FAILS})
set(OBSW_VERSION_REVISION ${OBSW_VERSION_REVISION_IF_GIT_FAILS})
endif()
# Set names and variables
@ -124,24 +203,29 @@ set(LIB_ETL_TARGET etl::etl)
set(LIB_CSP_NAME libcsp)
set(LIB_LWGPS_NAME lwgps)
set(LIB_ARCSEC wire)
set(LIB_GOMSPACE_CLIENTS gs_clients)
set(LIB_GOMSPACE_CSP gs_csp)
set(THIRD_PARTY_FOLDER thirdparty)
set(LIB_CXX_FS -lstdc++fs)
set(LIB_CATCH2 Catch2)
set(LIB_GPS gps)
set(LIB_JSON_NAME nlohmann_json::nlohmann_json)
set(LIB_DUMMIES dummies)
# Set path names
set(FSFW_PATH fsfw)
set(TEST_PATH test)
set(UNITTEST_PATH unittest)
set(LINUX_PATH linux)
set(LIB_GOMSPACE_PATH ${THIRD_PARTY_FOLDER}/gomspace-sw)
set(COMMON_PATH common)
set(DUMMY_PATH dummies)
set(WATCHDOG_PATH watchdog)
set(COMMON_CONFIG_PATH ${COMMON_PATH}/config)
set(UNITTEST_CFG_PATH ${UNITTEST_PATH}/testcfg)
set(LIB_EIVE_MISSION_PATH mission)
set(LIB_CSP_PATH ${THIRD_PARTY_FOLDER}/libcsp)
set(LIB_ETL_PATH ${THIRD_PARTY_FOLDER}/etl)
set(LIB_CATCH2_PATH ${THIRD_PARTY_FOLDER}/Catch2)
set(LIB_LWGPS_PATH ${THIRD_PARTY_FOLDER}/lwgps)
@ -149,178 +233,185 @@ set(LIB_ARCSEC_PATH ${THIRD_PARTY_FOLDER}/arcsec_star_tracker)
set(LIB_JSON_PATH ${THIRD_PARTY_FOLDER}/json)
set(FSFW_WARNING_SHADOW_LOCAL_GCC OFF)
set(EIVE_ADD_LINUX_FILES False)
set(EIVE_ADD_LINUX_FILES OFF)
# Analyse different OS and architecture/target options, determine BSP_PATH,
# display information about compiler etc.
pre_source_hw_os_config()
if(TGT_BSP)
set(LIBGPS_VERSION_MAJOR 3)
# I assume a newer version than 3.17 will be installed on other Linux board
# than the Q7S
set(LIBGPS_VERSION_MINOR 20)
if(TGT_BSP MATCHES "arm/q7s"
OR TGT_BSP MATCHES "arm/raspberrypi"
OR TGT_BSP MATCHES "arm/beagleboneblack"
OR TGT_BSP MATCHES "arm/egse"
OR TGT_BSP MATCHES "arm/te0720-1cfa")
find_library(${LIB_GPS} gps)
set(FSFW_CONFIG_PATH "linux/fsfwconfig")
if(NOT BUILD_Q7S_SIMPLE_MODE)
set(EIVE_ADD_LINUX_FILES TRUE)
set(EIVE_ADD_LINUX_FSFWCONFIG TRUE)
set(ADD_GOMSPACE_CSP TRUE)
set(ADD_GOMSPACE_CLIENTS TRUE)
set(FSFW_HAL_ADD_LINUX ON)
set(FSFW_HAL_LINUX_ADD_LIBGPIOD ON)
set(FSFW_HAL_LINUX_ADD_PERIPHERAL_DRIVERS ON)
endif()
elseif(UNIX)
set(EIVE_ADD_LINUX_FILES ON)
endif()
if(TGT_BSP MATCHES "arm/raspberrypi")
# Used by configure file
set(RASPBERRY_PI ON)
set(FSFW_HAL_ADD_RASPBERRY_PI ON)
endif()
if(TGT_BSP MATCHES "arm/egse")
# Used by configure file
set(EGSE ON)
set(FSFW_HAL_LINUX_ADD_LIBGPIOD OFF)
set(OBSW_ADD_STAR_TRACKER 1)
set(OBSW_DEBUG_STARTRACKER 1)
endif()
if(TGT_BSP MATCHES "arm/beagleboneblack")
# Used by configure file
set(BEAGLEBONEBLACK ON)
endif()
if(TGT_BSP MATCHES "arm/q7s")
# Used by configure file
set(XIPHOS_Q7S ON)
set(LIBGPS_VERSION_MAJOR 3)
# I assume a newer version than 3.17 will be installed on other Linux board than the Q7S
set(LIBGPS_VERSION_MINOR 20)
if(TGT_BSP MATCHES "arm/q7s" OR TGT_BSP MATCHES "arm/raspberrypi"
OR TGT_BSP MATCHES "arm/beagleboneblack" OR TGT_BSP MATCHES "arm/egse"
OR TGT_BSP MATCHES "arm/te0720-1cfa"
)
find_library(${LIB_GPS} gps)
set(FSFW_CONFIG_PATH "linux/fsfwconfig")
if(NOT BUILD_Q7S_SIMPLE_MODE)
set(EIVE_ADD_LINUX_FILES TRUE)
set(ADD_CSP_LIB TRUE)
set(FSFW_HAL_ADD_LINUX ON)
endif()
endif()
if(TGT_BSP MATCHES "arm/raspberrypi" )
# Used by configure file
set(RASPBERRY_PI ON)
set(FSFW_HAL_ADD_RASPBERRY_PI ON)
endif()
set(LIBGPS_VERSION_MINOR 17)
endif()
if(TGT_BSP MATCHES "arm/egse")
# Used by configure file
set(EGSE ON)
set(FSFW_HAL_LINUX_ADD_LIBGPIOD OFF)
set(OBSW_ADD_STAR_TRACKER 1)
set(OBSW_DEBUG_STARTRACKER 1)
endif()
if(TGT_BSP MATCHES "arm/beagleboneblack")
# Used by configure file
set(BEAGLEBONEBLACK ON)
endif()
if(TGT_BSP MATCHES "arm/q7s")
# Used by configure file
set(XIPHOS_Q7S ON)
set(LIBGPS_VERSION_MAJOR 3)
set(LIBGPS_VERSION_MINOR 17)
endif()
if(TGT_BSP MATCHES "arm/te0720-1cfa")
set(TE0720_1CFA ON)
endif()
if(TGT_BSP MATCHES "arm/te0720-1cfa")
set(TE0720_1CFA ON)
endif()
else()
# Required by FSFW library
set(FSFW_CONFIG_PATH "${BSP_PATH}/fsfwconfig")
# Required by FSFW library
set(FSFW_CONFIG_PATH "${BSP_PATH}/fsfwconfig")
if(UNIX)
set(EIVE_ADD_LINUX_FILES ON)
endif()
endif()
# Configuration files
configure_file(${COMMON_CONFIG_PATH}/commonConfig.h.in commonConfig.h)
configure_file(${FSFW_CONFIG_PATH}/FSFWConfig.h.in FSFWConfig.h)
configure_file(${BSP_PATH}/OBSWConfig.h.in OBSWConfig.h)
if(TGT_BSP MATCHES "arm/q7s")
configure_file(${BSP_PATH}/boardconfig/q7sConfig.h.in q7sConfig.h)
configure_file(${BSP_PATH}/boardconfig/q7sConfig.h.in q7sConfig.h)
elseif(TGT_BSP MATCHES "arm/raspberrypi" OR TGT_BSP MATCHES "arm/egse")
configure_file(${BSP_PATH}/boardconfig/rpiConfig.h.in rpiConfig.h)
configure_file(${BSP_PATH}/boardconfig/rpiConfig.h.in rpiConfig.h)
endif()
configure_file(${WATCHDOG_PATH}/watchdogConf.h.in watchdogConf.h)
# Set common config path for FSFW
set(FSFW_ADDITIONAL_INC_PATHS
"${COMMON_PATH}/config"
${CMAKE_CURRENT_BINARY_DIR}
)
set(FSFW_ADDITIONAL_INC_PATHS "${COMMON_PATH}/config"
${CMAKE_CURRENT_BINARY_DIR})
################################################################################
# ##############################################################################
# Executable and Sources
################################################################################
# ##############################################################################
#global compiler options need to be set before adding executables
# global compiler options need to be set before adding executables
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
add_compile_options(
"-Wall"
"-Wextra"
"-Wimplicit-fallthrough=1"
"-Wno-unused-parameter"
"-Wno-psabi"
"-Wduplicated-cond" # check for duplicate conditions
"-Wduplicated-branches" # check for duplicate branches
"-Wlogical-op" # Search for bitwise operations instead of logical
"-Wnull-dereference" # Search for NULL dereference
"-Wundef" # Warn if undefind marcos are used
"-Wformat=2" # Format string problem detection
"-Wformat-overflow=2" # Formatting issues in printf
"-Wformat-truncation=2" # Formatting issues in printf
"-Wformat-security" # Search for dangerous printf operations
"-Wstrict-overflow=3" # Warn if integer overflows might happen
"-Warray-bounds=2" # Some array bounds violations will be found
"-Wshift-overflow=2" # Search for bit left shift overflows (<c++14)
"-Wcast-qual" # Warn if the constness is cast away
"-Wstringop-overflow=4"
# -Wstack-protector # Emits a few false positives for low level access
# -Wconversion # Creates many false positives
# -Warith-conversion # Use with Wconversion to find more implicit conversions
# -fanalyzer # Should be used to look through problems
)
# Remove unused sections.
add_compile_options(
"-ffunction-sections"
"-fdata-sections"
)
# Remove unused sections.
add_compile_options("-ffunction-sections" "-fdata-sections")
# Removed unused sections.
add_link_options(
"-Wl,--gc-sections"
)
# Removed unused sections.
add_link_options("-Wl,--gc-sections")
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
set(COMPILER_FLAGS "/permissive-")
set(COMPILER_FLAGS "/permissive-")
endif()
add_library(${LIB_EIVE_MISSION})
add_library(${LIB_DUMMIES})
# Add main executable
add_executable(${OBSW_NAME})
if(EIVE_CREATE_UNIQUE_OBSW_BIN)
set(OBSW_BIN_NAME ${CMAKE_PROJECT_NAME}-$ENV{USERNAME})
else()
set(OBSW_BIN_NAME ${CMAKE_PROJECT_NAME})
set(OBSW_BIN_NAME ${CMAKE_PROJECT_NAME})
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
set(WARNING_FLAGS
"-Wall"
"-Wextra"
"-Wimplicit-fallthrough=1"
"-Wno-unused-parameter"
"-Wno-psabi"
"-Wduplicated-cond" # check for duplicate conditions
"-Wduplicated-branches" # check for duplicate branches
"-Wlogical-op" # Search for bitwise operations instead of logical
"-Wnull-dereference" # Search for NULL dereference
"-Wundef" # Warn if undefind marcos are used
"-Wformat=2" # Format string problem detection
"-Wformat-overflow=2" # Formatting issues in printf
"-Wformat-truncation=2" # Formatting issues in printf
"-Wformat-security" # Search for dangerous printf operations
"-Wstrict-overflow=3" # Warn if integer overflows might happen
"-Warray-bounds=2" # Some array bounds violations will be found
"-Wshift-overflow=2" # Search for bit left shift overflows (<c++14)
"-Wcast-qual" # Warn if the constness is cast away
"-Wstringop-overflow=4"
# -Wstack-protector # Emits a few false positives for low level access
# -Wconversion # Creates many false positives -Warith-conversion # Use
# with Wconversion to find more implicit conversions -fanalyzer # Should
# be used to look through problems
)
target_compile_options(${OBSW_NAME} PRIVATE ${WARNING_FLAGS})
target_compile_options(${LIB_EIVE_MISSION} PRIVATE ${WARNING_FLAGS})
target_compile_options(${LIB_DUMMIES} PRIVATE ${WARNING_FLAGS})
endif()
set_target_properties(${OBSW_NAME} PROPERTIES OUTPUT_NAME ${OBSW_BIN_NAME})
# Watchdog
if(TGT_BSP MATCHES "arm/q7s")
add_executable(${WATCHDOG_NAME})
add_executable(${WATCHDOG_NAME})
else()
add_executable(${WATCHDOG_NAME} EXCLUDE_FROM_ALL)
add_executable(${WATCHDOG_NAME} EXCLUDE_FROM_ALL)
endif()
add_subdirectory(${WATCHDOG_PATH})
target_link_libraries(${WATCHDOG_NAME} PUBLIC
${LIB_CXX_FS}
)
target_include_directories(${WATCHDOG_NAME} PUBLIC
${CMAKE_BINARY_DIR}
)
add_subdirectory(${WATCHDOG_PATH})
target_link_libraries(${WATCHDOG_NAME} PUBLIC ${LIB_CXX_FS})
target_include_directories(${WATCHDOG_NAME} PUBLIC ${CMAKE_BINARY_DIR})
# unittests
if(NOT TGT_BSP)
add_executable(${UNITTEST_NAME})
add_executable(${UNITTEST_NAME})
else()
add_executable(${UNITTEST_NAME} EXCLUDE_FROM_ALL)
add_executable(${UNITTEST_NAME} EXCLUDE_FROM_ALL)
endif()
if(EIVE_ADD_ETL_LIB)
endif()
if(EIVE_ADD_JSON_LIB)
add_subdirectory(${LIB_JSON_PATH})
endif()
if(EIVE_ADD_LINUX_FILES)
add_subdirectory(${LIB_ARCSEC_PATH})
add_subdirectory(${LINUX_PATH})
endif()
add_subdirectory(${BSP_PATH})
if(ADD_CSP_LIB)
add_subdirectory(${LIB_CSP_PATH})
add_subdirectory(${LIB_JSON_PATH})
endif()
add_subdirectory(thirdparty)
if(EIVE_ADD_LINUX_FILES)
if(TGT_BSP MATCHES "arm/q7s")
add_subdirectory(${LIB_GOMSPACE_PATH})
add_subdirectory(${LIB_ARCSEC_PATH})
endif()
add_subdirectory(${LINUX_PATH})
endif()
add_subdirectory(${BSP_PATH})
add_subdirectory(${COMMON_PATH})
add_subdirectory(${DUMMY_PATH})
add_subdirectory(${LIB_LWGPS_PATH})
add_subdirectory(${FSFW_PATH})
@ -329,174 +420,145 @@ add_subdirectory(${TEST_PATH})
add_subdirectory(${UNITTEST_PATH})
# This should have already been downloaded by the FSFW
# Still include it to be safe
find_package(etl ${FSFW_ETL_LIB_MAJOR_VERSION} CONFIG QUIET)
# Not installed, so use FetchContent to download and provide etl
if(NOT etl_FOUND)
message(STATUS
"No ETL installation was found with find_package. Installing and providing "
"etl with FindPackage"
)
include(FetchContent)
FetchContent_Declare(
etl
GIT_REPOSITORY https://github.com/ETLCPP/etl
GIT_TAG ${FSFW_ETL_LIB_VERSION}
)
list(APPEND FSFW_FETCH_CONTENT_TARGETS etl)
endif()
# This should have already been downloaded by the FSFW Still include it to be
# safe find_package(etl ${FSFW_ETL_LIB_MAJOR_VERSION} CONFIG QUIET) Not
# installed, so use FetchContent to download and provide etl if(NOT etl_FOUND)
message(
STATUS
"No ETL installation was found with find_package. Installing and providing "
"etl with FindPackage")
include(FetchContent)
FetchContent_Declare(
etl
GIT_REPOSITORY https://github.com/ETLCPP/etl
GIT_TAG ${FSFW_ETL_LIB_VERSION})
list(APPEND FSFW_FETCH_CONTENT_TARGETS etl)
# endif()
# Use same Catch2 version as framework
if (NOT(TGT_BSP MATCHES "arm/te0720-1cfa") AND NOT(TGT_BSP MATCHES "arm/q7s")
AND NOT (TGT_BSP MATCHES "arm/raspberrypi"))
# Check whether the user has already installed Catch2 first
find_package(Catch2 ${FSFW_CATCH2_LIB_MAJOR_VERSION} CONFIG QUIET)
# Not installed, so use FetchContent to download and provide Catch2
if(NOT Catch2_FOUND)
message(STATUS "${MSG_PREFIX} Catch2 installation not found. Downloading Catch2 library with FetchContent")
include(FetchContent)
if(NOT (TGT_BSP MATCHES "arm/te0720-1cfa")
AND NOT (TGT_BSP MATCHES "arm/q7s")
AND NOT (TGT_BSP MATCHES "arm/raspberrypi"))
# Check whether the user has already installed Catch2 first
find_package(Catch2 ${FSFW_CATCH2_LIB_MAJOR_VERSION} CONFIG QUIET)
# Not installed, so use FetchContent to download and provide Catch2
if(NOT Catch2_FOUND)
message(
STATUS
"${MSG_PREFIX} Catch2 installation not found. Downloading Catch2 library with FetchContent"
)
include(FetchContent)
FetchContent_Declare(
Catch2
GIT_REPOSITORY https://github.com/catchorg/Catch2.git
GIT_TAG ${FSFW_CATCH2_LIB_VERSION}
)
FetchContent_Declare(
Catch2
GIT_REPOSITORY https://github.com/catchorg/Catch2.git
GIT_TAG ${FSFW_CATCH2_LIB_VERSION})
list(APPEND FSFW_FETCH_CONTENT_TARGETS Catch2)
endif()
list(APPEND FSFW_FETCH_CONTENT_TARGETS Catch2)
endif()
endif()
# The documentation for FetchContent recommends declaring all the dependencies
# before making them available. We make all declared dependency available here
# after their declaration
if(FSFW_FETCH_CONTENT_TARGETS)
FetchContent_MakeAvailable(${FSFW_FETCH_CONTENT_TARGETS})
if(TARGET etl)
add_library(${LIB_ETL_TARGET} ALIAS etl)
endif()
if(TARGET Catch2)
# Fixes regression -preview4, to be confirmed in later releases
# Related GitHub issue: https://github.com/catchorg/Catch2/issues/2417
set_target_properties(Catch2 PROPERTIES DEBUG_POSTFIX "")
set_target_properties(Catch2 PROPERTIES EXCLUDE_FROM_ALL "true")
set_target_properties(Catch2WithMain PROPERTIES EXCLUDE_FROM_ALL "true")
endif()
FetchContent_MakeAvailable(${FSFW_FETCH_CONTENT_TARGETS})
if(TARGET etl)
add_library(${LIB_ETL_TARGET} ALIAS etl)
endif()
if(TARGET Catch2)
# Fixes regression -preview4, to be confirmed in later releases Related
# GitHub issue: https://github.com/catchorg/Catch2/issues/2417
set_target_properties(Catch2 PROPERTIES DEBUG_POSTFIX "")
set_target_properties(Catch2 PROPERTIES EXCLUDE_FROM_ALL "true")
set_target_properties(Catch2WithMain PROPERTIES EXCLUDE_FROM_ALL "true")
endif()
endif()
################################################################################
# ##############################################################################
# Post-Sources preparation
################################################################################
# ##############################################################################
# Add libraries
target_link_libraries(${LIB_EIVE_MISSION} PUBLIC
${LIB_FSFW_NAME}
${LIB_LWGPS_NAME}
${LIB_OS_NAME}
)
target_link_libraries(${LIB_EIVE_MISSION}
PUBLIC ${LIB_FSFW_NAME} ${LIB_LWGPS_NAME} ${LIB_OS_NAME})
target_link_libraries(${OBSW_NAME} PRIVATE
${LIB_EIVE_MISSION}
)
target_link_libraries(${LIB_DUMMIES} PUBLIC ${LIB_FSFW_NAME} ${LIB_JSON_NAME})
target_link_libraries(${OBSW_NAME} PRIVATE ${LIB_EIVE_MISSION} ${LIB_DUMMIES})
if(TGT_BSP MATCHES "arm/q7s")
target_link_libraries(${LIB_EIVE_MISSION} PUBLIC
${LIB_GPS}
${LIB_ARCSEC}
)
target_link_libraries(${LIB_EIVE_MISSION} PUBLIC ${LIB_GPS} ${LIB_ARCSEC}
${LIB_GOMSPACE_CLIENTS})
endif()
target_link_libraries(${UNITTEST_NAME} PRIVATE
Catch2
${LIB_EIVE_MISSION}
)
target_link_libraries(${UNITTEST_NAME} PRIVATE Catch2 ${LIB_EIVE_MISSION}
rapidcsv ${LIB_DUMMIES})
if(TGT_BSP MATCHES "arm/egse")
target_link_libraries(${OBSW_NAME} PRIVATE
${LIB_ARCSEC}
)
target_link_libraries(${OBSW_NAME} PRIVATE ${LIB_ARCSEC})
endif()
if(ADD_CSP_LIB)
target_link_libraries(${OBSW_NAME} PRIVATE
${LIB_CSP_NAME}
)
endif()
if(EIVE_ADD_ETL_LIB)
target_link_libraries(${LIB_EIVE_MISSION} PUBLIC
${LIB_ETL_TARGET}
)
target_link_libraries(${LIB_EIVE_MISSION} PUBLIC ${LIB_ETL_TARGET})
endif()
if(EIVE_ADD_JSON_LIB)
target_link_libraries(${LIB_EIVE_MISSION} PUBLIC
${LIB_JSON_NAME}
)
target_link_libraries(${LIB_EIVE_MISSION} PUBLIC ${LIB_JSON_NAME})
endif()
target_link_libraries(${LIB_EIVE_MISSION} PUBLIC
${LIB_CXX_FS}
)
target_link_libraries(${LIB_EIVE_MISSION} PUBLIC ${LIB_CXX_FS})
# Add include paths for all sources.
target_include_directories(${LIB_EIVE_MISSION} PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}
${FSFW_CONFIG_PATH}
${CMAKE_CURRENT_BINARY_DIR}
${LIB_ARCSEC_PATH}
)
target_include_directories(
${LIB_EIVE_MISSION} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} ${FSFW_CONFIG_PATH}
${CMAKE_CURRENT_BINARY_DIR} ${LIB_ARCSEC_PATH})
target_include_directories(
${LIB_DUMMIES} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} ${FSFW_CONFIG_PATH}
${CMAKE_CURRENT_BINARY_DIR})
if(TGT_BSP MATCHES "arm/q7s" OR TGT_BSP MATCHES "arm/egse")
target_include_directories(${LIB_EIVE_MISSION} PUBLIC
${ARCSEC_LIB_PATH}
)
target_include_directories(${LIB_EIVE_MISSION} PUBLIC ${ARCSEC_LIB_PATH})
endif()
if(CMAKE_VERBOSE)
message(STATUS "Warning flags: ${WARNING_FLAGS}")
message(STATUS "Warning flags: ${WARNING_FLAGS}")
endif()
if(CMAKE_CROSSCOMPILING)
include (HardwareOsPostConfig)
post_source_hw_os_config()
include(HardwareOsPostConfig)
post_source_hw_os_config()
endif()
if(NOT CMAKE_SIZE)
set(CMAKE_SIZE size)
if(WIN32)
set(FILE_SUFFIX ".exe")
endif()
set(CMAKE_SIZE size)
if(WIN32)
set(FILE_SUFFIX ".exe")
endif()
endif()
if(EIVE_BUILD_WATCHDOG)
set(TARGET_STRING "OBSW Watchdog")
set(TARGET_STRING "OBSW Watchdog")
else()
if(TGT_BSP)
set(TARGET_STRING "Target BSP: ${TGT_BSP}")
else()
set(TARGET_STRING "Target BSP: Hosted")
endif()
if(TGT_BSP)
set(TARGET_STRING "Target BSP: ${TGT_BSP}")
else()
set(TARGET_STRING "Target BSP: Hosted")
endif()
endif()
install(TARGETS ${OBSW_NAME} RUNTIME DESTINATION bin)
string(CONCAT POST_BUILD_COMMENT
"Build directory: ${CMAKE_BINARY_DIR}\n"
"Target OSAL: ${FSFW_OSAL}\n"
"Target Build Type: ${CMAKE_BUILD_TYPE}\n"
"${TARGET_STRING}"
)
string(CONCAT POST_BUILD_COMMENT "Build directory: ${CMAKE_BINARY_DIR}\n"
"Target OSAL: ${FSFW_OSAL}\n"
"Target Build Type: ${CMAKE_BUILD_TYPE}\n" "${TARGET_STRING}")
add_custom_command(
TARGET ${OBSW_NAME}
POST_BUILD
COMMAND ${CMAKE_SIZE} ${OBSW_BIN_NAME}${FILE_SUFFIX}
COMMENT ${POST_BUILD_COMMENT}
)
TARGET ${OBSW_NAME}
POST_BUILD
COMMAND ${CMAKE_SIZE} ${OBSW_BIN_NAME}${FILE_SUFFIX}
COMMENT ${POST_BUILD_COMMENT})
include (BuildType)
include(BuildType)
set_build_type()

270
README.md
View File

@ -70,8 +70,9 @@ prerequisites.
## Building the OBSW and flashing it on the Q7S
1. ARM cross-compiler installed, either as part of [Vivado 2018.2 installation](#vivado) or
as a [separate download](#arm-toolchain)
2. [Q7S sysroot](#sysroot) on local development machine
as a [separate download](#arm-toolchain). The Xiphos SDK also installs a cross-compiler,
but its version is currently too old to compile the OBSW (7.3.0).
2. [Q7S sysroot](#sysroot) on local development machine. It is installed by the Xiphos SDK
3. Recommended: Eclipse or [Vivado 2018.2 SDK](#vivado) for OBSW development
3. [TCF agent](https://wiki.eclipse.org/TCF) running on Q7S
@ -88,15 +89,13 @@ When using Windows, run theses steps in MSYS2.
1. Clone the repository with
```sh
git clone https://egit.irs.uni-stuttgart.de/eive/eive_obsw.git
git clone https://egit.irs.uni-stuttgart.de/eive/eive-obsw.git
```
2. Update all the submodules
```sh
git submodule init
git submodule sync
git submodule update
git submodule update --init
```
3. Ensure that the cross-compiler is working with `arm-linux-gnueabihf-gcc --version` and that
@ -143,7 +142,7 @@ When using Windows, run theses steps in MSYS2.
There are also different values for `-DTGT_BSP` to build for the Raspberry Pi
or the Beagle Bone Black: `arm/raspberrypi` and `arm/beagleboneblack`.
5. Build the software with
```sh
@ -151,6 +150,125 @@ When using Windows, run theses steps in MSYS2.
cmake --build . -j
```
## Preparing and executing an OBSW update
A OBSW update consists of a `xz` compressed file `eive-sw-update.tar.xz`
which contains the following two files:
1. Stripped OBSW binary `eive-obsw-stripped`
2. OBSW version text file with the name `obsw_version.txt`
These files can be created manually:
1. Build the release image inside `cmake-build-release-q7s`
2. Switch into the build directory
3. Run the following command to create the version file
```sh
git describe --tags --always --exclude docker_* > obsw_version.txt
```
You can also use the `create-version-file.sh` helper shell script
located in the `scripts` folder to do this.
4. Set the Q7S user as the file owner for both files
```sh
sudo chown root:root eive-obsw-stripped
sudo chown root:root obsw_version.txt
```
5. Run the following command to create the compressed archive
```sh
tar -cJvf eive-sw-update.tar.xz eive-obsw-stripped obsw_version.txt
```
You can also use the helper script `create-sw-update.sh` inside the build folder
after sourcing the `q7s-env.sh` helper script to perform all steps including
a rebuild.
After creating these files, they need to be transferred onto the Q7S
to either the `/mnt/sd0/bin` or `/mnt/sd1/bin` folder if the OBSW update
is performed from the SD card. It can also be transferred to the `/tmp` folder
to perform the update from a temporary directory, which does not rely on any
of the SD cards being on and mounted. However, all files in the temporary
directory will be deleted if the Linux OS is rebooted for any reason.
After both files are in place (this is checked by the OBSW), the example command
sequence is used by the OBSW to write the OBSW update to the QSPI chip 0 and
slot 0 using SD card 0:
```sh
tar -xJvf eive-update.tar.xz
xsc_mount_copy 0 0
cp eive-obsw-stripped /tmp/mntupdate-xdi-qspi0-nom-rootfs/usr/bin/eive-obsw
cp obsw_update.txt /tmp/mntupdate-xdi-qspi0-nom-rootfs/usr/share/obsw_update.txt
writeprotect 0 0 1
```
Some context information about the used commands:
1. It mounts the target chip and copy combination into the `/tmp` folder
using the `xsc_mount_copy <chip> <copy>` utility. This also unlocks the
writeprotection for the chip. The mount point name inside `/tmp` depends
on which chip and copy is used
- Chip 0 Copy 0: `/tmp/mntupdate-xdi-qspi0-nom-rootfs`
- Chip 0 Copy 1: `/tmp/mntupdate-xdi-qspi0-gold-rootfs`
- Slot 1 Copy 0: `/tmp/mntupdate-xdi-qspi1-nom-rootfs`
- Slot 1 Copy 1: `/tmp/mntupdate-xdi-qspi1-gold-rootfs`
2. Writing the file with a regular `cp <source> <target>` command
3. Enabling the writeprotection using the `writeprotect <chip> <copy> 1` utility.
## Build for the Q7S target root filesystem with `yocto`
The EIVE root filesystem will contain the EIVE OBSW and the Watchdog component.
It is currently generated with `yocto`, but the tool can not compile the primary
OBSW due to toolchain version incompatibility. Therefore, the OBSW components
are currently compiled using the toolchain specified in this README (e.g. installed by Vivado).
However, it is still possible to install the two components using yocto. A few helper files were
provided to make this process easier. The following steps can be used to install the OBSW
components and a version file to the yocto sources for the generation of the complete EIVE root
file system image. The steps here are shown for Ubuntu, you can use the according Windows
helper scripts as well.
1. Copy the `q7s-env.sh` script to the same layer as the `eive-obsw`.
```sh
cp scripts/q7s-env.sh ..
cd ..
./q7s-env.sh
q7s-make-release.sh
```
2. Compile the OBSW components in release mode
```sh
cd cmake-build-release-q7s
cmake --build . -j
```
3. Make sure the [`q7s-yocto`](https://egit.irs.uni-stuttgart.de/eive/q7s-yocto)
repository or the [`q7s-package`](https://egit.irs.uni-stuttgart.de/eive/q7s-package.git)
repository and its `q7s-yocto` submodule were cloned in the same directory layer as
the `eive-obsw`.
4. Run the install script to install the files into `q7s-yocto`.
```sh
install-obsw-yocto.sh
```
5. Navigate into the `q7s-yocto` repo and review the changes. You can then add and push those
changes.
6. You can now rebuild the root filesystem with the updated OBSW using `yocto`. This probably needs
to be done on another machine or in a VM. The [`q7s-yocto`](https://egit.irs.uni-stuttgart.de/eive/q7s-yocto)
repository contains details on how to best do this.
## Building in Xilinx SDK 2018.2
1. Open Xilinx SDK 2018.2
@ -170,7 +288,7 @@ When using Windows, run theses steps in MSYS2.
4. Run build command by double clicking the created target or by right clicking
the project folder and selecting Build Project.
# <a id="host-commands"></a> Useful and Common Commands (Host)
# <a id="host-commands"></a> Useful and Common Commands
## Build generation
@ -199,14 +317,11 @@ cmake -DTGT_BSP=arm/q7s -DCMAKE_BUILD_TYPE=Release ..
cmake --build . -j
```
### Q7S Watchdog
The watchdog will be built along side the primary OBSW binary.
### Hosted
### Hosted OBSW
You can also use the FSFW OSAL `host` to build on Windows or for generic OSes.
Note: Currently this is not supported.
You can use the `clone-submodules-no-privlibs.sh` script to only clone the required (non-private)
submodules required to build the hosted OBSW.
```sh
mkdir cmake-build-debug && cd cmake-build-debug
@ -214,6 +329,21 @@ cmake -DFSFW_OSAL=host -DCMAKE_BUILD_TYPE=Debug ..
cmake --build . -j
```
You can also use the `linux` OSAL:
```sh
mkdir cmake-build-debug && cd cmake-build-debug
cmake -DFSFW_OSAL=linux -DCMAKE_BUILD_TYPE=Debug ..
cmake --build . -j
```
Please note that some additional Linux setup might be necessary.
You can find more information in the [Linux section of the FSFW example](https://egit.irs.uni-stuttgart.de/fsfw/fsfw-example-linux-mcu/src/branch/mueller/master/doc/README-linux.md#raising-message-queue-size-limit)
### Q7S Watchdog
The watchdog will be built along side the primary OBSW binary.
### Unittests
To build the unittests, the corresponding target must be specified in the build command.
@ -326,7 +456,7 @@ If you are comiling for the Raspberry Pi, you have to set the `LINUX_ROOTFS` env
variable instead. You can find a base root filesystem for the Raspberry Pi
[here](https://eive-cloud.irs.uni-stuttgart.de/index.php/apps/files/?dir=/EIVE_IRS/Software/rootfs).
## <a id="vivado"></a> Installing Vivado the the Xilinx development tools
## <a id="vivado"></a> Installing Vivado and the Xilinx development tools
It's also possible to perform debugging with a normal Eclipse installation by installing
the TCF plugin and downloading the cross-compiler as specified in the section below. However,
@ -342,9 +472,9 @@ installed Vivado with the SDK core tools.
<img src="https://egit.irs.uni-stuttgart.de/eive/eive-obsw/raw/branch/develop/doc/img/vivado-edition.png" width="50%"> <br>
<img src="https://egit.irs.uni-stuttgart.de/eive/eive-obsw/raw/branch/mueller/master/doc/img/vivado-hl-design.png" width="50%"> <br>
<img src="https://egit.irs.uni-stuttgart.de/eive/eive-obsw/raw/branch/develop/doc/img/vivado-hl-design.png" width="50%"> <br>
<img src="https://egit.irs.uni-stuttgart.de/eive/eive-obsw/raw/branch/mueller/master/doc/img/xilinx-install.PNG" width="50%"> <br>
<img src="https://egit.irs.uni-stuttgart.de/eive/eive-obsw/raw/branch/develop/doc/img/xilinx-install.PNG" width="50%"> <br>
* For supported OS refer to https://www.xilinx.com/support/documentation/sw_manuals/xilinx2018_2/ug973-vivado-release-notes-install-license.pdf .
Installation was tested on Windows and Ubuntu 21.04.
@ -661,35 +791,7 @@ Thus the replies are received with a larger delay compared to a direct TCP conne
3. Make sure the netmask of the ehternet interface of the workstation matches the netmask of the Q7S
* When IP address is set to 192.168.133.10 and the netmask is 255.255.255.0, an example IP address for the workstation
is 192.168.133.2
4. Run tcf-agent on Q7S
* Tcf-agent is not yet integrated in the rootfs of the Q7S. Therefore build tcf-agent manually
```sh
git clone git://git.eclipse.org/gitroot/tcf/org.eclipse.tcf.agent.git
cd org.eclipse.tcf.agent/agent
make CC=arm-linux-gnueabihf-gcc LD=arm-linux-gnueabihf-ld MACHINE=arm NO_SSL=1 NO_UUID=1
```
* Transfer executable agent from org.eclipse.tcf.agent/agent/obj/GNU/Linux/arm/Debug to /tmp of Q7S
```sh
cd obj/GNU/Linux/arm/Debug
scp agent root@192.168.133.10:/tmp
```
* On Q7S
```sh
cd /tmp
chmod +x agent
```
* Run agent
```sh
./agent
```
4. Make sure th `tcf-agent` is running by checking `systemctl status tcf-agent`
5. In Xilinx SDK 2018.2 right click on project &rarr; Debug As &rarr; Debug Configurations
6. Right click Xilinx C/C++ applicaton (System Debugger) &rarr; New &rarr;
7. Set Debug Type to Linux Application Debug and Connectin to Linux Agent
@ -699,8 +801,8 @@ Thus the replies are received with a larger delay compared to a direct TCP conne
11. Test connection (This ensures the TCF Agent is running on the Q7S)
12. Select Application tab
* Project Name: eive_obsw
* Local File Path: Path to eiveobsw-linux.elf (in `_bin\linux\devel`)
* Remote File Path: `/tmp/eive_obsw.elf`
* Local File Path: Path to OBSW application image with debug symbols (non-stripped)
* Remote File Path: `/tmp/<OBSW NAME>`
# <a id="file-transfer"></a> Transfering Files to the Q7S
@ -726,7 +828,8 @@ From a windows machine files can be copied with putty tools (note: use IPv4 addr
pscp -scp -P 22 eive@192.168.199.227:</directory-to-example-file/>/example-file </windows-machine-path/>
````
More detailed information about the used q7s commands can be found in the Q7S user manual.
A helper script named `q7s-cp.py` can be used together with the `q7s-port.sh`
script to make this process easier.
# <a id="q7s"></a> Q7S OBC
@ -962,6 +1065,29 @@ Get fill count:
xsc_scratch read | wc -c
```
## Custom device names in Linux with the `udev` module
You can assign custom device names using the Linux `udev` system.
This works by specifying a rules file inside the `/etc/udev/rules.d` folder
which creates a SYMLINK if certain device properties are true.
Each rule is a new line inside a rules file.
For example, the rule
```txt
SUBSYSTEM=="tty", ATTRS{interface}=="Dual RS232-HS", ATTRS{bInterfaceNumber}=="01", SYMLINK+="ploc_supv
```
Will create a symlink `/dev/ploc_supv` if a connected USB device has the
same `interface` and `bInterfaceNumber` properties as shown above.
You can list the properties for a given connected device using `udevadm`.
For example, you can do this for a connected example device `/dev/ttyUSB0`
by using
```txt
udevadm info -a /dev/ttyUSB0
```
## Using `system` when debugging
@ -1015,11 +1141,19 @@ cat /proc/tty/driver
## I2C
Getting information about I2C device
````
Getting information about some I2C device
```sh
ls /sys/class/i2c-dev/i2c-0/device/device/driver
````
This shows the memory mapping of /dev/i2c-0
```
This shows the memory mapping of `/dev/i2c-0`.
You can use the `i2cdetect` utility to scan for I2C devices.
For example, to do this for bus 0 (`/dev/i2c-0`), you can use
```sh
i2cdetect -r -y 0
```
## CAN
@ -1106,16 +1240,28 @@ Eclipse indexer.
The [TCF agent](https://wiki.eclipse.org/TCF) can be used to perform remote debugging on the Q7S.
1. Install the TCF agent plugin in Eclipse from
1. Copy the `.cproject` file and the `.project` file inside the `misc/eclipse` folder into the
repo root
```sh
cd eive-obsw
cp misc/eclipse/.cproject .
cp misc/eclipse/.project .
```
2. Open the repo in Eclipse as a folder.
3. Install the TCF agent plugin in Eclipse from
the [releases](https://www.eclipse.org/tcf/downloads.php). Go to
Help &rarr; Install New Software and use the download page, for
example https://download.eclipse.org/tools/tcf/releases/1.7/1.7.0/ to search for the plugin and install it. You can find the newest version [here](https://www.eclipse.org/tcf/downloads.php)
example https://download.eclipse.org/tools/tcf/releases/1.7/1.7.0/ to search for the plugin and
install it. You can find the newest version [here](https://www.eclipse.org/tcf/downloads.php)
2. Go to Window &rarr; Perspective &rarr; Open Perspective and open the **Target Explorer Perspective**.
4. Go to Window &rarr; Perspective &rarr; Open Perspective and open the **Target Explorer Perspective**.
Here, the Q7S should show up if the local port forwarding was set up as explained previously.
Please note that you have to connect to `localhost` and port `1534` with port forwaring set up.
3. A launch configuration was provided, but it might be necessary to adapt it for your own needs.
5. A launch configuration was provided, but it might be necessary to adapt it for your own needs.
Alternatively:
- Create a new **TCF Remote Application** by pressing the cogs button at the top or going to
@ -1204,7 +1350,7 @@ in the same way.
* the formatting is based on the clang-format tools
## Setting up eclipse auto-fromatter with clang-format
## Setting up auto-formatter with clang-format in Xilinx SDK
1. Help &rarr; Install New Software &rarr; Add
2. In location insert the link http://www.cppstyle.com/luna
@ -1214,3 +1360,11 @@ in the same way.
6. Insert the path to the clang-format executable
7. Under C/C++ &rarr; Code Style &rarr; Formatter, change the formatter to CppStyle (clang-format)
8. Code can now be formatted with the clang tool by using the key combination Ctrl + Shift + f
## Setting up auto-fromatter with clang-format in eclipse
1. Help &rarr; Eclipse market place &rarr; Search for "Cppstyle" and install
2. On windows download the clang-formatting tools from https://llvm.org/builds/. On linux clang-format can be installed with the package manager.
3. Navigate to Preferences &rarr; C/C++ &rarr; CppStyle
4. Insert the path to the clang-format executable
5. Under C/C++ &rarr; Code Style &rarr; Formatter, change the formatter to CppStyle (clang-format)
6. Code can now be formatted with the clang tool by using the key combination Ctrl + Shift + f

View File

@ -1,7 +1,3 @@
target_sources(${OBSW_NAME} PUBLIC
InitMission.cpp
main.cpp
ObjectFactory.cpp
)
target_sources(${OBSW_NAME} PUBLIC InitMission.cpp main.cpp ObjectFactory.cpp)
add_subdirectory(boardconfig)

View File

@ -2,7 +2,7 @@
#include <fsfw/objectmanager/ObjectManager.h>
#include <fsfw/objectmanager/ObjectManagerIF.h>
#include <fsfw/returnvalues/HasReturnvaluesIF.h>
#include <fsfw/returnvalues/returnvalue.h>
#include <fsfw/serviceinterface/ServiceInterface.h>
#include <fsfw/tasks/FixedTimeslotTaskIF.h>
#include <fsfw/tasks/PeriodicTaskIF.h>
@ -40,7 +40,7 @@ void initmission::initMission() {
void initmission::initTasks() {
TaskFactory* factory = TaskFactory::instance();
ReturnValue_t result = HasReturnvaluesIF::RETURN_OK;
ReturnValue_t result = returnvalue::OK;
if (factory == nullptr) {
/* Should never happen ! */
return;
@ -55,28 +55,28 @@ void initmission::initTasks() {
PeriodicTaskIF* tmtcDistributor = factory->createPeriodicTask(
"DIST", 40, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.2, missedDeadlineFunc);
result = tmtcDistributor->addComponent(objects::CCSDS_PACKET_DISTRIBUTOR);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != returnvalue::OK) {
sif::error << "Object add component failed" << std::endl;
}
result = tmtcDistributor->addComponent(objects::PUS_PACKET_DISTRIBUTOR);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != returnvalue::OK) {
sif::error << "Object add component failed" << std::endl;
}
result = tmtcDistributor->addComponent(objects::TM_FUNNEL);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != returnvalue::OK) {
sif::error << "Object add component failed" << std::endl;
}
PeriodicTaskIF* tmtcBridgeTask = factory->createPeriodicTask(
"TMTC_BRIDGE", 50, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.2, missedDeadlineFunc);
result = tmtcBridgeTask->addComponent(objects::TMTC_BRIDGE);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != returnvalue::OK) {
sif::error << "Add component TMTC Bridge failed" << std::endl;
}
PeriodicTaskIF* tmtcPollingTask = factory->createPeriodicTask(
"TMTC_POLLING", 80, PeriodicTaskIF::MINIMUM_STACK_SIZE, 2.0, missedDeadlineFunc);
result = tmtcPollingTask->addComponent(objects::TMTC_POLLING_TASK);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != returnvalue::OK) {
sif::error << "Add component TMTC Polling failed" << std::endl;
}
@ -88,7 +88,7 @@ void initmission::initTasks() {
FixedTimeslotTaskIF* pst = factory->createFixedTimeslotTask(
"STAR_TRACKER_PST", 70, PeriodicTaskIF::MINIMUM_STACK_SIZE * 4, 0.5, missedDeadlineFunc);
result = pst::pstUart(pst);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != returnvalue::OK) {
sif::error << "InitMission::initTasks: Creating PST failed!" << std::endl;
}
pstTasks.push_back(pst);
@ -96,7 +96,7 @@ void initmission::initTasks() {
PeriodicTaskIF* strHelperTask = factory->createPeriodicTask(
"STR_HELPER", 20, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.2, missedDeadlineFunc);
result = strHelperTask->addComponent(objects::STR_HELPER);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != returnvalue::OK) {
initmission::printAddObjectError("STR_HELPER", objects::STR_HELPER);
}
pstTasks.push_back(strHelperTask);
@ -125,11 +125,11 @@ void initmission::initTasks() {
void initmission::createPusTasks(TaskFactory& factory,
TaskDeadlineMissedFunction missedDeadlineFunc,
std::vector<PeriodicTaskIF*>& taskVec) {
ReturnValue_t result = HasReturnvaluesIF::RETURN_OK;
ReturnValue_t result = returnvalue::OK;
PeriodicTaskIF* pusVerification = factory.createPeriodicTask(
"PUS_VERIF", 40, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.200, missedDeadlineFunc);
result = pusVerification->addComponent(objects::PUS_SERVICE_1_VERIFICATION);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != returnvalue::OK) {
sif::error << "Object add component failed" << std::endl;
}
taskVec.push_back(pusVerification);
@ -137,11 +137,11 @@ void initmission::createPusTasks(TaskFactory& factory,
PeriodicTaskIF* pusEvents = factory.createPeriodicTask(
"PUS_EVENTS", 60, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.200, missedDeadlineFunc);
result = pusEvents->addComponent(objects::PUS_SERVICE_5_EVENT_REPORTING);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != returnvalue::OK) {
initmission::printAddObjectError("PUS_EVENTS", objects::PUS_SERVICE_5_EVENT_REPORTING);
}
result = pusEvents->addComponent(objects::EVENT_MANAGER);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != returnvalue::OK) {
initmission::printAddObjectError("PUS_MGMT", objects::EVENT_MANAGER);
}
taskVec.push_back(pusEvents);
@ -149,11 +149,11 @@ void initmission::createPusTasks(TaskFactory& factory,
PeriodicTaskIF* pusHighPrio = factory.createPeriodicTask(
"PUS_HIGH_PRIO", 50, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.200, missedDeadlineFunc);
result = pusHighPrio->addComponent(objects::PUS_SERVICE_2_DEVICE_ACCESS);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != returnvalue::OK) {
initmission::printAddObjectError("PUS2", objects::PUS_SERVICE_2_DEVICE_ACCESS);
}
result = pusHighPrio->addComponent(objects::PUS_SERVICE_9_TIME_MGMT);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != returnvalue::OK) {
initmission::printAddObjectError("PUS9", objects::PUS_SERVICE_9_TIME_MGMT);
}
taskVec.push_back(pusHighPrio);
@ -161,19 +161,19 @@ void initmission::createPusTasks(TaskFactory& factory,
PeriodicTaskIF* pusMedPrio = factory.createPeriodicTask(
"PUS_MED_PRIO", 40, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.8, missedDeadlineFunc);
result = pusMedPrio->addComponent(objects::PUS_SERVICE_8_FUNCTION_MGMT);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != returnvalue::OK) {
initmission::printAddObjectError("PUS8", objects::PUS_SERVICE_8_FUNCTION_MGMT);
}
result = pusMedPrio->addComponent(objects::PUS_SERVICE_200_MODE_MGMT);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != returnvalue::OK) {
initmission::printAddObjectError("PUS200", objects::PUS_SERVICE_200_MODE_MGMT);
}
result = pusMedPrio->addComponent(objects::PUS_SERVICE_20_PARAMETERS);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != returnvalue::OK) {
initmission::printAddObjectError("PUS20", objects::PUS_SERVICE_20_PARAMETERS);
}
result = pusMedPrio->addComponent(objects::PUS_SERVICE_3_HOUSEKEEPING);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != returnvalue::OK) {
initmission::printAddObjectError("PUS3", objects::PUS_SERVICE_3_HOUSEKEEPING);
}
taskVec.push_back(pusMedPrio);
@ -181,11 +181,11 @@ void initmission::createPusTasks(TaskFactory& factory,
PeriodicTaskIF* pusLowPrio = factory.createPeriodicTask(
"PUS_LOW_PRIO", 30, PeriodicTaskIF::MINIMUM_STACK_SIZE, 1.6, missedDeadlineFunc);
result = pusLowPrio->addComponent(objects::PUS_SERVICE_17_TEST);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != returnvalue::OK) {
initmission::printAddObjectError("PUS17", objects::PUS_SERVICE_17_TEST);
}
result = pusLowPrio->addComponent(objects::INTERNAL_ERROR_REPORTER);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != returnvalue::OK) {
initmission::printAddObjectError("INT_ERR_RPRT", objects::INTERNAL_ERROR_REPORTER);
}
taskVec.push_back(pusLowPrio);

View File

@ -1,8 +1,8 @@
#include "ObjectFactory.h"
#include <devConf.h>
#include <fsfw_hal/linux/uart/UartComIF.h>
#include <fsfw_hal/linux/uart/UartCookie.h>
#include <fsfw_hal/linux/serial/SerialComIF.h>
#include <fsfw_hal/linux/serial/SerialCookie.h>
#include "OBSWConfig.h"
#include "busConf.h"
@ -39,7 +39,7 @@ void ObjectFactory::produce(void* args) {
UartCookie* starTrackerCookie =
new UartCookie(objects::STAR_TRACKER, egse::STAR_TRACKER_UART, UartModes::NON_CANONICAL,
uart::STAR_TRACKER_BAUD, startracker::MAX_FRAME_SIZE * 2 + 2);
new UartComIF(objects::UART_COM_IF);
newSerialComIF(objects::UART_COM_IF);
starTrackerCookie->setNoFixedSizeReply();
StrHelper* strHelper = new StrHelper(objects::STR_HELPER);
StarTrackerHandler* starTrackerHandler = new StarTrackerHandler(

View File

@ -1,7 +1,3 @@
target_sources(${OBSW_NAME} PRIVATE
print.c
)
target_sources(${OBSW_NAME} PRIVATE print.c)
target_include_directories(${OBSW_NAME} PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}
)
target_include_directories(${OBSW_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})

View File

@ -1,8 +1,4 @@
target_sources(${OBSW_NAME} PUBLIC
InitMission.cpp
main.cpp
ObjectFactory.cpp
)
target_sources(${OBSW_NAME} PUBLIC scheduling.cpp main.cpp ObjectFactory.cpp)
add_subdirectory(fsfwconfig)
add_subdirectory(boardconfig)

View File

@ -14,7 +14,7 @@ RUN set -ex; \
rm -rf build-hosted; \
mkdir build-hosted; \
cd build-hosted; \
cmake -DCMAKE_BUILD_TYPE=Release -DOS_FSFW=linux ..;
cmake -DCMAKE_BUILD_TYPE=Release -DOSAL_FSFW=host ..;
ENTRYPOINT ["cmake", "--build", "build-hosted"]
CMD ["-j"]

View File

@ -1,157 +0,0 @@
#include "InitMission.h"
#include <OBSWConfig.h>
#include <fsfw/objectmanager/ObjectManager.h>
#include <fsfw/objectmanager/ObjectManagerIF.h>
#include <fsfw/returnvalues/HasReturnvaluesIF.h>
#include <fsfw/serviceinterface/ServiceInterfaceStream.h>
#include <fsfw/tasks/FixedTimeslotTaskIF.h>
#include <fsfw/tasks/PeriodicTaskIF.h>
#include <fsfw/tasks/TaskFactory.h>
#include <mission/utility/InitMission.h>
#include <iostream>
#include "ObjectFactory.h"
#ifdef LINUX
ServiceInterfaceStream sif::debug("DEBUG");
ServiceInterfaceStream sif::info("INFO");
ServiceInterfaceStream sif::warning("WARNING");
ServiceInterfaceStream sif::error("ERROR", false, false, true);
#else
ServiceInterfaceStream sif::debug("DEBUG", true);
ServiceInterfaceStream sif::info("INFO", true);
ServiceInterfaceStream sif::warning("WARNING", true);
ServiceInterfaceStream sif::error("ERROR", true, false, true);
#endif
ObjectManagerIF* objectManager = nullptr;
void initmission::initMission() {
sif::info << "Building global objects.." << std::endl;
/* Instantiate global object manager and also create all objects */
ObjectManager::instance()->setObjectFactoryFunction(ObjectFactory::produce, nullptr);
sif::info << "Initializing all objects.." << std::endl;
ObjectManager::instance()->initialize();
/* This function creates and starts all tasks */
initTasks();
}
void initmission::initTasks() {
TaskFactory* factory = TaskFactory::instance();
if (factory == nullptr) {
/* Should never happen ! */
return;
}
#if OBSW_PRINT_MISSED_DEADLINES == 1
void (*missedDeadlineFunc)(void) = TaskFactory::printMissedDeadline;
#else
void (*missedDeadlineFunc)(void) = nullptr;
#endif
/* TMTC Distribution */
PeriodicTaskIF* tmTcDistributor = factory->createPeriodicTask(
"DIST", 40, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.2, missedDeadlineFunc);
ReturnValue_t result = tmTcDistributor->addComponent(objects::CCSDS_PACKET_DISTRIBUTOR);
if (result != HasReturnvaluesIF::RETURN_OK) {
sif::error << "Object add component failed" << std::endl;
}
result = tmTcDistributor->addComponent(objects::PUS_PACKET_DISTRIBUTOR);
if (result != HasReturnvaluesIF::RETURN_OK) {
sif::error << "Object add component failed" << std::endl;
}
result = tmTcDistributor->addComponent(objects::TM_FUNNEL);
if (result != HasReturnvaluesIF::RETURN_OK) {
sif::error << "Object add component failed" << std::endl;
}
/* UDP bridge */
PeriodicTaskIF* tmtcBridgeTask = factory->createPeriodicTask(
"TMTC_UNIX_BRIDGE", 50, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.2, missedDeadlineFunc);
result = tmtcBridgeTask->addComponent(objects::TMTC_BRIDGE);
if (result != HasReturnvaluesIF::RETURN_OK) {
sif::error << "Add component UDP Unix Bridge failed" << std::endl;
}
PeriodicTaskIF* tmtcPollingTask = factory->createPeriodicTask(
"UDP_POLLING", 80, PeriodicTaskIF::MINIMUM_STACK_SIZE, 2.0, missedDeadlineFunc);
result = tmtcPollingTask->addComponent(objects::TMTC_POLLING_TASK);
if (result != HasReturnvaluesIF::RETURN_OK) {
sif::error << "Add component UDP Polling failed" << std::endl;
}
/* PUS Services */
PeriodicTaskIF* pusVerification = factory->createPeriodicTask(
"PUS_VERIF", 40, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.200, missedDeadlineFunc);
result = pusVerification->addComponent(objects::PUS_SERVICE_1_VERIFICATION);
if (result != HasReturnvaluesIF::RETURN_OK) {
sif::error << "Object add component failed" << std::endl;
}
PeriodicTaskIF* pusEvents = factory->createPeriodicTask(
"PUS_EVENTS", 60, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.200, missedDeadlineFunc);
result = pusVerification->addComponent(objects::PUS_SERVICE_5_EVENT_REPORTING);
if (result != HasReturnvaluesIF::RETURN_OK) {
initmission::printAddObjectError("PUS5", objects::PUS_SERVICE_5_EVENT_REPORTING);
}
PeriodicTaskIF* pusHighPrio = factory->createPeriodicTask(
"PUS_HIGH_PRIO", 50, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.200, missedDeadlineFunc);
result = pusHighPrio->addComponent(objects::PUS_SERVICE_2_DEVICE_ACCESS);
if (result != HasReturnvaluesIF::RETURN_OK) {
initmission::printAddObjectError("PUS2", objects::PUS_SERVICE_2_DEVICE_ACCESS);
}
result = pusHighPrio->addComponent(objects::PUS_SERVICE_9_TIME_MGMT);
if (result != HasReturnvaluesIF::RETURN_OK) {
initmission::printAddObjectError("PUS9", objects::PUS_SERVICE_9_TIME_MGMT);
}
PeriodicTaskIF* pusMedPrio = factory->createPeriodicTask(
"PUS_MED_PRIO", 40, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.8, missedDeadlineFunc);
result = pusMedPrio->addComponent(objects::PUS_SERVICE_8_FUNCTION_MGMT);
if (result != HasReturnvaluesIF::RETURN_OK) {
initmission::printAddObjectError("PUS8", objects::PUS_SERVICE_8_FUNCTION_MGMT);
}
result = pusMedPrio->addComponent(objects::PUS_SERVICE_200_MODE_MGMT);
if (result != HasReturnvaluesIF::RETURN_OK) {
initmission::printAddObjectError("PUS200", objects::PUS_SERVICE_200_MODE_MGMT);
}
result = pusMedPrio->addComponent(objects::PUS_SERVICE_20_PARAMETERS);
if (result != HasReturnvaluesIF::RETURN_OK) {
initmission::printAddObjectError("PUS20", objects::PUS_SERVICE_20_PARAMETERS);
}
PeriodicTaskIF* pusLowPrio = factory->createPeriodicTask(
"PUS_LOW_PRIO", 30, PeriodicTaskIF::MINIMUM_STACK_SIZE, 1.6, missedDeadlineFunc);
result = pusLowPrio->addComponent(objects::PUS_SERVICE_17_TEST);
if (result != HasReturnvaluesIF::RETURN_OK) {
initmission::printAddObjectError("PUS17", objects::PUS_SERVICE_17_TEST);
}
PeriodicTaskIF* testTask = factory->createPeriodicTask(
"TEST_TASK", 40, PeriodicTaskIF::MINIMUM_STACK_SIZE, 2.0, missedDeadlineFunc);
#if OBSW_ADD_TEST_CODE == 1
result = testTask->addComponent(objects::TEST_TASK);
if (result != HasReturnvaluesIF::RETURN_OK) {
initmission::printAddObjectError("TEST_TASK", objects::TEST_TASK);
}
#endif /* OBSW_ADD_TEST_CODE == 1 */
sif::info << "Starting tasks.." << std::endl;
tmTcDistributor->startTask();
tmtcBridgeTask->startTask();
tmtcPollingTask->startTask();
pusVerification->startTask();
pusEvents->startTask();
pusHighPrio->startTask();
pusMedPrio->startTask();
pusLowPrio->startTask();
#if OBSW_ADD_TEST_CODE == 1
testTask->startTask();
#endif /* OBSW_ADD_TEST_CODE == 1 */
sif::info << "Tasks started.." << std::endl;
}

View File

@ -1,9 +0,0 @@
#ifndef BSP_LINUX_INITMISSION_H_
#define BSP_LINUX_INITMISSION_H_
namespace initmission {
void initMission();
void initTasks();
}; // namespace initmission
#endif /* BSP_LINUX_INITMISSION_H_ */

View File

@ -24,6 +24,7 @@
#define OBSW_ADD_GPS_0 0
#define OBSW_ADD_GPS_1 0
#define OBSW_ADD_RW 0
#define OBSW_DEBUG_TMP1075 0
#define OBSW_ADD_BPX_BATTERY_HANDLER 0
#define OBSW_ADD_RTD_DEVICES 0
#define OBSW_ADD_PL_PCDU 0
@ -100,6 +101,10 @@
/*******************************************************************/
/** CMake Defines */
/*******************************************************************/
#define OBSW_ADD_TMTC_UDP_SERVER 1
#define OBSW_ADD_TMTC_TCP_SERVER 1
#cmakedefine EIVE_BUILD_GPSD_GPS_HANDLER
#cmakedefine LIBGPS_VERSION_MAJOR @LIBGPS_VERSION_MAJOR@

View File

@ -1,20 +1,25 @@
#include "ObjectFactory.h"
#include <fsfw/power/DummyPowerSwitcher.h>
#include <fsfw/tmtcservices/CommandingServiceBase.h>
#include <fsfw/tmtcservices/PusServiceBase.h>
#include <mission/controller/ThermalController.h>
#include <mission/core/GenericFactory.h>
#include <mission/utility/TmFunnel.h>
#include <mission/tmtc/TmFunnelHandler.h>
#include <objects/systemObjectList.h>
#include <tmtc/apid.h>
#include <tmtc/pusIds.h>
#include "OBSWConfig.h"
#include "devConf.h"
#include "eive/definitions.h"
#include "fsfw/platform.h"
#include "fsfw_tests/integration/task/TestTask.h"
#include "tmtc/pusIds.h"
#if OBSW_USE_TMTC_TCP_BRIDGE == 0
#if OBSW_ADD_TMTC_UDP_SERVER == 1
#include "fsfw/osal/common/UdpTcPollingTask.h"
#include "fsfw/osal/common/UdpTmTcBridge.h"
#else
#endif
#if OBSW_ADD_TMTC_TCP_SERVER == 1
#include "fsfw/osal/common/TcpTmTcBridge.h"
#include "fsfw/osal/common/TcpTmTcServer.h"
#endif
@ -25,24 +30,86 @@
#include <test/testtasks/TestTask.h>
#endif
#include <dummies/AcuDummy.h>
#include <dummies/BpxDummy.h>
#include <dummies/ComCookieDummy.h>
#include <dummies/ComIFDummy.h>
#include <dummies/CoreControllerDummy.h>
#include <dummies/GyroAdisDummy.h>
#include <dummies/GyroL3GD20Dummy.h>
#include <dummies/ImtqDummy.h>
#include <dummies/MgmLIS3MDLDummy.h>
#include <dummies/P60DockDummy.h>
#include <dummies/PduDummy.h>
#include <dummies/PlPcduDummy.h>
#include <dummies/RwDummy.h>
#include <dummies/StarTrackerDummy.h>
#include <dummies/SusDummy.h>
#include <dummies/SyrlinksDummy.h>
#include <dummies/TemperatureSensorsDummy.h>
#include "dummies/helpers.h"
#include "mission/utility/GlobalConfigHandler.h"
#ifdef PLATFORM_UNIX
#include <fsfw_hal/linux/serial/SerialComIF.h>
#include <fsfw_hal/linux/serial/SerialCookie.h>
#include "devices/gpioIds.h"
#include "fsfw_hal/linux/gpio/Gpio.h"
#include "linux/devices/ploc/PlocMPSoCHandler.h"
#include "linux/devices/ploc/PlocMPSoCHelper.h"
#include "linux/devices/ploc/PlocSupervisorHandler.h"
#include "linux/devices/ploc/PlocSupvUartMan.h"
#include "test/gpio/DummyGpioIF.h"
#endif
void Factory::setStaticFrameworkObjectIds() {
PusServiceBase::packetSource = objects::PUS_PACKET_DISTRIBUTOR;
PusServiceBase::packetDestination = objects::TM_FUNNEL;
PusServiceBase::PUS_DISTRIBUTOR = objects::PUS_PACKET_DISTRIBUTOR;
PusServiceBase::PACKET_DESTINATION = objects::PUS_TM_FUNNEL;
CommandingServiceBase::defaultPacketSource = objects::PUS_PACKET_DISTRIBUTOR;
CommandingServiceBase::defaultPacketDestination = objects::TM_FUNNEL;
CommandingServiceBase::defaultPacketDestination = objects::PUS_TM_FUNNEL;
TmFunnel::downlinkDestination = objects::TMTC_BRIDGE;
// No storage object for now.
TmFunnel::storageDestination = objects::NO_OBJECT;
VerificationReporter::messageReceiver = objects::PUS_SERVICE_1_VERIFICATION;
TmPacketBase::timeStamperId = objects::TIME_STAMPER;
VerificationReporter::DEFAULT_RECEIVER = objects::PUS_SERVICE_1_VERIFICATION;
}
void ObjectFactory::produce(void* args) {
Factory::setStaticFrameworkObjectIds();
ObjectFactory::produceGenericObjects();
PusTmFunnel* pusFunnel;
CfdpTmFunnel* cfdpFunnel;
ObjectFactory::produceGenericObjects(nullptr, &pusFunnel, &cfdpFunnel);
DummyGpioIF* dummyGpioIF = new DummyGpioIF();
auto* dummySwitcher = new DummyPowerSwitcher(objects::PCDU_HANDLER, 18, 0);
static_cast<void>(dummyGpioIF);
#ifdef PLATFORM_UNIX
new SerialComIF(objects::UART_COM_IF);
#if OBSW_ADD_PLOC_MPSOC == 1
std::string mpscoDev = "";
auto mpsocCookie = new UartCookie(objects::PLOC_MPSOC_HANDLER, mpscoDev, uart::PLOC_MPSOC_BAUD,
mpsoc::MAX_REPLY_SIZE, UartModes::NON_CANONICAL);
mpsocCookie->setNoFixedSizeReply();
auto plocMpsocHelper = new PlocMPSoCHelper(objects::PLOC_MPSOC_HELPER);
new PlocMPSoCHandler(objects::PLOC_MPSOC_HANDLER, objects::UART_COM_IF, mpsocCookie,
plocMpsocHelper, Gpio(gpioIds::ENABLE_MPSOC_UART, dummyGpioIF),
objects::PLOC_SUPERVISOR_HANDLER);
#endif /* OBSW_ADD_PLOC_MPSOC == 1 */
#if OBSW_ADD_PLOC_SUPERVISOR == 1
std::string plocSupvString = "/dev/ploc_supv";
auto supervisorCookie =
new SerialCookie(objects::PLOC_SUPERVISOR_HANDLER, plocSupvString, uart::PLOC_SUPV_BAUD,
supv::MAX_PACKET_SIZE * 20, UartModes::NON_CANONICAL);
supervisorCookie->setNoFixedSizeReply();
auto supvHelper = new PlocSupvUartManager(objects::PLOC_SUPERVISOR_HELPER);
new PlocSupervisorHandler(objects::PLOC_SUPERVISOR_HANDLER, supervisorCookie,
Gpio(gpioIds::ENABLE_SUPV_UART, dummyGpioIF), pcdu::PDU1_CH6_PLOC_12V,
*supvHelper);
#endif /* OBSW_ADD_PLOC_SUPERVISOR == 1 */
#endif
dummy::DummyCfg cfg;
dummy::createDummies(cfg, *dummySwitcher);
new ThermalController(objects::THERMAL_CONTROLLER);
new TestTask(objects::TEST_TASK);
}

View File

@ -1,10 +1,3 @@
target_sources(${OBSW_NAME} PRIVATE
print.c
)
target_include_directories(${OBSW_NAME} PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}
)
target_sources(${OBSW_NAME} PRIVATE print.c)
target_include_directories(${OBSW_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})

View File

@ -129,9 +129,7 @@ ArduinoComIF::~ArduinoComIF() {
CloseHandle(hCom);
#endif
}
ReturnValue_t ArduinoComIF::initializeInterface(CookieIF *cookie) {
return HasReturnvaluesIF::RETURN_OK;
}
ReturnValue_t ArduinoComIF::initializeInterface(CookieIF *cookie) { return returnvalue::OK; }
ReturnValue_t ArduinoComIF::sendMessage(CookieIF *cookie, const uint8_t *data, size_t len) {
ArduinoCookie *arduinoCookie = dynamic_cast<ArduinoCookie *>(cookie);
@ -142,10 +140,10 @@ ReturnValue_t ArduinoComIF::sendMessage(CookieIF *cookie, const uint8_t *data, s
return sendMessage(arduinoCookie->command, arduinoCookie->address, data, len);
}
ReturnValue_t ArduinoComIF::getSendSuccess(CookieIF *cookie) { return RETURN_OK; }
ReturnValue_t ArduinoComIF::getSendSuccess(CookieIF *cookie) { return returnvalue::OK; }
ReturnValue_t ArduinoComIF::requestReceiveMessage(CookieIF *cookie, size_t requestLen) {
return RETURN_OK;
return returnvalue::OK;
}
ReturnValue_t ArduinoComIF::readReceivedMessage(CookieIF *cookie, uint8_t **buffer, size_t *size) {
@ -158,7 +156,7 @@ ReturnValue_t ArduinoComIF::readReceivedMessage(CookieIF *cookie, uint8_t **buff
*buffer = arduinoCookie->replyBuffer.data();
*size = arduinoCookie->receivedDataLen;
return HasReturnvaluesIF::RETURN_OK;
return returnvalue::OK;
}
ReturnValue_t ArduinoComIF::sendMessage(uint8_t command, uint8_t address, const uint8_t *data,
@ -178,14 +176,14 @@ ReturnValue_t ArduinoComIF::sendMessage(uint8_t command, uint8_t address, const
ReturnValue_t result =
DleEncoder::encode(&command, 1, currentPosition, remainingLen, &encodedLen, false);
if (result != RETURN_OK) {
if (result != returnvalue::OK) {
return result;
}
currentPosition += encodedLen;
remainingLen -= encodedLen; // DleEncoder will never return encodedLen > remainingLen
result = DleEncoder::encode(&address, 1, currentPosition, remainingLen, &encodedLen, false);
if (result != RETURN_OK) {
if (result != returnvalue::OK) {
return result;
}
currentPosition += encodedLen;
@ -199,7 +197,7 @@ ReturnValue_t ArduinoComIF::sendMessage(uint8_t command, uint8_t address, const
result =
DleEncoder::encode(temporaryBuffer, 2, currentPosition, remainingLen, &encodedLen, false);
if (result != RETURN_OK) {
if (result != returnvalue::OK) {
return result;
}
currentPosition += encodedLen;
@ -207,7 +205,7 @@ ReturnValue_t ArduinoComIF::sendMessage(uint8_t command, uint8_t address, const
// encoding the actual data
result = DleEncoder::encode(data, dataLen, currentPosition, remainingLen, &encodedLen, false);
if (result != RETURN_OK) {
if (result != returnvalue::OK) {
return result;
}
currentPosition += encodedLen;
@ -224,7 +222,7 @@ ReturnValue_t ArduinoComIF::sendMessage(uint8_t command, uint8_t address, const
result =
DleEncoder::encode(temporaryBuffer, 2, currentPosition, remainingLen, &encodedLen, false);
if (result != RETURN_OK) {
if (result != returnvalue::OK) {
return result;
}
currentPosition += encodedLen;
@ -241,16 +239,16 @@ ReturnValue_t ArduinoComIF::sendMessage(uint8_t command, uint8_t address, const
ssize_t writtenlen = ::write(serialPort, sendBuffer, encodedLen);
if (writtenlen < 0) {
// we could try to find out what happened...
return RETURN_FAILED;
return returnvalue::FAILED;
}
if (writtenlen != encodedLen) {
// the OS failed us, we do not try to block until everything is written, as
// we can not block the whole system here
return RETURN_FAILED;
return returnvalue::FAILED;
}
return RETURN_OK;
return returnvalue::OK;
#elif WIN32
return HasReturnvaluesIF::RETURN_OK;
return returnvalue::OK;
#endif
}
@ -297,7 +295,7 @@ void ArduinoComIF::handleSerialPortRx() {
packet, sizeof(packet), &packetLen);
size_t toDelete = firstSTXinRawData;
if (result == HasReturnvaluesIF::RETURN_OK) {
if (result == returnvalue::OK) {
handlePacket(packet, packetLen);
// after handling the packet, we can delete it from the raw stream,

View File

@ -5,7 +5,7 @@
#include <fsfw/container/SimpleRingBuffer.h>
#include <fsfw/devicehandlers/DeviceCommunicationIF.h>
#include <fsfw/objectmanager/SystemObject.h>
#include <fsfw/returnvalues/HasReturnvaluesIF.h>
#include <fsfw/returnvalues/returnvalue.h>
#include <cstdint>
#include <map>

View File

@ -1,8 +1 @@
target_sources(${TARGET_NAME} PUBLIC
ArduinoComIF.cpp
ArduinoCookie.cpp
)
target_sources(${OBSW_NAME} PUBLIC ArduinoComIF.cpp ArduinoCookie.cpp)

View File

@ -1,27 +1,17 @@
target_sources(${OBSW_NAME} PRIVATE
ipc/MissionMessageTypes.cpp
)
target_sources(${OBSW_NAME} PRIVATE ipc/MissionMessageTypes.cpp)
target_include_directories(${OBSW_NAME} PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}
)
target_include_directories(${OBSW_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
# If a special translation file for object IDs exists, compile it.
if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/objects/translateObjects.cpp")
target_sources(${OBSW_NAME} PRIVATE
objects/translateObjects.cpp
)
target_sources(${UNITTEST_NAME} PRIVATE
objects/translateObjects.cpp
)
target_sources(${OBSW_NAME} PRIVATE objects/translateObjects.cpp)
target_sources(${UNITTEST_NAME} PRIVATE objects/translateObjects.cpp)
endif()
# If a special translation file for events exists, compile it.
if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/objects/translateObjects.cpp")
target_sources(${OBSW_NAME} PRIVATE
events/translateEvents.cpp
)
target_sources(${UNITTEST_NAME} PRIVATE
events/translateEvents.cpp
)
target_sources(${OBSW_NAME} PRIVATE events/translateEvents.cpp)
target_sources(${UNITTEST_NAME} PRIVATE events/translateEvents.cpp)
endif()
add_subdirectory(pollingsequence)

View File

@ -7,41 +7,41 @@
//! Used to determine whether C++ ostreams are used which can increase
//! the binary size significantly. If this is disabled,
//! the C stdio functions can be used alternatively
#define FSFW_CPP_OSTREAM_ENABLED 1
#define FSFW_CPP_OSTREAM_ENABLED 1
//! More FSFW related printouts depending on level. Useful for development.
#define FSFW_VERBOSE_LEVEL 1
#define FSFW_VERBOSE_LEVEL 1
//! Can be used to completely disable printouts, even the C stdio ones.
#if FSFW_CPP_OSTREAM_ENABLED == 0 && FSFW_VERBOSE_LEVEL == 0
#define FSFW_DISABLE_PRINTOUT 0
#define FSFW_DISABLE_PRINTOUT 0
#endif
#define FSFW_USE_PUS_C_TELEMETRY 1
#define FSFW_USE_PUS_C_TELEMETRY 1
#define FSFW_USE_PUS_C_TELECOMMANDS 1
//! Can be used to disable the ANSI color sequences for C stdio.
#define FSFW_COLORED_OUTPUT 1
#define FSFW_COLORED_OUTPUT 1
//! If FSFW_OBJ_EVENT_TRANSLATION is set to one,
//! additional output which requires the translation files translateObjects
//! and translateEvents (and their compiled source files)
#define FSFW_OBJ_EVENT_TRANSLATION 1
#define FSFW_OBJ_EVENT_TRANSLATION 1
#if FSFW_OBJ_EVENT_TRANSLATION == 1
//! Specify whether info events are printed too.
#define FSFW_DEBUG_INFO 1
#include "objects/translateObjects.h"
#define FSFW_DEBUG_INFO 1
#include "events/translateEvents.h"
#include "objects/translateObjects.h"
#else
#endif
//! When using the newlib nano library, C99 support for stdio facilities
//! will not be provided. This define should be set to 1 if this is the case.
#define FSFW_NO_C99_IO 1
#define FSFW_NO_C99_IO 1
//! Specify whether a special mode store is used for Subsystem components.
#define FSFW_USE_MODESTORE 0
#define FSFW_USE_MODESTORE 0
//! Defines if the real time scheduler for linux should be used.
//! If set to 0, this will also disable priority settings for linux
@ -58,7 +58,7 @@ static constexpr uint8_t FSFW_MISSION_TIMESTAMP_SIZE = 7;
//! Configure the allocated pool sizes for the event manager.
static constexpr size_t FSFW_EVENTMGMR_MATCHTREE_NODES = 240;
static constexpr size_t FSFW_EVENTMGMT_EVENTIDMATCHERS = 120;
static constexpr size_t FSFW_EVENTMGMR_RANGEMATCHERS = 120;
static constexpr size_t FSFW_EVENTMGMR_RANGEMATCHERS = 120;
//! Defines the FIFO depth of each commanding service base which
//! also determines how many commands a CSB service can handle in one cycle
@ -70,6 +70,6 @@ static constexpr size_t FSFW_PRINT_BUFFER_SIZE = 124;
static constexpr size_t FSFW_MAX_TM_PACKET_SIZE = 2048;
}
} // namespace fsfwconfig
#endif /* CONFIG_FSFWCONFIG_H_ */

View File

@ -16,7 +16,7 @@
debugging. */
#define OBSW_VEBOSE_LEVEL 1
#define OBSW_USE_CCSDS_IP_CORE 0
#define OBSW_ADD_CCSDS_IP_CORES 0
// Set to 1 if all telemetry should be sent to the PTME IP Core
#define OBSW_TM_TO_PTME 0
// Set to 1 if telecommands are received via the PDEC IP Core

View File

@ -1,10 +1,10 @@
#ifndef CONFIG_EVENTS_SUBSYSTEMIDRANGES_H_
#define CONFIG_EVENTS_SUBSYSTEMIDRANGES_H_
#include <common/config/commonSubsystemIds.h>
#include <cstdint>
#include "eive/eventSubsystemIds.h"
/**
* These IDs are part of the ID for an event thrown by a subsystem.
* Numbers 0-80 are reserved for FSFW Subsystem IDs (framework/events/)

View File

@ -1,7 +1,7 @@
/**
* @brief Auto-generated event translation file. Contains 83 translations.
* @brief Auto-generated event translation file. Contains 239 translations.
* @details
* Generated on: 2021-05-17 19:49:55
* Generated on: 2022-11-16 15:25:08
*/
#include "translateEvents.h"
@ -34,6 +34,7 @@ const char *DEVICE_UNREQUESTED_REPLY_STRING = "DEVICE_UNREQUESTED_REPLY";
const char *INVALID_DEVICE_COMMAND_STRING = "INVALID_DEVICE_COMMAND";
const char *MONITORING_LIMIT_EXCEEDED_STRING = "MONITORING_LIMIT_EXCEEDED";
const char *MONITORING_AMBIGUOUS_STRING = "MONITORING_AMBIGUOUS";
const char *DEVICE_WANTS_HARD_REBOOT_STRING = "DEVICE_WANTS_HARD_REBOOT";
const char *FUSE_CURRENT_HIGH_STRING = "FUSE_CURRENT_HIGH";
const char *FUSE_WENT_OFF_STRING = "FUSE_WENT_OFF";
const char *POWER_ABOVE_HIGH_LIMIT_STRING = "POWER_ABOVE_HIGH_LIMIT";
@ -59,7 +60,6 @@ const char *MONITOR_CHANGED_STATE_STRING = "MONITOR_CHANGED_STATE";
const char *VALUE_BELOW_LOW_LIMIT_STRING = "VALUE_BELOW_LOW_LIMIT";
const char *VALUE_ABOVE_HIGH_LIMIT_STRING = "VALUE_ABOVE_HIGH_LIMIT";
const char *VALUE_OUT_OF_RANGE_STRING = "VALUE_OUT_OF_RANGE";
const char *SWITCHING_TM_FAILED_STRING = "SWITCHING_TM_FAILED";
const char *CHANGING_MODE_STRING = "CHANGING_MODE";
const char *MODE_INFO_STRING = "MODE_INFO";
const char *FALLBACK_FAILED_STRING = "FALLBACK_FAILED";
@ -75,6 +75,7 @@ const char *OVERWRITING_HEALTH_STRING = "OVERWRITING_HEALTH";
const char *TRYING_RECOVERY_STRING = "TRYING_RECOVERY";
const char *RECOVERY_STEP_STRING = "RECOVERY_STEP";
const char *RECOVERY_DONE_STRING = "RECOVERY_DONE";
const char *HANDLE_PACKET_FAILED_STRING = "HANDLE_PACKET_FAILED";
const char *RF_AVAILABLE_STRING = "RF_AVAILABLE";
const char *RF_LOST_STRING = "RF_LOST";
const char *BIT_LOCK_STRING = "BIT_LOCK";
@ -82,15 +83,166 @@ const char *BIT_LOCK_LOST_STRING = "BIT_LOCK_LOST";
const char *FRAME_PROCESSING_FAILED_STRING = "FRAME_PROCESSING_FAILED";
const char *CLOCK_SET_STRING = "CLOCK_SET";
const char *CLOCK_SET_FAILURE_STRING = "CLOCK_SET_FAILURE";
const char *TC_DELETION_FAILED_STRING = "TC_DELETION_FAILED";
const char *TEST_STRING = "TEST";
const char *CHANGE_OF_SETUP_PARAMETER_STRING = "CHANGE_OF_SETUP_PARAMETER";
const char *STORE_ERROR_STRING = "STORE_ERROR";
const char *MSG_QUEUE_ERROR_STRING = "MSG_QUEUE_ERROR";
const char *SERIALIZATION_ERROR_STRING = "SERIALIZATION_ERROR";
const char *SWITCH_CMD_SENT_STRING = "SWITCH_CMD_SENT";
const char *SWITCH_HAS_CHANGED_STRING = "SWITCH_HAS_CHANGED";
const char *SWITCHING_Q7S_DENIED_STRING = "SWITCHING_Q7S_DENIED";
const char *FDIR_REACTION_IGNORED_STRING = "FDIR_REACTION_IGNORED";
const char *GPIO_PULL_HIGH_FAILED_STRING = "GPIO_PULL_HIGH_FAILED";
const char *GPIO_PULL_LOW_FAILED_STRING = "GPIO_PULL_LOW_FAILED";
const char *HEATER_WENT_ON_STRING = "HEATER_WENT_ON";
const char *HEATER_WENT_OFF_STRING = "HEATER_WENT_OFF";
const char *SWITCH_ALREADY_ON_STRING = "SWITCH_ALREADY_ON";
const char *SWITCH_ALREADY_OFF_STRING = "SWITCH_ALREADY_OFF";
const char *MAIN_SWITCH_TIMEOUT_STRING = "MAIN_SWITCH_TIMEOUT";
const char *FAULTY_HEATER_WAS_ON_STRING = "FAULTY_HEATER_WAS_ON";
const char *BURN_PHASE_START_STRING = "BURN_PHASE_START";
const char *BURN_PHASE_DONE_STRING = "BURN_PHASE_DONE";
const char *MAIN_SWITCH_ON_TIMEOUT_STRING = "MAIN_SWITCH_ON_TIMEOUT";
const char *MAIN_SWITCH_OFF_TIMEOUT_STRING = "MAIN_SWITCH_OFF_TIMEOUT";
const char *DEPL_SA1_GPIO_SWTICH_ON_FAILED_STRING = "DEPL_SA1_GPIO_SWTICH_ON_FAILED";
const char *DEPL_SA2_GPIO_SWTICH_ON_FAILED_STRING = "DEPL_SA2_GPIO_SWTICH_ON_FAILED";
const char *DEPL_SA1_GPIO_SWTICH_OFF_FAILED_STRING = "DEPL_SA1_GPIO_SWTICH_OFF_FAILED";
const char *DEPL_SA2_GPIO_SWTICH_OFF_FAILED_STRING = "DEPL_SA2_GPIO_SWTICH_OFF_FAILED";
const char *AUTONOMOUS_DEPLOYMENT_COMPLETED_STRING = "AUTONOMOUS_DEPLOYMENT_COMPLETED";
const char *MEMORY_READ_RPT_CRC_FAILURE_STRING = "MEMORY_READ_RPT_CRC_FAILURE";
const char *ACK_FAILURE_STRING = "ACK_FAILURE";
const char *EXE_FAILURE_STRING = "EXE_FAILURE";
const char *CRC_FAILURE_EVENT_STRING = "CRC_FAILURE_EVENT";
const char *MPSOC_HANDLER_CRC_FAILURE_STRING = "MPSOC_HANDLER_CRC_FAILURE";
const char *MPSOC_HANDLER_SEQUENCE_COUNT_MISMATCH_STRING = "MPSOC_HANDLER_SEQUENCE_COUNT_MISMATCH";
const char *MPSOC_SHUTDOWN_FAILED_STRING = "MPSOC_SHUTDOWN_FAILED";
const char *SELF_TEST_I2C_FAILURE_STRING = "SELF_TEST_I2C_FAILURE";
const char *SELF_TEST_SPI_FAILURE_STRING = "SELF_TEST_SPI_FAILURE";
const char *SELF_TEST_ADC_FAILURE_STRING = "SELF_TEST_ADC_FAILURE";
const char *SELF_TEST_PWM_FAILURE_STRING = "SELF_TEST_PWM_FAILURE";
const char *SELF_TEST_TC_FAILURE_STRING = "SELF_TEST_TC_FAILURE";
const char *SELF_TEST_MTM_RANGE_FAILURE_STRING = "SELF_TEST_MTM_RANGE_FAILURE";
const char *SELF_TEST_COIL_CURRENT_FAILURE_STRING = "SELF_TEST_COIL_CURRENT_FAILURE";
const char *INVALID_ERROR_BYTE_STRING = "INVALID_ERROR_BYTE";
const char *ERROR_STATE_STRING = "ERROR_STATE";
const char *RESET_OCCURED_STRING = "RESET_OCCURED";
const char *BOOTING_FIRMWARE_FAILED_STRING = "BOOTING_FIRMWARE_FAILED";
const char *BOOTING_BOOTLOADER_FAILED_STRING = "BOOTING_BOOTLOADER_FAILED";
const char *SUPV_MEMORY_READ_RPT_CRC_FAILURE_STRING = "SUPV_MEMORY_READ_RPT_CRC_FAILURE";
const char *SUPV_UNKNOWN_TM_STRING = "SUPV_UNKNOWN_TM";
const char *SUPV_UNINIMPLEMENTED_TM_STRING = "SUPV_UNINIMPLEMENTED_TM";
const char *SUPV_ACK_FAILURE_STRING = "SUPV_ACK_FAILURE";
const char *SUPV_EXE_FAILURE_STRING = "SUPV_EXE_FAILURE";
const char *SUPV_CRC_FAILURE_EVENT_STRING = "SUPV_CRC_FAILURE_EVENT";
const char *SUPV_HELPER_EXECUTING_STRING = "SUPV_HELPER_EXECUTING";
const char *SUPV_MPSOC_SHUWDOWN_BUILD_FAILED_STRING = "SUPV_MPSOC_SHUWDOWN_BUILD_FAILED";
const char *SANITIZATION_FAILED_STRING = "SANITIZATION_FAILED";
const char *MOUNTED_SD_CARD_STRING = "MOUNTED_SD_CARD";
const char *SEND_MRAM_DUMP_FAILED_STRING = "SEND_MRAM_DUMP_FAILED";
const char *MRAM_DUMP_FAILED_STRING = "MRAM_DUMP_FAILED";
const char *MRAM_DUMP_FINISHED_STRING = "MRAM_DUMP_FINISHED";
const char *INVALID_TC_FRAME_STRING = "INVALID_TC_FRAME";
const char *INVALID_FAR_STRING = "INVALID_FAR";
const char *CARRIER_LOCK_STRING = "CARRIER_LOCK";
const char *BIT_LOCK_PDEC_STRING = "BIT_LOCK_PDEC";
const char *LOST_CARRIER_LOCK_PDEC_STRING = "LOST_CARRIER_LOCK_PDEC";
const char *LOST_BIT_LOCK_PDEC_STRING = "LOST_BIT_LOCK_PDEC";
const char *POLL_ERROR_PDEC_STRING = "POLL_ERROR_PDEC";
const char *IMAGE_UPLOAD_FAILED_STRING = "IMAGE_UPLOAD_FAILED";
const char *IMAGE_DOWNLOAD_FAILED_STRING = "IMAGE_DOWNLOAD_FAILED";
const char *IMAGE_UPLOAD_SUCCESSFUL_STRING = "IMAGE_UPLOAD_SUCCESSFUL";
const char *IMAGE_DOWNLOAD_SUCCESSFUL_STRING = "IMAGE_DOWNLOAD_SUCCESSFUL";
const char *FLASH_WRITE_SUCCESSFUL_STRING = "FLASH_WRITE_SUCCESSFUL";
const char *FLASH_READ_SUCCESSFUL_STRING = "FLASH_READ_SUCCESSFUL";
const char *FLASH_READ_FAILED_STRING = "FLASH_READ_FAILED";
const char *FIRMWARE_UPDATE_SUCCESSFUL_STRING = "FIRMWARE_UPDATE_SUCCESSFUL";
const char *FIRMWARE_UPDATE_FAILED_STRING = "FIRMWARE_UPDATE_FAILED";
const char *STR_HELPER_READING_REPLY_FAILED_STRING = "STR_HELPER_READING_REPLY_FAILED";
const char *STR_HELPER_COM_ERROR_STRING = "STR_HELPER_COM_ERROR";
const char *STR_HELPER_NO_REPLY_STRING = "STR_HELPER_NO_REPLY";
const char *STR_HELPER_DEC_ERROR_STRING = "STR_HELPER_DEC_ERROR";
const char *POSITION_MISMATCH_STRING = "POSITION_MISMATCH";
const char *STR_HELPER_FILE_NOT_EXISTS_STRING = "STR_HELPER_FILE_NOT_EXISTS";
const char *STR_HELPER_SENDING_PACKET_FAILED_STRING = "STR_HELPER_SENDING_PACKET_FAILED";
const char *STR_HELPER_REQUESTING_MSG_FAILED_STRING = "STR_HELPER_REQUESTING_MSG_FAILED";
const char *MPSOC_FLASH_WRITE_FAILED_STRING = "MPSOC_FLASH_WRITE_FAILED";
const char *MPSOC_FLASH_WRITE_SUCCESSFUL_STRING = "MPSOC_FLASH_WRITE_SUCCESSFUL";
const char *MPSOC_SENDING_COMMAND_FAILED_STRING = "MPSOC_SENDING_COMMAND_FAILED";
const char *MPSOC_HELPER_REQUESTING_REPLY_FAILED_STRING = "MPSOC_HELPER_REQUESTING_REPLY_FAILED";
const char *MPSOC_HELPER_READING_REPLY_FAILED_STRING = "MPSOC_HELPER_READING_REPLY_FAILED";
const char *MPSOC_MISSING_ACK_STRING = "MPSOC_MISSING_ACK";
const char *MPSOC_MISSING_EXE_STRING = "MPSOC_MISSING_EXE";
const char *MPSOC_ACK_FAILURE_REPORT_STRING = "MPSOC_ACK_FAILURE_REPORT";
const char *MPSOC_EXE_FAILURE_REPORT_STRING = "MPSOC_EXE_FAILURE_REPORT";
const char *MPSOC_ACK_INVALID_APID_STRING = "MPSOC_ACK_INVALID_APID";
const char *MPSOC_EXE_INVALID_APID_STRING = "MPSOC_EXE_INVALID_APID";
const char *MPSOC_HELPER_SEQ_CNT_MISMATCH_STRING = "MPSOC_HELPER_SEQ_CNT_MISMATCH";
const char *MPSOC_TM_SIZE_ERROR_STRING = "MPSOC_TM_SIZE_ERROR";
const char *MPSOC_TM_CRC_MISSMATCH_STRING = "MPSOC_TM_CRC_MISSMATCH";
const char *TRANSITION_BACK_TO_OFF_STRING = "TRANSITION_BACK_TO_OFF";
const char *NEG_V_OUT_OF_BOUNDS_STRING = "NEG_V_OUT_OF_BOUNDS";
const char *U_DRO_OUT_OF_BOUNDS_STRING = "U_DRO_OUT_OF_BOUNDS";
const char *I_DRO_OUT_OF_BOUNDS_STRING = "I_DRO_OUT_OF_BOUNDS";
const char *U_X8_OUT_OF_BOUNDS_STRING = "U_X8_OUT_OF_BOUNDS";
const char *I_X8_OUT_OF_BOUNDS_STRING = "I_X8_OUT_OF_BOUNDS";
const char *U_TX_OUT_OF_BOUNDS_STRING = "U_TX_OUT_OF_BOUNDS";
const char *I_TX_OUT_OF_BOUNDS_STRING = "I_TX_OUT_OF_BOUNDS";
const char *U_MPA_OUT_OF_BOUNDS_STRING = "U_MPA_OUT_OF_BOUNDS";
const char *I_MPA_OUT_OF_BOUNDS_STRING = "I_MPA_OUT_OF_BOUNDS";
const char *U_HPA_OUT_OF_BOUNDS_STRING = "U_HPA_OUT_OF_BOUNDS";
const char *I_HPA_OUT_OF_BOUNDS_STRING = "I_HPA_OUT_OF_BOUNDS";
const char *TRANSITION_OTHER_SIDE_FAILED_STRING = "TRANSITION_OTHER_SIDE_FAILED";
const char *NOT_ENOUGH_DEVICES_DUAL_MODE_STRING = "NOT_ENOUGH_DEVICES_DUAL_MODE";
const char *POWER_STATE_MACHINE_TIMEOUT_STRING = "POWER_STATE_MACHINE_TIMEOUT";
const char *SIDE_SWITCH_TRANSITION_NOT_ALLOWED_STRING = "SIDE_SWITCH_TRANSITION_NOT_ALLOWED";
const char *CHILDREN_LOST_MODE_STRING = "CHILDREN_LOST_MODE";
const char *GPS_FIX_CHANGE_STRING = "GPS_FIX_CHANGE";
const char *P60_BOOT_COUNT_STRING = "P60_BOOT_COUNT";
const char *BATT_MODE_STRING = "BATT_MODE";
const char *BATT_MODE_CHANGED_STRING = "BATT_MODE_CHANGED";
const char *SUPV_UPDATE_FAILED_STRING = "SUPV_UPDATE_FAILED";
const char *SUPV_UPDATE_SUCCESSFUL_STRING = "SUPV_UPDATE_SUCCESSFUL";
const char *SUPV_CONTINUE_UPDATE_FAILED_STRING = "SUPV_CONTINUE_UPDATE_FAILED";
const char *SUPV_CONTINUE_UPDATE_SUCCESSFUL_STRING = "SUPV_CONTINUE_UPDATE_SUCCESSFUL";
const char *TERMINATED_UPDATE_PROCEDURE_STRING = "TERMINATED_UPDATE_PROCEDURE";
const char *SUPV_EVENT_BUFFER_REQUEST_SUCCESSFUL_STRING = "SUPV_EVENT_BUFFER_REQUEST_SUCCESSFUL";
const char *SUPV_EVENT_BUFFER_REQUEST_FAILED_STRING = "SUPV_EVENT_BUFFER_REQUEST_FAILED";
const char *SUPV_EVENT_BUFFER_REQUEST_TERMINATED_STRING = "SUPV_EVENT_BUFFER_REQUEST_TERMINATED";
const char *SUPV_MEM_CHECK_OK_STRING = "SUPV_MEM_CHECK_OK";
const char *SUPV_MEM_CHECK_FAIL_STRING = "SUPV_MEM_CHECK_FAIL";
const char *SUPV_SENDING_COMMAND_FAILED_STRING = "SUPV_SENDING_COMMAND_FAILED";
const char *SUPV_HELPER_REQUESTING_REPLY_FAILED_STRING = "SUPV_HELPER_REQUESTING_REPLY_FAILED";
const char *SUPV_HELPER_READING_REPLY_FAILED_STRING = "SUPV_HELPER_READING_REPLY_FAILED";
const char *SUPV_MISSING_ACK_STRING = "SUPV_MISSING_ACK";
const char *SUPV_MISSING_EXE_STRING = "SUPV_MISSING_EXE";
const char *SUPV_ACK_FAILURE_REPORT_STRING = "SUPV_ACK_FAILURE_REPORT";
const char *SUPV_EXE_FAILURE_REPORT_STRING = "SUPV_EXE_FAILURE_REPORT";
const char *SUPV_ACK_INVALID_APID_STRING = "SUPV_ACK_INVALID_APID";
const char *SUPV_EXE_INVALID_APID_STRING = "SUPV_EXE_INVALID_APID";
const char *ACK_RECEPTION_FAILURE_STRING = "ACK_RECEPTION_FAILURE";
const char *EXE_RECEPTION_FAILURE_STRING = "EXE_RECEPTION_FAILURE";
const char *WRITE_MEMORY_FAILED_STRING = "WRITE_MEMORY_FAILED";
const char *SUPV_REPLY_SIZE_MISSMATCH_STRING = "SUPV_REPLY_SIZE_MISSMATCH";
const char *SUPV_REPLY_CRC_MISSMATCH_STRING = "SUPV_REPLY_CRC_MISSMATCH";
const char *SUPV_UPDATE_PROGRESS_STRING = "SUPV_UPDATE_PROGRESS";
const char *HDLC_FRAME_REMOVAL_ERROR_STRING = "HDLC_FRAME_REMOVAL_ERROR";
const char *HDLC_CRC_ERROR_STRING = "HDLC_CRC_ERROR";
const char *ALLOC_FAILURE_STRING = "ALLOC_FAILURE";
const char *REBOOT_SW_STRING = "REBOOT_SW";
const char *REBOOT_MECHANISM_TRIGGERED_STRING = "REBOOT_MECHANISM_TRIGGERED";
const char *REBOOT_HW_STRING = "REBOOT_HW";
const char *NO_SD_CARD_ACTIVE_STRING = "NO_SD_CARD_ACTIVE";
const char *MISSING_PACKET_STRING = "MISSING_PACKET";
const char *EXPERIMENT_TIMEDOUT_STRING = "EXPERIMENT_TIMEDOUT";
const char *MULTI_PACKET_COMMAND_DONE_STRING = "MULTI_PACKET_COMMAND_DONE";
const char *SET_CONFIGFILEVALUE_FAILED_STRING = "SET_CONFIGFILEVALUE_FAILED";
const char *GET_CONFIGFILEVALUE_FAILED_STRING = "GET_CONFIGFILEVALUE_FAILED";
const char *INSERT_CONFIGFILEVALUE_FAILED_STRING = "INSERT_CONFIGFILEVALUE_FAILED";
const char *WRITE_CONFIGFILE_FAILED_STRING = "WRITE_CONFIGFILE_FAILED";
const char *READ_CONFIGFILE_FAILED_STRING = "READ_CONFIGFILE_FAILED";
const char *translateEvents(Event event) {
switch ((event & 0xffff)) {
switch ((event & 0xFFFF)) {
case (2200):
return STORE_SEND_WRITE_FAILED_STRING;
case (2201):
@ -149,6 +301,8 @@ const char *translateEvents(Event event) {
return MONITORING_LIMIT_EXCEEDED_STRING;
case (2810):
return MONITORING_AMBIGUOUS_STRING;
case (2811):
return DEVICE_WANTS_HARD_REBOOT_STRING;
case (4201):
return FUSE_CURRENT_HIGH_STRING;
case (4202):
@ -199,8 +353,6 @@ const char *translateEvents(Event event) {
return VALUE_ABOVE_HIGH_LIMIT_STRING;
case (7204):
return VALUE_OUT_OF_RANGE_STRING;
case (7301):
return SWITCHING_TM_FAILED_STRING;
case (7400):
return CHANGING_MODE_STRING;
case (7401):
@ -231,6 +383,8 @@ const char *translateEvents(Event event) {
return RECOVERY_STEP_STRING;
case (7512):
return RECOVERY_DONE_STRING;
case (7600):
return HANDLE_PACKET_FAILED_STRING;
case (7900):
return RF_AVAILABLE_STRING;
case (7901):
@ -245,18 +399,320 @@ const char *translateEvents(Event event) {
return CLOCK_SET_STRING;
case (8901):
return CLOCK_SET_FAILURE_STRING;
case (9100):
return TC_DELETION_FAILED_STRING;
case (9700):
return TEST_STRING;
case (10600):
return CHANGE_OF_SETUP_PARAMETER_STRING;
case (11101):
case (10800):
return STORE_ERROR_STRING;
case (10801):
return MSG_QUEUE_ERROR_STRING;
case (10802):
return SERIALIZATION_ERROR_STRING;
case (11300):
return SWITCH_CMD_SENT_STRING;
case (11301):
return SWITCH_HAS_CHANGED_STRING;
case (11302):
return SWITCHING_Q7S_DENIED_STRING;
case (11303):
return FDIR_REACTION_IGNORED_STRING;
case (11400):
return GPIO_PULL_HIGH_FAILED_STRING;
case (11401):
return GPIO_PULL_LOW_FAILED_STRING;
case (11402):
return HEATER_WENT_ON_STRING;
case (11403):
return HEATER_WENT_OFF_STRING;
case (11404):
return SWITCH_ALREADY_ON_STRING;
case (11405):
return SWITCH_ALREADY_OFF_STRING;
case (11406):
return MAIN_SWITCH_TIMEOUT_STRING;
case (11407):
return FAULTY_HEATER_WAS_ON_STRING;
case (11500):
return BURN_PHASE_START_STRING;
case (11501):
return BURN_PHASE_DONE_STRING;
case (11502):
return MAIN_SWITCH_ON_TIMEOUT_STRING;
case (11503):
return MAIN_SWITCH_OFF_TIMEOUT_STRING;
case (11504):
return DEPL_SA1_GPIO_SWTICH_ON_FAILED_STRING;
case (11505):
return DEPL_SA2_GPIO_SWTICH_ON_FAILED_STRING;
case (11506):
return DEPL_SA1_GPIO_SWTICH_OFF_FAILED_STRING;
case (11507):
return DEPL_SA2_GPIO_SWTICH_OFF_FAILED_STRING;
case (11508):
return AUTONOMOUS_DEPLOYMENT_COMPLETED_STRING;
case (11601):
return MEMORY_READ_RPT_CRC_FAILURE_STRING;
case (11102):
case (11602):
return ACK_FAILURE_STRING;
case (11103):
case (11603):
return EXE_FAILURE_STRING;
case (11104):
return CRC_FAILURE_EVENT_STRING;
case (11604):
return MPSOC_HANDLER_CRC_FAILURE_STRING;
case (11605):
return MPSOC_HANDLER_SEQUENCE_COUNT_MISMATCH_STRING;
case (11606):
return MPSOC_SHUTDOWN_FAILED_STRING;
case (11701):
return SELF_TEST_I2C_FAILURE_STRING;
case (11702):
return SELF_TEST_SPI_FAILURE_STRING;
case (11703):
return SELF_TEST_ADC_FAILURE_STRING;
case (11704):
return SELF_TEST_PWM_FAILURE_STRING;
case (11705):
return SELF_TEST_TC_FAILURE_STRING;
case (11706):
return SELF_TEST_MTM_RANGE_FAILURE_STRING;
case (11707):
return SELF_TEST_COIL_CURRENT_FAILURE_STRING;
case (11708):
return INVALID_ERROR_BYTE_STRING;
case (11801):
return ERROR_STATE_STRING;
case (11802):
return RESET_OCCURED_STRING;
case (11901):
return BOOTING_FIRMWARE_FAILED_STRING;
case (11902):
return BOOTING_BOOTLOADER_FAILED_STRING;
case (12001):
return SUPV_MEMORY_READ_RPT_CRC_FAILURE_STRING;
case (12002):
return SUPV_UNKNOWN_TM_STRING;
case (12003):
return SUPV_UNINIMPLEMENTED_TM_STRING;
case (12004):
return SUPV_ACK_FAILURE_STRING;
case (12005):
return SUPV_EXE_FAILURE_STRING;
case (12006):
return SUPV_CRC_FAILURE_EVENT_STRING;
case (12007):
return SUPV_HELPER_EXECUTING_STRING;
case (12008):
return SUPV_MPSOC_SHUWDOWN_BUILD_FAILED_STRING;
case (12100):
return SANITIZATION_FAILED_STRING;
case (12101):
return MOUNTED_SD_CARD_STRING;
case (12300):
return SEND_MRAM_DUMP_FAILED_STRING;
case (12301):
return MRAM_DUMP_FAILED_STRING;
case (12302):
return MRAM_DUMP_FINISHED_STRING;
case (12401):
return INVALID_TC_FRAME_STRING;
case (12402):
return INVALID_FAR_STRING;
case (12403):
return CARRIER_LOCK_STRING;
case (12404):
return BIT_LOCK_PDEC_STRING;
case (12405):
return LOST_CARRIER_LOCK_PDEC_STRING;
case (12406):
return LOST_BIT_LOCK_PDEC_STRING;
case (12407):
return POLL_ERROR_PDEC_STRING;
case (12500):
return IMAGE_UPLOAD_FAILED_STRING;
case (12501):
return IMAGE_DOWNLOAD_FAILED_STRING;
case (12502):
return IMAGE_UPLOAD_SUCCESSFUL_STRING;
case (12503):
return IMAGE_DOWNLOAD_SUCCESSFUL_STRING;
case (12504):
return FLASH_WRITE_SUCCESSFUL_STRING;
case (12505):
return FLASH_READ_SUCCESSFUL_STRING;
case (12506):
return FLASH_READ_FAILED_STRING;
case (12507):
return FIRMWARE_UPDATE_SUCCESSFUL_STRING;
case (12508):
return FIRMWARE_UPDATE_FAILED_STRING;
case (12509):
return STR_HELPER_READING_REPLY_FAILED_STRING;
case (12510):
return STR_HELPER_COM_ERROR_STRING;
case (12511):
return STR_HELPER_NO_REPLY_STRING;
case (12512):
return STR_HELPER_DEC_ERROR_STRING;
case (12513):
return POSITION_MISMATCH_STRING;
case (12514):
return STR_HELPER_FILE_NOT_EXISTS_STRING;
case (12515):
return STR_HELPER_SENDING_PACKET_FAILED_STRING;
case (12516):
return STR_HELPER_REQUESTING_MSG_FAILED_STRING;
case (12600):
return MPSOC_FLASH_WRITE_FAILED_STRING;
case (12601):
return MPSOC_FLASH_WRITE_SUCCESSFUL_STRING;
case (12602):
return MPSOC_SENDING_COMMAND_FAILED_STRING;
case (12603):
return MPSOC_HELPER_REQUESTING_REPLY_FAILED_STRING;
case (12604):
return MPSOC_HELPER_READING_REPLY_FAILED_STRING;
case (12605):
return MPSOC_MISSING_ACK_STRING;
case (12606):
return MPSOC_MISSING_EXE_STRING;
case (12607):
return MPSOC_ACK_FAILURE_REPORT_STRING;
case (12608):
return MPSOC_EXE_FAILURE_REPORT_STRING;
case (12609):
return MPSOC_ACK_INVALID_APID_STRING;
case (12610):
return MPSOC_EXE_INVALID_APID_STRING;
case (12611):
return MPSOC_HELPER_SEQ_CNT_MISMATCH_STRING;
case (12612):
return MPSOC_TM_SIZE_ERROR_STRING;
case (12613):
return MPSOC_TM_CRC_MISSMATCH_STRING;
case (12700):
return TRANSITION_BACK_TO_OFF_STRING;
case (12701):
return NEG_V_OUT_OF_BOUNDS_STRING;
case (12702):
return U_DRO_OUT_OF_BOUNDS_STRING;
case (12703):
return I_DRO_OUT_OF_BOUNDS_STRING;
case (12704):
return U_X8_OUT_OF_BOUNDS_STRING;
case (12705):
return I_X8_OUT_OF_BOUNDS_STRING;
case (12706):
return U_TX_OUT_OF_BOUNDS_STRING;
case (12707):
return I_TX_OUT_OF_BOUNDS_STRING;
case (12708):
return U_MPA_OUT_OF_BOUNDS_STRING;
case (12709):
return I_MPA_OUT_OF_BOUNDS_STRING;
case (12710):
return U_HPA_OUT_OF_BOUNDS_STRING;
case (12711):
return I_HPA_OUT_OF_BOUNDS_STRING;
case (12800):
return TRANSITION_OTHER_SIDE_FAILED_STRING;
case (12801):
return NOT_ENOUGH_DEVICES_DUAL_MODE_STRING;
case (12802):
return POWER_STATE_MACHINE_TIMEOUT_STRING;
case (12803):
return SIDE_SWITCH_TRANSITION_NOT_ALLOWED_STRING;
case (13000):
return CHILDREN_LOST_MODE_STRING;
case (13100):
return GPS_FIX_CHANGE_STRING;
case (13200):
return P60_BOOT_COUNT_STRING;
case (13201):
return BATT_MODE_STRING;
case (13202):
return BATT_MODE_CHANGED_STRING;
case (13600):
return SUPV_UPDATE_FAILED_STRING;
case (13601):
return SUPV_UPDATE_SUCCESSFUL_STRING;
case (13602):
return SUPV_CONTINUE_UPDATE_FAILED_STRING;
case (13603):
return SUPV_CONTINUE_UPDATE_SUCCESSFUL_STRING;
case (13604):
return TERMINATED_UPDATE_PROCEDURE_STRING;
case (13605):
return SUPV_EVENT_BUFFER_REQUEST_SUCCESSFUL_STRING;
case (13606):
return SUPV_EVENT_BUFFER_REQUEST_FAILED_STRING;
case (13607):
return SUPV_EVENT_BUFFER_REQUEST_TERMINATED_STRING;
case (13608):
return SUPV_MEM_CHECK_OK_STRING;
case (13609):
return SUPV_MEM_CHECK_FAIL_STRING;
case (13616):
return SUPV_SENDING_COMMAND_FAILED_STRING;
case (13617):
return SUPV_HELPER_REQUESTING_REPLY_FAILED_STRING;
case (13618):
return SUPV_HELPER_READING_REPLY_FAILED_STRING;
case (13619):
return SUPV_MISSING_ACK_STRING;
case (13620):
return SUPV_MISSING_EXE_STRING;
case (13621):
return SUPV_ACK_FAILURE_REPORT_STRING;
case (13622):
return SUPV_EXE_FAILURE_REPORT_STRING;
case (13623):
return SUPV_ACK_INVALID_APID_STRING;
case (13624):
return SUPV_EXE_INVALID_APID_STRING;
case (13625):
return ACK_RECEPTION_FAILURE_STRING;
case (13626):
return EXE_RECEPTION_FAILURE_STRING;
case (13627):
return WRITE_MEMORY_FAILED_STRING;
case (13628):
return SUPV_REPLY_SIZE_MISSMATCH_STRING;
case (13629):
return SUPV_REPLY_CRC_MISSMATCH_STRING;
case (13630):
return SUPV_UPDATE_PROGRESS_STRING;
case (13631):
return HDLC_FRAME_REMOVAL_ERROR_STRING;
case (13632):
return HDLC_CRC_ERROR_STRING;
case (13700):
return ALLOC_FAILURE_STRING;
case (13701):
return REBOOT_SW_STRING;
case (13702):
return REBOOT_MECHANISM_TRIGGERED_STRING;
case (13703):
return REBOOT_HW_STRING;
case (13704):
return NO_SD_CARD_ACTIVE_STRING;
case (13800):
return MISSING_PACKET_STRING;
case (13801):
return EXPERIMENT_TIMEDOUT_STRING;
case (13802):
return MULTI_PACKET_COMMAND_DONE_STRING;
case (13901):
return SET_CONFIGFILEVALUE_FAILED_STRING;
case (13902):
return GET_CONFIGFILEVALUE_FAILED_STRING;
case (13903):
return INSERT_CONFIGFILEVALUE_FAILED_STRING;
case (13904):
return WRITE_CONFIGFILE_FAILED_STRING;
case (13905):
return READ_CONFIGFILE_FAILED_STRING;
default:
return "UNKNOWN_EVENT";
}

View File

@ -1,8 +1,8 @@
#ifndef FSFWCONFIG_EVENTS_TRANSLATEEVENTS_H_
#define FSFWCONFIG_EVENTS_TRANSLATEEVENTS_H_
#include <fsfw/events/Event.h>
#include "fsfw/events/Event.h"
const char* translateEvents(Event event);
const char *translateEvents(Event event);
#endif /* FSFWCONFIG_EVENTS_TRANSLATEEVENTS_H_ */

View File

@ -1,10 +1,10 @@
#ifndef HOSTED_CONFIG_OBJECTS_SYSTEMOBJECTLIST_H_
#define HOSTED_CONFIG_OBJECTS_SYSTEMOBJECTLIST_H_
#include <commonObjects.h>
#include <cstdint>
#include "eive/objects.h"
// The objects will be instantiated in the ID order
namespace objects {
enum sourceObjects : uint32_t {
@ -16,16 +16,15 @@ enum sourceObjects : uint32_t {
PUS_SERVICE_23 = 0x51002300,
PUS_SERVICE_201 = 0x51020100,
TM_FUNNEL = 0x52000002,
/* Test Task */
TEST_TASK = 0x42694269,
DUMMY_INTERFACE = 0xCAFECAFE,
DUMMY_HANDLER = 0x4400AFFE,
DUMMY_HANDLER = 0x44000001,
/* 0x49 ('I') for Communication Interfaces **/
ARDUINO_COM_IF = 0x49000001
ARDUINO_COM_IF = 0x49000001,
DUMMY_COM_IF = 0x49000002
};
}

View File

@ -1,21 +1,105 @@
/**
* @brief Auto-generated object translation file.
* @brief Auto-generated object translation file.
* @details
* Contains 31 translations.
* Generated on: 2021-05-17 19:12:49
* Contains 148 translations.
* Generated on: 2022-11-15 17:44:20
*/
#include "translateObjects.h"
const char *TEST_TASK_STRING = "TEST_TASK";
const char *DUMMY_HANDLER_STRING = "DUMMY_HANDLER";
const char *P60DOCK_TEST_TASK_STRING = "P60DOCK_TEST_TASK";
const char *ACS_CONTROLLER_STRING = "ACS_CONTROLLER";
const char *CORE_CONTROLLER_STRING = "CORE_CONTROLLER";
const char *GLOBAL_JSON_CFG_STRING = "GLOBAL_JSON_CFG";
const char *THERMAL_CONTROLLER_STRING = "THERMAL_CONTROLLER";
const char *MGM_0_LIS3_HANDLER_STRING = "MGM_0_LIS3_HANDLER";
const char *GYRO_0_ADIS_HANDLER_STRING = "GYRO_0_ADIS_HANDLER";
const char *SUS_0_N_LOC_XFYFZM_PT_XF_STRING = "SUS_0_N_LOC_XFYFZM_PT_XF";
const char *SUS_1_N_LOC_XBYFZM_PT_XB_STRING = "SUS_1_N_LOC_XBYFZM_PT_XB";
const char *SUS_2_N_LOC_XFYBZB_PT_YB_STRING = "SUS_2_N_LOC_XFYBZB_PT_YB";
const char *SUS_3_N_LOC_XFYBZF_PT_YF_STRING = "SUS_3_N_LOC_XFYBZF_PT_YF";
const char *SUS_4_N_LOC_XMYFZF_PT_ZF_STRING = "SUS_4_N_LOC_XMYFZF_PT_ZF";
const char *SUS_5_N_LOC_XFYMZB_PT_ZB_STRING = "SUS_5_N_LOC_XFYMZB_PT_ZB";
const char *SUS_6_R_LOC_XFYBZM_PT_XF_STRING = "SUS_6_R_LOC_XFYBZM_PT_XF";
const char *SUS_7_R_LOC_XBYBZM_PT_XB_STRING = "SUS_7_R_LOC_XBYBZM_PT_XB";
const char *SUS_8_R_LOC_XBYBZB_PT_YB_STRING = "SUS_8_R_LOC_XBYBZB_PT_YB";
const char *SUS_9_R_LOC_XBYBZB_PT_YF_STRING = "SUS_9_R_LOC_XBYBZB_PT_YF";
const char *SUS_10_N_LOC_XMYBZF_PT_ZF_STRING = "SUS_10_N_LOC_XMYBZF_PT_ZF";
const char *SUS_11_R_LOC_XBYMZB_PT_ZB_STRING = "SUS_11_R_LOC_XBYMZB_PT_ZB";
const char *RW1_STRING = "RW1";
const char *MGM_1_RM3100_HANDLER_STRING = "MGM_1_RM3100_HANDLER";
const char *GYRO_1_L3G_HANDLER_STRING = "GYRO_1_L3G_HANDLER";
const char *RW2_STRING = "RW2";
const char *MGM_2_LIS3_HANDLER_STRING = "MGM_2_LIS3_HANDLER";
const char *GYRO_2_ADIS_HANDLER_STRING = "GYRO_2_ADIS_HANDLER";
const char *RW3_STRING = "RW3";
const char *MGM_3_RM3100_HANDLER_STRING = "MGM_3_RM3100_HANDLER";
const char *GYRO_3_L3G_HANDLER_STRING = "GYRO_3_L3G_HANDLER";
const char *RW4_STRING = "RW4";
const char *STAR_TRACKER_STRING = "STAR_TRACKER";
const char *GPS_CONTROLLER_STRING = "GPS_CONTROLLER";
const char *IMTQ_HANDLER_STRING = "IMTQ_HANDLER";
const char *PCDU_HANDLER_STRING = "PCDU_HANDLER";
const char *P60DOCK_HANDLER_STRING = "P60DOCK_HANDLER";
const char *PDU1_HANDLER_STRING = "PDU1_HANDLER";
const char *PDU2_HANDLER_STRING = "PDU2_HANDLER";
const char *ACU_HANDLER_STRING = "ACU_HANDLER";
const char *BPX_BATT_HANDLER_STRING = "BPX_BATT_HANDLER";
const char *PLPCDU_HANDLER_STRING = "PLPCDU_HANDLER";
const char *RAD_SENSOR_STRING = "RAD_SENSOR";
const char *PLOC_UPDATER_STRING = "PLOC_UPDATER";
const char *PLOC_MEMORY_DUMPER_STRING = "PLOC_MEMORY_DUMPER";
const char *STR_HELPER_STRING = "STR_HELPER";
const char *PLOC_MPSOC_HELPER_STRING = "PLOC_MPSOC_HELPER";
const char *AXI_PTME_CONFIG_STRING = "AXI_PTME_CONFIG";
const char *PTME_CONFIG_STRING = "PTME_CONFIG";
const char *PLOC_MPSOC_HANDLER_STRING = "PLOC_MPSOC_HANDLER";
const char *PLOC_SUPERVISOR_HANDLER_STRING = "PLOC_SUPERVISOR_HANDLER";
const char *PLOC_SUPERVISOR_HELPER_STRING = "PLOC_SUPERVISOR_HELPER";
const char *SCEX_STRING = "SCEX";
const char *SOLAR_ARRAY_DEPL_HANDLER_STRING = "SOLAR_ARRAY_DEPL_HANDLER";
const char *HEATER_HANDLER_STRING = "HEATER_HANDLER";
const char *TMP1075_HANDLER_TCS_0_STRING = "TMP1075_HANDLER_TCS_0";
const char *TMP1075_HANDLER_TCS_1_STRING = "TMP1075_HANDLER_TCS_1";
const char *TMP1075_HANDLER_PLPCDU_0_STRING = "TMP1075_HANDLER_PLPCDU_0";
const char *TMP1075_HANDLER_PLPCDU_1_STRING = "TMP1075_HANDLER_PLPCDU_1";
const char *TMP1075_HANDLER_IF_BOARD_STRING = "TMP1075_HANDLER_IF_BOARD";
const char *TMP1075_HANDLER_OBC_IF_BOARD_STRING = "TMP1075_HANDLER_OBC_IF_BOARD";
const char *RTD_0_IC3_PLOC_HEATSPREADER_STRING = "RTD_0_IC3_PLOC_HEATSPREADER";
const char *RTD_1_IC4_PLOC_MISSIONBOARD_STRING = "RTD_1_IC4_PLOC_MISSIONBOARD";
const char *RTD_2_IC5_4K_CAMERA_STRING = "RTD_2_IC5_4K_CAMERA";
const char *RTD_3_IC6_DAC_HEATSPREADER_STRING = "RTD_3_IC6_DAC_HEATSPREADER";
const char *RTD_4_IC7_STARTRACKER_STRING = "RTD_4_IC7_STARTRACKER";
const char *RTD_5_IC8_RW1_MX_MY_STRING = "RTD_5_IC8_RW1_MX_MY";
const char *RTD_6_IC9_DRO_STRING = "RTD_6_IC9_DRO";
const char *RTD_7_IC10_SCEX_STRING = "RTD_7_IC10_SCEX";
const char *RTD_8_IC11_X8_STRING = "RTD_8_IC11_X8";
const char *RTD_9_IC12_HPA_STRING = "RTD_9_IC12_HPA";
const char *RTD_10_IC13_PL_TX_STRING = "RTD_10_IC13_PL_TX";
const char *RTD_11_IC14_MPA_STRING = "RTD_11_IC14_MPA";
const char *RTD_12_IC15_ACU_STRING = "RTD_12_IC15_ACU";
const char *RTD_13_IC16_PLPCDU_HEATSPREADER_STRING = "RTD_13_IC16_PLPCDU_HEATSPREADER";
const char *RTD_14_IC17_TCS_BOARD_STRING = "RTD_14_IC17_TCS_BOARD";
const char *RTD_15_IC18_IMTQ_STRING = "RTD_15_IC18_IMTQ";
const char *SYRLINKS_HK_HANDLER_STRING = "SYRLINKS_HK_HANDLER";
const char *ARDUINO_COM_IF_STRING = "ARDUINO_COM_IF";
const char *PUS_SERVICE_3_STRING = "PUS_SERVICE_3";
const char *PUS_SERVICE_5_STRING = "PUS_SERVICE_5";
const char *GPIO_IF_STRING = "GPIO_IF";
const char *SCEX_UART_READER_STRING = "SCEX_UART_READER";
const char *SPI_MAIN_COM_IF_STRING = "SPI_MAIN_COM_IF";
const char *SPI_RW_COM_IF_STRING = "SPI_RW_COM_IF";
const char *SPI_RTD_COM_IF_STRING = "SPI_RTD_COM_IF";
const char *UART_COM_IF_STRING = "UART_COM_IF";
const char *I2C_COM_IF_STRING = "I2C_COM_IF";
const char *CSP_COM_IF_STRING = "CSP_COM_IF";
const char *CCSDS_PACKET_DISTRIBUTOR_STRING = "CCSDS_PACKET_DISTRIBUTOR";
const char *PUS_PACKET_DISTRIBUTOR_STRING = "PUS_PACKET_DISTRIBUTOR";
const char *TMTC_BRIDGE_STRING = "TMTC_BRIDGE";
const char *TMTC_POLLING_TASK_STRING = "TMTC_POLLING_TASK";
const char *FILE_SYSTEM_HANDLER_STRING = "FILE_SYSTEM_HANDLER";
const char *SDC_MANAGER_STRING = "SDC_MANAGER";
const char *PTME_STRING = "PTME";
const char *PDEC_HANDLER_STRING = "PDEC_HANDLER";
const char *CCSDS_HANDLER_STRING = "CCSDS_HANDLER";
const char *PUS_SERVICE_6_STRING = "PUS_SERVICE_6";
const char *PUS_SERVICE_8_STRING = "PUS_SERVICE_8";
const char *PUS_SERVICE_23_STRING = "PUS_SERVICE_23";
const char *PUS_SERVICE_201_STRING = "PUS_SERVICE_201";
const char *TM_FUNNEL_STRING = "TM_FUNNEL";
const char *FSFW_OBJECTS_START_STRING = "FSFW_OBJECTS_START";
const char *PUS_SERVICE_1_VERIFICATION_STRING = "PUS_SERVICE_1_VERIFICATION";
const char *PUS_SERVICE_2_DEVICE_ACCESS_STRING = "PUS_SERVICE_2_DEVICE_ACCESS";
@ -23,9 +107,12 @@ const char *PUS_SERVICE_3_HOUSEKEEPING_STRING = "PUS_SERVICE_3_HOUSEKEEPING";
const char *PUS_SERVICE_5_EVENT_REPORTING_STRING = "PUS_SERVICE_5_EVENT_REPORTING";
const char *PUS_SERVICE_8_FUNCTION_MGMT_STRING = "PUS_SERVICE_8_FUNCTION_MGMT";
const char *PUS_SERVICE_9_TIME_MGMT_STRING = "PUS_SERVICE_9_TIME_MGMT";
const char *PUS_SERVICE_11_TC_SCHEDULER_STRING = "PUS_SERVICE_11_TC_SCHEDULER";
const char *PUS_SERVICE_17_TEST_STRING = "PUS_SERVICE_17_TEST";
const char *PUS_SERVICE_20_PARAMETERS_STRING = "PUS_SERVICE_20_PARAMETERS";
const char *PUS_SERVICE_200_MODE_MGMT_STRING = "PUS_SERVICE_200_MODE_MGMT";
const char *PUS_SERVICE_201_HEALTH_STRING = "PUS_SERVICE_201_HEALTH";
const char *CFDP_PACKET_DISTRIBUTOR_STRING = "CFDP_PACKET_DISTRIBUTOR";
const char *HEALTH_TABLE_STRING = "HEALTH_TABLE";
const char *MODE_STORE_STRING = "MODE_STORE";
const char *EVENT_MANAGER_STRING = "EVENT_MANAGER";
@ -34,32 +121,230 @@ const char *TC_STORE_STRING = "TC_STORE";
const char *TM_STORE_STRING = "TM_STORE";
const char *IPC_STORE_STRING = "IPC_STORE";
const char *TIME_STAMPER_STRING = "TIME_STAMPER";
const char *VERIFICATION_REPORTER_STRING = "VERIFICATION_REPORTER";
const char *FSFW_OBJECTS_END_STRING = "FSFW_OBJECTS_END";
const char *SPI_TEST_STRING = "SPI_TEST";
const char *UART_TEST_STRING = "UART_TEST";
const char *I2C_TEST_STRING = "I2C_TEST";
const char *DUMMY_COM_IF_STRING = "DUMMY_COM_IF";
const char *DUMMY_HANDLER_STRING = "DUMMY_HANDLER";
const char *DUMMY_INTERFACE_STRING = "DUMMY_INTERFACE";
const char *LIBGPIOD_TEST_STRING = "LIBGPIOD_TEST";
const char *TEST_TASK_STRING = "TEST_TASK";
const char *HEATER_0_PLOC_PROC_BRD_STRING = "HEATER_0_PLOC_PROC_BRD";
const char *HEATER_1_PCDU_BRD_STRING = "HEATER_1_PCDU_BRD";
const char *HEATER_2_ACS_BRD_STRING = "HEATER_2_ACS_BRD";
const char *HEATER_3_OBC_BRD_STRING = "HEATER_3_OBC_BRD";
const char *HEATER_4_CAMERA_STRING = "HEATER_4_CAMERA";
const char *HEATER_5_STR_STRING = "HEATER_5_STR";
const char *HEATER_6_DRO_STRING = "HEATER_6_DRO";
const char *HEATER_7_HPA_STRING = "HEATER_7_HPA";
const char *ACS_BOARD_ASS_STRING = "ACS_BOARD_ASS";
const char *SUS_BOARD_ASS_STRING = "SUS_BOARD_ASS";
const char *TCS_BOARD_ASS_STRING = "TCS_BOARD_ASS";
const char *RW_ASS_STRING = "RW_ASS";
const char *CAM_SWITCHER_STRING = "CAM_SWITCHER";
const char *TM_FUNNEL_STRING = "TM_FUNNEL";
const char *PUS_TM_FUNNEL_STRING = "PUS_TM_FUNNEL";
const char *CFDP_TM_FUNNEL_STRING = "CFDP_TM_FUNNEL";
const char *CFDP_HANDLER_STRING = "CFDP_HANDLER";
const char *CFDP_DISTRIBUTOR_STRING = "CFDP_DISTRIBUTOR";
const char *EIVE_SYSTEM_STRING = "EIVE_SYSTEM";
const char *ACS_SUBSYSTEM_STRING = "ACS_SUBSYSTEM";
const char *PL_SUBSYSTEM_STRING = "PL_SUBSYSTEM";
const char *CCSDS_IP_CORE_BRIDGE_STRING = "CCSDS_IP_CORE_BRIDGE";
const char *NO_OBJECT_STRING = "NO_OBJECT";
const char *translateObject(object_id_t object) {
switch ((object & 0xFFFFFFFF)) {
case 0x42694269:
return TEST_TASK_STRING;
case 0x4400AFFE:
return DUMMY_HANDLER_STRING;
case 0x49000001:
case 0x00005060:
return P60DOCK_TEST_TASK_STRING;
case 0x43000002:
return ACS_CONTROLLER_STRING;
case 0x43000003:
return CORE_CONTROLLER_STRING;
case 0x43000006:
return GLOBAL_JSON_CFG_STRING;
case 0x43400001:
return THERMAL_CONTROLLER_STRING;
case 0x44120006:
return MGM_0_LIS3_HANDLER_STRING;
case 0x44120010:
return GYRO_0_ADIS_HANDLER_STRING;
case 0x44120032:
return SUS_0_N_LOC_XFYFZM_PT_XF_STRING;
case 0x44120033:
return SUS_1_N_LOC_XBYFZM_PT_XB_STRING;
case 0x44120034:
return SUS_2_N_LOC_XFYBZB_PT_YB_STRING;
case 0x44120035:
return SUS_3_N_LOC_XFYBZF_PT_YF_STRING;
case 0x44120036:
return SUS_4_N_LOC_XMYFZF_PT_ZF_STRING;
case 0x44120037:
return SUS_5_N_LOC_XFYMZB_PT_ZB_STRING;
case 0x44120038:
return SUS_6_R_LOC_XFYBZM_PT_XF_STRING;
case 0x44120039:
return SUS_7_R_LOC_XBYBZM_PT_XB_STRING;
case 0x44120040:
return SUS_8_R_LOC_XBYBZB_PT_YB_STRING;
case 0x44120041:
return SUS_9_R_LOC_XBYBZB_PT_YF_STRING;
case 0x44120042:
return SUS_10_N_LOC_XMYBZF_PT_ZF_STRING;
case 0x44120043:
return SUS_11_R_LOC_XBYMZB_PT_ZB_STRING;
case 0x44120047:
return RW1_STRING;
case 0x44120107:
return MGM_1_RM3100_HANDLER_STRING;
case 0x44120111:
return GYRO_1_L3G_HANDLER_STRING;
case 0x44120148:
return RW2_STRING;
case 0x44120208:
return MGM_2_LIS3_HANDLER_STRING;
case 0x44120212:
return GYRO_2_ADIS_HANDLER_STRING;
case 0x44120249:
return RW3_STRING;
case 0x44120309:
return MGM_3_RM3100_HANDLER_STRING;
case 0x44120313:
return GYRO_3_L3G_HANDLER_STRING;
case 0x44120350:
return RW4_STRING;
case 0x44130001:
return STAR_TRACKER_STRING;
case 0x44130045:
return GPS_CONTROLLER_STRING;
case 0x44140014:
return IMTQ_HANDLER_STRING;
case 0x442000A1:
return PCDU_HANDLER_STRING;
case 0x44250000:
return P60DOCK_HANDLER_STRING;
case 0x44250001:
return PDU1_HANDLER_STRING;
case 0x44250002:
return PDU2_HANDLER_STRING;
case 0x44250003:
return ACU_HANDLER_STRING;
case 0x44260000:
return BPX_BATT_HANDLER_STRING;
case 0x44300000:
return PLPCDU_HANDLER_STRING;
case 0x443200A5:
return RAD_SENSOR_STRING;
case 0x44330000:
return PLOC_UPDATER_STRING;
case 0x44330001:
return PLOC_MEMORY_DUMPER_STRING;
case 0x44330002:
return STR_HELPER_STRING;
case 0x44330003:
return PLOC_MPSOC_HELPER_STRING;
case 0x44330004:
return AXI_PTME_CONFIG_STRING;
case 0x44330005:
return PTME_CONFIG_STRING;
case 0x44330015:
return PLOC_MPSOC_HANDLER_STRING;
case 0x44330016:
return PLOC_SUPERVISOR_HANDLER_STRING;
case 0x44330017:
return PLOC_SUPERVISOR_HELPER_STRING;
case 0x44330032:
return SCEX_STRING;
case 0x444100A2:
return SOLAR_ARRAY_DEPL_HANDLER_STRING;
case 0x444100A4:
return HEATER_HANDLER_STRING;
case 0x44420004:
return TMP1075_HANDLER_TCS_0_STRING;
case 0x44420005:
return TMP1075_HANDLER_TCS_1_STRING;
case 0x44420006:
return TMP1075_HANDLER_PLPCDU_0_STRING;
case 0x44420007:
return TMP1075_HANDLER_PLPCDU_1_STRING;
case 0x44420008:
return TMP1075_HANDLER_IF_BOARD_STRING;
case 0x44420009:
return TMP1075_HANDLER_OBC_IF_BOARD_STRING;
case 0x44420016:
return RTD_0_IC3_PLOC_HEATSPREADER_STRING;
case 0x44420017:
return RTD_1_IC4_PLOC_MISSIONBOARD_STRING;
case 0x44420018:
return RTD_2_IC5_4K_CAMERA_STRING;
case 0x44420019:
return RTD_3_IC6_DAC_HEATSPREADER_STRING;
case 0x44420020:
return RTD_4_IC7_STARTRACKER_STRING;
case 0x44420021:
return RTD_5_IC8_RW1_MX_MY_STRING;
case 0x44420022:
return RTD_6_IC9_DRO_STRING;
case 0x44420023:
return RTD_7_IC10_SCEX_STRING;
case 0x44420024:
return RTD_8_IC11_X8_STRING;
case 0x44420025:
return RTD_9_IC12_HPA_STRING;
case 0x44420026:
return RTD_10_IC13_PL_TX_STRING;
case 0x44420027:
return RTD_11_IC14_MPA_STRING;
case 0x44420028:
return RTD_12_IC15_ACU_STRING;
case 0x44420029:
return RTD_13_IC16_PLPCDU_HEATSPREADER_STRING;
case 0x44420030:
return RTD_14_IC17_TCS_BOARD_STRING;
case 0x44420031:
return RTD_15_IC18_IMTQ_STRING;
case 0x445300A3:
return SYRLINKS_HK_HANDLER_STRING;
case 0x49000000:
return ARDUINO_COM_IF_STRING;
case 0x51000300:
return PUS_SERVICE_3_STRING;
case 0x51000400:
return PUS_SERVICE_5_STRING;
case 0x49010005:
return GPIO_IF_STRING;
case 0x49010006:
return SCEX_UART_READER_STRING;
case 0x49020004:
return SPI_MAIN_COM_IF_STRING;
case 0x49020005:
return SPI_RW_COM_IF_STRING;
case 0x49020006:
return SPI_RTD_COM_IF_STRING;
case 0x49030003:
return UART_COM_IF_STRING;
case 0x49040002:
return I2C_COM_IF_STRING;
case 0x49050001:
return CSP_COM_IF_STRING;
case 0x50000100:
return CCSDS_PACKET_DISTRIBUTOR_STRING;
case 0x50000200:
return PUS_PACKET_DISTRIBUTOR_STRING;
case 0x50000300:
return TMTC_BRIDGE_STRING;
case 0x50000400:
return TMTC_POLLING_TASK_STRING;
case 0x50000500:
return FILE_SYSTEM_HANDLER_STRING;
case 0x50000550:
return SDC_MANAGER_STRING;
case 0x50000600:
return PTME_STRING;
case 0x50000700:
return PDEC_HANDLER_STRING;
case 0x50000800:
return CCSDS_HANDLER_STRING;
case 0x51000500:
return PUS_SERVICE_6_STRING;
case 0x51000800:
return PUS_SERVICE_8_STRING;
case 0x51002300:
return PUS_SERVICE_23_STRING;
case 0x51020100:
return PUS_SERVICE_201_STRING;
case 0x52000002:
return TM_FUNNEL_STRING;
case 0x53000000:
return FSFW_OBJECTS_START_STRING;
case 0x53000001:
@ -74,12 +359,18 @@ const char *translateObject(object_id_t object) {
return PUS_SERVICE_8_FUNCTION_MGMT_STRING;
case 0x53000009:
return PUS_SERVICE_9_TIME_MGMT_STRING;
case 0x53000011:
return PUS_SERVICE_11_TC_SCHEDULER_STRING;
case 0x53000017:
return PUS_SERVICE_17_TEST_STRING;
case 0x53000020:
return PUS_SERVICE_20_PARAMETERS_STRING;
case 0x53000200:
return PUS_SERVICE_200_MODE_MGMT_STRING;
case 0x53000201:
return PUS_SERVICE_201_HEALTH_STRING;
case 0x53001000:
return CFDP_PACKET_DISTRIBUTOR_STRING;
case 0x53010000:
return HEALTH_TABLE_STRING;
case 0x53010100:
@ -96,10 +387,70 @@ const char *translateObject(object_id_t object) {
return IPC_STORE_STRING;
case 0x53500010:
return TIME_STAMPER_STRING;
case 0x53500020:
return VERIFICATION_REPORTER_STRING;
case 0x53ffffff:
return FSFW_OBJECTS_END_STRING;
case 0xCAFECAFE:
case 0x54000010:
return SPI_TEST_STRING;
case 0x54000020:
return UART_TEST_STRING;
case 0x54000030:
return I2C_TEST_STRING;
case 0x54000040:
return DUMMY_COM_IF_STRING;
case 0x5400AFFE:
return DUMMY_HANDLER_STRING;
case 0x5400CAFE:
return DUMMY_INTERFACE_STRING;
case 0x54123456:
return LIBGPIOD_TEST_STRING;
case 0x54694269:
return TEST_TASK_STRING;
case 0x60000000:
return HEATER_0_PLOC_PROC_BRD_STRING;
case 0x60000001:
return HEATER_1_PCDU_BRD_STRING;
case 0x60000002:
return HEATER_2_ACS_BRD_STRING;
case 0x60000003:
return HEATER_3_OBC_BRD_STRING;
case 0x60000004:
return HEATER_4_CAMERA_STRING;
case 0x60000005:
return HEATER_5_STR_STRING;
case 0x60000006:
return HEATER_6_DRO_STRING;
case 0x60000007:
return HEATER_7_HPA_STRING;
case 0x73000001:
return ACS_BOARD_ASS_STRING;
case 0x73000002:
return SUS_BOARD_ASS_STRING;
case 0x73000003:
return TCS_BOARD_ASS_STRING;
case 0x73000004:
return RW_ASS_STRING;
case 0x73000006:
return CAM_SWITCHER_STRING;
case 0x73000100:
return TM_FUNNEL_STRING;
case 0x73000101:
return PUS_TM_FUNNEL_STRING;
case 0x73000102:
return CFDP_TM_FUNNEL_STRING;
case 0x73000205:
return CFDP_HANDLER_STRING;
case 0x73000206:
return CFDP_DISTRIBUTOR_STRING;
case 0x73010000:
return EIVE_SYSTEM_STRING;
case 0x73010001:
return ACS_SUBSYSTEM_STRING;
case 0x73010002:
return PL_SUBSYSTEM_STRING;
case 0x73500000:
return CCSDS_IP_CORE_BRIDGE_STRING;
case 0xFFFFFFFF:
return NO_OBJECT_STRING;
default:

View File

@ -3,6 +3,6 @@
#include <fsfw/objectmanager/SystemObjectIF.h>
const char* translateObject(object_id_t object);
const char *translateObject(object_id_t object);
#endif /* FSFWCONFIG_OBJECTS_TRANSLATEOBJECTS_H_ */

View File

@ -0,0 +1 @@
target_sources(${OBSW_NAME} PRIVATE DummyPst.cpp)

View File

@ -0,0 +1,139 @@
#include "DummyPst.h"
#include <fsfw/devicehandlers/DeviceHandlerIF.h>
#include <fsfw/serviceinterface/ServiceInterfaceStream.h>
#include <fsfw/tasks/FixedTimeslotTaskIF.h>
#include <objects/systemObjectList.h>
ReturnValue_t dummy_pst::pst(FixedTimeslotTaskIF *thisSequence) {
uint32_t length = thisSequence->getPeriodMs();
thisSequence->addSlot(objects::BPX_BATT_HANDLER, length * 0, DeviceHandlerIF::PERFORM_OPERATION);
thisSequence->addSlot(objects::BPX_BATT_HANDLER, length * 0, DeviceHandlerIF::SEND_WRITE);
thisSequence->addSlot(objects::BPX_BATT_HANDLER, length * 0, DeviceHandlerIF::GET_WRITE);
thisSequence->addSlot(objects::BPX_BATT_HANDLER, length * 0, DeviceHandlerIF::SEND_READ);
thisSequence->addSlot(objects::BPX_BATT_HANDLER, length * 0, DeviceHandlerIF::GET_READ);
thisSequence->addSlot(objects::RW1, length * 0, DeviceHandlerIF::PERFORM_OPERATION);
thisSequence->addSlot(objects::RW1, length * 0, DeviceHandlerIF::SEND_WRITE);
thisSequence->addSlot(objects::RW1, length * 0, DeviceHandlerIF::GET_WRITE);
thisSequence->addSlot(objects::RW1, length * 0, DeviceHandlerIF::SEND_READ);
thisSequence->addSlot(objects::RW1, length * 0, DeviceHandlerIF::GET_READ);
thisSequence->addSlot(objects::RW2, length * 0, DeviceHandlerIF::PERFORM_OPERATION);
thisSequence->addSlot(objects::RW2, length * 0, DeviceHandlerIF::SEND_WRITE);
thisSequence->addSlot(objects::RW2, length * 0, DeviceHandlerIF::GET_WRITE);
thisSequence->addSlot(objects::RW2, length * 0, DeviceHandlerIF::SEND_READ);
thisSequence->addSlot(objects::RW2, length * 0, DeviceHandlerIF::GET_READ);
thisSequence->addSlot(objects::RW3, length * 0, DeviceHandlerIF::PERFORM_OPERATION);
thisSequence->addSlot(objects::RW3, length * 0, DeviceHandlerIF::SEND_WRITE);
thisSequence->addSlot(objects::RW3, length * 0, DeviceHandlerIF::GET_WRITE);
thisSequence->addSlot(objects::RW3, length * 0, DeviceHandlerIF::SEND_READ);
thisSequence->addSlot(objects::RW3, length * 0, DeviceHandlerIF::GET_READ);
thisSequence->addSlot(objects::RW4, length * 0, DeviceHandlerIF::PERFORM_OPERATION);
thisSequence->addSlot(objects::RW4, length * 0, DeviceHandlerIF::SEND_WRITE);
thisSequence->addSlot(objects::RW4, length * 0, DeviceHandlerIF::GET_WRITE);
thisSequence->addSlot(objects::RW4, length * 0, DeviceHandlerIF::SEND_READ);
thisSequence->addSlot(objects::RW4, length * 0, DeviceHandlerIF::GET_READ);
thisSequence->addSlot(objects::STAR_TRACKER, length * 0, DeviceHandlerIF::PERFORM_OPERATION);
thisSequence->addSlot(objects::STAR_TRACKER, length * 0, DeviceHandlerIF::SEND_WRITE);
thisSequence->addSlot(objects::STAR_TRACKER, length * 0, DeviceHandlerIF::GET_WRITE);
thisSequence->addSlot(objects::STAR_TRACKER, length * 0, DeviceHandlerIF::SEND_READ);
thisSequence->addSlot(objects::STAR_TRACKER, length * 0, DeviceHandlerIF::GET_READ);
thisSequence->addSlot(objects::SYRLINKS_HANDLER, length * 0, DeviceHandlerIF::PERFORM_OPERATION);
thisSequence->addSlot(objects::SYRLINKS_HANDLER, length * 0, DeviceHandlerIF::SEND_WRITE);
thisSequence->addSlot(objects::SYRLINKS_HANDLER, length * 0, DeviceHandlerIF::GET_WRITE);
thisSequence->addSlot(objects::SYRLINKS_HANDLER, length * 0, DeviceHandlerIF::SEND_READ);
thisSequence->addSlot(objects::SYRLINKS_HANDLER, length * 0, DeviceHandlerIF::GET_READ);
thisSequence->addSlot(objects::IMTQ_HANDLER, length * 0, DeviceHandlerIF::PERFORM_OPERATION);
thisSequence->addSlot(objects::IMTQ_HANDLER, length * 0, DeviceHandlerIF::SEND_WRITE);
thisSequence->addSlot(objects::IMTQ_HANDLER, length * 0, DeviceHandlerIF::GET_WRITE);
thisSequence->addSlot(objects::IMTQ_HANDLER, length * 0, DeviceHandlerIF::SEND_READ);
thisSequence->addSlot(objects::IMTQ_HANDLER, length * 0, DeviceHandlerIF::GET_READ);
thisSequence->addSlot(objects::ACU_HANDLER, length * 0, DeviceHandlerIF::PERFORM_OPERATION);
thisSequence->addSlot(objects::ACU_HANDLER, length * 0, DeviceHandlerIF::SEND_WRITE);
thisSequence->addSlot(objects::ACU_HANDLER, length * 0, DeviceHandlerIF::GET_WRITE);
thisSequence->addSlot(objects::ACU_HANDLER, length * 0, DeviceHandlerIF::SEND_READ);
thisSequence->addSlot(objects::ACU_HANDLER, length * 0, DeviceHandlerIF::GET_READ);
thisSequence->addSlot(objects::PDU1_HANDLER, length * 0, DeviceHandlerIF::PERFORM_OPERATION);
thisSequence->addSlot(objects::PDU1_HANDLER, length * 0, DeviceHandlerIF::SEND_WRITE);
thisSequence->addSlot(objects::PDU1_HANDLER, length * 0, DeviceHandlerIF::GET_WRITE);
thisSequence->addSlot(objects::PDU1_HANDLER, length * 0, DeviceHandlerIF::SEND_READ);
thisSequence->addSlot(objects::PDU1_HANDLER, length * 0, DeviceHandlerIF::GET_READ);
thisSequence->addSlot(objects::PDU2_HANDLER, length * 0, DeviceHandlerIF::PERFORM_OPERATION);
thisSequence->addSlot(objects::PDU2_HANDLER, length * 0, DeviceHandlerIF::SEND_WRITE);
thisSequence->addSlot(objects::PDU2_HANDLER, length * 0, DeviceHandlerIF::GET_WRITE);
thisSequence->addSlot(objects::PDU2_HANDLER, length * 0, DeviceHandlerIF::SEND_READ);
thisSequence->addSlot(objects::PDU2_HANDLER, length * 0, DeviceHandlerIF::GET_READ);
thisSequence->addSlot(objects::P60DOCK_HANDLER, length * 0, DeviceHandlerIF::PERFORM_OPERATION);
thisSequence->addSlot(objects::P60DOCK_HANDLER, length * 0, DeviceHandlerIF::SEND_WRITE);
thisSequence->addSlot(objects::P60DOCK_HANDLER, length * 0, DeviceHandlerIF::GET_WRITE);
thisSequence->addSlot(objects::P60DOCK_HANDLER, length * 0, DeviceHandlerIF::SEND_READ);
thisSequence->addSlot(objects::P60DOCK_HANDLER, length * 0, DeviceHandlerIF::GET_READ);
thisSequence->addSlot(objects::GYRO_0_ADIS_HANDLER, length * 0,
DeviceHandlerIF::PERFORM_OPERATION);
thisSequence->addSlot(objects::GYRO_0_ADIS_HANDLER, length * 0, DeviceHandlerIF::SEND_WRITE);
thisSequence->addSlot(objects::GYRO_0_ADIS_HANDLER, length * 0, DeviceHandlerIF::GET_WRITE);
thisSequence->addSlot(objects::GYRO_0_ADIS_HANDLER, length * 0, DeviceHandlerIF::SEND_READ);
thisSequence->addSlot(objects::GYRO_0_ADIS_HANDLER, length * 0, DeviceHandlerIF::GET_READ);
thisSequence->addSlot(objects::GYRO_1_L3G_HANDLER, length * 0,
DeviceHandlerIF::PERFORM_OPERATION);
thisSequence->addSlot(objects::GYRO_1_L3G_HANDLER, length * 0, DeviceHandlerIF::SEND_WRITE);
thisSequence->addSlot(objects::GYRO_1_L3G_HANDLER, length * 0, DeviceHandlerIF::GET_WRITE);
thisSequence->addSlot(objects::GYRO_1_L3G_HANDLER, length * 0, DeviceHandlerIF::SEND_READ);
thisSequence->addSlot(objects::GYRO_1_L3G_HANDLER, length * 0, DeviceHandlerIF::GET_READ);
thisSequence->addSlot(objects::GYRO_2_ADIS_HANDLER, length * 0,
DeviceHandlerIF::PERFORM_OPERATION);
thisSequence->addSlot(objects::GYRO_2_ADIS_HANDLER, length * 0, DeviceHandlerIF::SEND_WRITE);
thisSequence->addSlot(objects::GYRO_2_ADIS_HANDLER, length * 0, DeviceHandlerIF::GET_WRITE);
thisSequence->addSlot(objects::GYRO_2_ADIS_HANDLER, length * 0, DeviceHandlerIF::SEND_READ);
thisSequence->addSlot(objects::GYRO_2_ADIS_HANDLER, length * 0, DeviceHandlerIF::GET_READ);
thisSequence->addSlot(objects::GYRO_3_L3G_HANDLER, length * 0,
DeviceHandlerIF::PERFORM_OPERATION);
thisSequence->addSlot(objects::GYRO_3_L3G_HANDLER, length * 0, DeviceHandlerIF::SEND_WRITE);
thisSequence->addSlot(objects::GYRO_3_L3G_HANDLER, length * 0, DeviceHandlerIF::GET_WRITE);
thisSequence->addSlot(objects::GYRO_3_L3G_HANDLER, length * 0, DeviceHandlerIF::SEND_READ);
thisSequence->addSlot(objects::GYRO_3_L3G_HANDLER, length * 0, DeviceHandlerIF::GET_READ);
thisSequence->addSlot(objects::MGM_0_LIS3_HANDLER, length * 0,
DeviceHandlerIF::PERFORM_OPERATION);
thisSequence->addSlot(objects::MGM_0_LIS3_HANDLER, length * 0, DeviceHandlerIF::SEND_WRITE);
thisSequence->addSlot(objects::MGM_0_LIS3_HANDLER, length * 0, DeviceHandlerIF::GET_WRITE);
thisSequence->addSlot(objects::MGM_0_LIS3_HANDLER, length * 0, DeviceHandlerIF::SEND_READ);
thisSequence->addSlot(objects::MGM_0_LIS3_HANDLER, length * 0, DeviceHandlerIF::GET_READ);
thisSequence->addSlot(objects::MGM_2_LIS3_HANDLER, length * 0,
DeviceHandlerIF::PERFORM_OPERATION);
thisSequence->addSlot(objects::MGM_2_LIS3_HANDLER, length * 0, DeviceHandlerIF::SEND_WRITE);
thisSequence->addSlot(objects::MGM_2_LIS3_HANDLER, length * 0, DeviceHandlerIF::GET_WRITE);
thisSequence->addSlot(objects::MGM_2_LIS3_HANDLER, length * 0, DeviceHandlerIF::SEND_READ);
thisSequence->addSlot(objects::MGM_2_LIS3_HANDLER, length * 0, DeviceHandlerIF::GET_READ);
thisSequence->addSlot(objects::PLPCDU_HANDLER, length * 0, DeviceHandlerIF::PERFORM_OPERATION);
thisSequence->addSlot(objects::PLPCDU_HANDLER, length * 0, DeviceHandlerIF::SEND_WRITE);
thisSequence->addSlot(objects::PLPCDU_HANDLER, length * 0, DeviceHandlerIF::GET_WRITE);
thisSequence->addSlot(objects::PLPCDU_HANDLER, length * 0, DeviceHandlerIF::SEND_READ);
thisSequence->addSlot(objects::PLPCDU_HANDLER, length * 0, DeviceHandlerIF::GET_READ);
if (thisSequence->checkSequence() == returnvalue::OK) {
return returnvalue::OK;
} else {
#if FSFW_CPP_OSTREAM_ENABLED == 1
sif::error << "pst::pollingSequenceInitDefault: Sequence invalid!" << std::endl;
#endif
return returnvalue::FAILED;
}
}

View File

@ -0,0 +1,14 @@
#ifndef POLLINGSEQUENCEFACTORY_H_
#define POLLINGSEQUENCEFACTORY_H_
#include <fsfw/returnvalues/returnvalue.h>
class FixedTimeslotTaskIF;
namespace dummy_pst {
ReturnValue_t pst(FixedTimeslotTaskIF *thisSequence);
}
#endif /* POLLINGSEQUENCEINIT_H_ */

View File

@ -3,7 +3,7 @@
#include <fsfw/returnvalues/FwClassIds.h>
#include "commonClassIds.h"
#include "eive/resultClassIds.h"
/**
* Source IDs starts at 73 for now

View File

@ -1,18 +0,0 @@
#ifndef FSFWCONFIG_TMTC_APID_H_
#define FSFWCONFIG_TMTC_APID_H_
#include <stdint.h>
/**
* Application Process Definition: entity, uniquely identified by an
* application process ID (APID), capable of generating telemetry source
* packets and receiving telecommand packets
*
* SOURCE APID: 0x73 / 115 / s
* APID is a 11 bit number
*/
namespace apid {
static const uint16_t EIVE_OBSW = 0x65;
}
#endif /* FSFWCONFIG_TMTC_APID_H_ */

View File

@ -1,23 +0,0 @@
#ifndef CONFIG_TMTC_PUSIDS_HPP_
#define CONFIG_TMTC_PUSIDS_HPP_
namespace pus {
enum Ids {
PUS_SERVICE_1 = 1,
PUS_SERVICE_2 = 2,
PUS_SERVICE_3 = 3,
PUS_SERVICE_3_PSB = 3,
PUS_SERVICE_5 = 5,
PUS_SERVICE_6 = 6,
PUS_SERVICE_8 = 8,
PUS_SERVICE_9 = 9,
PUS_SERVICE_17 = 17,
PUS_SERVICE_19 = 19,
PUS_SERVICE_20 = 20,
PUS_SERVICE_23 = 23,
PUS_SERVICE_200 = 200,
PUS_SERVICE_201 = 201,
};
};
#endif /* CONFIG_TMTC_PUSIDS_HPP_ */

View File

@ -1,9 +1,17 @@
#include <objects/systemObjectList.h>
#include <iostream>
#include "InitMission.h"
#include "commonConfig.h"
#include "fsfw/FSFWVersion.h"
#include "fsfw/controller/ControllerBase.h"
#include "fsfw/ipc/QueueFactory.h"
#include "fsfw/modes/HasModesIF.h"
#include "fsfw/modes/ModeMessage.h"
#include "fsfw/objectmanager/ObjectManager.h"
#include "fsfw/tasks/TaskFactory.h"
#include "scheduling.h"
#ifdef WIN32
static const char* COMPILE_PRINTOUT = "Windows";
#elif LINUX
@ -23,8 +31,11 @@ int main(void) {
<< "v" << common::OBSW_VERSION << " | FSFW v" << fsfw::FSFW_VERSION << " --"
<< std::endl;
std::cout << "-- " << __DATE__ << " " << __TIME__ << " --" << std::endl;
std::cout << "-- "
<< " BSP HOSTED"
<< " --" << std::endl;
initmission::initMission();
scheduling::initMission();
for (;;) {
// suspend main thread by sleeping it.

244
bsp_hosted/scheduling.cpp Normal file
View File

@ -0,0 +1,244 @@
#include "linux/scheduling.h"
#include <bsp_hosted/fsfwconfig/pollingsequence/DummyPst.h>
#include <fsfw/objectmanager/ObjectManager.h>
#include <fsfw/objectmanager/ObjectManagerIF.h>
#include <fsfw/returnvalues/returnvalue.h>
#include <fsfw/serviceinterface/ServiceInterfaceStream.h>
#include <fsfw/tasks/FixedTimeslotTaskIF.h>
#include <fsfw/tasks/PeriodicTaskIF.h>
#include <fsfw/tasks/TaskFactory.h>
#include <mission/utility/InitMission.h>
#include <iostream>
#include "OBSWConfig.h"
#include "ObjectFactory.h"
#include "scheduling.h"
#ifdef LINUX
ServiceInterfaceStream sif::debug("DEBUG");
ServiceInterfaceStream sif::info("INFO");
ServiceInterfaceStream sif::warning("WARNING");
ServiceInterfaceStream sif::error("ERROR", false, false, true);
#else
ServiceInterfaceStream sif::debug("DEBUG", true);
ServiceInterfaceStream sif::info("INFO", true);
ServiceInterfaceStream sif::warning("WARNING", true);
ServiceInterfaceStream sif::error("ERROR", true, false, true);
#endif
ObjectManagerIF* objectManager = nullptr;
void scheduling::initMission() {
sif::info << "Building global objects.." << std::endl;
/* Instantiate global object manager and also create all objects */
ObjectManager::instance()->setObjectFactoryFunction(ObjectFactory::produce, nullptr);
sif::info << "Initializing all objects.." << std::endl;
ObjectManager::instance()->initialize();
/* This function creates and starts all tasks */
initTasks();
}
void scheduling::initTasks() {
TaskFactory* factory = TaskFactory::instance();
if (factory == nullptr) {
/* Should never happen ! */
return;
}
#if OBSW_PRINT_MISSED_DEADLINES == 1
void (*missedDeadlineFunc)(void) = TaskFactory::printMissedDeadline;
#else
void (*missedDeadlineFunc)(void) = nullptr;
#endif
/* TMTC Distribution */
PeriodicTaskIF* tmtcDistributor = factory->createPeriodicTask(
"DIST", 45, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.2, missedDeadlineFunc);
ReturnValue_t result = tmtcDistributor->addComponent(objects::CCSDS_PACKET_DISTRIBUTOR);
if (result != returnvalue::OK) {
sif::error << "Object add component failed" << std::endl;
}
result = tmtcDistributor->addComponent(objects::PUS_PACKET_DISTRIBUTOR);
if (result != returnvalue::OK) {
sif::error << "Object add component failed" << std::endl;
}
result = tmtcDistributor->addComponent(objects::TM_FUNNEL);
if (result != returnvalue::OK) {
sif::error << "Object add component failed" << std::endl;
}
result = tmtcDistributor->addComponent(objects::UDP_TMTC_SERVER);
if (result != returnvalue::OK) {
sif::error << "Add component UDP Unix Bridge failed" << std::endl;
}
result = tmtcDistributor->addComponent(objects::TCP_TMTC_SERVER);
if (result != returnvalue::OK) {
sif::error << "Add component UDP Unix Bridge failed" << std::endl;
}
PeriodicTaskIF* udpPollingTask = factory->createPeriodicTask(
"UDP_POLLING", 70, PeriodicTaskIF::MINIMUM_STACK_SIZE, 2.0, missedDeadlineFunc);
result = udpPollingTask->addComponent(objects::UDP_TMTC_POLLING_TASK);
if (result != returnvalue::OK) {
sif::error << "Add component UDP Polling failed" << std::endl;
}
PeriodicTaskIF* tcpPollingTask = factory->createPeriodicTask(
"TCP_POLLING", 70, PeriodicTaskIF::MINIMUM_STACK_SIZE, 2.0, missedDeadlineFunc);
result = tcpPollingTask->addComponent(objects::TCP_TMTC_POLLING_TASK);
if (result != returnvalue::OK) {
sif::error << "Add component UDP Polling failed" << std::endl;
}
/* PUS Services */
PeriodicTaskIF* pusVerification = factory->createPeriodicTask(
"PUS_VERIF", 40, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.200, missedDeadlineFunc);
result = pusVerification->addComponent(objects::PUS_SERVICE_1_VERIFICATION);
if (result != returnvalue::OK) {
sif::error << "Object add component failed" << std::endl;
}
PeriodicTaskIF* eventHandling = factory->createPeriodicTask(
"EVENTS", 60, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.200, missedDeadlineFunc);
result = eventHandling->addComponent(objects::EVENT_MANAGER);
if (result != returnvalue::OK) {
scheduling::printAddObjectError("EVENT_MNGR", objects::EVENT_MANAGER);
}
result = eventHandling->addComponent(objects::PUS_SERVICE_5_EVENT_REPORTING);
if (result != returnvalue::OK) {
scheduling::printAddObjectError("PUS5", objects::PUS_SERVICE_5_EVENT_REPORTING);
}
PeriodicTaskIF* pusHighPrio = factory->createPeriodicTask(
"PUS_HIGH_PRIO", 50, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.200, missedDeadlineFunc);
result = pusHighPrio->addComponent(objects::PUS_SERVICE_2_DEVICE_ACCESS);
if (result != returnvalue::OK) {
scheduling::printAddObjectError("PUS2", objects::PUS_SERVICE_2_DEVICE_ACCESS);
}
result = pusHighPrio->addComponent(objects::PUS_SERVICE_9_TIME_MGMT);
if (result != returnvalue::OK) {
scheduling::printAddObjectError("PUS9", objects::PUS_SERVICE_9_TIME_MGMT);
}
result = pusHighPrio->addComponent(objects::PUS_SERVICE_3_HOUSEKEEPING);
if (result != returnvalue::OK) {
scheduling::printAddObjectError("PUS3", objects::PUS_SERVICE_3_HOUSEKEEPING);
}
PeriodicTaskIF* pusMedPrio = factory->createPeriodicTask(
"PUS_MED_PRIO", 40, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.8, missedDeadlineFunc);
result = pusMedPrio->addComponent(objects::PUS_SERVICE_8_FUNCTION_MGMT);
if (result != returnvalue::OK) {
scheduling::printAddObjectError("PUS8", objects::PUS_SERVICE_8_FUNCTION_MGMT);
}
result = pusMedPrio->addComponent(objects::PUS_SERVICE_200_MODE_MGMT);
if (result != returnvalue::OK) {
scheduling::printAddObjectError("PUS200", objects::PUS_SERVICE_200_MODE_MGMT);
}
result = pusMedPrio->addComponent(objects::PUS_SERVICE_20_PARAMETERS);
if (result != returnvalue::OK) {
scheduling::printAddObjectError("PUS20", objects::PUS_SERVICE_20_PARAMETERS);
}
PeriodicTaskIF* pusLowPrio = factory->createPeriodicTask(
"PUS_LOW_PRIO", 30, PeriodicTaskIF::MINIMUM_STACK_SIZE, 1.6, missedDeadlineFunc);
result = pusLowPrio->addComponent(objects::PUS_SERVICE_17_TEST);
if (result != returnvalue::OK) {
scheduling::printAddObjectError("PUS17", objects::PUS_SERVICE_17_TEST);
}
PeriodicTaskIF* thermalTask = factory->createPeriodicTask(
"THERMAL_CTL_TASK", 40, PeriodicTaskIF::MINIMUM_STACK_SIZE, 1.0, missedDeadlineFunc);
result = thermalTask->addComponent(objects::CORE_CONTROLLER);
if (result != returnvalue::OK) {
scheduling::printAddObjectError("Core controller dummy", objects::CORE_CONTROLLER);
}
result = thermalTask->addComponent(objects::THERMAL_CONTROLLER);
if (result != returnvalue::OK) {
scheduling::printAddObjectError("THERMAL_CONTROLLER", objects::THERMAL_CONTROLLER);
}
FixedTimeslotTaskIF* pstTask = factory->createFixedTimeslotTask(
"DUMMY_PST", 75, PeriodicTaskIF::MINIMUM_STACK_SIZE * 4, 0.5, missedDeadlineFunc);
result = dummy_pst::pst(pstTask);
if (result != returnvalue::OK) {
sif::error << "Failed to add dummy pst to fixed timeslot task" << std::endl;
}
#if OBSW_ADD_PLOC_SUPERVISOR == 1
PeriodicTaskIF* supvHelperTask = factory->createPeriodicTask(
"PLOC_SUPV_HELPER", 20, PeriodicTaskIF::MINIMUM_STACK_SIZE, 1.0, missedDeadlineFunc);
result = supvHelperTask->addComponent(objects::PLOC_SUPERVISOR_HELPER);
if (result != returnvalue::OK) {
scheduling::printAddObjectError("PLOC_SUPV_HELPER", objects::PLOC_SUPERVISOR_HELPER);
}
#endif /* OBSW_ADD_PLOC_SUPERVISOR */
PeriodicTaskIF* plTask = factory->createPeriodicTask(
"PL_TASK", 25, PeriodicTaskIF::MINIMUM_STACK_SIZE, 1.0, missedDeadlineFunc);
scheduling::addMpsocSupvHandlers(plTask);
#if OBSW_ADD_TEST_CODE == 1
result = testTask->addComponent(objects::TEST_TASK);
if (result != returnvalue::OK) {
scheduling::printAddObjectError("TEST_TASK", objects::TEST_TASK);
}
#endif /* OBSW_ADD_TEST_CODE == 1 */
PeriodicTaskIF* dummyTask = factory->createPeriodicTask(
"DUMMY_TASK", 30, PeriodicTaskIF::MINIMUM_STACK_SIZE, 1.0, missedDeadlineFunc);
dummyTask->addComponent(objects::SUS_0_N_LOC_XFYFZM_PT_XF);
dummyTask->addComponent(objects::SUS_1_N_LOC_XBYFZM_PT_XB);
dummyTask->addComponent(objects::SUS_2_N_LOC_XFYBZB_PT_YB);
dummyTask->addComponent(objects::SUS_3_N_LOC_XFYBZF_PT_YF);
dummyTask->addComponent(objects::SUS_4_N_LOC_XMYFZF_PT_ZF);
dummyTask->addComponent(objects::SUS_5_N_LOC_XFYMZB_PT_ZB);
dummyTask->addComponent(objects::SUS_6_R_LOC_XFYBZM_PT_XF);
dummyTask->addComponent(objects::SUS_7_R_LOC_XBYBZM_PT_XB);
dummyTask->addComponent(objects::SUS_8_R_LOC_XBYBZB_PT_YB);
dummyTask->addComponent(objects::SUS_9_R_LOC_XBYBZB_PT_YF);
dummyTask->addComponent(objects::SUS_10_N_LOC_XMYBZF_PT_ZF);
dummyTask->addComponent(objects::SUS_11_R_LOC_XBYMZB_PT_ZB);
dummyTask->addComponent(objects::RTD_0_IC3_PLOC_HEATSPREADER);
dummyTask->addComponent(objects::RTD_1_IC4_PLOC_MISSIONBOARD);
dummyTask->addComponent(objects::RTD_2_IC5_4K_CAMERA);
dummyTask->addComponent(objects::RTD_3_IC6_DAC_HEATSPREADER);
dummyTask->addComponent(objects::RTD_4_IC7_STARTRACKER);
dummyTask->addComponent(objects::RTD_5_IC8_RW1_MX_MY);
dummyTask->addComponent(objects::RTD_6_IC9_DRO);
dummyTask->addComponent(objects::RTD_7_IC10_SCEX);
dummyTask->addComponent(objects::RTD_8_IC11_X8);
dummyTask->addComponent(objects::RTD_9_IC12_HPA);
dummyTask->addComponent(objects::RTD_10_IC13_PL_TX);
dummyTask->addComponent(objects::RTD_11_IC14_MPA);
dummyTask->addComponent(objects::RTD_12_IC15_ACU);
dummyTask->addComponent(objects::RTD_13_IC16_PLPCDU_HEATSPREADER);
dummyTask->addComponent(objects::RTD_14_IC17_TCS_BOARD);
dummyTask->addComponent(objects::RTD_15_IC18_IMTQ);
sif::info << "Starting tasks.." << std::endl;
tmtcDistributor->startTask();
udpPollingTask->startTask();
tcpPollingTask->startTask();
pusVerification->startTask();
eventHandling->startTask();
pusHighPrio->startTask();
pusMedPrio->startTask();
pusLowPrio->startTask();
pstTask->startTask();
thermalTask->startTask();
dummyTask->startTask();
#if OBSW_ADD_PLOC_SUPERVISOR == 1
supvHelperTask->startTask();
#endif
#if OBSW_ADD_PLOC_SUPERVISOR == 1 || OBSW_ADD_PLOC_MPSOC == 1
plTask->startTask();
#endif
#if OBSW_ADD_TEST_CODE == 1
testTask->startTask();
#endif /* OBSW_ADD_TEST_CODE == 1 */
sif::info << "Tasks started.." << std::endl;
}

6
bsp_hosted/scheduling.h Normal file
View File

@ -0,0 +1,6 @@
#pragma once
namespace scheduling {
void initMission();
void initTasks();
}; // namespace scheduling

View File

@ -1,9 +1,6 @@
target_sources(${OBSW_NAME} PUBLIC
InitMission.cpp
main.cpp
gpioInit.cpp
ObjectFactory.cpp
)
target_sources(${OBSW_NAME} PUBLIC InitMission.cpp main.cpp gpioInit.cpp
ObjectFactory.cpp RPiSdCardManager.cpp)
add_subdirectory(boardconfig)
add_subdirectory(boardtest)
add_subdirectory(fsfwconfig)

View File

@ -1,12 +1,14 @@
#include "InitMission.h"
#include <fsfw/devicehandlers/DeviceHandlerIF.h>
#include <fsfw/objectmanager/ObjectManager.h>
#include <fsfw/objectmanager/ObjectManagerIF.h>
#include <fsfw/returnvalues/HasReturnvaluesIF.h>
#include <fsfw/returnvalues/returnvalue.h>
#include <fsfw/serviceinterface/ServiceInterface.h>
#include <fsfw/tasks/FixedTimeslotTaskIF.h>
#include <fsfw/tasks/PeriodicTaskIF.h>
#include <fsfw/tasks/TaskFactory.h>
#include <linux/InitMission.h>
#include <mission/utility/InitMission.h>
#include <iostream>
@ -36,7 +38,7 @@ void initmission::initMission() {
void initmission::initTasks() {
TaskFactory* factory = TaskFactory::instance();
ReturnValue_t result = HasReturnvaluesIF::RETURN_OK;
ReturnValue_t result = returnvalue::OK;
if (factory == nullptr) {
/* Should never happen ! */
return;
@ -51,15 +53,15 @@ void initmission::initTasks() {
PeriodicTaskIF* tmTcDistributor = factory->createPeriodicTask(
"DIST", 40, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.2, missedDeadlineFunc);
result = tmTcDistributor->addComponent(objects::CCSDS_PACKET_DISTRIBUTOR);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != returnvalue::OK) {
sif::error << "Object add component failed" << std::endl;
}
result = tmTcDistributor->addComponent(objects::PUS_PACKET_DISTRIBUTOR);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != returnvalue::OK) {
sif::error << "Object add component failed" << std::endl;
}
result = tmTcDistributor->addComponent(objects::TM_FUNNEL);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != returnvalue::OK) {
sif::error << "Object add component failed" << std::endl;
}
@ -67,16 +69,22 @@ void initmission::initTasks() {
PeriodicTaskIF* tmtcBridgeTask = factory->createPeriodicTask(
"TMTC_BRIDGE", 50, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.2, missedDeadlineFunc);
result = tmtcBridgeTask->addComponent(objects::TMTC_BRIDGE);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != returnvalue::OK) {
sif::error << "Add component TMTC Bridge failed" << std::endl;
}
PeriodicTaskIF* tmtcPollingTask = factory->createPeriodicTask(
"TMTC_POLLING", 80, PeriodicTaskIF::MINIMUM_STACK_SIZE, 2.0, missedDeadlineFunc);
result = tmtcPollingTask->addComponent(objects::TMTC_POLLING_TASK);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != returnvalue::OK) {
sif::error << "Add component TMTC Polling failed" << std::endl;
}
#if OBSW_ADD_SCEX_DEVICE == 1
PeriodicTaskIF* scexDevHandler;
PeriodicTaskIF* scexReaderTask;
scheduling::schedulingScex(*factory, scexDevHandler, scexReaderTask);
#endif
/* PUS Services */
std::vector<PeriodicTaskIF*> pusTasks;
createPusTasks(*factory, missedDeadlineFunc, pusTasks);
@ -109,6 +117,10 @@ void initmission::initTasks() {
#endif /* OBSW_ADD_TEST_CODE == 1 */
taskStarter(pstTasks, "PST Tasks");
#if OBSW_ADD_SCEX_DEVICE == 1
scexDevHandler->startTask();
scexReaderTask->startTask();
#endif
#if OBSW_ADD_TEST_PST == 1
if (startTestPst) {
pstTestTask->startTask();
@ -120,11 +132,11 @@ void initmission::initTasks() {
void initmission::createPusTasks(TaskFactory& factory,
TaskDeadlineMissedFunction missedDeadlineFunc,
std::vector<PeriodicTaskIF*>& taskVec) {
ReturnValue_t result = HasReturnvaluesIF::RETURN_OK;
ReturnValue_t result = returnvalue::OK;
PeriodicTaskIF* pusVerification = factory.createPeriodicTask(
"PUS_VERIF", 40, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.200, missedDeadlineFunc);
result = pusVerification->addComponent(objects::PUS_SERVICE_1_VERIFICATION);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != returnvalue::OK) {
sif::error << "Object add component failed" << std::endl;
}
taskVec.push_back(pusVerification);
@ -132,11 +144,11 @@ void initmission::createPusTasks(TaskFactory& factory,
PeriodicTaskIF* pusEvents = factory.createPeriodicTask(
"PUS_EVENTS", 60, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.200, missedDeadlineFunc);
result = pusEvents->addComponent(objects::PUS_SERVICE_5_EVENT_REPORTING);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != returnvalue::OK) {
initmission::printAddObjectError("PUS_EVENTS", objects::PUS_SERVICE_5_EVENT_REPORTING);
}
result = pusEvents->addComponent(objects::EVENT_MANAGER);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != returnvalue::OK) {
initmission::printAddObjectError("PUS_MGMT", objects::EVENT_MANAGER);
}
taskVec.push_back(pusEvents);
@ -144,11 +156,11 @@ void initmission::createPusTasks(TaskFactory& factory,
PeriodicTaskIF* pusHighPrio = factory.createPeriodicTask(
"PUS_HIGH_PRIO", 50, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.200, missedDeadlineFunc);
result = pusHighPrio->addComponent(objects::PUS_SERVICE_2_DEVICE_ACCESS);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != returnvalue::OK) {
initmission::printAddObjectError("PUS2", objects::PUS_SERVICE_2_DEVICE_ACCESS);
}
result = pusHighPrio->addComponent(objects::PUS_SERVICE_9_TIME_MGMT);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != returnvalue::OK) {
initmission::printAddObjectError("PUS9", objects::PUS_SERVICE_9_TIME_MGMT);
}
taskVec.push_back(pusHighPrio);
@ -156,19 +168,19 @@ void initmission::createPusTasks(TaskFactory& factory,
PeriodicTaskIF* pusMedPrio = factory.createPeriodicTask(
"PUS_MED_PRIO", 40, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.8, missedDeadlineFunc);
result = pusMedPrio->addComponent(objects::PUS_SERVICE_8_FUNCTION_MGMT);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != returnvalue::OK) {
initmission::printAddObjectError("PUS8", objects::PUS_SERVICE_8_FUNCTION_MGMT);
}
result = pusMedPrio->addComponent(objects::PUS_SERVICE_200_MODE_MGMT);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != returnvalue::OK) {
initmission::printAddObjectError("PUS200", objects::PUS_SERVICE_200_MODE_MGMT);
}
result = pusMedPrio->addComponent(objects::PUS_SERVICE_20_PARAMETERS);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != returnvalue::OK) {
initmission::printAddObjectError("PUS20", objects::PUS_SERVICE_20_PARAMETERS);
}
result = pusMedPrio->addComponent(objects::PUS_SERVICE_3_HOUSEKEEPING);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != returnvalue::OK) {
initmission::printAddObjectError("PUS3", objects::PUS_SERVICE_3_HOUSEKEEPING);
}
taskVec.push_back(pusMedPrio);
@ -176,11 +188,11 @@ void initmission::createPusTasks(TaskFactory& factory,
PeriodicTaskIF* pusLowPrio = factory.createPeriodicTask(
"PUS_LOW_PRIO", 30, PeriodicTaskIF::MINIMUM_STACK_SIZE, 1.6, missedDeadlineFunc);
result = pusLowPrio->addComponent(objects::PUS_SERVICE_17_TEST);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != returnvalue::OK) {
initmission::printAddObjectError("PUS17", objects::PUS_SERVICE_17_TEST);
}
result = pusLowPrio->addComponent(objects::INTERNAL_ERROR_REPORTER);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != returnvalue::OK) {
initmission::printAddObjectError("INT_ERR_RPRT", objects::INTERNAL_ERROR_REPORTER);
}
taskVec.push_back(pusLowPrio);
@ -189,45 +201,55 @@ void initmission::createPusTasks(TaskFactory& factory,
void initmission::createPstTasks(TaskFactory& factory,
TaskDeadlineMissedFunction missedDeadlineFunc,
std::vector<PeriodicTaskIF*>& taskVec) {
ReturnValue_t result = HasReturnvaluesIF::RETURN_OK;
ReturnValue_t result = returnvalue::OK;
#if OBSW_ADD_SPI_TEST_CODE == 0
FixedTimeslotTaskIF* spiPst = factory.createFixedTimeslotTask(
"SPI_PST", 70, PeriodicTaskIF::MINIMUM_STACK_SIZE * 4, 1.0, missedDeadlineFunc);
result = pst::pstSpi(spiPst);
if (result != HasReturnvaluesIF::RETURN_OK) {
sif::error << "InitMission::initTasks: Creating PST failed!" << std::endl;
if (result != returnvalue::OK) {
if (result != FixedTimeslotTaskIF::SLOT_LIST_EMPTY) {
sif::error << "InitMission::createPstTasks: Creating PST failed!" << std::endl;
}
} else {
taskVec.push_back(spiPst);
}
taskVec.push_back(spiPst);
#endif
}
void initmission::createTestTasks(TaskFactory& factory,
TaskDeadlineMissedFunction missedDeadlineFunc,
std::vector<PeriodicTaskIF*>& taskVec) {
ReturnValue_t result = HasReturnvaluesIF::RETURN_OK;
ReturnValue_t result = returnvalue::OK;
PeriodicTaskIF* testTask = factory.createPeriodicTask(
"TEST_TASK", 40, PeriodicTaskIF::MINIMUM_STACK_SIZE, 2.0, missedDeadlineFunc);
result = testTask->addComponent(objects::TEST_TASK);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != returnvalue::OK) {
initmission::printAddObjectError("TEST_TASK", objects::TEST_TASK);
}
#if OBSW_ADD_SPI_TEST_CODE == 1
result = testTask->addComponent(objects::SPI_TEST);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != returnvalue::OK) {
initmission::printAddObjectError("SPI_TEST", objects::SPI_TEST);
}
#endif /* RPI_ADD_SPI_TEST == 1 */
#if RPI_ADD_GPIO_TEST == 1
result = testTask->addComponent(objects::LIBGPIOD_TEST);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != returnvalue::OK) {
initmission::printAddObjectError("GPIOD_TEST", objects::LIBGPIOD_TEST);
}
#endif /* RPI_ADD_GPIO_TEST == 1 */
#if OBSW_ADD_UART_TEST_CODE == 1
result = testTask->addComponent(objects::UART_TEST);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != returnvalue::OK) {
initmission::printAddObjectError("UART_TEST", objects::UART_TEST);
}
PeriodicTaskIF* scexReaderTask = factory.createPeriodicTask(
"SCEX_UART_READER", 20, PeriodicTaskIF::MINIMUM_STACK_SIZE, 2.0, missedDeadlineFunc);
result = scexReaderTask->addComponent(objects::SCEX_UART_READER);
if (result != returnvalue::OK) {
initmission::printAddObjectError("SCEX_UART_READER", objects::SCEX_UART_READER);
}
taskVec.push_back(scexReaderTask);
#endif /* RPI_ADD_GPIO_TEST == 1 */
taskVec.push_back(testTask);
@ -237,7 +259,7 @@ void initmission::createTestTasks(TaskFactory& factory,
FixedTimeslotTaskIF* pstTestTask = factory->createFixedTimeslotTask(
"TEST_PST", 50, PeriodicTaskIF::MINIMUM_STACK_SIZE * 2, 2.0, missedDeadlineFunc);
result = pst::pstTest(pstTestTask);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != returnvalue::OK) {
sif::info << "initmission::initTasks: ACS PST empty or invalid" << std::endl;
startTestPst = false;
}

View File

@ -3,7 +3,7 @@
#include <vector>
#include "fsfw/tasks/Typedef.h"
#include "fsfw/tasks/definitions.h"
class PeriodicTaskIF;
class TaskFactory;

View File

@ -28,6 +28,7 @@
#define OBSW_ADD_RTD_DEVICES 0
#define OBSW_ADD_PL_PCDU 0
#define OBSW_ADD_TMP_DEVICES 0
#define OBSW_ADD_SCEX_DEVICE 1
#define OBSW_ADD_RAD_SENSORS 0
#define OBSW_ADD_SYRLINKS 0
#define OBSW_STAR_TRACKER_GROUND_CONFIG 1
@ -102,6 +103,12 @@
/*******************************************************************/
#cmakedefine EIVE_BUILD_GPSD_GPS_HANDLER
#define OBSW_ADD_CCSDS_IP_CORES 0
// Set to 1 if all telemetry should be sent to the PTME IP Core
#define OBSW_TM_TO_PTME 0
// Set to 1 if telecommands are received via the PDEC IP Core
#define OBSW_TC_FROM_PDEC 0
#cmakedefine LIBGPS_VERSION_MAJOR @LIBGPS_VERSION_MAJOR@
#cmakedefine LIBGPS_VERSION_MINOR @LIBGPS_VERSION_MINOR@

View File

@ -1,5 +1,8 @@
#include "ObjectFactory.h"
#include <bsp_linux_board/RPiSdCardManager.h>
#include <linux/devices/ScexUartReader.h>
#include "OBSWConfig.h"
#include "devConf.h"
#include "devices/addresses.h"
@ -18,9 +21,8 @@
#include "mission/core/GenericFactory.h"
#include "mission/devices/GPSHyperionHandler.h"
#include "mission/devices/GyroADIS1650XHandler.h"
#include "mission/utility/TmFunnel.h"
#include "mission/tmtc/TmFunnel.h"
#include "objects/systemObjectList.h"
#include "tmtc/apid.h"
#include "tmtc/pusIds.h"
/* UDP server includes */
@ -32,8 +34,8 @@
#include "fsfw/osal/common/UdpTmTcBridge.h"
#endif
#include <fsfw_hal/linux/uart/UartComIF.h>
#include <fsfw_hal/linux/uart/UartCookie.h>
#include <fsfw_hal/linux/serial/SerialComIF.h>
#include <fsfw_hal/linux/serial/SerialCookie.h>
#include "fsfw_hal/common/gpio/GpioCookie.h"
#include "fsfw_hal/devicehandlers/GyroL3GD20Handler.h"
@ -45,8 +47,8 @@
#include "fsfw_hal/linux/spi/SpiCookie.h"
void Factory::setStaticFrameworkObjectIds() {
PusServiceBase::packetSource = objects::PUS_PACKET_DISTRIBUTOR;
PusServiceBase::packetDestination = objects::TM_FUNNEL;
PusServiceBase::PUS_DISTRIBUTOR = objects::PUS_PACKET_DISTRIBUTOR;
PusServiceBase::PACKET_DESTINATION = objects::TM_FUNNEL;
CommandingServiceBase::defaultPacketSource = objects::PUS_PACKET_DISTRIBUTOR;
CommandingServiceBase::defaultPacketDestination = objects::TM_FUNNEL;
@ -54,9 +56,6 @@ void Factory::setStaticFrameworkObjectIds() {
TmFunnel::downlinkDestination = objects::TMTC_BRIDGE;
// No storage object for now.
TmFunnel::storageDestination = objects::NO_OBJECT;
VerificationReporter::messageReceiver = objects::PUS_SERVICE_1_VERIFICATION;
TmPacketBase::timeStamperId = objects::TIME_STAMPER;
}
void ObjectFactory::produce(void* args) {
@ -67,7 +66,7 @@ void ObjectFactory::produce(void* args) {
GpioCookie* gpioCookie = nullptr;
static_cast<void>(gpioCookie);
SpiComIF* spiComIF = new SpiComIF(objects::SPI_COM_IF, gpioIF);
SpiComIF* spiComIF = new SpiComIF(objects::SPI_MAIN_COM_IF, spi::DEV, gpioIF);
static_cast<void>(spiComIF);
auto pwrSwitcher = new DummyPowerSwitcher(objects::PCDU_HANDLER, 18, 0);
static_cast<void>(pwrSwitcher);
@ -76,12 +75,17 @@ void ObjectFactory::produce(void* args) {
createRpiAcsBoard(gpioIF, spiDev);
#endif
#if OBSW_ADD_SUN_SENSORS == 1 || defined(OBSW_ADD_RTD_DEVICES)
#if OBSW_ADD_SUN_SENSORS == 1 || OBSW_ADD_RTD_DEVICES == 1
#ifdef RASPBERRY_PI
rpi::gpio::initSpiCsDecoder(gpioIF);
#endif
#endif
#if OBSW_ADD_SCEX_DEVICE == 1
auto* sdcMan = new RPiSdCardManager("/tmp");
createScexComponents(uart::DEV, pwrSwitcher, *sdcMan, true, std::nullopt);
#endif
#if OBSW_ADD_SUN_SENSORS == 1
createSunSensorComponents(gpioIF, spiComIF, pwrSwitcher, spi::DEV);
#endif
@ -116,73 +120,72 @@ void ObjectFactory::createRpiAcsBoard(GpioIF* gpioIF, std::string spiDev) {
gpio::Direction::OUT, gpio::Levels::HIGH);
gpioIF->addGpios(gpioCookie);
SpiCookie* spiCookie =
new SpiCookie(addresses::MGM_0_LIS3, gpioIds::MGM_0_LIS3_CS, spiDev,
MGMLIS3MDL::MAX_BUFFER_SIZE, spi::DEFAULT_LIS3_MODE, spi::DEFAULT_LIS3_SPEED);
new SpiCookie(addresses::MGM_0_LIS3, gpioIds::MGM_0_LIS3_CS, MGMLIS3MDL::MAX_BUFFER_SIZE,
spi::DEFAULT_LIS3_MODE, spi::DEFAULT_LIS3_SPEED);
auto mgmLis3Handler =
new MgmLIS3MDLHandler(objects::MGM_0_LIS3_HANDLER, objects::SPI_COM_IF, spiCookie, 0);
new MgmLIS3MDLHandler(objects::MGM_0_LIS3_HANDLER, objects::SPI_MAIN_COM_IF, spiCookie, 0);
mgmLis3Handler->setStartUpImmediately();
#if OBSW_TEST_ACS == 1
mgmLis3Handler->setToGoToNormalMode(true);
#endif
spiCookie =
new SpiCookie(addresses::MGM_1_RM3100, gpioIds::MGM_1_RM3100_CS, spiDev,
RM3100::MAX_BUFFER_SIZE, spi::DEFAULT_RM3100_MODE, spi::DEFAULT_RM3100_SPEED);
new SpiCookie(addresses::MGM_1_RM3100, gpioIds::MGM_1_RM3100_CS, RM3100::MAX_BUFFER_SIZE,
spi::DEFAULT_RM3100_MODE, spi::DEFAULT_RM3100_SPEED);
auto mgmRm3100Handler =
new MgmRM3100Handler(objects::MGM_1_RM3100_HANDLER, objects::SPI_COM_IF, spiCookie, 0);
new MgmRM3100Handler(objects::MGM_1_RM3100_HANDLER, objects::SPI_MAIN_COM_IF, spiCookie, 0);
mgmRm3100Handler->setStartUpImmediately();
#if OBSW_TEST_ACS == 1
mgmRm3100Handler->setToGoToNormalMode(true);
#endif
spiCookie =
new SpiCookie(addresses::MGM_2_LIS3, gpioIds::MGM_2_LIS3_CS, spiDev,
MGMLIS3MDL::MAX_BUFFER_SIZE, spi::DEFAULT_LIS3_MODE, spi::DEFAULT_LIS3_SPEED);
new SpiCookie(addresses::MGM_2_LIS3, gpioIds::MGM_2_LIS3_CS, MGMLIS3MDL::MAX_BUFFER_SIZE,
spi::DEFAULT_LIS3_MODE, spi::DEFAULT_LIS3_SPEED);
mgmLis3Handler =
new MgmLIS3MDLHandler(objects::MGM_2_LIS3_HANDLER, objects::SPI_COM_IF, spiCookie, 0);
new MgmLIS3MDLHandler(objects::MGM_2_LIS3_HANDLER, objects::SPI_MAIN_COM_IF, spiCookie, 0);
mgmLis3Handler->setStartUpImmediately();
#if OBSW_TEST_ACS == 1
mgmLis3Handler->setToGoToNormalMode(true);
#endif
spiCookie =
new SpiCookie(addresses::MGM_3_RM3100, gpioIds::MGM_3_RM3100_CS, spiDev,
RM3100::MAX_BUFFER_SIZE, spi::DEFAULT_RM3100_MODE, spi::DEFAULT_RM3100_SPEED);
new SpiCookie(addresses::MGM_3_RM3100, gpioIds::MGM_3_RM3100_CS, RM3100::MAX_BUFFER_SIZE,
spi::DEFAULT_RM3100_MODE, spi::DEFAULT_RM3100_SPEED);
mgmRm3100Handler =
new MgmRM3100Handler(objects::MGM_3_RM3100_HANDLER, objects::SPI_COM_IF, spiCookie, 0);
new MgmRM3100Handler(objects::MGM_3_RM3100_HANDLER, objects::SPI_MAIN_COM_IF, spiCookie, 0);
mgmRm3100Handler->setStartUpImmediately();
#if OBSW_TEST_ACS == 1
mgmRm3100Handler->setToGoToNormalMode(true);
#endif
spiCookie =
new SpiCookie(addresses::GYRO_0_ADIS, gpioIds::GYRO_0_ADIS_CS, spiDev,
ADIS1650X::MAXIMUM_REPLY_SIZE, spi::DEFAULT_L3G_MODE, spi::DEFAULT_L3G_SPEED);
auto adisHandler = new GyroADIS1650XHandler(objects::GYRO_0_ADIS_HANDLER, objects::SPI_COM_IF,
spiCookie, ADIS1650X::Type::ADIS16505);
adisHandler->setStartUpImmediately();
spiCookie =
new SpiCookie(addresses::GYRO_1_L3G, gpioIds::GYRO_1_L3G_CS, spiDev, L3GD20H::MAX_BUFFER_SIZE,
new SpiCookie(addresses::GYRO_0_ADIS, gpioIds::GYRO_0_ADIS_CS, ADIS1650X::MAXIMUM_REPLY_SIZE,
spi::DEFAULT_L3G_MODE, spi::DEFAULT_L3G_SPEED);
auto adisHandler =
new GyroADIS1650XHandler(objects::GYRO_0_ADIS_HANDLER, objects::SPI_MAIN_COM_IF, spiCookie,
ADIS1650X::Type::ADIS16505);
adisHandler->setStartUpImmediately();
spiCookie = new SpiCookie(addresses::GYRO_1_L3G, gpioIds::GYRO_1_L3G_CS, L3GD20H::MAX_BUFFER_SIZE,
spi::DEFAULT_L3G_MODE, spi::DEFAULT_L3G_SPEED);
auto gyroL3gHandler =
new GyroHandlerL3GD20H(objects::GYRO_1_L3G_HANDLER, objects::SPI_COM_IF, spiCookie, 0);
new GyroHandlerL3GD20H(objects::GYRO_1_L3G_HANDLER, objects::SPI_MAIN_COM_IF, spiCookie, 0);
gyroL3gHandler->setStartUpImmediately();
#if OBSW_TEST_ACS == 1
gyroL3gHandler->setToGoToNormalMode(true);
#endif
spiCookie =
new SpiCookie(addresses::GYRO_2_ADIS, gpioIds::GYRO_2_ADIS_CS, spiDev,
ADIS1650X::MAXIMUM_REPLY_SIZE, spi::DEFAULT_L3G_MODE, spi::DEFAULT_L3G_SPEED);
adisHandler = new GyroADIS1650XHandler(objects::GYRO_2_ADIS_HANDLER, objects::SPI_COM_IF,
new SpiCookie(addresses::GYRO_2_ADIS, gpioIds::GYRO_2_ADIS_CS, ADIS1650X::MAXIMUM_REPLY_SIZE,
spi::DEFAULT_L3G_MODE, spi::DEFAULT_L3G_SPEED);
adisHandler = new GyroADIS1650XHandler(objects::GYRO_2_ADIS_HANDLER, objects::SPI_MAIN_COM_IF,
spiCookie, ADIS1650X::Type::ADIS16505);
adisHandler->setStartUpImmediately();
spiCookie =
new SpiCookie(addresses::GYRO_3_L3G, gpioIds::GYRO_3_L3G_CS, spiDev, L3GD20H::MAX_BUFFER_SIZE,
spi::DEFAULT_L3G_MODE, spi::DEFAULT_L3G_SPEED);
spiCookie = new SpiCookie(addresses::GYRO_3_L3G, gpioIds::GYRO_3_L3G_CS, L3GD20H::MAX_BUFFER_SIZE,
spi::DEFAULT_L3G_MODE, spi::DEFAULT_L3G_SPEED);
gyroL3gHandler =
new GyroHandlerL3GD20H(objects::GYRO_3_L3G_HANDLER, objects::SPI_COM_IF, spiCookie, 0);
new GyroHandlerL3GD20H(objects::GYRO_3_L3G_HANDLER, objects::SPI_MAIN_COM_IF, spiCookie, 0);
gyroL3gHandler->setStartUpImmediately();
#if OBSW_TEST_ACS == 1
gyroL3gHandler->setToGoToNormalMode(true);
@ -199,7 +202,7 @@ void ObjectFactory::createTestTasks() {
#if OBSW_ADD_UART_TEST_CODE == 1
new UartTestClass(objects::UART_TEST);
#else
new UartComIF(objects::UART_COM_IF);
newSerialComIF(objects::UART_COM_IF);
#endif
#if RPI_LOOPBACK_TEST_GPIO == 1

View File

@ -0,0 +1,13 @@
#include "RPiSdCardManager.h"
RPiSdCardManager::RPiSdCardManager(std::string prefix) : prefix(std::move(prefix)) {}
const std::string& RPiSdCardManager::getCurrentMountPrefix() const { return prefix; }
bool RPiSdCardManager::isSdCardUsable(sd::SdCard sdCard) { return true; }
std::optional<sd::SdCard> RPiSdCardManager::getPreferredSdCard() const { return std::nullopt; }
void RPiSdCardManager::setActiveSdCard(sd::SdCard sdCard) {}
std::optional<sd::SdCard> RPiSdCardManager::getActiveSdCard() const { return std::nullopt; }

View File

@ -0,0 +1,18 @@
#ifndef BSP_LINUX_BOARD_RPISDCARDMANAGER_H_
#define BSP_LINUX_BOARD_RPISDCARDMANAGER_H_
#include <mission/memory/SdCardMountedIF.h>
class RPiSdCardManager : public SdCardMountedIF {
public:
RPiSdCardManager(std::string prefix);
const std::string& getCurrentMountPrefix() const override;
bool isSdCardUsable(sd::SdCard sdCard) override;
std::optional<sd::SdCard> getPreferredSdCard() const override;
void setActiveSdCard(sd::SdCard sdCard) override;
std::optional<sd::SdCard> getActiveSdCard() const override;
private:
std::string prefix;
};
#endif /* BSP_LINUX_BOARD_RPISDCARDMANAGER_H_ */

View File

@ -1,7 +1,3 @@
target_sources(${OBSW_NAME} PRIVATE
print.c
)
target_sources(${OBSW_NAME} PRIVATE print.c)
target_include_directories(${OBSW_NAME} PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}
)
target_include_directories(${OBSW_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})

View File

@ -1,6 +1 @@
target_sources(${OBSW_NAME} PRIVATE
)
target_sources(${OBSW_NAME} PRIVATE)

View File

@ -13,6 +13,12 @@ static constexpr char DEV[] = "/dev/spidev0.1";
}
namespace uart {
static constexpr char DEV[] = "/dev/serial0";
}
/* Adapt these values accordingly */
namespace gpio {
static constexpr uint8_t MGM_0_BCM_PIN = 17;

View File

@ -40,14 +40,14 @@ void rpi::gpio::initSpiCsDecoder(GpioIF* gpioComIF) {
for (const auto& info : muxInfo) {
result = createRpiGpioConfig(spiMuxGpios, info.gpioId, info.bcmNum, info.consumer,
Direction::OUT, Levels::LOW);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != returnvalue::OK) {
sif::error << "Creating Raspberry Pi SPI Mux GPIO failed with code " << result << std::endl;
return;
}
}
result = gpioComIF->addGpios(spiMuxGpios);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != returnvalue::OK) {
sif::error << "initSpiCsDecoder: Failed to add mux bit gpios to gpioComIF" << std::endl;
return;
}

View File

@ -1,20 +1,13 @@
#simple mode
# simple mode
add_executable(${SIMPLE_OBSW_NAME} EXCLUDE_FROM_ALL)
target_compile_definitions(${SIMPLE_OBSW_NAME} PRIVATE "Q7S_SIMPLE_MODE")
target_sources(${SIMPLE_OBSW_NAME} PUBLIC
main.cpp
)
#I think this is unintentional? (produces linker errors for stuff in /linux)
target_link_libraries(${SIMPLE_OBSW_NAME} PUBLIC
${LIB_FSFW_NAME}
)
target_sources(${SIMPLE_OBSW_NAME} PUBLIC main.cpp)
# I think this is unintentional? (produces linker errors for stuff in /linux)
target_link_libraries(${SIMPLE_OBSW_NAME} PUBLIC ${LIB_FSFW_NAME})
target_compile_definitions(${SIMPLE_OBSW_NAME} PRIVATE "Q7S_SIMPLE_MODE")
add_subdirectory(simple)
target_sources(${OBSW_NAME} PUBLIC
main.cpp
obsw.cpp
)
target_sources(${OBSW_NAME} PUBLIC main.cpp obsw.cpp)
add_subdirectory(boardtest)
@ -23,11 +16,12 @@ add_subdirectory(comIF)
add_subdirectory(core)
if(EIVE_Q7S_EM)
add_subdirectory(em)
add_subdirectory(em)
else()
add_subdirectory(fm)
target_sources(${OBSW_NAME} PUBLIC fmObjectFactory.cpp)
endif()
add_subdirectory(memory)
add_subdirectory(callbacks)
add_subdirectory(xadc)
add_subdirectory(fs)

View File

@ -14,31 +14,39 @@
/** All of the following flags should be enabled for mission code */
/*******************************************************************/
#define OBSW_USE_CCSDS_IP_CORE 1
// Set to 1 if all telemetry should be sent to the PTME IP Core
#define OBSW_TM_TO_PTME 0
// Set to 1 if telecommands are received via the PDEC IP Core
#define OBSW_TC_FROM_PDEC 0
#define OBSW_ENABLE_TIMERS 1
#define OBSW_ADD_GOMSPACE_PCDU @OBSW_ADD_GOMSPACE_PCDU@
#define OBSW_ADD_MGT @OBSW_ADD_MGT@
#define OBSW_ADD_BPX_BATTERY_HANDLER @OBSW_ADD_BPX_BATTERY_HANDLER@
#define OBSW_ADD_STAR_TRACKER @OBSW_ADD_STAR_TRACKER@
#define OBSW_ADD_PLOC_SUPERVISOR 0
#define OBSW_ADD_PLOC_MPSOC 0
#define OBSW_ADD_PLOC_SUPERVISOR @OBSW_ADD_PLOC_SUPERVISOR@
#define OBSW_ADD_PLOC_MPSOC @OBSW_ADD_PLOC_MPSOC@
#define OBSW_ADD_SUN_SENSORS @OBSW_ADD_SUN_SENSORS@
#define OBSW_ADD_SUS_BOARD_ASS @OBSW_ADD_SUS_BOARD_ASS@
#define OBSW_ADD_ACS_BOARD @OBSW_ADD_ACS_BOARD@
#define OBSW_ADD_ACS_HANDLERS @OBSW_ADD_ACS_HANDLERS@
#define OBSW_ADD_ACS_CTRL 1
#define OBSW_ADD_GPS_CTRL @OBSW_ADD_GPS_CTRL@
#define OBSW_ADD_TCS_CTRL @OBSW_ADD_TCS_CTRL@
#define OBSW_ADD_RW @OBSW_ADD_RW@
#define OBSW_ADD_RTD_DEVICES @OBSW_ADD_RTD_DEVICES@
#define OBSW_ADD_SA_DEPL @OBSW_ADD_SA_DEPL@
#define OBSW_ADD_SCEX_DEVICE @OBSW_ADD_SCEX_DEVICE@
#define OBSW_ADD_HEATERS @OBSW_ADD_HEATERS@
#define OBSW_ADD_TMP_DEVICES @OBSW_ADD_TMP_DEVICES@
#define OBSW_ADD_RAD_SENSORS @OBSW_ADD_RAD_SENSORS@
#define OBSW_ADD_PL_PCDU @OBSW_ADD_PL_PCDU@
#define OBSW_ADD_SYRLINKS @OBSW_ADD_SYRLINKS@
#define OBSW_ADD_CCSDS_IP_CORES @OBSW_ADD_CCSDS_IP_CORES@
// Set to 1 if all telemetry should be sent to the PTME IP Core
#define OBSW_TM_TO_PTME @OBSW_TM_TO_PTME@
// Set to 1 if telecommands are received via the PDEC IP Core
#define OBSW_TC_FROM_PDEC @OBSW_TC_FROM_PDEC@
#define OBSW_ENABLE_SYRLINKS_TRANSMIT_TIMEOUT 0
// Configuration parameter which causes the core controller to try to keep at least one SD card
// working
#define OBSW_SD_CARD_MUST_BE_ON 1
#define OBSW_ENABLE_TIMERS 1
// This is a really tricky switch.. It initializes the PCDU switches to their default states
// at powerup. I think it would be better
// to leave it off for now. It makes testing a lot more difficult and it might mess with
@ -52,11 +60,12 @@
/*******************************************************************/
// Can be used to switch device to NORMAL mode immediately
#define OBSW_SWITCH_TO_NORMAL_MODE_AFTER_STARTUP 1
#define OBSW_SWITCH_TO_NORMAL_MODE_AFTER_STARTUP 0
#define OBSW_PRINT_MISSED_DEADLINES 1
#define OBSW_MPSOC_JTAG_BOOT 0
#define OBSW_STAR_TRACKER_GROUND_CONFIG 1
#define OBSW_SYRLINKS_SIMULATED 1
#define OBSW_SYRLINKS_SIMULATED @OBSW_SYRLINKS_SIMULATED@
#define OBSW_ADD_TEST_CODE 0
#define OBSW_ADD_TEST_TASK 0
#define OBSW_ADD_TEST_PST 0
@ -95,6 +104,7 @@
#define OBSW_PRINT_CORE_HK 0
#define OBSW_DEBUG_PDU1 0
#define OBSW_DEBUG_PDU2 0
#define OBSW_DEBUG_TMP1075 0
#define OBSW_DEBUG_GPS 0
#define OBSW_DEBUG_ACU 0
#define OBSW_DEBUG_SYRLINKS 0
@ -109,12 +119,19 @@
/*******************************************************************/
/** CMake Defines */
/*******************************************************************/
// Use TCP instead of UDP for the TMTC bridge. This allows using the TMTC client locally
// because UDP packets are not allowed in the VPN
// This will cause the OBSW to initialize the TMTC bridge responsible for exchanging data with the
// CCSDS IP Cores.
#define OBSW_ADD_TMTC_TCP_SERVER 1
#define OBSW_ADD_TMTC_UDP_SERVER 1
#cmakedefine EIVE_BUILD_GPSD_GPS_HANDLER
#cmakedefine LIBGPS_VERSION_MAJOR @LIBGPS_VERSION_MAJOR@
#cmakedefine LIBGPS_VERSION_MINOR @LIBGPS_VERSION_MINOR@
#ifdef __cplusplus
#include "objects/systemObjectList.h"

View File

@ -1,12 +1,5 @@
target_sources(${OBSW_NAME} PRIVATE
print.c
)
target_sources(${OBSW_NAME} PRIVATE print.c)
target_sources(${SIMPLE_OBSW_NAME} PRIVATE
print.c
)
target_sources(${SIMPLE_OBSW_NAME} PRIVATE print.c)
target_include_directories(${OBSW_NAME} PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}
)
target_include_directories(${OBSW_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})

View File

@ -3,21 +3,28 @@
namespace q7s {
static constexpr char SPI_DEFAULT_DEV[] = "/dev/spi-main";
static constexpr char SPI_RW_DEV[] = "/dev/spi-rw";
static constexpr char SPI_DEFAULT_DEV[] = "/dev/spi_main";
static constexpr uint32_t SPI_MAIN_BUS_LOCK_TIMEOUT = 50;
static constexpr char I2C_DEFAULT_DEV[] = "/dev/i2c-eive";
static constexpr char SPI_RW_DEV[] = "/dev/spi_rw";
//! I2C bus using an I2C IP core in the programmable logic (PL)
static constexpr char I2C_PL_EIVE[] = "/dev/i2c_pl";
//! I2C bus using the I2C peripheral of the ARM processing system (PS)
static constexpr char I2C_PS_EIVE[] = "/dev/i2c_ps";
static constexpr char UART_GNSS_DEV[] = "/dev/gps0";
static constexpr char UART_PLOC_MPSOC_DEV[] = "/dev/ul-plmpsoc";
static constexpr char UART_PLOC_SUPERVSIOR_DEV[] = "/dev/ul-plsv";
static constexpr char UART_SYRLINKS_DEV[] = "/dev/ul-syrlinks";
static constexpr char UART_STAR_TRACKER_DEV[] = "/dev/ul-str";
static constexpr char UART_PLOC_MPSOC_DEV[] = "/dev/ul_plmpsoc";
static constexpr char UART_PLOC_SUPERVSIOR_DEV[] = "/dev/ploc_supv";
static constexpr char UART_SYRLINKS_DEV[] = "/dev/ul_syrlinks";
static constexpr char UART_STAR_TRACKER_DEV[] = "/dev/ul_str";
static constexpr char UART_SCEX_DEV[] = "/dev/scex";
static constexpr char UIO_PDEC_REGISTERS[] = "/dev/uio0";
static constexpr char UIO_PDEC_CONFIG_MEMORY[] = "/dev/uio2";
static constexpr char UIO_PDEC_RAM[] = "/dev/uio3";
static constexpr char UIO_PTME[] = "/dev/uio1";
static constexpr char UIO_PDEC_REGISTERS[] = "/dev/uio_pdec_regs";
static constexpr char UIO_PTME[] = "/dev/uio_ptme";
static constexpr char UIO_PDEC_CONFIG_MEMORY[] = "/dev/uio_pdec_cfg_mem";
static constexpr char UIO_PDEC_RAM[] = "/dev/uio_pdec_ram";
static constexpr char UIO_PDEC_IRQ[] = "/dev/uio_pdec_irq";
static constexpr int MAP_ID_PTME_CONFIG = 3;
namespace uiomapids {

View File

@ -34,5 +34,6 @@ SOFTWARE.
#define ETL_CPP11_SUPPORTED 1
#define ETL_NO_NULLPTR_SUPPORT 0
#define ETL_HAS_ERROR_ON_STRING_TRUNCATION 1
#endif

View File

@ -16,16 +16,6 @@
/** Other flags */
/*******************************************************************/
#define Q7S_SD_NONE 0
#define Q7S_SD_COLD_REDUNDANT 1
#define Q7S_SD_HOT_REDUNDANT 2
// The OBSW will perform different actions to set up the SD cards depending on the flag set here
// Set to Q7S_SD_NONE: Don't do anything
// Set to Q7S_COLD_REDUNDANT: On startup, get the prefered SD card, turn it on and mount it, and
// turn off the second SD card if it is on
// Set to Q7S_HOT_REDUNDANT: On startup, turn on both SD cards and mount them
#define Q7S_SD_CARD_CONFIG Q7S_SD_COLD_REDUNDANT
// Probably better if this is disabled for mission code. Convenient for development
#define Q7S_CHECK_FOR_ALREADY_RUNNING_IMG 1

View File

@ -1,10 +1,5 @@
target_sources(${OBSW_NAME} PRIVATE
FileSystemTest.cpp
Q7STestTask.cpp
)
target_sources(${OBSW_NAME} PRIVATE FileSystemTest.cpp Q7STestTask.cpp)
if(EIVE_BUILD_Q7S_SIMPLE_MODE)
target_sources(${SIMPLE_OBSW_NAME} PRIVATE
FileSystemTest.cpp
)
endif()
target_sources(${SIMPLE_OBSW_NAME} PRIVATE FileSystemTest.cpp)
endif()

View File

@ -1,11 +1,14 @@
#include "Q7STestTask.h"
#include <bsp_q7s/core/CoreController.h>
#include <bsp_q7s/memory/FileSystemHandler.h>
#include <bsp_q7s/xadc/Xadc.h>
#include <fsfw/globalfunctions/arrayprinter.h>
#include <fsfw/objectmanager/ObjectManager.h>
#include <fsfw_hal/host/HostFilesystem.h>
#include <gps.h>
#include <libgpsmm.h>
#include <param/param_string.h>
#include <param/rparam_client.h>
#include <cstdio>
#include <ctime>
@ -14,12 +17,17 @@
#include <iostream>
#include <nlohmann/json.hpp>
#include "bsp_q7s/memory/SdCardManager.h"
#include "OBSWConfig.h"
#include "bsp_q7s/fs/SdCardManager.h"
#include "bsp_q7s/fs/helpers.h"
#include "bsp_q7s/memory/scratchApi.h"
#include "fsfw/tasks/TaskFactory.h"
#include "fsfw/timemanager/Stopwatch.h"
#include "p60pdu.h"
#include "test/DummyParameter.h"
using namespace returnvalue;
Q7STestTask::Q7STestTask(object_id_t objectId) : TestTask(objectId) {
doTestSdCard = false;
doTestScratchApi = false;
@ -35,13 +43,42 @@ ReturnValue_t Q7STestTask::performOneShotAction() {
if (doTestScratchApi) {
testScratchApi();
}
if (DO_TEST_GOMSPACE_API) {
uint8_t p60pdu_node = 3;
uint8_t hk_mem[P60PDU_HK_SIZE];
param_index_t p60pdu_hk{};
p60pdu_hk.physaddr = hk_mem;
if (!p60pdu_get_hk(&p60pdu_hk, p60pdu_node, 1000)) {
printf("Error getting p60pdu hk\n");
} else {
param_list(&p60pdu_hk, 1);
}
}
if (DO_TEST_GOMSPACE_GET_CONFIG) {
uint8_t p60pdu_node = 3;
param_index_t requestStruct{};
requestStruct.table = p60pdu_config;
requestStruct.mem_id = P60PDU_PARAM;
uint8_t hk_mem[P60PDU_PARAM_SIZE];
requestStruct.count = p60pdu_config_count;
requestStruct.size = P60PDU_PARAM_SIZE;
requestStruct.physaddr = hk_mem;
int result = rparam_get_full_table(&requestStruct, p60pdu_node, P60_PORT_RPARAM,
requestStruct.mem_id, 1000);
param_list(&requestStruct, 1);
return (result == 0);
}
// testJsonLibDirect();
// testDummyParams();
if (doTestProtHandler) {
testProtHandler();
}
FsOpCodes opCode = FsOpCodes::APPEND_TO_FILE;
testFileSystemHandlerDirect(opCode);
if (DO_TEST_FS_HANDLER) {
FsOpCodes opCode = FsOpCodes::CREATE_EMPTY_FILE_IN_TMP;
testFileSystemHandlerDirect(opCode);
}
return TestTask::performOneShotAction();
}
@ -95,23 +132,23 @@ void Q7STestTask::fileTests() {
void Q7STestTask::testScratchApi() {
ReturnValue_t result = scratch::writeNumber("TEST", 1);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != returnvalue::OK) {
sif::debug << "Q7STestTask::scratchApiTest: Writing number failed" << std::endl;
}
int number = 0;
result = scratch::readNumber("TEST", number);
sif::info << "Q7STestTask::testScratchApi: Value for key \"TEST\": " << number << std::endl;
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != returnvalue::OK) {
sif::debug << "Q7STestTask::scratchApiTest: Reading number failed" << std::endl;
}
result = scratch::writeString("TEST2", "halloWelt");
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != returnvalue::OK) {
sif::debug << "Q7STestTask::scratchApiTest: Writing string failed" << std::endl;
}
std::string string;
result = scratch::readString("TEST2", string);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != returnvalue::OK) {
sif::debug << "Q7STestTask::scratchApiTest: Reading number failed" << std::endl;
}
sif::info << "Q7STestTask::testScratchApi: Value for key \"TEST2\": " << string << std::endl;
@ -143,7 +180,7 @@ void Q7STestTask::testDummyParams() {
}
ReturnValue_t result = param.readJsonFile();
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != returnvalue::OK) {
}
param.setValue(DummyParameter::DUMMY_KEY_PARAM_1, 3);
@ -154,13 +191,13 @@ void Q7STestTask::testDummyParams() {
int test = 0;
result = param.getValue<int>(DummyParameter::DUMMY_KEY_PARAM_1, test);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != returnvalue::OK) {
sif::warning << "Q7STestTask::testDummyParams: Key " << DummyParameter::DUMMY_KEY_PARAM_1
<< " does not exist" << std::endl;
}
std::string test2;
result = param.getValue<std::string>(DummyParameter::DUMMY_KEY_PARAM_2, test2);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != returnvalue::OK) {
sif::warning << "Q7STestTask::testDummyParams: Key " << DummyParameter::DUMMY_KEY_PARAM_1
<< " does not exist" << std::endl;
}
@ -179,18 +216,18 @@ ReturnValue_t Q7STestTask::initialize() {
void Q7STestTask::testProtHandler() {
bool opPerformed = false;
ReturnValue_t result = HasReturnvaluesIF::RETURN_OK;
ReturnValue_t result = returnvalue::OK;
// If any chips are unlocked, lock them here
result = coreController->setBootCopyProtection(xsc::Chip::ALL_CHIP, xsc::Copy::ALL_COPY, true,
opPerformed, true);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != returnvalue::OK) {
sif::warning << "Q7STestTask::testProtHandler: Op failed" << std::endl;
}
// unlock own copy
result = coreController->setBootCopyProtection(xsc::Chip::SELF_CHIP, xsc::Copy::SELF_COPY, false,
opPerformed, true);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != returnvalue::OK) {
sif::warning << "Q7STestTask::testProtHandler: Op failed" << std::endl;
}
if (not opPerformed) {
@ -204,7 +241,7 @@ void Q7STestTask::testProtHandler() {
// lock own copy
result = coreController->setBootCopyProtection(xsc::Chip::SELF_CHIP, xsc::Copy::SELF_COPY, true,
opPerformed, true);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != returnvalue::OK) {
sif::warning << "Q7STestTask::testProtHandler: Op failed" << std::endl;
}
if (not opPerformed) {
@ -218,7 +255,7 @@ void Q7STestTask::testProtHandler() {
// unlock specific copy
result = coreController->setBootCopyProtection(xsc::Chip::CHIP_1, xsc::Copy::COPY_1, false,
opPerformed, true);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != returnvalue::OK) {
sif::warning << "Q7STestTask::testProtHandler: Op failed" << std::endl;
}
if (not opPerformed) {
@ -232,7 +269,7 @@ void Q7STestTask::testProtHandler() {
// lock specific copy
result = coreController->setBootCopyProtection(xsc::Chip::CHIP_1, xsc::Copy::COPY_1, true,
opPerformed, true);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != returnvalue::OK) {
sif::warning << "Q7STestTask::testProtHandler: Op failed" << std::endl;
}
if (not opPerformed) {
@ -335,150 +372,28 @@ void Q7STestTask::testGpsDaemonSocket() {
}
void Q7STestTask::testFileSystemHandlerDirect(FsOpCodes opCode) {
auto fsHandler = ObjectManager::instance()->get<FileSystemHandler>(objects::FILE_SYSTEM_HANDLER);
if (fsHandler == nullptr) {
sif::warning << "Q7STestTask::testFileSystemHandlerDirect: No FS handler running.."
<< std::endl;
}
FileSystemHandler::FsCommandCfg cfg = {};
ReturnValue_t result = HasReturnvaluesIF::RETURN_OK;
// Lambda for common code
auto createNonEmptyTmpDir = [&]() {
if (not std::filesystem::exists("/tmp/test")) {
result = fsHandler->createDirectory("/tmp", "test", false, &cfg);
if (result != HasReturnvaluesIF::RETURN_OK) {
return result;
}
HostFilesystem hostFs;
auto* sdcMan = SdCardManager::instance();
std::string mountPrefix = sdcMan->getCurrentMountPrefix();
sif::info << "Current mount prefix: " << mountPrefix << std::endl;
auto prefixedPath = fshelpers::getPrefixedPath(*sdcMan, "conf/test.txt");
sif::info << "Prefixed path: " << prefixedPath << std::endl;
if (opCode == FsOpCodes::CREATE_EMPTY_FILE_IN_TMP) {
FilesystemParams params("/tmp/hello.txt");
auto res = hostFs.createFile(params);
if (res != OK) {
sif::warning << "Creating empty file in /tmp failed" << std::endl;
}
// Creating sample files
sif::info << "Creating sample files in directory" << std::endl;
result = fsHandler->createFile("/tmp/test", "test1.txt", nullptr, 0, &cfg);
if (result != HasReturnvaluesIF::RETURN_OK) {
return result;
}
result = fsHandler->createFile("/tmp/test", "test2.txt", nullptr, 0, &cfg);
if (result != HasReturnvaluesIF::RETURN_OK) {
return result;
}
return result;
};
switch (opCode) {
case (FsOpCodes::CREATE_EMPTY_FILE_IN_TMP): {
// No mount prefix, cause file is created in tmp
cfg.useMountPrefix = false;
sif::info << "Creating empty file in /tmp folder" << std::endl;
// Do not delete file, user can check existence in shell
fsHandler->createFile("/tmp/", "test.txt", nullptr, 0, &cfg);
break;
}
case (FsOpCodes::REMOVE_TMP_FILE): {
sif::info << "Deleting /tmp/test.txt sample file" << std::endl;
// No mount prefix, cause file is created in tmp
cfg.useMountPrefix = false;
if (not std::filesystem::exists("/tmp/test.txt")) {
// Creating sample file
sif::info << "Creating sample file /tmp/test.txt to delete" << std::endl;
fsHandler->createFile("/tmp/", "test.txt", nullptr, 0, &cfg);
}
result = fsHandler->removeFile("/tmp", "test.txt", &cfg);
if (result == HasReturnvaluesIF::RETURN_OK) {
sif::info << "File removed successfully" << std::endl;
} else {
sif::warning << "File removal failed!" << std::endl;
}
break;
}
case (FsOpCodes::CREATE_DIR_IN_TMP): {
// No mount prefix, cause file is created in tmp
cfg.useMountPrefix = false;
sif::info << "Creating empty file in /tmp folder" << std::endl;
// Do not delete file, user can check existence in shell
ReturnValue_t result = fsHandler->createDirectory("/tmp/", "test", false, &cfg);
if (result == HasReturnvaluesIF::RETURN_OK) {
sif::info << "Directory created successfully" << std::endl;
} else {
sif::warning << "Directory creation failed!" << std::endl;
}
break;
}
case (FsOpCodes::REMOVE_EMPTY_DIR_IN_TMP): {
// No mount prefix, cause file is created in tmp
cfg.useMountPrefix = false;
if (not std::filesystem::exists("/tmp/test")) {
result = fsHandler->createDirectory("/tmp", "test", false, &cfg);
} else {
// Delete any leftover files to regular dir removal works
std::remove("/tmp/test/*");
}
result = fsHandler->removeDirectory("/tmp/", "test", false, &cfg);
if (result == HasReturnvaluesIF::RETURN_OK) {
sif::info << "Directory removed successfully" << std::endl;
} else {
sif::warning << "Directory removal failed!" << std::endl;
}
break;
}
case (FsOpCodes::REMOVE_FILLED_DIR_IN_TMP): {
result = createNonEmptyTmpDir();
if (result != HasReturnvaluesIF::RETURN_OK) {
return;
}
result = fsHandler->removeDirectory("/tmp/", "test", true, &cfg);
if (result == HasReturnvaluesIF::RETURN_OK) {
sif::info << "Directory removed recursively successfully" << std::endl;
} else {
sif::warning << "Recursive directory removal failed!" << std::endl;
}
break;
}
case (FsOpCodes::ATTEMPT_DIR_REMOVAL_NON_EMPTY): {
result = createNonEmptyTmpDir();
if (result != HasReturnvaluesIF::RETURN_OK) {
return;
}
result = fsHandler->removeDirectory("/tmp/", "test", false, &cfg);
if (result != HasReturnvaluesIF::RETURN_OK) {
sif::info << "Directory removal attempt failed as expected" << std::endl;
} else {
sif::warning << "Directory removal worked when it should not have!" << std::endl;
}
break;
}
case (FsOpCodes::RENAME_FILE): {
// No mount prefix, cause file is created in tmp
cfg.useMountPrefix = false;
if (std::filesystem::exists("/tmp/test.txt")) {
fsHandler->removeDirectory("/tmp/", "test", false, &cfg);
}
sif::info << "Creating empty file /tmp/test.txt and rename to /tmp/test2.txt" << std::endl;
// Do not delete file, user can check existence in shell
fsHandler->createFile("/tmp/", "test.txt", nullptr, 0, &cfg);
fsHandler->renameFile("/tmp/", "test.txt", "test2.txt", &cfg);
break;
}
case (FsOpCodes::APPEND_TO_FILE): {
// No mount prefix, cause file is created in tmp
cfg.useMountPrefix = false;
if (std::filesystem::exists("/tmp/test.txt")) {
fsHandler->removeDirectory("/tmp/", "test", false, &cfg);
}
if (std::filesystem::exists("/tmp/test.txt")) {
fsHandler->removeDirectory("/tmp/", "test", false, &cfg);
}
sif::info << "Creating empty file /tmp/test.txt and adding content" << std::endl;
std::string content = "Hello World\n";
// Do not delete file, user can check existence in shell
fsHandler->createFile("/tmp/", "test.txt", nullptr, 0, &cfg);
fsHandler->appendToFile("/tmp/", "test.txt", reinterpret_cast<const uint8_t*>(content.data()),
content.size(), 0, &cfg);
bool fileExists = std::filesystem::exists("/tmp/hello.txt");
if (not fileExists) {
sif::warning << "File was not created!" << std::endl;
}
hostFs.removeFile("/tmp/hello.txt");
}
}
void Q7STestTask::xadcTest() {
ReturnValue_t result = RETURN_OK;
ReturnValue_t result = returnvalue::OK;
float temperature = 0;
float vccPint = 0;
float vccPaux = 0;
@ -490,39 +405,39 @@ void Q7STestTask::xadcTest() {
float vrefn = 0;
Xadc xadc;
result = xadc.getTemperature(temperature);
if (result == HasReturnvaluesIF::RETURN_OK) {
if (result == returnvalue::OK) {
sif::info << "Q7STestTask::xadcTest: Chip Temperature: " << temperature << " °C" << std::endl;
}
result = xadc.getVccPint(vccPint);
if (result == HasReturnvaluesIF::RETURN_OK) {
if (result == returnvalue::OK) {
sif::info << "Q7STestTask::xadcTest: VCC PS internal: " << vccPint << " mV" << std::endl;
}
result = xadc.getVccPaux(vccPaux);
if (result == HasReturnvaluesIF::RETURN_OK) {
if (result == returnvalue::OK) {
sif::info << "Q7STestTask::xadcTest: VCC PS auxilliary: " << vccPaux << " mV" << std::endl;
}
result = xadc.getVccInt(vccInt);
if (result == HasReturnvaluesIF::RETURN_OK) {
if (result == returnvalue::OK) {
sif::info << "Q7STestTask::xadcTest: VCC PL internal: " << vccInt << " mV" << std::endl;
}
result = xadc.getVccAux(vccAux);
if (result == HasReturnvaluesIF::RETURN_OK) {
if (result == returnvalue::OK) {
sif::info << "Q7STestTask::xadcTest: VCC PL auxilliary: " << vccAux << " mV" << std::endl;
}
result = xadc.getVccBram(vccBram);
if (result == HasReturnvaluesIF::RETURN_OK) {
if (result == returnvalue::OK) {
sif::info << "Q7STestTask::xadcTest: VCC BRAM: " << vccBram << " mV" << std::endl;
}
result = xadc.getVccOddr(vccOddr);
if (result == HasReturnvaluesIF::RETURN_OK) {
if (result == returnvalue::OK) {
sif::info << "Q7STestTask::xadcTest: VCC PS I/O DDR : " << vccOddr << " mV" << std::endl;
}
result = xadc.getVrefp(vrefp);
if (result == HasReturnvaluesIF::RETURN_OK) {
if (result == returnvalue::OK) {
sif::info << "Q7STestTask::xadcTest: Vrefp : " << vrefp << " mV" << std::endl;
}
result = xadc.getVrefn(vrefn);
if (result == HasReturnvaluesIF::RETURN_OK) {
if (result == returnvalue::OK) {
sif::info << "Q7STestTask::xadcTest: Vrefn : " << vrefn << " mV" << std::endl;
}
}

View File

@ -16,6 +16,9 @@ class Q7STestTask : public TestTask {
private:
bool doTestSdCard = false;
bool doTestScratchApi = false;
static constexpr bool DO_TEST_GOMSPACE_API = false;
static constexpr bool DO_TEST_GOMSPACE_GET_CONFIG = false;
static constexpr bool DO_TEST_FS_HANDLER = false;
bool doTestGpsShm = false;
bool doTestGpsSocket = false;
bool doTestProtHandler = false;

View File

@ -1,6 +1,2 @@
target_sources(${OBSW_NAME} PRIVATE
rwSpiCallback.cpp
gnssCallback.cpp
pcduSwitchCb.cpp
q7sGpioCallbacks.cpp
)
target_sources(${OBSW_NAME} PRIVATE rwSpiCallback.cpp gnssCallback.cpp
pcduSwitchCb.cpp q7sGpioCallbacks.cpp)

View File

@ -1,25 +1,29 @@
#include "gnssCallback.h"
#include "devices/gpioIds.h"
#include "fsfw/action/HasActionsIF.h"
#include "fsfw/tasks/TaskFactory.h"
ReturnValue_t gps::triggerGpioResetPin(void* args) {
ReturnValue_t gps::triggerGpioResetPin(const uint8_t* actionData, size_t len, void* args) {
// At least one byte which denotes which GPS to reset is required
if (len < 1 or actionData == nullptr) {
return HasActionsIF::INVALID_PARAMETERS;
}
ResetArgs* resetArgs = reinterpret_cast<ResetArgs*>(args);
if (args == nullptr) {
return HasReturnvaluesIF::RETURN_FAILED;
return returnvalue::FAILED;
}
if (resetArgs->gpioComIF == nullptr) {
return HasReturnvaluesIF::RETURN_FAILED;
return returnvalue::FAILED;
}
gpioId_t gpioId;
if (resetArgs->gnss1) {
gpioId = gpioIds::GNSS_1_NRESET;
} else {
if (actionData[0] == 0) {
gpioId = gpioIds::GNSS_0_NRESET;
} else {
gpioId = gpioIds::GNSS_1_NRESET;
}
resetArgs->gpioComIF->pullLow(gpioId);
TaskFactory::delayTask(resetArgs->waitPeriodMs);
resetArgs->gpioComIF->pullHigh(gpioId);
return HasReturnvaluesIF::RETURN_OK;
return returnvalue::OK;
}

View File

@ -1,18 +1,17 @@
#ifndef BSP_Q7S_CALLBACKS_GNSSCALLBACK_H_
#define BSP_Q7S_CALLBACKS_GNSSCALLBACK_H_
#include "fsfw/returnvalues/HasReturnvaluesIF.h"
#include "fsfw/returnvalues/returnvalue.h"
#include "fsfw_hal/linux/gpio/LinuxLibgpioIF.h"
struct ResetArgs {
bool gnss1 = false;
LinuxLibgpioIF* gpioComIF = nullptr;
uint32_t waitPeriodMs = 100;
};
namespace gps {
ReturnValue_t triggerGpioResetPin(void* args);
ReturnValue_t triggerGpioResetPin(const uint8_t* actionData, size_t len, void* args);
}

View File

@ -47,8 +47,8 @@ void q7s::gpioCallbacks::initSpiCsDecoder(GpioIF* gpioComIF) {
spiMuxGpios->addGpio(gpioIds::EN_RW_CS, enRwDecoder);
result = gpioComIF->addGpios(spiMuxGpios);
if (result != HasReturnvaluesIF::RETURN_OK) {
sif::error << "initSpiCsDecoder: Failed to add mux bit gpios to gpioComIF" << std::endl;
if (result != returnvalue::OK) {
sif::error << "initSpiCsDecoder: Failed to add SPI MUX bit GPIOs" << std::endl;
return;
}
}

View File

@ -1,5 +1,7 @@
#include "rwSpiCallback.h"
#include <fsfw/timemanager/Stopwatch.h>
#include "devices/gpioIds.h"
#include "fsfw/serviceinterface/ServiceInterface.h"
#include "fsfw_hal/linux/UnixFileGuard.h"
@ -8,61 +10,72 @@
namespace rwSpiCallback {
namespace {
static bool MODE_SET = false;
ReturnValue_t openSpi(const std::string& devname, int flags, GpioIF* gpioIF, gpioId_t gpioId,
MutexIF* mutex, MutexIF::TimeoutType timeoutType, uint32_t timeoutMs,
int& fd);
/**
* @brief This function closes a spi session. Pulls the chip select to high an releases the
* mutex.
* @param gpioId Gpio ID of chip select
* @param gpioIF Pointer to gpio interface to drive the chip select
* @param mutex The spi mutex
*/
void closeSpi(int fd, gpioId_t gpioId, GpioIF* gpioIF, MutexIF* mutex);
} // namespace
ReturnValue_t spiCallback(SpiComIF* comIf, SpiCookie* cookie, const uint8_t* sendData,
size_t sendLen, void* args) {
ReturnValue_t result = HasReturnvaluesIF::RETURN_OK;
// Stopwatch watch;
ReturnValue_t result = returnvalue::OK;
RwHandler* handler = reinterpret_cast<RwHandler*>(args);
if (handler == nullptr) {
sif::error << "rwSpiCallback::spiCallback: Pointer to handler is invalid" << std::endl;
return HasReturnvaluesIF::RETURN_FAILED;
return returnvalue::FAILED;
}
uint8_t writeBuffer[2];
uint8_t writeBuffer[2] = {};
uint8_t writeSize = 0;
gpioId_t gpioId = cookie->getChipSelectPin();
GpioIF* gpioIF = comIf->getGpioInterface();
GpioIF& gpioIF = comIf->getGpioInterface();
MutexIF::TimeoutType timeoutType = MutexIF::TimeoutType::WAITING;
uint32_t timeoutMs = 0;
MutexIF* mutex = comIf->getMutex(&timeoutType, &timeoutMs);
if (mutex == nullptr or gpioIF == nullptr) {
MutexIF* mutex = comIf->getCsMutex();
cookie->getMutexParams(timeoutType, timeoutMs);
if (mutex == nullptr) {
sif::debug << "rwSpiCallback::spiCallback: Mutex or GPIO interface invalid" << std::endl;
return HasReturnvaluesIF::RETURN_FAILED;
return returnvalue::FAILED;
}
int fileDescriptor = 0;
std::string device = cookie->getSpiDevice();
UnixFileGuard fileHelper(device, &fileDescriptor, O_RDWR, "rwSpiCallback::spiCallback");
if (fileHelper.getOpenResult() != HasReturnvaluesIF::RETURN_OK) {
sif::error << "rwSpiCallback::spiCallback: Failed to open device file" << std::endl;
return SpiComIF::OPENING_FILE_FAILED;
}
spi::SpiModes spiMode = spi::SpiModes::MODE_0;
uint32_t spiSpeed = 0;
cookie->getSpiParameters(spiMode, spiSpeed, nullptr);
comIf->setSpiSpeedAndMode(fileDescriptor, spiMode, spiSpeed);
result = mutex->lockMutex(timeoutType, timeoutMs);
if (result != HasReturnvaluesIF::RETURN_OK) {
sif::debug << "rwSpiCallback::spiCallback: Failed to lock mutex" << std::endl;
const std::string& dev = comIf->getSpiDev();
result = openSpi(dev, O_RDWR, &gpioIF, gpioId, mutex, timeoutType, timeoutMs, fileDescriptor);
if (result != returnvalue::OK) {
return result;
}
/** Sending frame start sign */
writeBuffer[0] = 0x7E;
writeSize = 1;
// Pull SPI CS low. For now, no support for active high given
if (gpioId != gpio::NO_GPIO) {
if (gpioIF->pullLow(gpioId) != HasReturnvaluesIF::RETURN_OK) {
sif::error << "rwSpiCallback::spiCallback: Failed to pull chip select low" << std::endl;
}
spi::SpiModes spiMode = spi::SpiModes::MODE_0;
uint32_t spiSpeed = 0;
cookie->getSpiParameters(spiMode, spiSpeed, nullptr);
// We are in protected section, so we can use the static variable here without issues.
// We don't need to set the speed because a SPI core is used, but the mode has to be set once
// correctly for all RWs
if (not MODE_SET) {
comIf->setSpiSpeedAndMode(fileDescriptor, spiMode, spiSpeed);
MODE_SET = true;
}
/** Sending frame start sign */
writeBuffer[0] = FLAG_BYTE;
writeSize = 1;
if (write(fileDescriptor, writeBuffer, writeSize) != static_cast<ssize_t>(writeSize)) {
sif::error << "rwSpiCallback::spiCallback: Write failed!" << std::endl;
closeSpi(gpioId, gpioIF, mutex);
closeSpi(fileDescriptor, gpioId, &gpioIF, mutex);
return RwHandler::SPI_WRITE_FAILURE;
}
@ -87,33 +100,39 @@ ReturnValue_t spiCallback(SpiComIF* comIf, SpiCookie* cookie, const uint8_t* sen
}
if (write(fileDescriptor, writeBuffer, writeSize) != static_cast<ssize_t>(writeSize)) {
sif::error << "rwSpiCallback::spiCallback: Write failed!" << std::endl;
closeSpi(gpioId, gpioIF, mutex);
closeSpi(fileDescriptor, gpioId, &gpioIF, mutex);
return RwHandler::SPI_WRITE_FAILURE;
}
idx++;
}
/** Sending frame end sign */
writeBuffer[0] = 0x7E;
writeBuffer[0] = FLAG_BYTE;
writeSize = 1;
if (write(fileDescriptor, writeBuffer, writeSize) != static_cast<ssize_t>(writeSize)) {
sif::error << "rwSpiCallback::spiCallback: Write failed!" << std::endl;
closeSpi(gpioId, gpioIF, mutex);
closeSpi(fileDescriptor, gpioId, &gpioIF, mutex);
return RwHandler::SPI_WRITE_FAILURE;
}
uint8_t* rxBuf = nullptr;
result = comIf->getReadBuffer(cookie->getSpiAddress(), &rxBuf);
if (result != HasReturnvaluesIF::RETURN_OK) {
closeSpi(gpioId, gpioIF, mutex);
if (result != returnvalue::OK) {
closeSpi(fileDescriptor, gpioId, &gpioIF, mutex);
return result;
}
size_t replyBufferSize = cookie->getMaxBufferSize();
/** There must be a delay of at least 20 ms after sending the command */
// There must be a delay of at least 20 ms after sending the command.
// Delay for 70 ms here and release the SPI bus for that duration.
closeSpi(fileDescriptor, gpioId, &gpioIF, mutex);
usleep(RwDefinitions::SPI_REPLY_DELAY);
result = openSpi(dev, O_RDWR, &gpioIF, gpioId, mutex, timeoutType, timeoutMs, fileDescriptor);
if (result != returnvalue::OK) {
return result;
}
/**
* The reaction wheel responds with empty frames while preparing the reply data.
@ -123,13 +142,13 @@ ReturnValue_t spiCallback(SpiComIF* comIf, SpiCookie* cookie, const uint8_t* sen
for (int idx = 0; idx < 10; idx++) {
if (read(fileDescriptor, &byteRead, 1) != 1) {
sif::error << "rwSpiCallback::spiCallback: Read failed" << std::endl;
closeSpi(gpioId, gpioIF, mutex);
closeSpi(fileDescriptor, gpioId, &gpioIF, mutex);
return RwHandler::SPI_READ_FAILURE;
}
if (idx == 0) {
if (byteRead != FLAG_BYTE) {
sif::error << "Invalid data, expected start marker" << std::endl;
closeSpi(gpioId, gpioIF, mutex);
closeSpi(fileDescriptor, gpioId, &gpioIF, mutex);
return RwHandler::NO_START_MARKER;
}
}
@ -140,7 +159,7 @@ ReturnValue_t spiCallback(SpiComIF* comIf, SpiCookie* cookie, const uint8_t* sen
if (idx == 9) {
sif::error << "rwSpiCallback::spiCallback: Empty frame timeout" << std::endl;
closeSpi(gpioId, gpioIF, mutex);
closeSpi(fileDescriptor, gpioId, &gpioIF, mutex);
return RwHandler::NO_REPLY;
}
}
@ -180,7 +199,7 @@ ReturnValue_t spiCallback(SpiComIF* comIf, SpiCookie* cookie, const uint8_t* sen
continue;
} else {
sif::error << "rwSpiCallback::spiCallback: Invalid substitute" << std::endl;
closeSpi(gpioId, gpioIF, mutex);
closeSpi(fileDescriptor, gpioId, &gpioIF, mutex);
result = RwHandler::INVALID_SUBSTITUTE;
break;
}
@ -201,32 +220,64 @@ ReturnValue_t spiCallback(SpiComIF* comIf, SpiCookie* cookie, const uint8_t* sen
result = RwHandler::SPI_READ_FAILURE;
break;
}
if (byteRead != 0x7E) {
sif::error << "rwSpiCallback::spiCallback: Missing end sign 0x7E" << std::endl;
if (byteRead != FLAG_BYTE) {
sif::error << "rwSpiCallback::spiCallback: Missing end sign " << static_cast<int>(FLAG_BYTE)
<< std::endl;
decodedFrameLen--;
result = RwHandler::MISSING_END_SIGN;
break;
}
}
result = HasReturnvaluesIF::RETURN_OK;
result = returnvalue::OK;
}
cookie->setTransferSize(decodedFrameLen);
closeSpi(gpioId, gpioIF, mutex);
closeSpi(fileDescriptor, gpioId, &gpioIF, mutex);
return result;
}
void closeSpi(gpioId_t gpioId, GpioIF* gpioIF, MutexIF* mutex) {
namespace {
ReturnValue_t openSpi(const std::string& devname, int flags, GpioIF* gpioIF, gpioId_t gpioId,
MutexIF* mutex, MutexIF::TimeoutType timeoutType, uint32_t timeoutMs,
int& fd) {
ReturnValue_t result = mutex->lockMutex(timeoutType, timeoutMs);
if (result != returnvalue::OK) {
sif::debug << "rwSpiCallback::spiCallback: Failed to lock mutex" << std::endl;
return result;
}
fd = open(devname.c_str(), flags);
if (fd < 0) {
sif::error << "rwSpiCallback::spiCallback: Failed to open device file" << std::endl;
return SpiComIF::OPENING_FILE_FAILED;
}
// Pull SPI CS low. For now, no support for active high given
if (gpioId != gpio::NO_GPIO) {
if (gpioIF->pullHigh(gpioId) != HasReturnvaluesIF::RETURN_OK) {
result = gpioIF->pullLow(gpioId);
if (result != returnvalue::OK) {
sif::error << "rwSpiCallback::spiCallback: Failed to pull chip select low" << std::endl;
return result;
}
}
return returnvalue::OK;
}
void closeSpi(int fd, gpioId_t gpioId, GpioIF* gpioIF, MutexIF* mutex) {
close(fd);
if (gpioId != gpio::NO_GPIO) {
if (gpioIF->pullHigh(gpioId) != returnvalue::OK) {
sif::error << "closeSpi: Failed to pull chip select high" << std::endl;
}
}
if (mutex->unlockMutex() != HasReturnvaluesIF::RETURN_OK) {
if (mutex->unlockMutex() != returnvalue::OK) {
sif::error << "rwSpiCallback::closeSpi: Failed to unlock mutex" << std::endl;
;
}
}
} // namespace
} // namespace rwSpiCallback

View File

@ -1,7 +1,7 @@
#ifndef BSP_Q7S_RW_SPI_CALLBACK_H_
#define BSP_Q7S_RW_SPI_CALLBACK_H_
#include "fsfw/returnvalues/HasReturnvaluesIF.h"
#include "fsfw/returnvalues/returnvalue.h"
#include "fsfw_hal/common/gpio/GpioCookie.h"
#include "fsfw_hal/linux/spi/SpiComIF.h"
@ -33,14 +33,5 @@ static constexpr uint8_t FLAG_BYTE = 0x7E;
ReturnValue_t spiCallback(SpiComIF* comIf, SpiCookie* cookie, const uint8_t* sendData,
size_t sendLen, void* args);
/**
* @brief This function closes a spi session. Pulls the chip select to high an releases the
* mutex.
* @param gpioId Gpio ID of chip select
* @param gpioIF Pointer to gpio interface to drive the chip select
* @param mutex The spi mutex
*/
void closeSpi(gpioId_t gpioId, GpioIF* gpioIF, MutexIF* mutex);
} // namespace rwSpiCallback
#endif /* BSP_Q7S_RW_SPI_CALLBACK_H_ */

View File

@ -1,6 +1 @@
target_sources(${OBSW_NAME} PRIVATE
)
target_sources(${OBSW_NAME} PRIVATE)

View File

@ -1,8 +1,4 @@
target_sources(${OBSW_NAME} PRIVATE
CoreController.cpp
InitMission.cpp
)
target_sources(${OBSW_NAME} PRIVATE CoreController.cpp scheduling.cpp
ObjectFactory.cpp)
target_sources(${SIMPLE_OBSW_NAME} PRIVATE
InitMission.cpp
)
target_sources(${SIMPLE_OBSW_NAME} PRIVATE scheduling.cpp)

File diff suppressed because it is too large Load Diff

View File

@ -7,7 +7,8 @@
#include <cstddef>
#include "CoreDefinitions.h"
#include "bsp_q7s/memory/SdCardManager.h"
#include "OBSWConfig.h"
#include "bsp_q7s/fs/SdCardManager.h"
#include "events/subsystemIdRanges.h"
#include "fsfw/controller/ExtendedControllerBase.h"
#include "mission/devices/devicedefinitions/GPSDefinitions.h"
@ -51,29 +52,51 @@ class CoreController : public ExtendedControllerBase {
static constexpr char CHIP_PROT_SCRIPT[] = "get-chip-prot-status.sh";
static constexpr char CHIP_STATE_FILE[] = "/tmp/chip_prot_status.txt";
static constexpr char CURR_COPY_FILE[] = "/tmp/curr_copy.txt";
static constexpr char CONF_FOLDER[] = "conf";
static constexpr char VERSION_FILE_NAME[] = "version.txt";
static constexpr char REBOOT_FILE_NAME[] = "reboot.txt";
static constexpr char TIME_FILE_NAME[] = "time.txt";
const std::string VERSION_FILE =
"/" + std::string(CONF_FOLDER) + "/" + std::string(VERSION_FILE_NAME);
const std::string REBOOT_FILE =
"/" + std::string(CONF_FOLDER) + "/" + std::string(REBOOT_FILE_NAME);
const std::string TIME_FILE = "/" + std::string(CONF_FOLDER) + "/" + std::string(TIME_FILE_NAME);
static constexpr char CHIP_0_COPY_0_MOUNT_DIR[] = "/tmp/mntupdate-xdi-qspi0-nom-rootfs";
static constexpr char CHIP_0_COPY_1_MOUNT_DIR[] = "/tmp/mntupdate-xdi-qspi0-gold-rootfs";
static constexpr char CHIP_1_COPY_0_MOUNT_DIR[] = "/tmp/mntupdate-xdi-qspi1-nom-rootfs";
static constexpr char CHIP_1_COPY_1_MOUNT_DIR[] = "/tmp/mntupdate-xdi-qspi1-gold-rootfs";
static constexpr dur_millis_t INIT_SD_CARD_CHECK_TIMEOUT = 5000;
static constexpr dur_millis_t DEFAULT_SD_CARD_CHECK_TIMEOUT = 60000;
static constexpr ActionId_t LIST_DIRECTORY_INTO_FILE = 0;
static constexpr ActionId_t SWITCH_REBOOT_FILE_HANDLING = 5;
static constexpr ActionId_t RESET_REBOOT_COUNTERS = 6;
static constexpr ActionId_t SWITCH_IMG_LOCK = 7;
static constexpr ActionId_t SET_MAX_REBOOT_CNT = 8;
static constexpr ActionId_t REBOOT_OBC = 32;
static constexpr ActionId_t OBSW_UPDATE_FROM_SD_0 = 10;
static constexpr ActionId_t OBSW_UPDATE_FROM_SD_1 = 11;
static constexpr ActionId_t OBSW_UPDATE_FROM_TMP = 12;
static constexpr ActionId_t SWITCH_TO_SD_0 = 16;
static constexpr ActionId_t SWITCH_TO_SD_1 = 17;
static constexpr ActionId_t SWITCH_TO_BOTH_SD_CARDS = 18;
//! Reboot using the xsc_boot_copy command
static constexpr ActionId_t XSC_REBOOT_OBC = 32;
static constexpr ActionId_t MOUNT_OTHER_COPY = 33;
//! Reboot using the reboot command
static constexpr ActionId_t REBOOT_OBC = 34;
static constexpr uint8_t SUBSYSTEM_ID = SUBSYSTEM_ID::CORE;
static constexpr Event ALLOC_FAILURE = event::makeEvent(SUBSYSTEM_ID, 0, severity::MEDIUM);
//! [EXPORT] : [COMMENT] Software reboot occured. Can also be a systemd reboot.
//! [EXPORT] : [COMMENT] Software reboot occurred. Can also be a systemd reboot.
//! P1: Current Chip, P2: Current Copy
static constexpr Event REBOOT_SW = event::makeEvent(SUBSYSTEM_ID, 1, severity::MEDIUM);
//! [EXPORT] : [COMMENT] The reboot mechanism was triggered.
@ -83,6 +106,9 @@ class CoreController : public ExtendedControllerBase {
event::makeEvent(SUBSYSTEM_ID, 2, severity::MEDIUM);
//! Trying to find a way how to determine that the reboot came from ProASIC3 or PCDU..
static constexpr Event REBOOT_HW = event::makeEvent(SUBSYSTEM_ID, 3, severity::MEDIUM);
//! [EXPORT] : [COMMENT] No SD card was active. Core controller will attempt to re-initialize
//! a SD card.
static constexpr Event NO_SD_CARD_ACTIVE = event::makeEvent(SUBSYSTEM_ID, 4, severity::HIGH);
CoreController(object_id_t objectId);
virtual ~CoreController();
@ -104,6 +130,7 @@ class CoreController : public ExtendedControllerBase {
static ReturnValue_t generateChipStateFile();
static ReturnValue_t incrementAllocationFailureCount();
static void getCurrentBootCopy(xsc::Chip& chip, xsc::Copy& copy);
static const char* getXscMountDir(xsc::Chip chip, xsc::Copy copy);
ReturnValue_t updateProtInfo(bool regenerateChipStateFile = true);
@ -148,38 +175,46 @@ class CoreController : public ExtendedControllerBase {
SKIP_CYCLE_BEFORE_INFO_UPDATE,
UPDATE_INFO,
// SD initialization done
IDLE,
// Used if SD switches or mount commands are issued via telecommand
SET_STATE_FROM_COMMAND,
IDLE
};
enum class SwUpdateSources { SD_0, SD_1, TMP_DIR };
static constexpr bool BLOCKING_SD_INIT = false;
SdCardManager* sdcMan = nullptr;
MessageQueueIF* eventQueue = nullptr;
struct SdInfo {
sd::SdCard pref = sd::SdCard::NONE;
sd::SdState prefState = sd::SdState::OFF;
SdStates sdFsmState = SdStates::START;
enum SdCfgMode { PASSIVE, COLD_REDUNDANT, HOT_REDUNDANT };
struct SdFsmParams {
SdCfgMode cfgMode = SdCfgMode::COLD_REDUNDANT;
sd::SdCard active = sd::SdCard::NONE;
sd::SdCard other = sd::SdCard::NONE;
sd::SdState activeState = sd::SdState::OFF;
sd::SdState otherState = sd::SdState::OFF;
std::string prefChar = "0";
std::string activeChar = "0";
std::string otherChar = "1";
SdStates state = SdStates::START;
std::pair<bool, bool> mountSwitch = {true, true};
// Used to track whether a command was executed
bool commandExecuted = true;
bool initFinished = false;
SdCardManager::SdStatePair currentState;
uint16_t cycleCount = 0;
// These two flags are related to external commanding
bool commandIssued = false;
bool commandFinished = false;
sd::SdState currentlyCommandedState = sd::SdState::OFF;
sd::SdCard commandedCard = sd::SdCard::NONE;
sd::SdState commandedState = sd::SdState::OFF;
} sdInfo;
struct SdCommanding {
bool cmdPending = false;
MessageQueueId_t commander = MessageQueueIF::NO_QUEUE;
DeviceCommandId_t actionId;
} sdCommandingInfo;
RebootFile rebootFile = {};
std::string currMntPrefix;
bool doPerformMountedSdCardOps = true;
bool performOneShotSdCardOpsSwitch = false;
uint8_t shortSdCardCdCounter = 0;
Countdown sdCardCheckCd = Countdown(INIT_SD_CARD_CHECK_TIMEOUT);
/**
* Index 0: Chip 0 Copy 0
@ -191,37 +226,52 @@ class CoreController : public ExtendedControllerBase {
PeriodicOperationDivider opDivider5;
PeriodicOperationDivider opDivider10;
PoolEntry<float> tempPoolEntry = PoolEntry<float>(0.0);
PoolEntry<float> psVoltageEntry = PoolEntry<float>(0.0);
PoolEntry<float> plVoltageEntry = PoolEntry<float>(0.0);
core::HkSet hkSet;
#if OBSW_SD_CARD_MUST_BE_ON == 1
bool remountAttemptFlag = true;
#endif
ReturnValue_t initializeLocalDataPool(localpool::DataPool& localDataPoolMap,
LocalDataPoolManager& poolManager) override;
LocalPoolDataSetBase* getDataSetHandle(sid_t sid) override;
ReturnValue_t checkModeCommand(Mode_t mode, Submode_t submode, uint32_t* msToReachTheMode);
void performMountedSdCardOperations();
ReturnValue_t initVersionFile();
ReturnValue_t initClockFromTimeFile();
ReturnValue_t performSdCardCheck();
ReturnValue_t timeFileHandler();
ReturnValue_t initBootCopy();
ReturnValue_t initBootCopyFile();
ReturnValue_t initWatchdogFifo();
ReturnValue_t initSdCardBlocking();
bool startSdStateMachine(sd::SdCard targetActiveSd, SdCfgMode mode, MessageQueueId_t commander,
DeviceCommandId_t actionId);
void initPrint();
ReturnValue_t sdStateMachine();
void updateSdInfoOther();
ReturnValue_t sdCardSetup(sd::SdCard sdCard, sd::SdState targetState, std::string sdChar,
bool printOutput = true);
ReturnValue_t executeSwUpdate(SwUpdateSources sourceDir, const uint8_t* data, size_t size);
ReturnValue_t sdColdRedundantBlockingInit();
void currentStateSetter(sd::SdCard sdCard, sd::SdState newState);
void determinePreferredSdCard();
void executeNextExternalSdCommand();
void checkExternalSdCommandStatus();
void performRebootFileHandling(bool recreateFile);
ReturnValue_t actionListDirectoryIntoFile(ActionId_t actionId, MessageQueueId_t commandedBy,
const uint8_t* data, size_t size);
ReturnValue_t actionPerformReboot(const uint8_t* data, size_t size);
ReturnValue_t actionXscReboot(const uint8_t* data, size_t size);
ReturnValue_t actionReboot(const uint8_t* data, size_t size);
ReturnValue_t gracefulShutdownTasks(xsc::Chip chip, xsc::Copy copy, bool& protOpPerformed);
void performWatchdogControlOperation();

View File

@ -1,439 +0,0 @@
#include "bsp_q7s/core/InitMission.h"
#include <iostream>
#include <vector>
#include "OBSWConfig.h"
#include "bsp_q7s/core/ObjectFactory.h"
#include "fsfw/objectmanager/ObjectManager.h"
#include "fsfw/objectmanager/ObjectManagerIF.h"
#include "fsfw/platform.h"
#include "fsfw/returnvalues/HasReturnvaluesIF.h"
#include "fsfw/serviceinterface/ServiceInterfaceStream.h"
#include "fsfw/tasks/FixedTimeslotTaskIF.h"
#include "fsfw/tasks/PeriodicTaskIF.h"
#include "fsfw/tasks/TaskFactory.h"
#include "mission/utility/InitMission.h"
#include "pollingsequence/pollingSequenceFactory.h"
/* This is configured for linux without CR */
#ifdef PLATFORM_UNIX
ServiceInterfaceStream sif::debug("DEBUG");
ServiceInterfaceStream sif::info("INFO");
ServiceInterfaceStream sif::warning("WARNING");
ServiceInterfaceStream sif::error("ERROR");
#else
ServiceInterfaceStream sif::debug("DEBUG", true);
ServiceInterfaceStream sif::info("INFO", true);
ServiceInterfaceStream sif::warning("WARNING", true);
ServiceInterfaceStream sif::error("ERROR", true, false, true);
#endif
ObjectManagerIF* objectManager = nullptr;
void initmission::initMission() {
sif::info << "Building global objects.." << std::endl;
/* Instantiate global object manager and also create all objects */
ObjectManager::instance()->setObjectFactoryFunction(ObjectFactory::produce, nullptr);
sif::info << "Initializing all objects.." << std::endl;
ObjectManager::instance()->initialize();
/* This function creates and starts all tasks */
initTasks();
}
void initmission::initTasks() {
TaskFactory* factory = TaskFactory::instance();
ReturnValue_t result = HasReturnvaluesIF::RETURN_OK;
if (factory == nullptr) {
/* Should never happen ! */
return;
}
#if OBSW_PRINT_MISSED_DEADLINES == 1
void (*missedDeadlineFunc)(void) = TaskFactory::printMissedDeadline;
#else
void (*missedDeadlineFunc)(void) = nullptr;
#endif
PeriodicTaskIF* coreController = factory->createPeriodicTask(
"CORE_CTRL", 60, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.4, missedDeadlineFunc);
result = coreController->addComponent(objects::CORE_CONTROLLER);
if (result != HasReturnvaluesIF::RETURN_OK) {
initmission::printAddObjectError("CORE_CTRL", objects::CORE_CONTROLLER);
}
/* TMTC Distribution */
PeriodicTaskIF* tmTcDistributor = factory->createPeriodicTask(
"DIST", 40, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.2, missedDeadlineFunc);
result = tmTcDistributor->addComponent(objects::CCSDS_PACKET_DISTRIBUTOR);
if (result != HasReturnvaluesIF::RETURN_OK) {
initmission::printAddObjectError("CCSDS_DISTRIB", objects::CCSDS_PACKET_DISTRIBUTOR);
}
result = tmTcDistributor->addComponent(objects::PUS_PACKET_DISTRIBUTOR);
if (result != HasReturnvaluesIF::RETURN_OK) {
initmission::printAddObjectError("PUS_PACKET_DISTRIB", objects::PUS_PACKET_DISTRIBUTOR);
}
result = tmTcDistributor->addComponent(objects::TM_FUNNEL);
if (result != HasReturnvaluesIF::RETURN_OK) {
initmission::printAddObjectError("TM_FUNNEL", objects::TM_FUNNEL);
}
#if OBSW_ADD_TCPIP_BRIDGE == 1
// TMTC bridge
PeriodicTaskIF* tmtcBridgeTask = factory->createPeriodicTask(
"TCPIP_TMTC_BRIDGE", 50, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.2, missedDeadlineFunc);
result = tmtcBridgeTask->addComponent(objects::TMTC_BRIDGE);
if (result != HasReturnvaluesIF::RETURN_OK) {
initmission::printAddObjectError("TMTC_BRIDGE", objects::TMTC_BRIDGE);
}
PeriodicTaskIF* tmtcPollingTask = factory->createPeriodicTask(
"TMTC_POLLING", 80, PeriodicTaskIF::MINIMUM_STACK_SIZE, 2.0, missedDeadlineFunc);
result = tmtcPollingTask->addComponent(objects::TMTC_POLLING_TASK);
if (result != HasReturnvaluesIF::RETURN_OK) {
initmission::printAddObjectError("UDP_POLLING", objects::TMTC_POLLING_TASK);
}
#endif
#if OBSW_USE_CCSDS_IP_CORE == 1
PeriodicTaskIF* ccsdsHandlerTask = factory->createPeriodicTask(
"CCSDS_HANDLER", 50, PeriodicTaskIF::MINIMUM_STACK_SIZE, 2.0, missedDeadlineFunc);
result = ccsdsHandlerTask->addComponent(objects::CCSDS_HANDLER);
if (result != HasReturnvaluesIF::RETURN_OK) {
initmission::printAddObjectError("CCSDS Handler", objects::CCSDS_HANDLER);
}
// Minimal distance between two received TCs amounts to 0.6 seconds
// If a command has not been read before the next one arrives, the old command will be
// overwritten by the PDEC.
PeriodicTaskIF* pdecHandlerTask = factory->createPeriodicTask(
"PDEC_HANDLER", 50, PeriodicTaskIF::MINIMUM_STACK_SIZE, 1.0, missedDeadlineFunc);
result = pdecHandlerTask->addComponent(objects::PDEC_HANDLER);
if (result != HasReturnvaluesIF::RETURN_OK) {
initmission::printAddObjectError("PDEC Handler", objects::PDEC_HANDLER);
}
#endif /* OBSW_USE_CCSDS_IP_CORE == 1 */
#if OBSW_ADD_ACS_HANDLERS == 1
PeriodicTaskIF* acsTask = factory->createPeriodicTask(
"ACS_CTRL", 45, PeriodicTaskIF::MINIMUM_STACK_SIZE * 2, 0.4, missedDeadlineFunc);
result = acsTask->addComponent(objects::GPS_CONTROLLER);
if (result != HasReturnvaluesIF::RETURN_OK) {
initmission::printAddObjectError("GPS_CTRL", objects::GPS_CONTROLLER);
}
#endif /* OBSW_ADD_ACS_HANDLERS */
PeriodicTaskIF* sysTask = factory->createPeriodicTask(
"SYS_TASK", 40, PeriodicTaskIF::MINIMUM_STACK_SIZE * 2, 0.4, missedDeadlineFunc);
result = sysTask->addComponent(objects::ACS_BOARD_ASS);
if (result != HasReturnvaluesIF::RETURN_OK) {
initmission::printAddObjectError("ACS_BOARD_ASS", objects::ACS_BOARD_ASS);
}
#if OBSW_ADD_SUS_BOARD_ASS == 1
result = sysTask->addComponent(objects::SUS_BOARD_ASS);
if (result != HasReturnvaluesIF::RETURN_OK) {
initmission::printAddObjectError("SUS_BOARD_ASS", objects::SUS_BOARD_ASS);
}
#endif
result = sysTask->addComponent(objects::TCS_BOARD_ASS);
if (result != HasReturnvaluesIF::RETURN_OK) {
initmission::printAddObjectError("TCS_BOARD_ASS", objects::TCS_BOARD_ASS);
}
// FS task, task interval does not matter because it runs in permanent loop, priority low
// because it is a non-essential background task
PeriodicTaskIF* fsTask = factory->createPeriodicTask(
"FILE_SYSTEM_TASK", 25, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.4, missedDeadlineFunc);
result = fsTask->addComponent(objects::FILE_SYSTEM_HANDLER);
if (result != HasReturnvaluesIF::RETURN_OK) {
initmission::printAddObjectError("FILE_SYSTEM_TASK", objects::FILE_SYSTEM_HANDLER);
}
#if OBSW_ADD_STAR_TRACKER == 1
PeriodicTaskIF* strHelperTask = factory->createPeriodicTask(
"STR_HELPER", 20, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.2, missedDeadlineFunc);
result = strHelperTask->addComponent(objects::STR_HELPER);
if (result != HasReturnvaluesIF::RETURN_OK) {
initmission::printAddObjectError("STR_HELPER", objects::STR_HELPER);
}
#endif /* OBSW_ADD_STAR_TRACKER == 1 */
#if OBSW_ADD_PLOC_MPSOC == 1
PeriodicTaskIF* mpsocHelperTask = factory->createPeriodicTask(
"PLOC_MPSOC_HELPER", 20, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.2, missedDeadlineFunc);
result = mpsocHelperTask->addComponent(objects::PLOC_MPSOC_HELPER);
if (result != HasReturnvaluesIF::RETURN_OK) {
initmission::printAddObjectError("PLOC_MPSOC_HELPER", objects::PLOC_MPSOC_HELPER);
}
#endif /* OBSW_ADD_PLOC_MPSOC */
#if OBSW_TEST_CCSDS_BRIDGE == 1
PeriodicTaskIF* ptmeTestTask = factory->createPeriodicTask(
"PTME_TEST", 80, PeriodicTaskIF::MINIMUM_STACK_SIZE, 2.0, missedDeadlineFunc);
result = ptmeTestTask->addComponent(objects::CCSDS_IP_CORE_BRIDGE);
if (result != HasReturnvaluesIF::RETURN_OK) {
initmission::printAddObjectError("PTME_TEST", objects::CCSDS_IP_CORE_BRIDGE);
}
#endif
std::vector<PeriodicTaskIF*> pusTasks;
createPusTasks(*factory, missedDeadlineFunc, pusTasks);
std::vector<PeriodicTaskIF*> pstTasks;
createPstTasks(*factory, missedDeadlineFunc, pstTasks);
#if OBSW_ADD_TEST_CODE == 1
std::vector<PeriodicTaskIF*> testTasks;
createTestTasks(*factory, missedDeadlineFunc, testTasks);
#endif
auto taskStarter = [](std::vector<PeriodicTaskIF*>& taskVector, std::string name) {
for (const auto& task : taskVector) {
if (task != nullptr) {
task->startTask();
} else {
sif::error << "Task in vector " << name << " is invalid!" << std::endl;
}
}
};
sif::info << "Starting tasks.." << std::endl;
tmTcDistributor->startTask();
#if OBSW_ADD_TCPIP_BRIDGE == 1
tmtcBridgeTask->startTask();
tmtcPollingTask->startTask();
#endif
#if OBSW_USE_CCSDS_IP_CORE == 1
ccsdsHandlerTask->startTask();
pdecHandlerTask->startTask();
#endif /* OBSW_USE_CCSDS_IP_CORE == 1 */
coreController->startTask();
taskStarter(pstTasks, "PST task vector");
taskStarter(pusTasks, "PUS task vector");
#if OBSW_ADD_TEST_CODE == 1
taskStarter(testTasks, "Test task vector");
#endif
#if OBSW_TEST_CCSDS_BRIDGE == 1
ptmeTestTask->startTask();
#endif
fsTask->startTask();
#if OBSW_ADD_STAR_TRACKER == 1
strHelperTask->startTask();
#endif /* OBSW_ADD_STAR_TRACKER == 1 */
#if OBSW_ADD_ACS_HANDLERS == 1
acsTask->startTask();
#endif
sysTask->startTask();
sif::info << "Tasks started.." << std::endl;
}
void initmission::createPstTasks(TaskFactory& factory,
TaskDeadlineMissedFunction missedDeadlineFunc,
std::vector<PeriodicTaskIF*>& taskVec) {
ReturnValue_t result = HasReturnvaluesIF::RETURN_OK;
/* Polling Sequence Table Default */
#if OBSW_ADD_SPI_TEST_CODE == 0
FixedTimeslotTaskIF* spiPst = factory.createFixedTimeslotTask(
"PST_TASK_DEFAULT", 70, PeriodicTaskIF::MINIMUM_STACK_SIZE * 4, 0.5, missedDeadlineFunc);
result = pst::pstSpi(spiPst);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result == FixedTimeslotTaskIF::SLOT_LIST_EMPTY) {
sif::warning << "InitMission::initTasks: SPI PST is empty" << std::endl;
} else {
sif::error << "InitMission::initTasks: Creating SPI PST failed!" << std::endl;
}
} else {
taskVec.push_back(spiPst);
}
#endif
FixedTimeslotTaskIF* uartPst = factory.createFixedTimeslotTask(
"UART_PST", 70, PeriodicTaskIF::MINIMUM_STACK_SIZE * 4, 0.2, missedDeadlineFunc);
result = pst::pstUart(uartPst);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result == FixedTimeslotTaskIF::SLOT_LIST_EMPTY) {
sif::warning << "InitMission::initTasks: UART PST is empty" << std::endl;
} else {
sif::error << "InitMission::initTasks: Creating UART PST failed!" << std::endl;
}
} else {
taskVec.push_back(uartPst);
}
FixedTimeslotTaskIF* gpioPst = factory.createFixedTimeslotTask(
"GPIO_PST", 70, PeriodicTaskIF::MINIMUM_STACK_SIZE * 4, 0.2, missedDeadlineFunc);
result = pst::pstGpio(gpioPst);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result == FixedTimeslotTaskIF::SLOT_LIST_EMPTY) {
sif::warning << "InitMission::initTasks: GPIO PST is empty" << std::endl;
} else {
sif::error << "InitMission::initTasks: Creating GPIO PST failed!" << std::endl;
}
} else {
taskVec.push_back(gpioPst);
}
#if OBSW_ADD_I2C_TEST_CODE == 0
FixedTimeslotTaskIF* i2cPst = factory.createFixedTimeslotTask(
"I2C_PST", 70, PeriodicTaskIF::MINIMUM_STACK_SIZE * 4, 0.2, missedDeadlineFunc);
result = pst::pstI2c(i2cPst);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result == FixedTimeslotTaskIF::SLOT_LIST_EMPTY) {
sif::warning << "InitMission::initTasks: I2C PST is empty" << std::endl;
} else {
sif::error << "InitMission::initTasks: Creating I2C PST failed!" << std::endl;
}
} else {
taskVec.push_back(i2cPst);
}
#endif
#if OBSW_ADD_GOMSPACE_PCDU == 1
FixedTimeslotTaskIF* gomSpacePstTask = factory.createFixedTimeslotTask(
"GS_PST_TASK", 70, PeriodicTaskIF::MINIMUM_STACK_SIZE * 4, 1.0, missedDeadlineFunc);
result = pst::pstGompaceCan(gomSpacePstTask);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != FixedTimeslotTaskIF::SLOT_LIST_EMPTY) {
sif::error << "InitMission::initTasks: GomSpace PST initialization failed!" << std::endl;
}
}
taskVec.push_back(gomSpacePstTask);
#endif
}
void initmission::createPusTasks(TaskFactory& factory,
TaskDeadlineMissedFunction missedDeadlineFunc,
std::vector<PeriodicTaskIF*>& taskVec) {
ReturnValue_t result = HasReturnvaluesIF::RETURN_OK;
/* PUS Services */
PeriodicTaskIF* pusVerification = factory.createPeriodicTask(
"PUS_VERIF", 40, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.200, missedDeadlineFunc);
result = pusVerification->addComponent(objects::PUS_SERVICE_1_VERIFICATION);
if (result != HasReturnvaluesIF::RETURN_OK) {
initmission::printAddObjectError("PUS_VERIF", objects::PUS_SERVICE_1_VERIFICATION);
}
taskVec.push_back(pusVerification);
PeriodicTaskIF* pusEvents = factory.createPeriodicTask(
"PUS_EVENTS", 60, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.200, missedDeadlineFunc);
result = pusEvents->addComponent(objects::PUS_SERVICE_5_EVENT_REPORTING);
if (result != HasReturnvaluesIF::RETURN_OK) {
initmission::printAddObjectError("PUS_EVENTS", objects::PUS_SERVICE_5_EVENT_REPORTING);
}
result = pusEvents->addComponent(objects::EVENT_MANAGER);
if (result != HasReturnvaluesIF::RETURN_OK) {
initmission::printAddObjectError("PUS_MGMT", objects::EVENT_MANAGER);
}
taskVec.push_back(pusEvents);
PeriodicTaskIF* pusHighPrio = factory.createPeriodicTask(
"PUS_HIGH_PRIO", 50, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.200, missedDeadlineFunc);
result = pusHighPrio->addComponent(objects::PUS_SERVICE_2_DEVICE_ACCESS);
if (result != HasReturnvaluesIF::RETURN_OK) {
initmission::printAddObjectError("PUS_2", objects::PUS_SERVICE_2_DEVICE_ACCESS);
}
result = pusHighPrio->addComponent(objects::PUS_SERVICE_9_TIME_MGMT);
if (result != HasReturnvaluesIF::RETURN_OK) {
initmission::printAddObjectError("PUS_9", objects::PUS_SERVICE_9_TIME_MGMT);
}
taskVec.push_back(pusHighPrio);
PeriodicTaskIF* pusMedPrio = factory.createPeriodicTask(
"PUS_MED_PRIO", 40, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.8, missedDeadlineFunc);
result = pusMedPrio->addComponent(objects::PUS_SERVICE_8_FUNCTION_MGMT);
if (result != HasReturnvaluesIF::RETURN_OK) {
initmission::printAddObjectError("PUS_8", objects::PUS_SERVICE_8_FUNCTION_MGMT);
}
result = pusMedPrio->addComponent(objects::PUS_SERVICE_3_HOUSEKEEPING);
if (result != HasReturnvaluesIF::RETURN_OK) {
sif::error << "Object add component failed" << std::endl;
}
result = pusMedPrio->addComponent(objects::PUS_SERVICE_200_MODE_MGMT);
if (result != HasReturnvaluesIF::RETURN_OK) {
initmission::printAddObjectError("PUS_200", objects::PUS_SERVICE_200_MODE_MGMT);
}
result = pusMedPrio->addComponent(objects::PUS_SERVICE_20_PARAMETERS);
if (result != HasReturnvaluesIF::RETURN_OK) {
initmission::printAddObjectError("PUS_20", objects::PUS_SERVICE_20_PARAMETERS);
}
taskVec.push_back(pusMedPrio);
PeriodicTaskIF* pusLowPrio = factory.createPeriodicTask(
"PUS_LOW_PRIO", 30, PeriodicTaskIF::MINIMUM_STACK_SIZE, 1.6, missedDeadlineFunc);
result = pusLowPrio->addComponent(objects::PUS_SERVICE_17_TEST);
if (result != HasReturnvaluesIF::RETURN_OK) {
initmission::printAddObjectError("PUS_17", objects::PUS_SERVICE_17_TEST);
}
result = pusLowPrio->addComponent(objects::INTERNAL_ERROR_REPORTER);
if (result != HasReturnvaluesIF::RETURN_OK) {
initmission::printAddObjectError("ERROR_REPORTER", objects::INTERNAL_ERROR_REPORTER);
}
taskVec.push_back(pusLowPrio);
}
void initmission::createTestTasks(TaskFactory& factory,
TaskDeadlineMissedFunction missedDeadlineFunc,
std::vector<PeriodicTaskIF*>& taskVec) {
#if OBSW_ADD_TEST_TASK == 1 && OBSW_ADD_TEST_CODE == 1
ReturnValue_t result = HasReturnvaluesIF::RETURN_OK;
static_cast<void>(result); // supress warning in case it is not used
PeriodicTaskIF* testTask = factory.createPeriodicTask(
"TEST_TASK", 60, PeriodicTaskIF::MINIMUM_STACK_SIZE, 1, missedDeadlineFunc);
result = testTask->addComponent(objects::TEST_TASK);
if (result != HasReturnvaluesIF::RETURN_OK) {
initmission::printAddObjectError("TEST_TASK", objects::TEST_TASK);
}
#if OBSW_ADD_SPI_TEST_CODE == 1
result = testTask->addComponent(objects::SPI_TEST);
if (result != HasReturnvaluesIF::RETURN_OK) {
initmission::printAddObjectError("SPI_TEST", objects::SPI_TEST);
}
#endif
#if OBSW_ADD_I2C_TEST_CODE == 1
result = testTask->addComponent(objects::I2C_TEST);
if (result != HasReturnvaluesIF::RETURN_OK) {
initmission::printAddObjectError("I2C_TEST", objects::I2C_TEST);
}
#endif
#if OBSW_ADD_UART_TEST_CODE == 1
result = testTask->addComponent(objects::UART_TEST);
if (result != HasReturnvaluesIF::RETURN_OK) {
initmission::printAddObjectError("UART_TEST", objects::UART_TEST);
}
#endif
taskVec.push_back(testTask);
#endif // OBSW_ADD_TEST_TASK == 1 && OBSW_ADD_TEST_CODE == 1
}
/**
▄ ▄
▌▒█ ▄▀▒▌
▌▒▒█ ▄▀▒▒▒▐
▐▄▀▒▒▀▀▀▀▄▄▄▀▒▒▒▒▒▐
▄▄▀▒░▒▒▒▒▒▒▒▒▒█▒▒▄█▒▐
▄▀▒▒▒░░░▒▒▒░░░▒▒▒▀██▀▒▌
▐▒▒▒▄▄▒▒▒▒░░░▒▒▒▒▒▒▒▀▄▒▒▌
▌░░▌█▀▒▒▒▒▒▄▀█▄▒▒▒▒▒▒▒█▒▐
▐░░░▒▒▒▒▒▒▒▒▌██▀▒▒░░░▒▒▒▀▄▌
▌░▒▄██▄▒▒▒▒▒▒▒▒▒░░░░░░▒▒▒▒▌
▌▒▀▐▄█▄█▌▄░▀▒▒░░░░░░░░░░▒▒▒▐
▐▒▒▐▀▐▀▒░▄▄▒▄▒▒▒▒▒▒░▒░▒░▒▒▒▒▌
▐▒▒▒▀▀▄▄▒▒▒▄▒▒▒▒▒▒▒▒░▒░▒░▒▒▐
▌▒▒▒▒▒▒▀▀▀▒▒▒▒▒▒░▒░▒░▒░▒▒▒▌
▐▒▒▒▒▒▒▒▒▒▒▒▒▒▒░▒░▒░▒▒▄▒▒▐
▀▄▒▒▒▒▒▒▒▒▒▒▒░▒░▒░▒▄▒▒▒▒▌
▀▄▒▒▒▒▒▒▒▒▒▒▄▄▄▀▒▒▒▒▄▀
▀▄▄▄▄▄▄▀▀▀▒▒▒▒▒▄▄▀
▒▒▒▒▒▒▒▒▒▒▀▀
**/

View File

@ -1,5 +1,7 @@
#include <mission/system/fdir/GomspacePowerFdir.h>
#include <mission/system/fdir/SyrlinksFdir.h>
#include "ObjectFactory.h"
#include <fsfw/subsystem/Subsystem.h>
#include <mission/system/objects/CamSwitcher.h>
#include "OBSWConfig.h"
#include "bsp_q7s/boardtest/Q7STestTask.h"
@ -7,15 +9,13 @@
#include "bsp_q7s/callbacks/pcduSwitchCb.h"
#include "bsp_q7s/callbacks/q7sGpioCallbacks.h"
#include "bsp_q7s/callbacks/rwSpiCallback.h"
#include "bsp_q7s/core/CoreController.h"
#include "bsp_q7s/core/ObjectFactory.h"
#include "bsp_q7s/memory/FileSystemHandler.h"
#include "busConf.h"
#include "ccsdsConfig.h"
#include "devConf.h"
#include "devices/addresses.h"
#include "devices/gpioIds.h"
#include "devices/powerSwitcherList.h"
#include "eive/definitions.h"
#include "fsfw/ipc/QueueFactory.h"
#include "linux/ObjectFactory.h"
#include "linux/boardtest/I2cTestClass.h"
@ -23,32 +23,42 @@
#include "linux/boardtest/UartTestClass.h"
#include "linux/callbacks/gpioCallbacks.h"
#include "linux/csp/CspComIF.h"
#include "linux/csp/CspCookie.h"
#include "linux/devices/GPSHyperionLinuxController.h"
#include "linux/devices/ScexUartReader.h"
#include "linux/devices/devicedefinitions/PlocMPSoCDefinitions.h"
#include "linux/devices/devicedefinitions/StarTrackerDefinitions.h"
#include "linux/devices/ploc/PlocMPSoCHandler.h"
#include "linux/devices/ploc/PlocMPSoCHelper.h"
#include "linux/devices/ploc/PlocMemoryDumper.h"
#include "linux/devices/ploc/PlocSupervisorHandler.h"
#include "linux/devices/ploc/PlocUpdater.h"
#include "linux/devices/startracker/StarTrackerHandler.h"
#include "linux/devices/startracker/StrHelper.h"
#include "linux/obc/AxiPtmeConfig.h"
#include "linux/obc/PapbVcInterface.h"
#include "linux/obc/PdecHandler.h"
#include "linux/obc/Ptme.h"
#include "linux/obc/PtmeConfig.h"
#include "mission/system/SusAssembly.h"
#include "mission/system/TcsBoardAssembly.h"
#include "linux/ipcore/AxiPtmeConfig.h"
#include "linux/ipcore/PapbVcInterface.h"
#include "linux/ipcore/PdecHandler.h"
#include "linux/ipcore/Ptme.h"
#include "linux/ipcore/PtmeConfig.h"
#include "mission/csp/CspCookie.h"
#include "mission/system/fdir/AcsBoardFdir.h"
#include "mission/system/fdir/GomspacePowerFdir.h"
#include "mission/system/fdir/RtdFdir.h"
#include "mission/system/fdir/SusFdir.h"
#include "tmtc/apid.h"
#include "mission/system/fdir/SyrlinksFdir.h"
#include "mission/system/objects/AcsSubsystem.h"
#include "mission/system/objects/RwAssembly.h"
#include "mission/system/objects/TcsBoardAssembly.h"
#include "mission/system/tree/acsModeTree.h"
#include "mission/system/tree/comModeTree.h"
#include "mission/system/tree/payloadModeTree.h"
#include "mission/system/tree/tcsModeTree.h"
#include "tmtc/pusIds.h"
#if OBSW_TEST_LIBGPIOD == 1
#include "linux/boardtest/LibgpiodTest.h"
#endif
#include <mission/devices/ImtqHandler.h>
#include <mission/devices/PcduHandler.h>
#include <mission/devices/SyrlinksHandler.h>
#include <sstream>
#include "fsfw/datapoollocal/LocalDataPoolManager.h"
@ -63,167 +73,86 @@
#include "fsfw_hal/linux/gpio/LinuxLibgpioIF.h"
#include "fsfw_hal/linux/i2c/I2cComIF.h"
#include "fsfw_hal/linux/i2c/I2cCookie.h"
#include "fsfw_hal/linux/serial/SerialComIF.h"
#include "fsfw_hal/linux/serial/SerialCookie.h"
#include "fsfw_hal/linux/spi/SpiComIF.h"
#include "fsfw_hal/linux/spi/SpiCookie.h"
#include "fsfw_hal/linux/uart/UartComIF.h"
#include "fsfw_hal/linux/uart/UartCookie.h"
#include "mission/core/GenericFactory.h"
#include "mission/devices/ACUHandler.h"
#include "mission/devices/BpxBatteryHandler.h"
#include "mission/devices/GyroADIS1650XHandler.h"
#include "mission/devices/HeaterHandler.h"
#include "mission/devices/IMTQHandler.h"
#include "mission/devices/Max31865PT1000Handler.h"
#include "mission/devices/P60DockHandler.h"
#include "mission/devices/PCDUHandler.h"
#include "mission/devices/PDU1Handler.h"
#include "mission/devices/PDU2Handler.h"
#include "mission/devices/PayloadPcduHandler.h"
#include "mission/devices/RadiationSensorHandler.h"
#include "mission/devices/RwHandler.h"
#include "mission/devices/SolarArrayDeploymentHandler.h"
#include "mission/devices/SusHandler.h"
#include "mission/devices/SyrlinksHkHandler.h"
#include "mission/devices/Tmp1075Handler.h"
#include "mission/devices/devicedefinitions/GomspaceDefinitions.h"
#include "mission/devices/devicedefinitions/Max31865Definitions.h"
#include "mission/devices/devicedefinitions/RadSensorDefinitions.h"
#include "mission/devices/devicedefinitions/RwDefinitions.h"
#include "mission/devices/devicedefinitions/SusDefinitions.h"
#include "mission/devices/devicedefinitions/SyrlinksDefinitions.h"
#include "mission/devices/devicedefinitions/payloadPcduDefinitions.h"
#include "mission/system/AcsBoardAssembly.h"
#include "mission/tmtc/CCSDSHandler.h"
#include "mission/system/objects/AcsBoardAssembly.h"
#include "mission/tmtc/CcsdsIpCoreHandler.h"
#include "mission/tmtc/TmFunnelHandler.h"
#include "mission/tmtc/VirtualChannel.h"
#include "mission/utility/TmFunnel.h"
ResetArgs resetArgsGnss0;
ResetArgs resetArgsGnss1;
void ObjectFactory::setStatics() { Factory::setStaticFrameworkObjectIds(); }
ResetArgs RESET_ARGS_GNSS;
void Factory::setStaticFrameworkObjectIds() {
PusServiceBase::packetSource = objects::PUS_PACKET_DISTRIBUTOR;
PusServiceBase::packetDestination = objects::TM_FUNNEL;
PusServiceBase::PUS_DISTRIBUTOR = objects::PUS_PACKET_DISTRIBUTOR;
PusServiceBase::PACKET_DESTINATION = objects::PUS_TM_FUNNEL;
CommandingServiceBase::defaultPacketSource = objects::PUS_PACKET_DISTRIBUTOR;
CommandingServiceBase::defaultPacketDestination = objects::TM_FUNNEL;
CommandingServiceBase::defaultPacketDestination = objects::PUS_TM_FUNNEL;
DeviceHandlerBase::powerSwitcherId = objects::PCDU_HANDLER;
// DeviceHandlerBase::powerSwitcherId = objects::NO_OBJECT;
#if OBSW_TM_TO_PTME == 1
TmFunnel::downlinkDestination = objects::CCSDS_HANDLER;
#if OBSW_Q7S_EM == 1
DeviceHandlerBase::powerSwitcherId = objects::NO_OBJECT;
#else
TmFunnel::downlinkDestination = objects::TMTC_BRIDGE;
#endif /* OBSW_TM_TO_PTME == 1 */
// No storage object for now.
TmFunnel::storageDestination = objects::NO_OBJECT;
DeviceHandlerBase::powerSwitcherId = objects::PCDU_HANDLER;
#endif /* OBSW_Q7S_EM == 1 */
LocalDataPoolManager::defaultHkDestination = objects::PUS_SERVICE_3_HOUSEKEEPING;
VerificationReporter::messageReceiver = objects::PUS_SERVICE_1_VERIFICATION;
TmPacketBase::timeStamperId = objects::TIME_STAMPER;
VerificationReporter::DEFAULT_RECEIVER = objects::PUS_SERVICE_1_VERIFICATION;
}
void ObjectFactory::produce(void* args) {
ObjectFactory::setStatics();
ObjectFactory::produceGenericObjects();
LinuxLibgpioIF* gpioComIF = nullptr;
UartComIF* uartComIF = nullptr;
SpiComIF* spiComIF = nullptr;
I2cComIF* i2cComIF = nullptr;
PowerSwitchIF* pwrSwitcher = nullptr;
createCommunicationInterfaces(&gpioComIF, &uartComIF, &spiComIF, &i2cComIF);
createTmpComponents();
new CoreController(objects::CORE_CONTROLLER);
gpioCallbacks::disableAllDecoder(gpioComIF);
createPcduComponents(gpioComIF, &pwrSwitcher);
createRadSensorComponent(gpioComIF);
createSunSensorComponents(gpioComIF, spiComIF, pwrSwitcher, q7s::SPI_DEFAULT_DEV);
#if OBSW_ADD_ACS_BOARD == 1
createAcsBoardComponents(gpioComIF, uartComIF, pwrSwitcher);
#endif
createHeaterComponents();
createSolarArrayDeploymentComponents();
createPlPcduComponents(gpioComIF, spiComIF, pwrSwitcher);
#if OBSW_ADD_SYRLINKS == 1
createSyrlinksComponents(pwrSwitcher);
#endif /* OBSW_ADD_SYRLINKS == 1 */
createRtdComponents(q7s::SPI_DEFAULT_DEV, gpioComIF, pwrSwitcher);
createPayloadComponents(gpioComIF);
#if OBSW_ADD_MGT == 1
I2cCookie* imtqI2cCookie =
new I2cCookie(addresses::IMTQ, IMTQ::MAX_REPLY_SIZE, q7s::I2C_DEFAULT_DEV);
auto imtqHandler = new IMTQHandler(objects::IMTQ_HANDLER, objects::I2C_COM_IF, imtqI2cCookie,
pcdu::Switches::PDU1_CH3_MGT_5V);
imtqHandler->setPowerSwitcher(pwrSwitcher);
static_cast<void>(imtqHandler);
#if OBSW_TEST_IMTQ == 1
imtqHandler->setStartUpImmediately();
imtqHandler->setToGoToNormal(true);
#endif
#if OBSW_DEBUG_IMTQ == 1
imtqHandler->setDebugMode(true);
#endif
#endif
createReactionWheelComponents(gpioComIF);
#if OBSW_ADD_BPX_BATTERY_HANDLER == 1
I2cCookie* bpxI2cCookie = new I2cCookie(addresses::BPX_BATTERY, 100, q7s::I2C_DEFAULT_DEV);
BpxBatteryHandler* bpxHandler =
new BpxBatteryHandler(objects::BPX_BATT_HANDLER, objects::I2C_COM_IF, bpxI2cCookie);
bpxHandler->setStartUpImmediately();
bpxHandler->setToGoToNormalMode(true);
#if OBSW_DEBUG_BPX_BATT == 1
bpxHandler->setDebugMode(true);
#endif
#endif
new FileSystemHandler(objects::FILE_SYSTEM_HANDLER);
#if OBSW_ADD_STAR_TRACKER == 1
UartCookie* starTrackerCookie =
new UartCookie(objects::STAR_TRACKER, q7s::UART_STAR_TRACKER_DEV, uart::STAR_TRACKER_BAUD,
startracker::MAX_FRAME_SIZE * 2 + 2, UartModes::NON_CANONICAL);
starTrackerCookie->setNoFixedSizeReply();
StrHelper* strHelper = new StrHelper(objects::STR_HELPER);
auto starTracker =
new StarTrackerHandler(objects::STAR_TRACKER, objects::UART_COM_IF, starTrackerCookie,
strHelper, pcdu::PDU1_CH2_STAR_TRACKER_5V);
starTracker->setPowerSwitcher(pwrSwitcher);
#endif /* OBSW_ADD_STAR_TRACKER == 1 */
#if OBSW_USE_CCSDS_IP_CORE == 1
createCcsdsComponents(gpioComIF);
#endif /* OBSW_USE_CCSDS_IP_CORE == 1 */
/* Test Task */
#if OBSW_ADD_TEST_CODE == 1
createTestComponents(gpioComIF);
#endif /* OBSW_ADD_TEST_CODE == 1 */
new PlocUpdater(objects::PLOC_UPDATER);
new PlocMemoryDumper(objects::PLOC_MEMORY_DUMPER);
}
void ObjectFactory::setStatics() { Factory::setStaticFrameworkObjectIds(); }
void ObjectFactory::createTmpComponents() {
I2cCookie* i2cCookieTmp1075tcs1 =
new I2cCookie(addresses::TMP1075_TCS_1, TMP1075::MAX_REPLY_LENGTH, q7s::I2C_DEFAULT_DEV);
I2cCookie* i2cCookieTmp1075tcs2 =
new I2cCookie(addresses::TMP1075_TCS_2, TMP1075::MAX_REPLY_LENGTH, q7s::I2C_DEFAULT_DEV);
std::vector<std::pair<object_id_t, address_t>> tmpDevIds = {{
{objects::TMP1075_HANDLER_TCS_0, addresses::TMP1075_TCS_0},
{objects::TMP1075_HANDLER_TCS_1, addresses::TMP1075_TCS_1},
{objects::TMP1075_HANDLER_PLPCDU_0, addresses::TMP1075_PLPCDU_0},
// damaged
// {objects::TMP1075_HANDLER_PLPCDU_1, addresses::TMP1075_PLPCDU_1},
{objects::TMP1075_HANDLER_IF_BOARD, addresses::TMP1075_IF_BOARD},
}};
std::vector<I2cCookie*> tmpDevCookies;
/* Temperature sensors */
Tmp1075Handler* tmp1075Handler_1 =
new Tmp1075Handler(objects::TMP1075_HANDLER_1, objects::I2C_COM_IF, i2cCookieTmp1075tcs1);
(void)tmp1075Handler_1;
Tmp1075Handler* tmp1075Handler_2 =
new Tmp1075Handler(objects::TMP1075_HANDLER_2, objects::I2C_COM_IF, i2cCookieTmp1075tcs2);
(void)tmp1075Handler_2;
for (size_t idx = 0; idx < tmpDevIds.size(); idx++) {
tmpDevCookies.push_back(
new I2cCookie(tmpDevIds[idx].second, TMP1075::MAX_REPLY_LENGTH, q7s::I2C_PS_EIVE));
auto* tmpDevHandler =
new Tmp1075Handler(tmpDevIds[idx].first, objects::I2C_COM_IF, tmpDevCookies[idx]);
tmpDevHandler->connectModeTreeParent(satsystem::tcs::SUBSYSTEM);
// TODO: Remove this after TCS subsystem was added
// These devices are connected to the 3V3 stack and should be powered permanently. Therefore,
// we set them to normal mode immediately here.
tmpDevHandler->setModeNormal();
}
}
void ObjectFactory::createCommunicationInterfaces(LinuxLibgpioIF** gpioComIF, UartComIF** uartComIF,
SpiComIF** spiComIF, I2cComIF** i2cComIF) {
if (gpioComIF == nullptr or uartComIF == nullptr or spiComIF == nullptr) {
void ObjectFactory::createCommunicationInterfaces(LinuxLibgpioIF** gpioComIF,
SerialComIF** uartComIF, SpiComIF** spiMainComIF,
I2cComIF** i2cComIF, SpiComIF** spiRWComIF) {
if (gpioComIF == nullptr or uartComIF == nullptr or spiMainComIF == nullptr or
spiRWComIF == nullptr) {
sif::error << "ObjectFactory::createCommunicationInterfaces: Invalid passed ComIF pointer"
<< std::endl;
}
@ -232,18 +161,16 @@ void ObjectFactory::createCommunicationInterfaces(LinuxLibgpioIF** gpioComIF, Ua
/* Communication interfaces */
new CspComIF(objects::CSP_COM_IF);
*i2cComIF = new I2cComIF(objects::I2C_COM_IF);
*uartComIF = new UartComIF(objects::UART_COM_IF);
*spiComIF = new SpiComIF(objects::SPI_COM_IF, *gpioComIF);
/* Adding gpios for chip select decoding to the gpioComIf */
q7s::gpioCallbacks::initSpiCsDecoder(*gpioComIF);
*uartComIF = new SerialComIF(objects::UART_COM_IF);
*spiMainComIF = new SpiComIF(objects::SPI_MAIN_COM_IF, q7s::SPI_DEFAULT_DEV, **gpioComIF);
*spiRWComIF = new SpiComIF(objects::SPI_RW_COM_IF, q7s::SPI_RW_DEV, **gpioComIF);
}
void ObjectFactory::createPcduComponents(LinuxLibgpioIF* gpioComIF, PowerSwitchIF** pwrSwitcher) {
CspCookie* p60DockCspCookie = new CspCookie(P60Dock::MAX_REPLY_LENGTH, addresses::P60DOCK);
CspCookie* pdu1CspCookie = new CspCookie(PDU::MAX_REPLY_LENGTH, addresses::PDU1);
CspCookie* pdu2CspCookie = new CspCookie(PDU::MAX_REPLY_LENGTH, addresses::PDU2);
CspCookie* acuCspCookie = new CspCookie(ACU::MAX_REPLY_LENGTH, addresses::ACU);
CspCookie* p60DockCspCookie = new CspCookie(P60Dock::MAX_REPLY_SIZE, addresses::P60DOCK, 500);
CspCookie* pdu1CspCookie = new CspCookie(PDU::MAX_REPLY_SIZE, addresses::PDU1, 500);
CspCookie* pdu2CspCookie = new CspCookie(PDU::MAX_REPLY_SIZE, addresses::PDU2, 500);
CspCookie* acuCspCookie = new CspCookie(ACU::MAX_REPLY_SIZE, addresses::ACU, 500);
auto p60Fdir = new GomspacePowerFdir(objects::P60DOCK_HANDLER);
P60DockHandler* p60dockhandler =
@ -281,8 +208,12 @@ void ObjectFactory::createPcduComponents(LinuxLibgpioIF* gpioComIF, PowerSwitchI
#endif
}
void ObjectFactory::createRadSensorComponent(LinuxLibgpioIF* gpioComIF) {
ReturnValue_t ObjectFactory::createRadSensorComponent(LinuxLibgpioIF* gpioComIF,
Stack5VHandler& stackHandler) {
using namespace gpio;
if (gpioComIF == nullptr) {
return returnvalue::FAILED;
}
GpioCookie* gpioCookieRadSensor = new GpioCookie;
std::stringstream consumer;
consumer << "0x" << std::hex << objects::RAD_SENSOR;
@ -292,27 +223,26 @@ void ObjectFactory::createRadSensorComponent(LinuxLibgpioIF* gpioComIF) {
gpio = new GpiodRegularByLineName(q7s::gpioNames::ENABLE_RADFET, consumer.str(), Direction::OUT,
Levels::LOW);
gpioCookieRadSensor->addGpio(gpioIds::ENABLE_RADFET, gpio);
gpioComIF->addGpios(gpioCookieRadSensor);
gpioChecker(gpioComIF->addGpios(gpioCookieRadSensor), "RAD sensor");
SpiCookie* spiCookieRadSensor = new SpiCookie(
addresses::RAD_SENSOR, gpioIds::CS_RAD_SENSOR, std::string(q7s::SPI_DEFAULT_DEV),
RAD_SENSOR::READ_SIZE, spi::DEFAULT_MAX_1227_MODE, spi::DEFAULT_MAX_1227_SPEED);
auto radSensor = new RadiationSensorHandler(objects::RAD_SENSOR, objects::SPI_COM_IF,
spiCookieRadSensor, gpioComIF);
SpiCookie* spiCookieRadSensor =
new SpiCookie(addresses::RAD_SENSOR, gpioIds::CS_RAD_SENSOR, RAD_SENSOR::READ_SIZE,
spi::DEFAULT_MAX_1227_MODE, spi::DEFAULT_MAX_1227_SPEED);
spiCookieRadSensor->setMutexParams(MutexIF::TimeoutType::WAITING, spi::RAD_SENSOR_CS_TIMEOUT);
auto radSensor = new RadiationSensorHandler(objects::RAD_SENSOR, objects::SPI_MAIN_COM_IF,
spiCookieRadSensor, gpioComIF, stackHandler);
static_cast<void>(radSensor);
// The radiation sensor ADC is powered by the 5V stack connector which should always be on
radSensor->setStartUpImmediately();
// It's a simple sensor, so just to to normal mode immediately
radSensor->setToGoToNormalModeImmediately();
#if OBSW_DEBUG_RAD_SENSOR == 1
radSensor->enablePeriodicDataPrint(true);
#endif
return returnvalue::OK;
}
void ObjectFactory::createAcsBoardComponents(LinuxLibgpioIF* gpioComIF, UartComIF* uartComIF,
void ObjectFactory::createAcsBoardComponents(LinuxLibgpioIF* gpioComIF, SerialComIF* uartComIF,
PowerSwitchIF* pwrSwitcher) {
using namespace gpio;
GpioCookie* gpioCookieAcsBoard = new GpioCookie();
std::vector<std::reference_wrapper<DeviceHandlerBase>> assemblyChildren;
std::stringstream consumer;
GpiodRegularByLineName* gpio = nullptr;
@ -408,20 +338,20 @@ void ObjectFactory::createAcsBoardComponents(LinuxLibgpioIF* gpioComIF, UartComI
gpio = new GpiodRegularByLineName(q7s::gpioNames::GNSS_SELECT, consumer.str(), Direction::OUT,
Levels::LOW);
gpioCookieAcsBoard->addGpio(gpioIds::GNSS_SELECT, gpio);
gpioComIF->addGpios(gpioCookieAcsBoard);
gpioChecker(gpioComIF->addGpios(gpioCookieAcsBoard), "ACS Board");
AcsBoardFdir* fdir = nullptr;
static_cast<void>(fdir);
#if OBSW_ADD_ACS_HANDLERS == 1
#if OBSW_ADD_ACS_BOARD == 1
std::string spiDev = q7s::SPI_DEFAULT_DEV;
SpiCookie* spiCookie =
new SpiCookie(addresses::MGM_0_LIS3, gpioIds::MGM_0_LIS3_CS, spiDev,
MGMLIS3MDL::MAX_BUFFER_SIZE, spi::DEFAULT_LIS3_MODE, spi::DEFAULT_LIS3_SPEED);
auto mgmLis3Handler = new MgmLIS3MDLHandler(objects::MGM_0_LIS3_HANDLER, objects::SPI_COM_IF,
spiCookie, spi::LIS3_TRANSITION_DELAY);
new SpiCookie(addresses::MGM_0_LIS3, gpioIds::MGM_0_LIS3_CS, MGMLIS3MDL::MAX_BUFFER_SIZE,
spi::DEFAULT_LIS3_MODE, spi::DEFAULT_LIS3_SPEED);
auto mgmLis3Handler0 = new MgmLIS3MDLHandler(
objects::MGM_0_LIS3_HANDLER, objects::SPI_MAIN_COM_IF, spiCookie, spi::LIS3_TRANSITION_DELAY);
fdir = new AcsBoardFdir(objects::MGM_0_LIS3_HANDLER);
mgmLis3Handler->setCustomFdir(fdir);
static_cast<void>(mgmLis3Handler);
mgmLis3Handler0->setCustomFdir(fdir);
assemblyChildren.push_back(*mgmLis3Handler0);
#if OBSW_TEST_ACS == 1
mgmLis3Handler->setStartUpImmediately();
mgmLis3Handler->setToGoToNormalMode(true);
@ -430,14 +360,14 @@ void ObjectFactory::createAcsBoardComponents(LinuxLibgpioIF* gpioComIF, UartComI
mgmLis3Handler->enablePeriodicPrintouts(true, 10);
#endif
spiCookie =
new SpiCookie(addresses::MGM_1_RM3100, gpioIds::MGM_1_RM3100_CS, spiDev,
RM3100::MAX_BUFFER_SIZE, spi::DEFAULT_RM3100_MODE, spi::DEFAULT_RM3100_SPEED);
auto mgmRm3100Handler = new MgmRM3100Handler(objects::MGM_1_RM3100_HANDLER, objects::SPI_COM_IF,
spiCookie, spi::RM3100_TRANSITION_DELAY);
new SpiCookie(addresses::MGM_1_RM3100, gpioIds::MGM_1_RM3100_CS, RM3100::MAX_BUFFER_SIZE,
spi::DEFAULT_RM3100_MODE, spi::DEFAULT_RM3100_SPEED);
auto mgmRm3100Handler1 =
new MgmRM3100Handler(objects::MGM_1_RM3100_HANDLER, objects::SPI_MAIN_COM_IF, spiCookie,
spi::RM3100_TRANSITION_DELAY);
fdir = new AcsBoardFdir(objects::MGM_1_RM3100_HANDLER);
mgmRm3100Handler->setCustomFdir(fdir);
mgmRm3100Handler->setParent(objects::ACS_BOARD_ASS);
static_cast<void>(mgmRm3100Handler);
mgmRm3100Handler1->setCustomFdir(fdir);
assemblyChildren.push_back(*mgmRm3100Handler1);
#if OBSW_TEST_ACS == 1
mgmRm3100Handler->setStartUpImmediately();
mgmRm3100Handler->setToGoToNormalMode(true);
@ -446,14 +376,13 @@ void ObjectFactory::createAcsBoardComponents(LinuxLibgpioIF* gpioComIF, UartComI
mgmRm3100Handler->enablePeriodicPrintouts(true, 10);
#endif
spiCookie =
new SpiCookie(addresses::MGM_2_LIS3, gpioIds::MGM_2_LIS3_CS, spiDev,
MGMLIS3MDL::MAX_BUFFER_SIZE, spi::DEFAULT_LIS3_MODE, spi::DEFAULT_LIS3_SPEED);
mgmLis3Handler = new MgmLIS3MDLHandler(objects::MGM_2_LIS3_HANDLER, objects::SPI_COM_IF,
spiCookie, spi::LIS3_TRANSITION_DELAY);
new SpiCookie(addresses::MGM_2_LIS3, gpioIds::MGM_2_LIS3_CS, MGMLIS3MDL::MAX_BUFFER_SIZE,
spi::DEFAULT_LIS3_MODE, spi::DEFAULT_LIS3_SPEED);
auto* mgmLis3Handler2 = new MgmLIS3MDLHandler(
objects::MGM_2_LIS3_HANDLER, objects::SPI_MAIN_COM_IF, spiCookie, spi::LIS3_TRANSITION_DELAY);
fdir = new AcsBoardFdir(objects::MGM_2_LIS3_HANDLER);
mgmLis3Handler->setCustomFdir(fdir);
mgmLis3Handler->setParent(objects::ACS_BOARD_ASS);
static_cast<void>(mgmLis3Handler);
mgmLis3Handler2->setCustomFdir(fdir);
assemblyChildren.push_back(*mgmLis3Handler2);
#if OBSW_TEST_ACS == 1
mgmLis3Handler->setStartUpImmediately();
mgmLis3Handler->setToGoToNormalMode(true);
@ -462,13 +391,14 @@ void ObjectFactory::createAcsBoardComponents(LinuxLibgpioIF* gpioComIF, UartComI
mgmLis3Handler->enablePeriodicPrintouts(true, 10);
#endif
spiCookie =
new SpiCookie(addresses::MGM_3_RM3100, gpioIds::MGM_3_RM3100_CS, spiDev,
RM3100::MAX_BUFFER_SIZE, spi::DEFAULT_RM3100_MODE, spi::DEFAULT_RM3100_SPEED);
mgmRm3100Handler = new MgmRM3100Handler(objects::MGM_3_RM3100_HANDLER, objects::SPI_COM_IF,
spiCookie, spi::RM3100_TRANSITION_DELAY);
new SpiCookie(addresses::MGM_3_RM3100, gpioIds::MGM_3_RM3100_CS, RM3100::MAX_BUFFER_SIZE,
spi::DEFAULT_RM3100_MODE, spi::DEFAULT_RM3100_SPEED);
auto* mgmRm3100Handler3 =
new MgmRM3100Handler(objects::MGM_3_RM3100_HANDLER, objects::SPI_MAIN_COM_IF, spiCookie,
spi::RM3100_TRANSITION_DELAY);
fdir = new AcsBoardFdir(objects::MGM_3_RM3100_HANDLER);
mgmRm3100Handler->setCustomFdir(fdir);
mgmRm3100Handler->setParent(objects::ACS_BOARD_ASS);
mgmRm3100Handler3->setCustomFdir(fdir);
assemblyChildren.push_back(*mgmRm3100Handler3);
#if OBSW_TEST_ACS == 1
mgmRm3100Handler->setStartUpImmediately();
mgmRm3100Handler->setToGoToNormalMode(true);
@ -478,15 +408,15 @@ void ObjectFactory::createAcsBoardComponents(LinuxLibgpioIF* gpioComIF, UartComI
#endif
// Commented until ACS board V2 in in clean room again
// Gyro 0 Side A
spiCookie = new SpiCookie(addresses::GYRO_0_ADIS, gpioIds::GYRO_0_ADIS_CS, spiDev,
ADIS1650X::MAXIMUM_REPLY_SIZE, spi::DEFAULT_ADIS16507_MODE,
spi::DEFAULT_ADIS16507_SPEED);
auto adisHandler = new GyroADIS1650XHandler(objects::GYRO_0_ADIS_HANDLER, objects::SPI_COM_IF,
spiCookie, ADIS1650X::Type::ADIS16505);
spiCookie =
new SpiCookie(addresses::GYRO_0_ADIS, gpioIds::GYRO_0_ADIS_CS, ADIS1650X::MAXIMUM_REPLY_SIZE,
spi::DEFAULT_ADIS16507_MODE, spi::DEFAULT_ADIS16507_SPEED);
auto adisHandler =
new GyroADIS1650XHandler(objects::GYRO_0_ADIS_HANDLER, objects::SPI_MAIN_COM_IF, spiCookie,
ADIS1650X::Type::ADIS16505);
fdir = new AcsBoardFdir(objects::GYRO_0_ADIS_HANDLER);
adisHandler->setCustomFdir(fdir);
adisHandler->setParent(objects::ACS_BOARD_ASS);
static_cast<void>(adisHandler);
assemblyChildren.push_back(*adisHandler);
#if OBSW_TEST_ACS == 1
adisHandler->setStartUpImmediately();
adisHandler->setToGoToNormalModeImmediately();
@ -495,15 +425,13 @@ void ObjectFactory::createAcsBoardComponents(LinuxLibgpioIF* gpioComIF, UartComI
adisHandler->enablePeriodicPrintouts(true, 10);
#endif
// Gyro 1 Side A
spiCookie =
new SpiCookie(addresses::GYRO_1_L3G, gpioIds::GYRO_1_L3G_CS, spiDev, L3GD20H::MAX_BUFFER_SIZE,
spi::DEFAULT_L3G_MODE, spi::DEFAULT_L3G_SPEED);
auto gyroL3gHandler = new GyroHandlerL3GD20H(objects::GYRO_1_L3G_HANDLER, objects::SPI_COM_IF,
spiCookie, spi::L3G_TRANSITION_DELAY);
spiCookie = new SpiCookie(addresses::GYRO_1_L3G, gpioIds::GYRO_1_L3G_CS, L3GD20H::MAX_BUFFER_SIZE,
spi::DEFAULT_L3G_MODE, spi::DEFAULT_L3G_SPEED);
auto gyroL3gHandler1 = new GyroHandlerL3GD20H(
objects::GYRO_1_L3G_HANDLER, objects::SPI_MAIN_COM_IF, spiCookie, spi::L3G_TRANSITION_DELAY);
fdir = new AcsBoardFdir(objects::GYRO_1_L3G_HANDLER);
gyroL3gHandler->setCustomFdir(fdir);
gyroL3gHandler->setParent(objects::ACS_BOARD_ASS);
static_cast<void>(gyroL3gHandler);
gyroL3gHandler1->setCustomFdir(fdir);
assemblyChildren.push_back(*gyroL3gHandler1);
#if OBSW_TEST_ACS == 1
gyroL3gHandler->setStartUpImmediately();
gyroL3gHandler->setToGoToNormalMode(true);
@ -512,27 +440,26 @@ void ObjectFactory::createAcsBoardComponents(LinuxLibgpioIF* gpioComIF, UartComI
gyroL3gHandler->enablePeriodicPrintouts(true, 10);
#endif
// Gyro 2 Side B
spiCookie = new SpiCookie(addresses::GYRO_2_ADIS, gpioIds::GYRO_2_ADIS_CS, spiDev,
ADIS1650X::MAXIMUM_REPLY_SIZE, spi::DEFAULT_ADIS16507_MODE,
spi::DEFAULT_ADIS16507_SPEED);
adisHandler = new GyroADIS1650XHandler(objects::GYRO_2_ADIS_HANDLER, objects::SPI_COM_IF,
spiCookie =
new SpiCookie(addresses::GYRO_2_ADIS, gpioIds::GYRO_2_ADIS_CS, ADIS1650X::MAXIMUM_REPLY_SIZE,
spi::DEFAULT_ADIS16507_MODE, spi::DEFAULT_ADIS16507_SPEED);
adisHandler = new GyroADIS1650XHandler(objects::GYRO_2_ADIS_HANDLER, objects::SPI_MAIN_COM_IF,
spiCookie, ADIS1650X::Type::ADIS16505);
fdir = new AcsBoardFdir(objects::GYRO_2_ADIS_HANDLER);
adisHandler->setCustomFdir(fdir);
adisHandler->setParent(objects::ACS_BOARD_ASS);
assemblyChildren.push_back(*adisHandler);
#if OBSW_TEST_ACS == 1
adisHandler->setStartUpImmediately();
adisHandler->setToGoToNormalModeImmediately();
#endif
// Gyro 3 Side B
spiCookie =
new SpiCookie(addresses::GYRO_3_L3G, gpioIds::GYRO_3_L3G_CS, spiDev, L3GD20H::MAX_BUFFER_SIZE,
spi::DEFAULT_L3G_MODE, spi::DEFAULT_L3G_SPEED);
gyroL3gHandler = new GyroHandlerL3GD20H(objects::GYRO_3_L3G_HANDLER, objects::SPI_COM_IF,
spiCookie, spi::L3G_TRANSITION_DELAY);
spiCookie = new SpiCookie(addresses::GYRO_3_L3G, gpioIds::GYRO_3_L3G_CS, L3GD20H::MAX_BUFFER_SIZE,
spi::DEFAULT_L3G_MODE, spi::DEFAULT_L3G_SPEED);
auto gyroL3gHandler3 = new GyroHandlerL3GD20H(
objects::GYRO_3_L3G_HANDLER, objects::SPI_MAIN_COM_IF, spiCookie, spi::L3G_TRANSITION_DELAY);
fdir = new AcsBoardFdir(objects::GYRO_3_L3G_HANDLER);
gyroL3gHandler->setCustomFdir(fdir);
gyroL3gHandler->setParent(objects::ACS_BOARD_ASS);
gyroL3gHandler3->setCustomFdir(fdir);
assemblyChildren.push_back(*gyroL3gHandler3);
#if OBSW_TEST_ACS == 1
gyroL3gHandler->setStartUpImmediately();
gyroL3gHandler->setToGoToNormalMode(true);
@ -544,27 +471,33 @@ void ObjectFactory::createAcsBoardComponents(LinuxLibgpioIF* gpioComIF, UartComI
#if OBSW_DEBUG_GPS == 1
debugGps = true;
#endif
resetArgsGnss1.gnss1 = true;
resetArgsGnss1.gpioComIF = gpioComIF;
resetArgsGnss1.waitPeriodMs = 100;
resetArgsGnss0.gnss1 = false;
resetArgsGnss0.gpioComIF = gpioComIF;
resetArgsGnss0.waitPeriodMs = 100;
auto gpsHandler0 =
RESET_ARGS_GNSS.gpioComIF = gpioComIF;
RESET_ARGS_GNSS.waitPeriodMs = 100;
auto gpsCtrl =
new GPSHyperionLinuxController(objects::GPS_CONTROLLER, objects::NO_OBJECT, debugGps);
gpsHandler0->setResetPinTriggerFunction(gps::triggerGpioResetPin, &resetArgsGnss0);
gpsCtrl->setResetPinTriggerFunction(gps::triggerGpioResetPin, &RESET_ARGS_GNSS);
AcsBoardHelper acsBoardHelper = AcsBoardHelper(
objects::MGM_0_LIS3_HANDLER, objects::MGM_1_RM3100_HANDLER, objects::MGM_2_LIS3_HANDLER,
objects::MGM_3_RM3100_HANDLER, objects::GYRO_0_ADIS_HANDLER, objects::GYRO_1_L3G_HANDLER,
objects::GYRO_2_ADIS_HANDLER, objects::GYRO_3_L3G_HANDLER, objects::GPS_CONTROLLER);
auto acsAss = new AcsBoardAssembly(objects::ACS_BOARD_ASS, objects::NO_OBJECT, pwrSwitcher,
acsBoardHelper, gpioComIF);
auto acsAss =
new AcsBoardAssembly(objects::ACS_BOARD_ASS, pwrSwitcher, acsBoardHelper, gpioComIF);
static_cast<void>(acsAss);
for (auto& assChild : assemblyChildren) {
ReturnValue_t result = assChild.get().connectModeTreeParent(*acsAss);
if (result != returnvalue::OK) {
sif::error << "Connecting assembly for ACS board component " << assChild.get().getObjectId()
<< " failed" << std::endl;
}
}
gpsCtrl->connectModeTreeParent(*acsAss);
acsAss->connectModeTreeParent(satsystem::acs::ACS_SUBSYSTEM);
#endif /* OBSW_ADD_ACS_HANDLERS == 1 */
}
void ObjectFactory::createHeaterComponents() {
void ObjectFactory::createHeaterComponents(GpioIF* gpioIF, PowerSwitchIF* pwrSwitcher,
HealthTableIF* healthTable) {
using namespace gpio;
GpioCookie* heaterGpiosCookie = new GpioCookie;
GpiodRegularByLineName* gpio = nullptr;
@ -605,11 +538,25 @@ void ObjectFactory::createHeaterComponents() {
Levels::LOW);
heaterGpiosCookie->addGpio(gpioIds::HEATER_7, gpio);
new HeaterHandler(objects::HEATER_HANDLER, objects::GPIO_IF, heaterGpiosCookie,
objects::PCDU_HANDLER, pcdu::Switches::PDU2_CH3_TCS_BOARD_HEATER_IN_8V);
gpioIF->addGpios(heaterGpiosCookie);
HeaterHelper helper({{
{new HealthDevice(objects::HEATER_0_PLOC_PROC_BRD, MessageQueueIF::NO_QUEUE),
gpioIds::HEATER_0},
{new HealthDevice(objects::HEATER_1_PCDU_BRD, MessageQueueIF::NO_QUEUE), gpioIds::HEATER_1},
{new HealthDevice(objects::HEATER_2_ACS_BRD, MessageQueueIF::NO_QUEUE), gpioIds::HEATER_2},
{new HealthDevice(objects::HEATER_3_OBC_BRD, MessageQueueIF::NO_QUEUE), gpioIds::HEATER_3},
{new HealthDevice(objects::HEATER_4_CAMERA, MessageQueueIF::NO_QUEUE), gpioIds::HEATER_4},
{new HealthDevice(objects::HEATER_5_STR, MessageQueueIF::NO_QUEUE), gpioIds::HEATER_5},
{new HealthDevice(objects::HEATER_6_DRO, MessageQueueIF::NO_QUEUE), gpioIds::HEATER_6},
{new HealthDevice(objects::HEATER_7_HPA, MessageQueueIF::NO_QUEUE), gpioIds::HEATER_7},
}});
new HeaterHandler(objects::HEATER_HANDLER, gpioIF, helper, pwrSwitcher,
pcdu::Switches::PDU2_CH3_TCS_BOARD_HEATER_IN_8V);
}
void ObjectFactory::createSolarArrayDeploymentComponents() {
void ObjectFactory::createSolarArrayDeploymentComponents(PowerSwitchIF& pwrSwitcher,
GpioIF& gpioIF) {
using namespace gpio;
GpioCookie* solarArrayDeplCookie = new GpioCookie;
GpiodRegularByLineName* gpio = nullptr;
@ -622,68 +569,79 @@ void ObjectFactory::createSolarArrayDeploymentComponents() {
gpio = new GpiodRegularByLineName(q7s::gpioNames::SA_DPL_PIN_1, consumer.str(), Direction::OUT,
Levels::LOW);
solarArrayDeplCookie->addGpio(gpioIds::DEPLSA2, gpio);
ReturnValue_t result = gpioIF.addGpios(solarArrayDeplCookie);
if (result != returnvalue::OK) {
sif::error << "Adding Solar Array Deployment GPIO cookie failed" << std::endl;
}
// TODO: Find out burn time. For now set to 1000 ms.
new SolarArrayDeploymentHandler(objects::SOLAR_ARRAY_DEPL_HANDLER, objects::GPIO_IF,
solarArrayDeplCookie, objects::PCDU_HANDLER,
new SolarArrayDeploymentHandler(objects::SOLAR_ARRAY_DEPL_HANDLER, gpioIF, pwrSwitcher,
pcdu::Switches::PDU2_CH5_DEPLOYMENT_MECHANISM_8V,
gpioIds::DEPLSA1, gpioIds::DEPLSA2, 1000);
gpioIds::DEPLSA1, gpioIds::DEPLSA2, *SdCardManager::instance());
}
void ObjectFactory::createSyrlinksComponents(PowerSwitchIF* pwrSwitcher) {
UartCookie* syrlinksUartCookie =
new UartCookie(objects::SYRLINKS_HK_HANDLER, q7s::UART_SYRLINKS_DEV, uart::SYRLINKS_BAUD,
syrlinks::MAX_REPLY_SIZE, UartModes::NON_CANONICAL);
auto* syrlinksUartCookie =
new SerialCookie(objects::SYRLINKS_HANDLER, q7s::UART_SYRLINKS_DEV, uart::SYRLINKS_BAUD,
syrlinks::MAX_REPLY_SIZE, UartModes::NON_CANONICAL);
syrlinksUartCookie->setParityEven();
auto syrlinksFdir = new SyrlinksFdir(objects::SYRLINKS_HK_HANDLER);
auto syrlinksFdir = new SyrlinksFdir(objects::SYRLINKS_HANDLER);
auto syrlinksHandler =
new SyrlinksHkHandler(objects::SYRLINKS_HK_HANDLER, objects::UART_COM_IF, syrlinksUartCookie,
pcdu::PDU1_CH1_SYRLINKS_12V, syrlinksFdir);
new SyrlinksHandler(objects::SYRLINKS_HANDLER, objects::UART_COM_IF, syrlinksUartCookie,
pcdu::PDU1_CH1_SYRLINKS_12V, syrlinksFdir);
syrlinksHandler->setPowerSwitcher(pwrSwitcher);
syrlinksHandler->setStartUpImmediately();
syrlinksHandler->connectModeTreeParent(satsystem::com::SUBSYSTEM);
#if OBSW_DEBUG_SYRLINKS == 1
syrlinksHandler->setDebugMode(true);
#endif
}
void ObjectFactory::createPayloadComponents(LinuxLibgpioIF* gpioComIF) {
void ObjectFactory::createPayloadComponents(LinuxLibgpioIF* gpioComIF, PowerSwitchIF& pwrSwitch) {
using namespace gpio;
std::stringstream consumer;
auto* camSwitcher =
new CamSwitcher(objects::CAM_SWITCHER, pwrSwitch, pcdu::PDU2_CH8_PAYLOAD_CAMERA);
camSwitcher->connectModeTreeParent(satsystem::pl::SUBSYSTEM);
#if OBSW_ADD_PLOC_MPSOC == 1
consumer << "0x" << std::hex << objects::PLOC_MPSOC_HANDLER;
auto gpioConfigMPSoC = new GpiodRegularByLineName(q7s::gpioNames::ENABLE_MPSOC_UART,
consumer.str(), Direction::OUT, Levels::HIGH);
auto mpsocGpioCookie = new GpioCookie;
mpsocGpioCookie->addGpio(gpioIds::ENABLE_MPSOC_UART, gpioConfigMPSoC);
gpioComIF->addGpios(mpsocGpioCookie);
gpioChecker(gpioComIF->addGpios(mpsocGpioCookie), "PLOC MPSoC");
auto mpsocCookie =
new UartCookie(objects::PLOC_MPSOC_HANDLER, q7s::UART_PLOC_MPSOC_DEV, uart::PLOC_MPSOC_BAUD,
mpsoc::MAX_REPLY_SIZE, UartModes::NON_CANONICAL);
new SerialCookie(objects::PLOC_MPSOC_HANDLER, q7s::UART_PLOC_MPSOC_DEV, uart::PLOC_MPSOC_BAUD,
mpsoc::MAX_REPLY_SIZE, UartModes::NON_CANONICAL);
mpsocCookie->setNoFixedSizeReply();
auto plocMpsocHelper = new PlocMPSoCHelper(objects::PLOC_MPSOC_HELPER);
new PlocMPSoCHandler(objects::PLOC_MPSOC_HANDLER, objects::UART_COM_IF, mpsocCookie,
plocMpsocHelper, Gpio(gpioIds::ENABLE_MPSOC_UART, gpioComIF),
objects::PLOC_SUPERVISOR_HANDLER);
auto* mpsocHandler = new PlocMPSoCHandler(
objects::PLOC_MPSOC_HANDLER, objects::UART_COM_IF, mpsocCookie, plocMpsocHelper,
Gpio(gpioIds::ENABLE_MPSOC_UART, gpioComIF), objects::PLOC_SUPERVISOR_HANDLER);
mpsocHandler->connectModeTreeParent(satsystem::pl::SUBSYSTEM);
#endif /* OBSW_ADD_PLOC_MPSOC == 1 */
#if OBSW_ADD_PLOC_SUPERVISOR == 1
consumer << "0x" << std::hex << objects::PLOC_SUPERVISOR_HANDLER;
auto gpioConfigSupv = new GpiodRegularByLineName(q7s::gpioNames::ENABLE_SUPV_UART, consumer.str(),
Direction::OUT, Levels::HIGH);
Direction::OUT, Levels::LOW);
auto supvGpioCookie = new GpioCookie;
supvGpioCookie->addGpio(gpioIds::ENABLE_SUPV_UART, gpioConfigSupv);
gpioComIF->addGpios(supvGpioCookie);
auto supervisorCookie = new UartCookie(objects::PLOC_SUPERVISOR_HANDLER,
q7s::UART_PLOC_SUPERVSIOR_DEV, uart::PLOC_SUPERVISOR_BAUD,
supv::MAX_PACKET_SIZE * 20, UartModes::NON_CANONICAL);
auto supervisorCookie =
new SerialCookie(objects::PLOC_SUPERVISOR_HANDLER, q7s::UART_PLOC_SUPERVSIOR_DEV,
uart::PLOC_SUPV_BAUD, supv::MAX_PACKET_SIZE * 20, UartModes::NON_CANONICAL);
supervisorCookie->setNoFixedSizeReply();
new PlocSupervisorHandler(objects::PLOC_SUPERVISOR_HANDLER, objects::UART_COM_IF,
supervisorCookie, Gpio(gpioIds::ENABLE_SUPV_UART, gpioComIF),
pcdu::PDU1_CH6_PLOC_12V);
auto supvHelper = new PlocSupvUartManager(objects::PLOC_SUPERVISOR_HELPER);
auto* supvHandler = new PlocSupervisorHandler(objects::PLOC_SUPERVISOR_HANDLER, supervisorCookie,
Gpio(gpioIds::ENABLE_SUPV_UART, gpioComIF),
pcdu::PDU1_CH6_PLOC_12V, *supvHelper);
supvHandler->connectModeTreeParent(satsystem::pl::SUBSYSTEM);
#endif /* OBSW_ADD_PLOC_SUPERVISOR == 1 */
static_cast<void>(consumer);
}
void ObjectFactory::createReactionWheelComponents(LinuxLibgpioIF* gpioComIF) {
void ObjectFactory::createReactionWheelComponents(LinuxLibgpioIF* gpioComIF,
PowerSwitchIF* pwrSwitcher) {
using namespace gpio;
GpioCookie* gpioCookieRw = new GpioCookie;
GpioCallback* csRw1 =
@ -725,54 +683,50 @@ void ObjectFactory::createReactionWheelComponents(LinuxLibgpioIF* gpioComIF) {
Levels::LOW);
gpioCookieRw->addGpio(gpioIds::EN_RW4, gpio);
gpioComIF->addGpios(gpioCookieRw);
gpioChecker(gpioComIF->addGpios(gpioCookieRw), "RWs");
#if OBSW_ADD_RW == 1
auto rw1SpiCookie =
new SpiCookie(addresses::RW1, gpioIds::CS_RW1, q7s::SPI_RW_DEV, RwDefinitions::MAX_REPLY_SIZE,
spi::RW_MODE, spi::RW_SPEED, &rwSpiCallback::spiCallback, nullptr);
auto rw2SpiCookie =
new SpiCookie(addresses::RW2, gpioIds::CS_RW2, q7s::SPI_RW_DEV, RwDefinitions::MAX_REPLY_SIZE,
spi::RW_MODE, spi::RW_SPEED, &rwSpiCallback::spiCallback, nullptr);
auto rw3SpiCookie =
new SpiCookie(addresses::RW3, gpioIds::CS_RW3, q7s::SPI_RW_DEV, RwDefinitions::MAX_REPLY_SIZE,
spi::RW_MODE, spi::RW_SPEED, &rwSpiCallback::spiCallback, nullptr);
auto rw4SpiCookie =
new SpiCookie(addresses::RW4, gpioIds::CS_RW4, q7s::SPI_RW_DEV, RwDefinitions::MAX_REPLY_SIZE,
spi::RW_MODE, spi::RW_SPEED, &rwSpiCallback::spiCallback, nullptr);
std::array<std::pair<address_t, gpioId_t>, 4> rwCookieParams = {
{{addresses::RW1, gpioIds::CS_RW1},
{addresses::RW2, gpioIds::CS_RW2},
{addresses::RW3, gpioIds::CS_RW3},
{addresses::RW4, gpioIds::CS_RW4}}};
std::array<SpiCookie*, 4> rwCookies = {};
std::array<object_id_t, 4> rwIds = {objects::RW1, objects::RW2, objects::RW3, objects::RW4};
std::array<gpioId_t, 4> rwGpioIds = {gpioIds::EN_RW1, gpioIds::EN_RW2, gpioIds::EN_RW3,
gpioIds::EN_RW4};
std::array<RwHandler*, 4> rws = {};
for (uint8_t idx = 0; idx < rwCookies.size(); idx++) {
rwCookies[idx] = new SpiCookie(rwCookieParams[idx].first, rwCookieParams[idx].second,
RwDefinitions::MAX_REPLY_SIZE, spi::RW_MODE, spi::RW_SPEED,
&rwSpiCallback::spiCallback, nullptr);
rws[idx] = new RwHandler(rwIds[idx], objects::SPI_RW_COM_IF, rwCookies[idx], gpioComIF,
rwGpioIds[idx]);
rwCookies[idx]->setCallbackArgs(rws[idx]);
#if OBSW_TEST_RW == 1
rws[idx]->setStartUpImmediately();
#endif
#if OBSW_DEBUG_RW == 1
rws[idx]->setDebugMode(true);
#endif
}
auto rwHandler1 =
new RwHandler(objects::RW1, objects::SPI_COM_IF, rw1SpiCookie, gpioComIF, gpioIds::EN_RW1);
rw1SpiCookie->setCallbackArgs(rwHandler1);
#if OBSW_DEBUG_RW == 1
rwHandler1->setStartUpImmediately();
rwHandler1->setDebugMode(true);
#endif
auto rwHandler2 =
new RwHandler(objects::RW2, objects::SPI_COM_IF, rw2SpiCookie, gpioComIF, gpioIds::EN_RW2);
rw2SpiCookie->setCallbackArgs(rwHandler2);
#if OBSW_DEBUG_RW == 1
rwHandler2->setStartUpImmediately();
rwHandler2->setDebugMode(true);
#endif
auto rwHandler3 =
new RwHandler(objects::RW3, objects::SPI_COM_IF, rw3SpiCookie, gpioComIF, gpioIds::EN_RW3);
rw3SpiCookie->setCallbackArgs(rwHandler3);
#if OBSW_DEBUG_RW == 1
rwHandler3->setStartUpImmediately();
rwHandler3->setDebugMode(true);
#endif
auto rwHandler4 =
new RwHandler(objects::RW4, objects::SPI_COM_IF, rw4SpiCookie, gpioComIF, gpioIds::EN_RW4);
rw4SpiCookie->setCallbackArgs(rwHandler4);
#if OBSW_DEBUG_RW == 1
rwHandler4->setStartUpImmediately();
rwHandler4->setDebugMode(true);
#endif
RwHelper rwHelper(rwIds);
auto* rwAss =
new RwAssembly(objects::RW_ASS, pwrSwitcher, pcdu::Switches::PDU2_CH2_RW_5V, rwHelper);
for (uint8_t idx = 0; idx < rws.size(); idx++) {
ReturnValue_t result = rws[idx]->connectModeTreeParent(*rwAss);
if (result != returnvalue::OK) {
sif::error << "Connecting RW " << static_cast<int>(idx) << " to RW assembly failed"
<< std::endl;
}
}
rwAss->connectModeTreeParent(satsystem::acs::ACS_SUBSYSTEM);
#endif /* OBSW_ADD_RW == 1 */
}
void ObjectFactory::createCcsdsComponents(LinuxLibgpioIF* gpioComIF) {
ReturnValue_t ObjectFactory::createCcsdsComponents(LinuxLibgpioIF* gpioComIF,
CcsdsIpCoreHandler** ipCoreHandler) {
using namespace gpio;
// GPIO definitions of signals connected to the virtual channel interfaces of the PTME IP Core
GpioCookie* gpioCookiePtmeIp = new GpioCookie;
@ -806,9 +760,7 @@ void ObjectFactory::createCcsdsComponents(LinuxLibgpioIF* gpioComIF) {
consumer.str("PAPB VC 3");
gpio = new GpiodRegularByLineName(q7s::gpioNames::PAPB_EMPTY_SIGNAL_VC3, consumer.str());
gpioCookiePtmeIp->addGpio(gpioIds::VC3_PAPB_EMPTY, gpio);
gpioComIF->addGpios(gpioCookiePtmeIp);
gpioChecker(gpioComIF->addGpios(gpioCookiePtmeIp), "PTME PAPB VCs");
// Creating virtual channel interfaces
VcInterfaceIF* vc0 =
new PapbVcInterface(gpioComIF, gpioIds::VC0_PAPB_BUSY, gpioIds::VC0_PAPB_EMPTY, q7s::UIO_PTME,
@ -822,14 +774,12 @@ void ObjectFactory::createCcsdsComponents(LinuxLibgpioIF* gpioComIF) {
VcInterfaceIF* vc3 =
new PapbVcInterface(gpioComIF, gpioIds::VC3_PAPB_BUSY, gpioIds::VC3_PAPB_EMPTY, q7s::UIO_PTME,
q7s::uiomapids::PTME_VC3);
// Creating ptme object and adding virtual channel interfaces
Ptme* ptme = new Ptme(objects::PTME);
ptme->addVcInterface(ccsds::VC0, vc0);
ptme->addVcInterface(ccsds::VC1, vc1);
ptme->addVcInterface(ccsds::VC2, vc2);
ptme->addVcInterface(ccsds::VC3, vc3);
AxiPtmeConfig* axiPtmeConfig =
new AxiPtmeConfig(objects::AXI_PTME_CONFIG, q7s::UIO_PTME, q7s::uiomapids::PTME_CONFIG);
PtmeConfig* ptmeConfig = new PtmeConfig(objects::PTME_CONFIG, axiPtmeConfig);
@ -839,19 +789,25 @@ void ObjectFactory::createCcsdsComponents(LinuxLibgpioIF* gpioComIF) {
#else
static const uint32_t TRANSMITTER_TIMEOUT = 900000; // 15 minutes
#endif
CCSDSHandler* ccsdsHandler = new CCSDSHandler(
*ipCoreHandler = new CcsdsIpCoreHandler(
objects::CCSDS_HANDLER, objects::PTME, objects::CCSDS_PACKET_DISTRIBUTOR, ptmeConfig,
gpioComIF, gpioIds::RS485_EN_TX_CLOCK, gpioIds::RS485_EN_TX_DATA, TRANSMITTER_TIMEOUT);
VirtualChannel* vc = nullptr;
vc = new VirtualChannel(ccsds::VC0, common::VC0_QUEUE_SIZE, objects::CCSDS_HANDLER);
ccsdsHandler->addVirtualChannel(ccsds::VC0, vc);
vc = new VirtualChannel(ccsds::VC1, common::VC1_QUEUE_SIZE, objects::CCSDS_HANDLER);
ccsdsHandler->addVirtualChannel(ccsds::VC1, vc);
vc = new VirtualChannel(ccsds::VC2, common::VC2_QUEUE_SIZE, objects::CCSDS_HANDLER);
ccsdsHandler->addVirtualChannel(ccsds::VC2, vc);
vc = new VirtualChannel(ccsds::VC3, common::VC3_QUEUE_SIZE, objects::CCSDS_HANDLER);
ccsdsHandler->addVirtualChannel(ccsds::VC3, vc);
vc = new VirtualChannel(ccsds::VC0, config::VC0_QUEUE_SIZE, objects::CCSDS_HANDLER);
(*ipCoreHandler)->addVirtualChannel(ccsds::VC0, vc);
vc = new VirtualChannel(ccsds::VC1, config::VC1_QUEUE_SIZE, objects::CCSDS_HANDLER);
(*ipCoreHandler)->addVirtualChannel(ccsds::VC1, vc);
vc = new VirtualChannel(ccsds::VC2, config::VC2_QUEUE_SIZE, objects::CCSDS_HANDLER);
(*ipCoreHandler)->addVirtualChannel(ccsds::VC2, vc);
vc = new VirtualChannel(ccsds::VC3, config::VC3_QUEUE_SIZE, objects::CCSDS_HANDLER);
(*ipCoreHandler)->addVirtualChannel(ccsds::VC3, vc);
ReturnValue_t result = (*ipCoreHandler)->connectModeTreeParent(satsystem::com::SUBSYSTEM);
if (result != returnvalue::OK) {
sif::error
<< "ObjectFactory::createCcsdsComponents: Connecting COM subsystem to CCSDS handler failed"
<< std::endl;
}
GpioCookie* gpioCookiePdec = new GpioCookie;
consumer.str("");
@ -860,12 +816,14 @@ void ObjectFactory::createCcsdsComponents(LinuxLibgpioIF* gpioComIF) {
gpio = new GpiodRegularByLineName(q7s::gpioNames::PDEC_RESET, consumer.str(), Direction::OUT,
Levels::LOW);
gpioCookiePdec->addGpio(gpioIds::PDEC_RESET, gpio);
gpioComIF->addGpios(gpioCookiePdec);
gpioChecker(gpioComIF->addGpios(gpioCookiePdec), "PDEC");
struct UioNames uioNames {};
uioNames.configMemory = q7s::UIO_PDEC_CONFIG_MEMORY;
uioNames.ramMemory = q7s::UIO_PDEC_RAM;
uioNames.registers = q7s::UIO_PDEC_REGISTERS;
uioNames.irq = q7s::UIO_PDEC_IRQ;
new PdecHandler(objects::PDEC_HANDLER, objects::CCSDS_HANDLER, gpioComIF, gpioIds::PDEC_RESET,
q7s::UIO_PDEC_CONFIG_MEMORY, q7s::UIO_PDEC_RAM, q7s::UIO_PDEC_REGISTERS);
uioNames);
GpioCookie* gpioRS485Chip = new GpioCookie;
gpio = new GpiodRegularByLineName(q7s::gpioNames::RS485_EN_TX_CLOCK, "RS485 Transceiver",
Direction::OUT, Levels::LOW);
@ -873,7 +831,6 @@ void ObjectFactory::createCcsdsComponents(LinuxLibgpioIF* gpioComIF) {
gpio = new GpiodRegularByLineName(q7s::gpioNames::RS485_EN_TX_DATA, "RS485 Transceiver",
Direction::OUT, Levels::LOW);
gpioRS485Chip->addGpio(gpioIds::RS485_EN_TX_DATA, gpio);
// Default configuration enables RX channels (RXEN = LOW)
gpio = new GpiodRegularByLineName(q7s::gpioNames::RS485_EN_RX_CLOCK, "RS485 Transceiver",
Direction::OUT, Levels::LOW);
@ -881,12 +838,13 @@ void ObjectFactory::createCcsdsComponents(LinuxLibgpioIF* gpioComIF) {
gpio = new GpiodRegularByLineName(q7s::gpioNames::RS485_EN_RX_DATA, "RS485 Transceiver",
Direction::OUT, Levels::LOW);
gpioRS485Chip->addGpio(gpioIds::RS485_EN_RX_DATA, gpio);
gpioComIF->addGpios(gpioRS485Chip);
gpioChecker(gpioComIF->addGpios(gpioRS485Chip), "RS485 Transceiver");
return returnvalue::OK;
}
void ObjectFactory::createPlPcduComponents(LinuxLibgpioIF* gpioComIF, SpiComIF* spiComIF,
PowerSwitchIF* pwrSwitcher) {
PowerSwitchIF* pwrSwitcher,
Stack5VHandler& stackHandler) {
using namespace gpio;
// Create all GPIO components first
GpioCookie* plPcduGpios = new GpioCookie;
@ -927,15 +885,14 @@ void ObjectFactory::createPlPcduComponents(LinuxLibgpioIF* gpioComIF, SpiComIF*
gpio = new GpiodRegularByLineName(q7s::gpioNames::PL_PCDU_ADC_CS, consumer, Direction::OUT,
gpio::Levels::HIGH);
plPcduGpios->addGpio(gpioIds::PLPCDU_ADC_CS, gpio);
gpioComIF->addGpios(plPcduGpios);
SpiCookie* spiCookie = new SpiCookie(addresses::PLPCDU_ADC, gpioIds::PLPCDU_ADC_CS,
q7s::SPI_DEFAULT_DEV, plpcdu::MAX_ADC_REPLY_SIZE,
spi::DEFAULT_MAX_1227_MODE, spi::PL_PCDU_MAX_1227_SPEED);
gpioChecker(gpioComIF->addGpios(plPcduGpios), "PL PCDU");
SpiCookie* spiCookie =
new SpiCookie(addresses::PLPCDU_ADC, gpioIds::PLPCDU_ADC_CS, plpcdu::MAX_ADC_REPLY_SIZE,
spi::DEFAULT_MAX_1227_MODE, spi::PL_PCDU_MAX_1227_SPEED);
// Create device handler components
auto plPcduHandler = new PayloadPcduHandler(
objects::PLPCDU_HANDLER, objects::SPI_COM_IF, spiCookie, gpioComIF, SdCardManager::instance(),
pwrSwitcher, pcdu::Switches::PDU2_CH1_PL_PCDU_BATT_0_14V8,
pcdu::Switches::PDU2_CH6_PL_PCDU_BATT_1_14V8, false);
auto plPcduHandler =
new PayloadPcduHandler(objects::PLPCDU_HANDLER, objects::SPI_MAIN_COM_IF, spiCookie,
gpioComIF, SdCardManager::instance(), stackHandler, false);
spiCookie->setCallbackMode(PayloadPcduHandler::extConvAsTwoCallback, plPcduHandler);
// plPcduHandler->enablePeriodicPrintout(true, 5);
// static_cast<void>(plPcduHandler);
@ -946,6 +903,7 @@ void ObjectFactory::createPlPcduComponents(LinuxLibgpioIF* gpioComIF, SpiComIF*
plPcduHandler->setToGoToNormalModeImmediately(true);
plPcduHandler->enablePeriodicPrintout(true, 10);
#endif
plPcduHandler->connectModeTreeParent(satsystem::pl::SUBSYSTEM);
}
void ObjectFactory::createTestComponents(LinuxLibgpioIF* gpioComIF) {
@ -954,19 +912,62 @@ void ObjectFactory::createTestComponents(LinuxLibgpioIF* gpioComIF) {
new SpiTestClass(objects::SPI_TEST, gpioComIF);
#endif
#if OBSW_ADD_I2C_TEST_CODE == 1
new I2cTestClass(objects::I2C_TEST, q7s::I2C_DEFAULT_DEV);
new I2cTestClass(objects::I2C_TEST, q7s::I2C_PL_EIVE);
#endif
#if OBSW_ADD_UART_TEST_CODE == 1
// auto* reader= new ScexUartReader(objects::SCEX_UART_READER);
new UartTestClass(objects::UART_TEST);
#endif
}
void ObjectFactory::createStrComponents(PowerSwitchIF* pwrSwitcher) {
auto* starTrackerCookie =
new SerialCookie(objects::STAR_TRACKER, q7s::UART_STAR_TRACKER_DEV, uart::STAR_TRACKER_BAUD,
startracker::MAX_FRAME_SIZE * 2 + 2, UartModes::NON_CANONICAL);
starTrackerCookie->setNoFixedSizeReply();
StrHelper* strHelper = new StrHelper(objects::STR_HELPER);
auto starTracker =
new StarTrackerHandler(objects::STAR_TRACKER, objects::UART_COM_IF, starTrackerCookie,
strHelper, pcdu::PDU1_CH2_STAR_TRACKER_5V);
starTracker->setPowerSwitcher(pwrSwitcher);
starTracker->connectModeTreeParent(satsystem::acs::ACS_SUBSYSTEM);
}
void ObjectFactory::createImtqComponents(PowerSwitchIF* pwrSwitcher) {
I2cCookie* imtqI2cCookie = new I2cCookie(addresses::IMTQ, IMTQ::MAX_REPLY_SIZE, q7s::I2C_PL_EIVE);
auto imtqHandler = new ImtqHandler(objects::IMTQ_HANDLER, objects::I2C_COM_IF, imtqI2cCookie,
pcdu::Switches::PDU1_CH3_MGT_5V);
imtqHandler->setPowerSwitcher(pwrSwitcher);
imtqHandler->connectModeTreeParent(satsystem::acs::ACS_SUBSYSTEM);
static_cast<void>(imtqHandler);
#if OBSW_TEST_IMTQ == 1
imtqHandler->setStartUpImmediately();
imtqHandler->setToGoToNormal(true);
#endif
#if OBSW_DEBUG_IMTQ == 1
imtqHandler->setDebugMode(true);
#endif
}
void ObjectFactory::createBpxBatteryComponent() {
I2cCookie* bpxI2cCookie = new I2cCookie(addresses::BPX_BATTERY, 100, q7s::I2C_PL_EIVE);
BpxBatteryHandler* bpxHandler =
new BpxBatteryHandler(objects::BPX_BATT_HANDLER, objects::I2C_COM_IF, bpxI2cCookie);
bpxHandler->setStartUpImmediately();
bpxHandler->setToGoToNormalMode(true);
#if OBSW_DEBUG_BPX_BATT == 1
bpxHandler->setDebugMode(true);
#endif
}
void ObjectFactory::createMiscComponents() { new PlocMemoryDumper(objects::PLOC_MEMORY_DUMPER); }
void ObjectFactory::testAcsBrdAss(AcsBoardAssembly* acsAss) {
CommandMessage msg;
ModeMessage::setModeMessage(&msg, ModeMessage::CMD_MODE_COMMAND, DeviceHandlerIF::MODE_NORMAL,
duallane::A_SIDE);
ReturnValue_t result = MessageQueueSenderIF::sendMessage(acsAss->getCommandQueue(), &msg);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != returnvalue::OK) {
sif::warning << "Sending mode command failed" << std::endl;
}
}

View File

@ -1,33 +1,49 @@
#ifndef BSP_Q7S_OBJECTFACTORY_H_
#define BSP_Q7S_OBJECTFACTORY_H_
#include <fsfw/returnvalues/returnvalue.h>
#include <mission/system/objects/Stack5VHandler.h>
#include <mission/tmtc/CcsdsIpCoreHandler.h>
#include <mission/tmtc/CfdpTmFunnel.h>
#include <mission/tmtc/PusTmFunnel.h>
#include <string>
class LinuxLibgpioIF;
class UartComIF;
class SerialComIF;
class SpiComIF;
class I2cComIF;
class PowerSwitchIF;
class HealthTableIF;
class AcsBoardAssembly;
class GpioIF;
namespace ObjectFactory {
void setStatics();
void produce(void* args);
void createCommunicationInterfaces(LinuxLibgpioIF** gpioComIF, UartComIF** uartComIF,
SpiComIF** spiComIF, I2cComIF** i2cComIF);
void createCommunicationInterfaces(LinuxLibgpioIF** gpioComIF, SerialComIF** uartComIF,
SpiComIF** spiMainComIF, I2cComIF** i2cComIF,
SpiComIF** spiRwComIF);
void createPcduComponents(LinuxLibgpioIF* gpioComIF, PowerSwitchIF** pwrSwitcher);
void createPlPcduComponents(LinuxLibgpioIF* gpioComIF, SpiComIF* spiComIF,
PowerSwitchIF* pwrSwitcher);
PowerSwitchIF* pwrSwitcher, Stack5VHandler& stackHandler);
void createTmpComponents();
void createRadSensorComponent(LinuxLibgpioIF* gpioComIF);
void createAcsBoardComponents(LinuxLibgpioIF* gpioComIF, UartComIF* uartComIF,
ReturnValue_t createRadSensorComponent(LinuxLibgpioIF* gpioComIF, Stack5VHandler& handler);
void createAcsBoardComponents(LinuxLibgpioIF* gpioComIF, SerialComIF* uartComIF,
PowerSwitchIF* pwrSwitcher);
void createHeaterComponents();
void createSolarArrayDeploymentComponents();
void createHeaterComponents(GpioIF* gpioIF, PowerSwitchIF* pwrSwitcher, HealthTableIF* healthTable);
void createImtqComponents(PowerSwitchIF* pwrSwitcher);
void createBpxBatteryComponent();
void createStrComponents(PowerSwitchIF* pwrSwitcher);
void createSolarArrayDeploymentComponents(PowerSwitchIF& pwrSwitcher, GpioIF& gpioIF);
void createSyrlinksComponents(PowerSwitchIF* pwrSwitcher);
void createPayloadComponents(LinuxLibgpioIF* gpioComIF);
void createReactionWheelComponents(LinuxLibgpioIF* gpioComIF);
void createCcsdsComponents(LinuxLibgpioIF* gpioComIF);
void createPayloadComponents(LinuxLibgpioIF* gpioComIF, PowerSwitchIF& pwrSwitcher);
void createReactionWheelComponents(LinuxLibgpioIF* gpioComIF, PowerSwitchIF* pwrSwitcher);
ReturnValue_t createCcsdsComponents(LinuxLibgpioIF* gpioComIF, CcsdsIpCoreHandler** ipCoreHandler);
void createMiscComponents();
void createTestComponents(LinuxLibgpioIF* gpioComIF);
void testAcsBrdAss(AcsBoardAssembly* assAss);

652
bsp_q7s/core/scheduling.cpp Normal file
View File

@ -0,0 +1,652 @@
#include "scheduling.h"
#include <fsfw/devicehandlers/DeviceCommunicationIF.h>
#include <fsfw/subsystem/Subsystem.h>
#include <linux/scheduling.h>
#include <iostream>
#include <vector>
#include "OBSWConfig.h"
#include "bsp_q7s/core/ObjectFactory.h"
#include "fsfw/objectmanager/ObjectManager.h"
#include "fsfw/objectmanager/ObjectManagerIF.h"
#include "fsfw/platform.h"
#include "fsfw/returnvalues/returnvalue.h"
#include "fsfw/serviceinterface/ServiceInterfaceStream.h"
#include "fsfw/tasks/FixedTimeslotTaskIF.h"
#include "fsfw/tasks/PeriodicTaskIF.h"
#include "fsfw/tasks/TaskFactory.h"
#include "mission/devices/devicedefinitions/Max31865Definitions.h"
#include "mission/utility/InitMission.h"
#include "pollingsequence/pollingSequenceFactory.h"
/* This is configured for linux without CR */
#ifdef PLATFORM_UNIX
ServiceInterfaceStream sif::debug("DEBUG");
ServiceInterfaceStream sif::info("INFO");
ServiceInterfaceStream sif::warning("WARNING");
ServiceInterfaceStream sif::error("ERROR");
#else
ServiceInterfaceStream sif::debug("DEBUG", true);
ServiceInterfaceStream sif::info("INFO", true);
ServiceInterfaceStream sif::warning("WARNING", true);
ServiceInterfaceStream sif::error("ERROR", true, false, true);
#endif
ObjectManagerIF* objectManager = nullptr;
void scheduling::initMission() {
sif::info << "Building global objects.." << std::endl;
try {
/* Instantiate global object manager and also create all objects */
ObjectManager::instance()->setObjectFactoryFunction(ObjectFactory::produce, nullptr);
} catch (const std::invalid_argument& e) {
sif::error << "scheduling::initMission: Object Construction failed with an "
"invalid argument: "
<< e.what();
std::exit(1);
}
sif::info << "Initializing all objects.." << std::endl;
ObjectManager::instance()->initialize();
/* This function creates and starts all tasks */
initTasks();
}
void scheduling::initTasks() {
TaskFactory* factory = TaskFactory::instance();
ReturnValue_t result = returnvalue::OK;
if (factory == nullptr) {
/* Should never happen ! */
return;
}
#if OBSW_PRINT_MISSED_DEADLINES == 1
void (*missedDeadlineFunc)(void) = TaskFactory::printMissedDeadline;
#else
void (*missedDeadlineFunc)(void) = nullptr;
#endif
#if OBSW_ADD_SA_DEPL == 1
// Could add this to the core controller but the core controller does so many thing that I would
// prefer to have the solar array deployment in a seprate task.
PeriodicTaskIF* solarArrayDeplTask = factory->createPeriodicTask(
"SOLAR_ARRAY_DEPL", 65, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.4, missedDeadlineFunc);
result = solarArrayDeplTask->addComponent(objects::SOLAR_ARRAY_DEPL_HANDLER);
if (result != returnvalue::OK) {
scheduling::printAddObjectError("SOLAR_ARRAY_DEPL", objects::SOLAR_ARRAY_DEPL_HANDLER);
}
#endif
PeriodicTaskIF* sysTask = factory->createPeriodicTask(
"CORE_CTRL", 60, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.4, missedDeadlineFunc);
result = sysTask->addComponent(objects::CORE_CONTROLLER);
if (result != returnvalue::OK) {
scheduling::printAddObjectError("CORE_CTRL", objects::CORE_CONTROLLER);
}
result = sysTask->addComponent(objects::PL_SUBSYSTEM);
if (result != returnvalue::OK) {
scheduling::printAddObjectError("PL_SUBSYSTEM", objects::PL_SUBSYSTEM);
}
/* TMTC Distribution */
PeriodicTaskIF* tmTcDistributor = factory->createPeriodicTask(
"DIST", 45, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.2, missedDeadlineFunc);
#if OBSW_ADD_TCPIP_SERVERS == 1
#if OBSW_ADD_TMTC_UDP_SERVER == 1
result = tmTcDistributor->addComponent(objects::UDP_TMTC_SERVER);
if (result != returnvalue::OK) {
scheduling::printAddObjectError("UDP_TMTC_SERVER", objects::UDP_TMTC_SERVER);
}
#endif
#if OBSW_ADD_TMTC_TCP_SERVER == 1
result = tmTcDistributor->addComponent(objects::TCP_TMTC_SERVER);
if (result != returnvalue::OK) {
scheduling::printAddObjectError("TCP_TMTC_SERVER", objects::TCP_TMTC_SERVER);
}
#endif
#endif
result = tmTcDistributor->addComponent(objects::CCSDS_PACKET_DISTRIBUTOR);
if (result != returnvalue::OK) {
scheduling::printAddObjectError("CCSDS_DISTRIB", objects::CCSDS_PACKET_DISTRIBUTOR);
}
result = tmTcDistributor->addComponent(objects::PUS_PACKET_DISTRIBUTOR);
if (result != returnvalue::OK) {
scheduling::printAddObjectError("PUS_PACKET_DISTRIB", objects::PUS_PACKET_DISTRIBUTOR);
}
result = tmTcDistributor->addComponent(objects::CFDP_DISTRIBUTOR);
if (result != returnvalue::OK) {
scheduling::printAddObjectError("CFDP_DISTRIBUTOR", objects::CFDP_DISTRIBUTOR);
}
result = tmTcDistributor->addComponent(objects::TM_FUNNEL);
if (result != returnvalue::OK) {
scheduling::printAddObjectError("TM_FUNNEL", objects::TM_FUNNEL);
}
#if OBSW_ADD_TCPIP_SERVERS == 1
#if OBSW_ADD_TMTC_UDP_SERVER == 1
PeriodicTaskIF* udpPollingTask = factory->createPeriodicTask(
"UDP_TMTC_POLLING", 65, PeriodicTaskIF::MINIMUM_STACK_SIZE, 2.0, missedDeadlineFunc);
result = udpPollingTask->addComponent(objects::UDP_TMTC_POLLING_TASK);
if (result != returnvalue::OK) {
scheduling::printAddObjectError("UDP_POLLING", objects::UDP_TMTC_POLLING_TASK);
}
#endif
#if OBSW_ADD_TMTC_TCP_SERVER == 1
PeriodicTaskIF* tcpPollingTask = factory->createPeriodicTask(
"TCP_TMTC_POLLING", 65, PeriodicTaskIF::MINIMUM_STACK_SIZE, 2.0, missedDeadlineFunc);
result = tcpPollingTask->addComponent(objects::TCP_TMTC_POLLING_TASK);
if (result != returnvalue::OK) {
scheduling::printAddObjectError("UDP_POLLING", objects::TCP_TMTC_POLLING_TASK);
}
#endif
#endif
PeriodicTaskIF* comTask = factory->createPeriodicTask(
"CCSDS_HANDLER", 50, PeriodicTaskIF::MINIMUM_STACK_SIZE, 2.0, missedDeadlineFunc);
result = comTask->addComponent(objects::COM_SUBSYSTEM);
if (result != returnvalue::OK) {
scheduling::printAddObjectError("COM subsystem", objects::COM_SUBSYSTEM);
}
#if OBSW_ADD_CCSDS_IP_CORES == 1
result = comTask->addComponent(objects::CCSDS_HANDLER);
if (result != returnvalue::OK) {
scheduling::printAddObjectError("CCSDS Handler", objects::CCSDS_HANDLER);
}
// Runs in IRQ mode, frequency does not really matter
PeriodicTaskIF* pdecHandlerTask = factory->createPeriodicTask(
"PDEC_HANDLER", 75, PeriodicTaskIF::MINIMUM_STACK_SIZE, 1.0, missedDeadlineFunc);
result = pdecHandlerTask->addComponent(objects::PDEC_HANDLER);
if (result != returnvalue::OK) {
scheduling::printAddObjectError("PDEC Handler", objects::PDEC_HANDLER);
}
#endif /* OBSW_ADD_CCSDS_IP_CORE == 1 */
#if OBSW_ADD_CFDP_COMPONENTS == 1
PeriodicTaskIF* cfdpTask = factory->createPeriodicTask(
"CFDP Handler", 45, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.4, missedDeadlineFunc);
result = cfdpTask->addComponent(objects::CFDP_HANDLER);
if (result != returnvalue::OK) {
scheduling::printAddObjectError("CFDP Handler", objects::CFDP_HANDLER);
}
#endif
PeriodicTaskIF* acsCtrlTask = factory->createPeriodicTask(
"ACS_TASK", 50, PeriodicTaskIF::MINIMUM_STACK_SIZE * 2, 0.4, missedDeadlineFunc);
#if OBSW_ADD_GPS_CTRL == 1
result = acsCtrlTask->addComponent(objects::GPS_CONTROLLER);
if (result != returnvalue::OK) {
scheduling::printAddObjectError("GPS_CTRL", objects::GPS_CONTROLLER);
}
#endif /* OBSW_ADD_GPS_CTRL */
#if OBSW_ADD_ACS_CTRL == 1
acsCtrlTask->addComponent(objects::ACS_CONTROLLER);
if (result != returnvalue::OK) {
scheduling::printAddObjectError("ACS_CTRL", objects::ACS_CONTROLLER);
}
#endif
#if OBSW_Q7S_EM == 1
acsCtrlTask->addComponent(objects::MGM_0_LIS3_HANDLER);
acsCtrlTask->addComponent(objects::MGM_1_RM3100_HANDLER);
acsCtrlTask->addComponent(objects::MGM_2_LIS3_HANDLER);
acsCtrlTask->addComponent(objects::MGM_3_RM3100_HANDLER);
acsCtrlTask->addComponent(objects::IMTQ_HANDLER);
acsCtrlTask->addComponent(objects::SUS_0_N_LOC_XFYFZM_PT_XF);
acsCtrlTask->addComponent(objects::SUS_6_R_LOC_XFYBZM_PT_XF);
acsCtrlTask->addComponent(objects::SUS_1_N_LOC_XBYFZM_PT_XB);
acsCtrlTask->addComponent(objects::SUS_7_R_LOC_XBYBZM_PT_XB);
acsCtrlTask->addComponent(objects::SUS_2_N_LOC_XFYBZB_PT_YB);
acsCtrlTask->addComponent(objects::SUS_8_R_LOC_XBYBZB_PT_YB);
acsCtrlTask->addComponent(objects::SUS_3_N_LOC_XFYBZF_PT_YF);
acsCtrlTask->addComponent(objects::SUS_9_R_LOC_XBYBZB_PT_YF);
acsCtrlTask->addComponent(objects::SUS_4_N_LOC_XMYFZF_PT_ZF);
acsCtrlTask->addComponent(objects::SUS_10_N_LOC_XMYBZF_PT_ZF);
acsCtrlTask->addComponent(objects::SUS_5_N_LOC_XFYMZB_PT_ZB);
acsCtrlTask->addComponent(objects::SUS_11_R_LOC_XBYMZB_PT_ZB);
acsCtrlTask->addComponent(objects::GYRO_0_ADIS_HANDLER);
acsCtrlTask->addComponent(objects::GYRO_1_L3G_HANDLER);
acsCtrlTask->addComponent(objects::GYRO_2_ADIS_HANDLER);
acsCtrlTask->addComponent(objects::GYRO_3_L3G_HANDLER);
acsCtrlTask->addComponent(objects::GPS_CONTROLLER);
acsCtrlTask->addComponent(objects::STAR_TRACKER);
acsCtrlTask->addComponent(objects::RW1);
acsCtrlTask->addComponent(objects::RW2);
acsCtrlTask->addComponent(objects::RW3);
acsCtrlTask->addComponent(objects::RW4);
#endif
PeriodicTaskIF* acsSysTask = factory->createPeriodicTask(
"SYS_TASK", 40, PeriodicTaskIF::MINIMUM_STACK_SIZE * 2, 0.4, missedDeadlineFunc);
static_cast<void>(acsSysTask);
#if OBSW_ADD_ACS_BOARD == 1
result = acsSysTask->addComponent(objects::ACS_BOARD_ASS);
if (result != returnvalue::OK) {
scheduling::printAddObjectError("ACS_BOARD_ASS", objects::ACS_BOARD_ASS);
}
#endif /* OBSW_ADD_ACS_HANDLERS */
#if OBSW_ADD_RW == 1
result = acsSysTask->addComponent(objects::RW_ASS);
if (result != returnvalue::OK) {
scheduling::printAddObjectError("RW_ASS", objects::RW_ASS);
}
#endif
#if OBSW_ADD_SUS_BOARD_ASS == 1
result = acsSysTask->addComponent(objects::SUS_BOARD_ASS);
if (result != returnvalue::OK) {
scheduling::printAddObjectError("SUS_BOARD_ASS", objects::SUS_BOARD_ASS);
}
#endif
result = acsSysTask->addComponent(objects::ACS_SUBSYSTEM);
if (result != returnvalue::OK) {
scheduling::printAddObjectError("ACS_SUBSYSTEM", objects::ACS_SUBSYSTEM);
}
#if OBSW_ADD_RTD_DEVICES == 1
PeriodicTaskIF* tcsPollingTask = factory->createPeriodicTask(
"TCS_POLLING_TASK", 70, PeriodicTaskIF::MINIMUM_STACK_SIZE * 2, 0.5, missedDeadlineFunc);
result = tcsPollingTask->addComponent(objects::SPI_RTD_COM_IF);
if (result != returnvalue::OK) {
scheduling::printAddObjectError("SPI_RTD_POLLING", objects::SPI_RTD_COM_IF);
}
PeriodicTaskIF* tcsTask = factory->createPeriodicTask(
"TCS_TASK", 45, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.8, missedDeadlineFunc);
std::array<object_id_t, EiveMax31855::NUM_RTDS> rtdIds = {
objects::RTD_0_IC3_PLOC_HEATSPREADER,
objects::RTD_1_IC4_PLOC_MISSIONBOARD,
objects::RTD_2_IC5_4K_CAMERA,
objects::RTD_3_IC6_DAC_HEATSPREADER,
objects::RTD_4_IC7_STARTRACKER,
objects::RTD_5_IC8_RW1_MX_MY,
objects::RTD_6_IC9_DRO,
objects::RTD_7_IC10_SCEX,
objects::RTD_8_IC11_X8,
objects::RTD_9_IC12_HPA,
objects::RTD_10_IC13_PL_TX,
objects::RTD_11_IC14_MPA,
objects::RTD_12_IC15_ACU,
objects::RTD_13_IC16_PLPCDU_HEATSPREADER,
objects::RTD_14_IC17_TCS_BOARD,
objects::RTD_15_IC18_IMTQ,
};
for (const auto& rtd : rtdIds) {
tcsTask->addComponent(rtd, DeviceHandlerIF::PERFORM_OPERATION);
tcsTask->addComponent(rtd, DeviceHandlerIF::SEND_WRITE);
tcsTask->addComponent(rtd, DeviceHandlerIF::GET_WRITE);
tcsTask->addComponent(rtd, DeviceHandlerIF::SEND_READ);
tcsTask->addComponent(rtd, DeviceHandlerIF::GET_READ);
}
#endif
PeriodicTaskIF* tcsSystemTask = factory->createPeriodicTask(
"TCS_TASK", 45, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.5, missedDeadlineFunc);
result = tcsSystemTask->addComponent(objects::TCS_SUBSYSTEM);
if (result != returnvalue::OK) {
scheduling::printAddObjectError("TCS_SUBSYSTEM", objects::TCS_SUBSYSTEM);
}
#if OBSW_ADD_RTD_DEVICES == 1
result = tcsSystemTask->addComponent(objects::TCS_BOARD_ASS);
if (result != returnvalue::OK) {
scheduling::printAddObjectError("TCS_BOARD_ASS", objects::TCS_BOARD_ASS);
}
#endif /* OBSW_ADD_RTD_DEVICES */
#if OBSW_ADD_TCS_CTRL == 1
result = tcsSystemTask->addComponent(objects::THERMAL_CONTROLLER);
if (result != returnvalue::OK) {
scheduling::printAddObjectError("THERMAL_CONTROLLER", objects::THERMAL_CONTROLLER);
}
#endif
#if OBSW_ADD_HEATERS == 1
result = tcsSystemTask->addComponent(objects::HEATER_HANDLER);
if (result != returnvalue::OK) {
scheduling::printAddObjectError("HEATER_HANDLER", objects::HEATER_HANDLER);
}
#endif
#if OBSW_ADD_STAR_TRACKER == 1
PeriodicTaskIF* strHelperTask = factory->createPeriodicTask(
"STR_HELPER", 20, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.2, missedDeadlineFunc);
result = strHelperTask->addComponent(objects::STR_HELPER);
if (result != returnvalue::OK) {
scheduling::printAddObjectError("STR_HELPER", objects::STR_HELPER);
}
#endif /* OBSW_ADD_STAR_TRACKER == 1 */
#if OBSW_ADD_PLOC_MPSOC == 1
PeriodicTaskIF* mpsocHelperTask = factory->createPeriodicTask(
"PLOC_MPSOC_HELPER", 20, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.2, missedDeadlineFunc);
result = mpsocHelperTask->addComponent(objects::PLOC_MPSOC_HELPER);
if (result != returnvalue::OK) {
scheduling::printAddObjectError("PLOC_MPSOC_HELPER", objects::PLOC_MPSOC_HELPER);
}
#endif /* OBSW_ADD_PLOC_MPSOC */
#if OBSW_ADD_PLOC_SUPERVISOR == 1
PeriodicTaskIF* supvHelperTask = factory->createPeriodicTask(
"PLOC_SUPV_HELPER", 10, PeriodicTaskIF::MINIMUM_STACK_SIZE, 1.0, missedDeadlineFunc);
result = supvHelperTask->addComponent(objects::PLOC_SUPERVISOR_HELPER);
if (result != returnvalue::OK) {
scheduling::printAddObjectError("PLOC_SUPV_HELPER", objects::PLOC_SUPERVISOR_HELPER);
}
#endif /* OBSW_ADD_PLOC_SUPERVISOR */
PeriodicTaskIF* plTask = factory->createPeriodicTask(
"PL_TASK", 25, PeriodicTaskIF::MINIMUM_STACK_SIZE, 1.0, missedDeadlineFunc);
scheduling::addMpsocSupvHandlers(plTask);
plTask->addComponent(objects::CAM_SWITCHER);
#if OBSW_ADD_SCEX_DEVICE == 1
PeriodicTaskIF* scexDevHandler;
PeriodicTaskIF* scexReaderTask;
scheduling::schedulingScex(*factory, scexDevHandler, scexReaderTask);
#endif
std::vector<PeriodicTaskIF*> pusTasks;
createPusTasks(*factory, missedDeadlineFunc, pusTasks);
std::vector<PeriodicTaskIF*> pstTasks;
createPstTasks(*factory, missedDeadlineFunc, pstTasks);
#if OBSW_ADD_TEST_CODE == 1
#if OBSW_TEST_CCSDS_BRIDGE == 1
PeriodicTaskIF* ptmeTestTask = factory->createPeriodicTask(
"PTME_TEST", 80, PeriodicTaskIF::MINIMUM_STACK_SIZE, 2.0, missedDeadlineFunc);
result = ptmeTestTask->addComponent(objects::CCSDS_IP_CORE_BRIDGE);
if (result != returnvalue::OK) {
scheduling::printAddObjectError("PTME_TEST", objects::CCSDS_IP_CORE_BRIDGE);
}
#endif
std::vector<PeriodicTaskIF*> testTasks;
createTestTasks(*factory, missedDeadlineFunc, testTasks);
#endif
auto taskStarter = [](std::vector<PeriodicTaskIF*>& taskVector, std::string name) {
for (const auto& task : taskVector) {
if (task != nullptr) {
task->startTask();
} else {
sif::error << "Task in vector " << name << " is invalid!" << std::endl;
}
}
};
sif::info << "Starting tasks.." << std::endl;
tmTcDistributor->startTask();
#if OBSW_ADD_TCPIP_SERVERS == 1
#if OBSW_ADD_TMTC_UDP_SERVER == 1
udpPollingTask->startTask();
#endif
#if OBSW_ADD_TMTC_TCP_SERVER == 1
tcpPollingTask->startTask();
#endif
#endif
comTask->startTask();
#if OBSW_ADD_CCSDS_IP_CORES == 1
pdecHandlerTask->startTask();
#endif /* OBSW_ADD_CCSDS_IP_CORES == 1 */
sysTask->startTask();
#if OBSW_ADD_SA_DEPL == 1
solarArrayDeplTask->startTask();
#endif
taskStarter(pstTasks, "PST task vector");
taskStarter(pusTasks, "PUS task vector");
#if OBSW_ADD_SCEX_DEVICE == 1
scexDevHandler->startTask();
scexReaderTask->startTask();
#endif
#if OBSW_TEST_CCSDS_BRIDGE == 1
ptmeTestTask->startTask();
#endif
#if OBSW_ADD_CFDP_COMPONENTS == 1
cfdpTask->startTask();
#endif
#if OBSW_ADD_STAR_TRACKER == 1
strHelperTask->startTask();
#endif /* OBSW_ADD_STAR_TRACKER == 1 */
acsCtrlTask->startTask();
acsSysTask->startTask();
#if OBSW_ADD_RTD_DEVICES == 1
tcsPollingTask->startTask();
tcsTask->startTask();
#endif /* OBSW_ADD_RTD_DEVICES == 1 */
if (not tcsSystemTask->isEmpty()) {
tcsSystemTask->startTask();
}
#if OBSW_ADD_PLOC_SUPERVISOR == 1
supvHelperTask->startTask();
#endif /* OBSW_ADD_PLOC_SUPERVISOR == 1 */
plTask->startTask();
#if OBSW_ADD_TEST_CODE == 1
taskStarter(testTasks, "Test task vector");
#endif
sif::info << "Tasks started.." << std::endl;
}
void scheduling::createPstTasks(TaskFactory& factory, TaskDeadlineMissedFunction missedDeadlineFunc,
std::vector<PeriodicTaskIF*>& taskVec) {
ReturnValue_t result = returnvalue::OK;
/* Polling Sequence Table Default */
#if OBSW_ADD_SPI_TEST_CODE == 0
FixedTimeslotTaskIF* spiPst = factory.createFixedTimeslotTask(
"MAIN_SPI", 75, PeriodicTaskIF::MINIMUM_STACK_SIZE * 4, 0.5, missedDeadlineFunc);
result = pst::pstSpi(spiPst);
if (result != returnvalue::OK) {
if (result == FixedTimeslotTaskIF::SLOT_LIST_EMPTY) {
sif::warning << "scheduling::initTasks: SPI PST is empty" << std::endl;
} else {
sif::error << "scheduling::initTasks: Creating SPI PST failed!" << std::endl;
}
} else {
taskVec.push_back(spiPst);
}
#endif
#if OBSW_ADD_RW == 1
FixedTimeslotTaskIF* rwPstTask = factory.createFixedTimeslotTask(
"RW_SPI", 65, PeriodicTaskIF::MINIMUM_STACK_SIZE * 2, 1.0, missedDeadlineFunc);
result = pst::pstSpiRw(rwPstTask);
if (result != returnvalue::OK) {
if (result == FixedTimeslotTaskIF::SLOT_LIST_EMPTY) {
sif::warning << "scheduling::initTasks: SPI PST is empty" << std::endl;
} else {
sif::error << "scheduling::initTasks: Creating SPI PST failed!" << std::endl;
}
} else {
taskVec.push_back(rwPstTask);
}
#endif
FixedTimeslotTaskIF* uartPst = factory.createFixedTimeslotTask(
"UART_PST", 65, PeriodicTaskIF::MINIMUM_STACK_SIZE * 4, 0.2, missedDeadlineFunc);
result = pst::pstUart(uartPst);
if (result != returnvalue::OK) {
if (result == FixedTimeslotTaskIF::SLOT_LIST_EMPTY) {
sif::warning << "scheduling::initTasks: UART PST is empty" << std::endl;
} else {
sif::error << "scheduling::initTasks: Creating UART PST failed!" << std::endl;
}
} else {
taskVec.push_back(uartPst);
}
#if OBSW_ADD_I2C_TEST_CODE == 0
FixedTimeslotTaskIF* i2cPst = factory.createFixedTimeslotTask(
"I2C_PST", 65, PeriodicTaskIF::MINIMUM_STACK_SIZE * 4, 0.2, missedDeadlineFunc);
result = pst::pstI2c(i2cPst);
if (result != returnvalue::OK) {
if (result == FixedTimeslotTaskIF::SLOT_LIST_EMPTY) {
sif::warning << "scheduling::initTasks: I2C PST is empty" << std::endl;
} else {
sif::error << "scheduling::initTasks: Creating I2C PST failed!" << std::endl;
}
} else {
taskVec.push_back(i2cPst);
}
#endif
#if OBSW_ADD_GOMSPACE_PCDU == 1
FixedTimeslotTaskIF* gomSpacePstTask = factory.createFixedTimeslotTask(
"GS_PST_TASK", 70, PeriodicTaskIF::MINIMUM_STACK_SIZE * 4, 1.0, missedDeadlineFunc);
result = pst::pstGompaceCan(gomSpacePstTask);
if (result != returnvalue::OK) {
if (result != FixedTimeslotTaskIF::SLOT_LIST_EMPTY) {
sif::error << "scheduling::initTasks: GomSpace PST initialization failed!" << std::endl;
}
}
taskVec.push_back(gomSpacePstTask);
#endif
}
void scheduling::createPusTasks(TaskFactory& factory, TaskDeadlineMissedFunction missedDeadlineFunc,
std::vector<PeriodicTaskIF*>& taskVec) {
ReturnValue_t result = returnvalue::OK;
/* PUS Services */
PeriodicTaskIF* pusVerification = factory.createPeriodicTask(
"PUS_VERIF", 40, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.200, missedDeadlineFunc);
result = pusVerification->addComponent(objects::PUS_SERVICE_1_VERIFICATION);
if (result != returnvalue::OK) {
scheduling::printAddObjectError("PUS_VERIF", objects::PUS_SERVICE_1_VERIFICATION);
}
taskVec.push_back(pusVerification);
PeriodicTaskIF* pusEvents = factory.createPeriodicTask(
"PUS_EVENTS", 60, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.200, missedDeadlineFunc);
result = pusEvents->addComponent(objects::PUS_SERVICE_5_EVENT_REPORTING);
if (result != returnvalue::OK) {
scheduling::printAddObjectError("PUS_EVENTS", objects::PUS_SERVICE_5_EVENT_REPORTING);
}
result = pusEvents->addComponent(objects::EVENT_MANAGER);
if (result != returnvalue::OK) {
scheduling::printAddObjectError("PUS_MGMT", objects::EVENT_MANAGER);
}
taskVec.push_back(pusEvents);
PeriodicTaskIF* pusHighPrio = factory.createPeriodicTask(
"PUS_HIGH_PRIO", 50, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.2, missedDeadlineFunc);
result = pusHighPrio->addComponent(objects::PUS_SERVICE_2_DEVICE_ACCESS);
if (result != returnvalue::OK) {
scheduling::printAddObjectError("PUS_2", objects::PUS_SERVICE_2_DEVICE_ACCESS);
}
result = pusHighPrio->addComponent(objects::PUS_SERVICE_9_TIME_MGMT);
if (result != returnvalue::OK) {
scheduling::printAddObjectError("PUS_9", objects::PUS_SERVICE_9_TIME_MGMT);
}
taskVec.push_back(pusHighPrio);
PeriodicTaskIF* pusMedPrio = factory.createPeriodicTask(
"PUS_MED_PRIO", 40, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.8, missedDeadlineFunc);
result = pusMedPrio->addComponent(objects::PUS_SERVICE_3_HOUSEKEEPING);
if (result != returnvalue::OK) {
scheduling::printAddObjectError("PUS_3", objects::PUS_SERVICE_3_HOUSEKEEPING);
}
result = pusMedPrio->addComponent(objects::PUS_SERVICE_8_FUNCTION_MGMT);
if (result != returnvalue::OK) {
scheduling::printAddObjectError("PUS_8", objects::PUS_SERVICE_8_FUNCTION_MGMT);
}
result = pusMedPrio->addComponent(objects::PUS_SERVICE_11_TC_SCHEDULER);
if (result != returnvalue::OK) {
scheduling::printAddObjectError("PUS_11", objects::PUS_SERVICE_11_TC_SCHEDULER);
}
result = pusMedPrio->addComponent(objects::PUS_SERVICE_20_PARAMETERS);
if (result != returnvalue::OK) {
scheduling::printAddObjectError("PUS_20", objects::PUS_SERVICE_20_PARAMETERS);
}
result = pusMedPrio->addComponent(objects::PUS_SERVICE_200_MODE_MGMT);
if (result != returnvalue::OK) {
scheduling::printAddObjectError("PUS_200", objects::PUS_SERVICE_200_MODE_MGMT);
}
result = pusMedPrio->addComponent(objects::PUS_SERVICE_201_HEALTH);
if (result != returnvalue::OK) {
scheduling::printAddObjectError("PUS_201", objects::PUS_SERVICE_201_HEALTH);
}
// Used for connection tests, therefore use higher priority
result = pusMedPrio->addComponent(objects::PUS_SERVICE_17_TEST);
if (result != returnvalue::OK) {
scheduling::printAddObjectError("PUS_17", objects::PUS_SERVICE_17_TEST);
}
taskVec.push_back(pusMedPrio);
PeriodicTaskIF* pusLowPrio = factory.createPeriodicTask(
"PUS_LOW_PRIO", 30, PeriodicTaskIF::MINIMUM_STACK_SIZE, 1.6, missedDeadlineFunc);
result = pusLowPrio->addComponent(objects::INTERNAL_ERROR_REPORTER);
if (result != returnvalue::OK) {
scheduling::printAddObjectError("ERROR_REPORTER", objects::INTERNAL_ERROR_REPORTER);
}
taskVec.push_back(pusLowPrio);
}
void scheduling::createTestTasks(TaskFactory& factory,
TaskDeadlineMissedFunction missedDeadlineFunc,
std::vector<PeriodicTaskIF*>& taskVec) {
#if OBSW_ADD_TEST_TASK == 1 && OBSW_ADD_TEST_CODE == 1
ReturnValue_t result = returnvalue::OK;
static_cast<void>(result); // supress warning in case it is not used
PeriodicTaskIF* testTask = factory.createPeriodicTask(
"TEST_TASK", 60, PeriodicTaskIF::MINIMUM_STACK_SIZE, 1, missedDeadlineFunc);
result = testTask->addComponent(objects::TEST_TASK);
if (result != returnvalue::OK) {
scheduling::printAddObjectError("TEST_TASK", objects::TEST_TASK);
}
#if OBSW_ADD_SPI_TEST_CODE == 1
result = testTask->addComponent(objects::SPI_TEST);
if (result != returnvalue::OK) {
scheduling::printAddObjectError("SPI_TEST", objects::SPI_TEST);
}
#endif
#if OBSW_ADD_I2C_TEST_CODE == 1
result = testTask->addComponent(objects::I2C_TEST);
if (result != returnvalue::OK) {
scheduling::printAddObjectError("I2C_TEST", objects::I2C_TEST);
}
#endif
#if OBSW_ADD_UART_TEST_CODE == 1
result = testTask->addComponent(objects::UART_TEST);
if (result != returnvalue::OK) {
scheduling::printAddObjectError("UART_TEST", objects::UART_TEST);
}
#endif
taskVec.push_back(testTask);
#endif // OBSW_ADD_TEST_TASK == 1 && OBSW_ADD_TEST_CODE == 1
}
/**
▄ ▄
▌▒█ ▄▀▒▌
▌▒▒█ ▄▀▒▒▒▐
▐▄▀▒▒▀▀▀▀▄▄▄▀▒▒▒▒▒▐
▄▄▀▒░▒▒▒▒▒▒▒▒▒█▒▒▄█▒▐
▄▀▒▒▒░░░▒▒▒░░░▒▒▒▀██▀▒▌
▐▒▒▒▄▄▒▒▒▒░░░▒▒▒▒▒▒▒▀▄▒▒▌
▌░░▌█▀▒▒▒▒▒▄▀█▄▒▒▒▒▒▒▒█▒▐
▐░░░▒▒▒▒▒▒▒▒▌██▀▒▒░░░▒▒▒▀▄▌
▌░▒▄██▄▒▒▒▒▒▒▒▒▒░░░░░░▒▒▒▒▌
▌▒▀▐▄█▄█▌▄░▀▒▒░░░░░░░░░░▒▒▒▐
▐▒▒▐▀▐▀▒░▄▄▒▄▒▒▒▒▒▒░▒░▒░▒▒▒▒▌
▐▒▒▒▀▀▄▄▒▒▒▄▒▒▒▒▒▒▒▒░▒░▒░▒▒▐
▌▒▒▒▒▒▒▀▀▀▒▒▒▒▒▒░▒░▒░▒░▒▒▒▌
▐▒▒▒▒▒▒▒▒▒▒▒▒▒▒░▒░▒░▒▒▄▒▒▐
▀▄▒▒▒▒▒▒▒▒▒▒▒░▒░▒░▒▄▒▒▒▒▌
▀▄▒▒▒▒▒▒▒▒▒▒▄▄▄▀▒▒▒▒▄▀
▀▄▄▄▄▄▄▀▀▀▒▒▒▒▒▄▄▀
▒▒▒▒▒▒▒▒▒▒▀▀
**/

View File

@ -3,12 +3,12 @@
#include <vector>
#include "fsfw/tasks/Typedef.h"
#include "fsfw/tasks/definitions.h"
class PeriodicTaskIF;
class TaskFactory;
namespace initmission {
namespace scheduling {
void initMission();
void initTasks();
@ -18,6 +18,6 @@ void createPusTasks(TaskFactory& factory, TaskDeadlineMissedFunction missedDeadl
std::vector<PeriodicTaskIF*>& taskVec);
void createTestTasks(TaskFactory& factory, TaskDeadlineMissedFunction missedDeadlineFunc,
std::vector<PeriodicTaskIF*>& taskVec);
}; // namespace initmission
}; // namespace scheduling
#endif /* BSP_Q7S_INITMISSION_H_ */

View File

@ -1,3 +1 @@
target_sources(${OBSW_NAME} PRIVATE
emObjectFactory.cpp
)
target_sources(${OBSW_NAME} PRIVATE emObjectFactory.cpp)

File diff suppressed because it is too large Load Diff

View File

@ -1,3 +0,0 @@
target_sources(${OBSW_NAME} PRIVATE
fmObjectFactory.cpp
)

View File

@ -0,0 +1,93 @@
#include <bsp_q7s/callbacks/q7sGpioCallbacks.h>
#include <mission/devices/devicedefinitions/GomspaceDefinitions.h>
#include "OBSWConfig.h"
#include "bsp_q7s/core/CoreController.h"
#include "bsp_q7s/core/ObjectFactory.h"
#include "busConf.h"
#include "devConf.h"
#include "eive/objects.h"
#include "fsfw_hal/linux/gpio/LinuxLibgpioIF.h"
#include "linux/ObjectFactory.h"
#include "linux/callbacks/gpioCallbacks.h"
#include "mission/core/GenericFactory.h"
#include "mission/system/tree/system.h"
void ObjectFactory::produce(void* args) {
ObjectFactory::setStatics();
HealthTableIF* healthTable = nullptr;
PusTmFunnel* pusFunnel = nullptr;
CfdpTmFunnel* cfdpFunnel = nullptr;
ObjectFactory::produceGenericObjects(&healthTable, &pusFunnel, &cfdpFunnel);
LinuxLibgpioIF* gpioComIF = nullptr;
SerialComIF* uartComIF = nullptr;
SpiComIF* spiMainComIF = nullptr;
I2cComIF* i2cComIF = nullptr;
PowerSwitchIF* pwrSwitcher = nullptr;
SpiComIF* spiRwComIF = nullptr;
createCommunicationInterfaces(&gpioComIF, &uartComIF, &spiMainComIF, &i2cComIF, &spiRwComIF);
/* Adding gpios for chip select decoding to the gpioComIf */
q7s::gpioCallbacks::initSpiCsDecoder(gpioComIF);
gpioCallbacks::disableAllDecoder(gpioComIF);
new CoreController(objects::CORE_CONTROLLER);
createPcduComponents(gpioComIF, &pwrSwitcher);
auto* stackHandler = new Stack5VHandler(*pwrSwitcher);
#if OBSW_ADD_RAD_SENSORS == 1
createRadSensorComponent(gpioComIF, *stackHandler);
#endif
#if OBSW_ADD_SUN_SENSORS == 1
createSunSensorComponents(gpioComIF, spiMainComIF, pwrSwitcher, q7s::SPI_DEFAULT_DEV, true);
#endif
#if OBSW_ADD_ACS_BOARD == 1
createAcsBoardComponents(gpioComIF, uartComIF, pwrSwitcher);
#endif
createHeaterComponents(gpioComIF, pwrSwitcher, healthTable);
#if OBSW_ADD_TMP_DEVICES == 1
createTmpComponents();
#endif
createSolarArrayDeploymentComponents(*pwrSwitcher, *gpioComIF);
createPlPcduComponents(gpioComIF, spiMainComIF, pwrSwitcher, *stackHandler);
#if OBSW_ADD_SYRLINKS == 1
createSyrlinksComponents(pwrSwitcher);
#endif /* OBSW_ADD_SYRLINKS == 1 */
createRtdComponents(q7s::SPI_DEFAULT_DEV, gpioComIF, pwrSwitcher, spiMainComIF);
createPayloadComponents(gpioComIF, *pwrSwitcher);
#if OBSW_ADD_MGT == 1
createImtqComponents(pwrSwitcher);
#endif
createReactionWheelComponents(gpioComIF, pwrSwitcher);
#if OBSW_ADD_BPX_BATTERY_HANDLER == 1
createBpxBatteryComponent();
#endif
#if OBSW_ADD_STAR_TRACKER == 1
createStrComponents(pwrSwitcher);
#endif /* OBSW_ADD_STAR_TRACKER == 1 */
#if OBSW_ADD_CCSDS_IP_CORES == 1
CcsdsIpCoreHandler* ipCoreHandler = nullptr;
createCcsdsComponents(gpioComIF, &ipCoreHandler);
#if OBSW_TM_TO_PTME == 1
addTmtcIpCoresToFunnels(*ipCoreHandler, *pusFunnel, *cfdpFunnel);
#endif
#endif /* OBSW_ADD_CCSDS_IP_CORES == 1 */
#if OBSW_ADD_SCEX_DEVICE == 1
createScexComponents(q7s::UART_SCEX_DEV, pwrSwitcher, *SdCardManager::instance(), false,
pcdu::Switches::PDU1_CH5_SOLAR_CELL_EXP_5V);
#endif
/* Test Task */
#if OBSW_ADD_TEST_CODE == 1
createTestComponents(gpioComIF);
#endif /* OBSW_ADD_TEST_CODE == 1 */
createMiscComponents();
createThermalController();
createAcsController(true);
satsystem::init();
}

View File

@ -0,0 +1,2 @@
target_sources(${OBSW_NAME} PRIVATE helpers.cpp SdCardManager.cpp
FilesystemHelper.cpp)

View File

@ -3,38 +3,36 @@
#include <filesystem>
#include <fstream>
#include "bsp_q7s/memory/SdCardManager.h"
#include "fsfw/serviceinterface/ServiceInterfaceStream.h"
#include "SdCardManager.h"
#include "eive/definitions.h"
#include "fsfw/serviceinterface.h"
FilesystemHelper::FilesystemHelper() {}
FilesystemHelper::~FilesystemHelper() {}
ReturnValue_t FilesystemHelper::checkPath(std::string path) {
SdCardManager* sdcMan = SdCardManager::instance();
if (sdcMan == nullptr) {
sif::warning << "FilesystemHelper::checkPath: Invalid SD card manager" << std::endl;
return RETURN_FAILED;
return returnvalue::FAILED;
}
if (path.substr(0, sizeof(SdCardManager::SD_0_MOUNT_POINT)) ==
std::string(SdCardManager::SD_0_MOUNT_POINT)) {
if (!sdcMan->isSdCardMounted(sd::SLOT_0)) {
if (path.substr(0, sizeof(config::SD_0_MOUNT_POINT)) == std::string(config::SD_0_MOUNT_POINT)) {
if (!sdcMan->isSdCardUsable(sd::SLOT_0)) {
sif::warning << "FilesystemHelper::checkPath: SD card 0 not mounted" << std::endl;
return SD_NOT_MOUNTED;
}
} else if (path.substr(0, sizeof(SdCardManager::SD_1_MOUNT_POINT)) ==
std::string(SdCardManager::SD_1_MOUNT_POINT)) {
if (!sdcMan->isSdCardMounted(sd::SLOT_0)) {
} else if (path.substr(0, sizeof(config::SD_1_MOUNT_POINT)) ==
std::string(config::SD_1_MOUNT_POINT)) {
if (!sdcMan->isSdCardUsable(sd::SLOT_0)) {
sif::warning << "FilesystemHelper::checkPath: SD card 1 not mounted" << std::endl;
return SD_NOT_MOUNTED;
}
}
return RETURN_OK;
return returnvalue::OK;
}
ReturnValue_t FilesystemHelper::fileExists(std::string file) {
if (not std::filesystem::exists(file)) {
return FILE_NOT_EXISTS;
}
return RETURN_OK;
return returnvalue::OK;
}

View File

@ -3,15 +3,15 @@
#include <string>
#include "commonClassIds.h"
#include "fsfw/returnvalues/HasReturnvaluesIF.h"
#include "eive/resultClassIds.h"
#include "fsfw/returnvalues/returnvalue.h"
/**
* @brief This class implements often used functions concerning the file system management.
* @brief This class implements often used functions related to the file system management.
*
* @author J. Meier
*/
class FilesystemHelper : public HasReturnvaluesIF {
class FilesystemHelper {
public:
static const uint8_t INTERFACE_ID = CLASS_ID::FILE_SYSTEM_HELPER;
@ -20,16 +20,13 @@ class FilesystemHelper : public HasReturnvaluesIF {
//! [EXPORT] : [COMMENT] Specified file does not exist on filesystem
static const ReturnValue_t FILE_NOT_EXISTS = MAKE_RETURN_CODE(0xA1);
FilesystemHelper();
virtual ~FilesystemHelper();
/**
* @brief In case the path points to a directory on the sd card the function checks if the
* @brief In case the path points to a directory on the sd card, the function checks if the
* appropriate SD card is mounted.
*
* @param path Path to check
*
* @return RETURN_OK if path points to SD card and the appropriate SD card is mounted or if
* @return returnvalue::OK if path points to SD card and the appropriate SD card is mounted or if
* path does not point to SD card.
* Return error code if path points to SD card and the corresponding SD card is not
* mounted.
@ -39,11 +36,14 @@ class FilesystemHelper : public HasReturnvaluesIF {
/**
* @brief Checks if the file exists on the filesystem.
*
* param file File to check
* @param file File to check
*
* @return RETURN_OK if fiel exists, otherwise return error code.
* @return returnvalue::OK if file exists, otherwise return error code.
*/
static ReturnValue_t fileExists(std::string file);
private:
FilesystemHelper();
};
#endif /* BSP_Q7S_MEMORY_FILESYSTEMHELPER_H_ */

View File

@ -10,34 +10,62 @@
#include <memory>
#include "OBSWConfig.h"
#include "common/config/commonObjects.h"
#include "bsp_q7s/memory/scratchApi.h"
#include "eive/definitions.h"
#include "eive/objects.h"
#include "fsfw/ipc/MutexFactory.h"
#include "fsfw/serviceinterface/ServiceInterface.h"
#include "linux/utility/utility.h"
#include "scratchApi.h"
SdCardManager* SdCardManager::factoryInstance = nullptr;
SdCardManager* SdCardManager::INSTANCE = nullptr;
SdCardManager::SdCardManager() : SystemObject(objects::SDC_MANAGER), cmdExecutor(256) {
mutex = MutexFactory::instance()->createMutex();
ReturnValue_t result = mutex->lockMutex();
if (result != returnvalue::OK) {
sif::error << "SdCardManager::SdCardManager: Mutex lock failed" << std::endl;
}
uint8_t prefSdRaw = 0;
result = scratch::readNumber(scratch::PREFERED_SDC_KEY, prefSdRaw);
if (mutex->unlockMutex() != returnvalue::OK) {
sif::error << "SdCardManager::SdCardManager: Mutex unlock failed" << std::endl;
}
if (result != returnvalue::OK) {
if (result == scratch::KEY_NOT_FOUND) {
sif::warning << "CoreController::sdCardInit: "
"Preferred SD card not set. Setting to 0"
<< std::endl;
setPreferredSdCard(sd::SdCard::SLOT_0);
sdInfo.pref = sd::SdCard::SLOT_0;
} else {
// Should not happen.
// TODO: Maybe trigger event?
sif::error << "SdCardManager::SdCardManager: Reading preferred SD card from scratch"
"buffer failed"
<< std::endl;
sdInfo.pref = sd::SdCard::SLOT_0;
}
}
sdInfo.pref = static_cast<sd::SdCard>(prefSdRaw);
}
SdCardManager::~SdCardManager() {}
void SdCardManager::create() {
if (factoryInstance == nullptr) {
factoryInstance = new SdCardManager();
if (INSTANCE == nullptr) {
INSTANCE = new SdCardManager();
}
}
SdCardManager* SdCardManager::instance() {
SdCardManager::create();
return SdCardManager::factoryInstance;
return SdCardManager::INSTANCE;
}
ReturnValue_t SdCardManager::switchOnSdCard(sd::SdCard sdCard, bool doMountSdCard,
SdStatePair* statusPair) {
ReturnValue_t result = HasReturnvaluesIF::RETURN_OK;
ReturnValue_t result = returnvalue::OK;
if (doMountSdCard) {
if (not blocking) {
sif::warning << "SdCardManager::switchOnSdCard: Two-step command but manager is"
@ -51,8 +79,8 @@ ReturnValue_t SdCardManager::switchOnSdCard(sd::SdCard sdCard, bool doMountSdCar
if (statusPair == nullptr) {
sdStatusPtr = std::make_unique<SdStatePair>();
statusPair = sdStatusPtr.get();
result = getSdCardActiveStatus(*statusPair);
if (result != HasReturnvaluesIF::RETURN_OK) {
result = getSdCardsStatus(*statusPair);
if (result != returnvalue::OK) {
return result;
}
}
@ -61,7 +89,7 @@ ReturnValue_t SdCardManager::switchOnSdCard(sd::SdCard sdCard, bool doMountSdCar
if (sdCard == sd::SdCard::BOTH) {
sif::warning << "SdCardManager::switchOffSdCard: API does not allow sd::SdStatus::BOTH"
<< std::endl;
return HasReturnvaluesIF::RETURN_FAILED;
return returnvalue::FAILED;
}
sd::SdState currentState;
@ -85,10 +113,10 @@ ReturnValue_t SdCardManager::switchOnSdCard(sd::SdCard sdCard, bool doMountSdCar
} else if (currentState == sd::SdState::OFF) {
result = setSdCardState(sdCard, true);
} else {
result = HasReturnvaluesIF::RETURN_FAILED;
result = returnvalue::FAILED;
}
if (result != HasReturnvaluesIF::RETURN_OK or not doMountSdCard) {
if (result != returnvalue::OK or not doMountSdCard) {
return result;
}
@ -98,8 +126,8 @@ ReturnValue_t SdCardManager::switchOnSdCard(sd::SdCard sdCard, bool doMountSdCar
ReturnValue_t SdCardManager::switchOffSdCard(sd::SdCard sdCard, bool doUnmountSdCard,
SdStatePair* statusPair) {
std::pair<sd::SdState, sd::SdState> active;
ReturnValue_t result = getSdCardActiveStatus(active);
if (result != HasReturnvaluesIF::RETURN_OK) {
ReturnValue_t result = getSdCardsStatus(active);
if (result != returnvalue::OK) {
return result;
}
if (doUnmountSdCard) {
@ -114,7 +142,7 @@ ReturnValue_t SdCardManager::switchOffSdCard(sd::SdCard sdCard, bool doUnmountSd
if (sdCard == sd::SdCard::BOTH) {
sif::warning << "SdCardManager::switchOffSdCard: API does not allow sd::SdStatus::BOTH"
<< std::endl;
return HasReturnvaluesIF::RETURN_FAILED;
return returnvalue::FAILED;
}
if (sdCard == sd::SdCard::SLOT_0) {
if (active.first == sd::SdState::OFF) {
@ -128,7 +156,7 @@ ReturnValue_t SdCardManager::switchOffSdCard(sd::SdCard sdCard, bool doUnmountSd
if (doUnmountSdCard) {
result = unmountSdCard(sdCard);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != returnvalue::OK) {
return result;
}
}
@ -159,13 +187,13 @@ ReturnValue_t SdCardManager::setSdCardState(sd::SdCard sdCard, bool on) {
command << "q7hw sd set " << sdstring << " " << statestring;
cmdExecutor.load(command.str(), blocking, printCmdOutput);
ReturnValue_t result = cmdExecutor.execute();
if (blocking and result != HasReturnvaluesIF::RETURN_OK) {
if (blocking and result != returnvalue::OK) {
utility::handleSystemError(cmdExecutor.getLastError(), "SdCardManager::setSdCardState");
}
return result;
}
ReturnValue_t SdCardManager::getSdCardActiveStatus(SdStatePair& active) {
ReturnValue_t SdCardManager::getSdCardsStatus(SdStatePair& active) {
using namespace std;
MutexGuard mg(mutex);
if (not filesystem::exists(SD_STATE_FILE)) {
@ -184,7 +212,10 @@ ReturnValue_t SdCardManager::getSdCardActiveStatus(SdStatePair& active) {
while (std::getline(sdStatus, line)) {
processSdStatusLine(active, line, idx, currentSd);
}
return HasReturnvaluesIF::RETURN_OK;
if (active.first != sd::SdState::MOUNTED && active.second != sd::SdState::MOUNTED) {
sdCardActive = false;
}
return returnvalue::OK;
}
ReturnValue_t SdCardManager::mountSdCard(sd::SdCard sdCard) {
@ -195,16 +226,16 @@ ReturnValue_t SdCardManager::mountSdCard(sd::SdCard sdCard) {
if (sdCard == sd::SdCard::BOTH) {
sif::warning << "SdCardManager::mountSdCard: API does not allow sd::SdStatus::BOTH"
<< std::endl;
return HasReturnvaluesIF::RETURN_FAILED;
return returnvalue::FAILED;
}
string mountDev;
string mountPoint;
if (sdCard == sd::SdCard::SLOT_0) {
mountDev = SD_0_DEV_NAME;
mountPoint = SD_0_MOUNT_POINT;
mountPoint = config::SD_0_MOUNT_POINT;
} else if (sdCard == sd::SdCard::SLOT_1) {
mountDev = SD_1_DEV_NAME;
mountPoint = SD_1_MOUNT_POINT;
mountPoint = config::SD_1_MOUNT_POINT;
}
if (not filesystem::exists(mountDev)) {
sif::warning << "SdCardManager::mountSdCard: Device file does not exists. Make sure to"
@ -219,7 +250,7 @@ ReturnValue_t SdCardManager::mountSdCard(sd::SdCard sdCard) {
string sdMountCommand = "mount " + mountDev + " " + mountPoint;
cmdExecutor.load(sdMountCommand, blocking, printCmdOutput);
ReturnValue_t result = cmdExecutor.execute();
if (blocking and result != HasReturnvaluesIF::RETURN_OK) {
if (blocking and result != returnvalue::OK) {
utility::handleSystemError(cmdExecutor.getLastError(), "SdCardManager::mountSdCard");
}
return result;
@ -233,13 +264,13 @@ ReturnValue_t SdCardManager::unmountSdCard(sd::SdCard sdCard) {
if (sdCard == sd::SdCard::BOTH) {
sif::warning << "SdCardManager::unmountSdCard: API does not allow sd::SdStatus::BOTH"
<< std::endl;
return HasReturnvaluesIF::RETURN_FAILED;
return returnvalue::FAILED;
}
string mountPoint;
if (sdCard == sd::SdCard::SLOT_0) {
mountPoint = SD_0_MOUNT_POINT;
mountPoint = config::SD_0_MOUNT_POINT;
} else if (sdCard == sd::SdCard::SLOT_1) {
mountPoint = SD_1_MOUNT_POINT;
mountPoint = config::SD_1_MOUNT_POINT;
}
if (not filesystem::exists(mountPoint)) {
sif::error << "SdCardManager::unmountSdCard: Default mount point " << mountPoint
@ -257,7 +288,7 @@ ReturnValue_t SdCardManager::unmountSdCard(sd::SdCard sdCard) {
}
cmdExecutor.load(sdUnmountCommand, blocking, printCmdOutput);
ReturnValue_t result = cmdExecutor.execute();
if (blocking and result != HasReturnvaluesIF::RETURN_OK) {
if (blocking and result != returnvalue::OK) {
utility::handleSystemError(cmdExecutor.getLastError(), "SdCardManager::unmountSdCard");
}
return result;
@ -265,22 +296,17 @@ ReturnValue_t SdCardManager::unmountSdCard(sd::SdCard sdCard) {
ReturnValue_t SdCardManager::sanitizeState(SdStatePair* statusPair, sd::SdCard prefSdCard) {
std::unique_ptr<SdStatePair> sdStatusPtr;
ReturnValue_t result = HasReturnvaluesIF::RETURN_OK;
ReturnValue_t result = returnvalue::OK;
// Enforce blocking operation for now. Be careful to reset it when returning prematurely!
bool resetNonBlockingState = false;
if (not this->blocking) {
blocking = true;
resetNonBlockingState = true;
}
if (prefSdCard == sd::SdCard::NONE) {
result = getPreferredSdCard(prefSdCard);
if (result != HasReturnvaluesIF::RETURN_OK) {
}
}
if (statusPair == nullptr) {
sdStatusPtr = std::make_unique<SdStatePair>();
statusPair = sdStatusPtr.get();
getSdCardActiveStatus(*statusPair);
getSdCardsStatus(*statusPair);
}
if (statusPair->first == sd::SdState::ON) {
@ -351,20 +377,21 @@ void SdCardManager::processSdStatusLine(std::pair<sd::SdState, sd::SdState>& act
idx++;
}
ReturnValue_t SdCardManager::getPreferredSdCard(sd::SdCard& sdCard) const {
uint8_t prefSdCard = 0;
ReturnValue_t result = scratch::readNumber(scratch::PREFERED_SDC_KEY, prefSdCard);
if (result != HasReturnvaluesIF::RETURN_OK) {
return result;
std::optional<sd::SdCard> SdCardManager::getPreferredSdCard() const {
MutexGuard mg(mutex);
auto res = mg.getLockResult();
if (res != returnvalue::OK) {
sif::error << "SdCardManager::getPreferredSdCard: Lock error" << std::endl;
}
sdCard = static_cast<sd::SdCard>(prefSdCard);
return HasReturnvaluesIF::RETURN_OK;
return sdInfo.pref;
}
ReturnValue_t SdCardManager::setPreferredSdCard(sd::SdCard sdCard) {
MutexGuard mg(mutex);
if (sdCard == sd::SdCard::BOTH) {
return HasReturnvaluesIF::RETURN_FAILED;
return returnvalue::FAILED;
}
sdInfo.pref = sdCard;
return scratch::writeNumber(scratch::PREFERED_SDC_KEY, static_cast<uint8_t>(sdCard));
}
@ -377,24 +404,15 @@ ReturnValue_t SdCardManager::updateSdCardStateFile() {
std::string updateCmd = "q7hw sd info all > " + std::string(SD_STATE_FILE);
cmdExecutor.load(updateCmd, blocking, printCmdOutput);
ReturnValue_t result = cmdExecutor.execute();
if (blocking and result != HasReturnvaluesIF::RETURN_OK) {
if (blocking and result != returnvalue::OK) {
utility::handleSystemError(cmdExecutor.getLastError(), "SdCardManager::mountSdCard");
}
return result;
}
std::string SdCardManager::getCurrentMountPrefix(sd::SdCard prefSdCard) {
if (prefSdCard == sd::SdCard::NONE) {
ReturnValue_t result = getPreferredSdCard(prefSdCard);
if (result != HasReturnvaluesIF::RETURN_OK) {
return SD_0_MOUNT_POINT;
}
}
if (prefSdCard == sd::SdCard::SLOT_0) {
return SD_0_MOUNT_POINT;
} else {
return SD_1_MOUNT_POINT;
}
const std::string& SdCardManager::getCurrentMountPrefix() const {
MutexGuard mg(mutex);
return currentPrefix;
}
SdCardManager::OpStatus SdCardManager::checkCurrentOp(Operations& currentOp) {
@ -424,10 +442,10 @@ SdCardManager::OpStatus SdCardManager::checkCurrentOp(Operations& currentOp) {
case (CommandExecutor::EXECUTION_FINISHED): {
return OpStatus::SUCCESS;
}
case (HasReturnvaluesIF::RETURN_OK): {
case (returnvalue::OK): {
return OpStatus::ONGOING;
}
case (HasReturnvaluesIF::RETURN_FAILED): {
case (returnvalue::FAILED): {
return OpStatus::FAIL;
}
default: {
@ -441,28 +459,131 @@ void SdCardManager::setBlocking(bool blocking) { this->blocking = blocking; }
void SdCardManager::setPrintCommandOutput(bool print) { this->printCmdOutput = print; }
bool SdCardManager::isSdCardMounted(sd::SdCard sdCard) {
SdCardManager::SdStatePair active;
ReturnValue_t result = this->getSdCardActiveStatus(active);
bool SdCardManager::isSdCardUsable(std::optional<sd::SdCard> sdCard) {
{
MutexGuard mg(mutex);
if (markedUnusable) {
return false;
}
}
if (result != HasReturnvaluesIF::RETURN_OK) {
SdCardManager::SdStatePair active;
ReturnValue_t result = this->getSdCardsStatus(active);
if (result != returnvalue::OK) {
sif::debug << "SdCardManager::isSdCardMounted: Failed to get SD card active state";
return false;
}
if (not sdCard) {
if (active.first == sd::MOUNTED or active.second == sd::MOUNTED) {
return true;
}
return false;
}
if (sdCard == sd::SLOT_0) {
if (active.first == sd::MOUNTED) {
return true;
} else {
return false;
}
} else if (sdCard == sd::SLOT_1) {
}
if (sdCard == sd::SLOT_1) {
if (active.second == sd::MOUNTED) {
return true;
} else {
return false;
}
} else {
sif::debug << "SdCardManager::isSdCardMounted: Unknown SD card specified" << std::endl;
}
if (sdCard == sd::BOTH) {
if (active.first == sd::MOUNTED && active.second == sd::MOUNTED) {
return true;
}
}
return false;
}
ReturnValue_t SdCardManager::isSdCardMountedReadOnly(sd::SdCard sdcard, bool& readOnly) {
std::ostringstream command;
if (sdcard == sd::SdCard::SLOT_0) {
command << "grep -q '" << config::SD_0_MOUNT_POINT << " vfat ro,' /proc/mounts";
} else if (sdcard == sd::SdCard::SLOT_1) {
command << "grep -q '" << config::SD_1_MOUNT_POINT << " vfat ro,' /proc/mounts";
} else {
return returnvalue::FAILED;
}
ReturnValue_t result = cmdExecutor.load(command.str(), true, false);
if (result != returnvalue::OK) {
return result;
}
result = cmdExecutor.execute();
if (result != returnvalue::OK) {
int exitStatus = cmdExecutor.getLastError();
if (exitStatus == 1) {
readOnly = false;
return returnvalue::OK;
}
return result;
}
auto& readVec = cmdExecutor.getReadVector();
size_t readLen = strnlen(readVec.data(), readVec.size());
if (readLen == 0) {
readOnly = false;
}
readOnly = true;
return returnvalue::OK;
}
ReturnValue_t SdCardManager::remountReadWrite(sd::SdCard sdcard) {
std::ostringstream command;
if (sdcard == sd::SdCard::SLOT_0) {
command << "mount -o remount,rw " << SD_0_DEV_NAME << " " << config::SD_0_MOUNT_POINT;
} else {
command << "mount -o remount,rw " << SD_1_DEV_NAME << " " << config::SD_1_MOUNT_POINT;
}
ReturnValue_t result = cmdExecutor.load(command.str(), true, false);
if (result != returnvalue::OK) {
return result;
}
return cmdExecutor.execute();
}
ReturnValue_t SdCardManager::performFsck(sd::SdCard sdcard, bool printOutput, int& linuxError) {
std::ostringstream command;
if (sdcard == sd::SdCard::SLOT_0) {
command << "fsck -y " << SD_0_DEV_NAME;
} else {
command << "fsck -y " << SD_1_DEV_NAME;
}
ReturnValue_t result = cmdExecutor.load(command.str(), true, printOutput);
if (result != returnvalue::OK) {
return result;
}
result = cmdExecutor.execute();
if (result != returnvalue::OK) {
linuxError = cmdExecutor.getLastError();
}
return result;
}
void SdCardManager::setActiveSdCard(sd::SdCard sdCard) {
MutexGuard mg(mutex);
sdInfo.active = sdCard;
if (sdInfo.active == sd::SdCard::SLOT_0) {
currentPrefix = config::SD_0_MOUNT_POINT;
} else {
currentPrefix = config::SD_1_MOUNT_POINT;
}
}
std::optional<sd::SdCard> SdCardManager::getActiveSdCard() const {
MutexGuard mg(mutex);
if (markedUnusable) {
return std::nullopt;
}
return sdInfo.active;
}
void SdCardManager::markUnusable() {
MutexGuard mg(mutex);
markedUnusable = true;
}

View File

@ -12,7 +12,7 @@
#include "events/subsystemIdRanges.h"
#include "fsfw/events/Event.h"
#include "fsfw/returnvalues/HasReturnvaluesIF.h"
#include "fsfw/returnvalues/returnvalue.h"
#include "fsfw_hal/linux/CommandExecutor.h"
#include "mission/memory/SdCardMountedIF.h"
#include "mission/memory/definitions.h"
@ -36,24 +36,25 @@ class SdCardManager : public SystemObject, public SdCardMountedIF {
using SdStatePair = std::pair<sd::SdState, sd::SdState>;
struct SdInfo {
sd::SdCard pref = sd::SdCard::NONE;
sd::SdCard other = sd::SdCard::NONE;
sd::SdCard active = sd::SdCard::NONE;
} sdInfo;
static constexpr uint8_t INTERFACE_ID = CLASS_ID::SD_CARD_MANAGER;
static constexpr ReturnValue_t OP_ONGOING = HasReturnvaluesIF::makeReturnCode(INTERFACE_ID, 0);
static constexpr ReturnValue_t ALREADY_ON = HasReturnvaluesIF::makeReturnCode(INTERFACE_ID, 1);
static constexpr ReturnValue_t ALREADY_MOUNTED =
HasReturnvaluesIF::makeReturnCode(INTERFACE_ID, 2);
static constexpr ReturnValue_t ALREADY_OFF = HasReturnvaluesIF::makeReturnCode(INTERFACE_ID, 3);
static constexpr ReturnValue_t STATUS_FILE_NEXISTS =
HasReturnvaluesIF::makeReturnCode(INTERFACE_ID, 10);
static constexpr ReturnValue_t OP_ONGOING = returnvalue::makeCode(INTERFACE_ID, 0);
static constexpr ReturnValue_t ALREADY_ON = returnvalue::makeCode(INTERFACE_ID, 1);
static constexpr ReturnValue_t ALREADY_MOUNTED = returnvalue::makeCode(INTERFACE_ID, 2);
static constexpr ReturnValue_t ALREADY_OFF = returnvalue::makeCode(INTERFACE_ID, 3);
static constexpr ReturnValue_t STATUS_FILE_NEXISTS = returnvalue::makeCode(INTERFACE_ID, 10);
static constexpr ReturnValue_t STATUS_FILE_FORMAT_INVALID =
HasReturnvaluesIF::makeReturnCode(INTERFACE_ID, 11);
static constexpr ReturnValue_t MOUNT_ERROR = HasReturnvaluesIF::makeReturnCode(INTERFACE_ID, 12);
static constexpr ReturnValue_t UNMOUNT_ERROR =
HasReturnvaluesIF::makeReturnCode(INTERFACE_ID, 13);
static constexpr ReturnValue_t SYSTEM_CALL_ERROR =
HasReturnvaluesIF::makeReturnCode(INTERFACE_ID, 14);
static constexpr ReturnValue_t POPEN_CALL_ERROR =
HasReturnvaluesIF::makeReturnCode(INTERFACE_ID, 15);
returnvalue::makeCode(INTERFACE_ID, 11);
static constexpr ReturnValue_t MOUNT_ERROR = returnvalue::makeCode(INTERFACE_ID, 12);
static constexpr ReturnValue_t UNMOUNT_ERROR = returnvalue::makeCode(INTERFACE_ID, 13);
static constexpr ReturnValue_t SYSTEM_CALL_ERROR = returnvalue::makeCode(INTERFACE_ID, 14);
static constexpr ReturnValue_t POPEN_CALL_ERROR = returnvalue::makeCode(INTERFACE_ID, 15);
static constexpr uint8_t SUBSYSTEM_ID = SUBSYSTEM_ID::FILE_SYSTEM;
@ -63,8 +64,7 @@ class SdCardManager : public SystemObject, public SdCardMountedIF {
// C++17 does not support constexpr std::string yet
static constexpr char SD_0_DEV_NAME[] = "/dev/mmcblk0p1";
static constexpr char SD_1_DEV_NAME[] = "/dev/mmcblk1p1";
static constexpr char SD_0_MOUNT_POINT[] = "/mnt/sd0";
static constexpr char SD_1_MOUNT_POINT[] = "/mnt/sd1";
static constexpr char SD_STATE_FILE[] = "/tmp/sd_status.txt";
virtual ~SdCardManager();
@ -91,7 +91,7 @@ class SdCardManager : public SystemObject, public SdCardMountedIF {
* @param sdCard
* @return
*/
ReturnValue_t getPreferredSdCard(sd::SdCard& sdCard) const override;
std::optional<sd::SdCard> getPreferredSdCard() const override;
/**
* Switch on the specified SD card.
@ -99,7 +99,7 @@ class SdCardManager : public SystemObject, public SdCardMountedIF {
* @param doMountSdCard Mount the SD card after switching it on, which is necessary
* to use it
* @param statusPair If the status pair is already available, it can be passed here
* @return - RETURN_OK on success, ALREADY_ON if it is already on,
* @return - returnvalue::OK on success, ALREADY_ON if it is already on,
* SYSTEM_CALL_ERROR on system error
*/
ReturnValue_t switchOnSdCard(sd::SdCard sdCard, bool doMountSdCard = true,
@ -111,7 +111,7 @@ class SdCardManager : public SystemObject, public SdCardMountedIF {
* @param doUnmountSdCard Unmount the SD card before switching the card off, which makes
* the operation safer
* @param statusPair If the status pair is already available, it can be passed here
* @return - RETURN_OK on success, ALREADY_ON if it is already on,
* @return - returnvalue::OK on success, ALREADY_ON if it is already on,
* SYSTEM_CALL_ERROR on system error
*/
ReturnValue_t switchOffSdCard(sd::SdCard sdCard, bool doUnmountSdCard = true,
@ -121,9 +121,9 @@ class SdCardManager : public SystemObject, public SdCardMountedIF {
* Update the state file or creates one if it does not exist. You need to call this
* function before calling #sdCardActive
* @return
* - RETURN_OK if the state file was updated successfully
* - returnvalue::OK if the state file was updated successfully
* - CommandExecutor::COMMAND_PENDING: Non-blocking command is pending
* - RETURN_FAILED: blocking command failed
* - returnvalue::FAILED: blocking command failed
*/
ReturnValue_t updateSdCardStateFile();
@ -133,12 +133,12 @@ class SdCardManager : public SystemObject, public SdCardMountedIF {
* the status of the SD cards and set the field of the provided boolean pair.
* @param active Pair of booleans, where the first entry is the state of the first SD card
* and the second one the state of the second SD card
* @return - RETURN_OK if the state was read successfully
* @return - returnvalue::OK if the state was read successfully
* - STATUS_FILE_FORMAT_INVALID if there was an issue with the state file. The user
* should call #updateSdCardStateFile again in that case
* - STATUS_FILE_NEXISTS if the status file does not exist
*/
ReturnValue_t getSdCardActiveStatus(SdStatePair& active);
ReturnValue_t getSdCardsStatus(SdStatePair& active);
/**
* Mount the specified SD card. This is necessary to use it.
@ -146,6 +146,20 @@ class SdCardManager : public SystemObject, public SdCardMountedIF {
* @return
*/
ReturnValue_t mountSdCard(sd::SdCard sdCard);
/**
* Set the currently active SD card. This does not necessarily mean that the SD card is on or
* mounted
* @param sdCard
*/
void setActiveSdCard(sd::SdCard sdCard) override;
/**
* Get the currently active SD card. This does not necessarily mean that the SD card is on or
* mounted
* @return
*/
std::optional<sd::SdCard> getActiveSdCard() const override;
/**
* Unmount the specified SD card. This is recommended before switching it off. The SD card
* can't be used after it has been unmounted.
@ -173,7 +187,7 @@ class SdCardManager : public SystemObject, public SdCardMountedIF {
* @param prefSdCardPtr
* @return
*/
std::string getCurrentMountPrefix(sd::SdCard prefSdCardPtr = sd::SdCard::NONE) override;
const std::string& getCurrentMountPrefix() const override;
OpStatus checkCurrentOp(Operations& currentOp);
@ -192,13 +206,23 @@ class SdCardManager : public SystemObject, public SdCardMountedIF {
*
* @return true if mounted, otherwise false
*/
bool isSdCardMounted(sd::SdCard sdCard) override;
bool isSdCardUsable(std::optional<sd::SdCard> sdCard) override;
ReturnValue_t isSdCardMountedReadOnly(sd::SdCard sdcard, bool& readOnly);
ReturnValue_t remountReadWrite(sd::SdCard sdcard);
ReturnValue_t performFsck(sd::SdCard sdcard, bool printOutput, int& linuxError);
void markUnusable();
private:
CommandExecutor cmdExecutor;
Operations currentOp = Operations::IDLE;
bool blocking = false;
bool sdCardActive = true;
bool printCmdOutput = true;
bool markedUnusable = false;
MutexIF* mutex = nullptr;
SdCardManager();
@ -210,7 +234,7 @@ class SdCardManager : public SystemObject, public SdCardMountedIF {
std::string currentPrefix;
static SdCardManager* factoryInstance;
static SdCardManager* INSTANCE;
};
#endif /* BSP_Q7S_MEMORY_SDCARDACCESSMANAGER_H_ */

8
bsp_q7s/fs/helpers.cpp Normal file
View File

@ -0,0 +1,8 @@
#include "helpers.h"
std::filesystem::path fshelpers::getPrefixedPath(SdCardManager &man,
std::filesystem::path pathWihtoutPrefix) {
auto prefix = man.getCurrentMountPrefix();
auto resPath = prefix / pathWihtoutPrefix;
return resPath;
}

14
bsp_q7s/fs/helpers.h Normal file
View File

@ -0,0 +1,14 @@
#ifndef BSP_Q7S_MEMORY_HELPERS_H_
#define BSP_Q7S_MEMORY_HELPERS_H_
#include <filesystem>
#include "SdCardManager.h"
namespace fshelpers {
std::filesystem::path getPrefixedPath(SdCardManager& man, std::filesystem::path pathWihtoutPrefix);
}
#endif /* BSP_Q7S_MEMORY_HELPERS_H_ */

View File

@ -1,6 +1 @@
target_sources(${OBSW_NAME} PRIVATE
FileSystemHandler.cpp
SdCardManager.cpp
scratchApi.cpp
FilesystemHelper.cpp
)
target_sources(${OBSW_NAME} PRIVATE scratchApi.cpp)

View File

@ -1,243 +0,0 @@
#include "FileSystemHandler.h"
#include <cstring>
#include <filesystem>
#include <fstream>
#include "bsp_q7s/core/CoreController.h"
#include "fsfw/ipc/QueueFactory.h"
#include "fsfw/memory/GenericFileSystemMessage.h"
#include "fsfw/tasks/TaskFactory.h"
FileSystemHandler::FileSystemHandler(object_id_t fileSystemHandler)
: SystemObject(fileSystemHandler) {
auto mqArgs = MqArgs(this->getObjectId());
mq = QueueFactory::instance()->createMessageQueue(FS_MAX_QUEUE_SIZE,
MessageQueueMessage::MAX_MESSAGE_SIZE, &mqArgs);
}
FileSystemHandler::~FileSystemHandler() { QueueFactory::instance()->deleteMessageQueue(mq); }
ReturnValue_t FileSystemHandler::performOperation(uint8_t unsignedChar) {
while (true) {
try {
fileSystemHandlerLoop();
} catch (std::bad_alloc& e) {
// Restart OBSW, hints at a memory leak
sif::error << "Allocation error in FileSystemHandler::performOperation" << e.what()
<< std::endl;
// Set up an error file or a special flag in the scratch buffer for these cases
triggerEvent(CoreController::ALLOC_FAILURE, 0, 0);
CoreController::incrementAllocationFailureCount();
}
}
}
void FileSystemHandler::fileSystemHandlerLoop() {
CommandMessage filemsg;
ReturnValue_t result = HasReturnvaluesIF::RETURN_OK;
while (true) {
if (opCounter % 5 == 0) {
if (coreCtrl->sdInitFinished()) {
fileSystemCheckup();
}
}
result = mq->receiveMessage(&filemsg);
if (result == MessageQueueIF::EMPTY) {
break;
} else if (result != HasReturnvaluesIF::RETURN_FAILED) {
sif::warning << "FileSystemHandler::performOperation: Message reception failed!" << std::endl;
break;
}
Command_t command = filemsg.getCommand();
switch (command) {
case (GenericFileSystemMessage::CMD_CREATE_DIRECTORY): {
break;
}
case (GenericFileSystemMessage::CMD_CREATE_FILE): {
break;
}
}
opCounter++;
}
// This task will have a low priority and will run permanently in the background
// so we will just run in a permanent loop here and check file system
// messages permanently
opCounter++;
TaskFactory::instance()->delayTask(1000);
}
void FileSystemHandler::fileSystemCheckup() {
SdCardManager::SdStatePair statusPair;
sdcMan->getSdCardActiveStatus(statusPair);
sd::SdCard preferredSdCard;
sdcMan->getPreferredSdCard(preferredSdCard);
if ((preferredSdCard == sd::SdCard::SLOT_0) and (statusPair.first == sd::SdState::MOUNTED)) {
currentMountPrefix = SdCardManager::SD_0_MOUNT_POINT;
} else if ((preferredSdCard == sd::SdCard::SLOT_1) and
(statusPair.second == sd::SdState::MOUNTED)) {
currentMountPrefix = SdCardManager::SD_1_MOUNT_POINT;
} else {
std::string sdString;
if (preferredSdCard == sd::SdCard::SLOT_0) {
sdString = "0";
} else {
sdString = "1";
}
sif::warning << "FileSystemHandler::performOperation: "
"Inconsistent state detected"
<< std::endl;
sif::warning << "Preferred SD card is " << sdString
<< " but does not appear to be mounted. Attempting fix.." << std::endl;
// This function will appear to fix the inconsistent state
ReturnValue_t result = sdcMan->sanitizeState(&statusPair, preferredSdCard);
if (result != HasReturnvaluesIF::RETURN_OK) {
// Oh no.
triggerEvent(SdCardManager::SANITIZATION_FAILED, 0, 0);
sif::error << "FileSystemHandler::fileSystemCheckup: Sanitization failed" << std::endl;
}
}
}
MessageQueueId_t FileSystemHandler::getCommandQueue() const { return mq->getId(); }
ReturnValue_t FileSystemHandler::initialize() {
coreCtrl = ObjectManager::instance()->get<CoreController>(objects::CORE_CONTROLLER);
if (coreCtrl == nullptr) {
sif::error << "FileSystemHandler::initialize: Could not retrieve core controller handle"
<< std::endl;
}
sdcMan = SdCardManager::instance();
sd::SdCard preferredSdCard;
ReturnValue_t result = sdcMan->getPreferredSdCard(preferredSdCard);
if (result != HasReturnvaluesIF::RETURN_OK) {
return result;
}
if (preferredSdCard == sd::SdCard::SLOT_0) {
currentMountPrefix = SdCardManager::SD_0_MOUNT_POINT;
} else if (preferredSdCard == sd::SdCard::SLOT_1) {
currentMountPrefix = SdCardManager::SD_1_MOUNT_POINT;
}
return HasReturnvaluesIF::RETURN_OK;
}
ReturnValue_t FileSystemHandler::appendToFile(const char* repositoryPath, const char* filename,
const uint8_t* data, size_t size,
uint16_t packetNumber, FileSystemArgsIF* args) {
auto path = getInitPath(args) / repositoryPath / filename;
if (not std::filesystem::exists(path)) {
return FILE_DOES_NOT_EXIST;
}
std::ofstream file(path, std::ios_base::app | std::ios_base::out);
file.write(reinterpret_cast<const char*>(data), size);
if (not file.good()) {
return GENERIC_FILE_ERROR;
}
return HasReturnvaluesIF::RETURN_OK;
}
ReturnValue_t FileSystemHandler::createFile(const char* repositoryPath, const char* filename,
const uint8_t* data, size_t size,
FileSystemArgsIF* args) {
auto path = getInitPath(args) / filename;
if (std::filesystem::exists(path)) {
return FILE_ALREADY_EXISTS;
}
std::ofstream file(path);
file.write(reinterpret_cast<const char*>(data), size);
if (not file.good()) {
return GENERIC_FILE_ERROR;
}
return HasReturnvaluesIF::RETURN_OK;
}
ReturnValue_t FileSystemHandler::removeFile(const char* repositoryPath, const char* filename,
FileSystemArgsIF* args) {
auto path = getInitPath(args) / repositoryPath / filename;
if (not std::filesystem::exists(path)) {
return FILE_DOES_NOT_EXIST;
}
int result = std::remove(path.c_str());
if (result != 0) {
sif::warning << "FileSystemHandler::deleteFile: Failed with code " << result << std::endl;
return GENERIC_FILE_ERROR;
}
return HasReturnvaluesIF::RETURN_OK;
}
ReturnValue_t FileSystemHandler::createDirectory(const char* repositoryPath, const char* dirname,
bool createParentDirs, FileSystemArgsIF* args) {
auto path = getInitPath(args) / repositoryPath / dirname;
if (std::filesystem::exists(path)) {
return DIRECTORY_ALREADY_EXISTS;
}
if (std::filesystem::create_directory(path)) {
return HasReturnvaluesIF::RETURN_OK;
}
sif::warning << "Creating directory " << path << " failed" << std::endl;
return GENERIC_FILE_ERROR;
}
ReturnValue_t FileSystemHandler::removeDirectory(const char* repositoryPath, const char* dirname,
bool deleteRecurively, FileSystemArgsIF* args) {
auto path = getInitPath(args) / repositoryPath / dirname;
if (not std::filesystem::exists(path)) {
return DIRECTORY_DOES_NOT_EXIST;
}
std::error_code err;
if (not deleteRecurively) {
if (std::filesystem::remove(path, err)) {
return HasReturnvaluesIF::RETURN_OK;
} else {
// Check error code. Most probably denied permissions because folder is not empty
sif::warning << "FileSystemHandler::removeDirectory: Deleting directory failed with "
"code "
<< err.value() << ": " << strerror(err.value()) << std::endl;
if (err.value() == ENOTEMPTY) {
return DIRECTORY_NOT_EMPTY;
} else {
return GENERIC_FILE_ERROR;
}
}
} else {
if (std::filesystem::remove_all(path, err)) {
return HasReturnvaluesIF::RETURN_OK;
} else {
sif::warning << "FileSystemHandler::removeDirectory: Deleting directory failed with "
"code "
<< err.value() << ": " << strerror(err.value()) << std::endl;
// Check error code
if (err.value() == ENOTEMPTY) {
return DIRECTORY_NOT_EMPTY;
} else {
return GENERIC_FILE_ERROR;
}
}
}
return HasReturnvaluesIF::RETURN_OK;
}
ReturnValue_t FileSystemHandler::renameFile(const char* repositoryPath, const char* oldFilename,
const char* newFilename, FileSystemArgsIF* args) {
auto basepath = getInitPath(args) / repositoryPath;
std::filesystem::rename(basepath / oldFilename, basepath / newFilename);
return HasReturnvaluesIF::RETURN_OK;
}
void FileSystemHandler::parseCfg(FsCommandCfg* cfg, bool& useMountPrefix) {
if (cfg != nullptr) {
useMountPrefix = cfg->useMountPrefix;
}
}
std::filesystem::path FileSystemHandler::getInitPath(FileSystemArgsIF* args) {
bool useMountPrefix = true;
parseCfg(reinterpret_cast<FsCommandCfg*>(args), useMountPrefix);
std::string path;
if (useMountPrefix) {
path = currentMountPrefix;
}
return std::filesystem::path(path);
}

View File

@ -1,68 +0,0 @@
#ifndef BSP_Q7S_MEMORY_FILESYSTEMHANDLER_H_
#define BSP_Q7S_MEMORY_FILESYSTEMHANDLER_H_
#include <filesystem>
#include <string>
#include "OBSWConfig.h"
#include "SdCardManager.h"
#include "eive/definitions.h"
#include "fsfw/ipc/MessageQueueIF.h"
#include "fsfw/memory/HasFileSystemIF.h"
#include "fsfw/objectmanager/SystemObject.h"
#include "fsfw/tasks/ExecutableObjectIF.h"
class CoreController;
class FileSystemHandler : public SystemObject, public ExecutableObjectIF, public HasFileSystemIF {
public:
struct FsCommandCfg : public FileSystemArgsIF {
// Can be used to automatically use mount prefix of active SD card.
// Otherwise, the operator has to specify the full path to the mounted SD card as well.
bool useMountPrefix = false;
};
FileSystemHandler(object_id_t fileSystemHandler);
virtual ~FileSystemHandler();
ReturnValue_t performOperation(uint8_t) override;
ReturnValue_t initialize() override;
/**
* Function to get the MessageQueueId_t of the implementing object
* @return MessageQueueId_t of the object
*/
MessageQueueId_t getCommandQueue() const override;
ReturnValue_t appendToFile(const char* repositoryPath, const char* filename, const uint8_t* data,
size_t size, uint16_t packetNumber,
FileSystemArgsIF* args = nullptr) override;
ReturnValue_t createFile(const char* repositoryPath, const char* filename,
const uint8_t* data = nullptr, size_t size = 0,
FileSystemArgsIF* args = nullptr) override;
ReturnValue_t removeFile(const char* repositoryPath, const char* filename,
FileSystemArgsIF* args = nullptr) override;
ReturnValue_t createDirectory(const char* repositoryPath, const char* dirname,
bool createParentDirs, FileSystemArgsIF* args = nullptr) override;
ReturnValue_t removeDirectory(const char* repositoryPath, const char* dirname,
bool deleteRecurively = false,
FileSystemArgsIF* args = nullptr) override;
ReturnValue_t renameFile(const char* repositoryPath, const char* oldFilename,
const char* newFilename, FileSystemArgsIF* args = nullptr) override;
private:
CoreController* coreCtrl = nullptr;
MessageQueueIF* mq = nullptr;
std::string currentMountPrefix = SdCardManager::SD_0_MOUNT_POINT;
static constexpr uint32_t FS_MAX_QUEUE_SIZE = config::OBSW_FILESYSTEM_HANDLER_QUEUE_SIZE;
SdCardManager* sdcMan = nullptr;
uint8_t opCounter = 0;
void fileSystemHandlerLoop();
void fileSystemCheckup();
std::filesystem::path getInitPath(FileSystemArgsIF* args);
void parseCfg(FsCommandCfg* cfg, bool& useMountPrefix);
};
#endif /* BSP_Q7S_MEMORY_FILESYSTEMMANAGER_H_ */

View File

@ -1,28 +1,28 @@
#include "scratchApi.h"
ReturnValue_t scratch::writeString(std::string name, std::string string) {
std::ostringstream oss;
oss << "xsc_scratch write " << name << " \"" << string << "\"";
std::ostringstream oss("xsc_scratch write ", std::ostringstream::ate);
oss << name << " \"" << string << "\"";
int result = std::system(oss.str().c_str());
if (result != 0) {
utility::handleSystemError(result, "scratch::writeString");
return HasReturnvaluesIF::RETURN_FAILED;
return returnvalue::FAILED;
}
return HasReturnvaluesIF::RETURN_OK;
return returnvalue::OK;
}
ReturnValue_t scratch::readString(std::string key, std::string &string) {
std::ifstream file;
std::string filename;
ReturnValue_t result = readToFile(key, file, filename);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != returnvalue::OK) {
return result;
}
std::string line;
if (not std::getline(file, line)) {
std::remove(filename.c_str());
return HasReturnvaluesIF::RETURN_FAILED;
return returnvalue::FAILED;
}
size_t pos = line.find("=");
@ -35,16 +35,16 @@ ReturnValue_t scratch::readString(std::string key, std::string &string) {
return KEY_NOT_FOUND;
}
string = line.substr(pos + 1);
return HasReturnvaluesIF::RETURN_OK;
return returnvalue::OK;
}
ReturnValue_t scratch::clearValue(std::string key) {
std::ostringstream oss;
oss << "xsc_scratch clear " << key;
std::ostringstream oss("xsc_scratch clear ", std::ostringstream::ate);
oss << key;
int result = std::system(oss.str().c_str());
if (result != 0) {
utility::handleSystemError(result, "scratch::clearValue");
return HasReturnvaluesIF::RETURN_FAILED;
return returnvalue::FAILED;
}
return HasReturnvaluesIF::RETURN_OK;
return returnvalue::OK;
}

View File

@ -7,7 +7,7 @@
#include <sstream>
#include <type_traits>
#include "fsfw/returnvalues/HasReturnvaluesIF.h"
#include "fsfw/returnvalues/returnvalue.h"
#include "fsfw/serviceinterface/ServiceInterface.h"
#include "linux/utility/utility.h"
#include "returnvalues/classIds.h"
@ -21,7 +21,7 @@ static constexpr char PREFERED_SDC_KEY[] = "PREFSD";
static constexpr char ALLOC_FAILURE_COUNT[] = "ALLOCERR";
static constexpr uint8_t INTERFACE_ID = CLASS_ID::SCRATCH_BUFFER;
static constexpr ReturnValue_t KEY_NOT_FOUND = HasReturnvaluesIF::makeReturnCode(INTERFACE_ID, 0);
static constexpr ReturnValue_t KEY_NOT_FOUND = returnvalue::makeCode(INTERFACE_ID, 0);
ReturnValue_t clearValue(std::string key);
@ -76,32 +76,32 @@ ReturnValue_t readToFile(std::string name, std::ifstream& file, std::string& fil
int result = std::system(oss.str().c_str());
if (result != 0) {
if (WEXITSTATUS(result) == 1) {
sif::warning << "scratch::readNumber: Key " << name << " does not exist" << std::endl;
sif::warning << "scratch::readToFile: Key " << name << " does not exist" << std::endl;
// Could not find value
std::remove(filename.c_str());
return KEY_NOT_FOUND;
} else {
utility::handleSystemError(result, "scratch::readNumber");
utility::handleSystemError(result, "scratch::readToFile");
std::remove(filename.c_str());
return HasReturnvaluesIF::RETURN_FAILED;
return returnvalue::FAILED;
}
}
file.open(filename);
return HasReturnvaluesIF::RETURN_OK;
return returnvalue::OK;
}
} // End of anonymous namespace
template <typename T, class = typename std::enable_if<std::is_integral<T>::value>::type>
inline ReturnValue_t writeNumber(std::string key, T num) noexcept {
std::ostringstream oss;
oss << "xsc_scratch write " << key << " " << std::to_string(num);
std::ostringstream oss("xsc_scratch write ", std::ostringstream::ate);
oss << key << " " << std::to_string(num);
int result = std::system(oss.str().c_str());
if (result != 0) {
utility::handleSystemError(result, "scratch::writeNumber");
return HasReturnvaluesIF::RETURN_FAILED;
return returnvalue::FAILED;
}
return HasReturnvaluesIF::RETURN_OK;
return returnvalue::OK;
}
template <typename T, class = typename std::enable_if<std::is_integral<T>::value>::type>
@ -110,7 +110,7 @@ inline ReturnValue_t readNumber(std::string key, T& num) noexcept {
ifstream file;
std::string filename;
ReturnValue_t result = readToFile(key, file, filename);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != returnvalue::OK) {
std::remove(filename.c_str());
return result;
}
@ -118,7 +118,7 @@ inline ReturnValue_t readNumber(std::string key, T& num) noexcept {
string line;
if (not std::getline(file, line)) {
std::remove(filename.c_str());
return HasReturnvaluesIF::RETURN_FAILED;
return returnvalue::FAILED;
}
size_t pos = line.find("=");
@ -138,7 +138,7 @@ inline ReturnValue_t readNumber(std::string key, T& num) noexcept {
}
std::remove(filename.c_str());
return HasReturnvaluesIF::RETURN_OK;
return returnvalue::OK;
}
} // namespace scratch

View File

@ -1,21 +1,31 @@
#include "obsw.h"
#include <pwd.h>
#include <sys/types.h>
#include <unistd.h>
#include <filesystem>
#include <fstream>
#include <iostream>
#include "OBSWConfig.h"
#include "commonConfig.h"
#include "core/InitMission.h"
#include "core/scheduling.h"
#include "fsfw/tasks/TaskFactory.h"
#include "fsfw/version.h"
#include "q7sConfig.h"
#include "watchdog/definitions.h"
static int OBSW_ALREADY_RUNNING = -2;
#if OBSW_Q7S_EM == 0
static const char* DEV_STRING = "Xiphos Q7S FM";
#else
static const char* DEV_STRING = "Xiphos Q7S EM";
#endif
int obsw::obsw() {
using namespace fsfw;
std::cout << "-- EIVE OBSW --" << std::endl;
std::cout << "-- Compiled for Linux (Xiphos Q7S) --" << std::endl;
std::cout << "-- Compiled for Linux (" << DEV_STRING << ") --" << std::endl;
std::cout << "-- OBSW v" << common::OBSW_VERSION << " | FSFW v" << fsfw::FSFW_VERSION << " --"
<< std::endl;
std::cout << "-- " << __DATE__ << " " << __TIME__ << " --" << std::endl;
@ -31,7 +41,36 @@ int obsw::obsw() {
return OBSW_ALREADY_RUNNING;
}
#endif
initmission::initMission();
const char* homedir = nullptr;
homedir = getenv("HOME");
if (homedir == nullptr) {
homedir = getpwuid(getuid())->pw_dir;
}
std::filesystem::path bootDelayFile = std::filesystem::path(homedir) / "boot_delay_secs.txt";
// Init delay handling.
if (std::filesystem::exists(bootDelayFile)) {
std::ifstream ifile(bootDelayFile);
std::string lineStr;
unsigned int bootDelaySecs = 0;
unsigned int line = 0;
// Try to reas delay seconds from file.
while (std::getline(ifile, lineStr)) {
std::istringstream iss(lineStr);
if (!(iss >> bootDelaySecs)) {
break;
}
line++;
}
if (line == 0) {
// If the file is empty, assume default of 6 seconds
bootDelaySecs = 6;
}
std::cout << "Delaying OBSW start for " << bootDelaySecs << " seconds" << std::endl;
TaskFactory::delayTask(bootDelaySecs * 1000);
}
scheduling::initMission();
for (;;) {
/* Suspend main thread by sleeping it. */

View File

@ -1,3 +1 @@
target_sources(${SIMPLE_OBSW_NAME} PRIVATE
simple.cpp
)
target_sources(${SIMPLE_OBSW_NAME} PRIVATE simple.cpp)

View File

@ -1,3 +1 @@
target_sources(${OBSW_NAME} PRIVATE
Xadc.cpp
)
target_sources(${OBSW_NAME} PRIVATE Xadc.cpp)

View File

@ -12,20 +12,20 @@ Xadc::Xadc() {}
Xadc::~Xadc() {}
ReturnValue_t Xadc::getTemperature(float& temperature) {
ReturnValue_t result = HasReturnvaluesIF::RETURN_OK;
ReturnValue_t result = returnvalue::OK;
int raw = 0;
int offset = 0;
float scale = 0;
result = readValFromFile<int>(xadc::file::tempRaw.c_str(), raw);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != returnvalue::OK) {
return result;
}
result = readValFromFile<int>(xadc::file::tempOffset.c_str(), offset);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != returnvalue::OK) {
return result;
}
result = readValFromFile<float>(xadc::file::tempScale.c_str(), scale);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != returnvalue::OK) {
return result;
}
temperature = (raw + offset) * scale / 1000;
@ -35,84 +35,84 @@ ReturnValue_t Xadc::getTemperature(float& temperature) {
ReturnValue_t Xadc::getVccPint(float& vccPint) {
ReturnValue_t result =
readVoltageFromSysfs(xadc::file::vccpintRaw, xadc::file::vccpintScale, vccPint);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != returnvalue::OK) {
return result;
}
return HasReturnvaluesIF::RETURN_OK;
return returnvalue::OK;
}
ReturnValue_t Xadc::getVccPaux(float& vccPaux) {
ReturnValue_t result =
readVoltageFromSysfs(xadc::file::vccpauxRaw, xadc::file::vccpauxScale, vccPaux);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != returnvalue::OK) {
return result;
}
return HasReturnvaluesIF::RETURN_OK;
return returnvalue::OK;
}
ReturnValue_t Xadc::getVccInt(float& vccInt) {
ReturnValue_t result =
readVoltageFromSysfs(xadc::file::vccintRaw, xadc::file::vccintScale, vccInt);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != returnvalue::OK) {
return result;
}
return HasReturnvaluesIF::RETURN_OK;
return returnvalue::OK;
}
ReturnValue_t Xadc::getVccAux(float& vccAux) {
ReturnValue_t result =
readVoltageFromSysfs(xadc::file::vccauxRaw, xadc::file::vccauxScale, vccAux);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != returnvalue::OK) {
return result;
}
return HasReturnvaluesIF::RETURN_OK;
return returnvalue::OK;
}
ReturnValue_t Xadc::getVccBram(float& vccBram) {
ReturnValue_t result =
readVoltageFromSysfs(xadc::file::vccbramRaw, xadc::file::vccbramScale, vccBram);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != returnvalue::OK) {
return result;
}
return HasReturnvaluesIF::RETURN_OK;
return returnvalue::OK;
}
ReturnValue_t Xadc::getVccOddr(float& vccOddr) {
ReturnValue_t result =
readVoltageFromSysfs(xadc::file::vccoddrRaw, xadc::file::vccoddrScale, vccOddr);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != returnvalue::OK) {
return result;
}
return HasReturnvaluesIF::RETURN_OK;
return returnvalue::OK;
}
ReturnValue_t Xadc::getVrefp(float& vrefp) {
ReturnValue_t result = readVoltageFromSysfs(xadc::file::vrefpRaw, xadc::file::vrefpScale, vrefp);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != returnvalue::OK) {
return result;
}
return HasReturnvaluesIF::RETURN_OK;
return returnvalue::OK;
}
ReturnValue_t Xadc::getVrefn(float& vrefn) {
ReturnValue_t result = readVoltageFromSysfs(xadc::file::vrefnRaw, xadc::file::vrefnScale, vrefn);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != returnvalue::OK) {
return result;
}
return HasReturnvaluesIF::RETURN_OK;
return returnvalue::OK;
}
ReturnValue_t Xadc::readVoltageFromSysfs(std::string rawFile, std::string scaleFile,
float& voltage) {
ReturnValue_t result = HasReturnvaluesIF::RETURN_OK;
ReturnValue_t result = returnvalue::OK;
float raw = 0;
float scale = 0;
result = readValFromFile(rawFile.c_str(), raw);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != returnvalue::OK) {
return result;
}
result = readValFromFile(scaleFile.c_str(), scale);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != returnvalue::OK) {
return result;
}
voltage = calculateVoltage(raw, scale);
@ -127,7 +127,7 @@ ReturnValue_t Xadc::readValFromFile(const char* filename, T& val) {
fp = fopen(filename, "r");
if (fp == nullptr) {
sif::warning << "Xadc::readValFromFile: Failed to open file " << filename << std::endl;
return HasReturnvaluesIF::RETURN_FAILED;
return returnvalue::FAILED;
}
char valstring[MAX_STR_LENGTH] = "";
char* returnVal = fgets(valstring, MAX_STR_LENGTH, fp);
@ -135,10 +135,10 @@ ReturnValue_t Xadc::readValFromFile(const char* filename, T& val) {
sif::warning << "Xadc::readValFromFile: Failed to read string from file " << filename
<< std::endl;
fclose(fp);
return HasReturnvaluesIF::RETURN_FAILED;
return returnvalue::FAILED;
}
std::istringstream valSstream(valstring);
valSstream >> val;
fclose(fp);
return HasReturnvaluesIF::RETURN_OK;
return returnvalue::OK;
}

View File

@ -3,7 +3,7 @@
#include <string>
#include "fsfw/returnvalues/HasReturnvaluesIF.h"
#include "fsfw/returnvalues/returnvalue.h"
namespace xadc {
using namespace std;

View File

@ -2,7 +2,7 @@
#include <fsfw/objectmanager/ObjectManager.h>
#include <fsfw/objectmanager/ObjectManagerIF.h>
#include <fsfw/returnvalues/HasReturnvaluesIF.h>
#include <fsfw/returnvalues/returnvalue.h>
#include <fsfw/serviceinterface/ServiceInterface.h>
#include <fsfw/tasks/FixedTimeslotTaskIF.h>
#include <fsfw/tasks/PeriodicTaskIF.h>
@ -36,7 +36,7 @@ void initmission::initMission() {
void initmission::initTasks() {
TaskFactory* factory = TaskFactory::instance();
ReturnValue_t result = HasReturnvaluesIF::RETURN_OK;
ReturnValue_t result = returnvalue::OK;
if (factory == nullptr) {
/* Should never happen ! */
return;
@ -51,28 +51,28 @@ void initmission::initTasks() {
PeriodicTaskIF* tmtcDistributor = factory->createPeriodicTask(
"DIST", 40, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.2, missedDeadlineFunc);
result = tmtcDistributor->addComponent(objects::CCSDS_PACKET_DISTRIBUTOR);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != returnvalue::OK) {
sif::error << "Object add component failed" << std::endl;
}
result = tmtcDistributor->addComponent(objects::PUS_PACKET_DISTRIBUTOR);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != returnvalue::OK) {
sif::error << "Object add component failed" << std::endl;
}
result = tmtcDistributor->addComponent(objects::TM_FUNNEL);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != returnvalue::OK) {
sif::error << "Object add component failed" << std::endl;
}
PeriodicTaskIF* tmtcBridgeTask = factory->createPeriodicTask(
"TMTC_BRIDGE", 50, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.2, missedDeadlineFunc);
result = tmtcBridgeTask->addComponent(objects::TMTC_BRIDGE);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != returnvalue::OK) {
sif::error << "Add component TMTC Bridge failed" << std::endl;
}
PeriodicTaskIF* tmtcPollingTask = factory->createPeriodicTask(
"TMTC_POLLING", 80, PeriodicTaskIF::MINIMUM_STACK_SIZE, 2.0, missedDeadlineFunc);
result = tmtcPollingTask->addComponent(objects::TMTC_POLLING_TASK);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != returnvalue::OK) {
sif::error << "Add component TMTC Polling failed" << std::endl;
}
@ -84,18 +84,47 @@ void initmission::initTasks() {
FixedTimeslotTaskIF* pst = factory->createFixedTimeslotTask(
"UART_PST", 70, PeriodicTaskIF::MINIMUM_STACK_SIZE * 4, 1.0, missedDeadlineFunc);
result = pst::pstUart(pst);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != returnvalue::OK) {
sif::error << "InitMission::initTasks: Creating PST failed!" << std::endl;
}
pstTasks.push_back(pst);
#if OBSW_ADD_PLOC_MPSOC == 1
PeriodicTaskIF* mpsocHelperTask = factory->createPeriodicTask(
"PLOC_MPSOC_HELPER", 20, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.2, missedDeadlineFunc);
result = mpsocHelperTask->addComponent(objects::PLOC_MPSOC_HELPER);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != returnvalue::OK) {
initmission::printAddObjectError("PLOC_MPSOC_HELPER", objects::PLOC_MPSOC_HELPER);
}
pstTasks.push_back(mpsocHelperTask);
#endif /* OBSW_ADD_PLOC_MPSOC == 1*/
#if OBSW_ADD_PLOC_SUPERVISOR == 1
PeriodicTaskIF* supvHelperTask = factory->createPeriodicTask(
"PLOC_SUPV_HELPER", 20, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.2, missedDeadlineFunc);
result = supvHelperTask->addComponent(objects::PLOC_SUPERVISOR_HELPER);
if (result != returnvalue::OK) {
initmission::printAddObjectError("PLOC_SUPV_HELPER", objects::PLOC_SUPERVISOR_HELPER);
}
#endif /* OBSW_ADD_PLOC_SUPERVISOR == 1 */
#if OBSW_ADD_CCSDS_IP_CORES == 1
PeriodicTaskIF* ccsdsHandlerTask = factory->createPeriodicTask(
"CCSDS_HANDLER", 50, PeriodicTaskIF::MINIMUM_STACK_SIZE, 2.0, missedDeadlineFunc);
result = ccsdsHandlerTask->addComponent(objects::CCSDS_HANDLER);
if (result != returnvalue::OK) {
initmission::printAddObjectError("CCSDS Handler", objects::CCSDS_HANDLER);
}
// Minimal distance between two received TCs amounts to 0.6 seconds
// If a command has not been read before the next one arrives, the old command will be
// overwritten by the PDEC.
PeriodicTaskIF* pdecHandlerTask = factory->createPeriodicTask(
"PDEC_HANDLER", 50, PeriodicTaskIF::MINIMUM_STACK_SIZE, 1.0, missedDeadlineFunc);
result = pdecHandlerTask->addComponent(objects::PDEC_HANDLER);
if (result != returnvalue::OK) {
initmission::printAddObjectError("PDEC Handler", objects::PDEC_HANDLER);
}
#endif /* OBSW_ADD_CCSDS_IP_CORES == 1 */
auto taskStarter = [](std::vector<PeriodicTaskIF*>& taskVector, std::string name) {
for (const auto& task : taskVector) {
@ -111,6 +140,16 @@ void initmission::initTasks() {
tmtcDistributor->startTask();
tmtcBridgeTask->startTask();
tmtcPollingTask->startTask();
#if OBSW_ADD_CCSDS_IP_CORE == 1
pdecHandlerTask->startTask();
ccsdsHandlerTask->startTask();
#endif /* #if OBSW_ADD_CCSDS_IP_CORE == 1 */
#if OBSW_ADD_PLOC_SUPERVISOR == 1
supvHelperTask->startTask();
#endif /* OBSW_ADD_PLOC_SUPERVISOR == 1 */
#if OBSW_ADD_PLOC_MPSOC == 1
mpsocHelperTask->startTask();
#endif /* OBSW_ADD_PLOC_MPSOC == 1 */
taskStarter(pstTasks, "PST Tasks");
taskStarter(pusTasks, "PUS Tasks");
@ -121,11 +160,11 @@ void initmission::initTasks() {
void initmission::createPusTasks(TaskFactory& factory,
TaskDeadlineMissedFunction missedDeadlineFunc,
std::vector<PeriodicTaskIF*>& taskVec) {
ReturnValue_t result = HasReturnvaluesIF::RETURN_OK;
ReturnValue_t result = returnvalue::OK;
PeriodicTaskIF* pusVerification = factory.createPeriodicTask(
"PUS_VERIF", 40, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.200, missedDeadlineFunc);
result = pusVerification->addComponent(objects::PUS_SERVICE_1_VERIFICATION);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != returnvalue::OK) {
sif::error << "Object add component failed" << std::endl;
}
taskVec.push_back(pusVerification);
@ -133,11 +172,11 @@ void initmission::createPusTasks(TaskFactory& factory,
PeriodicTaskIF* pusEvents = factory.createPeriodicTask(
"PUS_EVENTS", 60, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.200, missedDeadlineFunc);
result = pusEvents->addComponent(objects::PUS_SERVICE_5_EVENT_REPORTING);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != returnvalue::OK) {
initmission::printAddObjectError("PUS_EVENTS", objects::PUS_SERVICE_5_EVENT_REPORTING);
}
result = pusEvents->addComponent(objects::EVENT_MANAGER);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != returnvalue::OK) {
initmission::printAddObjectError("PUS_MGMT", objects::EVENT_MANAGER);
}
taskVec.push_back(pusEvents);
@ -145,11 +184,11 @@ void initmission::createPusTasks(TaskFactory& factory,
PeriodicTaskIF* pusHighPrio = factory.createPeriodicTask(
"PUS_HIGH_PRIO", 50, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.200, missedDeadlineFunc);
result = pusHighPrio->addComponent(objects::PUS_SERVICE_2_DEVICE_ACCESS);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != returnvalue::OK) {
initmission::printAddObjectError("PUS2", objects::PUS_SERVICE_2_DEVICE_ACCESS);
}
result = pusHighPrio->addComponent(objects::PUS_SERVICE_9_TIME_MGMT);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != returnvalue::OK) {
initmission::printAddObjectError("PUS9", objects::PUS_SERVICE_9_TIME_MGMT);
}
taskVec.push_back(pusHighPrio);
@ -157,19 +196,19 @@ void initmission::createPusTasks(TaskFactory& factory,
PeriodicTaskIF* pusMedPrio = factory.createPeriodicTask(
"PUS_MED_PRIO", 40, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.8, missedDeadlineFunc);
result = pusMedPrio->addComponent(objects::PUS_SERVICE_8_FUNCTION_MGMT);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != returnvalue::OK) {
initmission::printAddObjectError("PUS8", objects::PUS_SERVICE_8_FUNCTION_MGMT);
}
result = pusMedPrio->addComponent(objects::PUS_SERVICE_200_MODE_MGMT);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != returnvalue::OK) {
initmission::printAddObjectError("PUS200", objects::PUS_SERVICE_200_MODE_MGMT);
}
result = pusMedPrio->addComponent(objects::PUS_SERVICE_20_PARAMETERS);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != returnvalue::OK) {
initmission::printAddObjectError("PUS20", objects::PUS_SERVICE_20_PARAMETERS);
}
result = pusMedPrio->addComponent(objects::PUS_SERVICE_3_HOUSEKEEPING);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != returnvalue::OK) {
initmission::printAddObjectError("PUS3", objects::PUS_SERVICE_3_HOUSEKEEPING);
}
taskVec.push_back(pusMedPrio);
@ -177,11 +216,11 @@ void initmission::createPusTasks(TaskFactory& factory,
PeriodicTaskIF* pusLowPrio = factory.createPeriodicTask(
"PUS_LOW_PRIO", 30, PeriodicTaskIF::MINIMUM_STACK_SIZE, 1.6, missedDeadlineFunc);
result = pusLowPrio->addComponent(objects::PUS_SERVICE_17_TEST);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != returnvalue::OK) {
initmission::printAddObjectError("PUS17", objects::PUS_SERVICE_17_TEST);
}
result = pusLowPrio->addComponent(objects::INTERNAL_ERROR_REPORTER);
if (result != HasReturnvaluesIF::RETURN_OK) {
if (result != returnvalue::OK) {
initmission::printAddObjectError("INT_ERR_RPRT", objects::INTERNAL_ERROR_REPORTER);
}
taskVec.push_back(pusLowPrio);

View File

@ -3,7 +3,7 @@
#include <vector>
#include "fsfw/tasks/Typedef.h"
#include "fsfw/tasks/definitions.h"
class PeriodicTaskIF;
class TaskFactory;

View File

@ -13,7 +13,7 @@
/** All of the following flags should be enabled for mission code */
/*******************************************************************/
#define OBSW_USE_CCSDS_IP_CORE 0
#define OBSW_ADD_CCSDS_IP_CORE 0
// Set to 1 if all telemetry should be sent to the PTME IP Core
#define OBSW_TM_TO_PTME 0
// Set to 1 if telecommands are received via the PDEC IP Core
@ -37,7 +37,6 @@
#define OBSW_ENABLE_SYRLINKS_TRANSMIT_TIMEOUT 0
#define OBSW_SYRLINKS_SIMULATED 1
#define OBSW_STAR_TRACKER_GROUND_CONFIG 1
#define OBSW_ENABLE_PERIODIC_HK 0
#define OBSW_PRINT_CORE_HK 0
#define OBSW_INITIALIZE_SWITCHES 0

View File

@ -1,27 +1,38 @@
#include "ObjectFactory.h"
#include <devConf.h>
#include "fsfw_hal/linux/uart/UartComIF.h"
#include "fsfw_hal/linux/i2c/I2cComIF.h"
#include "fsfw_hal/linux/uart/UartCookie.h"
#include "OBSWConfig.h"
#include "busConf.h"
#include "devConf.h"
#include "ccsdsConfig.h"
#include "devices/addresses.h"
#include "devices/gpioIds.h"
#include "fsfw/datapoollocal/LocalDataPoolManager.h"
#include "fsfw/tmtcpacket/pus/tm.h"
#include "fsfw/tmtcservices/CommandingServiceBase.h"
#include "fsfw/tmtcservices/PusServiceBase.h"
#include "fsfw_hal/linux/i2c/I2cComIF.h"
#include "fsfw_hal/linux/i2c/I2cCookie.h"
#include "fsfw_hal/linux/serial/SerialComIF.h"
#include "fsfw_hal/linux/serial/SerialCookie.h"
#include "fsfw_hal/common/gpio/GpioCookie.h"
#include "linux/ObjectFactory.h"
#include "linux/devices/ploc/PlocMPSoCHandler.h"
#include "linux/devices/ploc/PlocMPSoCHelper.h"
#include "mission/devices/Tmp1075Handler.h"
#include "linux/devices/ploc/PlocMemoryDumper.h"
#include "linux/devices/ploc/PlocSupervisorHandler.h"
#include "linux/devices/ploc/PlocSupvHelper.h"
#include "linux/obc/AxiPtmeConfig.h"
#include "linux/obc/PapbVcInterface.h"
#include "linux/obc/PdecHandler.h"
#include "linux/obc/Ptme.h"
#include "linux/obc/PtmeConfig.h"
#include "mission/core/GenericFactory.h"
#include "mission/utility/TmFunnel.h"
#include "test/gpio/DummyGpioIF.h"
#include "mission/devices/Tmp1075Handler.h"
#include "mission/tmtc/TmFunnel.h"
#include "mission/tmtc/CCSDSHandler.h"
#include "mission/tmtc/VirtualChannel.h"
#include "objects/systemObjectList.h"
#include "devices/addresses.h"
#include "devices/gpioIds.h"
#include "test/gpio/DummyGpioIF.h"
#include "tmtc/apid.h"
#include "tmtc/pusIds.h"
@ -32,7 +43,11 @@ void Factory::setStaticFrameworkObjectIds() {
CommandingServiceBase::defaultPacketSource = objects::PUS_PACKET_DISTRIBUTOR;
CommandingServiceBase::defaultPacketDestination = objects::TM_FUNNEL;
#if OBSW_TM_TO_PTME == 1
TmFunnel::downlinkDestination = objects::CCSDS_HANDLER;
#else
TmFunnel::downlinkDestination = objects::TMTC_BRIDGE;
#endif
TmFunnel::storageDestination = objects::NO_OBJECT;
VerificationReporter::messageReceiver = objects::PUS_SERVICE_1_VERIFICATION;
@ -43,12 +58,14 @@ void ObjectFactory::produce(void* args) {
Factory::setStaticFrameworkObjectIds();
ObjectFactory::produceGenericObjects();
LinuxLibgpioIF* gpioComIF = new LinuxLibgpioIF(objects::GPIO_IF);;
newSerialComIF(objects::UART_COM_IF);
#if OBSW_ADD_PLOC_MPSOC == 1
UartCookie* mpsocUartCookie = new UartCookie(objects::PLOC_MPSOC_HANDLER, te0720_1cfa::MPSOC_UART,
uart::PLOC_MPSOC_BAUD, mpsoc::MAX_REPLY_SIZE);
mpsocUartCookie->setNoFixedSizeReply();
PlocMPSoCHelper* plocMpsocHelper = new PlocMPSoCHelper(objects::PLOC_MPSOC_HELPER);
new UartComIF(objects::UART_COM_IF);
auto dummyGpioIF = new DummyGpioIF();
PlocMPSoCHandler* plocMPSoCHandler = new PlocMPSoCHandler(
objects::PLOC_MPSOC_HANDLER, objects::UART_COM_IF, mpsocUartCookie, plocMpsocHelper,
@ -56,6 +73,21 @@ void ObjectFactory::produce(void* args) {
plocMPSoCHandler->setStartUpImmediately();
#endif /* OBSW_ADD_PLOC_MPSOC == 1 */
#if OBSW_ADD_PLOC_SUPERVISOR == 1
UartCookie* supervisorCookie =
new UartCookie(objects::PLOC_SUPERVISOR_HANDLER, std::string("/dev/ttyPS1"),
uart::PLOC_SUPV_BAUD, supv::MAX_PACKET_SIZE * 20);
supervisorCookie->setNoFixedSizeReply();
auto supvGpioIF = new DummyGpioIF();
auto supvHelper = new PlocSupvHelper(objects::PLOC_SUPERVISOR_HELPER);
new PlocSupervisorHandler(objects::PLOC_SUPERVISOR_HANDLER, objects::UART_COM_IF,
supervisorCookie, Gpio(gpioIds::ENABLE_SUPV_UART, supvGpioIF),
pcdu::PDU1_CH6_PLOC_12V, supvHelper);
#endif
new PlocMemoryDumper(objects::PLOC_MEMORY_DUMPER);
#if OBSW_TEST_LIBGPIOD == 1
#if OBSW_TEST_GPIO_OPEN_BYLABEL == 1
/* Configure MIO0 as input */
@ -86,21 +118,6 @@ void ObjectFactory::produce(void* args) {
new SusHandler(objects::SUS_0, objects::SPI_COM_IF, spiCookieSus, gpioComIF, gpioIds::CS_SUS_0);
#endif
#if OBSW_TEST_CCSDS_BRIDGE == 1
GpioCookie* gpioCookieCcsdsIp = new GpioCookie;
GpiodRegular* papbBusyN =
new GpiodRegular(std::string("gpiochip0"), 0, std::string("PAPBBusy_VC0"));
gpioCookieCcsdsIp->addGpio(gpioIds::PAPB_BUSY_N, papbBusyN);
GpiodRegular* papbEmpty =
new GpiodRegular(std::string("gpiochip0"), 1, std::string("PAPBEmpty_VC0"));
gpioCookieCcsdsIp->addGpio(gpioIds::PAPB_EMPTY, papbEmpty);
gpioComIF->addGpios(gpioCookieCcsdsIp);
new CCSDSIPCoreBridge(objects::CCSDS_IP_CORE_BRIDGE, objects::CCSDS_PACKET_DISTRIBUTOR,
objects::TM_STORE, objects::TC_STORE, gpioComIF, std::string("/dev/uio0"),
gpioIds::PAPB_BUSY_N, gpioIds::PAPB_EMPTY);
#endif
#if OBSW_TEST_RAD_SENSOR == 1
GpioCookie* gpioCookieRadSensor = new GpioCookie;
GpiodRegular* chipSelectRadSensor = new GpiodRegular(
@ -124,28 +141,19 @@ void ObjectFactory::produce(void* args) {
GpioCookie* gpioCookie = new GpioCookie;
gpioCookie->addGpio(gpioIds::HEATER_0, heaterGpio);
new HeaterHandler(objects::HEATER_HANDLER, objects::GPIO_IF, gpioCookie, objects::PCDU_HANDLER,
pcduSwitches::TCS_BOARD_8V_HEATER_IN);
pcdu::TCS_BOARD_8V_HEATER_IN);
#endif
#if OBSW_ADD_PLOC_SUPERVISOR == 1
/* Configuration for MIO0 on TE0720-03-1CFA */
UartCookie* plocSupervisorCookie =
new UartCookie(objects::PLOC_SUPERVISOR_HANDLER, std::string("/dev/ttyPS1"),
UartModes::NON_CANONICAL, 115200, PLOC_SPV::MAX_PACKET_SIZE * 20);
plocSupervisorCookie->setNoFixedSizeReply();
PlocSupervisorHandler* plocSupervisor = new PlocSupervisorHandler(
objects::PLOC_SUPERVISOR_HANDLER, objects::UART_COM_IF, plocSupervisorCookie);
plocSupervisor->setStartUpImmediately();
#endif
new I2cComIF(objects::I2C_COM_IF);
new I2cComIF(objects::I2C_COM_IF);
I2cCookie* i2cCookieTmp1075tcs1 =
new I2cCookie(addresses::TMP1075_TCS_1, TMP1075::MAX_REPLY_LENGTH, std::string("/dev/i2c-0"));
I2cCookie* i2cCookieTmp1075tcs2 =
new I2cCookie(addresses::TMP1075_TCS_2, TMP1075::MAX_REPLY_LENGTH, std::string("/dev/i2c-0"));
I2cCookie* i2cCookieTmp1075tcs1 =
new I2cCookie(addresses::TMP1075_TCS_1, TMP1075::MAX_REPLY_LENGTH, std::string("/dev/i2c-0"));
I2cCookie* i2cCookieTmp1075tcs2 =
new I2cCookie(addresses::TMP1075_TCS_2, TMP1075::MAX_REPLY_LENGTH, std::string("/dev/i2c-0"));
/* Temperature sensors */
new Tmp1075Handler(objects::TMP1075_HANDLER_1, objects::I2C_COM_IF, i2cCookieTmp1075tcs1);
new Tmp1075Handler(objects::TMP1075_HANDLER_2, objects::I2C_COM_IF, i2cCookieTmp1075tcs2);
/* Temperature sensors */
new Tmp1075Handler(objects::TMP1075_HANDLER_1, objects::I2C_COM_IF, i2cCookieTmp1075tcs1);
new Tmp1075Handler(objects::TMP1075_HANDLER_2, objects::I2C_COM_IF, i2cCookieTmp1075tcs2);
static_cast<void>(gpioComIF);
}

View File

@ -1,7 +1,11 @@
#ifndef BSP_LINUX_OBJECTFACTORY_H_
#define BSP_LINUX_OBJECTFACTORY_H_
#include <stdint.h>
#include <fsfw_hal/linux/gpio/LinuxLibgpioIF.h>
namespace ObjectFactory {
static const uint32_t TRANSMITTER_TIMEOUT = 86400000; // 1 day
void produce(void* args);
}; // namespace ObjectFactory

View File

@ -3,9 +3,37 @@
namespace te0720_1cfa {
static constexpr char MPSOC_UART[] = "/dev/ttyPS1";
namespace baudrate {
static constexpr char UIO_PDEC_REGISTERS[] = "/dev/uio0";
static constexpr char UIO_PTME[] = "/dev/uio1";
static constexpr char UIO_PDEC_CONFIG_MEMORY[] = "/dev/uio2";
static constexpr char UIO_PDEC_RAM[] = "/dev/uio3";
static constexpr int MAP_ID_PTME_CONFIG = 3;
namespace uiomapids {
static const int PTME_VC0 = 0;
static const int PTME_VC1 = 1;
static const int PTME_VC2 = 2;
static const int PTME_VC3 = 3;
static const int PTME_CONFIG = 4;
} // namespace uiomapids
namespace gpioNames {
static constexpr char PAPB_BUSY_SIGNAL_VC0[] = "papb_busy_signal_vc0";
static constexpr char PAPB_EMPTY_SIGNAL_VC0[] = "papb_empty_signal_vc0";
static constexpr char PAPB_BUSY_SIGNAL_VC1[] = "papb_busy_signal_vc1";
static constexpr char PAPB_EMPTY_SIGNAL_VC1[] = "papb_empty_signal_vc1";
static constexpr char PAPB_BUSY_SIGNAL_VC2[] = "papb_busy_signal_vc2";
static constexpr char PAPB_EMPTY_SIGNAL_VC2[] = "papb_empty_signal_vc2";
static constexpr char PAPB_BUSY_SIGNAL_VC3[] = "papb_busy_signal_vc3";
static constexpr char PAPB_EMPTY_SIGNAL_VC3[] = "papb_empty_signal_vc3";
static constexpr char RS485_EN_TX_CLOCK[] = "tx_clock_enable_ltc2872";
static constexpr char RS485_EN_TX_DATA[] = "tx_data_enable_ltc2872";
static constexpr char RS485_EN_RX_CLOCK[] = "rx_clock_enable_ltc2872";
static constexpr char RS485_EN_RX_DATA[] = "rx_data_enable_ltc2872";
static constexpr char PDEC_RESET[] = "pdec_reset";
}
}
#endif /* BSP_EGSE_BOARDCONFIG_BUSCONF_H_ */

View File

@ -0,0 +1,3 @@
#!/bin/bash
git submodule update --init fsfw thirdparty/rapidcsv thirdparty/lwgps thirdparty/json

View File

@ -33,6 +33,10 @@ add_compile_options(
set(STRIPPED_OBSW_NAME ${OBSW_BIN_NAME}-stripped)
set(STRIPPED_WATCHDOG_NAME eive-watchdog-stripped)
if(EIVE_CREATE_UNIQUE_OBSW_BIN)
set(UNIQUE_OBSW_BIN_NAME ${OBSW_BIN_NAME}-$ENV{USERNAME})
endif()
add_custom_command(
TARGET ${OBSW_NAME}
POST_BUILD
@ -41,6 +45,16 @@ add_custom_command(
COMMENT "Generating stripped executable ${STRIPPED_OBSW_NAME}.."
)
if(UNIQUE_OBSW_BIN_NAME)
add_custom_command(
TARGET ${OBSW_NAME}
POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy
${CMAKE_CURRENT_BINARY_DIR}/${OBSW_BIN_NAME}
${CMAKE_CURRENT_BINARY_DIR}/${UNIQUE_OBSW_BIN_NAME}
COMMENT "Generating unique EIVE OBSW binary ${UNIQUE_OBSW_BIN_NAME}")
endif()
add_custom_command(
TARGET ${WATCHDOG_NAME}
POST_BUILD

Some files were not shown because too many files have changed in this diff Show More