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
|