@startuml Seq_RealtimeDataTransfer title Real-time Data Transfer — End-to-End Scenario participant "CANDumpPlayer" as CDP participant "CAN Bus\n(SocketCAN)" as CANBUS participant "CloudConnect\n(CloudConnectController)" as LRC participant "CloudConnectServer" as RS participant "Luis application" as APP participant "Cloud pipeline\n(planned)" as PIPE note over CDP Replays a candump log onto SocketCAN at a configurable speed multiplier. See Seq_CANDumpPlayer for detail. end note CDP -> CANBUS : writeFrame(can_id, payload) CANBUS -> LRC : didFrameReceive(QCanBusFrame) LRC -> LRC : MessageDispatcher reassembles\nmulti-frame Can::Message\n(see Seq_CANToCloud for detail) alt action == Drop (or msgId not in _msgHandling) LRC -> LRC : discard else action == SendDelta AND payload unchanged\n(cached data.chopped(1) == new data.chopped(1)) LRC -> LRC : discard (no change) else action == SendAlways OR SendDelta with new payload LRC -> LRC : canMessageToProtobufByteArray()\n→ serialised protobuf bytes LRC -> RS : send(topic, seq++, protobuf payload) RS -> APP : CloudConnectFrame frame over\n/tmp/cloudconnect.sock LRC -->> PIPE : route → spool → publish end note over PIPE NOT YET IMPLEMENTED. The Connectivity Agent process and its UDS have been removed. The replacement in-process pipeline is: Router → resolve MQTT topic from Type, build Envelope MessageSpool → durable insert BEFORE publish MqttPublisher → QoS 1 PUBLISH to AWS IoT Core → PUBACK → MessageSpool::remove() SpoolDrain → replay spooled messages on reconnect Until this lands, nothing is sent to the cloud. See docs/SDD/AgentMigrationPlan.md Phases 2-3. end note @enduml