Files
.idea
.run
archive
arduino
automation
bsp_egse
bsp_hosted
bsp_linux_board
bsp_q7s
bsp_te0720_1cfa
cmake
common
doc
dummies
fsfw
generators
hooks
linux
misc
mission
acs
cfdp
com
config
controller
acs
control
util
AcsParameters.cpp
AcsParameters.h
ActuatorCmd.cpp
ActuatorCmd.h
CMakeLists.txt
Guidance.cpp
Guidance.h
Igrf13Model.cpp
Igrf13Model.h
MultiplicativeKalmanFilter.cpp
MultiplicativeKalmanFilter.h
Navigation.cpp
Navigation.h
SensorProcessing.cpp
SensorProcessing.h
SensorValues.cpp
SensorValues.h
SusConverter.cpp
SusConverter.h
controllerdefinitions
AcsController.cpp
AcsController.h
CMakeLists.txt
ThermalController.cpp
ThermalController.h
tcsDefs.h
memory
payload
power
system
tcs
tmtc
utility
CMakeLists.txt
SolarArrayDeploymentHandler.cpp
SolarArrayDeploymentHandler.h
genericFactory.cpp
genericFactory.h
persistentTmStoreDefs.h
pollingSeqTables.cpp
pollingSeqTables.h
scheduling.cpp
scheduling.h
sysDefs.h
scripts
test
thirdparty
tmtc
unittest
watchdog
.clang-format
.dockerignore
.gitignore
.gitmodules
CHANGELOG.md
CMakeLists.txt
Justfile
LICENSE
NOTICE
README.md
clone-submodules-no-privlibs.sh
docker-compose.yml
q7s-env-em.sh
q7s-env.sh
release_checklist.md
eive-obsw/mission/controller/acs/SensorValues.cpp
2023-02-23 13:37:12 +01:00

141 lines
3.1 KiB
C++

#include "SensorValues.h"
#include <fsfw/datapool/PoolReadGuard.h>
#include <fsfw/datapoollocal/LocalPoolVariable.h>
#include <fsfw/datapoollocal/LocalPoolVector.h>
#include <stddef.h>
#include <cmath>
namespace ACS {
SensorValues::SensorValues() {}
SensorValues::~SensorValues() {}
ReturnValue_t SensorValues::updateMgm() {
std::vector<ReturnValue_t> results;
{
PoolReadGuard pgMgm(&mgm0Lis3Set);
results.push_back(pgMgm.getReadResult());
}
{
PoolReadGuard pgMgm(&mgm1Rm3100Set);
results.push_back(pgMgm.getReadResult());
}
{
PoolReadGuard pgMgm(&mgm2Lis3Set);
results.push_back(pgMgm.getReadResult());
}
{
PoolReadGuard pgMgm(&mgm3Rm3100Set);
results.push_back(pgMgm.getReadResult());
}
{
PoolReadGuard pgMgm(&imtqMgmSet);
results.push_back(pgMgm.getReadResult());
}
for (const auto& result : results) {
if (result != returnvalue::OK) {
return result;
}
}
return returnvalue::OK;
}
ReturnValue_t SensorValues::updateSus() {
std::vector<ReturnValue_t> results;
for (auto& susSet : susSets) {
{
PoolReadGuard pgSus(&susSet);
results.push_back(pgSus.getReadResult());
}
}
for (const auto& result : results) {
if (result != returnvalue::OK) {
return result;
}
}
return returnvalue::OK;
}
ReturnValue_t SensorValues::updateGyr() {
std::vector<ReturnValue_t> results;
{
PoolReadGuard pgGyr(&gyr0AdisSet);
results.push_back(pgGyr.getReadResult());
}
{
PoolReadGuard pgGyr(&gyr1L3gSet);
results.push_back(pgGyr.getReadResult());
}
{
PoolReadGuard pgGyr(&gyr2AdisSet);
results.push_back(pgGyr.getReadResult());
}
{
PoolReadGuard pgGyr(&gyr3L3gSet);
results.push_back(pgGyr.getReadResult());
}
for (const auto& result : results) {
if (result != returnvalue::OK) {
return result;
}
}
return returnvalue::OK;
}
ReturnValue_t SensorValues::updateStr() {
PoolReadGuard pgStr(&strSet);
return pgStr.getReadResult();
}
ReturnValue_t SensorValues::updateGps() {
PoolReadGuard pgGps(&gpsSet);
return pgGps.getReadResult();
}
ReturnValue_t SensorValues::updateRw() {
std::vector<ReturnValue_t> results;
{
PoolReadGuard pgRw(&rw1Set);
results.push_back(pgRw.getReadResult());
}
{
PoolReadGuard pgRw(&rw2Set);
results.push_back(pgRw.getReadResult());
}
{
PoolReadGuard pgRw(&rw3Set);
results.push_back(pgRw.getReadResult());
}
{
PoolReadGuard pgRw(&rw4Set);
results.push_back(pgRw.getReadResult());
}
for (const auto& result : results) {
if (result != returnvalue::OK) {
return result;
}
}
return returnvalue::OK;
}
ReturnValue_t SensorValues::update() {
ReturnValue_t mgmUpdate = updateMgm();
ReturnValue_t susUpdate = updateSus();
ReturnValue_t gyrUpdate = updateGyr();
ReturnValue_t strUpdate = updateStr();
ReturnValue_t gpsUpdate = updateGps();
ReturnValue_t rwUpdate = updateRw();
if ((mgmUpdate && susUpdate && gyrUpdate && strUpdate && gpsUpdate && rwUpdate) ==
returnvalue::FAILED) {
return returnvalue::FAILED;
};
return returnvalue::OK;
}
} // namespace ACS