#ifndef MISSION_CONTROLLER_THERMALCONTROLLER_H_
#define MISSION_CONTROLLER_THERMALCONTROLLER_H_

#include <fsfw/controller/ExtendedControllerBase.h>
#include <mission/controller/controllerdefinitions/ThermalControllerDefinitions.h>

class ThermalController : public ExtendedControllerBase {
 public:
  ThermalController(object_id_t objectId, object_id_t parentId);

  ReturnValue_t initialize() override;

 protected:
  virtual ReturnValue_t handleCommandMessage(CommandMessage* message) override;
  virtual void performControlOperation() override;
  virtual ReturnValue_t initializeLocalDataPool(localpool::DataPool& localDataPoolMap,
                                                LocalDataPoolManager& poolManager) override;
  virtual LocalPoolDataSetBase* getDataSetHandle(sid_t sid) override;

  // Mode abstract functions
  virtual ReturnValue_t checkModeCommand(Mode_t mode, Submode_t submode,
                                         uint32_t* msToReachTheMode) override;

 private:
  thermalControllerDefinitions::SensorTemperatures sensorTemperatures;
  thermalControllerDefinitions::ComponentTemperatures componentTemperatures;
};

#endif /* MISSION_CONTROLLER_THERMALCONTROLLER_H_ */