<?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;" version="1.1" viewBox="0 0 908 467" width="908px" zoomAndPan="magnify"><defs><filter height="300%" id="f1ugik642gy5so" 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(#f1ugik642gy5so)" height="29.1328" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="69.5" y="274.7656"/><rect fill="#FFFFFF" filter="url(#f1ugik642gy5so)" height="87.3984" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="215.5" y="245.6328"/><rect fill="#FFFFFF" filter="url(#f1ugik642gy5so)" height="29.1328" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="402.5" y="216.5"/><rect fill="#FFFFFF" filter="url(#f1ugik642gy5so)" height="29.1328" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="547" y="117.4297"/><rect fill="#FFFFFF" filter="url(#f1ugik642gy5so)" height="29.1328" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="547" y="333.0313"/><rect fill="#FFFFFF" filter="url(#f1ugik642gy5so)" 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(#f1ugik642gy5so)" 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(#f1ugik642gy5so)" 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(#f1ugik642gy5so)" 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(#f1ugik642gy5so)" 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(#f1ugik642gy5so)" style="stroke: #A80036; stroke-width: 2.0;"/><rect fill="#FEFECE" filter="url(#f1ugik642gy5so)" 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(#f1ugik642gy5so)" 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(#f1ugik642gy5so)" 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(#f1ugik642gy5so)" 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(#f1ugik642gy5so)" 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(#f1ugik642gy5so)" 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(#f1ugik642gy5so)" 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(#f1ugik642gy5so)" 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(#f1ugik642gy5so)" height="29.1328" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="69.5" y="274.7656"/><rect fill="#FFFFFF" filter="url(#f1ugik642gy5so)" height="87.3984" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="215.5" y="245.6328"/><rect fill="#FFFFFF" filter="url(#f1ugik642gy5so)" height="29.1328" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="402.5" y="216.5"/><rect fill="#FFFFFF" filter="url(#f1ugik642gy5so)" height="29.1328" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="547" y="117.4297"/><rect fill="#FFFFFF" filter="url(#f1ugik642gy5so)" height="29.1328" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="547" y="333.0313"/><rect fill="#FFFFFF" filter="url(#f1ugik642gy5so)" 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(#f1ugik642gy5so)" 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="451.25" 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><!--
@startuml
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.2018.13(Mon Nov 26 18:11:51 CET 2018)
(GPL source distribution)
Java Runtime: OpenJDK Runtime Environment
JVM: OpenJDK 64-Bit Server VM
Java Version: 11.0.10+9-Ubuntu-0ubuntu1.20.04
Operating System: Linux
OS Version: 5.8.0-44-generic
Default Encoding: UTF-8
Language: en
Country: US
--></g></svg>