#pragma once #include #include #include #include #include #include #include #include #include #include #include "core/memory/MemoryPool.h" #include "core/plugin_system/PluginManager.h" #include "device_bus/tree/DeviceTreeModel.h" #include "device_bus/registry/IDeviceRegistry.h" #include "devices/DeviceTypes.h" #include "devices/physical/SerialDevice.h" #include "message_bus/egress/EgressRouter.h" #include "message_bus/ingress/DriverIngressAdapter.h" #include "message_bus/pipeline/PipelineEngine.h" class DeviceBusManager { public: ~DeviceBusManager(); void setDeviceTreeModel(std::shared_ptr model); void setRegistry(softbus::device_bus::registry::IDeviceRegistry* registry); void setDirtyCallback(std::function cb); bool initialize(const QJsonObject& rootConfig); bool reconcileFromTreeModel(); void shutdown(); private: void initializeSerialDevice(const QString& endpoint, const QJsonObject& params); void shutdownSerialDevice(const QString& endpoint); void processEgressLoop(); // void initializeCanDriver(); // void shutdownCanDriver(); // void initializeTcpDriver(); // void shutdownTcpDriver(); // void initializeUdpDriver(); // void shutdownUdpDriver(); private: std::shared_ptr m_treeModel; // 添加map来记住所有设备的endpoint和type的映射 QMap m_deviceEndpointsMap; QHash> m_serialDevicesByEndpointSharedPtr; softbus::device_bus::registry::IDeviceRegistry* m_registry = nullptr; std::shared_ptr m_memoryPool; std::shared_ptr m_pluginManager; std::unique_ptr m_pipelineEngine; std::unique_ptr m_ingressAdapter; std::unique_ptr m_egressRouter; std::atomic m_egressRunning{false}; std::thread m_egressThread; std::function m_dirtyCb; };