// // Created by linbo on 2025/10/21. // #ifndef CMVR_ES_HARDWARE_MANAGER_H #define CMVR_ES_HARDWARE_MANAGER_H #include "rapidxml/xml_parser.h" #include #include #include "hardware_factory.h" #include "hardware/can/can_manager.h" namespace cmvr::hardware { class HardWareManager { public: HardWareManager(const HardWareManager&) = delete; HardWareManager& operator=(const HardWareManager&) = delete; static HardWareManager& getInstance(const XmlNode &cfg); static HardWareManager& getInstance(); static void destroyInstance(); void initHardWare(); std::shared_ptr getCanGroup(const std::string& canGroupID); private: explicit HardWareManager(const XmlNode &cfg); private: XmlNode cfg_; static std::once_flag init_flag_; static std::shared_ptr instance_; std::shared_ptr hardware_factory_; std::shared_ptr can_manager_; }; } #endif //CMVR_ES_HARDWARE_MANAGER_H