~aleteoryx/muditaos

193f8e736ee6e0e3067a4e3b3dab083caf980d3f — Bartosz Cichocki 5 years ago 8372183
[EGD-4578] bluetooth: added interface messages (#1116)

Add Bluetooth interface messages

[EGD-4578] updated class diagram

Co-authored-by: SP2FET <bartosz.cichocki@mudita.com>
M module-bluetooth/bt_messages_class_diagram.puml => module-bluetooth/bt_messages_class_diagram.puml +11 -28
@@ 2,38 2,21 @@

title BluetoothMessages - Class Diagram


class BluetoothMessage

class RequestBluetoothStatus
class RequestBondedDevices
class RequestDeviceName

class ResponseBluetoothStatus
class ResponseBondedDevices
class ResponseDeviceName
class ResponseVisibleDevices

class SetBluetoothStatus
class SetBondedDevices
class SetDeviceName
class SetScanState

BluetoothMessage <|-left- RequestBluetoothStatus: Inheritance
BluetoothMessage <|-up- RequestBondedDevices: Inheritance
BluetoothMessage <|-up- RequestDeviceName: Inheritance


BluetoothMessage <|-up- ResponseBluetoothStatus: Inheritance
BluetoothMessage <|-up- ResponseBondedDevices: Inheritance
BluetoothMessage <|-right- ResponseDeviceName: Inheritance
BluetoothMessage <|-down- ResponseVisibleDevices: Inheritance
class RequestBluetoothStatus implements BluetoothMessage
class RequestBondedDevices implements BluetoothMessage
class RequestDeviceName implements BluetoothMessage

class ResponseBluetoothStatus implements BluetoothMessage
class ResponseBondedDevices implements BluetoothMessage
class ResponseDeviceName implements BluetoothMessage
class ResponseVisibleDevices implements BluetoothMessage

BluetoothMessage <|-down- SetBluetoothStatus: Inheritance
BluetoothMessage <|-down- SetBondedDevices: Inheritance
BluetoothMessage <|-down- SetDeviceName: Inheritance
BluetoothMessage <|-down- SetScanState: Inheritance
class SetBluetoothStatus implements BluetoothMessage
class SetBondedDevices implements BluetoothMessage
class SetDeviceName implements BluetoothMessage
class SetScanState implements BluetoothMessage




M module-bluetooth/bt_messages_class_diagram.svg => module-bluetooth/bt_messages_class_diagram.svg +37 -52
@@ 1,70 1,55 @@
<?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="337px" preserveAspectRatio="none" style="width:902px;height:337px;" version="1.1" viewBox="0 0 902 337" width="902px" zoomAndPan="magnify"><defs><filter height="300%" id="f1ninxj1xw85cl" 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="spacingAndGlyphs" textLength="313" x="298" y="16.708">BluetoothMessages - Class Diagram</text><!--MD5=[23fc707ad27c8e6ea052f1129144ac7b]
class BluetoothMessage--><rect fill="#FEFECE" filter="url(#f1ninxj1xw85cl)" height="48" id="BluetoothMessage" style="stroke: #A80036; stroke-width: 1.5;" width="149" x="413.5" y="153.9531"/><ellipse cx="428.5" cy="169.9531" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M431.4688,175.5938 Q430.8906,175.8906 430.25,176.0391 Q429.6094,176.1875 428.9063,176.1875 Q426.4063,176.1875 425.0859,174.5391 Q423.7656,172.8906 423.7656,169.7656 Q423.7656,166.6406 425.0859,164.9844 Q426.4063,163.3281 428.9063,163.3281 Q429.6094,163.3281 430.2578,163.4844 Q430.9063,163.6406 431.4688,163.9375 L431.4688,166.6563 Q430.8438,166.0781 430.25,165.8047 Q429.6563,165.5313 429.0313,165.5313 Q427.6875,165.5313 427,166.6016 Q426.3125,167.6719 426.3125,169.7656 Q426.3125,171.8594 427,172.9297 Q427.6875,174 429.0313,174 Q429.6563,174 430.25,173.7266 Q430.8438,173.4531 431.4688,172.875 L431.4688,175.5938 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="117" x="442.5" y="174.1074">BluetoothMessage</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="414.5" x2="561.5" y1="185.9531" y2="185.9531"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="414.5" x2="561.5" y1="193.9531" y2="193.9531"/><!--MD5=[b68a6893fb5fe43c9ba686fe799938b5]
class RequestBluetoothStatus--><rect fill="#FEFECE" filter="url(#f1ninxj1xw85cl)" height="48" id="RequestBluetoothStatus" style="stroke: #A80036; stroke-width: 1.5;" width="186" x="120" y="153.9531"/><ellipse cx="135" cy="169.9531" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M137.9688,175.5938 Q137.3906,175.8906 136.75,176.0391 Q136.1094,176.1875 135.4063,176.1875 Q132.9063,176.1875 131.5859,174.5391 Q130.2656,172.8906 130.2656,169.7656 Q130.2656,166.6406 131.5859,164.9844 Q132.9063,163.3281 135.4063,163.3281 Q136.1094,163.3281 136.7578,163.4844 Q137.4063,163.6406 137.9688,163.9375 L137.9688,166.6563 Q137.3438,166.0781 136.75,165.8047 Q136.1563,165.5313 135.5313,165.5313 Q134.1875,165.5313 133.5,166.6016 Q132.8125,167.6719 132.8125,169.7656 Q132.8125,171.8594 133.5,172.9297 Q134.1875,174 135.5313,174 Q136.1563,174 136.75,173.7266 Q137.3438,173.4531 137.9688,172.875 L137.9688,175.5938 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="154" x="149" y="174.1074">RequestBluetoothStatus</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="121" x2="305" y1="185.9531" y2="185.9531"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="121" x2="305" y1="193.9531" y2="193.9531"/><!--MD5=[cc960df078a163385707cbd025b1228e]
class RequestBondedDevices--><rect fill="#FEFECE" filter="url(#f1ninxj1xw85cl)" height="48" id="RequestBondedDevices" style="stroke: #A80036; stroke-width: 1.5;" width="180" x="711" y="28.9531"/><ellipse cx="726" cy="44.9531" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M728.9688,50.5938 Q728.3906,50.8906 727.75,51.0391 Q727.1094,51.1875 726.4063,51.1875 Q723.9063,51.1875 722.5859,49.5391 Q721.2656,47.8906 721.2656,44.7656 Q721.2656,41.6406 722.5859,39.9844 Q723.9063,38.3281 726.4063,38.3281 Q727.1094,38.3281 727.7578,38.4844 Q728.4063,38.6406 728.9688,38.9375 L728.9688,41.6563 Q728.3438,41.0781 727.75,40.8047 Q727.1563,40.5313 726.5313,40.5313 Q725.1875,40.5313 724.5,41.6016 Q723.8125,42.6719 723.8125,44.7656 Q723.8125,46.8594 724.5,47.9297 Q725.1875,49 726.5313,49 Q727.1563,49 727.75,48.7266 Q728.3438,48.4531 728.9688,47.875 L728.9688,50.5938 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="148" x="740" y="49.1074">RequestBondedDevices</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="712" x2="890" y1="60.9531" y2="60.9531"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="712" x2="890" y1="68.9531" y2="68.9531"/><!--MD5=[f1a36d6b3380e677ad379c4765f0f72c]
class RequestDeviceName--><rect fill="#FEFECE" filter="url(#f1ninxj1xw85cl)" height="48" id="RequestDeviceName" style="stroke: #A80036; stroke-width: 1.5;" width="161" x="514.5" y="28.9531"/><ellipse cx="529.5" cy="44.9531" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M532.4688,50.5938 Q531.8906,50.8906 531.25,51.0391 Q530.6094,51.1875 529.9063,51.1875 Q527.4063,51.1875 526.0859,49.5391 Q524.7656,47.8906 524.7656,44.7656 Q524.7656,41.6406 526.0859,39.9844 Q527.4063,38.3281 529.9063,38.3281 Q530.6094,38.3281 531.2578,38.4844 Q531.9063,38.6406 532.4688,38.9375 L532.4688,41.6563 Q531.8438,41.0781 531.25,40.8047 Q530.6563,40.5313 530.0313,40.5313 Q528.6875,40.5313 528,41.6016 Q527.3125,42.6719 527.3125,44.7656 Q527.3125,46.8594 528,47.9297 Q528.6875,49 530.0313,49 Q530.6563,49 531.25,48.7266 Q531.8438,48.4531 532.4688,47.875 L532.4688,50.5938 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="129" x="543.5" y="49.1074">RequestDeviceName</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="515.5" x2="674.5" y1="60.9531" y2="60.9531"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="515.5" x2="674.5" y1="68.9531" y2="68.9531"/><!--MD5=[997e5b1c613c646acbb63a9dc35e5d22]
class ResponseBluetoothStatus--><rect fill="#FEFECE" filter="url(#f1ninxj1xw85cl)" height="48" id="ResponseBluetoothStatus" style="stroke: #A80036; stroke-width: 1.5;" width="196" x="283" y="28.9531"/><ellipse cx="298" cy="44.9531" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M300.9688,50.5938 Q300.3906,50.8906 299.75,51.0391 Q299.1094,51.1875 298.4063,51.1875 Q295.9063,51.1875 294.5859,49.5391 Q293.2656,47.8906 293.2656,44.7656 Q293.2656,41.6406 294.5859,39.9844 Q295.9063,38.3281 298.4063,38.3281 Q299.1094,38.3281 299.7578,38.4844 Q300.4063,38.6406 300.9688,38.9375 L300.9688,41.6563 Q300.3438,41.0781 299.75,40.8047 Q299.1563,40.5313 298.5313,40.5313 Q297.1875,40.5313 296.5,41.6016 Q295.8125,42.6719 295.8125,44.7656 Q295.8125,46.8594 296.5,47.9297 Q297.1875,49 298.5313,49 Q299.1563,49 299.75,48.7266 Q300.3438,48.4531 300.9688,47.875 L300.9688,50.5938 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="164" x="312" y="49.1074">ResponseBluetoothStatus</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="284" x2="478" y1="60.9531" y2="60.9531"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="284" x2="478" y1="68.9531" y2="68.9531"/><!--MD5=[eb512bcfdbef1ba9066f1482e200ba23]
class ResponseBondedDevices--><rect fill="#FEFECE" filter="url(#f1ninxj1xw85cl)" height="48" id="ResponseBondedDevices" style="stroke: #A80036; stroke-width: 1.5;" width="190" x="58" y="28.9531"/><ellipse cx="73" cy="44.9531" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M75.9688,50.5938 Q75.3906,50.8906 74.75,51.0391 Q74.1094,51.1875 73.4063,51.1875 Q70.9063,51.1875 69.5859,49.5391 Q68.2656,47.8906 68.2656,44.7656 Q68.2656,41.6406 69.5859,39.9844 Q70.9063,38.3281 73.4063,38.3281 Q74.1094,38.3281 74.7578,38.4844 Q75.4063,38.6406 75.9688,38.9375 L75.9688,41.6563 Q75.3438,41.0781 74.75,40.8047 Q74.1563,40.5313 73.5313,40.5313 Q72.1875,40.5313 71.5,41.6016 Q70.8125,42.6719 70.8125,44.7656 Q70.8125,46.8594 71.5,47.9297 Q72.1875,49 73.5313,49 Q74.1563,49 74.75,48.7266 Q75.3438,48.4531 75.9688,47.875 L75.9688,50.5938 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="158" x="87" y="49.1074">ResponseBondedDevices</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="59" x2="247" y1="60.9531" y2="60.9531"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="59" x2="247" y1="68.9531" y2="68.9531"/><!--MD5=[3faab22c1f830479f961f6e769115a5d]
class ResponseDeviceName--><rect fill="#FEFECE" filter="url(#f1ninxj1xw85cl)" height="48" id="ResponseDeviceName" style="stroke: #A80036; stroke-width: 1.5;" width="171" x="670.5" y="153.9531"/><ellipse cx="685.5" cy="169.9531" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M688.4688,175.5938 Q687.8906,175.8906 687.25,176.0391 Q686.6094,176.1875 685.9063,176.1875 Q683.4063,176.1875 682.0859,174.5391 Q680.7656,172.8906 680.7656,169.7656 Q680.7656,166.6406 682.0859,164.9844 Q683.4063,163.3281 685.9063,163.3281 Q686.6094,163.3281 687.2578,163.4844 Q687.9063,163.6406 688.4688,163.9375 L688.4688,166.6563 Q687.8438,166.0781 687.25,165.8047 Q686.6563,165.5313 686.0313,165.5313 Q684.6875,165.5313 684,166.6016 Q683.3125,167.6719 683.3125,169.7656 Q683.3125,171.8594 684,172.9297 Q684.6875,174 686.0313,174 Q686.6563,174 687.25,173.7266 Q687.8438,173.4531 688.4688,172.875 L688.4688,175.5938 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="139" x="699.5" y="174.1074">ResponseDeviceName</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="671.5" x2="840.5" y1="185.9531" y2="185.9531"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="671.5" x2="840.5" y1="193.9531" y2="193.9531"/><!--MD5=[16efb683b245cffa4f1d0163265c1862]
class ResponseVisibleDevices--><rect fill="#FEFECE" filter="url(#f1ninxj1xw85cl)" height="48" id="ResponseVisibleDevices" style="stroke: #A80036; stroke-width: 1.5;" width="182" x="6" y="278.9531"/><ellipse cx="21" cy="294.9531" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M23.9688,300.5938 Q23.3906,300.8906 22.75,301.0391 Q22.1094,301.1875 21.4063,301.1875 Q18.9063,301.1875 17.5859,299.5391 Q16.2656,297.8906 16.2656,294.7656 Q16.2656,291.6406 17.5859,289.9844 Q18.9063,288.3281 21.4063,288.3281 Q22.1094,288.3281 22.7578,288.4844 Q23.4063,288.6406 23.9688,288.9375 L23.9688,291.6563 Q23.3438,291.0781 22.75,290.8047 Q22.1563,290.5313 21.5313,290.5313 Q20.1875,290.5313 19.5,291.6016 Q18.8125,292.6719 18.8125,294.7656 Q18.8125,296.8594 19.5,297.9297 Q20.1875,299 21.5313,299 Q22.1563,299 22.75,298.7266 Q23.3438,298.4531 23.9688,297.875 L23.9688,300.5938 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="150" x="35" y="299.1074">ResponseVisibleDevices</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="187" y1="310.9531" y2="310.9531"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="187" y1="318.9531" y2="318.9531"/><!--MD5=[55dcaea49b6f335663f06ba5e29d8711]
class SetBluetoothStatus--><rect fill="#FEFECE" filter="url(#f1ninxj1xw85cl)" height="48" id="SetBluetoothStatus" style="stroke: #A80036; stroke-width: 1.5;" width="155" x="223.5" y="278.9531"/><ellipse cx="238.5" cy="294.9531" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M241.4688,300.5938 Q240.8906,300.8906 240.25,301.0391 Q239.6094,301.1875 238.9063,301.1875 Q236.4063,301.1875 235.0859,299.5391 Q233.7656,297.8906 233.7656,294.7656 Q233.7656,291.6406 235.0859,289.9844 Q236.4063,288.3281 238.9063,288.3281 Q239.6094,288.3281 240.2578,288.4844 Q240.9063,288.6406 241.4688,288.9375 L241.4688,291.6563 Q240.8438,291.0781 240.25,290.8047 Q239.6563,290.5313 239.0313,290.5313 Q237.6875,290.5313 237,291.6016 Q236.3125,292.6719 236.3125,294.7656 Q236.3125,296.8594 237,297.9297 Q237.6875,299 239.0313,299 Q239.6563,299 240.25,298.7266 Q240.8438,298.4531 241.4688,297.875 L241.4688,300.5938 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="123" x="252.5" y="299.1074">SetBluetoothStatus</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="224.5" x2="377.5" y1="310.9531" y2="310.9531"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="224.5" x2="377.5" y1="318.9531" y2="318.9531"/><!--MD5=[75c2d557c56179bba89b9164f9048e30]
class SetBondedDevices--><rect fill="#FEFECE" filter="url(#f1ninxj1xw85cl)" height="48" id="SetBondedDevices" style="stroke: #A80036; stroke-width: 1.5;" width="149" x="413.5" y="278.9531"/><ellipse cx="428.5" cy="294.9531" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M431.4688,300.5938 Q430.8906,300.8906 430.25,301.0391 Q429.6094,301.1875 428.9063,301.1875 Q426.4063,301.1875 425.0859,299.5391 Q423.7656,297.8906 423.7656,294.7656 Q423.7656,291.6406 425.0859,289.9844 Q426.4063,288.3281 428.9063,288.3281 Q429.6094,288.3281 430.2578,288.4844 Q430.9063,288.6406 431.4688,288.9375 L431.4688,291.6563 Q430.8438,291.0781 430.25,290.8047 Q429.6563,290.5313 429.0313,290.5313 Q427.6875,290.5313 427,291.6016 Q426.3125,292.6719 426.3125,294.7656 Q426.3125,296.8594 427,297.9297 Q427.6875,299 429.0313,299 Q429.6563,299 430.25,298.7266 Q430.8438,298.4531 431.4688,297.875 L431.4688,300.5938 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="117" x="442.5" y="299.1074">SetBondedDevices</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="414.5" x2="561.5" y1="310.9531" y2="310.9531"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="414.5" x2="561.5" y1="318.9531" y2="318.9531"/><!--MD5=[8139fa2621595fc198f831176f26a933]
class SetDeviceName--><rect fill="#FEFECE" filter="url(#f1ninxj1xw85cl)" height="48" id="SetDeviceName" style="stroke: #A80036; stroke-width: 1.5;" width="130" x="598" y="278.9531"/><ellipse cx="613" cy="294.9531" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M615.9688,300.5938 Q615.3906,300.8906 614.75,301.0391 Q614.1094,301.1875 613.4063,301.1875 Q610.9063,301.1875 609.5859,299.5391 Q608.2656,297.8906 608.2656,294.7656 Q608.2656,291.6406 609.5859,289.9844 Q610.9063,288.3281 613.4063,288.3281 Q614.1094,288.3281 614.7578,288.4844 Q615.4063,288.6406 615.9688,288.9375 L615.9688,291.6563 Q615.3438,291.0781 614.75,290.8047 Q614.1563,290.5313 613.5313,290.5313 Q612.1875,290.5313 611.5,291.6016 Q610.8125,292.6719 610.8125,294.7656 Q610.8125,296.8594 611.5,297.9297 Q612.1875,299 613.5313,299 Q614.1563,299 614.75,298.7266 Q615.3438,298.4531 615.9688,297.875 L615.9688,300.5938 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="98" x="627" y="299.1074">SetDeviceName</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="599" x2="727" y1="310.9531" y2="310.9531"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="599" x2="727" y1="318.9531" y2="318.9531"/><!--MD5=[8cf19ae717c5ffa0942c17e0d92fc75b]
class SetScanState--><rect fill="#FEFECE" filter="url(#f1ninxj1xw85cl)" height="48" id="SetScanState" style="stroke: #A80036; stroke-width: 1.5;" width="118" x="763" y="278.9531"/><ellipse cx="778" cy="294.9531" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M780.9688,300.5938 Q780.3906,300.8906 779.75,301.0391 Q779.1094,301.1875 778.4063,301.1875 Q775.9063,301.1875 774.5859,299.5391 Q773.2656,297.8906 773.2656,294.7656 Q773.2656,291.6406 774.5859,289.9844 Q775.9063,288.3281 778.4063,288.3281 Q779.1094,288.3281 779.7578,288.4844 Q780.4063,288.6406 780.9688,288.9375 L780.9688,291.6563 Q780.3438,291.0781 779.75,290.8047 Q779.1563,290.5313 778.5313,290.5313 Q777.1875,290.5313 776.5,291.6016 Q775.8125,292.6719 775.8125,294.7656 Q775.8125,296.8594 776.5,297.9297 Q777.1875,299 778.5313,299 Q779.1563,299 779.75,298.7266 Q780.3438,298.4531 780.9688,297.875 L780.9688,300.5938 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="86" x="792" y="299.1074">SetScanState</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="764" x2="880" y1="310.9531" y2="310.9531"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="764" x2="880" y1="318.9531" y2="318.9531"/><!--MD5=[73ba01893e771b4f052bc4c2c3173fe2]
link RequestBluetoothStatus to BluetoothMessage--><path d="M306.1025,177.9531 C334.0526,177.9531 364.7445,177.9531 392.8265,177.9531 " fill="none" id="RequestBluetoothStatus-&gt;BluetoothMessage" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="none" points="393.2183,170.953,413.2183,177.9531,393.2183,184.953,393.2183,170.953" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="71" x="324.25" y="171.02">Inheritance</text><!--MD5=[3552c17c7fd4794cfafc4959abe3dcdf]
link RequestBondedDevices to BluetoothMessage--><path d="M743.0636,77.0909 C709.5226,90.9745 666.4596,108.6459 628,123.9531 C609.3093,131.3921 589.156,139.2567 570.1232,146.6132 " fill="none" id="RequestBondedDevices-&gt;BluetoothMessage" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="none" points="572.3622,153.252,551.1828,153.9104,567.329,140.1881,572.3622,153.252" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="71" x="667" y="120.02">Inheritance</text><!--MD5=[fd008eeed691456ddd735d4f025be011]
link RequestDeviceName to BluetoothMessage--><path d="M574.3693,77.0544 C559.4187,94.52 538.8769,118.5175 521.5774,138.7272 " fill="none" id="RequestDeviceName-&gt;BluetoothMessage" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="none" points="526.891,143.2841,508.5673,153.9258,516.2554,134.1801,526.891,143.2841" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="71" x="548" y="120.02">Inheritance</text><!--MD5=[122c458fca63b9aff4b84eee201d8d52]
link ResponseBluetoothStatus to BluetoothMessage--><path d="M401.6307,77.0544 C416.5813,94.52 437.1231,118.5175 454.4226,138.7272 " fill="none" id="ResponseBluetoothStatus-&gt;BluetoothMessage" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="none" points="459.7446,134.1801,467.4327,153.9258,449.109,143.2841,459.7446,134.1801" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="71" x="442" y="120.02">Inheritance</text><!--MD5=[103f9fc16a112e257e1cfe02f2b18527]
link ResponseBondedDevices to BluetoothMessage--><path d="M217.5914,77.0544 C270.8875,96.941 346.8783,125.2957 404.7387,146.8855 " fill="none" id="ResponseBondedDevices-&gt;BluetoothMessage" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="none" points="407.316,140.3756,423.6069,153.9258,402.4217,153.4923,407.316,140.3756" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="71" x="342" y="120.02">Inheritance</text><!--MD5=[0df839f176d4e8747e1fa4ab5a231c8c]
reverse link BluetoothMessage to ResponseDeviceName--><path d="M582.8796,177.9531 C611.4009,177.9531 642.5139,177.9531 670.3971,177.9531 " fill="none" id="BluetoothMessage&lt;-ResponseDeviceName" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="none" points="582.653,184.953,562.6529,177.9531,582.6529,170.953,582.653,184.953" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="71" x="581" y="171.02">Inheritance</text><!--MD5=[033a85fd32f3b3aef0299180834d08b5]
reverse link BluetoothMessage to ResponseVisibleDevices--><path d="M394.2498,204.3733 C364.9392,212.8864 332.5447,222.5557 303,231.9531 C256.497,246.7446 204.5524,264.6574 164.4585,278.79 " fill="none" id="BluetoothMessage&lt;-ResponseVisibleDevices" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="none" points="392.3318,197.6412,413.4885,198.8216,396.2134,211.0924,392.3318,197.6412" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="71" x="304" y="245.02">Inheritance</text><!--MD5=[b1d91fbcaf829313f55081fceaec155a]
reverse link BluetoothMessage to SetBluetoothStatus--><path d="M434.9143,213.3197 C425.6087,219.526 416.0198,225.9257 407,231.9531 C383.6115,247.5822 357.3412,265.178 336.8045,278.9428 " fill="none" id="BluetoothMessage&lt;-SetBluetoothStatus" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="none" points="431.1754,207.3993,451.6993,202.1293,438.9415,219.0479,431.1754,207.3993" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="71" x="408" y="245.02">Inheritance</text><!--MD5=[5be4832e50a96e9afd6716a5726789fc]
reverse link BluetoothMessage to SetBondedDevices--><path d="M488,222.1354 C488,241.245 488,262.8606 488,278.9258 " fill="none" id="BluetoothMessage&lt;-SetBondedDevices" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="none" points="481.0001,222.0544,488,202.0544,495.0001,222.0543,481.0001,222.0544" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="71" x="489" y="245.02">Inheritance</text><!--MD5=[9e81130095896bc22196e3fc1c87645b]
reverse link BluetoothMessage to SetDeviceName--><path d="M541.6472,213.0735 C550.8355,219.2719 560.2398,225.7328 569,231.9531 C590.3444,247.109 613.8444,264.859 632.0083,278.82 " fill="none" id="BluetoothMessage&lt;-SetDeviceName" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="none" points="537.7517,218.8894,525.0046,201.9627,545.5251,207.2458,537.7517,218.8894" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="71" x="590" y="245.02">Inheritance</text><!--MD5=[27d3195f2473dab648037e6c3b9e7d94]
reverse link BluetoothMessage to SetScanState--><path d="M582.0307,202.9603 C610.5784,211.3238 641.8337,221.2641 670,231.9531 C706.0809,245.6457 745.5313,264.1843 775.1976,278.8845 " fill="none" id="BluetoothMessage&lt;-SetScanState" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="none" points="580.0635,209.6784,562.7708,197.4323,583.9259,196.2217,580.0635,209.6784" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="71" x="709" y="245.02">Inheritance</text><!--MD5=[c3530f9c1db8aa2bb047a02e3783307d]
<?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="197px" preserveAspectRatio="none" style="width:2192px;height:197px;" version="1.1" viewBox="0 0 2192 197" width="2192px" zoomAndPan="magnify"><defs><filter height="300%" id="f4xudy7d4d6fh" 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="spacingAndGlyphs" textLength="313" x="933" y="16.708">BluetoothMessages - Class Diagram</text><!--MD5=[23fc707ad27c8e6ea052f1129144ac7b]
class BluetoothMessage--><rect codeLine="4" fill="#FEFECE" filter="url(#f4xudy7d4d6fh)" height="48" id="BluetoothMessage" style="stroke: #A80036; stroke-width: 1.5;" width="149" x="1107.5" y="27.9531"/><ellipse cx="1122.5" cy="43.9531" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1126.0156,47.9844 L1126.0156,50.0156 Q1124.5313,50.625 1122.7031,50.625 Q1119.9844,50.625 1118.5313,48.8906 Q1117.0781,47.1406 1117.0781,44.0313 Q1117.0781,41.0313 1118.6563,39.25 Q1120.2344,37.4531 1122.9531,37.4531 Q1124.8594,37.4531 1126.5938,38.375 L1125.6406,40.2813 Q1124.1406,39.5 1122.9531,39.5 Q1121.3438,39.5 1120.3594,40.7188 Q1119.3906,41.9219 1119.3906,44.0469 Q1119.3906,46.2969 1120.2969,47.4375 Q1121.2188,48.5781 1122.9531,48.5781 Q1123.9844,48.5781 1126.0156,47.9844 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="117" x="1136.5" y="48.1074">BluetoothMessage</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="1108.5" x2="1255.5" y1="59.9531" y2="59.9531"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1108.5" x2="1255.5" y1="67.9531" y2="67.9531"/><!--MD5=[b68a6893fb5fe43c9ba686fe799938b5]
class RequestBluetoothStatus--><rect codeLine="6" fill="#FEFECE" filter="url(#f4xudy7d4d6fh)" height="48" id="RequestBluetoothStatus" style="stroke: #A80036; stroke-width: 1.5;" width="186" x="7" y="135.9531"/><ellipse cx="22" cy="151.9531" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M25.5156,155.9844 L25.5156,158.0156 Q24.0313,158.625 22.2031,158.625 Q19.4844,158.625 18.0313,156.8906 Q16.5781,155.1406 16.5781,152.0313 Q16.5781,149.0313 18.1563,147.25 Q19.7344,145.4531 22.4531,145.4531 Q24.3594,145.4531 26.0938,146.375 L25.1406,148.2813 Q23.6406,147.5 22.4531,147.5 Q20.8438,147.5 19.8594,148.7188 Q18.8906,149.9219 18.8906,152.0469 Q18.8906,154.2969 19.7969,155.4375 Q20.7188,156.5781 22.4531,156.5781 Q23.4844,156.5781 25.5156,155.9844 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="154" x="36" y="156.1074">RequestBluetoothStatus</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="8" x2="192" y1="167.9531" y2="167.9531"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="8" x2="192" y1="175.9531" y2="175.9531"/><!--MD5=[cc960df078a163385707cbd025b1228e]
class RequestBondedDevices--><rect codeLine="7" fill="#FEFECE" filter="url(#f4xudy7d4d6fh)" height="48" id="RequestBondedDevices" style="stroke: #A80036; stroke-width: 1.5;" width="180" x="228" y="135.9531"/><ellipse cx="243" cy="151.9531" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M246.5156,155.9844 L246.5156,158.0156 Q245.0313,158.625 243.2031,158.625 Q240.4844,158.625 239.0313,156.8906 Q237.5781,155.1406 237.5781,152.0313 Q237.5781,149.0313 239.1563,147.25 Q240.7344,145.4531 243.4531,145.4531 Q245.3594,145.4531 247.0938,146.375 L246.1406,148.2813 Q244.6406,147.5 243.4531,147.5 Q241.8438,147.5 240.8594,148.7188 Q239.8906,149.9219 239.8906,152.0469 Q239.8906,154.2969 240.7969,155.4375 Q241.7188,156.5781 243.4531,156.5781 Q244.4844,156.5781 246.5156,155.9844 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="148" x="257" y="156.1074">RequestBondedDevices</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="229" x2="407" y1="167.9531" y2="167.9531"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="229" x2="407" y1="175.9531" y2="175.9531"/><!--MD5=[f1a36d6b3380e677ad379c4765f0f72c]
class RequestDeviceName--><rect codeLine="8" fill="#FEFECE" filter="url(#f4xudy7d4d6fh)" height="48" id="RequestDeviceName" style="stroke: #A80036; stroke-width: 1.5;" width="161" x="443.5" y="135.9531"/><ellipse cx="458.5" cy="151.9531" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M462.0156,155.9844 L462.0156,158.0156 Q460.5313,158.625 458.7031,158.625 Q455.9844,158.625 454.5313,156.8906 Q453.0781,155.1406 453.0781,152.0313 Q453.0781,149.0313 454.6563,147.25 Q456.2344,145.4531 458.9531,145.4531 Q460.8594,145.4531 462.5938,146.375 L461.6406,148.2813 Q460.1406,147.5 458.9531,147.5 Q457.3438,147.5 456.3594,148.7188 Q455.3906,149.9219 455.3906,152.0469 Q455.3906,154.2969 456.2969,155.4375 Q457.2188,156.5781 458.9531,156.5781 Q459.9844,156.5781 462.0156,155.9844 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="129" x="472.5" y="156.1074">RequestDeviceName</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="444.5" x2="603.5" y1="167.9531" y2="167.9531"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="444.5" x2="603.5" y1="175.9531" y2="175.9531"/><!--MD5=[997e5b1c613c646acbb63a9dc35e5d22]
class ResponseBluetoothStatus--><rect codeLine="10" fill="#FEFECE" filter="url(#f4xudy7d4d6fh)" height="48" id="ResponseBluetoothStatus" style="stroke: #A80036; stroke-width: 1.5;" width="196" x="640" y="135.9531"/><ellipse cx="655" cy="151.9531" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M658.5156,155.9844 L658.5156,158.0156 Q657.0313,158.625 655.2031,158.625 Q652.4844,158.625 651.0313,156.8906 Q649.5781,155.1406 649.5781,152.0313 Q649.5781,149.0313 651.1563,147.25 Q652.7344,145.4531 655.4531,145.4531 Q657.3594,145.4531 659.0938,146.375 L658.1406,148.2813 Q656.6406,147.5 655.4531,147.5 Q653.8438,147.5 652.8594,148.7188 Q651.8906,149.9219 651.8906,152.0469 Q651.8906,154.2969 652.7969,155.4375 Q653.7188,156.5781 655.4531,156.5781 Q656.4844,156.5781 658.5156,155.9844 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="164" x="669" y="156.1074">ResponseBluetoothStatus</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="641" x2="835" y1="167.9531" y2="167.9531"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="641" x2="835" y1="175.9531" y2="175.9531"/><!--MD5=[eb512bcfdbef1ba9066f1482e200ba23]
class ResponseBondedDevices--><rect codeLine="11" fill="#FEFECE" filter="url(#f4xudy7d4d6fh)" height="48" id="ResponseBondedDevices" style="stroke: #A80036; stroke-width: 1.5;" width="190" x="871" y="135.9531"/><ellipse cx="886" cy="151.9531" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M889.5156,155.9844 L889.5156,158.0156 Q888.0313,158.625 886.2031,158.625 Q883.4844,158.625 882.0313,156.8906 Q880.5781,155.1406 880.5781,152.0313 Q880.5781,149.0313 882.1563,147.25 Q883.7344,145.4531 886.4531,145.4531 Q888.3594,145.4531 890.0938,146.375 L889.1406,148.2813 Q887.6406,147.5 886.4531,147.5 Q884.8438,147.5 883.8594,148.7188 Q882.8906,149.9219 882.8906,152.0469 Q882.8906,154.2969 883.7969,155.4375 Q884.7188,156.5781 886.4531,156.5781 Q887.4844,156.5781 889.5156,155.9844 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="158" x="900" y="156.1074">ResponseBondedDevices</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="872" x2="1060" y1="167.9531" y2="167.9531"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="872" x2="1060" y1="175.9531" y2="175.9531"/><!--MD5=[3faab22c1f830479f961f6e769115a5d]
class ResponseDeviceName--><rect codeLine="12" fill="#FEFECE" filter="url(#f4xudy7d4d6fh)" height="48" id="ResponseDeviceName" style="stroke: #A80036; stroke-width: 1.5;" width="171" x="1096.5" y="135.9531"/><ellipse cx="1111.5" cy="151.9531" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1115.0156,155.9844 L1115.0156,158.0156 Q1113.5313,158.625 1111.7031,158.625 Q1108.9844,158.625 1107.5313,156.8906 Q1106.0781,155.1406 1106.0781,152.0313 Q1106.0781,149.0313 1107.6563,147.25 Q1109.2344,145.4531 1111.9531,145.4531 Q1113.8594,145.4531 1115.5938,146.375 L1114.6406,148.2813 Q1113.1406,147.5 1111.9531,147.5 Q1110.3438,147.5 1109.3594,148.7188 Q1108.3906,149.9219 1108.3906,152.0469 Q1108.3906,154.2969 1109.2969,155.4375 Q1110.2188,156.5781 1111.9531,156.5781 Q1112.9844,156.5781 1115.0156,155.9844 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="139" x="1125.5" y="156.1074">ResponseDeviceName</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="1097.5" x2="1266.5" y1="167.9531" y2="167.9531"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1097.5" x2="1266.5" y1="175.9531" y2="175.9531"/><!--MD5=[16efb683b245cffa4f1d0163265c1862]
class ResponseVisibleDevices--><rect codeLine="13" fill="#FEFECE" filter="url(#f4xudy7d4d6fh)" height="48" id="ResponseVisibleDevices" style="stroke: #A80036; stroke-width: 1.5;" width="182" x="1303" y="135.9531"/><ellipse cx="1318" cy="151.9531" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1321.5156,155.9844 L1321.5156,158.0156 Q1320.0313,158.625 1318.2031,158.625 Q1315.4844,158.625 1314.0313,156.8906 Q1312.5781,155.1406 1312.5781,152.0313 Q1312.5781,149.0313 1314.1563,147.25 Q1315.7344,145.4531 1318.4531,145.4531 Q1320.3594,145.4531 1322.0938,146.375 L1321.1406,148.2813 Q1319.6406,147.5 1318.4531,147.5 Q1316.8438,147.5 1315.8594,148.7188 Q1314.8906,149.9219 1314.8906,152.0469 Q1314.8906,154.2969 1315.7969,155.4375 Q1316.7188,156.5781 1318.4531,156.5781 Q1319.4844,156.5781 1321.5156,155.9844 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="150" x="1332" y="156.1074">ResponseVisibleDevices</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="1304" x2="1484" y1="167.9531" y2="167.9531"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1304" x2="1484" y1="175.9531" y2="175.9531"/><!--MD5=[55dcaea49b6f335663f06ba5e29d8711]
class SetBluetoothStatus--><rect codeLine="15" fill="#FEFECE" filter="url(#f4xudy7d4d6fh)" height="48" id="SetBluetoothStatus" style="stroke: #A80036; stroke-width: 1.5;" width="155" x="1520.5" y="135.9531"/><ellipse cx="1535.5" cy="151.9531" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1539.0156,155.9844 L1539.0156,158.0156 Q1537.5313,158.625 1535.7031,158.625 Q1532.9844,158.625 1531.5313,156.8906 Q1530.0781,155.1406 1530.0781,152.0313 Q1530.0781,149.0313 1531.6563,147.25 Q1533.2344,145.4531 1535.9531,145.4531 Q1537.8594,145.4531 1539.5938,146.375 L1538.6406,148.2813 Q1537.1406,147.5 1535.9531,147.5 Q1534.3438,147.5 1533.3594,148.7188 Q1532.3906,149.9219 1532.3906,152.0469 Q1532.3906,154.2969 1533.2969,155.4375 Q1534.2188,156.5781 1535.9531,156.5781 Q1536.9844,156.5781 1539.0156,155.9844 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="123" x="1549.5" y="156.1074">SetBluetoothStatus</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="1521.5" x2="1674.5" y1="167.9531" y2="167.9531"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1521.5" x2="1674.5" y1="175.9531" y2="175.9531"/><!--MD5=[75c2d557c56179bba89b9164f9048e30]
class SetBondedDevices--><rect codeLine="16" fill="#FEFECE" filter="url(#f4xudy7d4d6fh)" height="48" id="SetBondedDevices" style="stroke: #A80036; stroke-width: 1.5;" width="149" x="1710.5" y="135.9531"/><ellipse cx="1725.5" cy="151.9531" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1729.0156,155.9844 L1729.0156,158.0156 Q1727.5313,158.625 1725.7031,158.625 Q1722.9844,158.625 1721.5313,156.8906 Q1720.0781,155.1406 1720.0781,152.0313 Q1720.0781,149.0313 1721.6563,147.25 Q1723.2344,145.4531 1725.9531,145.4531 Q1727.8594,145.4531 1729.5938,146.375 L1728.6406,148.2813 Q1727.1406,147.5 1725.9531,147.5 Q1724.3438,147.5 1723.3594,148.7188 Q1722.3906,149.9219 1722.3906,152.0469 Q1722.3906,154.2969 1723.2969,155.4375 Q1724.2188,156.5781 1725.9531,156.5781 Q1726.9844,156.5781 1729.0156,155.9844 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="117" x="1739.5" y="156.1074">SetBondedDevices</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="1711.5" x2="1858.5" y1="167.9531" y2="167.9531"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1711.5" x2="1858.5" y1="175.9531" y2="175.9531"/><!--MD5=[8139fa2621595fc198f831176f26a933]
class SetDeviceName--><rect codeLine="17" fill="#FEFECE" filter="url(#f4xudy7d4d6fh)" height="48" id="SetDeviceName" style="stroke: #A80036; stroke-width: 1.5;" width="130" x="1895" y="135.9531"/><ellipse cx="1910" cy="151.9531" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1913.5156,155.9844 L1913.5156,158.0156 Q1912.0313,158.625 1910.2031,158.625 Q1907.4844,158.625 1906.0313,156.8906 Q1904.5781,155.1406 1904.5781,152.0313 Q1904.5781,149.0313 1906.1563,147.25 Q1907.7344,145.4531 1910.4531,145.4531 Q1912.3594,145.4531 1914.0938,146.375 L1913.1406,148.2813 Q1911.6406,147.5 1910.4531,147.5 Q1908.8438,147.5 1907.8594,148.7188 Q1906.8906,149.9219 1906.8906,152.0469 Q1906.8906,154.2969 1907.7969,155.4375 Q1908.7188,156.5781 1910.4531,156.5781 Q1911.4844,156.5781 1913.5156,155.9844 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="98" x="1924" y="156.1074">SetDeviceName</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="1896" x2="2024" y1="167.9531" y2="167.9531"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1896" x2="2024" y1="175.9531" y2="175.9531"/><!--MD5=[8cf19ae717c5ffa0942c17e0d92fc75b]
class SetScanState--><rect codeLine="18" fill="#FEFECE" filter="url(#f4xudy7d4d6fh)" height="48" id="SetScanState" style="stroke: #A80036; stroke-width: 1.5;" width="118" x="2060" y="135.9531"/><ellipse cx="2075" cy="151.9531" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M2078.5156,155.9844 L2078.5156,158.0156 Q2077.0313,158.625 2075.2031,158.625 Q2072.4844,158.625 2071.0313,156.8906 Q2069.5781,155.1406 2069.5781,152.0313 Q2069.5781,149.0313 2071.1563,147.25 Q2072.7344,145.4531 2075.4531,145.4531 Q2077.3594,145.4531 2079.0938,146.375 L2078.1406,148.2813 Q2076.6406,147.5 2075.4531,147.5 Q2073.8438,147.5 2072.8594,148.7188 Q2071.8906,149.9219 2071.8906,152.0469 Q2071.8906,154.2969 2072.7969,155.4375 Q2073.7188,156.5781 2075.4531,156.5781 Q2076.4844,156.5781 2078.5156,155.9844 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="86" x="2089" y="156.1074">SetScanState</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="2061" x2="2177" y1="167.9531" y2="167.9531"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2061" x2="2177" y1="175.9531" y2="175.9531"/><!--MD5=[6aa7fa943374ef5ece9454a57dc72e25]
reverse link BluetoothMessage to RequestBluetoothStatus--><path d="M1087.04,57.2431 C912.58,65.9731 529.63,89.0631 210,135.9531 C204.5,136.7631 198.86,137.6731 193.18,138.6531 " fill="none" id="BluetoothMessage-backto-RequestBluetoothStatus" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/><polygon fill="none" points="1086.94,50.2431,1107.26,56.2531,1087.63,64.2231,1086.94,50.2431" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[ae7f7d0a4c3187e8bb3020bf0ca371ed]
reverse link BluetoothMessage to RequestBondedDevices--><path d="M1087.19,60.2831 C943.57,72.0831 662.54,97.8831 426,135.9531 C420.13,136.8931 414.1,137.9531 408.04,139.0731 " fill="none" id="BluetoothMessage-backto-RequestBondedDevices" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/><polygon fill="none" points="1086.86,53.2831,1107.36,58.6431,1087.99,67.2431,1086.86,53.2831" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[f4b5ee5fa7a2d68677ad130c68f694ee]
reverse link BluetoothMessage to RequestDeviceName--><path d="M1087.49,64.5131 C975.83,78.7431 784.68,104.8631 622,135.9531 C616.34,137.0331 610.5,138.2231 604.64,139.4631 " fill="none" id="BluetoothMessage-backto-RequestDeviceName" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/><polygon fill="none" points="1086.67,57.5631,1107.39,62.0031,1088.42,71.4531,1086.67,57.5631" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[b929432a166a87139d0a0b4ddba46eb6]
reverse link BluetoothMessage to ResponseBluetoothStatus--><path d="M1087.72,75.4631 C1013.24,93.2431 909.68,117.9631 834.6,135.8931 " fill="none" id="BluetoothMessage-backto-ResponseBluetoothStatus" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/><polygon fill="none" points="1086.36,68.5931,1107.43,70.7531,1089.61,82.2031,1086.36,68.5931" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[e03acb44cf4eb9cc32aef2fc244d1325]
reverse link BluetoothMessage to ResponseBondedDevices--><path d="M1116.85,84.9231 C1083.45,101.3131 1043.53,120.9031 1013.15,135.8131 " fill="none" id="BluetoothMessage-backto-ResponseBondedDevices" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/><polygon fill="none" points="1114.09,78.4831,1135.13,75.9531,1120.26,91.0531,1114.09,78.4831" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[0df839f176d4e8747e1fa4ab5a231c8c]
reverse link BluetoothMessage to ResponseDeviceName--><path d="M1182,95.9731 C1182,109.5331 1182,123.9931 1182,135.6331 " fill="none" id="BluetoothMessage-backto-ResponseDeviceName" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/><polygon fill="none" points="1175,95.9531,1182,75.9531,1189,95.9531,1175,95.9531" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[033a85fd32f3b3aef0299180834d08b5]
reverse link BluetoothMessage to ResponseVisibleDevices--><path d="M1245.94,84.9231 C1278.72,101.3131 1317.9,120.9031 1347.72,135.8131 " fill="none" id="BluetoothMessage-backto-ResponseVisibleDevices" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/><polygon fill="none" points="1242.76,91.1631,1228,75.9531,1249.02,78.6331,1242.76,91.1631" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[b1d91fbcaf829313f55081fceaec155a]
reverse link BluetoothMessage to SetBluetoothStatus--><path d="M1276.38,77.0031 C1350.05,95.7731 1451.16,121.5331 1520.22,139.1331 " fill="none" id="BluetoothMessage-backto-SetBluetoothStatus" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/><polygon fill="none" points="1274.51,83.7431,1256.85,72.0231,1277.96,70.1831,1274.51,83.7431" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[5be4832e50a96e9afd6716a5726789fc]
reverse link BluetoothMessage to SetBondedDevices--><path d="M1276.82,65.9231 C1379.74,80.5631 1548.72,106.2531 1693,135.9531 C1698.64,137.1131 1704.46,138.3931 1710.31,139.7231 " fill="none" id="BluetoothMessage-backto-SetBondedDevices" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/><polygon fill="none" points="1275.66,72.8231,1256.83,63.1031,1277.61,58.9631,1275.66,72.8231" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[9e81130095896bc22196e3fc1c87645b]
reverse link BluetoothMessage to SetDeviceName--><path d="M1276.77,59.6931 C1411.22,70.2931 1664.59,94.0931 1877,135.9531 C1882.87,137.1131 1888.93,138.4631 1894.98,139.9331 " fill="none" id="BluetoothMessage-backto-SetDeviceName" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/><polygon fill="none" points="1276.04,66.6631,1256.64,58.1331,1277.12,52.7031,1276.04,66.6631" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[27d3195f2473dab648037e6c3b9e7d94]
reverse link BluetoothMessage to SetScanState--><path d="M1277.16,55.9831 C1436.84,62.4331 1768.23,81.6931 2043,135.9531 C2048.54,137.0531 2054.26,138.3831 2059.96,139.8531 " fill="none" id="BluetoothMessage-backto-SetScanState" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/><polygon fill="none" points="1276.43,62.9631,1256.71,55.1931,1276.97,48.9731,1276.43,62.9631" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[2ef8eb0267679822f093bbaf9f836c5e]
@startuml
title BluetoothMessages - Class Diagram

title BluetoothMessages - Class Diagram

class BluetoothMessage

class RequestBluetoothStatus
class RequestBondedDevices
class RequestDeviceName

class ResponseBluetoothStatus
class ResponseBondedDevices
class ResponseDeviceName
class ResponseVisibleDevices

class SetBluetoothStatus
class SetBondedDevices
class SetDeviceName
class SetScanState
class RequestBluetoothStatus implements BluetoothMessage
class RequestBondedDevices implements BluetoothMessage
class RequestDeviceName implements BluetoothMessage

BluetoothMessage <|-left- RequestBluetoothStatus: Inheritance
BluetoothMessage <|-up- RequestBondedDevices: Inheritance
BluetoothMessage <|-up- RequestDeviceName: Inheritance
class ResponseBluetoothStatus implements BluetoothMessage
class ResponseBondedDevices implements BluetoothMessage
class ResponseDeviceName implements BluetoothMessage
class ResponseVisibleDevices implements BluetoothMessage

class SetBluetoothStatus implements BluetoothMessage
class SetBondedDevices implements BluetoothMessage
class SetDeviceName implements BluetoothMessage
class SetScanState implements BluetoothMessage

BluetoothMessage <|-up- ResponseBluetoothStatus: Inheritance
BluetoothMessage <|-up- ResponseBondedDevices: Inheritance
BluetoothMessage <|-right- ResponseDeviceName: Inheritance
BluetoothMessage <|-down- ResponseVisibleDevices: Inheritance


BluetoothMessage <|-down- SetBluetoothStatus: Inheritance
BluetoothMessage <|-down- SetBondedDevices: Inheritance
BluetoothMessage <|-down- SetDeviceName: Inheritance
BluetoothMessage <|-down- SetScanState: Inheritance
@enduml

PlantUML version 1.2019.12(Sun Nov 03 10:24:54 UTC 2019)
PlantUML version 1.2020.19(Mon Oct 12 17:10:01 CEST 2020)
(GPL source distribution)
Java Runtime: OpenJDK Runtime Environment
JVM: OpenJDK 64-Bit Server VM
Java Version: 1.8.0_232-heroku-b09
Operating System: Linux
Default Encoding: UTF-8
Language: en
Country: US

M module-services/service-bluetooth/service-bluetooth/BluetoothMessage.hpp => module-services/service-bluetooth/service-bluetooth/BluetoothMessage.hpp +12 -0
@@ 16,6 16,18 @@ extern "C"
#include <module-bluetooth/lib/btstack/src/btstack_util.h>
};

