This patch proposes new method, SetDiscoveryFilter to D-Bus Adapter
API for desktop bluetoothd. It will allow to set per-client discovery
filter that would limit devices being discovered.
Now that the page scan state isn't strictly tied to the connectable
setting (adding BR/EDR devices to the kernel whitelist may enable it as
well) we shouldn't prevent fast-connectable from getting set while
connectable is not set.
After some discussion it was decided to require an ObjectManager
interface implementation on a per-service basis to reduce the
overhead of heaving to process and cache potentially many non-GATT
related objects. This patch updates the documentation to reflect this.
In order to distinguish between LE Security Mode 2 levels 1 and 2 we
need to know whether a CSRK is authenticated or unauthenticated. So far
this information wasn't available in the New CSRK event from the kernel.
This patch renames the Master parameter of the event to Type and adds
two new values to it. The two old values 0x00 and 0x01 still have the
same meaning as before from the local/remote CSRK perspective. Since we
so far have not known anything about the security level these values
must be assumed to be unauthenticated.
The consequence of this update is that authenticated keys with new
kernels will simply be ignored by existing code (which only accepts
values 0x00 and 0x01), however since we haven't really had any code
doing real signing so far this should be an acceptable compromise.
Until now the GATT D-Bus API doesn't provide any way to register client
role profiles so that bluetoothd would be able to add matching devices
to its auto-connect list (managed by the kernel from 3.17 onward). To
keep the GATT D-Bus interface as capable as the internal plugin API this
patch adds a new concept of a GattProfile1 D-Bus object. By registering
such an object and providing a set of mandatory service UUIDs bluetoothd
will start performing matching against remote devices and add them to
the auto-connect list.
This patch adds two error codes for Pair device command.
Reject error code which is used when requested transport is not enabled.
E.g. User wants to do LE pair but LE support is not enabled. Similar
with BREDR
Not Supported error code which is used if controller is not capable with
requested transport