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

  <!--
  This interface shall be exported by Matter GATT application and registered
  with org.bluez.GattManager1.RegisterApplication method.
  -->
  <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>

  <!--
  This interface shall be exported by Matter GATT application and linked
  with org.bluez.GattService1 object via the Service property.
  -->
  <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">
      <annotation name="org.gtk.GDBus.C.UnixFD" value="true" />
      <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">
      <annotation name="org.gtk.GDBus.C.UnixFD" value="true" />
      <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>

  <!--
  This interface shall be exported by Matter GATT application and linked
  with org.bluez.GattCharacteristic1 object via the Characteristic property.
  -->
  <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>

  <!--
  This interface shall be exported by Matter GATT application and registered
  with org.bluez.LEAdvertisingManager1.RegisterAdvertisement method.
  -->
  <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"/>
    <!--
    Do not expose discoverable timeout property, so BlueZ will set it
    internally to zero, effectively disabling the timeout. Becase of BlueZ
    bug, which is not fixed until BlueZ 5.73, exposing discoverable timeout
    as zero will timout the advertisement immediately.

    <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"/>
    <!--
    Do not expose duration, so BlueZ will use the internal default value.

    <property name="Duration" type="q" access="read"/>
    -->
    <!--
    Do not expose timeout property, so BlueZ will not call the Release()
    method after a timeout.

    <property name="Timeout" type="q" access="read"/>
    -->
    <!--
    We are not using SecondaryChannel property, so we do not expose it.

    <property name="SecondaryChannel" type="s" access="read"/>
    -->
    <property name="MinInterval" type="u" access="read"/>
    <property name="MaxInterval" type="u" 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>
