#ifndef MISSION_DEVICES_BPXBATTERYHANDLER_H_ #define MISSION_DEVICES_BPXBATTERYHANDLER_H_ #include <fsfw/devicehandlers/DeviceHandlerBase.h> #include "devicedefinitions/BpxBatteryDefinitions.h" class BpxBatteryHandler : public DeviceHandlerBase { public: BpxBatteryHandler(object_id_t objectId, object_id_t comIF, CookieIF* comCookie); virtual ~BpxBatteryHandler(); void setToGoToNormalMode(bool enable); void setDebugMode(bool enable); protected: enum class States { CHECK_COM = 0, IDLE = 1, }; States state = States::CHECK_COM; bool commandExecuted = false; bool debugMode = false; bool goToNormalModeImmediately = false; uint8_t sentPingByte = BpxBattery::DEFAULT_PING_SENT_BYTE; BpxBatteryHk hkSet; DeviceCommandId_t lastCmd = DeviceHandlerIF::NO_COMMAND_ID; BpxBatteryCfg cfgSet; std::array<uint8_t, 8> cmdBuf = {}; PoolEntry<uint16_t> chargeCurrent = PoolEntry<uint16_t>({0}); PoolEntry<uint16_t> dischargeCurrent = PoolEntry<uint16_t>({0}); PoolEntry<uint16_t> heaterCurrent = PoolEntry<uint16_t>({0}); PoolEntry<uint16_t> battVolt = PoolEntry<uint16_t>({0}); PoolEntry<int16_t> battTemp1 = PoolEntry<int16_t>({0}); PoolEntry<int16_t> battTemp2 = PoolEntry<int16_t>({0}); PoolEntry<int16_t> battTemp3 = PoolEntry<int16_t>({0}); PoolEntry<int16_t> battTemp4 = PoolEntry<int16_t>({0}); PoolEntry<uint32_t> rebootCounter = PoolEntry<uint32_t>({0}); PoolEntry<uint8_t> bootCause = PoolEntry<uint8_t>({0}); PoolEntry<uint8_t> battheatMode = PoolEntry<uint8_t>({0}); PoolEntry<int8_t> battheatLow = PoolEntry<int8_t>({0}); PoolEntry<int8_t> battheatHigh = PoolEntry<int8_t>({0}); void doStartUp() override; void doShutDown() override; ReturnValue_t buildNormalDeviceCommand(DeviceCommandId_t* id) override; ReturnValue_t buildTransitionDeviceCommand(DeviceCommandId_t* id) override; void fillCommandAndReplyMap() override; ReturnValue_t buildCommandFromCommand(DeviceCommandId_t deviceCommand, const uint8_t* commandData, size_t commandDataLen) override; ReturnValue_t scanForReply(const uint8_t* start, size_t remainingSize, DeviceCommandId_t* foundId, size_t* foundLen) override; ReturnValue_t interpretDeviceReply(DeviceCommandId_t id, const uint8_t* packet) override; uint32_t getTransitionDelayMs(Mode_t modeFrom, Mode_t modeTo) override; ReturnValue_t initializeLocalDataPool(localpool::DataPool& localDataPoolMap, LocalDataPoolManager& poolManager) override; }; #endif /* MISSION_DEVICES_BPXBATTERYHANDLER_H_ */