platform/upstream/bluez.git
2 years agogobex: Add SPDX License Identifier
Tedd Ho-Jeong An [Mon, 21 Sep 2020 19:00:27 +0000 (12:00 -0700)]
gobex: Add SPDX License Identifier

This patch adds SPDX License Identifier and removes the license text.

-------------------------------------
       License            COUNT
-------------------------------------
 GPL-2.0-or-later     :     12

License: GPL-2.0-or-later
   gobex/gobex-defs.h
   gobex/gobex-transfer.c
   gobex/gobex.c
   gobex/gobex-apparam.h
   gobex/gobex-header.h
   gobex/gobex-header.c
   gobex/gobex.h
   gobex/gobex-packet.h
   gobex/gobex-defs.c
   gobex/gobex-debug.h
   gobex/gobex-apparam.c
   gobex/gobex-packet.c

Signed-off-by: Anuj Jain <anuj01.jain@samsung.com>
Signed-off-by: Ayush Garg <ayush.garg@samsung.com>
2 years agogdbus: Add SPDX License Identifier
Tedd Ho-Jeong An [Mon, 21 Sep 2020 19:35:09 +0000 (12:35 -0700)]
gdbus: Add SPDX License Identifier

This patch adds SPDX License Identifier and removes the license text.

-------------------------------------
       License            COUNT
-------------------------------------
 GPL-2.0-or-later     :      6

License: GPL-2.0-or-later
   gdbus/mainloop.c
   gdbus/object.c
   gdbus/polkit.c
   gdbus/client.c
   gdbus/watch.c
   gdbus/gdbus.h

Signed-off-by: Anuj Jain <anuj01.jain@samsung.com>
Signed-off-by: Ayush Garg <ayush.garg@samsung.com>
2 years agoemulator: Add SPDX License Identifier
Tedd Ho-Jeong An [Mon, 21 Sep 2020 19:00:25 +0000 (12:00 -0700)]
emulator: Add SPDX License Identifier

This patch adds SPDX License Identifier and removes the license text.

-------------------------------------
       License            COUNT
-------------------------------------
 LGPL-2.1-or-later    :     20
 GPL-2.0-or-later     :      2

License: LGPL-2.1-or-later
   emulator/server.c
   emulator/amp.c
   emulator/hciemu.c
   emulator/vhci.c
   emulator/btdev.c
   emulator/serial.h
   emulator/le.h
   emulator/le.c
   emulator/main.c
   emulator/amp.h
   emulator/hciemu.h
   emulator/bthost.h
   emulator/btdev.h
   emulator/vhci.h
   emulator/serial.c
   emulator/phy.c
   emulator/smp.c
   emulator/phy.h
   emulator/bthost.c
   emulator/server.h

License: GPL-2.0-or-later
   emulator/b1ee.c
   emulator/hfp.c

Signed-off-by: Anuj Jain <anuj01.jain@samsung.com>
Signed-off-by: Ayush Garg <ayush.garg@samsung.com>
2 years agoclient: Add SPDX License Identifier
Tedd Ho-Jeong An [Mon, 21 Sep 2020 19:00:24 +0000 (12:00 -0700)]
client: Add SPDX License Identifier

This patch adds SPDX License Identifier and removes the license text.

-------------------------------------
       License            COUNT
-------------------------------------
 GPL-2.0-or-later     :      11

License: GPL-2.0-or-later
   client/adv_monitor.c
   client/adv_monitor.h
   client/advertising.h
   client/display.c
   client/main.c
   client/display.h
   client/agent.h
   client/gatt.c
   client/agent.c
   client/advertising.c
   client/gatt.h

Signed-off-by: Anuj Jain <anuj01.jain@samsung.com>
Signed-off-by: Ayush Garg <ayush.garg@samsung.com>
2 years agobtio: Add SPDX License Identifier
Tedd Ho-Jeong An [Mon, 21 Sep 2020 19:00:23 +0000 (12:00 -0700)]
btio: Add SPDX License Identifier

This patch adds SPDX License Identifier and removes the license text.

-------------------------------------
       License            COUNT
-------------------------------------
 GPL-2.0-or-later     :      2

License: GPL-2.0-or-later
   btio/btio.h
   btio/btio.c

Signed-off-by: Anuj Jain <anuj01.jain@samsung.com>
Signed-off-by: Ayush Garg <ayush.garg@samsung.com>
2 years agoattrib: Add SPDX License Identifier
Tedd Ho-Jeong An [Mon, 21 Sep 2020 19:00:22 +0000 (12:00 -0700)]
attrib: Add SPDX License Identifier

This patch adds SPDX License Identifier and removes the license text.

-------------------------------------
       License            COUNT
-------------------------------------
 GPL-2.0-or-later     :     13

License: GPL-2.0-or-later
   attrib/att-database.h
   attrib/gattrib.h
   attrib/gatttool.h
   attrib/gatt-service.c
   attrib/interactive.c
   attrib/utils.c
   attrib/gatt.c
   attrib/gattrib.c
   attrib/gatt-service.h
   attrib/att.c
   attrib/gatt.h
   attrib/att.h
   attrib/gatttool.c

Signed-off-by: Anuj Jain <anuj01.jain@samsung.com>
Signed-off-by: Ayush Garg <ayush.garg@samsung.com>
2 years agoandroid: Add SPDX License Identifier
Tedd Ho-Jeong An [Mon, 21 Sep 2020 19:37:46 +0000 (12:37 -0700)]
android: Add SPDX License Identifier

This patch adds SPDX License Identifier and removes the license text.

-------------------------------------
       License            COUNT
-------------------------------------
 Apache-2.0           :     80
 LGPL-2.1-or-later    :     42
 GPL-2.0-or-later     :      9

License: Apache-2.0
   android/bluetoothd-wrapper.c
   android/tester-hidhost.c
   android/tester-map-client.c
   android/hal-audio-aptx.c
   android/hal-audio.c
   android/hal-handsfree-client.c
   android/tester-gatt.c
   android/hal-pan.c
   android/hal-socket.c
   android/tester-hdp.c
   android/tester-pan.c
   android/tester-avrcp.c
   android/hal-a2dp-sink.c
   android/hal-gatt.c
   android/hal-avrcp.c
   android/tester-a2dp.c
   android/hal-audio.h
   android/hal-bluetooth.c
   android/tester-socket.c
   android/hal-health.c
   android/hal-a2dp.c
   android/hal-ipc.c
   android/hal-avrcp-ctrl.c
   android/hal-sco.c
   android/hal-ipc.h
   android/tester-main.c
   android/hal-audio-sbc.c
   android/hal-utils.c
   android/hal-map-client.c
   android/hal-handsfree.c
   android/hal-log.h
   android/hal.h
   android/hal-utils.h
   android/tester-bluetooth.c
   android/hal-hidhost.c
   android/audio_utils/resampler.h
   android/audio_utils/resampler.c
   android/system/audio.h
   android/hardware/bt_sock.h
   android/hardware/bt_gatt_client.h
   android/hardware/bt_hh.h
   android/hardware/bluetooth.h
   android/hardware/hardware.h
   android/hardware/bt_hf_client.h
   android/hardware/bt_rc.h
   android/hardware/bt_hf.h
   android/hardware/bt_pan.h
   android/hardware/bt_gatt_types.h
   android/hardware/hardware.c
   android/hardware/audio_effect.h
   android/hardware/audio.h
   android/hardware/bt_gatt_server.h
   android/hardware/bt_gatt.h
   android/hardware/bt_hl.h
   android/hardware/bt_mce.h
   android/hardware/bt_av.h
   android/client/if-hh.c
   android/client/if-sco.c
   android/client/pollhandler.h
   android/client/haltest.c
   android/client/tabcompletion.c
   android/client/if-hf-client.c
   android/client/history.h
   android/client/if-audio.c
   android/client/terminal.h
   android/client/if-av.c
   android/client/if-main.h
   android/client/if-av-sink.c
   android/client/terminal.c
   android/client/if-mce.c
   android/client/if-hf.c
   android/client/pollhandler.c
   android/client/if-sock.c
   android/client/if-rc-ctrl.c
   android/client/if-rc.c
   android/client/history.c
   android/client/if-pan.c
   android/client/if-gatt.c
   android/client/if-bt.c
   android/client/if-hl.c

