Index: docs/SDD/Seq_RealtimeDataTransfer.puml =================================================================== diff -u -rcaca75be9a284ac5f98c078ec47c2e826ac5e980 -r6d2ef8c97f4bb34204e95811839b3995000c47c1 --- docs/SDD/Seq_RealtimeDataTransfer.puml (.../Seq_RealtimeDataTransfer.puml) (revision caca75be9a284ac5f98c078ec47c2e826ac5e980) +++ docs/SDD/Seq_RealtimeDataTransfer.puml (.../Seq_RealtimeDataTransfer.puml) (revision 6d2ef8c97f4bb34204e95811839b3995000c47c1) @@ -5,8 +5,9 @@ participant "CANDumpPlayer" as CDP participant "CAN Bus\n(SocketCAN)" as CANBUS participant "CloudConnect\n(CloudConnectController)" as LRC -participant "Unix Domain\nSocket" as UDS -participant "AgentSim\n(AgentSimController)" as ASC +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 @@ -19,15 +20,34 @@ LRC -> LRC : MessageDispatcher reassembles\nmulti-frame Can::Message\n(see Seq_CANToCloud for detail) -alt action == drop (or msgId not in _msgHandling) +alt action == Drop (or msgId not in _msgHandling) LRC -> LRC : discard -else action == send_delta AND payload unchanged\n(cached data.chopped(1) == new data.chopped(1)) +else action == SendDelta AND payload unchanged\n(cached data.chopped(1) == new data.chopped(1)) LRC -> LRC : discard (no change) -else action == send_always OR send_delta with new payload +else action == SendAlways OR SendDelta with new payload LRC -> LRC : canMessageToProtobufByteArray()\n→ serialised protobuf bytes - LRC -> UDS : CloudConnectFrame frame\n(msgId=topic, seq++, protobuf payload) - UDS -> ASC : readyRead - ASC -> ASC : CloudConnectFrame::feed() → Complete\nlogMessage() + Envelope parse\n(see Seq_AgentSim for detail) + + 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