@startuml Comms_Overview title Leahi Real-time CDT — Signal/Slot Wiring Overview participant "Can::CanInterface" as CANI participant "LeahiRtController" as LRC participant "Can::MessageDispatcher" as MDISP participant "AgentInterface" as AI participant "Unix Domain\nSocket" as UDS participant "AgentSimController" as ASC == CAN frame → assembled message == CANI -> LRC : didFrameReceive(QCanBusFrame)\n→ onFrameReceive() LRC -> MDISP : onFrameReceive(canId, payload) MDISP -> LRC : didActionReceive(Can::Message)\n→ onMessageReceive() == Message handling & forwarding == LRC -> LRC : look up policy in _msgHandling\n(drop / send_always / send_delta) LRC -> AI : send(topic, sequence, protobuf payload) AI -> UDS : write(AgentMessage frame) == AgentSim receives == UDS -> ASC : readyRead → onReadyRead() ASC -> ASC : feed() → didMessageReceive() == Connection events == AI -> LRC : didConnect()\n→ (future) AI -> LRC : didDisconnect()\n→ onAgentDisconnect()\n resets _msgCache received flags AI -> LRC : didMessageReceive()\n→ (future inbound) @enduml