#ifndef MISSION_POWER_BPXBATTERYHANDLER_H_ #define MISSION_POWER_BPXBATTERYHANDLER_H_ #include #include #include 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; #if OBSW_THREAD_TRACING == 1 uint32_t opCounter = 0; #endif BpxBatteryHk hkSet; DeviceCommandId_t lastCmd = DeviceHandlerIF::NO_COMMAND_ID; BpxBatteryCfg cfgSet; std::array cmdBuf = {}; PoolEntry chargeCurrent = PoolEntry({0}); PoolEntry dischargeCurrent = PoolEntry({0}); PoolEntry heaterCurrent = PoolEntry({0}); PoolEntry battVolt = PoolEntry({0}); PoolEntry battTemp1 = PoolEntry({0}); PoolEntry battTemp2 = PoolEntry({0}); PoolEntry battTemp3 = PoolEntry({0}); PoolEntry battTemp4 = PoolEntry({0}); PoolEntry rebootCounter = PoolEntry({0}); PoolEntry bootCause = PoolEntry({0}); PoolEntry battheatMode = PoolEntry({0}); PoolEntry battheatLow = PoolEntry({0}); PoolEntry battheatHigh = PoolEntry({0}); void doStartUp() override; void doShutDown() override; ReturnValue_t buildNormalDeviceCommand(DeviceCommandId_t* id) override; ReturnValue_t buildTransitionDeviceCommand(DeviceCommandId_t* id) override; void fillCommandAndReplyMap() override; void performOperationHook() 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_POWER_BPXBATTERYHANDLER_H_ */