Merge branch 'develop' into eggert/rw-cmd-acs-ctrl
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:
commit
fc5196f8da
19
CHANGELOG.md
19
CHANGELOG.md
@ -25,9 +25,26 @@ change warranting a new major release:
|
|||||||
|
|
||||||
## Changed
|
## Changed
|
||||||
|
|
||||||
|
- ActCmds now returns command vectors as integers as required by the actuators
|
||||||
|
|
||||||
|
# [v1.26.3] 2023-02-09
|
||||||
|
|
||||||
|
eive-tmtc: v2.12.2
|
||||||
|
|
||||||
|
## Added
|
||||||
|
|
||||||
|
- First version of a TCS controller heater control loop, but
|
||||||
|
the loop is disabled for now.
|
||||||
|
|
||||||
|
## Changed
|
||||||
|
|
||||||
- Reworked dummy handling for the TCS controller.
|
- Reworked dummy handling for the TCS controller.
|
||||||
- Generator scripts now generate files for hosted and for Q7S build.
|
- Generator scripts now generate files for hosted and for Q7S build.
|
||||||
- ActCmds now returns command vectors as integers as required by the actuators
|
|
||||||
|
## Fixed
|
||||||
|
|
||||||
|
- GPS Controller: Set fix value to 0 when switching off to allow
|
||||||
|
`GPS_FIX_CHANGE` to work when switching the GPS back on.
|
||||||
|
|
||||||
# [v1.26.2] 2023-02-08
|
# [v1.26.2] 2023-02-08
|
||||||
|
|
||||||
|
@ -11,7 +11,7 @@ cmake_minimum_required(VERSION 3.13)
|
|||||||
|
|
||||||
set(OBSW_VERSION_MAJOR 1)
|
set(OBSW_VERSION_MAJOR 1)
|
||||||
set(OBSW_VERSION_MINOR 26)
|
set(OBSW_VERSION_MINOR 26)
|
||||||
set(OBSW_VERSION_REVISION 2)
|
set(OBSW_VERSION_REVISION 3)
|
||||||
|
|
||||||
# set(CMAKE_VERBOSE TRUE)
|
# set(CMAKE_VERBOSE TRUE)
|
||||||
|
|
||||||
|
@ -9,7 +9,6 @@
|
|||||||
#include <objects/systemObjectList.h>
|
#include <objects/systemObjectList.h>
|
||||||
|
|
||||||
#include "OBSWConfig.h"
|
#include "OBSWConfig.h"
|
||||||
#include "devConf.h"
|
|
||||||
#include "fsfw/platform.h"
|
#include "fsfw/platform.h"
|
||||||
#include "fsfw_tests/integration/task/TestTask.h"
|
#include "fsfw_tests/integration/task/TestTask.h"
|
||||||
|
|
||||||
@ -22,30 +21,13 @@
|
|||||||
#include "fsfw/osal/common/TcpTmTcServer.h"
|
#include "fsfw/osal/common/TcpTmTcServer.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <fsfw/tmtcpacket/pus/tm.h>
|
|
||||||
|
|
||||||
#if OBSW_ADD_TEST_CODE == 1
|
#if OBSW_ADD_TEST_CODE == 1
|
||||||
#include <test/testtasks/TestTask.h>
|
#include <test/testtasks/TestTask.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <dummies/AcuDummy.h>
|
#include <dummies/AcuDummy.h>
|
||||||
#include <dummies/BpxDummy.h>
|
|
||||||
#include <dummies/ComCookieDummy.h>
|
|
||||||
#include <dummies/ComIFDummy.h>
|
|
||||||
#include <dummies/CoreControllerDummy.h>
|
#include <dummies/CoreControllerDummy.h>
|
||||||
#include <dummies/GyroAdisDummy.h>
|
|
||||||
#include <dummies/GyroL3GD20Dummy.h>
|
|
||||||
#include <dummies/ImtqDummy.h>
|
|
||||||
#include <dummies/MgmLIS3MDLDummy.h>
|
|
||||||
#include <dummies/P60DockDummy.h>
|
|
||||||
#include <dummies/PduDummy.h>
|
|
||||||
#include <dummies/PlPcduDummy.h>
|
|
||||||
#include <dummies/RwDummy.h>
|
|
||||||
#include <dummies/StarTrackerDummy.h>
|
|
||||||
#include <dummies/SusDummy.h>
|
|
||||||
#include <dummies/SyrlinksDummy.h>
|
|
||||||
|
|
||||||
#include "../dummies/TemperatureSensorInserter.h"
|
|
||||||
#include "dummies/helpers.h"
|
#include "dummies/helpers.h"
|
||||||
#include "mission/utility/GlobalConfigHandler.h"
|
#include "mission/utility/GlobalConfigHandler.h"
|
||||||
|
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
namespace CLASS_ID {
|
namespace CLASS_ID {
|
||||||
enum {
|
enum {
|
||||||
CLASS_ID_START = COMMON_CLASS_ID_END,
|
CLASS_ID_START = COMMON_CLASS_ID_END,
|
||||||
CLASS_ID_END // [EXPORT] : [END]
|
CLASS_ID_END // [EXPORT] : [END]
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -926,7 +926,7 @@ void ObjectFactory::createImtqComponents(PowerSwitchIF* pwrSwitcher) {
|
|||||||
I2cCookie* imtqI2cCookie = new I2cCookie(addresses::IMTQ, IMTQ::MAX_REPLY_SIZE, q7s::I2C_PL_EIVE);
|
I2cCookie* imtqI2cCookie = new I2cCookie(addresses::IMTQ, IMTQ::MAX_REPLY_SIZE, q7s::I2C_PL_EIVE);
|
||||||
auto imtqHandler = new ImtqHandler(objects::IMTQ_HANDLER, objects::I2C_COM_IF, imtqI2cCookie,
|
auto imtqHandler = new ImtqHandler(objects::IMTQ_HANDLER, objects::I2C_COM_IF, imtqI2cCookie,
|
||||||
pcdu::Switches::PDU1_CH3_MGT_5V);
|
pcdu::Switches::PDU1_CH3_MGT_5V);
|
||||||
imtqHandler->setThermalStateRequestPoolIds();
|
imtqHandler->setUpThermalModule(ThermalStateCfg());
|
||||||
imtqHandler->setPowerSwitcher(pwrSwitcher);
|
imtqHandler->setPowerSwitcher(pwrSwitcher);
|
||||||
imtqHandler->connectModeTreeParent(satsystem::acs::ACS_SUBSYSTEM);
|
imtqHandler->connectModeTreeParent(satsystem::acs::ACS_SUBSYSTEM);
|
||||||
static_cast<void>(imtqHandler);
|
static_cast<void>(imtqHandler);
|
||||||
|
@ -112,6 +112,8 @@ void ObjectFactory::produce(void* args) {
|
|||||||
pcdu::Switches::PDU1_CH5_SOLAR_CELL_EXP_5V);
|
pcdu::Switches::PDU1_CH5_SOLAR_CELL_EXP_5V);
|
||||||
#endif
|
#endif
|
||||||
createAcsController(true);
|
createAcsController(true);
|
||||||
createThermalController();
|
HeaterHandler* heaterHandler = nullptr;
|
||||||
|
ObjectFactory::createGenericHeaterComponents(*gpioComIF, *pwrSwitcher, heaterHandler);
|
||||||
|
createThermalController(*heaterHandler);
|
||||||
satsystem::com::init();
|
satsystem::com::init();
|
||||||
}
|
}
|
||||||
|
@ -43,5 +43,5 @@ ReturnValue_t ImtqDummy::initializeLocalDataPool(localpool::DataPool &localDataP
|
|||||||
localDataPoolMap.emplace(IMTQ::ACTUATION_CAL_STATUS, new PoolEntry<uint8_t>({0}));
|
localDataPoolMap.emplace(IMTQ::ACTUATION_CAL_STATUS, new PoolEntry<uint8_t>({0}));
|
||||||
localDataPoolMap.emplace(IMTQ::MTM_RAW, new PoolEntry<float>({0.12, 0.76, -0.45}, true));
|
localDataPoolMap.emplace(IMTQ::MTM_RAW, new PoolEntry<float>({0.12, 0.76, -0.45}, true));
|
||||||
localDataPoolMap.emplace(IMTQ::ACTUATION_RAW_STATUS, new PoolEntry<uint8_t>({0}));
|
localDataPoolMap.emplace(IMTQ::ACTUATION_RAW_STATUS, new PoolEntry<uint8_t>({0}));
|
||||||
return returnvalue::OK;
|
return DeviceHandlerBase::initializeLocalDataPool(localDataPoolMap, poolManager);
|
||||||
}
|
}
|
||||||
|
@ -4,13 +4,14 @@
|
|||||||
|
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
#include <cstdlib>
|
#include <cstdlib>
|
||||||
|
#include <utility>
|
||||||
|
|
||||||
TemperatureSensorInserter::TemperatureSensorInserter(object_id_t objectId,
|
TemperatureSensorInserter::TemperatureSensorInserter(object_id_t objectId,
|
||||||
const Max31865DummyMap& tempSensorDummies_,
|
Max31865DummyMap tempSensorDummies_,
|
||||||
const Tmp1075DummyMap& tempTmpSensorDummies_)
|
Tmp1075DummyMap tempTmpSensorDummies_)
|
||||||
: SystemObject(objects::THERMAL_TEMP_INSERTER),
|
: SystemObject(objects::THERMAL_TEMP_INSERTER),
|
||||||
max31865DummyMap(tempSensorDummies_),
|
max31865DummyMap(std::move(tempSensorDummies_)),
|
||||||
tmp1075DummyMap(tempTmpSensorDummies_) {}
|
tmp1075DummyMap(std::move(tempTmpSensorDummies_)) {}
|
||||||
|
|
||||||
ReturnValue_t TemperatureSensorInserter::initialize() {
|
ReturnValue_t TemperatureSensorInserter::initialize() {
|
||||||
if (performTest) {
|
if (performTest) {
|
||||||
|
@ -10,9 +10,8 @@ class TemperatureSensorInserter : public ExecutableObjectIF, public SystemObject
|
|||||||
public:
|
public:
|
||||||
using Max31865DummyMap = std::map<object_id_t, Max31865Dummy*>;
|
using Max31865DummyMap = std::map<object_id_t, Max31865Dummy*>;
|
||||||
using Tmp1075DummyMap = std::map<object_id_t, Tmp1075Dummy*>;
|
using Tmp1075DummyMap = std::map<object_id_t, Tmp1075Dummy*>;
|
||||||
explicit TemperatureSensorInserter(object_id_t objectId,
|
explicit TemperatureSensorInserter(object_id_t objectId, Max31865DummyMap tempSensorDummies_,
|
||||||
const Max31865DummyMap& tempSensorDummies_,
|
Tmp1075DummyMap tempTmpSensorDummies_);
|
||||||
const Tmp1075DummyMap& tempTmpSensorDummies_);
|
|
||||||
|
|
||||||
ReturnValue_t initialize() override;
|
ReturnValue_t initialize() override;
|
||||||
|
|
||||||
|
@ -46,7 +46,8 @@ void dummy::createDummies(DummyCfg cfg, PowerSwitchIF& pwrSwitch) {
|
|||||||
if (cfg.addSyrlinksDummies) {
|
if (cfg.addSyrlinksDummies) {
|
||||||
new SyrlinksDummy(objects::SYRLINKS_HANDLER, objects::DUMMY_COM_IF, comCookieDummy);
|
new SyrlinksDummy(objects::SYRLINKS_HANDLER, objects::DUMMY_COM_IF, comCookieDummy);
|
||||||
}
|
}
|
||||||
new ImtqDummy(objects::IMTQ_HANDLER, objects::DUMMY_COM_IF, comCookieDummy);
|
auto* imtqDummy = new ImtqDummy(objects::IMTQ_HANDLER, objects::DUMMY_COM_IF, comCookieDummy);
|
||||||
|
imtqDummy->setUpThermalModule(ThermalStateCfg());
|
||||||
if (cfg.addPowerDummies) {
|
if (cfg.addPowerDummies) {
|
||||||
new AcuDummy(objects::ACU_HANDLER, objects::DUMMY_COM_IF, comCookieDummy);
|
new AcuDummy(objects::ACU_HANDLER, objects::DUMMY_COM_IF, comCookieDummy);
|
||||||
new PduDummy(objects::PDU1_HANDLER, objects::DUMMY_COM_IF, comCookieDummy);
|
new PduDummy(objects::PDU1_HANDLER, objects::DUMMY_COM_IF, comCookieDummy);
|
||||||
|
2
fsfw
2
fsfw
@ -1 +1 @@
|
|||||||
Subproject commit 6ce80ea6c5b7621876422d2c7614096cbca6f302
|
Subproject commit 14a92b3d89e37d50ccd46b250826cac293185d68
|
24
generators/.run/all.run.xml
Normal file
24
generators/.run/all.run.xml
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="all" type="PythonConfigurationType" factoryName="Python">
|
||||||
|
<module name="generators" />
|
||||||
|
<option name="INTERPRETER_OPTIONS" value="" />
|
||||||
|
<option name="PARENT_ENVS" value="true" />
|
||||||
|
<envs>
|
||||||
|
<env name="PYTHONUNBUFFERED" value="1" />
|
||||||
|
</envs>
|
||||||
|
<option name="SDK_HOME" value="" />
|
||||||
|
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
||||||
|
<option name="IS_MODULE_SDK" value="true" />
|
||||||
|
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||||
|
<option name="ADD_SOURCE_ROOTS" value="true" />
|
||||||
|
<EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
|
||||||
|
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/gen.py" />
|
||||||
|
<option name="PARAMETERS" value="all" />
|
||||||
|
<option name="SHOW_COMMAND_LINE" value="false" />
|
||||||
|
<option name="EMULATE_TERMINAL" value="false" />
|
||||||
|
<option name="MODULE_MODE" value="false" />
|
||||||
|
<option name="REDIRECT_INPUT" value="false" />
|
||||||
|
<option name="INPUT_FILE" value="" />
|
||||||
|
<method v="2" />
|
||||||
|
</configuration>
|
||||||
|
</component>
|
@ -47,6 +47,7 @@ ReturnValue_t GpsHyperionLinuxController::checkModeCommand(Mode_t mode, Submode_
|
|||||||
gpsSet.setValidity(false, true);
|
gpsSet.setValidity(false, true);
|
||||||
// There can't be a fix with a device that is off.
|
// There can't be a fix with a device that is off.
|
||||||
triggerEvent(GpsHyperion::GPS_FIX_CHANGE, gpsSet.fixMode.value, 0);
|
triggerEvent(GpsHyperion::GPS_FIX_CHANGE, gpsSet.fixMode.value, 0);
|
||||||
|
gpsSet.fixMode.value = 0;
|
||||||
oneShotSwitches.reset();
|
oneShotSwitches.reset();
|
||||||
modeCommanded = false;
|
modeCommanded = false;
|
||||||
}
|
}
|
||||||
|
@ -21,7 +21,7 @@ ThermalController::ThermalController(object_id_t objectId, HeaterHandler& heater
|
|||||||
sensorTemperatures(this),
|
sensorTemperatures(this),
|
||||||
susTemperatures(this),
|
susTemperatures(this),
|
||||||
deviceTemperatures(this),
|
deviceTemperatures(this),
|
||||||
imtqThermalSet(objects::IMTQ_HANDLER),
|
imtqThermalSet(objects::IMTQ_HANDLER, ThermalStateCfg()),
|
||||||
max31865Set0(objects::RTD_0_IC3_PLOC_HEATSPREADER,
|
max31865Set0(objects::RTD_0_IC3_PLOC_HEATSPREADER,
|
||||||
EiveMax31855::RtdCommands::EXCHANGE_SET_ID),
|
EiveMax31855::RtdCommands::EXCHANGE_SET_ID),
|
||||||
max31865Set1(objects::RTD_1_IC4_PLOC_MISSIONBOARD,
|
max31865Set1(objects::RTD_1_IC4_PLOC_MISSIONBOARD,
|
||||||
@ -109,30 +109,7 @@ void ThermalController::performControlOperation() {
|
|||||||
deviceTemperatures.commit();
|
deviceTemperatures.commit();
|
||||||
}
|
}
|
||||||
|
|
||||||
ctrlCameraBody();
|
//performThermalModuleCtrl();
|
||||||
ctrlAcsBoard();
|
|
||||||
ctrlMgt();
|
|
||||||
ctrlRw();
|
|
||||||
ctrlStr();
|
|
||||||
ctrlIfBoard();
|
|
||||||
ctrlAcsBoard();
|
|
||||||
ctrlObc();
|
|
||||||
ctrlObcIfBoard();
|
|
||||||
ctrlSBandTransceiver();
|
|
||||||
ctrlPcduP60Board();
|
|
||||||
ctrlPcduAcu();
|
|
||||||
ctrlPcduPdu();
|
|
||||||
ctrlPlPcduBoard();
|
|
||||||
ctrlPlocMissionBoard();
|
|
||||||
ctrlPlocProcessingBoard();
|
|
||||||
ctrlDac();
|
|
||||||
|
|
||||||
ctrlDro();
|
|
||||||
ctrlX8();
|
|
||||||
ctrlHpa();
|
|
||||||
ctrlTx();
|
|
||||||
ctrlMpa();
|
|
||||||
ctrlScexBoard();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ReturnValue_t ThermalController::initializeLocalDataPool(localpool::DataPool& localDataPoolMap,
|
ReturnValue_t ThermalController::initializeLocalDataPool(localpool::DataPool& localDataPoolMap,
|
||||||
@ -1338,6 +1315,33 @@ void ThermalController::ctrlHpa() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ThermalController::performThermalModuleCtrl() {
|
||||||
|
ctrlCameraBody();
|
||||||
|
ctrlAcsBoard();
|
||||||
|
ctrlMgt();
|
||||||
|
ctrlRw();
|
||||||
|
ctrlStr();
|
||||||
|
ctrlIfBoard();
|
||||||
|
ctrlAcsBoard();
|
||||||
|
ctrlObc();
|
||||||
|
ctrlObcIfBoard();
|
||||||
|
ctrlSBandTransceiver();
|
||||||
|
ctrlPcduP60Board();
|
||||||
|
ctrlPcduAcu();
|
||||||
|
ctrlPcduPdu();
|
||||||
|
ctrlPlPcduBoard();
|
||||||
|
ctrlPlocMissionBoard();
|
||||||
|
ctrlPlocProcessingBoard();
|
||||||
|
ctrlDac();
|
||||||
|
|
||||||
|
ctrlDro();
|
||||||
|
ctrlX8();
|
||||||
|
ctrlHpa();
|
||||||
|
ctrlTx();
|
||||||
|
ctrlMpa();
|
||||||
|
ctrlScexBoard();
|
||||||
|
}
|
||||||
|
|
||||||
void ThermalController::ctrlScexBoard() {
|
void ThermalController::ctrlScexBoard() {
|
||||||
sensors[0].first = sensorTemperatures.sensor_scex.isValid();
|
sensors[0].first = sensorTemperatures.sensor_scex.isValid();
|
||||||
sensors[0].second = sensorTemperatures.sensor_scex.value;
|
sensors[0].second = sensorTemperatures.sensor_scex.value;
|
||||||
|
@ -44,6 +44,7 @@ class ThermalController : public ExtendedControllerBase {
|
|||||||
ReturnValue_t initialize() override;
|
ReturnValue_t initialize() override;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
void performThermalModuleCtrl();
|
||||||
ReturnValue_t handleCommandMessage(CommandMessage* message) override;
|
ReturnValue_t handleCommandMessage(CommandMessage* message) override;
|
||||||
void performControlOperation() override;
|
void performControlOperation() override;
|
||||||
ReturnValue_t initializeLocalDataPool(localpool::DataPool& localDataPoolMap,
|
ReturnValue_t initializeLocalDataPool(localpool::DataPool& localDataPoolMap,
|
||||||
|
Loading…
Reference in New Issue
Block a user