License: LGPL-2.1-or-later
   android/sco.h
   android/socket.c
   android/tester-main.h
   android/hidhost.h
   android/map-client.h
   android/utils.h
   android/hal-msg.h
   android/health.h
   android/avrcp-lib.c
   android/bluetoothd-snoop.c
   android/a2dp.c
   android/bluetooth.h
   android/a2dp-sink.c
   android/handsfree-client.c
   android/audio-msg.h
   android/main.c
   android/pan.c
   android/ipc-tester.c
   android/health.c
   android/socket.h
   android/handsfree.h
   android/avrcp-lib.h
   android/a2dp-sink.h
   android/system-emulator.c
   android/gatt.c
   android/avrcp.h
   android/pan.h
   android/test-ipc.c
   android/hidhost.c
   android/a2dp.h
   android/avrcp.c
   android/sco-msg.h
   android/bluetooth.c
   android/map-client.c
   android/handsfree-client.h
   android/ipc.c
   android/handsfree.c
   android/gatt.h
   android/ipc.h
   android/ipc-common.h
   android/compat/wordexp.h
   android/cutils/properties.h

License: GPL-2.0-or-later
   android/avdtp.h
   android/avctp.c
   android/avdtptest.c
   android/sco.c
   android/log.c
   android/avdtp.c
   android/avctp.h
   android/compat/readline/history.h
   android/compat/readline/readline.h

Change-Id: I838215f902a81a7f789345a2bd47e2685e331619
Signed-off-by: Anuj Jain <anuj01.jain@samsung.com>
Signed-off-by: Ayush Garg <ayush.garg@samsung.com>
2 years agoavdtp: Fix not checking if stream is already set as pending open
Luiz Augusto von Dentz [Fri, 18 Sep 2020 01:03:31 +0000 (18:03 -0700)]
avdtp: Fix not checking if stream is already set as pending open

When receiving a Open command the stream will be set as pending_open but
the remote may attempt to send yet another Open command in the meantime
resulting in another setup and yet another timer leaving the old timer
active which will likely cause a crash when it expires.

Signed-off-by: Anuj Jain <anuj01.jain@samsung.com>
Signed-off-by: Ayush Garg <ayush.garg@samsung.com>
2 years agodoc: Add Suspend and Resume events
Abhishek Pandit-Subedi [Fri, 11 Sep 2020 17:03:17 +0000 (10:03 -0700)]
doc: Add Suspend and Resume events

Add Controller Suspend Event and Controller Resume Event to identify
suspend or resume of the Bluetooth stack has occurred.

Also update Device Disconnected Event to indicate a new disconnect
reason: "Connection terminated by local host for suspend"

Signed-off-by: Anuj Jain <anuj01.jain@samsung.com>
Signed-off-by: Ayush Garg <ayush.garg@samsung.com>
2 years agosixaxis: Fix crash caused by return of udev_device_get_property_value
Miao-chen Chou [Wed, 16 Sep 2020 22:34:53 +0000 (15:34 -0700)]
sixaxis: Fix crash caused by return of udev_device_get_property_value

This adds a NULL check before calling sscanf().

Signed-off-by: Anuj Jain <anuj01.jain@samsung.com>
Signed-off-by: Ayush Garg <ayush.garg@samsung.com>
2 years agodoc/gatt-api: Add new error for StartNotify
Joseph Hwang [Fri, 21 Aug 2020 06:16:43 +0000 (23:16 -0700)]
doc/gatt-api: Add new error for StartNotify

When a device is disconnecting, StartNotify is not allowed. This adds a
new error type to the doc.

Signed-off-by: Anuj Jain <anuj01.jain@samsung.com>
Signed-off-by: Ayush Garg <ayush.garg@samsung.com>
2 years agogatt: StartNotify is not allowed when device is disconnecting
Joseph Hwang [Fri, 21 Aug 2020 06:16:42 +0000 (23:16 -0700)]
gatt: StartNotify is not allowed when device is disconnecting

This patch fixed a bluetoothd crash in register_notify_cb(). The
crash is incurred by an exception that under some situation, a
characteristic may be freed when register_notify_cb() is invoked.

When a device is disconnecting, the device interface would hold valid
for a while until the disconnection procedure between the client and
the server is completed. If another process happens to request to start
notification of a characteristic on the disconnecting device, it may
incur a problem. In this case, the client would still send the
StartNotify request since the characteristic object is still valid.
However, the characteristic may be freed soon and become invalid
when the corresponding callback function is invoked later. This
leads to the bluetoothd crash due to the segmentation fault.

To handle the exception, if another process requests to start
notification when the device is disconnecting, it should reject the
request.

Tested on Chrome OS that this patch fixes bluetoothd crash in
register_notify_cb().

Signed-off-by: Anuj Jain <anuj01.jain@samsung.com>
Signed-off-by: Ayush Garg <ayush.garg@samsung.com>
2 years agocore: Add AdvertisementMonitor to bluetooth.conf
Howard Chung [Wed, 16 Sep 2020 07:16:52 +0000 (15:16 +0800)]
core: Add AdvertisementMonitor to bluetooth.conf

AdvertisementMonitor must be included in bluetooth.conf in order to
be able to call Release

Signed-off-by: Anuj Jain <anuj01.jain@samsung.com>
Signed-off-by: Ayush Garg <ayush.garg@samsung.com>
2 years agoclient: Expose ADV monitor objects
Howard Chung [Wed, 16 Sep 2020 07:16:51 +0000 (15:16 +0800)]
client: Expose ADV monitor objects

This adds logic to expose user-defined advertisement monitor to dbus and
also implements methods for exposed objects.

Signed-off-by: Anuj Jain <anuj01.jain@samsung.com>
Signed-off-by: Ayush Garg <ayush.garg@samsung.com>
2 years agoclient: Implement more interfaces of ADV monitor in bluetoothctl
Howard Chung [Wed, 16 Sep 2020 07:16:50 +0000 (15:16 +0800)]
client: Implement more interfaces of ADV monitor in bluetoothctl

This patch creates a submenu in bluetoothctl and implements several
commands.

new commands:
[bluetooth]# menu monitor
[bluetooth]# add-or-pattern 1 2 ab0011
Advertisement Monitor 0 added
[bluetooth]# add-or-pattern-rssi -80, ,5 1 2 aa 3 4 ff
Advertisement Monitor 1 added
[bluetooth]# get-pattern all
Advertisement Monitor 0
path: /org/bluez/adv_monitor_app/0
type: or_patterns
pattern 1:
start position: 1
AD data type: 2
content: ab0011
Advertisement Monitor 1
path: /org/bluez/adv_monitor_app/1
type: or_patterns
rssi:
high threshold: -50
high threshold timer: 5
low threshold: -80
low threshold timer: 5
pattern 1:
start position: 1
AD data type: 2
content: aa
pattern 2:
start position: 3
AD data type: 4
content: ff
[bluetooth]# get-supported-info
Supported Features:
Supported Moniter Types: or_patterns
[bluetooth]# remove-pattern 0
Monitor 0 deleted

