cmvr-es/include/hardware_manager/hardware_manager.h

40 lines
1.0 KiB
C
Raw Normal View History

2025-10-21 17:02:32 +08:00
//
// Created by linbo on 2025/10/21.
//
#ifndef CMVR_ES_HARDWARE_MANAGER_H
#define CMVR_ES_HARDWARE_MANAGER_H
2025-10-22 16:40:55 +08:00
#include "rapidxml/xml_parser.h"
#include <glog/logging.h>
#include <mutex>
2025-10-24 09:51:14 +08:00
#include "hardware_factory.h"
#include "hardware/can/can_manager.h"
2025-10-22 16:40:55 +08:00
namespace cmvr::device
2025-10-21 17:02:32 +08:00
{
2025-10-22 16:40:55 +08:00
class HardWareManager
{
public:
HardWareManager(const HardWareManager&) = delete;
HardWareManager& operator=(const HardWareManager&) = delete;
static HardWareManager& getInstance(const XmlNode &cfg);
static HardWareManager& getInstance();
static void destroyInstance();
2025-10-24 09:51:14 +08:00
void initHardWare();
2025-10-22 16:40:55 +08:00
2025-10-24 09:51:14 +08:00
std::shared_ptr<CanGroup> getCanGroup(const std::string& canGroupID);
2025-10-22 16:40:55 +08:00
2025-10-21 17:02:32 +08:00
2025-10-24 09:51:14 +08:00
private:
explicit HardWareManager(const XmlNode &cfg);
2025-10-22 16:40:55 +08:00
private:
XmlNode cfg_;
static std::once_flag init_flag_;
static std::shared_ptr<HardWareManager> instance_;
2025-10-24 09:51:14 +08:00
std::shared_ptr<HardwareFactory> hardware_factory_;
std::shared_ptr<CanManager> can_manager_;
2025-10-22 16:40:55 +08:00
};
}
2025-10-21 17:02:32 +08:00
#endif //CMVR_ES_HARDWARE_MANAGER_H