cmvr-es/include/hardware_manager/hardware_manager.h
2025-10-24 09:51:14 +08:00

40 lines
1.0 KiB
C++

//
// 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 <glog/logging.h>
#include <mutex>
#include "hardware_factory.h"
#include "hardware/can/can_manager.h"
namespace cmvr::device
{
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<CanGroup> getCanGroup(const std::string& canGroupID);
private:
explicit HardWareManager(const XmlNode &cfg);
private:
XmlNode cfg_;
static std::once_flag init_flag_;
static std::shared_ptr<HardWareManager> instance_;
std::shared_ptr<HardwareFactory> hardware_factory_;
std::shared_ptr<CanManager> can_manager_;
};
}
#endif //CMVR_ES_HARDWARE_MANAGER_H