Increase FM and EM similarity #697
@ -83,21 +83,6 @@ void ObjectFactory::produce(void* args) {
|
|||||||
|
|
||||||
new CoreController(objects::CORE_CONTROLLER, enableHkSets);
|
new CoreController(objects::CORE_CONTROLLER, enableHkSets);
|
||||||
|
|
||||||
// Regular FM code, does not work for EM if the hardware is not connected
|
|
||||||
// createPcduComponents(gpioComIF, &pwrSwitcher);
|
|
||||||
// createPlPcduComponents(gpioComIF, spiMainComIF, pwrSwitcher);
|
|
||||||
// createSyrlinksComponents(pwrSwitcher);
|
|
||||||
// createSunSensorComponents(gpioComIF, spiMainComIF, pwrSwitcher, q7s::SPI_DEFAULT_DEV);
|
|
||||||
// createRtdComponents(q7s::SPI_DEFAULT_DEV, gpioComIF, pwrSwitcher, spiMainComIF);
|
|
||||||
// createTmpComponents();
|
|
||||||
// createSolarArrayDeploymentComponents();
|
|
||||||
// createPayloadComponents(gpioComIF);
|
|
||||||
// createHeaterComponents(gpioComIF, pwrSwitcher, healthTable);
|
|
||||||
|
|
||||||
// TODO: Careful! Switching this on somehow messes with the communication with the ProASIC
|
|
||||||
// and will cause xsc_boot_copy commands to always boot to 0 0
|
|
||||||
// createRadSensorComponent(gpioComIF);
|
|
||||||
|
|
||||||
#if OBSW_ADD_ACS_BOARD == 1
|
#if OBSW_ADD_ACS_BOARD == 1
|
||||||
// Still initialize chip select to avoid SPI bus issues.
|
// Still initialize chip select to avoid SPI bus issues.
|
||||||
createRadSensorChipSelect(gpioComIF);
|
createRadSensorChipSelect(gpioComIF);
|
||||||
|
@ -5,14 +5,19 @@
|
|||||||
ImtqDummy::ImtqDummy(object_id_t objectId, object_id_t comif, CookieIF *comCookie,
|
ImtqDummy::ImtqDummy(object_id_t objectId, object_id_t comif, CookieIF *comCookie,
|
||||||
power::Switch_t pwrSwitcher, bool enableHkSets)
|
power::Switch_t pwrSwitcher, bool enableHkSets)
|
||||||
: DeviceHandlerBase(objectId, comif, comCookie),
|
: DeviceHandlerBase(objectId, comif, comCookie),
|
||||||
setNoTorque(this),
|
|
||||||
setWithTorque(this),
|
|
||||||
enableHkSets(enableHkSets),
|
enableHkSets(enableHkSets),
|
||||||
|
statusSet(this),
|
||||||
|
dipoleSet(*this),
|
||||||
|
rawMtmNoTorque(this),
|
||||||
|
hkDatasetNoTorque(this),
|
||||||
|
rawMtmWithTorque(this),
|
||||||
|
hkDatasetWithTorque(this),
|
||||||
|
calMtmMeasurementSet(this),
|
||||||
switcher(pwrSwitcher) {}
|
switcher(pwrSwitcher) {}
|
||||||
|
|
||||||
ImtqDummy::~ImtqDummy() = default;
|
ImtqDummy::~ImtqDummy() = default;
|
||||||
|
|
||||||
void ImtqDummy::doStartUp() { setMode(MODE_NORMAL); }
|
void ImtqDummy::doStartUp() { setMode(MODE_ON); }
|
||||||
|
|
||||||
void ImtqDummy::doShutDown() { setMode(_MODE_POWER_DOWN); }
|
void ImtqDummy::doShutDown() { setMode(_MODE_POWER_DOWN); }
|
||||||
|
|
||||||
@ -79,17 +84,37 @@ ReturnValue_t ImtqDummy::initializeLocalDataPool(localpool::DataPool &localDataP
|
|||||||
localDataPoolMap.emplace(imtq::MCU_TEMPERATURE_WT, new PoolEntry<int16_t>({0}));
|
localDataPoolMap.emplace(imtq::MCU_TEMPERATURE_WT, new PoolEntry<int16_t>({0}));
|
||||||
|
|
||||||
poolManager.subscribeForDiagPeriodicPacket(
|
poolManager.subscribeForDiagPeriodicPacket(
|
||||||
subdp::DiagnosticsHkPeriodicParams(setNoTorque.getSid(), enableHkSets, 30.0));
|
subdp::DiagnosticsHkPeriodicParams(hkDatasetNoTorque.getSid(), enableHkSets, 30.0));
|
||||||
poolManager.subscribeForDiagPeriodicPacket(
|
poolManager.subscribeForDiagPeriodicPacket(
|
||||||
subdp::DiagnosticsHkPeriodicParams(setWithTorque.getSid(), enableHkSets, 30.0));
|
subdp::DiagnosticsHkPeriodicParams(hkDatasetWithTorque.getSid(), enableHkSets, 30.0));
|
||||||
|
poolManager.subscribeForDiagPeriodicPacket(
|
||||||
|
subdp::DiagnosticsHkPeriodicParams(rawMtmNoTorque.getSid(), false, 10.0));
|
||||||
|
poolManager.subscribeForDiagPeriodicPacket(
|
||||||
|
subdp::DiagnosticsHkPeriodicParams(rawMtmWithTorque.getSid(), false, 10.0));
|
||||||
|
poolManager.subscribeForDiagPeriodicPacket(
|
||||||
|
subdp::DiagnosticsHkPeriodicParams(calMtmMeasurementSet.getSid(), false, 10.0));
|
||||||
|
poolManager.subscribeForRegularPeriodicPacket(
|
||||||
|
subdp::RegularHkPeriodicParams(statusSet.getSid(), false, 10.0));
|
||||||
|
poolManager.subscribeForDiagPeriodicPacket(
|
||||||
|
subdp::DiagnosticsHkPeriodicParams(dipoleSet.getSid(), false, 10.0));
|
||||||
return DeviceHandlerBase::initializeLocalDataPool(localDataPoolMap, poolManager);
|
return DeviceHandlerBase::initializeLocalDataPool(localDataPoolMap, poolManager);
|
||||||
}
|
}
|
||||||
|
|
||||||
LocalPoolDataSetBase *ImtqDummy::getDataSetHandle(sid_t sid) {
|
LocalPoolDataSetBase *ImtqDummy::getDataSetHandle(sid_t sid) {
|
||||||
if (sid == setNoTorque.getSid()) {
|
if (sid == hkDatasetNoTorque.getSid()) {
|
||||||
return &setNoTorque;
|
return &hkDatasetNoTorque;
|
||||||
} else if (sid == setWithTorque.getSid()) {
|
} else if (sid == dipoleSet.getSid()) {
|
||||||
return &setWithTorque;
|
return &dipoleSet;
|
||||||
|
} else if (sid == statusSet.getSid()) {
|
||||||
|
return &statusSet;
|
||||||
|
} else if (sid == hkDatasetWithTorque.getSid()) {
|
||||||
|
return &hkDatasetWithTorque;
|
||||||
|
} else if (sid == rawMtmWithTorque.getSid()) {
|
||||||
|
return &rawMtmWithTorque;
|
||||||
|
} else if (sid == calMtmMeasurementSet.getSid()) {
|
||||||
|
return &calMtmMeasurementSet;
|
||||||
|
} else if (sid == rawMtmNoTorque.getSid()) {
|
||||||
|
return &rawMtmNoTorque;
|
||||||
}
|
}
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
@ -18,11 +18,19 @@ class ImtqDummy : public DeviceHandlerBase {
|
|||||||
~ImtqDummy() override;
|
~ImtqDummy() override;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
ReturnValue_t getSwitches(const uint8_t **switches, uint8_t *numberOfSwitches) override;
|
|
||||||
imtq::HkDatasetNoTorque setNoTorque;
|
|
||||||
imtq::HkDatasetWithTorque setWithTorque;
|
|
||||||
bool enableHkSets;
|
bool enableHkSets;
|
||||||
|
|
||||||
|
imtq::StatusDataset statusSet;
|
||||||
|
imtq::DipoleActuationSet dipoleSet;
|
||||||
|
imtq::RawMtmMeasurementNoTorque rawMtmNoTorque;
|
||||||
|
imtq::HkDatasetNoTorque hkDatasetNoTorque;
|
||||||
|
|
||||||
|
imtq::RawMtmMeasurementWithTorque rawMtmWithTorque;
|
||||||
|
imtq::HkDatasetWithTorque hkDatasetWithTorque;
|
||||||
|
|
||||||
|
imtq::CalibratedMtmMeasurementSet calMtmMeasurementSet;
|
||||||
|
|
||||||
PoolEntry<uint8_t> statusMode = PoolEntry<uint8_t>({0});
|
PoolEntry<uint8_t> statusMode = PoolEntry<uint8_t>({0});
|
||||||
PoolEntry<uint8_t> statusError = PoolEntry<uint8_t>({0});
|
PoolEntry<uint8_t> statusError = PoolEntry<uint8_t>({0});
|
||||||
PoolEntry<uint8_t> statusConfig = PoolEntry<uint8_t>({0});
|
PoolEntry<uint8_t> statusConfig = PoolEntry<uint8_t>({0});
|
||||||
@ -42,6 +50,8 @@ class ImtqDummy : public DeviceHandlerBase {
|
|||||||
|
|
||||||
power::Switch_t switcher = power::NO_SWITCH;
|
power::Switch_t switcher = power::NO_SWITCH;
|
||||||
|
|
||||||
|
ReturnValue_t getSwitches(const uint8_t **switches, uint8_t *numberOfSwitches) override;
|
||||||
|
|
||||||
void doStartUp() override;
|
void doStartUp() override;
|
||||||
void doShutDown() override;
|
void doShutDown() override;
|
||||||
ReturnValue_t buildNormalDeviceCommand(DeviceCommandId_t *id) override;
|
ReturnValue_t buildNormalDeviceCommand(DeviceCommandId_t *id) override;
|
||||||
|
@ -3,13 +3,24 @@
|
|||||||
#include <mission/acs/rwHelpers.h>
|
#include <mission/acs/rwHelpers.h>
|
||||||
|
|
||||||
RwDummy::RwDummy(object_id_t objectId, object_id_t comif, CookieIF *comCookie)
|
RwDummy::RwDummy(object_id_t objectId, object_id_t comif, CookieIF *comCookie)
|
||||||
: DeviceHandlerBase(objectId, comif, comCookie) {}
|
: DeviceHandlerBase(objectId, comif, comCookie),
|
||||||
|
|
||||||
|
statusSet(this),
|
||||||
|
lastResetStatusSet(this),
|
||||||
|
tmDataset(this),
|
||||||
|
rwSpeedActuationSet(*this) {}
|
||||||
|
|
||||||
RwDummy::~RwDummy() {}
|
RwDummy::~RwDummy() {}
|
||||||
|
|
||||||
void RwDummy::doStartUp() { setMode(MODE_ON); }
|
void RwDummy::doStartUp() {
|
||||||
|
statusSet.setReportingEnabled(true);
|
||||||
|
setMode(MODE_ON);
|
||||||
|
}
|
||||||
|
|
||||||
void RwDummy::doShutDown() { setMode(MODE_OFF); }
|
void RwDummy::doShutDown() {
|
||||||
|
statusSet.setReportingEnabled(false);
|
||||||
|
setMode(MODE_OFF);
|
||||||
|
}
|
||||||
|
|
||||||
ReturnValue_t RwDummy::buildNormalDeviceCommand(DeviceCommandId_t *id) { return NOTHING_TO_SEND; }
|
ReturnValue_t RwDummy::buildNormalDeviceCommand(DeviceCommandId_t *id) { return NOTHING_TO_SEND; }
|
||||||
|
|
||||||
@ -74,5 +85,11 @@ ReturnValue_t RwDummy::initializeLocalDataPool(localpool::DataPool &localDataPoo
|
|||||||
localDataPoolMap.emplace(rws::SPI_BYTES_READ, new PoolEntry<uint32_t>({0}));
|
localDataPoolMap.emplace(rws::SPI_BYTES_READ, new PoolEntry<uint32_t>({0}));
|
||||||
localDataPoolMap.emplace(rws::SPI_REG_OVERRUN_ERRORS, new PoolEntry<uint32_t>({0}));
|
localDataPoolMap.emplace(rws::SPI_REG_OVERRUN_ERRORS, new PoolEntry<uint32_t>({0}));
|
||||||
localDataPoolMap.emplace(rws::SPI_TOTAL_ERRORS, new PoolEntry<uint32_t>({0}));
|
localDataPoolMap.emplace(rws::SPI_TOTAL_ERRORS, new PoolEntry<uint32_t>({0}));
|
||||||
|
poolManager.subscribeForDiagPeriodicPacket(
|
||||||
|
subdp::DiagnosticsHkPeriodicParams(statusSet.getSid(), false, 12.0));
|
||||||
|
poolManager.subscribeForRegularPeriodicPacket(
|
||||||
|
subdp::RegularHkPeriodicParams(tmDataset.getSid(), false, 30.0));
|
||||||
|
poolManager.subscribeForRegularPeriodicPacket(
|
||||||
|
subdp::RegularHkPeriodicParams(lastResetStatusSet.getSid(), false, 30.0));
|
||||||
return returnvalue::OK;
|
return returnvalue::OK;
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
#define DUMMIES_RWDUMMY_H_
|
#define DUMMIES_RWDUMMY_H_
|
||||||
|
|
||||||
#include <fsfw/devicehandlers/DeviceHandlerBase.h>
|
#include <fsfw/devicehandlers/DeviceHandlerBase.h>
|
||||||
|
#include <mission/acs/rwHelpers.h>
|
||||||
|
|
||||||
class RwDummy : public DeviceHandlerBase {
|
class RwDummy : public DeviceHandlerBase {
|
||||||
public:
|
public:
|
||||||
@ -15,6 +16,11 @@ class RwDummy : public DeviceHandlerBase {
|
|||||||
virtual ~RwDummy();
|
virtual ~RwDummy();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
rws::StatusSet statusSet;
|
||||||
|
rws::LastResetSatus lastResetStatusSet;
|
||||||
|
rws::TmDataset tmDataset;
|
||||||
|
rws::RwSpeedActuationSet rwSpeedActuationSet;
|
||||||
|
|
||||||
PoolEntry<int32_t> rwSpeed = PoolEntry<int32_t>({0});
|
PoolEntry<int32_t> rwSpeed = PoolEntry<int32_t>({0});
|
||||||
PoolEntry<uint16_t> rampTime = PoolEntry<uint16_t>({10});
|
PoolEntry<uint16_t> rampTime = PoolEntry<uint16_t>({10});
|
||||||
|
|
||||||
|
@ -268,7 +268,7 @@ ReturnValue_t PersistentTmStore::getNextDumpPacket(PusTmReader& reader, bool& fi
|
|||||||
// restore the file dump, but for now do not trust the file.
|
// restore the file dump, but for now do not trust the file.
|
||||||
std::error_code e;
|
std::error_code e;
|
||||||
std::filesystem::remove(dumpParams.dirEntry.path().c_str(), e);
|
std::filesystem::remove(dumpParams.dirEntry.path().c_str(), e);
|
||||||
if(dumpParams.dirEntry.path() == activeFile) {
|
if (dumpParams.dirEntry.path() == activeFile) {
|
||||||
activeFile == std::nullopt;
|
activeFile == std::nullopt;
|
||||||
assignAndOrCreateMostRecentFile();
|
assignAndOrCreateMostRecentFile();
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user