blob: ac0952bcc30284c3fb4025dcc5d754499f7ff34a [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<!--
# Copyright (c) 2020 Project CHIP Authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# This file is constructed using the below method.
# 1. running bluetoothd
# 2. running two Bluetooth adapter with LE capability and create ble connection with Gatt servie and Gatt Char.
# For the purposes of XML generation we use btvirt emulator with the LE only capability.
# Assume the LE chip is on hci 0
# we get the bluez XML via:
# sudo gdbus introspect -s -d org.bluez -r -o /org/bluez -x
# sudo gdbus introspect -s -d org.bluez -r -o /org/bluez/hci0 -x
# sudo gdbus introspect -s -d org.bluez -r -o /org/bluez/hci0/dev_00_AA_01_01_00_24 -x
# sudo gdbus introspect -s -d org.bluez -r -o /org/bluez/hci0/dev_00_AA_01_01_00_24/service0006 -x
# sudo gdbus introspect -s -d org.bluez -r -o /org/bluez/hci0/dev_00_AA_01_01_00_24/service0006/char0007 -x
# sudo gdbus introspect -s -d org.bluez -r -o /org/bluez/hci0/dev_00_AA_01_01_00_24/service0006/char0007/desc0009 -x
# sudo gdbus introspect -s -d org.bluez -r -o / -x
-->
<node>
<interface name="org.bluez.Adapter1">
<method name="StartDiscovery" />
<method name="SetDiscoveryFilter">
<arg name="properties" type="a{sv}" direction="in" />
</method>
<method name="StopDiscovery" />
<method name="RemoveDevice">
<arg name="device" type="o" direction="in" />
</method>
<method name="GetDiscoveryFilters">
<arg name="filters" type="as" direction="out" />
</method>
<method name="ConnectDevice">
<arg name="properties" type="a{sv}" direction="in" />
</method>
<property name="Address" type="s" access="read" />
<property name="AddressType" type="s" access="read" />
<property name="Name" type="s" access="read" />
<property name="Alias" type="s" access="readwrite" />
<property name="Class" type="u" access="read" />
<property name="Powered" type="b" access="readwrite" />
<property name="Discoverable" type="b" access="readwrite" />
<property name="DiscoverableTimeout" type="u" access="readwrite" />
<property name="Pairable" type="b" access="readwrite" />
<property name="PairableTimeout" type="u" access="readwrite" />
<property name="Discovering" type="b" access="read" />
<property name="UUIDs" type="as" access="read" />
<property name="Modalias" type="s" access="read" />
<property name="Roles" type="as" access="read" />
</interface>
<interface name="org.bluez.Device1">
<method name="Disconnect" />
<method name="Connect" />
<method name="ConnectProfile">
<arg name="UUID" type="s" direction="in" />
</method>
<method name="DisconnectProfile">
<arg name="UUID" type="s" direction="in" />
</method>
<method name="Pair" />
<method name="CancelPairing" />
<property name="Address" type="s" access="read" />
<property name="AddressType" type="s" access="read" />
<property name="Name" type="s" access="read" />
<property name="Alias" type="s" access="readwrite" />
<property name="Class" type="u" access="read" />
<property name="Appearance" type="q" access="read" />
<property name="Icon" type="s" access="read" />
<property name="Paired" type="b" access="read" />
<property name="Trusted" type="b" access="readwrite" />
<property name="Blocked" type="b" access="readwrite" />
<property name="LegacyPairing" type="b" access="read" />
<property name="RSSI" type="n" access="read" />
<property name="Connected" type="b" access="read" />
<property name="UUIDs" type="as" access="read" />
<property name="Modalias" type="s" access="read" />
<property name="Adapter" type="o" access="read" />
<property name="ManufacturerData" type="a{qv}" access="read" />
<property name="ServiceData" type="a{sv}" access="read" />
<property name="TxPower" type="n" access="read" />
<property name="ServicesResolved" type="b" access="read" />
<property name="AdvertisingFlags" type="ay" access="read" />
<property name="AdvertisingData" type="a{yv}" access="read" />
<property name="WakeAllowed" type="b" access="readwrite" />
</interface>
<interface name="org.bluez.GattManager1">
<method name="RegisterApplication">
<arg name="application" type="o" direction="in" />
<arg name="options" type="a{sv}" direction="in" />
</method>
<method name="UnregisterApplication">
<arg name="application" type="o" direction="in" />
</method>
</interface>
<interface name="org.bluez.GattService1">
<property name="UUID" type="s" access="read" />
<property name="Device" type="o" access="read" />
<property name="Primary" type="b" access="read" />
<!-- <property name="Includes" type="ao" access="read" /> -->
</interface>
<interface name="org.bluez.GattCharacteristic1">
<method name="ReadValue">
<arg name="options" type="a{sv}" direction="in"/>
<arg name="value" type="ay" direction="out">
<annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
</arg>
</method>
<method name="WriteValue">
<arg name="value" type="ay" direction="in">
<annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
</arg>
<arg name="options" type="a{sv}" direction="in"/>
</method>
<method name="AcquireWrite">
<arg name="options" type="a{sv}" direction="in" />
<arg name="fd" type="h" direction="out" />
<arg name="mtu" type="q" direction="out" />
</method>
<method name="AcquireNotify">
<arg name="options" type="a{sv}" direction="in" />
<arg name="fd" type="h" direction="out" />
<arg name="mtu" type="q" direction="out" />
</method>
<method name="StartNotify" />
<method name="StopNotify" />
<method name="Confirm" />
<property name="UUID" type="s" access="read" />
<property name="Service" type="o" access="read" />
<property name="Value" type="ay" access="read">
<annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
</property>
<property name="Notifying" type="b" access="read" />
<property name="Flags" type="as" access="read" />
<property name="WriteAcquired" type="b" access="read" />
<property name="NotifyAcquired" type="b" access="read" />
</interface>
<interface name="org.bluez.GattDescriptor1">
<method name="ReadValue">
<arg name="options" type="a{sv}" direction="in"/>
<arg name="value" type="ay" direction="out">
<annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
</arg>
</method>
<method name="WriteValue">
<arg name="value" type="ay" direction="in">
<annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
</arg>
<arg name="options" type="a{sv}" direction="in"/>
</method>
<property name="UUID" type="s" access="read" />
<property name="Characteristic" type="o" access="read" />
<property name="Value" type="ay" access="read">
<annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
</property>
</interface>
<interface name="org.bluez.LEAdvertisement1">
<method name="Release"/>
<property name="Type" type="s" access="read"/>
<property name="ServiceUUIDs" type="as" access="read">
<annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
</property>
<property name="ManufacturerData" type="a{qv}" access="read"/>
<property name="SolicitUUIDs" type="as" access="read"/>
<property name="ServiceData" type="a{sv}" access="read"/>
<property name="Data" type="a{yay}" access="read"/>
<property name="Discoverable" type="b" access="read"/>
<property name="DiscoverableTimeout" type="q" access="read"/>
<property name="Includes" type="as" access="read"/>
<property name="LocalName" type="s" access="read"/>
<property name="Appearance" type="q" access="read"/>
<property name="Duration" type="q" access="read"/>
<property name="Timeout" type="q" access="read"/>
<!-- <property name="SecondaryChannel" type="s" access="read"/> -->
</interface>
<interface name="org.bluez.LEAdvertisingManager1">
<method name="RegisterAdvertisement">
<arg name="advertisement" type="o" direction="in" />
<arg name="options" type="a{sv}" direction="in" />
</method>
<method name="UnregisterAdvertisement">
<arg name="service" type="o" direction="in" />
</method>
<property name="ActiveInstances" type="y" access="read" />
<property name="SupportedInstances" type="y" access="read" />
<property name="SupportedIncludes" type="as" access="read" />
<property name="SupportedSecondaryChannels" type="as" access="read" />
</interface>
<interface name="org.freedesktop.DBus.Properties">
<method name="Get">
<arg name="interface" type="s" direction="in" />
<arg name="name" type="s" direction="in" />
<arg name="value" type="v" direction="out" />
</method>
<method name="Set">
<arg name="interface" type="s" direction="in" />
<arg name="name" type="s" direction="in" />
<arg name="value" type="v" direction="in" />
</method>
<method name="GetAll">
<arg name="interface" type="s" direction="in" />
<arg name="properties" type="a{sv}" direction="out" />
</method>
<signal name="PropertiesChanged">
<arg name="interface" type="s" />
<arg name="changed_properties" type="a{sv}" />
<arg name="invalidated_properties" type="as" />
</signal>
</interface>
<interface name="org.bluez.ProfileManager1">
<method name="RegisterProfile">
<arg name="profile" type="o" direction="in" />
<arg name="UUID" type="s" direction="in" />
<arg name="options" type="a{sv}" direction="in" />
</method>
<method name="UnregisterProfile">
<arg name="profile" type="o" direction="in" />
</method>
</interface>
<interface name="org.freedesktop.DBus.ObjectManager">
<method name="GetManagedObjects">
<arg name="objects" type="a{oa{sa{sv}}}" direction="out" />
</method>
<signal name="InterfacesAdded">
<arg name="object" type="o" />
<arg name="interfaces" type="a{sa{sv}}" />
</signal>
<signal name="InterfacesRemoved">
<arg name="object" type="o" />
<arg name="interfaces" type="as" />
</signal>
</interface>
</node>