struct BluetoothStatus
{
    enum class BluetoothState
    {
        On,
        Off,
        Error,
        None
    } state;
    bool visibility;
};

class BluetoothMessage : public sys::DataMessage
{
  public:

A module-services/service-bluetooth/service-bluetooth/messages/BondedDevices.hpp => module-services/service-bluetooth/service-bluetooth/messages/BondedDevices.hpp +26 -0
@@ 0,0 1,26 @@
// Copyright (c) 2017-2020, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md

#include <Service/Message.hpp>
#include "service-bluetooth/BluetoothMessage.hpp"
#include <string>

namespace message::bluetooth
{
    class RequestBondedDevices : public BluetoothMessage
    {};

    class ResponseBondedDevices : public BluetoothMessage
    {
      public:
        ResponseBondedDevices(std::vector<Devicei> devices) : devices(std::move(devices))
        {}
        [[nodiscard]] auto getDevices() const -> std::vector<Devicei>
        {
            return devices;
        }

      private:
        std::vector<Devicei> devices;
    };
} // namespace message::bluetooth

A module-services/service-bluetooth/service-bluetooth/messages/DeviceName.hpp => module-services/service-bluetooth/service-bluetooth/messages/DeviceName.hpp +26 -0
@@ 0,0 1,26 @@
// Copyright (c) 2017-2020, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md

#include <Service/Message.hpp>
#include "service-bluetooth/BluetoothMessage.hpp"
#include <string>

namespace message::bluetooth
{
    class RequestDeviceName : public BluetoothMessage
    {};

