diff --git a/bsp_q7s/em/emObjectFactory.cpp b/bsp_q7s/em/emObjectFactory.cpp index 949f969b..cd0e0e7e 100644 --- a/bsp_q7s/em/emObjectFactory.cpp +++ b/bsp_q7s/em/emObjectFactory.cpp @@ -99,6 +99,9 @@ void ObjectFactory::produce(void* args) { #if OBSW_ADD_PL_PCDU == 0 dummyCfg.addPlPcduDummy = true; #endif +#if OBSW_ADD_BATTERY == 1 + dummyCfg.addBatteryDummy = false; +#endif PowerSwitchIF* pwrSwitcher = nullptr; #if OBSW_ADD_GOMSPACE_PCDU == 0 diff --git a/dummies/BatteryDummy.cpp b/dummies/BatteryDummy.cpp index b74262cd..038f37ec 100644 --- a/dummies/BatteryDummy.cpp +++ b/dummies/BatteryDummy.cpp @@ -1,6 +1,7 @@ #include "BatteryDummy.h" -BatteryDummy::BatteryDummy(DhbConfig cfg) : FreshDeviceHandlerBase(cfg), cfgSet(this) {} +BatteryDummy::BatteryDummy(DhbConfig cfg) + : FreshDeviceHandlerBase(cfg), cfgSet(this), hkSet(this) {} void BatteryDummy::performDeviceOperation(uint8_t opCode) {} @@ -8,6 +9,25 @@ LocalPoolDataSetBase* BatteryDummy::getDataSetHandle(sid_t sid) { return nullptr ReturnValue_t BatteryDummy::initializeLocalDataPool(localpool::DataPool& localDataPoolMap, LocalDataPoolManager& poolManager) { + localDataPoolMap.emplace(bpxBat::BATT_TEMP_1, &battTemp1); + localDataPoolMap.emplace(bpxBat::BATT_TEMP_2, &battTemp2); + localDataPoolMap.emplace(bpxBat::BATT_TEMP_3, &battTemp3); + localDataPoolMap.emplace(bpxBat::BATT_TEMP_4, &battTemp4); + localDataPoolMap.emplace(bpxBat::CHARGE_CURRENT, &chargeCurrent); + localDataPoolMap.emplace(bpxBat::DISCHARGE_CURRENT, &dischargeCurrent); + localDataPoolMap.emplace(bpxBat::HEATER_CURRENT, &heaterCurrent); + localDataPoolMap.emplace(bpxBat::BATT_VOLTAGE, &battVolt); + localDataPoolMap.emplace(bpxBat::REBOOT_COUNTER, &rebootCounter); + localDataPoolMap.emplace(bpxBat::BOOTCAUSE, &bootCause); + + localDataPoolMap.emplace(bpxBat::BATTERY_HEATER_MODE, &battheatMode); + localDataPoolMap.emplace(bpxBat::BATTHEAT_LOW_LIMIT, &battheatLow); + localDataPoolMap.emplace(bpxBat::BATTHEAT_HIGH_LIMIT, &battheatHigh); + + poolManager.subscribeForRegularPeriodicPacket( + subdp::RegularHkPeriodicParams(hkSet.getSid(), true, 20.0)); + poolManager.subscribeForRegularPeriodicPacket( + subdp::RegularHkPeriodicParams(cfgSet.getSid(), false, 30.0)); return returnvalue::OK; } @@ -20,3 +40,7 @@ ReturnValue_t BatteryDummy::executeAction(ActionId_t actionId, MessageQueueId_t const uint8_t* data, size_t size) { return returnvalue::OK; } + +ReturnValue_t BatteryDummy::handleCommandMessage(CommandMessage* message) { + return returnvalue::FAILED; +} \ No newline at end of file diff --git a/dummies/BatteryDummy.h b/dummies/BatteryDummy.h index a0cb1be4..a746a1ac 100644 --- a/dummies/BatteryDummy.h +++ b/dummies/BatteryDummy.h @@ -35,6 +35,7 @@ class BatteryDummy : public FreshDeviceHandlerBase { const uint8_t* data, size_t size) override; BpxBatteryCfg cfgSet; + BpxBatteryHk hkSet; PoolEntry chargeCurrent = PoolEntry({0}); PoolEntry dischargeCurrent = PoolEntry({0}); PoolEntry heaterCurrent = PoolEntry({0}); diff --git a/dummies/helperFactory.cpp b/dummies/helperFactory.cpp index 667ab620..d0b7c393 100644 --- a/dummies/helperFactory.cpp +++ b/dummies/helperFactory.cpp @@ -1,6 +1,7 @@ #include "helperFactory.h" #include +#include #include #include #include @@ -266,4 +267,7 @@ void dummy::createDummies(DummyCfg cfg, PowerSwitchIF& pwrSwitcher, GpioIF* gpio new RadSensorDummy(objects::RAD_SENSOR, objects::DUMMY_COM_IF, comCookieDummy); radSensorDummy->connectModeTreeParent(satsystem::payload::SUBSYSTEM); } + if (cfg.addBatteryDummy) { + new BatteryDummy(DhbConfig(objects::BPX_BATT_HANDLER)); + } } diff --git a/dummies/helperFactory.h b/dummies/helperFactory.h index 34d167f0..bbd315d2 100644 --- a/dummies/helperFactory.h +++ b/dummies/helperFactory.h @@ -30,6 +30,7 @@ struct DummyCfg { bool addStrDummy = true; bool addTmpDummies = true; bool addRadSensorDummy = true; + bool addBatteryDummy = true; bool addPlPcduDummy = false; Tmp1075Cfg tmp1075Cfg; bool addCamSwitcherDummy = false; diff --git a/mission/power/bpxBattDefs.h b/mission/power/bpxBattDefs.h index b00afd3c..c25a025e 100644 --- a/mission/power/bpxBattDefs.h +++ b/mission/power/bpxBattDefs.h @@ -199,6 +199,7 @@ class BpxBatteryHk : public StaticLocalDataSet { private: friend class BpxBatteryHandler; + friend class BatteryDummy; /** * Constructor for data creator * @param hkOwner