<?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>