Signed-off-by: Anuj Jain <anuj01.jain@samsung.com>
Signed-off-by: Ayush Garg <ayush.garg@samsung.com>
2 years agoclient: Implement basic interface of ADV monitor in bluetoothctl
Howard Chung [Wed, 16 Sep 2020 07:16:49 +0000 (15:16 +0800)]
client: Implement basic interface of ADV monitor in bluetoothctl

This patch implements some basic functions for ADV monitor in
bluetoothctl

[bluetooth]# show
...
Advertisement Monitor Features:
SupportedMonitorTypes: or_patterns

Signed-off-by: Anuj Jain <anuj01.jain@samsung.com>
Signed-off-by: Ayush Garg <ayush.garg@samsung.com>
2 years agoadapter: Add btd_ prefix to has_kernel_feature
Luiz Augusto von Dentz [Tue, 15 Sep 2020 17:45:06 +0000 (10:45 -0700)]
adapter: Add btd_ prefix to has_kernel_feature

APIs exposed to plugins shall have btd_ prefix.

Signed-off-by: Anuj Jain <anuj01.jain@samsung.com>
Signed-off-by: Ayush Garg <ayush.garg@samsung.com>
2 years agodevice: don't wait for timeout if RemoveDevice is called
Archie Pusaka [Tue, 15 Sep 2020 03:04:19 +0000 (11:04 +0800)]
device: don't wait for timeout if RemoveDevice is called

RemoveDevice on adapter interface used to remove a device, even when
the device is connected. However, since the introduction of the new
30 seconds timeout when setting a device as temporary, RemoveDevice
doesn't immediately remove a connected device, but only disconnects
it and waits for the timer to expire before effectively removes it.

This patch removes the device as soon as it gets disconnected,
provided the disconnection is triggered by a call to RemoveDevice.
The regular timeout still applies for other cases.

Tested manually by calling RemoveDevice on a connected device,
and with ChromeOS autotest setup.

Signed-off-by: Anuj Jain <anuj01.jain@samsung.com>
Signed-off-by: Ayush Garg <ayush.garg@samsung.com>
2 years agopolicy: Reconnect audio on controller resume
Abhishek Pandit-Subedi [Fri, 11 Sep 2020 22:30:37 +0000 (15:30 -0700)]
policy: Reconnect audio on controller resume

During system suspend, all peer devices are disconnected. On resume, HID
devices will reconnect but audio devices stay disconnected. As a quality
of life improvement, mark audio devices that were disconnected due to
suspend and attempt to reconnect them when the controller resumes (after
a delay for better co-existence with Wi-Fi).

Signed-off-by: Anuj Jain <anuj01.jain@samsung.com>
Signed-off-by: Ayush Garg <ayush.garg@samsung.com>
2 years agopolicy: Enable reconnect for a2dp-sink in defaults
Abhishek Pandit-Subedi [Fri, 11 Sep 2020 22:30:36 +0000 (15:30 -0700)]
policy: Enable reconnect for a2dp-sink in defaults

Add a2dp-sink to default reconnects list.

Signed-off-by: Anuj Jain <anuj01.jain@samsung.com>
Signed-off-by: Ayush Garg <ayush.garg@samsung.com>
2 years agoadapter: Handle controller resume and notify drivers
Abhishek Pandit-Subedi [Fri, 11 Sep 2020 22:30:35 +0000 (15:30 -0700)]
adapter: Handle controller resume and notify drivers

Register for controller resume notification and notify the adapter
drivers when it occurs. Also adds the resume event kernel feature to
make sure the kernel supports this event.

Signed-off-by: Anuj Jain <anuj01.jain@samsung.com>
Signed-off-by: Ayush Garg <ayush.garg@samsung.com>
2 years agoadapter: Refactor kernel feature globals
Abhishek Pandit-Subedi [Fri, 11 Sep 2020 22:30:34 +0000 (15:30 -0700)]
adapter: Refactor kernel feature globals

Move all the kernel specific feature globals into a single
kernel_features bitfield and replace all uses with the bitfield instead.

Signed-off-by: Anuj Jain <anuj01.jain@samsung.com>
Signed-off-by: Ayush Garg <ayush.garg@samsung.com>
2 years agodoc: Update Advertisement Monitor API description
Miao-chen Chou [Sat, 12 Sep 2020 06:51:33 +0000 (23:51 -0700)]
doc: Update Advertisement Monitor API description

This modifies the following description to Advertisement Monitor API.
- Add org.bluez.Error.Failed to RegisterMonitor() method.
- Add more description about the usage of RegisterMonitor() and
UnregisterMonitor() methods.
- Add description about the ranges for the fields in property
RSSIThresholdsAndTimers.

Signed-off-by: Anuj Jain <anuj01.jain@samsung.com>
Signed-off-by: Ayush Garg <ayush.garg@samsung.com>
2 years agoadv_monitor: Handle D-Bus proxy event of an ADV monitor
Miao-chen Chou [Sat, 12 Sep 2020 06:51:31 +0000 (23:51 -0700)]
adv_monitor: Handle D-Bus proxy event of an ADV monitor

This adds two handlers, one for adding and one for removing, of D-Bus proxy
events. The handler of property changes is set to NULL as intended,
since for simplicity no further changes on monitor's properties would
affect the ongoing monitoring.

The following test steps were performed with bluetoothctl.
- After registering the root path, expose two monitors and verify that
the proxy added event are received.
- Have two monitors added, unexpose the monitors, and verify that the
proxy removed events are received for those two monitors.
- Have two monitors added, unregister the monitors and verify that the
proxy removed events are received for those two monitors.

Signed-off-by: Anuj Jain <anuj01.jain@samsung.com>
Signed-off-by: Ayush Garg <ayush.garg@samsung.com>
2 years agogdbus: Make g_dbus_proxy_get_path take const proxy
Luiz Augusto von Dentz [Mon, 14 Sep 2020 19:43:09 +0000 (12:43 -0700)]
gdbus: Make g_dbus_proxy_get_path take const proxy

This makes g_dbus_proxy_get_path take const proxy since it doesn't
change anything on the proxy and avoid pointless casts.

Signed-off-by: Anuj Jain <anuj01.jain@samsung.com>
Signed-off-by: Ayush Garg <ayush.garg@samsung.com>
2 years agoadv_monitor: Handle D-Bus client ready events
Miao-chen Chou [Sat, 12 Sep 2020 06:51:29 +0000 (23:51 -0700)]
adv_monitor: Handle D-Bus client ready events

This adds a handler of client ready events. The handler replies to the
RegisterMonitor() method call.

The following tests were performed.
- Call RegisterMonitor() and expect to receive a return.

Signed-off-by: Anuj Jain <anuj01.jain@samsung.com>
Signed-off-by: Ayush Garg <ayush.garg@samsung.com>
2 years agoadv_monitor: Implement UnregisterMonitor()
Miao-chen Chou [Sat, 12 Sep 2020 06:51:27 +0000 (23:51 -0700)]
adv_monitor: Implement UnregisterMonitor()

This implements the UnregisterMonitor() method handler of ADV monitor
manager interface.

The following tests were performed.
- Issue a UnregisterMonitor() call with a nonexistent path and expect
org.bluez.Error.DoesNotExist as the return.
- Issue a UnregisterMonitor() call with a invalid path and expect
org.bluez.Error.InvalidArguments as the return.
- Issue RegisterMonitor() with a path, issue UnregisterMonitor() and
expect a successful method call return.

