Frédéric Danis
3e56161ee2
bluez5: backend-ofono: Fix ofono blocking signals
...
Filter callback should return DBUS_HANDLER_RESULT_HANDLED only when signals
was handled, otherwise it prevents signals to be seen by other objects.
Also fix a Typo.
2020-07-24 15:49:28 +00:00
Frédéric Danis
4fb56ee69b
bluez5: Share DBus connection between all backends
2020-07-24 15:49:28 +00:00
Frédéric Danis
db0c224b06
bluez5: Make native and ofono backends optional
2020-07-22 18:59:58 +02:00
Frédéric Danis
ebdaac160c
bluez5: backend-ofono: Fix SCO nodes not created on oFono's CardAdded
...
oFono's CardAdded signal from can occur after BlueZ's ServicesResolved
signal. In this case the device is created without SCO nodes.
This is fixed by not enforcing device creation on ServicesResolved signal.
2020-07-22 18:59:58 +02:00
Frédéric Danis
18da8fd21f
bluez5: backend-ofono: Add spa_bt_transport support
2020-07-22 18:59:58 +02:00
Frédéric Danis
9b6dd9461e
bluez5: Create backend skeleton for HFP support using oFono
2020-07-22 18:59:58 +02:00
Frédéric Danis
2d91e62a19
bluez5: Workaround incorrect SCO MTU
...
It seems that some BT adapters don't return correct SCO MTU, see
https://marc.info/?t=148586768600002&r=1&w=2
Do not try to autodetect the MTU and use a fix MTU size of 48 bytes.
2020-07-17 19:36:33 +02:00
Frédéric Danis
06a6e11806
bluez5: Create backend for native HSP support
2020-07-17 18:34:33 +02:00
Julian Bouzas
23788ee617
sco-sink: clean up and write data at a constant bitrate
...
Audio data received by HSP/HFP devices need to be sent at a constant
bitrate to achieve smooth playback
2020-07-17 15:13:03 +00:00
Julian Bouzas
551844c0ef
sco-source: initialize read mtu and read chunks of its size
...
The mtu value returned by the kernel seems to be incorrect, we use
the hardcoded value of 48 for now (like bluezalsa)
2020-07-17 15:13:03 +00:00
Julian Bouzas
ba96eecba0
sco-source: clean up and support different buffer sizes
2020-07-13 12:05:01 -04:00
Julian Bouzas
f743fff694
sco-source: add RateMatch IO
2020-07-13 12:04:56 -04:00
Julian Bouzas
2ae4322cca
a2dpsource: fill the buffer as much as possible
...
Fills the buffer until the buffer data size is maxsize / frame_size
2020-07-07 15:34:57 +00:00
Julian Bouzas
60eb8dae87
a2dpsource: add RateMatch IO
2020-07-07 15:34:57 +00:00
Wim Taymans
8ad769b943
bluez: improve profile description
2020-07-03 16:25:46 +02:00
Wim Taymans
49332eb30f
bluez5: handle suspend
2020-07-03 16:23:17 +02:00
Wim Taymans
7778f8d70e
bluez5: remove devices correctly
...
Remember how many devices we emited for the current profile and
remove them all when we switch profile.
2020-07-03 16:12:19 +02:00
Wim Taymans
7b129c1020
sco: remove transport hooks on destroy
2020-07-03 16:10:46 +02:00
Wim Taymans
357868eeb5
a2dp: remove transport hooks on destroy
2020-07-03 16:08:53 +02:00
Wim Taymans
1091d2eaf1
bluez5: improve profile enumeration
2020-07-03 12:14:00 +02:00
Frédéric Danis
0b970ec965
bluez: Update BT profiles
...
Only provide high-level A2DP and HSP/HFP profiles in pw.
Expose nodes based on pw profiles and BT profiles available on remote
device.
2020-07-03 11:53:52 +02:00
Frédéric Danis
41d7ccc336
a2dpsink: Process right amount of data with sbc_encode
...
sbc_encode() can only process data with at least this->codesize bytes.
When encode_buffer() is called with less then codesize bytes, accumulate
those bytes in a temporary buffer up to codesize length, then SBC encode
them.
Maximum size for SBC buffer is (subbands * blocks * channels * 2) with max
subbands = 8, max blocks = 16, max channels = 2, i.e. 512.
Fixes !277
2020-06-27 13:03:24 +02:00
Julian Bouzas
1f1386879b
a2dpsink: only request new data when buffer is done
2020-06-18 08:02:50 +00:00
George Kiagiadakis
da9d17e73e
bluez5: don't add transport twice in the device transports list
...
The transport is already added in profile_new_connection(), unless
is_new is TRUE
Apart from being wrong, adding the same node twice in a list also causes
spa_list_foreach() to loop forever...
2020-06-10 18:24:07 +03:00
Wim Taymans
c13c028ebb
bluez5: fix leaks
2020-06-05 15:49:39 +02:00
Wim Taymans
1246116f06
bluez: free object path
2020-06-01 15:37:57 +02:00
Wim Taymans
45c62dfde6
a2dp: check and log return value of fcntl
2020-05-20 15:24:25 +02:00
Wim Taymans
aafd1e7298
improve debug
...
Improve log so that debug level 3 gives a reasonably readable overview
of what is going on.
2020-04-22 12:47:18 +02:00
Wim Taymans
a5b0553328
Fix some -Wenum-conversion errors
...
Make pw_direction and spa_direction the same
Explicitly cast some enums or use the right enums
2020-04-04 20:03:08 +02:00
Wim Taymans
c4cf5e6629
bluez5: protect against NULL transport
...
The transport can be destroyed at any time, make sure we don't
crash when it does.
2020-03-23 13:49:30 +01:00
Wim Taymans
72d70b0f48
Add and fix some more warnings
...
Fixes #216
2020-03-17 11:37:56 +01:00
Wim Taymans
a528189d26
slave -> follower
...
We use master/follower terminology everywhere.
2020-02-21 10:47:32 +01:00
Wim Taymans
01934297bd
fix compilation warning
2020-02-20 12:03:16 +01:00
Wim Taymans
65caf8832c
spa: install in versioned directory
...
So that we can run old and new plugins side by side.
2020-01-29 15:51:41 +01:00
Wim Taymans
6ac9b7b3a7
spa: add spa_aprintf helper
...
Add a asprintf helper function that handles errors correctly.
Use this in places where we use asprintf to avoid warnings when we
don't check the return value.
2020-01-27 12:19:21 +01:00
Wim Taymans
9db240e786
bluez: implement profile on device
...
Enumerate the available profiles on the device. Make params
visible.
Implement set_profile, only expose the nodes that belong to the
profile.
2020-01-10 13:25:40 +01:00
Wim Taymans
5f70a2713e
a2dp: fix audio
...
Don't just remove the buffer from the queue when it was only
partially written. To do this, return the error code from add_buffer
and only remove the buffer when there is a real error.
2020-01-10 09:55:02 +01:00
Wim Taymans
8f3b2b9543
bluez5: implement sync, profile and enum_profile
2020-01-03 13:01:54 +01:00
Wim Taymans
f391353c7f
Make interface types a string
...
This is more in line with wayland and it allows us to create new
interfaces in modules without having to add anything to the type
enum. It also removes some lookups to map type_id to readable
name in debug.
2019-12-19 13:36:04 +01:00
Wim Taymans
feb8dd3a34
Add include of keys.h
2019-11-21 09:34:08 +01:00
Wim Taymans
68e94a2e7e
system: use spa_system functions for fds
2019-11-19 13:41:40 +01:00
Wim Taymans
9ffec214b8
fix includes
2019-10-25 15:01:02 +02:00
Wim Taymans
81fc595e3d
add defines for max buffer size
2019-10-24 12:51:34 +02:00
Wim Taymans
c8ffcaaefe
plugins: just check the data pointer
...
We don't need to look at the data type, we just just be happy when
the data pointer is filled in.
2019-10-16 12:23:42 +02:00
Wim Taymans
77e07e1948
improve properties on globals and ports
2019-09-20 13:28:06 +02:00
Wim Taymans
6756a3c8fc
monitor: remove monitor API and use device
...
Remove the monitor API, we can use the device API for it. Make sure
we support creating devices (like alsa) from another device (udev).
Use new object.id to store the object id in the object properties. Use
the port.id/node.id etc to make relations to other objects.
2019-09-20 13:04:14 +02:00
Wim Taymans
8b85cc225e
rename HAVE/NEED_BUFFER -> HAVE/NEED_DATA
...
It is more generic and works with control-only ports as well
2019-09-16 12:55:23 +02:00
Julian Bouzas
ddd2a97f7e
bluez: set bluez profile property when emitting node
...
We need to expose the bluetooth profile in the nodes so that external
applications know how to handle them.
2019-09-10 10:42:11 +02:00
Julian Bouzas
5363d3352c
bluez: process available buffers in read_ready callback for a2dp-source and sco-source
2019-08-28 17:17:12 +02:00
Julian Bouzas
3a43fac0c2
sco-sink: fix several timeout issues
2019-08-22 00:07:04 +02:00