- protocol/DisProtocol: 配电协议8条消息(指令0x0001~4/反馈0x0005~8, Sum8),复用pmSysvariable结构体+static_assert核对 - ChecksumPolicy 新增 Sum8;Frame 支持 1 字节校验和 - MessageRegistry 支持 (id+帧总长) 二维查找:配电指令与PM操控指令共用id按帧长区分(帧头length字段不可信) - LinkManager: 按实际帧长分发 + sendRaw原帧透传 + 非本协议帧头落库节流告警;UdpEndpoint sendTo 加锁 - comm/RcuLinkManager: 真实CCU链路;core/DisBridge: 配电桥接器(反馈转pPowerManger+解码显示,指令转真实CCU,0x0004仅显示不转发) - 网页新增"真实CCU"页签全字段展示;SnapshotBuilder realCcu 节 + rcu 链路描述 - h100.moos: 端口腾挪(真实CCU固定上报5001归pCCU,pPowerManger iport=5002),rcu_remote=192.168.0.140:7000 - 测试: pccuTest 新增配电/Sum8/长度分发/RCU注册表用例(176项);集成测试新增桥接字节一致+不误转发用例
50 lines
1.6 KiB
C++
50 lines
1.6 KiB
C++
#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
|