Signed-off-by: Anuj Jain <anuj01.jain@samsung.com>
Signed-off-by: Ayush Garg <ayush.garg@samsung.com>
2 years agoadv_monitor: Implement RegisterMonitor()
Miao-chen Chou [Sat, 12 Sep 2020 06:51:25 +0000 (23:51 -0700)]
adv_monitor: Implement RegisterMonitor()

This implements the RegisterMonitor() method handler of ADV monitor
manager interface.

The following tests were performed.
- Issue a RegisterMonitor() call with a valid path and expect a
success as return.
- Issue a RegisterMonitor() call with an invalid path and expect
org.bluez.Error.InvalidArguments as return.
- Issue two Registermonitor() calls with the same path and expect
org.bluez.Error.AlreadyExists.
- Verify the values of the registered paths with logging.
- Verify D-Bus disconnection callback was triggered when the client detach
from D-Bus.

Signed-off-by: Anuj Jain <anuj01.jain@samsung.com>
Signed-off-by: Ayush Garg <ayush.garg@samsung.com>
2 years agoadv_monitor: Implement Get functions of Adv monitor manager properties
Miao-chen Chou [Sat, 12 Sep 2020 06:51:23 +0000 (23:51 -0700)]
adv_monitor: Implement Get functions of Adv monitor manager properties

This implements the Get functions of SupportedMonitorTypes and
SupportedFeatures.

The following test was performed.
- Issue dbus-send to read SupportedMonitorTypes and SupportedFeatures.

Signed-off-by: Anuj Jain <anuj01.jain@samsung.com>
Signed-off-by: Ayush Garg <ayush.garg@samsung.com>
2 years agoadv_monitor: Introduce org.bluez.AdvertisementMonitorManager1 interface
Miao-chen Chou [Sat, 12 Sep 2020 06:51:21 +0000 (23:51 -0700)]
adv_monitor: Introduce org.bluez.AdvertisementMonitorManager1 interface

This introduces the org.bluez.AdvertisementMonitorManager1 without
implementing handlers of methods and properties.

The following test was performed.
- Upon adapter registration, the info line of creating an ADV monitor
manager gets printed, and system bus emits the interface events of
org.bluez.AdvertisementMonitorManager1.

Signed-off-by: Anuj Jain <anuj01.jain@samsung.com>
Signed-off-by: Ayush Garg <ayush.garg@samsung.com>
2 years agoadapter: Remove indirect dependency of headers
Miao-chen Chou [Sat, 12 Sep 2020 06:49:59 +0000 (23:49 -0700)]
adapter: Remove indirect dependency of headers

Given that adapter.h refers symbols from lib/bluetooth.h and lib/sdp.h,
these two headers should be included directly in adapter.h.

Signed-off-by: Anuj Jain <anuj01.jain@samsung.com>
Signed-off-by: Ayush Garg <ayush.garg@samsung.com>
2 years agobtpclient: Fix gap reset not sending response
Tedd Ho-Jeong An [Sat, 29 Aug 2020 00:08:03 +0000 (17:08 -0700)]
btpclient: Fix gap reset not sending response

This patch fixes the GAP reset command to response the default settings
after resetting the stack.

Signed-off-by: Anuj Jain <anuj01.jain@samsung.com>
Signed-off-by: Ayush Garg <ayush.garg@samsung.com>
2 years agotools/btpclientctl: Add btpclient test application
Tedd Ho-Jeong An [Sat, 29 Aug 2020 00:08:02 +0000 (17:08 -0700)]
tools/btpclientctl: Add btpclient test application

This patch adds a test application for btpclient, which exercises the
BTP API.

Signed-off-by: Ayush Garg <ayush.garg@samsung.com>
2 years agobtp: Update connect event structure
Tedd Ho-Jeong An [Sat, 29 Aug 2020 00:08:01 +0000 (17:08 -0700)]
btp: Update connect event structure

This patch updates the connect event struct to align withe the btp spec.

 Opcode 0x82 - Device Connected event
    Controller Index:   <controller id>
    Event parameters:   Address_Type (1 octet)
                        Address (6 octets)
                        Connection Interval (2 octets)
                        Connection Latency (2 octets)
                        Supervision Timeout (2 octets)

Signed-off-by: Anuj Jain <anuj01.jain@samsung.com>
Signed-off-by: Ayush Garg <ayush.garg@samsung.com>
2 years agoemulator: Implement LE Remove CIG
Luiz Augusto von Dentz [Fri, 11 Sep 2020 20:20:02 +0000 (13:20 -0700)]
emulator: Implement LE Remove CIG

This adds support for LE Remove CIG command.

Signed-off-by: Anuj Jain <anuj01.jain@samsung.com>
Signed-off-by: Ayush Garg <ayush.garg@samsung.com>
2 years agomonitor: Fix decoding of LE Remove CIG
Luiz Augusto von Dentz [Fri, 11 Sep 2020 20:07:57 +0000 (13:07 -0700)]
monitor: Fix decoding of LE Remove CIG

HCI_LE_Remove_CIG does actually returns the CIG_ID in addition to the
status.

Signed-off-by: Anuj Jain <anuj01.jain@samsung.com>
Signed-off-by: Ayush Garg <ayush.garg@samsung.com>
2 years agoaudio/transport: Don't set volume if it's invalid
Archie Pusaka [Tue, 1 Sep 2020 04:00:00 +0000 (12:00 +0800)]
audio/transport: Don't set volume if it's invalid

Adding a check inside media_transport_update_volume to prevent
the volume being updated with an invalid value.

Signed-off-by: Anuj Jain <anuj01.jain@samsung.com>
Signed-off-by: Ayush Garg <ayush.garg@samsung.com>
2 years agoavrcp: Add handler for GET_TOTAL_NUMBER_OF_ITEMS
Archie Pusaka [Wed, 2 Sep 2020 04:57:45 +0000 (12:57 +0800)]
avrcp: Add handler for GET_TOTAL_NUMBER_OF_ITEMS

According to the AVRCP spec, section 4.5, GetTotalNumberOfItems PDU
is mandatory for TG supporting category 1 or 3.

Signed-off-by: Anuj Jain <anuj01.jain@samsung.com>
Signed-off-by: Ayush Garg <ayush.garg@samsung.com>
2 years agoavrcp: Set volume if volume changed event is registered
Yu Liu [Wed, 9 Sep 2020 21:26:43 +0000 (14:26 -0700)]
avrcp: Set volume if volume changed event is registered

Some audio devices don't list the AVRCP TG role in SDP but still support
absolute volume and volume changed event, this change should allow the
stack to control the volumes on these audio devices.

Signed-off-by: Anuj Jain <anuj01.jain@samsung.com>
Signed-off-by: Ayush Garg <ayush.garg@samsung.com>
2 years agoDisable auto-connect on device remove
Manish Mandlik [Wed, 9 Sep 2020 19:40:01 +0000 (12:40 -0700)]
Disable auto-connect on device remove

Auto-connect is not disabled when a device is removed. So in case the
pairing is cancelled, the device is removed, but it stays in the kernel
auto-connect list. This causes future advertisement from that device to
trigger a pairing even if the user has already cancelled the pairing.

This patch disables auto-connect on device remove.

Signed-off-by: Anuj Jain <anuj01.jain@samsung.com>
Signed-off-by: Ayush Garg <ayush.garg@samsung.com>
2 years agoFix coverity issue 59/271559/1
Wootak Jung [Wed, 23 Feb 2022 05:19:06 +0000 (14:19 +0900)]
Fix coverity issue

