<?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="467px" preserveAspectRatio="none" style="width:908px;height:467px;background:#F0F0F0;" version="1.1" viewBox="0 0 908 467" width="908px" zoomAndPan="magnify"><defs><filter height="300%" id="fehg936av5gxa" 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(#fehg936av5gxa)" height="29.1328" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="69.5" y="274.7656"/><rect fill="#FFFFFF" filter="url(#fehg936av5gxa)" height="87.3984" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="215.5" y="245.6328"/><rect fill="#FFFFFF" filter="url(#fehg936av5gxa)" height="29.1328" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="402.5" y="216.5"/><rect fill="#FFFFFF" filter="url(#fehg936av5gxa)" height="29.1328" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="547" y="117.4297"/><rect fill="#FFFFFF" filter="url(#fehg936av5gxa)" height="29.1328" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="547" y="333.0313"/><rect fill="#FFFFFF" filter="url(#fehg936av5gxa)" height="58.2656" style="stroke: #FFFFFF; stroke-width: 1.0;" width="10" x="819" y="96.2969"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="819" x2="819" y1="96.2969" y2="154.5625"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="829" x2="829" y1="96.2969" y2="154.5625"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="819" x2="829" y1="96.2969" y2="96.2969"/><rect fill="#FFFFFF" filter="url(#fehg936av5gxa)" height="175.7969" style="stroke: #FFFFFF; stroke-width: 1.0;" width="10" x="819" y="195.3672"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="819" x2="819" y1="195.3672" y2="371.1641"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="829" x2="829" y1="195.3672" y2="371.1641"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="74" x2="74" y1="86.2969" y2="154.5625"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,4.0;" x1="74" x2="74" y1="154.5625" y2="195.3672"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="74" x2="74" y1="195.3672" y2="380.1641"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="220" x2="220" y1="86.2969" y2="154.5625"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,4.0;" x1="220" x2="220" y1="154.5625" y2="195.3672"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="220" x2="220" y1="195.3672" y2="380.1641"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="407.5" x2="407.5" y1="86.2969" y2="154.5625"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,4.0;" x1="407.5" x2="407.5" y1="154.5625" y2="195.3672"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="407.5" x2="407.5" y1="195.3672" y2="380.1641"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="551.5" x2="551.5" y1="86.2969" y2="154.5625"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,4.0;" x1="551.5" x2="551.5" y1="154.5625" y2="195.3672"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="551.5" x2="551.5" y1="195.3672" y2="380.1641"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="824" x2="824" y1="86.2969" y2="154.5625"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,4.0;" x1="824" x2="824" y1="154.5625" y2="195.3672"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="824" x2="824" y1="195.3672" y2="380.1641"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="127" x="8" y="82.9951">External BT device</text><ellipse cx="74.5" cy="13" fill="#FEFECE" filter="url(#fehg936av5gxa)" rx="8" ry="8" style="stroke: #A80036; stroke-width: 2.0;"/><path d="M74.5,21 L74.5,48 M61.5,29 L87.5,29 M74.5,48 L61.5,63 M74.5,48 L87.5,63 " fill="none" filter="url(#fehg936av5gxa)" style="stroke: #A80036; stroke-width: 2.0;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="127" x="8" y="392.1592">External BT device</text><ellipse cx="74.5" cy="405.4609" fill="#FEFECE" filter="url(#fehg936av5gxa)" rx="8" ry="8" style="stroke: #A80036; stroke-width: 2.0;"/><path d="M74.5,413.4609 L74.5,440.4609 M61.5,421.4609 L87.5,421.4609 M74.5,440.4609 L61.5,455.4609 M74.5,440.4609 L87.5,455.4609 " fill="none" filter="url(#fehg936av5gxa)" style="stroke: #A80036; stroke-width: 2.0;"/><rect fill="#FEFECE" filter="url(#fehg936av5gxa)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="135" x="151" y="51"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="121" x="158" y="70.9951">Worker Bluetooth</text><rect fill="#FEFECE" filter="url(#fehg936av5gxa)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="135" x="151" y="379.1641"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="121" x="158" y="399.1592">Worker Bluetooth</text><rect fill="#FEFECE" filter="url(#fehg936av5gxa)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="136" x="337.5" y="51"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="122" x="344.5" y="70.9951">Service Bluetooth</text><rect fill="#FEFECE" filter="url(#fehg936av5gxa)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="136" x="337.5" y="379.1641"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="122" x="344.5" y="399.1592">Service Bluetooth</text><rect fill="#FEFECE" filter="url(#fehg936av5gxa)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="125" x="487.5" y="51"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="111" x="494.5" y="70.9951">Database Agent</text><rect fill="#FEFECE" filter="url(#fehg936av5gxa)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="125" x="487.5" y="379.1641"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="111" x="494.5" y="399.1592">Database Agent</text><rect fill="#FEFECE" filter="url(#fehg936av5gxa)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="150" x="747" y="51"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="136" x="754" y="70.9951">Application Settings</text><rect fill="#FEFECE" filter="url(#fehg936av5gxa)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="150" x="747" y="379.1641"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="136" x="754" y="399.1592">Application Settings</text><rect fill="#FFFFFF" filter="url(#fehg936av5gxa)" height="29.1328" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="69.5" y="274.7656"/><rect fill="#FFFFFF" filter="url(#fehg936av5gxa)" height="87.3984" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="215.5" y="245.6328"/><rect fill="#FFFFFF" filter="url(#fehg936av5gxa)" height="29.1328" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="402.5" y="216.5"/><rect fill="#FFFFFF" filter="url(#fehg936av5gxa)" height="29.1328" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="547" y="117.4297"/><rect fill="#FFFFFF" filter="url(#fehg936av5gxa)" height="29.1328" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="547" y="333.0313"/><rect fill="#FFFFFF" filter="url(#fehg936av5gxa)" height="58.2656" style="stroke: #FFFFFF; stroke-width: 1.0;" width="10" x="819" y="96.2969"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="819" x2="819" y1="96.2969" y2="154.5625"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="829" x2="829" y1="96.2969" y2="154.5625"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="819" x2="829" y1="96.2969" y2="96.2969"/><rect fill="#FFFFFF" filter="url(#fehg936av5gxa)" height="175.7969" style="stroke: #FFFFFF; stroke-width: 1.0;" width="10" x="819" y="195.3672"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="819" x2="819" y1="195.3672" y2="371.1641"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="829" x2="829" y1="195.3672" y2="371.1641"/><polygon fill="#A80036" points="568,113.4297,558,117.4297,568,121.4297,564,117.4297" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="562" x2="818" y1="117.4297" y2="117.4297"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="243" x="574" y="112.3638">register cb on bonded devices change</text><polygon fill="#A80036" points="807,142.5625,817,146.5625,807,150.5625,811,146.5625" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="552" x2="813" y1="146.5625" y2="146.5625"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="155" x="559" y="141.4966">bonded devices callback</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="0" x="450.75" y="178.7729"/><polygon fill="#A80036" points="423.5,212.5,413.5,216.5,423.5,220.5,419.5,216.5" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="417.5" x2="818" y1="216.5" y2="216.5"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="117" x="429.5" y="211.4341">pair msg(address)</text><polygon fill="#A80036" points="236.5,241.6328,226.5,245.6328,236.5,249.6328,232.5,245.6328" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="230.5" x2="406.5" y1="245.6328" y2="245.6328"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="158" x="242.5" y="240.5669">command(pair, address)</text><polygon fill="#A80036" points="90.5,270.7656,80.5,274.7656,90.5,278.7656,86.5,274.7656" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="84.5" x2="214.5" y1="274.7656" y2="274.7656"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="96.5" y="269.6997">bond</text><polygon fill="#A80036" points="203.5,299.8984,213.5,303.8984,203.5,307.8984,207.5,303.8984" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="74.5" x2="209.5" y1="303.8984" y2="303.8984"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="52" x="81.5" y="298.8325">respond</text><polygon fill="#A80036" points="535,329.0313,545,333.0313,535,337.0313,539,333.0313" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="220.5" x2="541" y1="333.0313" y2="333.0313"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="149" x="227.5" y="327.9653">update bonded devices</text><polygon fill="#A80036" points="807,358.1641,817,362.1641,807,366.1641,811,362.1641" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="552" x2="813" y1="362.1641" y2="362.1641"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="155" x="559" y="357.0981">bonded devices callback</text><!--MD5=[3d3f1ac1f7462bd4790273cb02dd2ff2]
@startuml
skinparam BackgroundColor F0F0F0
actor "External BT device" as extbt
participant "Worker Bluetooth" as workbt
participant "Service Bluetooth" as srvbt
participant "Database Agent" as sett
participant "Application Settings" as appsett
activate appsett
appsett -> sett : register cb on bonded devices change
activate sett
appsett <- sett : bonded devices callback
deactivate sett
... ...
appsett->srvbt : pair msg(address)
activate srvbt
srvbt -> workbt : command(pair, address)
deactivate srvbt
activate workbt
workbt -> extbt : bond
activate extbt
workbt <- - extbt : respond
deactivate extbt
workbt -> sett : update bonded devices
deactivate workbt
activate sett
appsett <- sett : bonded devices callback
deactivate sett
@enduml
PlantUML version 1.2020.02(Sun Mar 01 05:22:07 EST 2020)
(GPL source distribution)
Java Runtime: OpenJDK Runtime Environment
JVM: OpenJDK 64-Bit Server VM
Java Version: 11.0.12+7-post-Debian-2
Operating System: Linux
Default Encoding: UTF-8
Language: en
Country: US
--></g></svg>