Index: docs/SDD/Class_Overview.puml =================================================================== diff -u -rcaca75be9a284ac5f98c078ec47c2e826ac5e980 -r6d2ef8c97f4bb34204e95811839b3995000c47c1 --- docs/SDD/Class_Overview.puml (.../Class_Overview.puml) (revision caca75be9a284ac5f98c078ec47c2e826ac5e980) +++ docs/SDD/Class_Overview.puml (.../Class_Overview.puml) (revision 6d2ef8c97f4bb34204e95811839b3995000c47c1) @@ -16,17 +16,15 @@ -_dispatcher: Can::MessageDispatcher -_msgHandling: QHash -_msgCache: QMap> - -_agentInterface: CloudConnectClient - -_agentThread: QThread + -_appServer: CloudConnectServer -_txSequence: quint16 __ +CloudConnectController(configPath, msgHandlingPath) - +connectToAgent() + +listenForApp(): bool -loadMsgHandling(msgHandlingPath) __ -onFrameReceive(QCanBusFrame) -onMessageReceive(Can::Message) - -onAgentDisconnect() } } @@ -61,10 +59,10 @@ -_rxMsg: CloudConnectFrame __ +init(socketPath, reconnectIntervalMs, thread): bool - +send(msgId, sequence, payload): bool + +send(type, sequence, payload): bool +quit() <> __ - +didMessageReceive(MsgId, seq, payload) <> + +didMessageReceive(Type, seq, payload) <> +didConnect() <> +didDisconnect() <> __ @@ -75,6 +73,25 @@ -onReconnectTimer() <> } + class CloudConnectServer { + -_server: QLocalServer + -_client: QLocalSocket* + -_rxBuf: QByteArray + -_rxMsg: CloudConnectFrame + __ + +listen(socketPath): bool + +send(type, sequence, payload): bool + +isConnected(): bool + __ + +didMessageReceive(Type, seq, payload) <> + +didConnect() <> + +didDisconnect() <> + __ + -onNewConnection() <> + -onDisconnected() <> + -onReadyRead() <> + } + class "Can::MessageDispatcher" as MessageDispatcher { -_messageList: QHash -_rxSequence: Sequence @@ -96,56 +113,35 @@ class CloudConnectFrame { -_headerBuf: QByteArray - -_rxMsgId: MsgId + -_rxType: Type -_rxSequence: quint16 -_rxPayloadLen: quint32 -_rxPayload: QByteArray __ - +{static} build(msgId, sequence, payload): QByteArray - +feed(bytes: QByteArray&): FeedResult - +msgId(): MsgId + +{static} build(type, sequence, payload): QByteArray + +read(bytes: QByteArray&): ReadState + +type(): Type +sequence(): quint16 +payload(): QByteArray +reset() } - enum "CloudConnectFrame::MsgId" as AgentMsgId { - ClinicalData = 0x0001 - Diagnostic = 0x0002 - Ack = 0x0003 - Alarms = 0x0004 - Audit = 0x0005 - DeviceLogFile = 0x0006 - TreatmentLogFile = 0x0007 - CloudSyncLogFile = 0x0008 + enum "CloudConnectFrame::Type" as Type { + HighPriority = 0x0001 + NormalPriority = 0x0002 + DeviceLogFile = 0x0003 + TreatmentLogFile = 0x0004 + CloudSyncLogFile = 0x0005 } - enum "CloudConnectFrame::FeedResult" as FeedResult { + enum "CloudConnectFrame::ReadState" as ReadState { Incomplete Complete HeaderError PayloadError } } -package "AgentSim (process)" { - class AgentSimController <> { - -_settings: QSettings - -_server: QLocalServer - -_client: QLocalSocket* - -_rxBuf: QByteArray - -_rxMsg: CloudConnectFrame - __ - +listen(): bool - -handleMessage(CloudConnectFrame) - -logMessage(MsgId, seq, payload) - __ - -onNewConnection() <> - -onDisconnected() <> - -onReadyRead() <> - } -} - package "CANDumpPlayer (process)" { class "CANDumpPlayer\n(main)" <> { +can_interface: string @@ -159,19 +155,19 @@ ' --- composition --- CloudConnectController *-- CanInterface -CloudConnectController *-- CloudConnectClient +CloudConnectController *-- CloudConnectServer CloudConnectController *-- MessageDispatcher ' --- internal composition --- MessageDispatcher *-- MessageBuilder ' --- usage --- +CloudConnectServer ..> CloudConnectFrame : uses CloudConnectClient ..> CloudConnectFrame : uses -AgentSimController ..> CloudConnectFrame : uses ' --- enum nesting --- -CloudConnectFrame +-- AgentMsgId -CloudConnectFrame +-- FeedResult +CloudConnectFrame +-- Type +CloudConnectFrame +-- ReadState ' --- layout hints --- CanInterface -[hidden]- CloudConnectClient