dead_error_condition: The condition op must be true.
CID 1263496 (#1 of 1): Logically dead code (DEADCODE)

Change-Id: I8f62cb261535f20b2f7cb028c57505f9d7a66a3c

2 years agoReset disconnect timer for the incoming connection 50/271550/1
Dohyun Pyun [Wed, 23 Feb 2022 02:16:08 +0000 (11:16 +0900)]
Reset disconnect timer for the incoming connection

Change-Id: I87c614d923b763ba80c0d6bd0049156ddb10a318
Signed-off-by: Dohyun Pyun <dh79.pyun@samsung.com>
2 years agoLE CoC: Add support for L2CAP_LE type socket 62/271162/3
Ayush Garg [Tue, 15 Feb 2022 07:35:15 +0000 (13:05 +0530)]
LE CoC: Add support for L2CAP_LE type socket

This patch adds following
- Implement method to create and remove L2CAP_LE socket
- Implement method to listen and connect to L2CAP_LE socket

Change-Id: I7f4f6ba5fe49b6d3fa05bfbc3a1b2bfdd269c6bb
Signed-off-by: Ayush Garg <ayush.garg@samsung.com>
2 years agoMerge "Fix response_needed setting logic" into tizen
Pyun DoHyun [Wed, 9 Feb 2022 06:19:44 +0000 (06:19 +0000)]
Merge "Fix response_needed setting logic" into tizen

2 years agoFix response_needed setting logic 95/270795/1
Wootak Jung [Wed, 9 Feb 2022 05:59:03 +0000 (14:59 +0900)]
Fix response_needed setting logic

response_needed should be true in case opcode is EXEC_WRITE_REQ.
EXEC_WRITE_REQ is used if the data size to write is bigger than
mtu size. otherwise, WRITE_REQ is used.

Change-Id: Ie9fbbeae9c0f0148c5dbd4938dafb1dbc6078cc2

2 years agoSet the default MTU size as 512 byte for Robot 91/270791/1
Dohyun Pyun [Wed, 9 Feb 2022 05:15:38 +0000 (14:15 +0900)]
Set the default MTU size as 512 byte for Robot

Change-Id: I017e84872e66d909c3365e5e7d233517cb831753
Signed-off-by: Dohyun Pyun <dh79.pyun@samsung.com>
2 years agoAdd the plugin for DA product 12/270712/1 accepted/tizen/unified/20220209.131716 submit/tizen/20220208.221946
dh79pyun [Tue, 8 Feb 2022 03:52:19 +0000 (12:52 +0900)]
Add the plugin for DA product

Change-Id: Ic449dba4202af8e8254f870b85f3ec79fe344af8
Signed-off-by: dh79pyun <dh79.pyun@samsung.com>
2 years agoGATT: Fix crash in ccc_write_cb. 85/270385/2 accepted/tizen/unified/20220208.112116 submit/tizen/20220207.225310
Anuj Jain [Fri, 28 Jan 2022 11:08:38 +0000 (16:38 +0530)]
GATT: Fix crash in ccc_write_cb.

When gatt client is disconnected after notification enable,
The pending_op becomes null which when used in stop_notify_setup
causes bluetoothd to crash.
This patch will fix the same.

Change-Id: I75316e67be6a1b941457066f05e17ddf2db8732d
Signed-off-by: Anuj Jain <anuj01.jain@samsung.com>
2 years agoMerge "Don't remove the device, if LE connection exist" into tizen submit/tizen/20220128.020531
Pyun DoHyun [Fri, 28 Jan 2022 01:58:09 +0000 (01:58 +0000)]
Merge "Don't remove the device, if LE connection exist" into tizen

2 years agoDon't remove the device, if LE connection exist 06/270306/1
dh79pyun [Fri, 28 Jan 2022 01:33:54 +0000 (10:33 +0900)]
Don't remove the device, if LE connection exist

Change-Id: Idb006cc0ceebc1a7315443fb3f06513da65b7f50
Signed-off-by: dh79pyun <dh79.pyun@samsung.com>
2 years agoFix Svace issue 76/269076/2 submit/tizen/20220110.224444
Anuj Jain [Fri, 7 Jan 2022 08:01:04 +0000 (13:31 +0530)]
Fix Svace issue

This patch fixes Svace issue:
474931: DEREF_OF_NULL.RET.STAT

Change-Id: Id93e55f8beffba9a35e899a9c5be33d715bfc8dc
Signed-off-by: Anuj Jain <anuj01.jain@samsung.com>
2 years agoMerge "a2dp: Fix crash on connection lost" into tizen accepted/tizen/unified/20220104.123146 submit/tizen/20220103.232749
Anupam Roy [Mon, 3 Jan 2022 09:57:51 +0000 (09:57 +0000)]
Merge "a2dp: Fix crash on connection lost" into tizen

2 years agoRevert "Add avdtp ref when disconnect timer is active" 99/268799/1
dh79pyun [Mon, 3 Jan 2022 07:04:56 +0000 (16:04 +0900)]
Revert "Add avdtp ref when disconnect timer is active"

This reverts commit f3f1e150ceb4ada38f3d921ed7d4f1a0e5771abc.

Change-Id: Ie99945ff24d8dbe254fcf51f33a4499b4e74f0c8
Signed-off-by: dh79pyun <dh79.pyun@samsung.com>
2 years agoa2dp: Fix crash on connection lost 48/268648/2
Ayush Garg [Tue, 28 Dec 2021 16:04:42 +0000 (21:34 +0530)]
a2dp: Fix crash on connection lost

when the channel is removed on connection lost, the
setup->chan pointer becomes dangling which causes crash
in find_remote_sep.
So mark this pointer as NULL whenever the channel is removed.

Change-Id: I1b3fe81df18d4ea8eed00739a9db7d0e7232dda0
Signed-off-by: Ayush Garg <ayush.garg@samsung.com>
2 years agoAdd avdtp ref when disconnect timer is active 98/268598/1
Ayush Garg [Mon, 27 Dec 2021 10:28:08 +0000 (15:58 +0530)]
Add avdtp ref when disconnect timer is active

This will be unref either at disconnect_timeout
or remove_disconnect_timer.

Change-Id: I3638ba446200f6c4d82e5f0923c9086f3519c283
Signed-off-by: Ayush Garg <ayush.garg@samsung.com>
2 years agoUse g_memdup2 for glib 2.70 upgrade 24/268424/1 accepted/tizen/unified/20211228.140430 submit/tizen/20211226.223329
dh79pyun [Wed, 22 Dec 2021 23:43:11 +0000 (08:43 +0900)]
Use g_memdup2 for glib 2.70 upgrade

Change-Id: I026932523b303f0e21354baaf1301e7bbea144d9
Signed-off-by: dh79pyun <dh79.pyun@samsung.com>
2 years agoRevert "Use g_memdup2 instead of g_memdup" 23/268423/1
dh79pyun [Wed, 22 Dec 2021 23:18:05 +0000 (08:18 +0900)]
Revert "Use g_memdup2 instead of g_memdup"

This reverts commit 82053d0b6c107e3dacb63bcb36c0efe49e45f2bd.

Change-Id: I80b1506ed69fa7a89e7c364047acbebc9e045489
Signed-off-by: dh79pyun <dh79.pyun@samsung.com>
2 years agoRevert "Fix the 64bit build error for g_memdup" 22/268422/1
dh79pyun [Wed, 22 Dec 2021 23:17:19 +0000 (08:17 +0900)]
Revert "Fix the 64bit build error for g_memdup"

This reverts commit 98c664c20bd85ef09e9eb8c94235d37a9172d4f9.

Change-Id: Ifa0b40080c257205012a642e5059a765f169f402
Signed-off-by: dh79pyun <dh79.pyun@samsung.com>
2 years agoFix the 64bit build error for g_memdup 08/267908/2 accepted/tizen/unified/20211222.230711 submit/tizen/20211212.233427
dh79pyun [Mon, 13 Dec 2021 06:42:00 +0000 (15:42 +0900)]
Fix the 64bit build error for g_memdup

Change-Id: Iaf38a435af93c840ecdcbb77b49510da01edcebc
Signed-off-by: dh79pyun <dh79.pyun@samsung.com>
2 years agoUse g_memdup2 instead of g_memdup 97/267897/1
dh79pyun [Mon, 13 Dec 2021 04:40:22 +0000 (13:40 +0900)]
Use g_memdup2 instead of g_memdup

Change-Id: I436d0b0fa3993d3718a745632a265067501d465f
Signed-off-by: dh79pyun <dh79.pyun@samsung.com>
2 years agoSupport the multi-advertisement for the robot reference 12/267812/1 accepted/tizen/unified/20211210.115136 submit/tizen/20211210.052026
dh79pyun [Fri, 10 Dec 2021 04:57:02 +0000 (13:57 +0900)]
Support the multi-advertisement for the robot reference

Change-Id: Id45295d76f7b8afceadf323378cc0fb72fbf401f
Signed-off-by: dh79pyun <dh79.pyun@samsung.com>
2 years agoIncrease the version 11/267811/1 accepted/tizen/6.5/unified/20211212.212914 submit/tizen_6.5/20211210.052054
dh79pyun [Fri, 10 Dec 2021 05:12:42 +0000 (14:12 +0900)]
Increase the version

Change-Id: Iac5203904bfc746077bd50153740aa9895131c12
Signed-off-by: dh79pyun <dh79.pyun@samsung.com>
2 years agoSupport the multi-advertisement for the robot reference 09/267809/1
dh79pyun [Fri, 10 Dec 2021 04:57:02 +0000 (13:57 +0900)]
Support the multi-advertisement for the robot reference

Change-Id: I671fc3d6c5cd87a823e3d4485498bac7a0d2a6fc
Signed-off-by: dh79pyun <dh79.pyun@samsung.com>
2 years agoModify the dbus policy for robot profile 43/266343/3 accepted/tizen/6.5/unified/20211111.224620 submit/tizen/20211114.231048 submit/tizen_6.5/20211111.022315
dh79pyun [Wed, 10 Nov 2021 23:04:00 +0000 (08:04 +0900)]
Modify the dbus policy for robot profile

Change-Id: I16389887221197cd24b1e84445090077d4e4cee6
Signed-off-by: dh79pyun <dh79.pyun@samsung.com>
2 years agoIncrease the version 00/266100/1
dh79pyun [Sun, 7 Nov 2021 23:11:43 +0000 (08:11 +0900)]
Increase the version

Change-Id: Iacc44f2912922fe269d2eaea898d7ad07e52624b
Signed-off-by: dh79pyun <dh79.pyun@samsung.com>
2 years agoa2dp: Handle remote SEP disappearing 99/266099/1
Luiz Augusto von Dentz [Thu, 21 Jan 2021 00:25:09 +0000 (16:25 -0800)]
a2dp: Handle remote SEP disappearing

Some devices (Sony WH-1000XM4) seems to dinamically change its endpoints
depending on the configuration which may leave behind endpoints loaded
from cache that are no longer valid.

gh-issue: https://github.com/bluez/bluez/issues/85

Change-Id: I0e5ac965cc09da7e7d1ac1c554d77d75a0d65e22
Signed-off-by: DoHyun Pyun <dh79.pyun@samsung.com>
3 years agoIncrease the version 08/266008/1 accepted/tizen/unified/20211108.181239 submit/tizen/20211105.042734
dh79pyun [Wed, 3 Nov 2021 04:08:24 +0000 (13:08 +0900)]
Increase the version

Change-Id: I7e0eed9586d869fc0ad97048adc24c0406144013
Signed-off-by: dh79pyun <dh79.pyun@samsung.com>
3 years agoFix A2DP sink disconnection issue on streaming 07/266007/1
dh79pyun [Wed, 3 Nov 2021 02:38:43 +0000 (11:38 +0900)]
Fix A2DP sink disconnection issue on streaming

The logic of disconnect_timeout was changed in bluez 5.55.
So we should modify Tizen specific logic for that.

Change-Id: Ic54b39d08b7f403407ae7dfa9ca6c9207bb1c4c5
Signed-off-by: dh79pyun <dh79.pyun@samsung.com>
3 years agoEnable Multi ADV only for wearable profile 25/265225/1 accepted/tizen/unified/20211102.024808 submit/tizen/20211101.051752
dh79pyun [Wed, 13 Oct 2021 02:31:54 +0000 (11:31 +0900)]
Enable Multi ADV only for wearable profile

Change-Id: Ieeec8d5f2278e0cc72e613c81f0725da3a8bab54
Signed-off-by: dh79pyun <dh79.pyun@samsung.com>
3 years agoGATT: Send client address to HAL layer on Notification state change 69/262169/4 accepted/tizen/6.5/unified/20211028.224421 accepted/tizen/unified/20210805.131621 submit/tizen/20210804.223925 submit/tizen_6.5/20211028.163301 tizen_6.5.m2_release
Anuj Jain [Tue, 3 Aug 2021 08:46:59 +0000 (14:16 +0530)]
GATT: Send client address to HAL layer on Notification state change

In gatt Server role Client address is added to dbus method calls
corresponding to StartNotify and StopNotify methods at BLUEZ layer.

This patchset should be merged with the following capi and
bluetooth-frwk's patchset in order to match API and avoid crash:
bluetooth-frwk Change-Id: Ib54ba54c318692b4ee0eaef9b2310c60dadeb661
capi Change-Id: Ic4868234a4fc682f9bff2c66ac1aee2683f3d6c6

Change-Id: I81a0994f2299e988f8ef6428537647c899700fda
Signed-off-by: Anuj Jain <anuj01.jain@samsung.com>
3 years agoFix code unreachable issue 19/259819/1 accepted/tizen/unified/20210617.124929 submit/tizen/20210615.223409
Wootak Jung [Tue, 15 Jun 2021 07:31:07 +0000 (16:31 +0900)]
Fix code unreachable issue

Change-Id: Ibe19389b7c27ec24191a3ecb965f741b83fc4c14
Signed-off-by: Wootak Jung <wootak.jung@samsung.com>
3 years agoAdd robot conf file 78/259178/1 accepted/tizen/unified/20210607.124421 submit/tizen/20210606.232858
Wootak Jung [Tue, 1 Jun 2021 00:12:07 +0000 (09:12 +0900)]
Add robot conf file

Change-Id: Id601ff4b3972ed3bff86d00b1d35180973366db5
Signed-off-by: Wootak Jung <wootak.jung@samsung.com>
3 years agoFix the coverity issue (resource leak) 07/258707/1
Anuj Jain [Mon, 24 May 2021 08:46:43 +0000 (14:16 +0530)]
Fix the coverity issue (resource leak)

Variable str must be free after its usage.
This change fixes the same.

Change-Id: I880aa48cbf31d13a27a47b7fc08807a56af18fd3
Signed-off-by: Anuj Jain <anuj01.jain@samsung.com>
3 years agoa2dp: Fix crash on discover_cb 15/258115/5
Wootak Jung [Tue, 11 May 2021 02:10:53 +0000 (11:10 +0900)]
a2dp: Fix crash on discover_cb

There have been reports of crashes on discover_cb where the setup
would most likely already have been freed but discover_cb would still
be called, so instead of assuming the setup pointer would be valid try
to lookup the list of active setups and log a warning when it happens.

Change-Id: Icca1608c48be43174492d69204c8d31b158a99df
Signed-off-by: Wootak Jung <wootak.jung@samsung.com>
3 years agoUpdate the version to 5.55 bluez_upgrade_5.55
Ayush Garg [Mon, 12 Apr 2021 10:15:09 +0000 (15:45 +0530)]
Update the version to 5.55

Change-Id: I9028e219dc378c0f3218d85b267d646541da7ddd
Signed-off-by: Ayush Garg <ayush.garg@samsung.com>
3 years agoRelease 5.55
Marcel Holtmann [Sun, 6 Sep 2020 13:51:06 +0000 (15:51 +0200)]
Release 5.55

Signed-off-by: Anuj Jain <anuj01.jain@samsung.com>
Signed-off-by: Ayush Garg <ayush.garg@samsung.com>
3 years agobuild: Update library version
Marcel Holtmann [Sun, 6 Sep 2020 13:50:53 +0000 (15:50 +0200)]
build: Update library version

Signed-off-by: Anuj Jain <anuj01.jain@samsung.com>
Signed-off-by: Ayush Garg <ayush.garg@samsung.com>
3 years agolib: Update company identifiers
Marcel Holtmann [Sat, 5 Sep 2020 19:18:52 +0000 (21:18 +0200)]
lib: Update company identifiers

Signed-off-by: Anuj Jain <anuj01.jain@samsung.com>
Signed-off-by: Ayush Garg <ayush.garg@samsung.com>
3 years agoavrcp: Implement Press/Hold/Release method for MediaPlayer1
Archie Pusaka [Thu, 3 Sep 2020 03:50:39 +0000 (11:50 +0800)]
avrcp: Implement Press/Hold/Release method for MediaPlayer1

This allows us to send any passthrough command, complete with the
support to hold down the key. Using Press() will automatically
release the key, while using Hold() will keep the key held until
an explicit call to Release() is received.

This doesn't allow us to hold multiple keys simultaneously, since
according to the AV/C Panel Subunit Specification, part 9.4, when the
target receive a pressed command without receiving a release command
of the previous key, it will be treated as if the release command is
sent but not received.

Previously, the rewind and fast_forward keys are unique in terms that
they are treated as holdable keys, this patch preserves that behavior
of calling Rewind() and FastForward(). A rewind event which is
reported via the new Press() method will automatically be released
instead.

Signed-off-by: Anuj Jain <anuj01.jain@samsung.com>
Signed-off-by: Ayush Garg <ayush.garg@samsung.com>
3 years agodoc/media-api: Add Press/Hold/Release methods for MediaPlayer1
Archie Pusaka [Thu, 3 Sep 2020 03:50:37 +0000 (11:50 +0800)]
doc/media-api: Add Press/Hold/Release methods for MediaPlayer1

This allows us to send any passthrough command. The button can also
be held for an extended amount of time.

Reviewed-by: Michael Sun <michaelfsun@chromium.org>
Signed-off-by: Anuj Jain <anuj01.jain@samsung.com>
Signed-off-by: Ayush Garg <ayush.garg@samsung.com>
3 years agoclient: Fix typo in bluetoothctl
Barry Byford [Sun, 30 Aug 2020 07:11:08 +0000 (08:11 +0100)]
client: Fix typo in bluetoothctl

Signed-off-by: Anuj Jain <anuj01.jain@samsung.com>
Signed-off-by: Ayush Garg <ayush.garg@samsung.com>
3 years agomonitor: Add support for Suspend and Resume events
Abhishek Pandit-Subedi [Sat, 29 Aug 2020 01:02:09 +0000 (18:02 -0700)]
monitor: Add support for Suspend and Resume events

Add support to pretty print Suspend and Resume mgmt events in btmon.

Example:

@ MGMT Event: Controller Suspended (0x002d) plen 1
        Suspend state: Page scanning and/or passive scanning (2)

@ MGMT Event: Controller Resumed (0x002e) plen 8
        Wake reason: Remote wake due to peer device connection (2)
        LE Address: CD:F3:CD:13:C5:9A (OUI CD-F3-CD)

Signed-off-by: Anuj Jain <anuj01.jain@samsung.com>
Signed-off-by: Ayush Garg <ayush.garg@samsung.com>
3 years agomgmt: Add controller suspend and resume events
Abhishek Pandit-Subedi [Sat, 29 Aug 2020 01:02:08 +0000 (18:02 -0700)]
mgmt: Add controller suspend and resume events

Add the controller suspend and resume events.

Signed-off-by: Anuj Jain <anuj01.jain@samsung.com>
Signed-off-by: Ayush Garg <ayush.garg@samsung.com>
3 years agoprofiles/network: Log connection event after setting device name
edef [Thu, 27 Aug 2020 11:27:59 +0000 (11:27 +0000)]
profiles/network: Log connection event after setting device name

Without reordering these two statements, the logs look like this:

    bnep%d connected
    bnep0 disconnected

Signed-off-by: Anuj Jain <anuj01.jain@samsung.com>
Signed-off-by: Ayush Garg <ayush.garg@samsung.com>
3 years agogatt: Accept empty array in parse_includes()
Jie Jiang [Wed, 26 Aug 2020 06:37:42 +0000 (23:37 -0700)]
gatt: Accept empty array in parse_includes()

Currently parse_includes() will return false if the "Includes" property
is an empty array. Empty array in the "Includes" property should be
treated as valid.

Signed-off-by: Anuj Jain <anuj01.jain@samsung.com>
Signed-off-by: Ayush Garg <ayush.garg@samsung.com>
3 years agoadapter: Mark device temporary state pairing failure
Yu Liu [Mon, 24 Aug 2020 18:19:03 +0000 (11:19 -0700)]
adapter: Mark device temporary state pairing failure

This caused the device hanging around as a discovered device forever
even if it is turned off or not in present.

Signed-off-by: Anuj Jain <anuj01.jain@samsung.com>
Signed-off-by: Ayush Garg <ayush.garg@samsung.com>
3 years agodevice: Fix race condition between device connection and disconnection
Sonny Sasaka [Fri, 21 Aug 2020 18:01:06 +0000 (11:01 -0700)]
device: Fix race condition between device connection and disconnection

When Connect() is called and waiting for return, dev_disconnected may be
called due to MGMT_EV_DEVICE_DISCONNECTED event from kernel. In that
case reply to client that the connection failed otherwise the dbus
method will timeout because bluetoothd never replies.

Tested with simulation of a lot of Connect() to bluetooth devices and
check that error is returned from bluetoothd rather than dbus timeout
when this race condition happens.

Signed-off-by: Anuj Jain <anuj01.jain@samsung.com>
Signed-off-by: Ayush Garg <ayush.garg@samsung.com>
3 years agoadapter: Fix crash in discovery_disconnect
Sonny Sasaka [Fri, 21 Aug 2020 17:58:38 +0000 (10:58 -0700)]
adapter: Fix crash in discovery_disconnect

discovery_disconnect crashed because the adapter pointer has been freed
before. This patch makes sure that discovery list is cleaned up before
adapter pointer is freed.

Signed-off-by: Anuj Jain <anuj01.jain@samsung.com>
Signed-off-by: Ayush Garg <ayush.garg@samsung.com>
3 years agoinput/device: Unregister all UHID event listeners at UHID_DESTROY
Sonny Sasaka [Fri, 21 Aug 2020 04:35:36 +0000 (21:35 -0700)]
input/device: Unregister all UHID event listeners at UHID_DESTROY

When destroying UHID, we should also unregister all event listeners so
that they don't get double registered at reconnection. It fixes a bug
where battery report is not available to kernel after reconnection and
also prevents memory leak.

Tested with Logitech M535 mouse:
* Connect mouse to the device running BlueZ
* cat /sys/class/power_supply/hid-{addr}-battery/capacity # works
* Disconnect mouse
* Reconnect mouse
* cat /sys/class/power_supply/hid-{addr}-battery/capacity # still works

Signed-off-by: Anuj Jain <anuj01.jain@samsung.com>
Signed-off-by: Ayush Garg <ayush.garg@samsung.com>
3 years agoclient: Add cancel-pairing command
Miao-chen Chou [Fri, 21 Aug 2020 07:28:12 +0000 (00:28 -0700)]
client: Add cancel-pairing command

This adds cancel-pairing command which can be used to cancel the ongoing
pairing.

Signed-off-by: Anuj Jain <anuj01.jain@samsung.com>
Signed-off-by: Ayush Garg <ayush.garg@samsung.com>
3 years agomain: add configurable refresh_discovery parameter
Archie Pusaka [Tue, 18 Aug 2020 07:34:10 +0000 (15:34 +0800)]
main: add configurable refresh_discovery parameter

This is to configure the default behavior of issuing SDP query
to update the services upon profile connection.

Signed-off-by: Anuj Jain <anuj01.jain@samsung.com>
Signed-off-by: Ayush Garg <ayush.garg@samsung.com>
3 years agodevice: Don't browse SDP if HIDSDPDisable is set
Archie Pusaka [Tue, 18 Aug 2020 07:34:09 +0000 (15:34 +0800)]
device: Don't browse SDP if HIDSDPDisable is set

According to the HID1.1 spec, part 5.3.4.9:
The HIDSDPDisable attribute is a Boolean value, which indicates
whether connection to the SDP channel and Control or Interrupt
channels are mutually exclusive. This feature supports Bluetooth
HID devices that have minimal resources, and multiplex those
resources between servicing the initialization (SDP) and runtime
(Control and Interrupt) channels.

However, Bluez still tries to connect SDP upon HID connection,
regardless of the existence of the HIDSDPDisable attribute.

This patch prevents the connection of SDP after HID has been
established, if the device has HIDSDPDisable attribute.

Signed-off-by: Anuj Jain <anuj01.jain@samsung.com>
Signed-off-by: Ayush Garg <ayush.garg@samsung.com>
3 years agoshared/ad: move MAX_ADV_DATA_LEN macro to the header
Miao-chen Chou [Tue, 18 Aug 2020 06:19:39 +0000 (23:19 -0700)]
shared/ad: move MAX_ADV_DATA_LEN macro to the header

This moves MAX_ADV_DATA_LEN macro to src/shared/ad.h and rename it to
BT_AD_MAX_DATA_LEN.

Signed-off-by: Anuj Jain <anuj01.jain@samsung.com>
Signed-off-by: Ayush Garg <ayush.garg@samsung.com>
3 years agoadvertising: Fix dbus response for over-advertising
Daniel Winkler [Fri, 14 Aug 2020 22:58:18 +0000 (15:58 -0700)]
advertising: Fix dbus response for over-advertising

client_free would always send a dbus method_return to fix the case where
a request to Unregister occurred before the MGMT call returned. However,
in the code path where too many advertisements are registered, this
method_return prevents the failure from being sent properly. This patch
makes sure the reference to the register_advertisement DBusMessage is
not stored in the client structure until the end of
register_advertisement. This ensures that we only respond once, either
in register_advertisement or in client_free, not both.

It also changes the dbus response in the fast unregister_advertisement
case from a method_return to a btd_error_failed, since the registration
was never allowed to complete, and thus was not successful.

The patch was tested in the following ways:

To verify it did not break the segfault fix in
caff2b48ca54bbc57b5da3f63317767489aa5b48, I repro'd the failure by
quickly unregistering after registering, and verified that the segfault
is still fixed with this change.

Ran through our automated tests that register too many advertisements
and verify that the registration fails with the intended "Maximum
Advertisements Reached" error response.

Signed-off-by: Anuj Jain <anuj01.jain@samsung.com>
Signed-off-by: Ayush Garg <ayush.garg@samsung.com>
3 years agoavrcp: include all player settings in notif event
Howard Chung [Wed, 5 Aug 2020 02:05:36 +0000 (10:05 +0800)]
avrcp: include all player settings in notif event

According to AVRCP 1.6.2 spec section 6.7.2 table 6.39, all player
application settings should be returned to the CT and let CT to
determine which settings have changed. Currently bluez only returns
the changed attribute instead. This patch also addresses a potential
issue on which the number of application settings mismatches with
the actual number returned.

Change-Id: I3fbedd0d73f72c9de5d24af173aded4adf0b9a19
Signed-off-by: Anuj Jain <anuj01.jain@samsung.com>
Signed-off-by: Ayush Garg <ayush.garg@samsung.com>
3 years agoinput/device: Send UHID_DESTROY upon disconnection
Archie Pusaka [Mon, 3 Aug 2020 06:52:24 +0000 (14:52 +0800)]
input/device: Send UHID_DESTROY upon disconnection

According to the uhid documentation: "If your device disconnects,
you should send an UHID_DESTROY event"

Signed-off-by: Anuj Jain <anuj01.jain@samsung.com>
Signed-off-by: Ayush Garg <ayush.garg@samsung.com>
3 years agoinput/device: Implement handle for UHID_SET_REPORT
Archie Pusaka [Mon, 3 Aug 2020 06:52:23 +0000 (14:52 +0800)]
input/device: Implement handle for UHID_SET_REPORT

This patch listens to UHID_SET_REPORT event and forwards this
message to the hid device. Upon reply, we also send a report back
to the kernel as UHID_SET_REPORT_REPLY.

hidp_send_set_report no longer listen UHID_OUTPUT events, that is
handled by hidp_send_output instead.

Signed-off-by: Anuj Jain <anuj01.jain@samsung.com>
Signed-off-by: Ayush Garg <ayush.garg@samsung.com>
3 years agoinput/device: Replace UHID_FEATURE with UHID_GET_REPORT
Archie Pusaka [Mon, 3 Aug 2020 06:52:22 +0000 (14:52 +0800)]
input/device: Replace UHID_FEATURE with UHID_GET_REPORT

According to kernel's uhid.h, UHID_FEATURE is obsolete and is
replaced with UHID_GET_REPORT.

Signed-off-by: Anuj Jain <anuj01.jain@samsung.com>
Signed-off-by: Ayush Garg <ayush.garg@samsung.com>
3 years agoinput: Remove bonding info when receiving virtual cable unplug
Archie Pusaka [Thu, 16 Jul 2020 18:04:33 +0000 (02:04 +0800)]
input: Remove bonding info when receiving virtual cable unplug

From Bluetooth HID Profile 1.1 Spec: If a Virtual Cable is
unplugged via a HID control Virtual Unplug command, then both the
Bluetooth HID device and Bluetooth HID Host shall destroy or
invalidate all Bluetooth bonding and Virtual Cable information
that was previously stored in persistent memory for the respective
Virtually Cabled devices and hosts.

This patch removes the bonding information upon receiving and/or
sending a "virtual cable unplug".

Signed-off-by: Anuj Jain <anuj01.jain@samsung.com>
Signed-off-by: Ayush Garg <ayush.garg@samsung.com>
3 years agodevice: add device_remove_bonding function
Archie Pusaka [Thu, 16 Jul 2020 18:04:32 +0000 (02:04 +0800)]
device: add device_remove_bonding function

This patch splits the "bonding removal" function in device.c,
because we need to remove bonding information when receiving
"virtual cable unplug" in HID profile.

Signed-off-by: Anuj Jain <anuj01.jain@samsung.com>
Signed-off-by: Ayush Garg <ayush.garg@samsung.com>