#ifndef PCCU_PM_LINK_MANAGER_H #define PCCU_PM_LINK_MANAGER_H #include "LinkManager.h" #include "../protocol/PmProtocol.h" #include "../protocol/DisProtocol.h" namespace ccu { //============================================================================ // PmLinkManager:面向控制主机 pPowerManger 的链路。 // // - 本地监听:控制主机指令端口(默认 7000) // - 发送目标:控制主机(默认 192.168.0.140:5001) // // 注册的消息: // - PM 协议 0x0001~0x0004(Sum32) // - 配电指令 0x0001~0x0004(Sum8,13~21B 短帧):pPowerManger 下发的 // 配电指令与其操控/参数指令共用 id,仅帧长不同,由注册表按 // (id+帧长) 区分,DisBridge 据此原桥接转发真实CCU // 端口/地址均可由 .moos 配置覆盖。 //============================================================================ class PmLinkManager : public LinkManager { public: PmLinkManager(long localPort, const std::string& pmHost, long pmPort) : LinkManager("pm", localPort), m_pmHost(pmHost), m_pmPort(pmPort) { registerPmMessages(registry()); registerDisCmdMessages(registry()); } void setPmAddress(const std::string& host, long port) { m_pmHost = host; m_pmPort = port; } const std::string& pmHost() const { return m_pmHost; } long pmPort() const { return m_pmPort; } protected: std::string defaultRemoteHost() const override { return m_pmHost; } long defaultRemotePort() const override { return m_pmPort; } private: std::string m_pmHost; long m_pmPort; }; } // namespace ccu #endif // PCCU_PM_LINK_MANAGER_H