| 051902a0 |
monitor: Fix array boundary issue with version information |
Marcel Holtmann |
10 years ago |
1 file, +9, -7 |
| d0296eea |
monitor: Add support for vendor diagnostic packets |
Marcel Holtmann |
10 years ago |
3 files, +27, -0 |
| 5d920b68 |
monitor: Add support for showing index information updates |
Marcel Holtmann |
10 years ago |
3 files, +37, -2 |
| ddd83295 |
core/advertising: Fix string match in le adv search
Instead of searching for matched entry in the list, the function
match_advertisement was searching for the first non-matched entry, as a
result, it wasn't possible to unregister existing advertisement from LE
Adv manager. |
Andrejs Hanins |
10 years ago |
1 file, +2, -2 |
| 5eb2973b |
emulator: Refactor le set scan enable command handler
le_set_scan_enable_complete should be called as post hook action. |
Mariusz Skamra |
10 years ago |
1 file, +9, -2 |
| 0d0fe88a |
emulator: Enable Slave-initiated Features Exchange feature |
Mariusz Skamra |
10 years ago |
1 file, +1, -0 |
| 576ccb07 |
emulator: Add support for LE Remote Connection Parameter Request Negative Reply
< HCI Command: LE Connection Update (0x08|0x0013) plen 14
[hci1] 915.472416
Handle: 42
Min connection interval: 0.00 msec (0x0000)
Max connection interval: 18.75 msec (0x000f)
Connection latency: 0x0000
Supervision timeout: 32000 msec (0x0c80)
Min connection length: 0.625 msec (0x0001)
Max connection length: 0.625 msec (0x0001)
> HCI Event: Command Status (0x0f) plen 4 [hci1] 915.472432
LE Connection Update (0x08|0x0013) ncmd 1
Status: Success (0x00)
> HCI Event: LE Meta Event (0x3e) plen 11 [hci0] 915.472443
LE Remote Connection Parameter Request (0x06)
Handle: 42
Min connection interval: 0.00 msec (0x0000)
Max connection interval: 18.75 msec (0x000f)
Connection latency: 0x0000
Supervision timeout: 32000 msec (0x0c80)
< HCI Command: LE Remote Connection Parameter Request Negative Reply
(0x08|0x0021) plen 3 [hci0] 915.474095
Handle: 42
Reason: Invalid LMP Parameters / Invalid LL Parameters (0x1e)
> HCI Event: Command Complete (0x0e) plen 6 [hci0] 915.474119
LE Remote Connection Parameter Request Negative Reply
(0x08|0x0021) ncmd 1
Status: Success (0x00)
Handle: 42
> HCI Event: LE Meta Event (0x3e) plen 10 [hci1] 915.474124
LE Connection Update Complete (0x03)
Status: Invalid LMP Parameters / Invalid LL Parameters (0x1e)
Handle: 42
Connection interval: 4800.00 msec (0x0f00)
Connection latency: 0.00 msec (0x0000)
Supervision timeout: 327680 msec (0x8000)
LE Connection Update rejected due to invalid parameter:
Min connection interval: 0.00 msec (0x0000) |
Mariusz Skamra |
10 years ago |
1 file, +38, -0 |
| 78fbfd3f |
emulator: Add support for LE Remote Connection Parameter Request Reply
< HCI Command: LE Connection Update (0x08|0x0013) plen 14
[hci0] 92750.079447
Handle: 42
Min connection interval: 50.00 msec (0x0028)
Max connection interval: 70.00 msec (0x0038)
Connection latency: 0x0000
Supervision timeout: 420 msec (0x002a)
Min connection length: 0.000 msec (0x0000)
Max connection length: 0.000 msec (0x0000)
> HCI Event: Command Status (0x0f) plen 4
[hci0] 92750.079459
LE Connection Update (0x08|0x0013) ncmd 1
Status: Success (0x00)
> HCI Event: LE Meta Event (0x3e) plen 11
[hci1] 92750.079462
LE Remote Connection Parameter Request (0x06)
Handle: 42
Min connection interval: 50.00 msec (0x0028)
Max connection interval: 70.00 msec (0x0038)
Connection latency: 0x0000
Supervision timeout: 420 msec (0x002a)
< HCI Command: LE Remote Connection Parameter Request Reply
(0x08|0x0020) plen 14 [hci1] 92750.079476
Handle: 42
Min connection interval: 50.00 msec (0x0028)
Max connection interval: 70.00 msec (0x0038)
Connection latency: 0x0000
Supervision timeout: 420 msec (0x002a)
Min connection length: 0.000 msec (0x0000)
Max connection length: 0.000 msec (0x0000)
> HCI Event: Command Complete (0x0e) plen 6
[hci1] 92750.079507
LE Remote Connection Parameter Request Reply (0x08|0x0020)
ncmd 1
Status: Success (0x00)
Handle: 42
> HCI Event: LE Meta Event (0x3e) plen 10
[hci0] 92750.079510
LE Connection Update Complete (0x03)
Status: Success (0x00)
Handle: 42
Connection interval: 50.00 msec (0x0028)
Connection latency: 0.00 msec (0x0000)
Supervision timeout: 420 msec (0x002a)
> HCI Event: LE Meta Event (0x3e) plen 10
[hci1] 92750.079509
LE Connection Update Complete (0x03)
Status: Success (0x00)
Handle: 42
Connection interval: 50.00 msec (0x0028)
Connection latency: 0.00 msec (0x0000)
Supervision timeout: 420 msec (0x002a)
@ New Conn Param: 00:AA:01:00:00:23 (1) hint 0 min 0x0028 max 0x0038
latency 0x0000 timeout 0x002a |
Mariusz Skamra |
10 years ago |
1 file, +67, -7 |
| 658ab4f3 |
emulator: Remove duplicated assignment
Connection handle has been already assigned few lines earlier. |
Mariusz Skamra |
10 years ago |
1 file, +0, -2 |
| ee014e7f |
emulator: Fix LE Connection Complete Event data
This sets LE Connection Complete Event paramaters based on parameters
from LE Create Connection command.
Event parameters like Conn_Interval and Supervision_Timeout
shouldn't be set to 0. |
Mariusz Skamra |
10 years ago |
1 file, +19, -13 |
| c88a7353 |
monitor: Add support for open and close index events |
Marcel Holtmann |
10 years ago |
6 files, +43, -0 |
| 5731f84f |
monitor: Remove unused copy of btsnoop files |
Marcel Holtmann |
10 years ago |
2 files, +0, -493 |
| f4b7924b |
doc: The management API version 1.10 is available since kernel 4.2 |
Marcel Holtmann |
10 years ago |
1 file, +1, -0 |
| f8888b6b |
tools/sco-tester: Handle HCI emulator setup errors
Missing return is causing confusing output from sco-tester:
Read Index List callback
Status: 0x00
Failed to setup HCI emulation
eSCO CVSD - Success - pre setup failed
New hciemu instance created
eSCO CVSD - Success - done |
Kuba Pawlak |
10 years ago |
1 file, +1, -0 |
| 62cf3d82 |
unit/test-uhid: Use tester framework |
Gowtham Anandha Babu |
10 years ago |
1 file, +26, -36 |
| e56a21ce |
unit/test-sdp: Use tester framework |
Gowtham Anandha Babu |
10 years ago |
1 file, +40, -51 |
| addc9720 |
unit/test-hfp: Use tester framework |
Gowtham Anandha Babu |
10 years ago |
1 file, +44, -47 |
| b76028a6 |
tools: Fix Invalid return
Return DBUS_HANDLER_RESULT_HANDLED instead of
DBUS_HANDLER_RESULT_NOT_YET_HANDLED for player message handle. |
Bharat Panda |
10 years ago |
1 file, +1, -1 |
| 644537c0 |
audio/control: Add Player property to MediaControl1
This adds Player property to MediaControl1 interface which contains the
object path of the addressed player. |
Luiz Augusto von Dentz |
10 years ago |
5 files, +68, -4 |
| 9f0985ca |
audio/control: Mark all methods of MediaControl1 as deprecated
MediaControl1 is deprecated according to its documentation. |
Luiz Augusto von Dentz |
10 years ago |
1 file, +11, -9 |
| 8912d0f0 |
doc/media-api: Add Player property to MediaControl1
Player property is use to inform the current addressed player which is
necessary in case more than one player is available.
This is also remove the deprecated status of MediaControl1 and instead
deprecated just its methods which similar functionality have been moved
to MediaPlayer1. |
Luiz Augusto von Dentz |
10 years ago |
1 file, +14, -10 |
| 05790fa7 |
audio/avrcp: Fix possible crash when current player is removed
If current player is removed a new player should be assigned.
Note: In normal condition this should never happen since player 0 works
as a place holder but there have been some cases where addressed player
changed don't match with any player returned by GetFolderList which
cause a new player to be created and the old one to be destroyed. |
Luiz Augusto von Dentz |
10 years ago |
1 file, +8, -6 |
| 6de5a954 |
shared/ad: Fix license to be LGPL
Code in the shared directory should be LGPL. It was mistakenly
checked in as GPL. |
Marie Janssen |
10 years ago |
2 files, +22, -14 |
| 749b9eb9 |
Release 5.35 |
Marcel Holtmann |
10 years ago |
2 files, +12, -1 |
| 40bb318d |
policy: Add AutoEnable config option
This option is used to configure policy for auto enabling adapters when
found. This includes adapters found on start as well as adapters that
are plugged in later on.
Some distributions use legacy "hciconfig hci0 up" in boot-scripts to
automatically enable controllers on start. But that is causing SMP
kernel code to not being properly initialized.
This patch allows distributions to automatically enable adapters in
race free manner even if no agent is provided eg. in login screen. |
Szymon Janc |
10 years ago |
2 files, +32, -2 |
| 7b0f3bb3 |
build: Update library version |
Marcel Holtmann |
10 years ago |
1 file, +1, -1 |
| f1235de3 |
lib: Update company identifiers |
Marcel Holtmann |
10 years ago |
1 file, +35, -1 |
| 1bed031c |
shared/gatt-helpers: Fix reporting discovery failure
If sending ATT request failed discovery should be reported as failed.
Due to missing goto success was overwritten with true value.
This regression was introduced in db24bf09d66325a. |
Szymon Janc |
10 years ago |
1 file, +1, -0 |
| 1539ff9d |
audio/avrcp: Remove not needed null check in
Browsing handlers are always getting valid pdu pointer so there is no
need to double check that. Also pdu pointer is already dereferenced
before calling handler. |
Szymon Janc |
10 years ago |
1 file, +1, -1 |
| 55aad6d0 |
core/gatt: Fix assigning false instead of 0
write_id type is unsigned int not boolean. |
Luiz Augusto von Dentz |
10 years ago |
1 file, +2, -2 |
| 9440a8d1 |
gdbus: Remove unnecessary empty line |
Johan Hedberg |
10 years ago |
1 file, +0, -1 |
| 344df6b9 |
core/gatt-client: fix losing notifications
When notifications are quickly send to BlueZ, it tries to signal that
through dbus using g_dbus_emit_property_changed, which would merge all
changes and schedule sending property changed in g_iddle_add.
If the stream of notifications from device is fast enough, there might be
no iddle moment to send properties changed before next notification
arives, which would result in notifications being lost.
This patch fixes that by using method that sends properties changed
immediately, without waiting for iddle moment. |
Jakub Pawlowski |
10 years ago |
1 file, +4, -2 |
| a3ff1a8e |
gdbus: add method for immediate property update
g_dbus_emit_property_changed doesn't send dbus signal immediately. Instead
it stores changed properties, and schedule signal to be send at
g_iddle_add. Additionally, if this method is called few times for some
property, only last value will be sent in property changed signal.
If remote device sends lots of notifications, they're all scheduled to be
notified using this method. This might result in some notifications being
lost.
This patch adds new method, that can immediately send property changed
signal, instead of sheduling it for nearest iddle moment. |
Jakub Pawlowski |
10 years ago |
2 files, +23, -3 |
| e25fd4d8 |
core/gatt-client: Fix WriteValue always failing after first request
WriteValue may use write without response proceduce in case it is
supported but since that don't have any response write_id is left set
after first request preventing blocking any new request. |
Luiz Augusto von Dentz |
10 years ago |
1 file, +3, -3 |
| 5783e002 |
core/adapter: probe profiles after loading ltks
When bluetoothd starts, it loads devices from storage.
During this process, it loads general info. That includes loading UUIDS,
and letting plugins decide whether they're interested in this device. Then
load_irks call is made to load identity resolving keys into kernel.
If during this process plugin decides it's interested in given device,
they might register device for auto connecting by calling
btd_device_add_attio_callback. This update kernel auto connect list.
update_white_list inside "net/bluetooth/hci_request.c" is called. It uses
hci_find_irk_by_addr to decide whether kernel know irk for given address
and shall not use whitelist. However irks were not loaded yet - they're
loaded by bluetoothd after all devices were initialized (and possibly
added to autoconnect).
Because of that, device public address is added to whitelist (instead of
resolvable private address), and whitelist is used. Even worse, after call
to load_irks, or after manually calling connect, device is still
improperly added to whitelist and will be unable to connect (timeout will
happen).
To fix that bluetoothd must call load_irks before letting plugins enable
autoconnect. |
Jakub Pawlowski |
10 years ago |
1 file, +11, -3 |
| 77527f92 |
tools/mgmt-tester: Add Device Found test with invalid field
This test verify if kernel correctly terminates EIR when invalid
advertising data (field length too big) was received from
remote device. |
Szymon Janc |
10 years ago |
1 file, +28, -1 |
| a3b9ffd1 |
shared/gatt-client: enable notifications right after connecting
Right now, if you re-connect to device that was previously registered
in DBus, you can read and write it's characteristic without any error.
Trying to register for notifications would however fail. This patch
fixes that by making sure you can register for notifications before
gatt_client is ready. It also re-register exising clients right after
connection, not when gatt_client is ready. |
Jakub Pawlowski |
10 years ago |
2 files, +7, -7 |
| 51dca8e8 |
core/device: Store services when they change or after pairing.
Service caching works only for paired devices. Right now caching is
triggered only right after discovery finishes. That means that if already
paired device sends service changed notofication, cache won't be updated.
Also if you connect to new device, and then pair during this connection,
your services won't be cached until reconnect. This will require full
service discovery which is slow.
This patch fixes that by trying to cache services every time services
changed, and right after successful pairing. |
Jakub Pawlowski |
10 years ago |
1 file, +7, -3 |
| bf25bb8b |
audio/transport: Fix emitting volume changed too soon
The volume should start at maximum (127) but at that point there is no
reason to notify the remote since there is no stream ongoing so no
changes can be applied. |
Luiz Augusto von Dentz |
10 years ago |
1 file, +0, -1 |
| 4f7843a0 |
audio/transport: Fix not emitting Volume changes
If Volume is changed locally the change should be propagated using
PropertiesChanged. |
Luiz Augusto von Dentz |
10 years ago |
1 file, +13, -4 |
| ed347b64 |
audio/avrcp: Enable volume notifications
When acting as a TG volume changes should be notified using
RegisterNotification not SetAbsoluteVolume as the later is a CT
operation. |
Luiz Augusto von Dentz |
10 years ago |
3 files, +60, -8 |
| 85b829bd |
audio/avrcp: Fix rejecting SetAbsoluteVolume without a player
A player is not necessary in order for SetAbsoluteVolume to work. |
Luiz Augusto von Dentz |
10 years ago |
1 file, +0, -4 |
| d8da7067 |
audio/avrcp: Fix missing event for volume control
CT and TG are always relative to client and server role, so although TG is
associated with a player and CT with a remote controller in case of volume
control the CT is in fact the player and the TG the remote controller,
because of that PTS will not register any TG record when testing this thus
controller_init will not register the necessary events. |
Luiz Augusto von Dentz |
10 years ago |
1 file, +2, -4 |
| 83856855 |
core: Fix removing connected devices after discovery
In case a temporary device is connected when the list of discovered
devices is to be cleaned up we should not go ahead and remove the
device. The disconnection handling code will anyway correctly take
care of removing temporary devices. |
Johan Hedberg |
10 years ago |
1 file, +1, -1 |
| 95c09761 |
obexd: Fix not destroying session if owner disconnects
If the owner disconnects the session should be destroyed even if the
connection is pending:
obexd/client/session.c:owner_disconnected()
obexd/client/session.c:obc_session_shutdown() 0x822abb8
obexd/client/session.c:obc_session_ref() 0x822abb8: ref=3
obexd/client/session.c:obc_session_unref() 0x822abb8: ref=2
obexd/client/bluetooth.c:transport_connect() port 19
obexd/client/bluetooth.c:transport_callback()
obexd/client/session.c:transport_func()
obexd/client/bluetooth.c:bluetooth_getpacketopt()
obexd/client/pbap.c:pbap_probe() /org/bluez/obex/client/session1
obexd/client/session.c:obc_session_ref() 0x822abb8: ref=3
obexd/client/session.c:obc_session_register() Session(0x822abb8) registered /org/bluez/obex/client/session1
obexd/client/session.c:obc_session_unref() 0x822abb8: ref=2
To fix this the code now checks if the connect callback is pending, in
that case destroy the callback releasing the reference it carrying. |
Luiz Augusto von Dentz |
10 years ago |
1 file, +28, -6 |
| 5cc4a172 |
tools/btattach: Fix leak of bt_hci object |
Johan Hedberg |
10 years ago |
1 file, +2, -1 |
| a796a606 |
core/device: Only reload database if empty
There is no need to reload the database once it has been populated. |
Luiz Augusto von Dentz |
10 years ago |
1 file, +2, -1 |
| f9e1d37d |
core/gatt: Fix not able to read/write on reconnections
Upon reconnecting the attributes may already be available from cache
which mean the client would be able to issue commands while discovery
is not complete thus btd_gatt_client_ready was not called yet.
To fix now btd_gatt_client_ready is split into btd_gatt_client_connected
which is called whenever connected leaving btd_gatt_client_ready to only
deal with exporting services found during the discovery. |
Luiz Augusto von Dentz |
10 years ago |
3 files, +20, -7 |
| 9b6a3e36 |
shared/gatt-client: Fix not freeing notify data
notify_data_write_ccc takes another reference in case it succeed so
the original reference should be dropped to cause the data to be freed
once notify_data_write_ccc completes. |
Luiz Augusto von Dentz |
10 years ago |
1 file, +1, -2 |
| 8e73a002 |
hog: handle HoG init failures correctly
When attio_connected_cb() is called for a HoG device, BlueZ should
be in one of the two states:
1) hogdev->uhid_created == FALSE && hogdev->reports == NULL
* initial connection to HoG device, or first reconnect after
BlueZ has been restarted
* BlueZ needs to discover all HoG device characteristics
(including report map) and create uHID device for HID input
2) hogdev->uhid_created == TRUE && hogdev->reports != NULL
* second or subsequent reconnect
* all HoG device characteristics (including report map) have
been successfully discovered previously, and uHID device
has been created
However, it is possible that the connection between BlueZ and
HoG device is abruptly terminated amid HoG device characteristics
discovery. Or, HoG report map discovery might intermittently fail.
This can leave BlueZ in inconsistent state such that it knows about
some of the characteristics, but the report map was never received
and uHID device not created, i.e.:
hogdev->uhid_created == FALSE && hogdev->reports != NULL
attio_connected_cb() needs to detect this condition, clean up
hogdev->reports, and re-discover HoG device characteristics. |
Petri Gynther |
10 years ago |
1 file, +18, -12 |