#pragma once #include #include #include #include #include #include #include "core/memory/MemoryPool.h" #include "core/plugin_system/IProtocolFramerPlugin.h" namespace softbus::message_bus::pipeline::protocol::modbusrtu { struct ModbusRtuFramerPluginConfig { std::size_t maxAdu{256}; int interFrameTimeoutMs{0}; }; class ModbusRtuFramerPlugin final : public softbus::core::plugin_system::IProtocolFramerPlugin { public: explicit ModbusRtuFramerPlugin(std::shared_ptr pool, ModbusRtuFramerPluginConfig cfg = {}); QString pluginId() const override; softbus::core::models::ProtocolType protocolType() const override; void bindMemoryPool(std::shared_ptr pool) override; std::unique_ptr createFramerSession( std::uint32_t endpointHash, const QJsonObject& params) override; private: std::shared_ptr m_pool; ModbusRtuFramerPluginConfig m_cfg; }; std::shared_ptr makeModbusRtuFramerPlugin( std::shared_ptr pool, ModbusRtuFramerPluginConfig cfg = {}); softbus::core::plugin_system::IProtocolFramerPlugin* createModbusRtuFramerPluginRaw(); } // namespace softbus::message_bus::pipeline::protocol::modbusrtu