    class ResponseDeviceName : public BluetoothMessage
    {
      public:
        explicit ResponseDeviceName(std::string name) : name(std::move(name))
        {}
        [[nodiscard]] auto getName() const -> std::string
        {
            return name;
        }

      private:
        std::string name;
    };
} // namespace message::bluetooth

A module-services/service-bluetooth/service-bluetooth/messages/ResponseVisibleDevices.hpp => module-services/service-bluetooth/service-bluetooth/messages/ResponseVisibleDevices.hpp +23 -0
@@ 0,0 1,23 @@
// Copyright (c) 2017-2020, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md

#include <Service/Message.hpp>
#include "service-bluetooth/BluetoothMessage.hpp"
#include <string>

namespace message::bluetooth
{
    class ResponseVisibleDevices : public BluetoothMessage
    {
      public:
        ResponseVisibleDevices(std::vector<Devicei> devices) : devices(std::move(devices))
        {}
        [[nodiscard]] auto getDevices() const -> std::vector<Devicei>
        {
            return devices;
        }

      private:
        std::vector<Devicei> devices;
    };
} // namespace message::bluetooth

A module-services/service-bluetooth/service-bluetooth/messages/SetBondedDevices.hpp => module-services/service-bluetooth/service-bluetooth/messages/SetBondedDevices.hpp +23 -0
@@ 0,0 1,23 @@
// Copyright (c) 2017-2020, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md

#include <Service/Message.hpp>
#include "service-bluetooth/BluetoothMessage.hpp"
#include <string>

namespace message::bluetooth
{
    class SetBondedDevices : public BluetoothMessage
    {
      public:
        SetBondedDevices(std::vector<Devicei> devices) : devices(std::move(devices))
        {}
        [[nodiscard]] auto getDevices() const -> std::vector<Devicei>
        {
            return devices;
        }

