Merge remote-tracking branch 'origin/develop' into mueller/master
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
This commit is contained in:
@ -1,3 +1,4 @@
|
||||
add_subdirectory(controller)
|
||||
add_subdirectory(core)
|
||||
add_subdirectory(devices)
|
||||
add_subdirectory(utility)
|
||||
|
3
mission/controller/CMakeLists.txt
Normal file
3
mission/controller/CMakeLists.txt
Normal file
@ -0,0 +1,3 @@
|
||||
target_sources(${LIB_EIVE_MISSION} PRIVATE
|
||||
ThermalController.cpp
|
||||
)
|
@ -1,42 +1,48 @@
|
||||
#include "ThermalController.h"
|
||||
|
||||
#include <mission/devices/devicedefinitions/ThermalSensorPacket.h>
|
||||
ThermalController::ThermalController(object_id_t objectId, object_id_t parentId)
|
||||
: ExtendedControllerBase(objectId, parentId),
|
||||
sensorTemperatures(this),
|
||||
componentTemperatures(this) {}
|
||||
|
||||
ThermalController::ThermalController(object_id_t objectId)
|
||||
: ExtendedControllerBase(objectId, objects::NO_OBJECT), thermalControllerSet(objectId) {}
|
||||
ReturnValue_t ThermalController::initialize() { return ControllerBase::initialize(); }
|
||||
|
||||
ReturnValue_t ThermalController::handleCommandMessage(CommandMessage *message) {
|
||||
return HasReturnvaluesIF::RETURN_OK;
|
||||
ReturnValue_t ThermalController::handleCommandMessage(CommandMessage* message) {
|
||||
return RETURN_FAILED;
|
||||
}
|
||||
void ThermalController::performControlOperation() {
|
||||
ReturnValue_t result = sensorTemperatures.read();
|
||||
if (result != RETURN_OK) {
|
||||
return;
|
||||
}
|
||||
result = componentTemperatures.read();
|
||||
if (result != RETURN_OK) {
|
||||
return;
|
||||
}
|
||||
|
||||
componentTemperatures.rw = (sensorTemperatures.rw.value + sensorTemperatures.gps.value) / 2;
|
||||
|
||||
sensorTemperatures.commit();
|
||||
componentTemperatures.commit();
|
||||
}
|
||||
|
||||
void ThermalController::performControlOperation() {}
|
||||
ReturnValue_t ThermalController::initializeLocalDataPool(localpool::DataPool& localDataPoolMap,
|
||||
LocalDataPoolManager& poolManager) {
|
||||
localDataPoolMap.emplace(thermalControllerDefinitions::SENSOR_RW, new PoolEntry<float>({0.0}));
|
||||
localDataPoolMap.emplace(thermalControllerDefinitions::SENSOR_GPS, new PoolEntry<float>({0.0}));
|
||||
localDataPoolMap.emplace(thermalControllerDefinitions::COMPONENT_RW, new PoolEntry<float>({0.0}));
|
||||
|
||||
void ThermalController::handleChangedDataset(sid_t sid, store_address_t storeId) {
|
||||
if (sid == sid_t(TSensorDefinitions::ObjIds::TEST_HKB_HANDLER,
|
||||
TSensorDefinitions::THERMAL_SENSOR_SET_ID)) {
|
||||
sif::info << "Update registered!" << std::endl;
|
||||
}
|
||||
}
|
||||
|
||||
ReturnValue_t ThermalController::initializeAfterTaskCreation() {
|
||||
ReturnValue_t result = ExtendedControllerBase::initializeAfterTaskCreation();
|
||||
if (result != HasReturnvaluesIF::RETURN_OK) {
|
||||
sif::error << "ThermalController::initializeAfterTaskCreation: Base"
|
||||
<< " class initialization failed!" << std::endl;
|
||||
}
|
||||
HasLocalDataPoolIF *testHkbHandler = ObjectManager::instance()->get<HasLocalDataPoolIF>(
|
||||
TSensorDefinitions::ObjIds::TEST_HKB_HANDLER);
|
||||
if (testHkbHandler == nullptr) {
|
||||
sif::warning << "ThermalController::initializeAfterTaskCreation: Test"
|
||||
<< " HKB Handler invalid!" << std::endl;
|
||||
}
|
||||
// Test normal notifications without data packet first.
|
||||
testHkbHandler->getHkManagerHandle()->subscribeForSetUpdateMessages(
|
||||
TSensorDefinitions::THERMAL_SENSOR_SET_ID, this->getObjectId(), commandQueue->getId(), false);
|
||||
return result;
|
||||
return RETURN_OK;
|
||||
}
|
||||
LocalPoolDataSetBase* ThermalController::getDataSetHandle(sid_t sid) { return nullptr; }
|
||||
|
||||
ReturnValue_t ThermalController::checkModeCommand(Mode_t mode, Submode_t submode,
|
||||
uint32_t *msToReachTheMode) {
|
||||
return HasReturnvaluesIF::RETURN_OK;
|
||||
}
|
||||
uint32_t* msToReachTheMode) {
|
||||
if (submode != SUBMODE_NONE) {
|
||||
return INVALID_SUBMODE;
|
||||
}
|
||||
if ((mode != MODE_OFF) && (mode != MODE_ON) && (mode != MODE_NORMAL)) {
|
||||
return INVALID_MODE;
|
||||
}
|
||||
return RETURN_OK;
|
||||
}
|
@ -2,30 +2,28 @@
|
||||
#define MISSION_CONTROLLER_THERMALCONTROLLER_H_
|
||||
|
||||
#include <fsfw/controller/ExtendedControllerBase.h>
|
||||
|
||||
#include "ctrldefinitions/ThermalCtrlPackets.h"
|
||||
#include <mission/controller/controllerdefinitions/ThermalControllerDefinitions.h>
|
||||
|
||||
class ThermalController : public ExtendedControllerBase {
|
||||
public:
|
||||
ThermalController(object_id_t objectId);
|
||||
ThermalController(object_id_t objectId, object_id_t parentId);
|
||||
|
||||
ReturnValue_t initialize() override;
|
||||
|
||||
protected:
|
||||
virtual ReturnValue_t handleCommandMessage(CommandMessage* message) override;
|
||||
virtual void performControlOperation() override;
|
||||
virtual ReturnValue_t initializeLocalDataPool(localpool::DataPool& localDataPoolMap,
|
||||
LocalDataPoolManager& poolManager) override;
|
||||
virtual LocalPoolDataSetBase* getDataSetHandle(sid_t sid) override;
|
||||
|
||||
// Mode abstract functions
|
||||
virtual ReturnValue_t checkModeCommand(Mode_t mode, Submode_t submode,
|
||||
uint32_t* msToReachTheMode) override;
|
||||
|
||||
private:
|
||||
// TODO: Add stubs for thermal components. Each device / assembly with one
|
||||
// or multiple redundant sensors will have a thermal component.
|
||||
|
||||
/** ExtendedControllerBase overrides */
|
||||
virtual ReturnValue_t handleCommandMessage(CommandMessage *message) override;
|
||||
|
||||
virtual void performControlOperation() override;
|
||||
|
||||
virtual ReturnValue_t checkModeCommand(Mode_t mode, Submode_t submode,
|
||||
uint32_t *msToReachTheMode) override;
|
||||
|
||||
ReturnValue_t initializeAfterTaskCreation() override;
|
||||
|
||||
void handleChangedDataset(sid_t sid, store_address_t storeId) override;
|
||||
|
||||
ThermalCtrl::ThermalControllerTemperatureSet thermalControllerSet;
|
||||
thermalControllerDefinitions::SensorTemperatures sensorTemperatures;
|
||||
thermalControllerDefinitions::ComponentTemperatures componentTemperatures;
|
||||
};
|
||||
|
||||
#endif /* MISSION_CONTROLLER_THERMALCONTROLLER_H_ */
|
||||
|
@ -0,0 +1,43 @@
|
||||
#ifndef MISSION_CONTROLLER_CONTROLLERDEFINITIONS_THERMALCONTROLLERDEFINITIONS_H_
|
||||
#define MISSION_CONTROLLER_CONTROLLERDEFINITIONS_THERMALCONTROLLERDEFINITIONS_H_
|
||||
|
||||
#include <fsfw/datapoollocal/LocalPoolVariable.h>
|
||||
#include <fsfw/datapoollocal/StaticLocalDataSet.h>
|
||||
|
||||
namespace thermalControllerDefinitions {
|
||||
|
||||
enum SetIds : uint32_t { SENSOR_TEMPERATURES, COMPONENT_TEMPERATURES };
|
||||
|
||||
enum PoolIds : lp_id_t { SENSOR_RW, SENSOR_GPS, COMPONENT_RW };
|
||||
|
||||
/**
|
||||
* @brief This dataset can be used to store the collected temperatures of all temperature sensors
|
||||
*/
|
||||
class SensorTemperatures : public StaticLocalDataSet<2> {
|
||||
public:
|
||||
SensorTemperatures(HasLocalDataPoolIF* owner) : StaticLocalDataSet(owner, SENSOR_TEMPERATURES) {}
|
||||
|
||||
SensorTemperatures(object_id_t objectId)
|
||||
: StaticLocalDataSet(sid_t(objectId, SENSOR_TEMPERATURES)) {}
|
||||
|
||||
lp_var_t<float> rw = lp_var_t<float>(sid.objectId, PoolIds::SENSOR_RW, this);
|
||||
lp_var_t<float> gps = lp_var_t<float>(sid.objectId, PoolIds::SENSOR_GPS, this);
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief This dataset can be used to store the collected temperatures of all components
|
||||
*/
|
||||
class ComponentTemperatures : public StaticLocalDataSet<2> {
|
||||
public:
|
||||
ComponentTemperatures(HasLocalDataPoolIF* owner)
|
||||
: StaticLocalDataSet(owner, SENSOR_TEMPERATURES) {}
|
||||
|
||||
ComponentTemperatures(object_id_t objectId)
|
||||
: StaticLocalDataSet(sid_t(objectId, SENSOR_TEMPERATURES)) {}
|
||||
|
||||
lp_var_t<float> rw = lp_var_t<float>(sid.objectId, PoolIds::COMPONENT_RW, this);
|
||||
};
|
||||
|
||||
} // namespace thermalControllerDefinitions
|
||||
|
||||
#endif /* MISSION_CONTROLLER_CONTROLLERDEFINITIONS_THERMALCONTROLLERDEFINITIONS_H_ */
|
@ -3,8 +3,8 @@
|
||||
|
||||
#include <fsfw/devicehandlers/DeviceHandlerBase.h>
|
||||
#include <mission/devices/devicedefinitions/RadSensorDefinitions.h>
|
||||
#include <fsfw_hal/common/gpio/GpioIF.h>
|
||||
|
||||
class GpioIF;
|
||||
|
||||
/**
|
||||
* @brief This is the device handler class for radiation sensor on the OBC IF Board. The
|
||||
|
Reference in New Issue
Block a user