Merge pull request 'start replacing chained locks' (#372) from awesome_acs_branch into develop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #372 Reviewed-by: Marius Eggert <eggertm@irs.uni-stuttgart.de>
This commit is contained in:
commit
ee885b516f
@ -17,6 +17,10 @@ change warranting a new major release:
|
|||||||
|
|
||||||
# [unreleased]
|
# [unreleased]
|
||||||
|
|
||||||
|
## Changed
|
||||||
|
|
||||||
|
- Replaced chained locks for polling new sensor data to the `AcsController`
|
||||||
|
|
||||||
# [v1.26.1] 2023-02-08
|
# [v1.26.1] 2023-02-08
|
||||||
|
|
||||||
- Initialize parameter helper in ACS controller.
|
- Initialize parameter helper in ACS controller.
|
||||||
|
@ -107,8 +107,6 @@ void AcsController::performControlOperation() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void AcsController::performSafe() {
|
void AcsController::performSafe() {
|
||||||
ACS::SensorValues sensorValues;
|
|
||||||
|
|
||||||
timeval now;
|
timeval now;
|
||||||
Clock::getClock_timeval(&now);
|
Clock::getClock_timeval(&now);
|
||||||
|
|
||||||
@ -197,8 +195,6 @@ void AcsController::performSafe() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void AcsController::performDetumble() {
|
void AcsController::performDetumble() {
|
||||||
ACS::SensorValues sensorValues;
|
|
||||||
|
|
||||||
timeval now;
|
timeval now;
|
||||||
Clock::getClock_timeval(&now);
|
Clock::getClock_timeval(&now);
|
||||||
|
|
||||||
@ -258,8 +254,6 @@ void AcsController::performDetumble() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void AcsController::performPointingCtrl() {
|
void AcsController::performPointingCtrl() {
|
||||||
ACS::SensorValues sensorValues;
|
|
||||||
|
|
||||||
timeval now;
|
timeval now;
|
||||||
Clock::getClock_timeval(&now);
|
Clock::getClock_timeval(&now);
|
||||||
|
|
||||||
@ -721,14 +715,6 @@ void AcsController::copySusData() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ReturnValue_t AcsController::initialize() {
|
|
||||||
ReturnValue_t result = parameterHelper.initialize();
|
|
||||||
if (result != returnvalue::OK) {
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
return ExtendedControllerBase::initialize();
|
|
||||||
}
|
|
||||||
|
|
||||||
void AcsController::copyGyrData() {
|
void AcsController::copyGyrData() {
|
||||||
ACS::SensorValues sensorValues;
|
ACS::SensorValues sensorValues;
|
||||||
{
|
{
|
||||||
@ -776,3 +762,11 @@ void AcsController::copyGyrData() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ReturnValue_t AcsController::initialize() {
|
||||||
|
ReturnValue_t result = parameterHelper.initialize();
|
||||||
|
if (result != returnvalue::OK) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
return ExtendedControllerBase::initialize();
|
||||||
|
}
|
||||||
|
@ -69,8 +69,10 @@ class AcsController : public ExtendedControllerBase, public ReceivesParameterMes
|
|||||||
void modeChanged(Mode_t mode, Submode_t submode);
|
void modeChanged(Mode_t mode, Submode_t submode);
|
||||||
void announceMode(bool recursive);
|
void announceMode(bool recursive);
|
||||||
|
|
||||||
/* ACS Datasets */
|
/* ACS Sensor Values */
|
||||||
ACS::SensorValues sensorValues;
|
ACS::SensorValues sensorValues;
|
||||||
|
|
||||||
|
/* ACS Datasets */
|
||||||
IMTQ::DipoleActuationSet dipoleSet = IMTQ::DipoleActuationSet(objects::IMTQ_HANDLER);
|
IMTQ::DipoleActuationSet dipoleSet = IMTQ::DipoleActuationSet(objects::IMTQ_HANDLER);
|
||||||
// MGMs
|
// MGMs
|
||||||
acsctrl::MgmDataRaw mgmDataRaw;
|
acsctrl::MgmDataRaw mgmDataRaw;
|
||||||
|
@ -20,61 +20,112 @@ SensorValues::SensorValues() {}
|
|||||||
SensorValues::~SensorValues() {}
|
SensorValues::~SensorValues() {}
|
||||||
|
|
||||||
ReturnValue_t SensorValues::updateMgm() {
|
ReturnValue_t SensorValues::updateMgm() {
|
||||||
ReturnValue_t result;
|
std::vector<ReturnValue_t> results;
|
||||||
PoolReadGuard pgMgm0(&mgm0Lis3Set), pgMgm1(&mgm1Rm3100Set), pgMgm2(&mgm2Lis3Set),
|
|
||||||
pgMgm3(&mgm3Rm3100Set), pgImtq(&imtqMgmSet);
|
|
||||||
|
|
||||||
result = (pgMgm0.getReadResult() || pgMgm1.getReadResult() || pgMgm2.getReadResult() ||
|
{
|
||||||
pgMgm3.getReadResult() || pgImtq.getReadResult());
|
PoolReadGuard pgMgm(&mgm0Lis3Set);
|
||||||
return result;
|
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() {
|
ReturnValue_t SensorValues::updateSus() {
|
||||||
ReturnValue_t result;
|
std::vector<ReturnValue_t> results;
|
||||||
PoolReadGuard pgSus0(&susSets[0]), pgSus1(&susSets[1]), pgSus2(&susSets[2]), pgSus3(&susSets[3]),
|
for (auto& susSet : susSets) {
|
||||||
pgSus4(&susSets[4]), pgSus5(&susSets[5]), pgSus6(&susSets[6]), pgSus7(&susSets[7]),
|
{
|
||||||
pgSus8(&susSets[8]), pgSus9(&susSets[9]), pgSus10(&susSets[10]), pgSus11(&susSets[11]);
|
PoolReadGuard pgSus(&susSet);
|
||||||
|
results.push_back(pgSus.getReadResult());
|
||||||
result = (pgSus0.getReadResult() || pgSus1.getReadResult() || pgSus2.getReadResult() ||
|
}
|
||||||
pgSus3.getReadResult() || pgSus4.getReadResult() || pgSus5.getReadResult() ||
|
}
|
||||||
pgSus6.getReadResult() || pgSus7.getReadResult() || pgSus8.getReadResult() ||
|
for (const auto& result : results) {
|
||||||
pgSus9.getReadResult() || pgSus10.getReadResult() || pgSus11.getReadResult());
|
if (result != returnvalue::OK) {
|
||||||
return result;
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return returnvalue::OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
ReturnValue_t SensorValues::updateGyr() {
|
ReturnValue_t SensorValues::updateGyr() {
|
||||||
ReturnValue_t result;
|
std::vector<ReturnValue_t> results;
|
||||||
PoolReadGuard pgGyr0(&gyr0AdisSet), pgGyr1(&gyr1L3gSet), pgGyr2(&gyr2AdisSet),
|
{
|
||||||
pgGyr3(&gyr3L3gSet);
|
PoolReadGuard pgGyr(&gyr0AdisSet);
|
||||||
|
results.push_back(pgGyr.getReadResult());
|
||||||
result = (pgGyr0.getReadResult() || pgGyr1.getReadResult() || pgGyr2.getReadResult() ||
|
}
|
||||||
pgGyr3.getReadResult());
|
{
|
||||||
return result;
|
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() {
|
ReturnValue_t SensorValues::updateStr() {
|
||||||
ReturnValue_t result;
|
|
||||||
PoolReadGuard pgStr(&strSet);
|
PoolReadGuard pgStr(&strSet);
|
||||||
|
return pgStr.getReadResult();
|
||||||
result = pgStr.getReadResult();
|
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ReturnValue_t SensorValues::updateGps() {
|
ReturnValue_t SensorValues::updateGps() {
|
||||||
ReturnValue_t result;
|
|
||||||
PoolReadGuard pgGps(&gpsSet);
|
PoolReadGuard pgGps(&gpsSet);
|
||||||
|
return pgGps.getReadResult();
|
||||||
result = pgGps.getReadResult();
|
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ReturnValue_t SensorValues::updateRw() {
|
ReturnValue_t SensorValues::updateRw() {
|
||||||
ReturnValue_t result;
|
std::vector<ReturnValue_t> results;
|
||||||
PoolReadGuard pgRw1(&rw1Set), pgRw2(&rw2Set), pgRw3(&rw3Set), pgRw4(&rw4Set);
|
{
|
||||||
|
PoolReadGuard pgRw(&rw1Set);
|
||||||
result = (pgRw1.getReadResult() || pgRw2.getReadResult() || pgRw3.getReadResult() ||
|
results.push_back(pgRw.getReadResult());
|
||||||
pgRw4.getReadResult());
|
}
|
||||||
return result;
|
{
|
||||||
|
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 SensorValues::update() {
|
||||||
|
Loading…
Reference in New Issue
Block a user