~aleteoryx/muditaos

ref: ea27e6871615172000db8664a9d11d1b6103c562 muditaos/module-cellular/Modem/doc/Images/mux_mode.svg -rw-r--r-- 22.9 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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="1445px" preserveAspectRatio="none" style="width:435px;height:1445px;" version="1.1" viewBox="0 0 435 1445" width="435px" zoomAndPan="magnify"><defs><filter height="300%" id="f342a3rt0b12s" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacing" textLength="109" x="156.5" y="16.708">CMUX Mode</text><!--MD5=[36105e52843f3f28080f43ce369346ca]
cluster CellularBSP--><rect fill="#FEFECE" filter="url(#f342a3rt0b12s)" height="277" rx="12.5" ry="12.5" style="stroke:#A80036;stroke-width:1.5;" width="350" x="12" y="27.9531"/><rect fill="#FFFFFF" height="244.7031" rx="12.5" ry="12.5" style="stroke:#FFFFFF;stroke-width:1.0;" width="344" x="15" y="57.25"/><line style="stroke:#A80036;stroke-width:1.5;" x1="12" x2="362" y1="54.25" y2="54.25"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="81" x="146.5" y="45.9482">CellularBSP</text><!--MD5=[4feec3315c2ae8fe0f31fdbe0936cbea]
cluster CellularWorker--><rect fill="#FEFECE" filter="url(#f342a3rt0b12s)" height="505" rx="12.5" ry="12.5" style="stroke:#A80036;stroke-width:1.5;" width="218" x="78" y="393.9531"/><rect fill="#FFFFFF" height="472.7031" rx="12.5" ry="12.5" style="stroke:#FFFFFF;stroke-width:1.0;" width="212" x="81" y="423.25"/><line style="stroke:#A80036;stroke-width:1.5;" x1="78" x2="296" y1="420.25" y2="420.25"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="106" x="134" y="411.9482">CellularWorker</text><!--MD5=[a878dacc166bb130104221e452026b76]
cluster Notifications--><rect fill="#FEFECE" filter="url(#f342a3rt0b12s)" height="189" rx="12.5" ry="12.5" style="stroke:#A80036;stroke-width:1.5;" width="134" x="7" y="1040.9531"/><rect fill="#FFFFFF" height="156.7031" rx="12.5" ry="12.5" style="stroke:#FFFFFF;stroke-width:1.0;" width="128" x="10" y="1070.25"/><line style="stroke:#A80036;stroke-width:1.5;" x1="7" x2="141" y1="1067.25" y2="1067.25"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="92" x="28" y="1058.9482">Notifications</text><!--MD5=[7c76d2c3a8a2b6b7f38b9d3310256c36]
cluster Commands--><rect fill="#FEFECE" filter="url(#f342a3rt0b12s)" height="189" rx="12.5" ry="12.5" style="stroke:#A80036;stroke-width:1.5;" width="132" x="149" y="1040.9531"/><rect fill="#FFFFFF" height="156.7031" rx="12.5" ry="12.5" style="stroke:#FFFFFF;stroke-width:1.0;" width="126" x="152" y="1070.25"/><line style="stroke:#A80036;stroke-width:1.5;" x1="149" x2="281" y1="1067.25" y2="1067.25"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="80" x="175" y="1058.9482">Commands</text><!--MD5=[f21b1f164e99c6b37934f23ad048ad54]
cluster Data--><rect fill="#FEFECE" filter="url(#f342a3rt0b12s)" height="189" rx="12.5" ry="12.5" style="stroke:#A80036;stroke-width:1.5;" width="134" x="289" y="1040.9531"/><rect fill="#FFFFFF" height="156.7031" rx="12.5" ry="12.5" style="stroke:#FFFFFF;stroke-width:1.0;" width="128" x="292" y="1070.25"/><line style="stroke:#A80036;stroke-width:1.5;" x1="289" x2="423" y1="1067.25" y2="1067.25"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="34" x="339" y="1058.9482">Data</text><g id="CellularBSP.UartIrq"><rect fill="#FEFECE" filter="url(#f342a3rt0b12s)" height="64.2344" rx="12.5" ry="12.5" style="stroke:#A80036;stroke-width:1.5;" width="284" x="45" y="62.9531"/><line style="stroke:#A80036;stroke-width:1.5;" x1="45" x2="329" y1="89.25" y2="89.25"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="49" x="162.5" y="80.9482">UartIrq</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="218" x="50" y="105.3887">Reads data with DMA to static buffer</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="264" x="50" y="119.3574">and packs them into struct with result code.</text></g><g id="CellularBSP.SendToWorker"><rect fill="#FEFECE" filter="url(#f342a3rt0b12s)" height="50.2656" rx="12.5" ry="12.5" style="stroke:#A80036;stroke-width:1.5;" width="318" x="28" y="187.9531"/><line style="stroke:#A80036;stroke-width:1.5;" x1="28" x2="346" y1="214.25" y2="214.25"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="107" x="133.5" y="205.9482">SendToWorker</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="298" x="33" y="230.3887">Puts structured data into workers MessageBuffer.</text></g><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="49" x="162.5" y="323.9482">output</text><ellipse cx="187" cy="304.9531" fill="#FEFECE" rx="6" ry="6" style="stroke:#A80036;stroke-width:1.5;"/><line style="stroke:#A80036;stroke-width:1.5;" x1="191.3891" x2="183.6109" y1="309.3422" y2="301.564"/><line style="stroke:#A80036;stroke-width:1.5;" x1="191.3891" x2="183.6109" y1="301.564" y2="309.3422"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="139" x="99.5" y="372.6514">DMAMessageBuffer</text><rect fill="#FEFECE" height="12" style="stroke:#A80036;stroke-width:1.5;" width="48" x="163" y="387.9531"/><line style="stroke:#A80036;stroke-width:1.5;" x1="175" x2="175" y1="387.9531" y2="399.9531"/><line style="stroke:#A80036;stroke-width:1.5;" x1="187" x2="187" y1="387.9531" y2="399.9531"/><line style="stroke:#A80036;stroke-width:1.5;" x1="199" x2="199" y1="387.9531" y2="399.9531"/><g id="CellularWorker.ATParser"><rect fill="#FEFECE" filter="url(#f342a3rt0b12s)" height="50.2656" rx="12.5" ry="12.5" style="stroke:#A80036;stroke-width:1.5;" width="154" x="110" y="465.9531"/><line style="stroke:#A80036;stroke-width:1.5;" x1="110" x2="264" y1="492.25" y2="492.25"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="64" x="155" y="483.9482">ATParser</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="134" x="115" y="508.3887">Parses URC packages.</text></g><g id="CellularWorker.CmdAwaitingResponse"><rect fill="#FEFECE" filter="url(#f342a3rt0b12s)" height="50" rx="12.5" ry="12.5" style="stroke:#A80036;stroke-width:1.5;" width="185" x="94.5" y="576.9531"/><line style="stroke:#A80036;stroke-width:1.5;" x1="94.5" x2="279.5" y1="603.25" y2="603.25"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="165" x="104.5" y="594.9482">CmdAwaitingResponse</text></g><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="101" x="164.5" y="917.9482">workerOutput</text><ellipse cx="215" cy="898.9531" fill="#FEFECE" rx="6" ry="6" style="stroke:#A80036;stroke-width:1.5;"/><line style="stroke:#A80036;stroke-width:1.5;" x1="219.3891" x2="211.6109" y1="903.3422" y2="895.564"/><line style="stroke:#A80036;stroke-width:1.5;" x1="219.3891" x2="211.6109" y1="895.564" y2="903.3422"/><g id="CellularWorker.callback"><rect fill="#FEFECE" filter="url(#f342a3rt0b12s)" height="50" rx="12.5" ry="12.5" style="stroke:#A80036;stroke-width:1.5;" width="79" x="99.5" y="703.9531"/><line style="stroke:#A80036;stroke-width:1.5;" x1="99.5" x2="178.5" y1="730.25" y2="730.25"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="59" x="109.5" y="721.9482">callback</text></g><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="47" x="50.5" y="1019.6514">input1</text><rect fill="#FEFECE" height="12" style="stroke:#A80036;stroke-width:1.5;" width="48" x="68" y="1034.9531"/><line style="stroke:#A80036;stroke-width:1.5;" x1="80" x2="80" y1="1034.9531" y2="1046.9531"/><line style="stroke:#A80036;stroke-width:1.5;" x1="92" x2="92" y1="1034.9531" y2="1046.9531"/><line style="stroke:#A80036;stroke-width:1.5;" x1="104" x2="104" y1="1034.9531" y2="1046.9531"/><g id="Notifications.ATStream1"><rect fill="#FEFECE" filter="url(#f342a3rt0b12s)" height="50" rx="12.5" ry="12.5" style="stroke:#A80036;stroke-width:1.5;" width="101" x="23.5" y="1112.9531"/><line style="stroke:#A80036;stroke-width:1.5;" x1="23.5" x2="124.5" y1="1139.25" y2="1139.25"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="81" x="33.5" y="1130.9482">ATStream1</text></g><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="58" x="72" y="1248.9482">output1</text><ellipse cx="101" cy="1229.9531" fill="#FEFECE" rx="6" ry="6" style="stroke:#A80036;stroke-width:1.5;"/><line style="stroke:#A80036;stroke-width:1.5;" x1="105.3891" x2="97.6109" y1="1234.3422" y2="1226.564"/><line style="stroke:#A80036;stroke-width:1.5;" x1="105.3891" x2="97.6109" y1="1226.564" y2="1234.3422"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="46" x="174" y="1019.6514">input2</text><rect fill="#FEFECE" height="12" style="stroke:#A80036;stroke-width:1.5;" width="48" x="191" y="1034.9531"/><line style="stroke:#A80036;stroke-width:1.5;" x1="203" x2="203" y1="1034.9531" y2="1046.9531"/><line style="stroke:#A80036;stroke-width:1.5;" x1="215" x2="215" y1="1034.9531" y2="1046.9531"/><line style="stroke:#A80036;stroke-width:1.5;" x1="227" x2="227" y1="1034.9531" y2="1046.9531"/><g id="Commands.ATStream2"><rect fill="#FEFECE" filter="url(#f342a3rt0b12s)" height="50" rx="12.5" ry="12.5" style="stroke:#A80036;stroke-width:1.5;" width="100" x="165" y="1112.9531"/><line style="stroke:#A80036;stroke-width:1.5;" x1="165" x2="265" y1="1139.25" y2="1139.25"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="80" x="175" y="1130.9482">ATStream2</text></g><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="57" x="186.5" y="1248.9482">output2</text><ellipse cx="215" cy="1229.9531" fill="#FEFECE" rx="6" ry="6" style="stroke:#A80036;stroke-width:1.5;"/><line style="stroke:#A80036;stroke-width:1.5;" x1="219.3891" x2="211.6109" y1="1234.3422" y2="1226.564"/><line style="stroke:#A80036;stroke-width:1.5;" x1="219.3891" x2="211.6109" y1="1226.564" y2="1234.3422"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="47" x="296.5" y="1019.6514">input3</text><rect fill="#FEFECE" height="12" style="stroke:#A80036;stroke-width:1.5;" width="48" x="314" y="1034.9531"/><line style="stroke:#A80036;stroke-width:1.5;" x1="326" x2="326" y1="1034.9531" y2="1046.9531"/><line style="stroke:#A80036;stroke-width:1.5;" x1="338" x2="338" y1="1034.9531" y2="1046.9531"/><line style="stroke:#A80036;stroke-width:1.5;" x1="350" x2="350" y1="1034.9531" y2="1046.9531"/><g id="Data.ATStream3"><rect fill="#FEFECE" filter="url(#f342a3rt0b12s)" height="50" rx="12.5" ry="12.5" style="stroke:#A80036;stroke-width:1.5;" width="101" x="305.5" y="1112.9531"/><line style="stroke:#A80036;stroke-width:1.5;" x1="305.5" x2="406.5" y1="1139.25" y2="1139.25"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="81" x="315.5" y="1130.9482">ATStream3</text></g><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="58" x="287" y="1248.9482">output3</text><ellipse cx="316" cy="1229.9531" fill="#FEFECE" rx="6" ry="6" style="stroke:#A80036;stroke-width:1.5;"/><line style="stroke:#A80036;stroke-width:1.5;" x1="320.3891" x2="312.6109" y1="1234.3422" y2="1226.564"/><line style="stroke:#A80036;stroke-width:1.5;" x1="320.3891" x2="312.6109" y1="1226.564" y2="1234.3422"/><rect fill="#000000" filter="url(#f342a3rt0b12s)" height="8" style="stroke:none;stroke-width:1.0;" width="80" x="175" y="965.9531"/><rect fill="#000000" filter="url(#f342a3rt0b12s)" height="8" style="stroke:none;stroke-width:1.0;" width="80" x="175" y="1296.9531"/><g id="ServiceCellular"><rect fill="#FEFECE" filter="url(#f342a3rt0b12s)" height="50" rx="12.5" ry="12.5" style="stroke:#A80036;stroke-width:1.5;" width="126" x="152" y="1381.9531"/><line style="stroke:#A80036;stroke-width:1.5;" x1="152" x2="278" y1="1408.25" y2="1408.25"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="106" x="162" y="1399.9482">ServiceCellular</text></g><!--MD5=[a57b3170d04d2bd212a327163f4c8137]
link UartIrq to SendToWorker--><path d="M187,127.0431 C187,144.3131 187,165.6731 187,182.6531 " fill="none" id="UartIrq-to-SendToWorker" style="stroke:#A80036;stroke-width:1.0;"/><polygon fill="#A80036" points="187,187.7731,191,178.7731,187,182.7731,183,178.7731,187,187.7731" style="stroke:#A80036;stroke-width:1.0;"/><!--MD5=[12c5ee31291134eacafef3eedf3c1f48]
link SendToWorker to output--><path d="M187,238.0731 C187,256.2931 187,280.3931 187,293.8131 " fill="none" id="SendToWorker-to-output" style="stroke:#A80036;stroke-width:1.0;"/><polygon fill="#A80036" points="187,298.8631,191,289.8631,187,293.8631,183,289.8631,187,298.8631" style="stroke:#A80036;stroke-width:1.0;"/><!--MD5=[e932264d0d3e1dc4eecdd1ce9c7fd236]
link DMAMessageBuffer to ATParser--><path d="M187,400.0631 C187,411.3331 187,439.0731 187,460.7801 " fill="none" id="DMAMessageBuffer-to-ATParser" style="stroke:#A80036;stroke-width:1.0;"/><polygon fill="#A80036" points="187,465.8731,191,456.8731,187,460.8731,183,456.8731,187,465.8731" style="stroke:#A80036;stroke-width:1.0;"/><!--MD5=[13a40670c7eb8b170560bd331fd78e1e]
link ATParser to CmdAwaitingResponse--><path d="M187,516.1441 C187,532.5131 187,554.2321 187,571.5931 " fill="none" id="ATParser-to-CmdAwaitingResponse" style="stroke:#A80036;stroke-width:1.0;"/><polygon fill="#A80036" points="187,576.8301,191,567.8301,187,571.8301,183,567.8301,187,576.8301" style="stroke:#A80036;stroke-width:1.0;"/><!--MD5=[9a2733e9d3d9be03a03451908a1ba3d9]
link CmdAwaitingResponse to workerOutput--><path d="M189.291,627.0941 C195.068,687.9511 210.046,845.7621 214.02,887.6301 " fill="none" id="CmdAwaitingResponse-to-workerOutput" style="stroke:#A80036;stroke-width:1.0;"/><polygon fill="#A80036" points="214.524,892.9411,217.6549,883.6032,214.0511,887.9635,209.6907,884.3598,214.524,892.9411" style="stroke:#A80036;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="29" x="207" y="797.02">True</text><!--MD5=[d46098a13406a974ef8f13d074dfa6c4]
link CmdAwaitingResponse to callback--><path d="M153.482,626.9631 C144.458,635.3271 135.859,645.5171 131,656.9531 C125.476,669.9541 126.45,685.4391 129.233,698.6241 " fill="none" id="CmdAwaitingResponse-to-callback" style="stroke:#A80036;stroke-width:1.0;"/><polygon fill="#A80036" points="130.427,703.7431,132.2785,694.0699,129.2914,698.8738,124.4875,695.8868,130.427,703.7431" style="stroke:#A80036;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="33" x="132" y="670.02">False</text><!--MD5=[5af6ce0d04d61de9b9e76368ba5a826e]
link input1 to ATStream1--><path d="M91.0322,1047.0611 C88.896,1058.3351 83.6403,1086.0731 79.5275,1107.7801 " fill="none" id="input1-to-ATStream1" style="stroke:#A80036;stroke-width:1.0;"/><polygon fill="#A80036" points="78.5625,1112.8731,84.1668,1104.7742,79.4925,1107.9604,76.3064,1103.2862,78.5625,1112.8731" style="stroke:#A80036;stroke-width:1.0;"/><!--MD5=[8f490082540074d4ee2ef1a6e118265e]
link ATStream1 to output1--><path d="M81.2355,1163.0711 C86.7027,1181.2951 93.9312,1205.3901 97.9581,1218.8131 " fill="none" id="ATStream1-to-output1" style="stroke:#A80036;stroke-width:1.0;"/><polygon fill="#A80036" points="99.473,1223.8641,100.7176,1214.0942,98.036,1219.0751,93.0551,1216.3935,99.473,1223.8641" style="stroke:#A80036;stroke-width:1.0;"/><!--MD5=[0988824bf8ec7c59907bef1cbce29abd]
link input2 to ATStream2--><path d="M215,1047.0611 C215,1058.3351 215,1086.0731 215,1107.7801 " fill="none" id="input2-to-ATStream2" style="stroke:#A80036;stroke-width:1.0;"/><polygon fill="#A80036" points="215,1112.8731,219,1103.8731,215,1107.8731,211,1103.8731,215,1112.8731" style="stroke:#A80036;stroke-width:1.0;"/><!--MD5=[6ea5f7ac2ff21e3e6e6f599ed58b1881]
link ATStream2 to output2--><path d="M215,1163.0711 C215,1181.2951 215,1205.3901 215,1218.8131 " fill="none" id="ATStream2-to-output2" style="stroke:#A80036;stroke-width:1.0;"/><polygon fill="#A80036" points="215,1223.8641,219,1214.8641,215,1218.8641,211,1214.8641,215,1223.8641" style="stroke:#A80036;stroke-width:1.0;"/><!--MD5=[c8610ed9c90908ab582e2197c703e61b]
link input3 to ATStream3--><path d="M338.968,1047.0611 C341.104,1058.3351 346.36,1086.0731 350.473,1107.7801 " fill="none" id="input3-to-ATStream3" style="stroke:#A80036;stroke-width:1.0;"/><polygon fill="#A80036" points="351.437,1112.8731,353.6932,1103.2862,350.507,1107.9604,345.8328,1104.7742,351.437,1112.8731" style="stroke:#A80036;stroke-width:1.0;"/><!--MD5=[d41c41dd4852fd322b9dd1ba5228125c]
link ATStream3 to output3--><path d="M345.281,1163.0711 C337.027,1181.6421 326.064,1206.3091 320.171,1219.5671 " fill="none" id="ATStream3-to-output3" style="stroke:#A80036;stroke-width:1.0;"/><polygon fill="#A80036" points="318.111,1224.2031,325.4202,1217.6019,320.1408,1219.6337,318.109,1214.3543,318.111,1224.2031" style="stroke:#A80036;stroke-width:1.0;"/><!--MD5=[460a876a9029e334c616b58fb8501c7e]
link output to DMAMessageBuffer--><path d="M187,311.1331 C187,325.1931 187,364.2331 187,382.8431 " fill="none" id="output-to-DMAMessageBuffer" style="stroke:#A80036;stroke-width:1.0;"/><polygon fill="#A80036" points="187,387.9031,191,378.9031,187,382.9031,183,378.9031,187,387.9031" style="stroke:#A80036;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="160" x="188" y="354.02">Result{data,resultCode}</text><!--MD5=[613d73f2a6b0064d130614cb72f0ee69]
link workerOutput to channelsFork--><path d="M215,905.3671 C215,917.3761 215,946.3111 215,960.6341 " fill="none" id="workerOutput-to-channelsFork" style="stroke:#A80036;stroke-width:1.0;"/><polygon fill="#A80036" points="215,965.7861,219,956.7861,215,960.7861,211,956.7861,215,965.7861" style="stroke:#A80036;stroke-width:1.0;"/><!--MD5=[2d19209ccd932d018b2d06ef9fb86c8f]
link channelsFork to input1--><path d="M209.395,974.0971 C191.079,984.3721 132.623,1017.1641 105.751,1032.2391 " fill="none" id="channelsFork-to-input1" style="stroke:#A80036;stroke-width:1.0;"/><polygon fill="#A80036" points="101.118,1034.8381,110.9241,1033.9212,105.4782,1032.3909,107.0085,1026.945,101.118,1034.8381" style="stroke:#A80036;stroke-width:1.0;"/><!--MD5=[5fac8884c6f6b68b192a3cbb904f8716]
link channelsFork to input2--><path d="M215,974.2811 C215,984.1591 215,1013.6091 215,1029.5041 " fill="none" id="channelsFork-to-input2" style="stroke:#A80036;stroke-width:1.0;"/><polygon fill="#A80036" points="215,1034.6851,219,1025.6851,215,1029.6851,211,1025.6851,215,1034.6851" style="stroke:#A80036;stroke-width:1.0;"/><!--MD5=[3c5d7806c110bbdbc69ac9b51157b004]
link channelsFork to input3--><path d="M220.605,974.0971 C238.921,984.3721 297.377,1017.1641 324.249,1032.2391 " fill="none" id="channelsFork-to-input3" style="stroke:#A80036;stroke-width:1.0;"/><polygon fill="#A80036" points="328.882,1034.8381,322.9915,1026.945,324.5218,1032.3909,319.0759,1033.9212,328.882,1034.8381" style="stroke:#A80036;stroke-width:1.0;"/><!--MD5=[11b55a60e505a1d49558f29f7757b5a7]
link output1 to channelsJoin--><path d="M105.898,1233.9181 C123.325,1244.4661 182.507,1280.2861 205.632,1294.2831 " fill="none" id="output1-to-channelsJoin" style="stroke:#A80036;stroke-width:1.0;"/><polygon fill="#A80036" points="209.991,1296.9211,204.3612,1288.84,205.713,1294.3329,200.2201,1295.6847,209.991,1296.9211" style="stroke:#A80036;stroke-width:1.0;"/><!--MD5=[920d51171ddf142c6b023bfa2e85b080]
link output2 to channelsJoin--><path d="M215,1236.3671 C215,1248.3761 215,1277.3111 215,1291.6341 " fill="none" id="output2-to-channelsJoin" style="stroke:#A80036;stroke-width:1.0;"/><polygon fill="#A80036" points="215,1296.7861,219,1287.7861,215,1291.7861,211,1287.7861,215,1296.7861" style="stroke:#A80036;stroke-width:1.0;"/><!--MD5=[78d2c976a325450ffc8758782f6c5ecd]
link output3 to channelsJoin--><path d="M311.398,1234.0971 C295.755,1244.7841 244.462,1279.8261 223.77,1293.9621 " fill="none" id="output3-to-channelsJoin" style="stroke:#A80036;stroke-width:1.0;"/><polygon fill="#A80036" points="219.629,1296.7901,229.3169,1295.0169,223.7578,1293.97,224.8047,1288.4108,219.629,1296.7901" style="stroke:#A80036;stroke-width:1.0;"/><!--MD5=[a54a1b5c1c5e133ff80d5fe379df8844]
link channelsJoin to ServiceCellular--><path d="M215,1304.9531 C215,1315.3821 215,1350.8308 215,1376.7961 " fill="none" id="channelsJoin-to-ServiceCellular" style="stroke:#A80036;stroke-width:1.0;"/><polygon fill="#A80036" points="215,1381.8525,219,1372.8525,215,1376.8525,211,1372.8525,215,1381.8525" style="stroke:#A80036;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="206" x="216" y="1348.02">Result{parsedData,resultCode}</text><!--MD5=[1ca860d6e5dd9ee4bdeadd232ce293fa]
@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

PlantUML version 1.2021.4beta1(Unknown compile time)
(GPL source distribution)
Java Runtime: Java(TM) SE Runtime Environment
JVM: Java HotSpot(TM) 64-Bit Server VM
Default Encoding: UTF-8
Language: en
Country: US
--></g></svg>