Files
softbus_daemon/src/device_bus/manager/DeviceBusManager.h

70 lines
2.2 KiB
C
Raw Normal View History

2026-03-12 14:56:53 +08:00
#pragma once
#include <QByteArray>
#include <QJsonObject>
#include <QMap>
#include <QList>
2026-03-18 16:31:32 +08:00
#include <QHash>
#include <QSharedPointer>
2026-03-26 17:22:52 +08:00
#include <atomic>
2026-03-18 16:31:32 +08:00
#include <memory>
2026-03-26 17:22:52 +08:00
#include <thread>
#include <functional>
2026-03-12 14:56:53 +08:00
2026-03-26 17:22:52 +08:00
#include "core/memory/MemoryPool.h"
#include "core/plugin_system/PluginManager.h"
2026-03-12 14:56:53 +08:00
#include "device_bus/tree/DeviceTreeModel.h"
2026-03-18 16:31:32 +08:00
#include "device_bus/registry/IDeviceRegistry.h"
#include "devices/DeviceTypes.h"
#include "devices/physical/SerialDevice.h"
2026-03-26 17:22:52 +08:00
#include "message_bus/egress/EgressRouter.h"
#include "message_bus/ingress/DriverIngressAdapter.h"
#include "message_bus/pipeline/PipelineEngine.h"
2026-03-12 14:56:53 +08:00
class DeviceBusManager
{
public:
2026-03-26 17:22:52 +08:00
~DeviceBusManager();
2026-03-18 16:31:32 +08:00
void setDeviceTreeModel(std::shared_ptr<DeviceTreeModel> model);
2026-03-20 17:19:29 +08:00
void setRegistry(softbus::device_bus::registry::IDeviceRegistry* registry);
2026-03-26 17:22:52 +08:00
void setDirtyCallback(std::function<void()> cb);
2026-03-18 16:31:32 +08:00
2026-03-12 14:56:53 +08:00
bool initialize(const QJsonObject& rootConfig);
2026-03-23 17:45:32 +08:00
bool reconcileFromTreeModel();
2026-03-12 14:56:53 +08:00
void shutdown();
private:
2026-03-18 16:31:32 +08:00
void initializeSerialDevice(const QString& endpoint, const QJsonObject& params);
void shutdownSerialDevice(const QString& endpoint);
2026-03-26 17:22:52 +08:00
void processEgressLoop();
2026-03-12 14:56:53 +08:00
// void initializeCanDriver();
// void shutdownCanDriver();
// void initializeTcpDriver();
// void shutdownTcpDriver();
// void initializeUdpDriver();
// void shutdownUdpDriver();
private:
2026-03-18 16:31:32 +08:00
std::shared_ptr<DeviceTreeModel> m_treeModel;
2026-03-12 14:56:53 +08:00
// 添加map来记住所有设备的endpoint和type的映射
2026-03-18 16:31:32 +08:00
QMap<QString, softbus::devices::DeviceKind> m_deviceEndpointsMap;
2026-03-26 17:22:52 +08:00
QHash<QString, QSharedPointer<softbus::devices::physical::SerialDevice>> m_serialDevicesByEndpointSharedPtr;
2026-03-12 14:56:53 +08:00
2026-03-18 16:31:32 +08:00
softbus::device_bus::registry::IDeviceRegistry* m_registry = nullptr;
2026-03-26 17:22:52 +08:00
std::shared_ptr<softbus::core::memory::MemoryPool> m_memoryPool;
std::shared_ptr<softbus::core::plugin_system::PluginManager> m_pluginManager;
std::unique_ptr<softbus::message_bus::pipeline::PipelineEngine> m_pipelineEngine;
std::unique_ptr<softbus::message_bus::ingress::DriverIngressAdapter> m_ingressAdapter;
std::unique_ptr<softbus::message_bus::egress::EgressRouter> m_egressRouter;
std::atomic<bool> m_egressRunning{false};
std::thread m_egressThread;
std::function<void()> m_dirtyCb;
2026-03-12 14:56:53 +08:00
};