~aleteoryx/muditaos

ref: ea27e6871615172000db8664a9d11d1b6103c562 muditaos/module-cellular/Modem/doc/Images/cmx_mode.uml -rw-r--r-- 1.4 KiB
ea27e687 — Maciej Janicki [EGD-5748] Remake Cellular flow 5 years ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
@startuml
Title CMUX Mode

state CellularBSP {
  UartIrq: Reads data with DMA to static buffer
  UartIrq: and packs them into struct with result code.
  UartIrq --> SendToWorker
  SendToWorker: Puts structured data into workers MessageBuffer.
  SendToWorker --> output

  state output <<exitPoint>>
}

state CellularWorker{
  state DMAMessageBuffer <<expansionInput>> 

  DMAMessageBuffer --> ATParser
  ATParser: Parses URC packages.
  ATParser --> CmdAwaitingResponse
  
  state CmdAwaitingResponse <<choice>>
  CmdAwaitingResponse ----> workerOutput : True
  CmdAwaitingResponse --> callback : False

  state workerOutput <<exitPoint>>
}

state Notifications {
  state input1 <<expansionInput>>
  
  input1 --> ATStream1 
  
  ATStream1 --> output1

  state output1 <<exitPoint>>
}

state Commands {
  state input2 <<expansionInput>>
  
  input2 --> ATStream2 
  
  ATStream2 --> output2

  state output2 <<exitPoint>>
}

state Data {
  state input3 <<expansionInput>>
  
  input3 --> ATStream3 

  ATStream3 --> output3

  state output3 <<exitPoint>>
}

state channelsFork <<fork>>
state channelsJoin <<join>>

output --> DMAMessageBuffer : Result{data,resultCode}
workerOutput --> channelsFork
channelsFork --> input1
channelsFork --> input2
channelsFork --> input3
output1 --> channelsJoin
output2 --> channelsJoin
output3 --> channelsJoin
channelsJoin --> ServiceCellular : Result{parsedData,resultCode}
@enduml