#pragma once #include "controller.hpp" #include "config.hpp" #include "logger.hpp" #include "mqtt.hpp" #include #include #include #include #include namespace custom { class CustomRobot { public: explicit CustomRobot(); ~CustomRobot(); bool initialize(); bool start(); Controller* getController() const { return controller_.get(); } bool GetServiceList(std::vector& serviceList); bool SwitchService(const std::string& serviceName, bool enable); bool SetReportFreq(int32_t interval, int32_t duration); // MQTT related methods bool initializeMqtt(); void onMqttMessage(const std::string& topic, const std::string& payload); void onMqttConnection(bool connected); void publishStatus(); private: std::string generateRandomClientId() const; std::unique_ptr controller_; std::unique_ptr rsc_; std::unique_ptr mqttClient_; CustomConfig config_; std::atomic running_; std::atomic initialized_; }; } // namespace custom