<?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="1324px" preserveAspectRatio="none" style="width:405px;height:1324px;" version="1.1" viewBox="0 0 405 1324" width="405px" zoomAndPan="magnify"><defs><filter height="300%" id="f1cg90pa4di60m" 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="78" x="157" y="16.708">AT Mode</text><!--MD5=[36105e52843f3f28080f43ce369346ca]
cluster CellularBSP--><rect fill="#FEFECE" filter="url(#f1cg90pa4di60m)" height="277" rx="12.5" ry="12.5" style="stroke:#A80036;stroke-width:1.5;" width="350" x="7" 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="10" y="57.25"/><line style="stroke:#A80036;stroke-width:1.5;" x1="7" x2="357" y1="54.25" y2="54.25"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="81" x="141.5" y="45.9482">CellularBSP</text><!--MD5=[4feec3315c2ae8fe0f31fdbe0936cbea]
cluster CellularWorker--><rect fill="#FEFECE" filter="url(#f1cg90pa4di60m)" height="554" rx="12.5" ry="12.5" style="stroke:#A80036;stroke-width:1.5;" width="295" x="29" y="377.9531"/><rect fill="#FFFFFF" height="521.7031" rx="12.5" ry="12.5" style="stroke:#FFFFFF;stroke-width:1.0;" width="289" x="32" y="407.25"/><line style="stroke:#A80036;stroke-width:1.5;" x1="29" x2="324" y1="404.25" y2="404.25"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="106" x="123.5" y="395.9482">CellularWorker</text><!--MD5=[df0b49b3bcea4a1034e7e56a9608b471]
cluster Channel--><rect fill="#FEFECE" filter="url(#f1cg90pa4di60m)" height="189" rx="12.5" ry="12.5" style="stroke:#A80036;stroke-width:1.5;" width="174" x="219" y="1004.9531"/><rect fill="#FFFFFF" height="156.7031" rx="12.5" ry="12.5" style="stroke:#FFFFFF;stroke-width:1.0;" width="168" x="222" y="1034.25"/><line style="stroke:#A80036;stroke-width:1.5;" x1="219" x2="393" y1="1031.25" y2="1031.25"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="58" x="277" y="1022.9482">Channel</text><g id="CellularBSP.UartIrq"><rect fill="#FEFECE" filter="url(#f1cg90pa4di60m)" height="64.2344" rx="12.5" ry="12.5" style="stroke:#A80036;stroke-width:1.5;" width="284" x="40" y="62.9531"/><line style="stroke:#A80036;stroke-width:1.5;" x1="40" x2="324" y1="89.25" y2="89.25"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="49" x="157.5" y="80.9482">UartIrq</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="218" x="45" 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="45" y="119.3574">and packs them into struct with result code.</text></g><g id="CellularBSP.SendToWorker"><rect fill="#FEFECE" filter="url(#f1cg90pa4di60m)" height="50.2656" rx="12.5" ry="12.5" style="stroke:#A80036;stroke-width:1.5;" width="318" x="23" y="187.9531"/><line style="stroke:#A80036;stroke-width:1.5;" x1="23" x2="341" y1="214.25" y2="214.25"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="107" x="128.5" y="205.9482">SendToWorker</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="298" x="28" 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="157.5" y="323.9482">output</text><ellipse cx="182" 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="186.3891" x2="178.6109" y1="309.3422" y2="301.564"/><line style="stroke:#A80036;stroke-width:1.5;" x1="186.3891" x2="178.6109" y1="301.564" y2="309.3422"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="139" x="94.5" y="356.6514">DMAMessageBuffer</text><rect fill="#FEFECE" height="12" style="stroke:#A80036;stroke-width:1.5;" width="48" x="158" y="371.9531"/><line style="stroke:#A80036;stroke-width:1.5;" x1="170" x2="170" y1="371.9531" y2="383.9531"/><line style="stroke:#A80036;stroke-width:1.5;" x1="182" x2="182" y1="371.9531" y2="383.9531"/><line style="stroke:#A80036;stroke-width:1.5;" x1="194" x2="194" y1="371.9531" y2="383.9531"/><g id="CellularWorker.ATParser"><rect fill="#FEFECE" filter="url(#f1cg90pa4di60m)" height="50.2656" rx="12.5" ry="12.5" style="stroke:#A80036;stroke-width:1.5;" width="154" x="105" y="449.9531"/><line style="stroke:#A80036;stroke-width:1.5;" x1="105" x2="259" y1="476.25" y2="476.25"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="64" x="150" y="467.9482">ATParser</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="134" x="110" y="492.3887">Parses URC packages.</text></g><g id="CellularWorker.CmdAwaitingResponse"><rect fill="#FEFECE" filter="url(#f1cg90pa4di60m)" height="50" rx="12.5" ry="12.5" style="stroke:#A80036;stroke-width:1.5;" width="185" x="89.5" y="560.9531"/><line style="stroke:#A80036;stroke-width:1.5;" x1="89.5" x2="274.5" y1="587.25" y2="587.25"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="165" x="99.5" y="578.9482">CmdAwaitingResponse</text></g><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="102" x="255" y="950.9482">outputWorker</text><ellipse cx="306" cy="931.9531" fill="#FEFECE" rx="6" ry="6" style="stroke:#A80036;stroke-width:1.5;"/><line style="stroke:#A80036;stroke-width:1.5;" x1="310.3891" x2="302.6109" y1="936.3422" y2="928.564"/><line style="stroke:#A80036;stroke-width:1.5;" x1="310.3891" x2="302.6109" y1="928.564" y2="936.3422"/><g id="CellularWorker.CheckIfFOTA"><rect fill="#FEFECE" filter="url(#f1cg90pa4di60m)" height="50" rx="12.5" ry="12.5" style="stroke:#A80036;stroke-width:1.5;" width="113" x="125.5" y="687.9531"/><line style="stroke:#A80036;stroke-width:1.5;" x1="125.5" x2="238.5" y1="714.25" y2="714.25"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="93" x="135.5" y="705.9482">CheckIfFOTA</text></g><g id="CellularWorker.StoreURC"><rect fill="#FEFECE" filter="url(#f1cg90pa4di60m)" height="50" rx="12.5" ry="12.5" style="stroke:#A80036;stroke-width:1.5;" width="89" x="45.5" y="814.9531"/><line style="stroke:#A80036;stroke-width:1.5;" x1="45.5" x2="134.5" y1="841.25" y2="841.25"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="69" x="55.5" y="832.9482">StoreURC</text></g><g id="CellularWorker.FotaService"><rect fill="#FEFECE" filter="url(#f1cg90pa4di60m)" height="50" rx="12.5" ry="12.5" style="stroke:#A80036;stroke-width:1.5;" width="105" x="169.5" y="814.9531"/><line style="stroke:#A80036;stroke-width:1.5;" x1="169.5" x2="274.5" y1="841.25" y2="841.25"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="85" x="179.5" y="832.9482">FotaService</text></g><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="64" x="256" y="983.6514">ATBuffer</text><rect fill="#FEFECE" height="12" style="stroke:#A80036;stroke-width:1.5;" width="48" x="282" y="998.9531"/><line style="stroke:#A80036;stroke-width:1.5;" x1="294" x2="294" y1="998.9531" y2="1010.9531"/><line style="stroke:#A80036;stroke-width:1.5;" x1="306" x2="306" y1="998.9531" y2="1010.9531"/><line style="stroke:#A80036;stroke-width:1.5;" x1="318" x2="318" y1="998.9531" y2="1010.9531"/><g id="Channel.ATStream"><rect fill="#FEFECE" filter="url(#f1cg90pa4di60m)" height="50.2656" rx="12.5" ry="12.5" style="stroke:#A80036;stroke-width:1.5;" width="141" x="235.5" y="1076.9531"/><line style="stroke:#A80036;stroke-width:1.5;" x1="235.5" x2="376.5" y1="1103.25" y2="1103.25"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="72" x="270" y="1094.9482">ATStream</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="121" x="240.5" y="1119.3887">parses AT message</text></g><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="107" x="252.5" y="1212.9482">channelOutput</text><ellipse cx="306" cy="1193.9531" fill="#FEFECE" rx="6" ry="6" style="stroke:#A80036;stroke-width:1.5;"/><line style="stroke:#A80036;stroke-width:1.5;" x1="310.3891" x2="302.6109" y1="1198.3422" y2="1190.564"/><line style="stroke:#A80036;stroke-width:1.5;" x1="310.3891" x2="302.6109" y1="1190.564" y2="1198.3422"/><g id="ServiceCellular"><rect fill="#FEFECE" filter="url(#f1cg90pa4di60m)" height="50" rx="12.5" ry="12.5" style="stroke:#A80036;stroke-width:1.5;" width="126" x="243" y="1260.9531"/><line style="stroke:#A80036;stroke-width:1.5;" x1="243" x2="369" y1="1287.25" y2="1287.25"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="106" x="253" y="1278.9482">ServiceCellular</text></g><!--MD5=[a57b3170d04d2bd212a327163f4c8137]
link UartIrq to SendToWorker--><path d="M182,127.0431 C182,144.3131 182,165.6731 182,182.6531 " fill="none" id="UartIrq-to-SendToWorker" style="stroke:#A80036;stroke-width:1.0;"/><polygon fill="#A80036" points="182,187.7731,186,178.7731,182,182.7731,178,178.7731,182,187.7731" style="stroke:#A80036;stroke-width:1.0;"/><!--MD5=[12c5ee31291134eacafef3eedf3c1f48]
link SendToWorker to output--><path d="M182,238.0731 C182,256.2931 182,280.3931 182,293.8131 " fill="none" id="SendToWorker-to-output" style="stroke:#A80036;stroke-width:1.0;"/><polygon fill="#A80036" points="182,298.8631,186,289.8631,182,293.8631,178,289.8631,182,298.8631" style="stroke:#A80036;stroke-width:1.0;"/><!--MD5=[e932264d0d3e1dc4eecdd1ce9c7fd236]
link DMAMessageBuffer to ATParser--><path d="M182,384.0611 C182,395.3351 182,423.0731 182,444.7801 " fill="none" id="DMAMessageBuffer-to-ATParser" style="stroke:#A80036;stroke-width:1.0;"/><polygon fill="#A80036" points="182,449.8731,186,440.8731,182,444.8731,178,440.8731,182,449.8731" style="stroke:#A80036;stroke-width:1.0;"/><!--MD5=[13a40670c7eb8b170560bd331fd78e1e]
link ATParser to CmdAwaitingResponse--><path d="M182,500.1441 C182,516.5131 182,538.2321 182,555.5931 " fill="none" id="ATParser-to-CmdAwaitingResponse" style="stroke:#A80036;stroke-width:1.0;"/><polygon fill="#A80036" points="182,560.8301,186,551.8301,182,555.8301,178,551.8301,182,560.8301" style="stroke:#A80036;stroke-width:1.0;"/><!--MD5=[777abd894339136b04c29cf487b6773b]
link CmdAwaitingResponse to outputWorker--><path d="M203.533,611.0751 C219.963,630.5941 242.074,659.4351 256,687.9531 C296.557,771.0041 304.253,885.5621 305.682,920.4531 " fill="none" id="CmdAwaitingResponse-to-outputWorker" style="stroke:#A80036;stroke-width:1.0;"/><polygon fill="#A80036" points="305.872,925.6871,309.5401,916.5468,305.6891,920.6905,301.5455,916.8395,305.872,925.6871" style="stroke:#A80036;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="29" x="289" y="781.02">True</text><!--MD5=[8a7a058cbacea9da7579bb2851695ae5]
link CmdAwaitingResponse to CheckIfFOTA--><path d="M168.072,611.1631 C163.609,620.2081 159.244,630.7631 157,640.9531 C153.871,655.1611 158.191,670.4391 164.073,683.1691 " fill="none" id="CmdAwaitingResponse-to-CheckIfFOTA" style="stroke:#A80036;stroke-width:1.0;"/><polygon fill="#A80036" points="166.3,687.7371,165.9509,677.8945,164.1086,683.2429,158.7601,681.4007,166.3,687.7371" style="stroke:#A80036;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="33" x="158" y="654.02">False</text><!--MD5=[fd94f81ce2f3862349c63c5a12cf90a3]
link CheckIfFOTA to StoreURC--><path d="M155.402,738.1951 C146.442,747.0751 136.758,757.5161 129,767.9531 C119.287,781.0221 110.382,796.7921 103.541,810.1471 " fill="none" id="CheckIfFOTA-to-StoreURC" style="stroke:#A80036;stroke-width:1.0;"/><polygon fill="#A80036" points="101.117,814.9491,108.7436,808.7173,103.3702,810.4856,101.6019,805.1122,101.117,814.9491" style="stroke:#A80036;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="33" x="130" y="781.02">False</text><!--MD5=[2bf7f23f6b2f1fdfd1cbf2b79eff56c5]
link CheckIfFOTA to FotaService--><path d="M174.406,737.9881 C171.221,752.0771 169.4,769.9881 175,784.9531 C178.492,794.2831 184.405,803.0651 190.88,810.7271 " fill="none" id="CheckIfFOTA-to-FotaService" style="stroke:#A80036;stroke-width:1.0;"/><polygon fill="#A80036" points="194.524,814.8641,191.5787,805.466,191.2199,811.1114,185.5744,810.7526,194.524,814.8641" style="stroke:#A80036;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="29" x="176" y="781.02">True</text><!--MD5=[460a876a9029e334c616b58fb8501c7e]
link output to DMAMessageBuffer--><path d="M182,311.0591 C182,322.7261 182,351.5151 182,366.8911 " fill="none" id="output-to-DMAMessageBuffer" style="stroke:#A80036;stroke-width:1.0;"/><polygon fill="#A80036" points="182,371.8931,186,362.8931,182,366.8931,178,362.8931,182,371.8931" style="stroke:#A80036;stroke-width:1.0;"/><!--MD5=[f66c76729024c907a3d48f760668579d]
link ATBuffer to ATStream--><path d="M306,1011.0611 C306,1022.3351 306,1050.0731 306,1071.7801 " fill="none" id="ATBuffer-to-ATStream" style="stroke:#A80036;stroke-width:1.0;"/><polygon fill="#A80036" points="306,1076.8731,310,1067.8731,306,1071.8731,302,1067.8731,306,1076.8731" style="stroke:#A80036;stroke-width:1.0;"/><!--MD5=[dd80df3ee72f240316d7675a269eb8c4]
link ATStream to channelOutput--><path d="M306,1127.0711 C306,1145.2951 306,1169.3901 306,1182.8131 " fill="none" id="ATStream-to-channelOutput" style="stroke:#A80036;stroke-width:1.0;"/><polygon fill="#A80036" points="306,1187.8641,310,1178.8641,306,1182.8641,302,1178.8641,306,1187.8641" style="stroke:#A80036;stroke-width:1.0;"/><!--MD5=[8fe72049e9716dbce24d7677e0dd4d3e]
link outputWorker to ATBuffer--><path d="M306,938.0591 C306,949.7261 306,978.5151 306,993.8911 " fill="none" id="outputWorker-to-ATBuffer" style="stroke:#A80036;stroke-width:1.0;"/><polygon fill="#A80036" points="306,998.8931,310,989.8931,306,993.8931,302,989.8931,306,998.8931" style="stroke:#A80036;stroke-width:1.0;"/><!--MD5=[4663c35d14db62ee482ccec530d01964]
link channelOutput to ServiceCellular--><path d="M306,1200.0501 C306,1210.6081 306,1235.5673 306,1255.7077 " fill="none" id="channelOutput-to-ServiceCellular" style="stroke:#A80036;stroke-width:1.0;"/><polygon fill="#A80036" points="306,1260.7127,310,1251.7127,306,1255.7127,302,1251.7127,306,1260.7127" style="stroke:#A80036;stroke-width:1.0;"/><!--MD5=[8213d0f92b754f55ac336ef108bd4edb]
@startuml
Title AT 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 - - - -> outputWorker : True
CmdAwaitingResponse - -> CheckIfFOTA : False
CheckIfFOTA - -> StoreURC : False
CheckIfFOTA - -> FotaService : True
state outputWorker <<exitPoint>>
}
output - -> DMAMessageBuffer
state Channel {
state ATBuffer <<expansionInput>>
ATBuffer - -> ATStream
ATStream: parses AT message
ATStream - -> channelOutput
state channelOutput <<exitPoint>>
}
outputWorker - -> ATBuffer
channelOutput - -> ServiceCellular
@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>