- 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项);集成测试新增桥接字节一致+不误转发用例
52 lines
1.8 KiB
C++
52 lines
1.8 KiB
C++
#ifndef PCCU_RCU_LINK_MANAGER_H
|
||
#define PCCU_RCU_LINK_MANAGER_H
|
||
|
||
#include "LinkManager.h"
|
||
#include "../protocol/PmProtocol.h"
|
||
#include "../protocol/DisProtocol.h"
|
||
|
||
namespace ccu {
|
||
|
||
//============================================================================
|
||
// RcuLinkManager:面向真实 CCU 设备的链路(配电桥接)。
|
||
//
|
||
// - 本地监听:rcu_local_port(默认 7100),接收真实CCU 上报的数据
|
||
// - 发送目标:真实CCU(默认占位 192.168.0.200:7000,.moos 可配)
|
||
//
|
||
// 注册的消息:
|
||
// - 配电反馈 0x0005~0x0008(Sum8):真实CCU 上报的配电状态,
|
||
// 由 DisBridge 原帧转发给 pPowerManger 并解码显示
|
||
// - 配电指令 0x0001~0x0004(Sum8):真实CCU 的指令回显仅识别,不转发
|
||
// - PM 消息 0x0001~0x0004(Sum32):真实CCU 状态报文 0x0004 仅解码
|
||
// 显示,不转发(避免与 pCCU 自身模拟的状态报文冲突)
|
||
//============================================================================
|
||
|
||
class RcuLinkManager : public LinkManager {
|
||
public:
|
||
RcuLinkManager(long localPort,
|
||
const std::string& rcuHost, long rcuPort)
|
||
: LinkManager("rcu", localPort), m_rcuHost(rcuHost), m_rcuPort(rcuPort) {
|
||
registerDisFbMessages(registry());
|
||
registerDisCmdMessages(registry());
|
||
registerPmMessages(registry());
|
||
}
|
||
|
||
void setRcuAddress(const std::string& host, long port) {
|
||
m_rcuHost = host; m_rcuPort = port;
|
||
}
|
||
const std::string& rcuHost() const { return m_rcuHost; }
|
||
long rcuPort() const { return m_rcuPort; }
|
||
|
||
protected:
|
||
std::string defaultRemoteHost() const override { return m_rcuHost; }
|
||
long defaultRemotePort() const override { return m_rcuPort; }
|
||
|
||
private:
|
||
std::string m_rcuHost;
|
||
long m_rcuPort;
|
||
};
|
||
|
||
} // namespace ccu
|
||
|
||
#endif // PCCU_RCU_LINK_MANAGER_H
|