1 <?xml version="1.0" encoding="UTF-8"?>
3 # Copyright (c) 2020 Project CHIP Authors
5 # Licensed under the Apache License, Version 2.0 (the "License");
6 # you may not use this file except in compliance with the License.
7 # You may obtain a copy of the License at
9 # http://www.apache.org/licenses/LICENSE-2.0
11 # Unless required by applicable law or agreed to in writing, software
12 # distributed under the License is distributed on an "AS IS" BASIS,
13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 # See the License for the specific language governing permissions and
15 # limitations under the License.
17 # This file is constructed using the below method.
18 # 1. running bluetoothd
19 # 2. running two Bluetooth adapter with LE capability and create ble connection with Gatt servie and Gatt Char.
20 # For the purposes of XML generation we use btvirt emulator with the LE only capability.
21 # Assume the LE chip is on hci 0
22 # we get the bluez XML via:
23 # sudo gdbus introspect -s -d org.bluez -r -o /org/bluez -x
24 # sudo gdbus introspect -s -d org.bluez -r -o /org/bluez/hci0 -x
25 # sudo gdbus introspect -s -d org.bluez -r -o /org/bluez/hci0/dev_00_AA_01_01_00_24 -x
26 # sudo gdbus introspect -s -d org.bluez -r -o /org/bluez/hci0/dev_00_AA_01_01_00_24/service0006 -x
27 # sudo gdbus introspect -s -d org.bluez -r -o /org/bluez/hci0/dev_00_AA_01_01_00_24/service0006/char0007 -x
28 # sudo gdbus introspect -s -d org.bluez -r -o /org/bluez/hci0/dev_00_AA_01_01_00_24/service0006/char0007/desc0009 -x
29 # sudo gdbus introspect -s -d org.bluez -r -o / -x
33 <interface name="org.bluez.Adapter1">
34 <method name="StartDiscovery" />
35 <method name="SetDiscoveryFilter">
36 <arg name="properties" type="a{sv}" direction="in" />
38 <method name="StopDiscovery" />
39 <method name="RemoveDevice">
40 <arg name="device" type="o" direction="in" />
42 <method name="GetDiscoveryFilters">
43 <arg name="filters" type="as" direction="out" />
45 <method name="ConnectDevice">
46 <arg name="properties" type="a{sv}" direction="in" />
49 <property name="Address" type="s" access="read" />
50 <property name="AddressType" type="s" access="read" />
51 <property name="Name" type="s" access="read" />
52 <property name="Alias" type="s" access="readwrite" />
53 <property name="Class" type="u" access="read" />
54 <property name="Powered" type="b" access="readwrite" />
55 <property name="Discoverable" type="b" access="readwrite" />
56 <property name="DiscoverableTimeout" type="u" access="readwrite" />
57 <property name="Pairable" type="b" access="readwrite" />
58 <property name="PairableTimeout" type="u" access="readwrite" />
59 <property name="Discovering" type="b" access="read" />
60 <property name="UUIDs" type="as" access="read" />
61 <property name="Modalias" type="s" access="read" />
62 <property name="Roles" type="as" access="read" />
65 <interface name="org.bluez.Device1">
66 <method name="Disconnect" />
67 <method name="Connect" />
68 <method name="ConnectProfile">
69 <arg name="UUID" type="s" direction="in" />
71 <method name="DisconnectProfile">
72 <arg name="UUID" type="s" direction="in" />
74 <method name="Pair" />
75 <method name="CancelPairing" />
76 <property name="Address" type="s" access="read" />
77 <property name="AddressType" type="s" access="read" />
78 <property name="Name" type="s" access="read" />
79 <property name="Alias" type="s" access="readwrite" />
80 <property name="Class" type="u" access="read" />
81 <property name="Appearance" type="q" access="read" />
82 <property name="Icon" type="s" access="read" />
83 <property name="Paired" type="b" access="read" />
84 <property name="Trusted" type="b" access="readwrite" />
85 <property name="Blocked" type="b" access="readwrite" />
86 <property name="LegacyPairing" type="b" access="read" />
87 <property name="RSSI" type="n" access="read" />
88 <property name="Connected" type="b" access="read" />
89 <property name="UUIDs" type="as" access="read" />
90 <property name="Modalias" type="s" access="read" />
91 <property name="Adapter" type="o" access="read" />
92 <property name="ManufacturerData" type="a{qv}" access="read" />
93 <property name="ServiceData" type="a{sv}" access="read" />
94 <property name="TxPower" type="n" access="read" />
95 <property name="ServicesResolved" type="b" access="read" />
96 <property name="AdvertisingFlags" type="ay" access="read" />
97 <property name="AdvertisingData" type="a{yv}" access="read" />
98 <property name="WakeAllowed" type="b" access="readwrite" />
101 <interface name="org.bluez.GattManager1">
102 <method name="RegisterApplication">
103 <arg name="application" type="o" direction="in" />
104 <arg name="options" type="a{sv}" direction="in" />
106 <method name="UnregisterApplication">
107 <arg name="application" type="o" direction="in" />
111 <interface name="org.bluez.GattService1">
112 <property name="UUID" type="s" access="read" />
113 <property name="Device" type="o" access="read" />
114 <property name="Primary" type="b" access="read" />
115 <!-- <property name="Includes" type="ao" access="read" /> -->
118 <interface name="org.bluez.GattCharacteristic1">
119 <method name="ReadValue">
120 <arg name="options" type="a{sv}" direction="in"/>
121 <arg name="value" type="ay" direction="out">
122 <annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
125 <method name="WriteValue">
126 <arg name="value" type="ay" direction="in">
127 <annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
129 <arg name="options" type="a{sv}" direction="in"/>
131 <method name="AcquireWrite">
132 <arg name="options" type="a{sv}" direction="in" />
133 <arg name="fd" type="h" direction="out" />
134 <arg name="mtu" type="q" direction="out" />
136 <method name="AcquireNotify">
137 <arg name="options" type="a{sv}" direction="in" />
138 <arg name="fd" type="h" direction="out" />
139 <arg name="mtu" type="q" direction="out" />
141 <method name="StartNotify" />
142 <method name="StopNotify" />
143 <method name="Confirm" />
144 <property name="UUID" type="s" access="read" />
145 <property name="Service" type="o" access="read" />
146 <property name="Value" type="ay" access="read">
147 <annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
149 <property name="Notifying" type="b" access="read" />
150 <property name="Flags" type="as" access="read" />
151 <property name="WriteAcquired" type="b" access="read" />
152 <property name="NotifyAcquired" type="b" access="read" />
155 <interface name="org.bluez.GattDescriptor1">
156 <method name="ReadValue">
157 <arg name="options" type="a{sv}" direction="in"/>
158 <arg name="value" type="ay" direction="out">
159 <annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
162 <method name="WriteValue">
163 <arg name="value" type="ay" direction="in">
164 <annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
166 <arg name="options" type="a{sv}" direction="in"/>
168 <property name="UUID" type="s" access="read" />
169 <property name="Characteristic" type="o" access="read" />
170 <property name="Value" type="ay" access="read">
171 <annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
175 <interface name="org.bluez.LEAdvertisement1">
176 <method name="Release"/>
177 <property name="Type" type="s" access="read"/>
178 <property name="ServiceUUIDs" type="as" access="read">
179 <annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
181 <property name="ManufacturerData" type="a{qv}" access="read"/>
182 <property name="SolicitUUIDs" type="as" access="read"/>
183 <property name="ServiceData" type="a{sv}" access="read"/>
184 <property name="Data" type="a{yay}" access="read"/>
185 <property name="Discoverable" type="b" access="read"/>
186 <property name="DiscoverableTimeout" type="q" access="read"/>
187 <property name="Includes" type="as" access="read"/>
188 <property name="LocalName" type="s" access="read"/>
189 <property name="Appearance" type="q" access="read"/>
190 <property name="Duration" type="q" access="read"/>
191 <property name="Timeout" type="q" access="read"/>
192 <!-- <property name="SecondaryChannel" type="s" access="read"/> -->
195 <interface name="org.bluez.LEAdvertisingManager1">
196 <method name="RegisterAdvertisement">
197 <arg name="advertisement" type="o" direction="in" />
198 <arg name="options" type="a{sv}" direction="in" />
200 <method name="UnregisterAdvertisement">
201 <arg name="service" type="o" direction="in" />
203 <property name="ActiveInstances" type="y" access="read" />
204 <property name="SupportedInstances" type="y" access="read" />
205 <property name="SupportedIncludes" type="as" access="read" />
206 <property name="SupportedSecondaryChannels" type="as" access="read" />
209 <interface name="org.freedesktop.DBus.Properties">
211 <arg name="interface" type="s" direction="in" />
212 <arg name="name" type="s" direction="in" />
213 <arg name="value" type="v" direction="out" />
216 <arg name="interface" type="s" direction="in" />
217 <arg name="name" type="s" direction="in" />
218 <arg name="value" type="v" direction="in" />
220 <method name="GetAll">
221 <arg name="interface" type="s" direction="in" />
222 <arg name="properties" type="a{sv}" direction="out" />
224 <signal name="PropertiesChanged">
225 <arg name="interface" type="s" />
226 <arg name="changed_properties" type="a{sv}" />
227 <arg name="invalidated_properties" type="as" />
231 <interface name="org.bluez.ProfileManager1">
232 <method name="RegisterProfile">
233 <arg name="profile" type="o" direction="in" />
234 <arg name="UUID" type="s" direction="in" />
235 <arg name="options" type="a{sv}" direction="in" />
237 <method name="UnregisterProfile">
238 <arg name="profile" type="o" direction="in" />
242 <interface name="org.freedesktop.DBus.ObjectManager">
243 <method name="GetManagedObjects">
244 <arg name="objects" type="a{oa{sa{sv}}}" direction="out" />
246 <signal name="InterfacesAdded">
247 <arg name="object" type="o" />
248 <arg name="interfaces" type="a{sa{sv}}" />
250 <signal name="InterfacesRemoved">
251 <arg name="object" type="o" />
252 <arg name="interfaces" type="as" />