~aleteoryx/muditaos

ref: 71fa4c5578eb2ea57899e63c3aa5c42461502483 muditaos/module-services/service-cellular/doc/call_request_handling.svg -rw-r--r-- 20.2 KiB
71fa4c55 — Paweł Joński [BH-721] Fix and add new rrule generator methods 4 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
<?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="969px" preserveAspectRatio="none" style="width:995px;height:969px;" version="1.1" viewBox="0 0 995 969" width="995px" zoomAndPan="magnify"><defs><filter height="300%" id="f1ke4x5lxerpcl" 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><rect fill="#FFFFFF" filter="url(#f1ke4x5lxerpcl)" height="808.0938" style="stroke:#A80036;stroke-width:1.0;" width="10" x="163" y="71.4297"/><rect fill="#FFFFFF" filter="url(#f1ke4x5lxerpcl)" height="538.8984" style="stroke:#A80036;stroke-width:1.0;" width="10" x="399" y="100.5625"/><rect fill="#FFFFFF" filter="url(#f1ke4x5lxerpcl)" height="116.5313" style="stroke:#A80036;stroke-width:1.0;" width="10" x="632" y="792.125"/><rect fill="#FFFFFF" filter="url(#f1ke4x5lxerpcl)" height="29.1328" style="stroke:#A80036;stroke-width:1.0;" width="10" x="772" y="821.2578"/><rect fill="#FFFFFF" filter="url(#f1ke4x5lxerpcl)" height="164.6328" style="stroke:#000000;stroke-width:2.0;" width="588" x="99" y="157.6953"/><rect fill="#FFFFFF" height="73.0703" style="stroke:none;stroke-width:1.0;" width="588" x="99" y="249.2578"/><rect fill="#FFFFFF" filter="url(#f1ke4x5lxerpcl)" height="148.6641" style="stroke:#000000;stroke-width:2.0;" width="608" x="89" y="336.3281"/><rect fill="#FFFFFF" filter="url(#f1ke4x5lxerpcl)" height="75.3984" style="stroke:#000000;stroke-width:2.0;" width="588" x="99" y="402.5938"/><rect fill="#FFFFFF" filter="url(#f1ke4x5lxerpcl)" height="148.4688" style="stroke:#000000;stroke-width:2.0;" width="588" x="99" y="498.9922"/><rect fill="#FFFFFF" height="73.0703" style="stroke:none;stroke-width:1.0;" width="588" x="99" y="574.3906"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:5.0,5.0;" x1="168" x2="168" y1="40.2969" y2="926.6563"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:5.0,5.0;" x1="403.5" x2="403.5" y1="40.2969" y2="926.6563"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:5.0,5.0;" x1="637" x2="637" y1="207.4766" y2="926.6563"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:5.0,5.0;" x1="777" x2="777" y1="40.2969" y2="926.6563"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:5.0,5.0;" x1="931" x2="931" y1="40.2969" y2="926.6563"/><rect fill="#FEFECE" filter="url(#f1ke4x5lxerpcl)" height="30.2969" style="stroke:#A80036;stroke-width:1.5;" width="114" x="109" y="5"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="100" x="116" y="24.9951">ServiceCellular</text><rect fill="#FEFECE" filter="url(#f1ke4x5lxerpcl)" height="30.2969" style="stroke:#A80036;stroke-width:1.5;" width="114" x="109" y="925.6563"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="100" x="116" y="945.6514">ServiceCellular</text><rect fill="#FEFECE" filter="url(#f1ke4x5lxerpcl)" height="30.2969" style="stroke:#A80036;stroke-width:1.5;" width="123" x="340.5" y="5"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="109" x="347.5" y="24.9951">RequestFactory</text><rect fill="#FEFECE" filter="url(#f1ke4x5lxerpcl)" height="30.2969" style="stroke:#A80036;stroke-width:1.5;" width="123" x="340.5" y="925.6563"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="109" x="347.5" y="945.6514">RequestFactory</text><rect fill="#FEFECE" filter="url(#f1ke4x5lxerpcl)" height="30.2969" style="stroke:#A80036;stroke-width:1.5;" width="76" x="597" y="925.6563"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="62" x="604" y="945.6514">IRequest</text><rect fill="#FEFECE" filter="url(#f1ke4x5lxerpcl)" height="30.2969" style="stroke:#A80036;stroke-width:1.5;" width="176" x="687" y="5"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="162" x="694" y="24.9951">CellularRequestHandler</text><rect fill="#FEFECE" filter="url(#f1ke4x5lxerpcl)" height="30.2969" style="stroke:#A80036;stroke-width:1.5;" width="176" x="687" y="925.6563"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="162" x="694" y="945.6514">CellularRequestHandler</text><rect fill="#FEFECE" filter="url(#f1ke4x5lxerpcl)" height="30.2969" style="stroke:#A80036;stroke-width:1.5;" width="104" x="877" y="5"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="90" x="884" y="24.9951">DLCChannel</text><rect fill="#FEFECE" filter="url(#f1ke4x5lxerpcl)" height="30.2969" style="stroke:#A80036;stroke-width:1.5;" width="104" x="877" y="925.6563"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="90" x="884" y="945.6514">DLCChannel</text><rect fill="#FFFFFF" filter="url(#f1ke4x5lxerpcl)" height="808.0938" style="stroke:#A80036;stroke-width:1.0;" width="10" x="163" y="71.4297"/><rect fill="#FFFFFF" filter="url(#f1ke4x5lxerpcl)" height="538.8984" style="stroke:#A80036;stroke-width:1.0;" width="10" x="399" y="100.5625"/><rect fill="#FFFFFF" filter="url(#f1ke4x5lxerpcl)" height="116.5313" style="stroke:#A80036;stroke-width:1.0;" width="10" x="632" y="792.125"/><rect fill="#FFFFFF" filter="url(#f1ke4x5lxerpcl)" height="29.1328" style="stroke:#A80036;stroke-width:1.0;" width="10" x="772" y="821.2578"/><polygon fill="#A80036" points="151,67.4297,161,71.4297,151,75.4297,155,71.4297" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="53" x2="157" y1="71.4297" y2="71.4297"/><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacing" textLength="96" x="60" y="66.3638">call request</text><polygon fill="#A80036" points="387,96.5625,397,100.5625,387,104.5625,391,100.5625" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="173" x2="393" y1="100.5625" y2="100.5625"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="43" x="180" y="95.4966">Create</text><line style="stroke:#A80036;stroke-width:1.0;" x1="409" x2="451" y1="129.6953" y2="129.6953"/><line style="stroke:#A80036;stroke-width:1.0;" x1="451" x2="451" y1="129.6953" y2="142.6953"/><line style="stroke:#A80036;stroke-width:1.0;" x1="410" x2="451" y1="142.6953" y2="142.6953"/><polygon fill="#A80036" points="420,138.6953,410,142.6953,420,146.6953,416,142.6953" style="stroke:#A80036;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="121" x="416" y="124.6294">emergencyCheck()</text><path d="M99,157.6953 L163,157.6953 L163,164.6953 L153,174.6953 L99,174.6953 L99,157.6953 " fill="#EEEEEE" style="stroke:#000000;stroke-width:1.0;"/><rect fill="none" height="164.6328" style="stroke:#000000;stroke-width:2.0;" width="588" x="99" y="157.6953"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="19" x="114" y="170.7622">alt</text><text fill="#000000" font-family="sans-serif" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="178" x="178" y="169.9058">[is emergency and allowed]</text><path d="M692,162.6953 L692,202.6953 L945,202.6953 L945,172.6953 L935,162.6953 L692,162.6953 " fill="#FBFB77" filter="url(#f1ke4x5lxerpcl)" style="stroke:#A80036;stroke-width:1.0;"/><path d="M935,162.6953 L935,172.6953 L945,172.6953 L935,162.6953 " fill="#FBFB77" style="stroke:#A80036;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="232" x="698" y="179.7622">decision depends on the emergency</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="224" x="698" y="194.895">number itself and state of SIM card</text><polygon fill="#A80036" points="585,191.9609,595,195.9609,585,199.9609,589,195.9609" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="409" x2="591" y1="195.9609" y2="195.9609"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="164" x="416" y="190.895">&lt;&lt;create CallRequest&gt;&gt;</text><rect fill="#FEFECE" filter="url(#f1ke4x5lxerpcl)" height="30.2969" style="stroke:#A80036;stroke-width:1.5;" width="76" x="597" y="174.8281"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="62" x="604" y="194.8232">IRequest</text><polygon fill="#A80036" points="184,237.2578,174,241.2578,184,245.2578,180,241.2578" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="178" x2="398" y1="241.2578" y2="241.2578"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="186" x="190" y="236.1919">&lt;&lt;CallRequest : IRequest&gt;&gt;</text><line style="stroke:#000000;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="99" x2="687" y1="250.2578" y2="250.2578"/><text fill="#000000" font-family="sans-serif" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="203" x="104" y="260.4683">[is emergency and not allowed]</text><polygon fill="#A80036" points="625,281.1953,635,285.1953,625,289.1953,629,285.1953" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="409" x2="631" y1="285.1953" y2="285.1953"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="180" x="416" y="280.1294">&lt;&lt;create RejectRequest&gt;&gt;</text><polygon fill="#A80036" points="184,310.3281,174,314.3281,184,318.3281,180,314.3281" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="178" x2="398" y1="314.3281" y2="314.3281"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="202" x="190" y="309.2622">&lt;&lt;RejectRequest : IRequest&gt;&gt;</text><path d="M89,336.3281 L166,336.3281 L166,343.3281 L156,353.3281 L89,353.3281 L89,336.3281 " fill="#EEEEEE" style="stroke:#000000;stroke-width:1.0;"/><rect fill="none" height="148.6641" style="stroke:#000000;stroke-width:2.0;" width="608" x="89" y="336.3281"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="32" x="104" y="349.395">loop</text><text fill="#000000" font-family="sans-serif" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="98" x="181" y="348.5386">[request types]</text><line style="stroke:#A80036;stroke-width:1.0;" x1="409" x2="451" y1="374.5938" y2="374.5938"/><line style="stroke:#A80036;stroke-width:1.0;" x1="451" x2="451" y1="374.5938" y2="387.5938"/><line style="stroke:#A80036;stroke-width:1.0;" x1="410" x2="451" y1="387.5938" y2="387.5938"/><polygon fill="#A80036" points="420,383.5938,410,387.5938,420,391.5938,416,387.5938" style="stroke:#A80036;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="121" x="416" y="369.5278">&lt;&lt;regexmatch&gt;&gt;</text><path d="M99,402.5938 L163,402.5938 L163,409.5938 L153,419.5938 L99,419.5938 L99,402.5938 " fill="#EEEEEE" style="stroke:#000000;stroke-width:1.0;"/><rect fill="none" height="75.3984" style="stroke:#000000;stroke-width:2.0;" width="588" x="99" y="402.5938"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="19" x="114" y="415.6606">alt</text><text fill="#000000" font-family="sans-serif" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="65" x="178" y="414.8042">[matched]</text><polygon fill="#A80036" points="625,436.8594,635,440.8594,625,444.8594,629,440.8594" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="409" x2="631" y1="440.8594" y2="440.8594"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="199" x="416" y="435.7935">&lt;&lt;create matched request&gt;&gt;</text><polygon fill="#A80036" points="184,465.9922,174,469.9922,184,473.9922,180,469.9922" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="178" x2="398" y1="469.9922" y2="469.9922"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="172" x="190" y="464.9263">&lt;&lt; matched : IRequest&gt;&gt;</text><path d="M99,498.9922 L163,498.9922 L163,505.9922 L153,515.9922 L99,515.9922 L99,498.9922 " fill="#EEEEEE" style="stroke:#000000;stroke-width:1.0;"/><rect fill="none" height="148.4688" style="stroke:#000000;stroke-width:2.0;" width="588" x="99" y="498.9922"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="19" x="114" y="512.0591">alt</text><text fill="#000000" font-family="sans-serif" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="111" x="178" y="511.2026">[SIM not present]</text><polygon fill="#A80036" points="625,533.2578,635,537.2578,625,541.2578,629,537.2578" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="409" x2="631" y1="537.2578" y2="537.2578"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="180" x="416" y="532.1919">&lt;&lt;create RejectRequest&gt;&gt;</text><polygon fill="#A80036" points="184,562.3906,174,566.3906,184,570.3906,180,566.3906" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="178" x2="398" y1="566.3906" y2="566.3906"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="135" x="190" y="561.3247">&lt;&lt;RejectRequest&gt;&gt;</text><line style="stroke:#000000;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="99" x2="687" y1="575.3906" y2="575.3906"/><text fill="#000000" font-family="sans-serif" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="37" x="104" y="585.6011">[else]</text><polygon fill="#A80036" points="625,606.3281,635,610.3281,625,614.3281,629,610.3281" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="409" x2="631" y1="610.3281" y2="610.3281"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="164" x="416" y="605.2622">&lt;&lt;create CallRequest&gt;&gt;</text><polygon fill="#A80036" points="184,635.4609,174,639.4609,184,643.4609,180,639.4609" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="178" x2="403" y1="639.4609" y2="639.4609"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="119" x="190" y="634.395">&lt;&lt;CallRequest&gt;&gt;</text><polygon fill="#A80036" points="625,671.5938,635,675.5938,625,679.5938,629,675.5938" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="173" x2="631" y1="675.5938" y2="675.5938"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="75" x="180" y="670.5278">command()</text><polygon fill="#A80036" points="184,700.7266,174,704.7266,184,708.7266,180,704.7266" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="178" x2="636" y1="704.7266" y2="704.7266"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="109" x="190" y="699.6606">&lt;&lt;command&gt;&gt;</text><polygon fill="#A80036" points="919,729.8594,929,733.8594,919,737.8594,923,733.8594" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="173" x2="925" y1="733.8594" y2="733.8594"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="103" x="180" y="728.7935">cmd(command)</text><polygon fill="#A80036" points="184,758.9922,174,762.9922,184,766.9922,180,762.9922" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="178" x2="930" y1="762.9922" y2="762.9922"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="60" x="190" y="757.9263">at::Result</text><polygon fill="#A80036" points="620,788.125,630,792.125,620,796.125,624,792.125" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="173" x2="626" y1="792.125" y2="792.125"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="272" x="180" y="787.0591">Handle(CellularRequestHandler, at::Result)</text><polygon fill="#A80036" points="760,817.2578,770,821.2578,760,825.2578,764,821.2578" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="642" x2="766" y1="821.2578" y2="821.2578"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="110" x="649" y="816.1919">Handle(IRequest)</text><polygon fill="#A80036" points="981,846.3906,991,850.3906,981,854.3906,985,850.3906" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="777" x2="987" y1="850.3906" y2="850.3906"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="192" x="784" y="845.3247">&lt;&lt;specific system actions&gt;&gt;</text><polygon fill="#A80036" points="11,875.5234,1,879.5234,11,883.5234,7,879.5234" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="5" x2="167" y1="879.5234" y2="879.5234"/><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacing" textLength="144" x="17" y="874.4575">multicast response</text><polygon fill="#A80036" points="625,904.6563,635,908.6563,625,912.6563,629,908.6563" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="168" x2="631" y1="908.6563" y2="908.6563"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="40" x="175" y="903.5903">delete</text><line style="stroke:#A80036;stroke-width:2.0;" x1="628" x2="646" y1="899.6563" y2="917.6563"/><line style="stroke:#A80036;stroke-width:2.0;" x1="628" x2="646" y1="917.6563" y2="899.6563"/><!--MD5=[edee2e5540815f12480a1f2d3e978caa]
@startuml
participant ServiceCellular as cellular
participant RequestFactory as factory
participant IRequest as request
participant CellularRequestHandler as handler
participant DLC_channel as channel


