eive-obsw/dummies/ImtqDummy.cpp

121 lines
5.4 KiB
C++
Raw Normal View History

2022-06-16 08:26:40 +02:00
#include "ImtqDummy.h"
2022-06-17 08:31:36 +02:00
2023-03-24 20:50:33 +01:00
#include <mission/acs/imtqHelpers.h>
2022-06-16 08:26:40 +02:00
2023-05-24 11:04:07 +02:00
ImtqDummy::ImtqDummy(object_id_t objectId, object_id_t comif, CookieIF *comCookie,
2023-05-25 11:20:28 +02:00
power::Switch_t pwrSwitcher, bool enableHkSets)
2023-05-24 11:04:07 +02:00
: DeviceHandlerBase(objectId, comif, comCookie),
2023-05-25 11:20:28 +02:00
enableHkSets(enableHkSets),
2023-06-21 14:29:00 +02:00
statusSet(this),
dipoleSet(*this),
rawMtmNoTorque(this),
hkDatasetNoTorque(this),
rawMtmWithTorque(this),
hkDatasetWithTorque(this),
calMtmMeasurementSet(this),
2023-05-25 11:20:28 +02:00
switcher(pwrSwitcher) {}
2022-06-16 08:26:40 +02:00
2022-11-25 10:13:24 +01:00
ImtqDummy::~ImtqDummy() = default;
2022-06-16 08:26:40 +02:00
2023-06-21 14:29:00 +02:00
void ImtqDummy::doStartUp() { setMode(MODE_ON); }
2022-06-16 08:26:40 +02:00
2023-03-13 18:29:22 +01:00
void ImtqDummy::doShutDown() { setMode(_MODE_POWER_DOWN); }
2022-06-16 08:26:40 +02:00
2023-05-25 11:20:28 +02:00
ReturnValue_t ImtqDummy::getSwitches(const uint8_t **switches, uint8_t *numberOfSwitches) {
if (switcher != power::NO_SWITCH) {
*numberOfSwitches = 1;
*switches = &switcher;
return returnvalue::OK;
}
return DeviceHandlerBase::NO_SWITCH;
}
2022-06-17 08:31:36 +02:00
ReturnValue_t ImtqDummy::buildNormalDeviceCommand(DeviceCommandId_t *id) { return NOTHING_TO_SEND; }
2022-06-16 08:26:40 +02:00
ReturnValue_t ImtqDummy::buildTransitionDeviceCommand(DeviceCommandId_t *id) {
return NOTHING_TO_SEND;
}
ReturnValue_t ImtqDummy::buildCommandFromCommand(DeviceCommandId_t deviceCommand,
2022-06-17 08:31:36 +02:00
const uint8_t *commandData,
size_t commandDataLen) {
2022-08-24 17:27:47 +02:00
return returnvalue::OK;
2022-06-16 08:26:40 +02:00
}
2022-06-17 08:31:36 +02:00
ReturnValue_t ImtqDummy::scanForReply(const uint8_t *start, size_t len, DeviceCommandId_t *foundId,
size_t *foundLen) {
2022-08-24 17:27:47 +02:00
return returnvalue::OK;
2022-06-16 08:26:40 +02:00
}
ReturnValue_t ImtqDummy::interpretDeviceReply(DeviceCommandId_t id, const uint8_t *packet) {
2022-08-24 17:27:47 +02:00
return returnvalue::OK;
2022-06-16 08:26:40 +02:00
}
2022-06-17 08:31:36 +02:00
void ImtqDummy::fillCommandAndReplyMap() {}
2022-06-16 08:26:40 +02:00
uint32_t ImtqDummy::getTransitionDelayMs(Mode_t modeFrom, Mode_t modeTo) { return 500; }
2022-06-17 08:31:36 +02:00
ReturnValue_t ImtqDummy::initializeLocalDataPool(localpool::DataPool &localDataPoolMap,
LocalDataPoolManager &poolManager) {
2023-02-19 12:25:26 +01:00
localDataPoolMap.emplace(imtq::MCU_TEMPERATURE, new PoolEntry<int16_t>({0}));
localDataPoolMap.emplace(imtq::MGM_CAL_NT, new PoolEntry<float>({0.0, 0.0, 0.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::ACTUATION_RAW_STATUS, new PoolEntry<uint8_t>({0}));
2023-04-14 21:02:39 +02:00
localDataPoolMap.emplace(imtq::DIPOLES_ID, new PoolEntry<int16_t>({0, 0, 0}));
localDataPoolMap.emplace(imtq::CURRENT_TORQUE_DURATION, new PoolEntry<uint16_t>({0}));
2023-05-24 11:04:07 +02:00
// ENG HK No Torque
localDataPoolMap.emplace(imtq::DIGITAL_VOLTAGE_MV, new PoolEntry<uint16_t>({0}));
localDataPoolMap.emplace(imtq::ANALOG_VOLTAGE_MV, new PoolEntry<uint16_t>({0}));
localDataPoolMap.emplace(imtq::DIGITAL_CURRENT, new PoolEntry<float>({0}));
localDataPoolMap.emplace(imtq::ANALOG_CURRENT, new PoolEntry<float>({0}));
localDataPoolMap.emplace(imtq::COIL_CURRENTS, &coilCurrentsMilliampsNoTorque);
localDataPoolMap.emplace(imtq::COIL_TEMPERATURES, &coilTempsNoTorque);
localDataPoolMap.emplace(imtq::MCU_TEMPERATURE, new PoolEntry<int16_t>({0}));
// ENG HK With Torque
localDataPoolMap.emplace(imtq::DIGITAL_VOLTAGE_MV_WT, new PoolEntry<uint16_t>({0}));
localDataPoolMap.emplace(imtq::ANALOG_VOLTAGE_MV_WT, new PoolEntry<uint16_t>({0}));
localDataPoolMap.emplace(imtq::DIGITAL_CURRENT_WT, new PoolEntry<float>({0}));
localDataPoolMap.emplace(imtq::ANALOG_CURRENT_WT, new PoolEntry<float>({0}));
localDataPoolMap.emplace(imtq::COIL_CURRENTS_WT, &coilCurrentsMilliampsWithTorque);
localDataPoolMap.emplace(imtq::COIL_TEMPERATURES_WT, &coilTempsWithTorque);
localDataPoolMap.emplace(imtq::MCU_TEMPERATURE_WT, new PoolEntry<int16_t>({0}));
poolManager.subscribeForDiagPeriodicPacket(
2023-06-21 14:29:00 +02:00
subdp::DiagnosticsHkPeriodicParams(hkDatasetNoTorque.getSid(), enableHkSets, 30.0));
2023-05-24 11:04:07 +02:00
poolManager.subscribeForDiagPeriodicPacket(
2023-06-21 14:29:00 +02:00
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);
2022-06-16 08:26:40 +02:00
}
2023-05-24 11:04:07 +02:00
LocalPoolDataSetBase *ImtqDummy::getDataSetHandle(sid_t sid) {
2023-06-21 14:29:00 +02:00
if (sid == hkDatasetNoTorque.getSid()) {
return &hkDatasetNoTorque;
} else if (sid == dipoleSet.getSid()) {
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;
2023-05-24 11:04:07 +02:00
}
return nullptr;
}