EM build working now
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
This commit is contained in:
parent
0fdc79df5e
commit
2153294e6f
@ -31,7 +31,7 @@
|
|||||||
xsc::Chip CoreController::CURRENT_CHIP = xsc::Chip::NO_CHIP;
|
xsc::Chip CoreController::CURRENT_CHIP = xsc::Chip::NO_CHIP;
|
||||||
xsc::Copy CoreController::CURRENT_COPY = xsc::Copy::NO_COPY;
|
xsc::Copy CoreController::CURRENT_COPY = xsc::Copy::NO_COPY;
|
||||||
|
|
||||||
CoreController::CoreController(object_id_t objectId, const std::atomic_uint16_t& i2cErrors)
|
CoreController::CoreController(object_id_t objectId, const std::atomic_uint16_t &i2cErrors)
|
||||||
: ExtendedControllerBase(objectId, 5),
|
: ExtendedControllerBase(objectId, 5),
|
||||||
cmdExecutor(4096),
|
cmdExecutor(4096),
|
||||||
cmdReplyBuf(4096, true),
|
cmdReplyBuf(4096, true),
|
||||||
@ -108,7 +108,7 @@ void CoreController::performControlOperation() {
|
|||||||
sdStateMachine();
|
sdStateMachine();
|
||||||
performMountedSdCardOperations();
|
performMountedSdCardOperations();
|
||||||
readHkData();
|
readHkData();
|
||||||
if(i2cErrors >= 5) {
|
if (i2cErrors >= 5) {
|
||||||
bool protOpPerformed = false;
|
bool protOpPerformed = false;
|
||||||
triggerEvent(I2C_UNAVAILABLE_REBOOT);
|
triggerEvent(I2C_UNAVAILABLE_REBOOT);
|
||||||
gracefulShutdownTasks(CURRENT_CHIP, CURRENT_COPY, protOpPerformed);
|
gracefulShutdownTasks(CURRENT_CHIP, CURRENT_COPY, protOpPerformed);
|
||||||
|
@ -6,6 +6,7 @@
|
|||||||
#include <fsfw/globalfunctions/PeriodicOperationDivider.h>
|
#include <fsfw/globalfunctions/PeriodicOperationDivider.h>
|
||||||
#include <libxiphos.h>
|
#include <libxiphos.h>
|
||||||
|
|
||||||
|
#include <atomic>
|
||||||
#include <cstddef>
|
#include <cstddef>
|
||||||
|
|
||||||
#include "CoreDefinitions.h"
|
#include "CoreDefinitions.h"
|
||||||
@ -15,7 +16,6 @@
|
|||||||
#include "fsfw/controller/ExtendedControllerBase.h"
|
#include "fsfw/controller/ExtendedControllerBase.h"
|
||||||
#include "mission/devices/devicedefinitions/GPSDefinitions.h"
|
#include "mission/devices/devicedefinitions/GPSDefinitions.h"
|
||||||
#include "mission/trace.h"
|
#include "mission/trace.h"
|
||||||
#include <atomic>
|
|
||||||
|
|
||||||
class Timer;
|
class Timer;
|
||||||
class SdCardManager;
|
class SdCardManager;
|
||||||
@ -132,7 +132,8 @@ class CoreController : public ExtendedControllerBase {
|
|||||||
//! P1: First 16 bits boot count of image 0 0, last 16 bits boot count of image 0 1.
|
//! P1: First 16 bits boot count of image 0 0, last 16 bits boot count of image 0 1.
|
||||||
//! P2: First 16 bits boot count of image 1 0, last 16 bits boot count of image 1 1.
|
//! P2: First 16 bits boot count of image 1 0, last 16 bits boot count of image 1 1.
|
||||||
static constexpr Event INDIVIDUAL_BOOT_COUNTS = event::makeEvent(SUBSYSTEM_ID, 8, severity::INFO);
|
static constexpr Event INDIVIDUAL_BOOT_COUNTS = event::makeEvent(SUBSYSTEM_ID, 8, severity::INFO);
|
||||||
static constexpr Event I2C_UNAVAILABLE_REBOOT = event::makeEvent(SUBSYSTEM_ID, 10, severity::MEDIUM);
|
static constexpr Event I2C_UNAVAILABLE_REBOOT =
|
||||||
|
event::makeEvent(SUBSYSTEM_ID, 10, severity::MEDIUM);
|
||||||
|
|
||||||
CoreController(object_id_t objectId, const std::atomic_uint16_t& i2cErrors);
|
CoreController(object_id_t objectId, const std::atomic_uint16_t& i2cErrors);
|
||||||
virtual ~CoreController();
|
virtual ~CoreController();
|
||||||
|
@ -11,8 +11,8 @@
|
|||||||
#include <mission/tmtc/PersistentLogTmStoreTask.h>
|
#include <mission/tmtc/PersistentLogTmStoreTask.h>
|
||||||
#include <mission/tmtc/PusTmFunnel.h>
|
#include <mission/tmtc/PusTmFunnel.h>
|
||||||
|
|
||||||
#include <string>
|
|
||||||
#include <atomic>
|
#include <atomic>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
class LinuxLibgpioIF;
|
class LinuxLibgpioIF;
|
||||||
class SerialComIF;
|
class SerialComIF;
|
||||||
|
@ -66,7 +66,7 @@ void ObjectFactory::produce(void* args) {
|
|||||||
|
|
||||||
dummy::createDummies(dummyCfg, *pwrSwitcher, gpioComIF);
|
dummy::createDummies(dummyCfg, *pwrSwitcher, gpioComIF);
|
||||||
|
|
||||||
new CoreController(objects::CORE_CONTROLLER);
|
new CoreController(objects::CORE_CONTROLLER, I2C_FATAL_ERRORS);
|
||||||
|
|
||||||
// Regular FM code, does not work for EM if the hardware is not connected
|
// Regular FM code, does not work for EM if the hardware is not connected
|
||||||
// createPcduComponents(gpioComIF, &pwrSwitcher);
|
// createPcduComponents(gpioComIF, &pwrSwitcher);
|
||||||
|
@ -303,7 +303,7 @@ ReturnValue_t GpsHyperionLinuxController::handleGpsReadData() {
|
|||||||
bool timeValid = false;
|
bool timeValid = false;
|
||||||
if (TIME_SET == (TIME_SET & gps.set)) {
|
if (TIME_SET == (TIME_SET & gps.set)) {
|
||||||
// To prevent totally incorrect times from being declared valid.
|
// To prevent totally incorrect times from being declared valid.
|
||||||
if(gpsSet.satInView.isValid() and gpsSet.satInView.value >= 1) {
|
if (gpsSet.satInView.isValid() and gpsSet.satInView.value >= 1) {
|
||||||
timeValid = true;
|
timeValid = true;
|
||||||
}
|
}
|
||||||
timeval time = {};
|
timeval time = {};
|
||||||
|
@ -10,9 +10,8 @@
|
|||||||
|
|
||||||
#include "fsfw/FSFW.h"
|
#include "fsfw/FSFW.h"
|
||||||
|
|
||||||
ImtqPollingTask::ImtqPollingTask(object_id_t imtqPollingTask,
|
ImtqPollingTask::ImtqPollingTask(object_id_t imtqPollingTask, std::atomic_uint16_t& i2cFatalErrors)
|
||||||
std::atomic_uint16_t& i2cFatalErrors): SystemObject(imtqPollingTask),
|
: SystemObject(imtqPollingTask), i2cFatalErrors(i2cFatalErrors) {
|
||||||
i2cFatalErrors(i2cFatalErrors) {
|
|
||||||
semaphore = SemaphoreFactory::instance()->createBinarySemaphore();
|
semaphore = SemaphoreFactory::instance()->createBinarySemaphore();
|
||||||
semaphore->acquire();
|
semaphore->acquire();
|
||||||
ipcLock = MutexFactory::instance()->createMutex();
|
ipcLock = MutexFactory::instance()->createMutex();
|
||||||
@ -429,7 +428,7 @@ ReturnValue_t ImtqPollingTask::performI2cFullRequest(uint8_t* reply, size_t repl
|
|||||||
if (ioctl(fd, I2C_SLAVE, i2cAddr) < 0) {
|
if (ioctl(fd, I2C_SLAVE, i2cAddr) < 0) {
|
||||||
sif::warning << "Opening IMTQ slave device failed with code " << errno << ": "
|
sif::warning << "Opening IMTQ slave device failed with code " << errno << ": "
|
||||||
<< strerror(errno) << std::endl;
|
<< strerror(errno) << std::endl;
|
||||||
if(errno == EBUSY) {
|
if (errno == EBUSY) {
|
||||||
i2cFatalErrors++;
|
i2cFatalErrors++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -440,7 +439,7 @@ ReturnValue_t ImtqPollingTask::performI2cFullRequest(uint8_t* reply, size_t repl
|
|||||||
<< ". Error description: " << strerror(errno) << std::endl;
|
<< ". Error description: " << strerror(errno) << std::endl;
|
||||||
// This is a weird issue which sometimes occurs on debug builds. All I2C buses are busy
|
// This is a weird issue which sometimes occurs on debug builds. All I2C buses are busy
|
||||||
// for all writes,
|
// for all writes,
|
||||||
if(errno == EBUSY) {
|
if (errno == EBUSY) {
|
||||||
i2cFatalErrors++;
|
i2cFatalErrors++;
|
||||||
}
|
}
|
||||||
return returnvalue::FAILED;
|
return returnvalue::FAILED;
|
||||||
|
@ -4,11 +4,12 @@
|
|||||||
#include <fsfw/tasks/SemaphoreIF.h>
|
#include <fsfw/tasks/SemaphoreIF.h>
|
||||||
#include <fsfw_hal/linux/i2c/I2cCookie.h>
|
#include <fsfw_hal/linux/i2c/I2cCookie.h>
|
||||||
|
|
||||||
|
#include <atomic>
|
||||||
|
|
||||||
#include "fsfw/devicehandlers/DeviceCommunicationIF.h"
|
#include "fsfw/devicehandlers/DeviceCommunicationIF.h"
|
||||||
#include "fsfw/objectmanager/SystemObject.h"
|
#include "fsfw/objectmanager/SystemObject.h"
|
||||||
#include "fsfw/tasks/ExecutableObjectIF.h"
|
#include "fsfw/tasks/ExecutableObjectIF.h"
|
||||||
#include "mission/devices/devicedefinitions/imtqHelpers.h"
|
#include "mission/devices/devicedefinitions/imtqHelpers.h"
|
||||||
#include <atomic>
|
|
||||||
|
|
||||||
class ImtqPollingTask : public SystemObject,
|
class ImtqPollingTask : public SystemObject,
|
||||||
public ExecutableObjectIF,
|
public ExecutableObjectIF,
|
||||||
|
@ -102,9 +102,7 @@ void EiveSystem::handleEventMessages() {
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
sif::debug << "AcsSubsystem::performChildOperation: Did not subscribe "
|
sif::debug << "EiveSystem: Did not subscribe to event " << event.getEvent() << std::endl;
|
||||||
"to this event message"
|
|
||||||
<< std::endl;
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user