?->     cellular + : ""call request""
cellular -> factory + : Create
factory -> factory : emergencyCheck()
alt is emergency and allowed
        factory -> request ** : <<create CallRequest>>
    factory - -> cellular : <<CallRequest : IRequest>>
else is emergency and not allowed
    factory -> request : <<create RejectRequest>>
    factory - -> cellular : <<RejectRequest : IRequest>>
end
note left: decision depends on the emergency\nnumber itself and state of SIM card
loop request types
    factory -> factory : <<regexmatch>>
    alt matched
        factory -> request : <<create matched request>>
        factory - -> cellular : << matched : IRequest>>
    end
end
alt SIM not present
    factory -> request : <<create RejectRequest>>
    factory - -> cellular : <<RejectRequest>>
else else
    factory -> request : <<create CallRequest>>
    factory - -> cellular -: <<CallRequest>>
end
cellular ->request : command()
request - -> cellular: <<command>>
cellular -> channel: cmd(command)
channel - ->cellular : at::Result
cellular -> request +: Handle(CellularRequestHandler, at::Result)
request -> handler + : Handle(IRequest)
handler->? - : <<specific system actions>>
?<- -    cellular - - : ""multicast response""
cellular -> request !! : delete
@enduml

PlantUML version 1.2021.00(Sun Jan 10 11:25:05 CET 2021)
(GPL source distribution)
Java Runtime: OpenJDK Runtime Environment
JVM: OpenJDK 64-Bit Server VM
Default Encoding: UTF-8
Language: en
Country: US
--></g></svg>