      private:
        std::vector<Devicei> devices;
    };
} // namespace message::bluetooth

A module-services/service-bluetooth/service-bluetooth/messages/SetDeviceName.hpp => module-services/service-bluetooth/service-bluetooth/messages/SetDeviceName.hpp +24 -0
@@ 0,0 1,24 @@
// Copyright (c) 2017-2020, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md

#include <Service/Message.hpp>
#include "service-bluetooth/BluetoothMessage.hpp"
#include <string>

namespace message::bluetooth
{

    class SetDeviceName : public BluetoothMessage
    {
      public:
        explicit SetDeviceName(std::string name) : name(std::move(name))
        {}
        [[nodiscard]] auto getName() const -> std::string
        {
            return name;
        }

      private:
        std::string name;
    };
} // namespace message::bluetooth

A module-services/service-bluetooth/service-bluetooth/messages/SetScanState.hpp => module-services/service-bluetooth/service-bluetooth/messages/SetScanState.hpp +22 -0
@@ 0,0 1,22 @@
// Copyright (c) 2017-2020, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md

#include <Service/Message.hpp>
#include "service-bluetooth/BluetoothMessage.hpp"
#include <string>

namespace message::bluetooth
{
    class SetScanState : public BluetoothMessage
    {
      public:
        explicit SetScanState(bool state) : state(state)
        {}
        [[nodiscard]] auto getState() const noexcept -> bool
        {
            return state;
        }

