#ifndef MISSION_DEVICES_ACUHANDLER_H_ #define MISSION_DEVICES_ACUHANDLER_H_ #include #include "GomspaceDeviceHandler.h" #include "fsfw/datapool/PoolReadGuard.h" /** * @brief Handler for the ACU from Gomspace. Monitors and controls the battery charging via * the solar panels. */ class ACUHandler : public GomspaceDeviceHandler { public: ACUHandler(object_id_t objectId, object_id_t comIF, CookieIF* comCookie); virtual ~ACUHandler(); void setDebugMode(bool enable); virtual ReturnValue_t initializeLocalDataPool(localpool::DataPool& localDataPoolMap, LocalDataPoolManager& poolManager) override; protected: virtual void letChildHandleHkReply(DeviceCommandId_t id, const uint8_t* packet) override; /** * @brief As soon as the device is in MODE_NORMAL, this function is executed periodically. */ virtual ReturnValue_t buildNormalDeviceCommand(DeviceCommandId_t* id) override; virtual void fillCommandAndReplyMap() override; virtual ReturnValue_t childCommandHook(DeviceCommandId_t cmd, const uint8_t* commandData, size_t commandDataLen) override; LocalPoolDataSetBase* getDataSetHandle(sid_t sid) override; private: static const DeviceCommandId_t PRINT_CHANNEL_STATS = 51; ACU::HkTableDataset acuHkTableDataset; bool debugMode = false; /** * @brief Function extracts the hk table information from the received csp packet and stores * the values in the acuHkTableDataset. */ void parseHkTableReply(const uint8_t* packet); /** * @brief Prints channel statistics (current and voltage) to console */ void printChannelStats(); }; #endif /* MISSION_DEVICES_ACUHANDLER_H_ */