Merge pull request 'Possible Bugfix: Use system clock in Countdown' (#426) from bugfix_countdown_uses_sysclock 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: #426
This commit is contained in:
commit
39bf9f9b5b
@ -28,6 +28,9 @@ will consitute of a breaking change warranting a new major release:
|
|||||||
- IMTQ: Sets were filled with wrong data, e.g. Raw MTM was filled with calibrated MTM measurements.
|
- IMTQ: Sets were filled with wrong data, e.g. Raw MTM was filled with calibrated MTM measurements.
|
||||||
- Set RM3100 dataset to valid.
|
- Set RM3100 dataset to valid.
|
||||||
- Fixed units in calculation of ACS control laws safe and detumble.
|
- Fixed units in calculation of ACS control laws safe and detumble.
|
||||||
|
- Bump FSFW for change in Countdown: Use system clock instead of reading uptime from file
|
||||||
|
to prevent possible race condition.
|
||||||
|
- GPS: No fix for 30 minutes considered a faulty now instead of 5 hours.
|
||||||
|
|
||||||
## Added
|
## Added
|
||||||
|
|
||||||
|
2
fsfw
2
fsfw
@ -1 +1 @@
|
|||||||
Subproject commit 245886c55500b9e70ba71eab68c46d44af9f6836
|
Subproject commit 6e17e45506b0d9834d3ae9ded6f044e13e3c4abd
|
@ -4,6 +4,7 @@
|
|||||||
#include <fsfw/globalfunctions/arrayprinter.h>
|
#include <fsfw/globalfunctions/arrayprinter.h>
|
||||||
#include <fsfw/tasks/SemaphoreFactory.h>
|
#include <fsfw/tasks/SemaphoreFactory.h>
|
||||||
#include <fsfw/tasks/TaskFactory.h>
|
#include <fsfw/tasks/TaskFactory.h>
|
||||||
|
#include <fsfw/timemanager/Stopwatch.h>
|
||||||
#include <fsfw_hal/devicehandlers/devicedefinitions/gyroL3gHelpers.h>
|
#include <fsfw_hal/devicehandlers/devicedefinitions/gyroL3gHelpers.h>
|
||||||
#include <fsfw_hal/devicehandlers/devicedefinitions/mgmLis3Helpers.h>
|
#include <fsfw_hal/devicehandlers/devicedefinitions/mgmLis3Helpers.h>
|
||||||
#include <fsfw_hal/linux/UnixFileGuard.h>
|
#include <fsfw_hal/linux/UnixFileGuard.h>
|
||||||
@ -31,15 +32,19 @@ ReturnValue_t AcsBoardPolling::performOperation(uint8_t operationCode) {
|
|||||||
semaphore->acquire();
|
semaphore->acquire();
|
||||||
// Give all tasks or the PST some time to submit all consecutive requests.
|
// Give all tasks or the PST some time to submit all consecutive requests.
|
||||||
TaskFactory::delayTask(2);
|
TaskFactory::delayTask(2);
|
||||||
gyroAdisHandler(gyro0Adis);
|
{
|
||||||
gyroAdisHandler(gyro2Adis);
|
// Measured to take 0-1 ms in debug build.
|
||||||
gyroL3gHandler(gyro1L3g);
|
// Stopwatch watch;
|
||||||
gyroL3gHandler(gyro3L3g);
|
gyroAdisHandler(gyro0Adis);
|
||||||
mgmRm3100Handler(mgm1Rm3100);
|
gyroAdisHandler(gyro2Adis);
|
||||||
mgmRm3100Handler(mgm3Rm3100);
|
gyroL3gHandler(gyro1L3g);
|
||||||
mgmLis3Handler(mgm0Lis3);
|
gyroL3gHandler(gyro3L3g);
|
||||||
mgmLis3Handler(mgm2Lis3);
|
mgmRm3100Handler(mgm1Rm3100);
|
||||||
// To prevent task being reactivated by tardy tasks
|
mgmRm3100Handler(mgm3Rm3100);
|
||||||
|
mgmLis3Handler(mgm0Lis3);
|
||||||
|
mgmLis3Handler(mgm2Lis3);
|
||||||
|
}
|
||||||
|
// To prevent task being not reactivated by tardy tasks
|
||||||
TaskFactory::delayTask(20);
|
TaskFactory::delayTask(20);
|
||||||
}
|
}
|
||||||
return returnvalue::OK;
|
return returnvalue::OK;
|
||||||
@ -110,7 +115,6 @@ ReturnValue_t AcsBoardPolling::sendMessage(CookieIF* cookie, const uint8_t* send
|
|||||||
if (req->mode == acs::SimpleSensorMode::NORMAL) {
|
if (req->mode == acs::SimpleSensorMode::NORMAL) {
|
||||||
adis.type = req->type;
|
adis.type = req->type;
|
||||||
adis.countdown.setTimeout(adis1650x::START_UP_TIME);
|
adis.countdown.setTimeout(adis1650x::START_UP_TIME);
|
||||||
adis.countdown.resetTimer();
|
|
||||||
if (adis.type == adis1650x::Type::ADIS16507) {
|
if (adis.type == adis1650x::Type::ADIS16507) {
|
||||||
adis.ownReply.data.accelScaling = adis1650x::ACCELEROMETER_RANGE_16507;
|
adis.ownReply.data.accelScaling = adis1650x::ACCELEROMETER_RANGE_16507;
|
||||||
} else if (adis.type == adis1650x::Type::ADIS16505) {
|
} else if (adis.type == adis1650x::Type::ADIS16505) {
|
||||||
|
@ -19,9 +19,7 @@
|
|||||||
|
|
||||||
GpsHyperionLinuxController::GpsHyperionLinuxController(object_id_t objectId, object_id_t parentId,
|
GpsHyperionLinuxController::GpsHyperionLinuxController(object_id_t objectId, object_id_t parentId,
|
||||||
bool debugHyperionGps)
|
bool debugHyperionGps)
|
||||||
: ExtendedControllerBase(objectId), gpsSet(this), debugHyperionGps(debugHyperionGps) {
|
: ExtendedControllerBase(objectId), gpsSet(this), debugHyperionGps(debugHyperionGps) {}
|
||||||
timeUpdateCd.resetTimer();
|
|
||||||
}
|
|
||||||
|
|
||||||
GpsHyperionLinuxController::~GpsHyperionLinuxController() {
|
GpsHyperionLinuxController::~GpsHyperionLinuxController() {
|
||||||
gps_stream(&gps, WATCH_DISABLE, nullptr);
|
gps_stream(&gps, WATCH_DISABLE, nullptr);
|
||||||
@ -196,8 +194,8 @@ ReturnValue_t GpsHyperionLinuxController::handleGpsReadData() {
|
|||||||
if (mode != MODE_OFF) {
|
if (mode != MODE_OFF) {
|
||||||
if (maxTimeToReachFix.hasTimedOut() and oneShotSwitches.cantGetFixSwitch) {
|
if (maxTimeToReachFix.hasTimedOut() and oneShotSwitches.cantGetFixSwitch) {
|
||||||
sif::warning << "GpsHyperionLinuxController: No mode could be set in allowed "
|
sif::warning << "GpsHyperionLinuxController: No mode could be set in allowed "
|
||||||
<< maxTimeToReachFix.timeout / 1000 << " seconds" << std::endl;
|
<< maxTimeToReachFix.getTimeoutMs() / 1000 << " seconds" << std::endl;
|
||||||
triggerEvent(GpsHyperion::CANT_GET_FIX, maxTimeToReachFix.timeout);
|
triggerEvent(GpsHyperion::CANT_GET_FIX, maxTimeToReachFix.getTimeoutMs());
|
||||||
oneShotSwitches.cantGetFixSwitch = false;
|
oneShotSwitches.cantGetFixSwitch = false;
|
||||||
}
|
}
|
||||||
modeIsSet = false;
|
modeIsSet = false;
|
||||||
|
@ -23,7 +23,8 @@
|
|||||||
*/
|
*/
|
||||||
class GpsHyperionLinuxController : public ExtendedControllerBase {
|
class GpsHyperionLinuxController : public ExtendedControllerBase {
|
||||||
public:
|
public:
|
||||||
static constexpr uint32_t MAX_SECONDS_TO_REACH_FIX = 60 * 60 * 5;
|
// 30 minutes
|
||||||
|
static constexpr uint32_t MAX_SECONDS_TO_REACH_FIX = 60 * 30;
|
||||||
|
|
||||||
enum ReadModes { SHM = 0, SOCKET = 1 };
|
enum ReadModes { SHM = 0, SOCKET = 1 };
|
||||||
|
|
||||||
@ -79,7 +80,6 @@ class GpsHyperionLinuxController : public ExtendedControllerBase {
|
|||||||
|
|
||||||
bool debugHyperionGps = false;
|
bool debugHyperionGps = false;
|
||||||
int32_t noModeSetCntr = 0;
|
int32_t noModeSetCntr = 0;
|
||||||
Countdown timeUpdateCd = Countdown(60);
|
|
||||||
|
|
||||||
// Returns true if the function should be called again or false if other
|
// Returns true if the function should be called again or false if other
|
||||||
// controller handling can be done.
|
// controller handling can be done.
|
||||||
|
@ -234,7 +234,6 @@ ReturnValue_t Max31865RtdPolling::sendMessage(CookieIF* cookie, const uint8_t* s
|
|||||||
case (EiveMax31855::RtdCommands::ON): {
|
case (EiveMax31855::RtdCommands::ON): {
|
||||||
if (not rtdCookie->on) {
|
if (not rtdCookie->on) {
|
||||||
rtdCookie->cd.setTimeout(MAX31865::WARMUP_MS);
|
rtdCookie->cd.setTimeout(MAX31865::WARMUP_MS);
|
||||||
rtdCookie->cd.resetTimer();
|
|
||||||
rtdCookie->on = true;
|
rtdCookie->on = true;
|
||||||
rtdCookie->db.active = false;
|
rtdCookie->db.active = false;
|
||||||
rtdCookie->db.configured = false;
|
rtdCookie->db.configured = false;
|
||||||
@ -247,7 +246,6 @@ ReturnValue_t Max31865RtdPolling::sendMessage(CookieIF* cookie, const uint8_t* s
|
|||||||
case (EiveMax31855::RtdCommands::ACTIVE): {
|
case (EiveMax31855::RtdCommands::ACTIVE): {
|
||||||
if (not rtdCookie->on) {
|
if (not rtdCookie->on) {
|
||||||
rtdCookie->cd.setTimeout(MAX31865::WARMUP_MS);
|
rtdCookie->cd.setTimeout(MAX31865::WARMUP_MS);
|
||||||
rtdCookie->cd.resetTimer();
|
|
||||||
rtdCookie->on = true;
|
rtdCookie->on = true;
|
||||||
rtdCookie->db.active = true;
|
rtdCookie->db.active = true;
|
||||||
rtdCookie->db.configured = false;
|
rtdCookie->db.configured = false;
|
||||||
|
@ -220,7 +220,7 @@ ReturnValue_t RwPollingTask::readNextReply(RwCookie& rwCookie, uint8_t* replyBuf
|
|||||||
}
|
}
|
||||||
pullCsLow(gpioId, gpioIF);
|
pullCsLow(gpioId, gpioIF);
|
||||||
bool lastByteWasFrameMarker = false;
|
bool lastByteWasFrameMarker = false;
|
||||||
Countdown cd(3000);
|
Countdown cd(2000);
|
||||||
size_t readIdx = 0;
|
size_t readIdx = 0;
|
||||||
|
|
||||||
while (true) {
|
while (true) {
|
||||||
|
2
tmtc
2
tmtc
@ -1 +1 @@
|
|||||||
Subproject commit 74e6d6fe5f10121e8444662a79fa10fada3d978c
|
Subproject commit 783d5a8ed56a9683fc75d2aaffcabe82af34ffa9
|
Loading…
Reference in New Issue
Block a user