      private:
        bool state;
    };

A module-services/service-bluetooth/service-bluetooth/messages/SetStatus.hpp => module-services/service-bluetooth/service-bluetooth/messages/SetStatus.hpp +23 -0
@@ 0,0 1,23 @@
// Copyright (c) 2017-2020, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md

#include <Service/Message.hpp>
#include "service-bluetooth/BluetoothMessage.hpp"
#include <string>

namespace message::bluetooth
{
    class SetStatus : public BluetoothMessage
    {
      public:
        SetStatus(BluetoothStatus status) : status(std::move(status))
        {}
        [[nodiscard]] auto getStatus() const noexcept -> BluetoothStatus
        {
            return status;
        }

      private:
        BluetoothStatus status;
    };
} // namespace message::bluetooth

A module-services/service-bluetooth/service-bluetooth/messages/Status.hpp => module-services/service-bluetooth/service-bluetooth/messages/Status.hpp +27 -0
@@ 0,0 1,27 @@
// Copyright (c) 2017-2020, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md

#include <Service/Message.hpp>
#include "service-bluetooth/BluetoothMessage.hpp"
#include <string>

namespace message::bluetooth
{

    class RequestStatus : public BluetoothMessage
    {};

    class ResponseStatus : public BluetoothMessage
    {
      public:
        explicit ResponseStatus(BluetoothStatus status) : status(std::move(status))
        {}
        [[nodiscard]] auto getStatus() const noexcept -> BluetoothStatus
        {
            return status;
        }

      private:
        BluetoothStatus status;
    };
} // namespace message::bluetooth