aboutsummaryrefslogtreecommitdiffstats
path: root/binding/bluetooth-api.c
AgeCommit message (Collapse)AuthorFilesLines
2021-09-13Rework adapter detection logicneedlefish_13.93.0needlefish/13.93.0marlin_12.93.0marlin_12.92.0marlin_12.91.0marlin_12.90.1marlin/12.93.0marlin/12.92.0marlin/12.91.0marlin/12.90.113.93.012.93.012.92.012.91.012.90.1Scott Murray1-21/+35
Rework the adapter detection logic in the helper thread to use the initialization done signal to the main process to indicate that basic BlueZ D-Bus initialization has completed, then loop forever looking for an adapter as opposed to just trying once. This improves the behavior with hardware such as the TI Wilink chipset or the Broadcom chipset on Raspberry Pi 4, where the firmware loading delay may result in the HCI device not actually being available yet when the binding is started. Bug-AGL: SPEC-4060 Signed-off-by: Scott Murray <scott.murray@konsulko.com> Change-Id: I1da5c2e3168acd0f8f55dc75c2408647d03c0a4e
2021-04-07Fixing pincode problemmarlin_12.90.0marlin/12.90.0lamprey_11.92.0lamprey_11.91.0lamprey/11.92.0lamprey/11.91.012.90.011.92.011.91.0Saman Mahmoodi1-0/+2
In get_pincode function there was a problem as below: when the set_pincode verb is not called so in the DB we have not any pincode then for pairing it should use default pincode as 1234 in the get_pincode function when is called read verb from persistence, if pincode does not exist the pincode variable is NULL so we should check the pincode variable and if is NULL, we should assign default value as 1234 Bug-AGL: SPEC-3814 Signed-off-by: Saman Mahmoodi <mahmoudi.saman1@gmail.com> Change-Id: I5f72834d2dcd8ecd3861fc894f4b1a7ebd7efc04
2021-03-01Fix potential memory leakLi Xiaoming1-1/+4
json structure allocating code should be placed in where it is used, if there is a condition check which may cause a return before the before-mentioned place in the function. Bug-AGL: SPEC-3584 Change-Id: Ibbcae4357c6011eff29d031a853c8a0435f0a5ce Signed-off-by: Li Xiaoming <lixm.fnst@cn.fujitsu.com>
2021-02-02Fixing double free memorysaman1-4/+1
Bug-AGL: SPEC-3785 Change-Id: I792bac4fe96228840eb5d43abdc4a364d2127207 Signed-off-by: saman <mahmoudi.saman1@gmail.com>
2021-01-05More attention to bluez player propertieskoi_10.93.0koi_10.92.0koi/10.93.0koi/10.92.010.93.010.92.0saman1-2/+10
It is possible the bluez player does not assign to default bluez player (player0) and assign to other player such as playerN. For fixing this issue we can access to correct bluez player from "Player" property in "org.bluez.MediaControl1" interface. By reading Player property on "org.bluez.MediaControl1" interface we could access to player path and ther is not need to define a const string variable like "player0"! Bug-AGL: SPEC-3722 Signed-off-by: saman <mahmoudi.saman1@gmail.com> Change-Id: I8a5f948c511bbb61ccc67db09ad17aeb02ab5bd1
2020-10-19select adapter from bluez listRaquel Medina1-10/+27
Update algorithm to select bt adapter from bluez's list of available adapters: 1) use system default (default_adapter); if not found then 2) fallback to first available adapter from the list; if the list is empty then 3) fallback to no adapter present scenario. Bug-AGL: SPEC-3577 Signed-off-by: Raquel Medina <raquel.medina@konsulko.com> Change-Id: Ifb35070a42a2306cc867993a22bcbb730803c33d
2020-10-06Adding pairing request with authentication as "RequestPinCode"saman1-1/+25
Adding outgoing pairing request with another BT device when we call pair verb. "RequestPinCode" is handled as xml into bluetooth-agent.c to confirm a pincode and send it to BT device when we call pair request from AGL device to other device. Bug-AGL: SPEC-3610 Signed-off-by: saman <mahmoudi.saman1@gmail.com> Change-Id: I4fa8c9ab5d3bbf323cee7645f217bb1056d93b65
2020-09-26Improve default_adapter verb performanceLi, Xiaoming1-18/+17
If not provide a new adapter or if new adapter is the same one with default, reply with existing defalut adapter. At the same time, clean some unnecessary code, following up the change of https://gerrit.automotivelinux.org/gerrit/c/apps/agl-service-bluetooth/+/25292 Bug-AGL: SPEC-3577 Change-Id: If3cbf8d1fb36a144f321db1056c38fd335ef9a28 Signed-off-by: Li, Xiaoming <lixm.fnst@cn.fujitsu.com>
2020-09-21create persistence binding entry for default adapterRaquel Medina1-1/+5
Add logic to create an entry for 'default_adapter' in the persistence database. This will enable having the stored value available between power up/power down cycles. Bug-AGL: SPEC-3577 Signed-off-by: Raquel Medina <raquel.medina@konsulko.com> Change-Id: I158dcc1d37ccaf8dfe5d53e262f0619ad780c26a
2020-09-14Fix build warning of -WconversionLi, Xiaoming1-1/+1
log: [ 22%] Building C object binding/CMakeFiles/afm-bluetooth-binding.dir/bluetooth-api.c.o /home/devel/xds-workspace/app/agl-service-bluetooth/binding/bluetooth-api.c: In function ‘bluetooth_get_adapters_count’: /home/devel/xds-workspace/app/agl-service-bluetooth/binding/bluetooth-api.c:540:9: warning: conversion from ‘size_t’ {aka ‘long unsigned int’} to ‘int’ may change value [-Wconversion] return count; ^~~~~ Change-Id: I05263a24322e928d5cd5dfdddec68372eeff3e62 Signed-off-by: Li, Xiaoming <lixm.fnst@cn.fujitsu.com>
2020-07-22Switch to refcounted allocation for init datajellyfish_9.99.2jellyfish/9.99.29.99.2Scott Murray1-7/+18
When running in qemu, there seems to be a rare race condition where the timeout waiting on BlueZ during init happens with the timing such that bluetooth_func doesn't finish before init returns, resulting in an invalid access to the init_data structure that was on the init function's stack. To fix this, init_data is now allocated and refcounted using glib's atomic refcounted memory allocator API. Bug-AGL: SPEC-3301 Signed-off-by: Scott Murray <scott.murray@konsulko.com> Change-Id: I1ea8831ca5c008a2916909671e62cbd770906e5e
2020-07-13fix segfaults due to races & missing adapterRaquel Medina1-14/+57
During start up, there are races between the bluetooth, persistence, bluetooth-map and bluetooth-pbap bindings; on top of it, in the case there's no bluetooth controller in the system, various key parameters can exhibit a null value. The combination of these races and the lack of bluetooth controller can manifest in a number of segfaults in the bluetooth binding (it's very easy to reproduce on qemu). This commit brings in several changes to make the bluetooth binding resilient to the races and lack of bluetooth controller: * on startup, retrieve the default adapter from the persistence binding from the init thread * store the system default adapter in the service init data structure, and store the active adapter in the bluetooth state structure. * update get_default_adapter to return value obtained from persistence biding, without further processing; * add guards to make sure the userdata retrieved from the application framework is valid; * on verbs processing, ensure the caller provides an adapter to apply the verb to, or that at least there's a valid adapter associated to the bluetooth state structure; * initialize agent_data's device_path following free operation; * add guards for mediaplayer_path. Bug-AGL: SPEC-3301 Signed-off-by: Raquel Medina <raquel.medina@konsulko.com> Change-Id: Ia5a0dc9a61024ff43cd247216d0dff6918046f7e
2020-07-13distinguish between no controller and no bluez serviceRaquel Medina1-2/+6
The initialization sequence for dbus services is not fixed, and some races have been observed between blutoothd and agl-service-bluetooth when running on qemu: sometimes Bluetooth-Manager can be ready before org.bluez and this results in reporting no adapter, even though it's not accurate. Also, although this issue has been seen only using qemu, the race is there and it could also manifest in other platforms with a bluetooth controller attached. This patch simply provides the logic to discern between 'no org.bluez service found' and 'no bluetooth controller present': - in the case of no org.bluez service detected, an error is returned to allow for retries, - in the case of no controller present, no error is returned and agl-service-bluetooth completes the initialization. Bug-AGL: SPEC-3301 Signed-off-by: Raquel Medina <raquel.medina@konsulko.com> Change-Id: I4868803bcfbd36fb65028cea5c997c4f174675a0
2020-07-09unregister agent if previously registeredRaquel Medina1-1/+2
Only unregister agent on exit path if it had been registered beforehand. Bug-AGL: SPEC-3301 Signed-off-by: Raquel Medina <raquel.medina@konsulko.com> Change-Id: I60fc2af01800521e0d5b026dbf7404b445eff6f9
2020-07-08force init completion if no controllerRaquel Medina1-8/+35
Add logic to obtain the number of bluetooth controllers in the system, if there's at least one, then apply the existing logic: register the agent, etc; if there's none, simply add a line to record this case in the journal, skip agent registration and signal that the Bluetooth-Manager service initialization completed without errors, to keep the service running. Also fixed indentation on 2 lines on the same file where the mentioned changes are applied: binding/bluetooth-api.c. Bug-AGL: SPEC-3301 Signed-off-by: Raquel Medina <raquel.medina@konsulko.com> Change-Id: I43a7aac709845bef71295ebd470546f252db8fa0
2020-02-17binding: bluetooth: remove unused version verbMatt Ranostay1-14/+0
No other applications/bindings check the version verb to figure which schema version to use. Bug-AGL: SPEC-3156 Change-Id: I5baea8d7a38101bc9378f90c40981e73074ed558 Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
2019-05-06binding: bluetooth: use BLUEZ_AT_DEVICE for call_work_create()halibut_7.99.1halibut/7.99.17.99.1Matt Ranostay1-2/+2
Use the BLUEZ_AT_DEVICE macro instead of explicit string references. Bug-AGL: SPEC-2361 Change-Id: I2e892a7b6e2d838765cfa12dadd970e34c2f5d86 Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
2019-05-05binding: bluetooth: add missing g_variant_unref() on repliesMatt Ranostay1-0/+1
To avoid memory leaks g_variant_unref() needs to be called on dbus replies. Bug-AGL: SPEC-2361 Change-Id: Ie8db961f182e77fe5a36c91acddff1e549e7f60a Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
2019-04-28binding: bluetooth: use BLUEZ_AT_DEVICE macroMatt Ranostay1-5/+5
Use the BLUEZ_AT_DEVICE macro instead of explicit string references. Bug-AGL: SPEC-2361 Change-Id: Icddf5914433123e65d2a7d40629bab362b60c1c1 Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
2019-04-05binding: bluetooth: remove versioning references in structsMatt Ranostay1-2/+2
In order to upgrade to future versions easier don't use versioned structs but the respective typedefs Change-Id: Ic789dc7c74e0a2a1352effa1cfeea4998cbc56f3 Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
2019-04-02binding: bluetooth: add changed action for adapter_changes eventMatt Ranostay1-13/+10
Report back property changes in the adapter_changes event, which is required for detecting when an adapter is truly powered on. Bug-AGL: SPEC-2295 Change-Id: I58441369277d2e778f2bb077e7b1be4aa3a3b1b4 Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
2019-03-27binding: bluetooth: allow multiple paths for org.bluez.MediaPlayer1 interfacesMatt Ranostay1-3/+7
Previously org.bluez.MediaPlayer1 paths could only resolve to player0 but certain phones request another instance for another application (e.g. player1). This patchset changes the default media player path to last connected, and which in theory should be from the media application in use on the phone. From limited experiments not in use interfaces will be reaped shortly after going idle. Bug-AGL: SPEC-2281 Change-Id: Id4bdc89cd395d5cd3ac043394761a95b306e5c6d Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
2019-02-25binding: bluetooth: add adapter_changes eventMatt Ranostay1-3/+23
adapter_changes event allows clients to know when an adapter's status changes as in addition or removal. Bug-AGL: SPEC-1763 Change-Id: I7a442ece7cf6b508d6290130a939fccc1bddebb9 Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
2019-02-14binding: bluetooth: fix segfault when no adapters are connectedMatt Ranostay1-0/+4
Bug-AGL: SPEC-2047 Change-Id: I55a080af35dad1514ee0423eff80e65331891bc7 Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
2019-01-14binding: bluetooth: replace rfkill code with network servicehalibut_7.90.0halibut/7.90.0guppy_6.99.4guppy/6.99.47.90.06.99.4Matt Ranostay1-2/+11
Remove bluetooth-rfkill.c and replace with agl-service-network calls which in turn allows ConnMan to correctly manage bluetooth rfkill state. Bug-AGL: SPEC-2124 Change-Id: Ibe0460be0f29957f99ea06975a1fa12d01840080 Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
2019-01-02binding: bluetooth: add Transport parameter to discovery filterMatt Ranostay1-12/+25
Allow clients to select what Bluetooth transport they want a discovery scan to attempt to detect. This will improve scanning in for example when a client only wants to detect bredr or ble devices . Bug-AGL: SPEC-2094 Change-Id: I2a983f5243aefcb582a7476bbae34d6ba88c39a6 Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
2018-12-10binding: bluetooth: add MediaTransport1 supportMatt Ranostay1-13/+62
Bug-AGL: SPEC-1630 Change-Id: I6ad1f85d4edc00239f891edf6994db416e8a2dbd Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
2018-12-07binding: bluetooth: add default_adapter verbMatt Ranostay1-3/+38
Allow setting of default adapter for use by other verbs within the binding. This allows to select an adapter on boards with more than one. Bug-AGL: SPEC-1630 Change-Id: Iec77b0abaa9f4c092dc5c827522efb1744953fce Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
2018-12-07binding: bluetooth: add connect/disconnect actions to avrcp_controlsMatt Ranostay1-1/+26
Allow subscribers to connect/disconnect to a2dp/avrcp Bluetoothp profiles Bug-AGL: SPEC-1630 Change-Id: I5c4c2a2f06636b2b74cb453a3af576beb8026ab1 Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
2018-11-14binding: bluetooth: add MediaPlayer1 interface media eventsguppy_6.99.2guppy_6.99.1guppy/6.99.2guppy/6.99.16.99.26.99.1Matt Ranostay1-14/+98
Report back MediaPlayer1 interface events for A2DP media playback Bug-AGL: SPEC-1630 Change-Id: I777f19af2de247fe676d5bede4bacbbad8ca9844 Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
2018-11-12binding: bluetooth: add new avrcp controls verbMatt Ranostay1-0/+43
Since MediaPlayer1 controls are part of bluez it makes sense to keep them here for now Bug-AGL: SPEC-1630 Change-Id: Ia02341179a322082357b0e7eff07264e34197d57 Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
2018-11-12binding: bluetooth: add autoconnect featureMatt Ranostay1-0/+2
Attempt connection on each paired device till one is successful on startup. Bug-AGL: SPEC-1630 Change-Id: I213876f65528d0eaeaa5b55a745f541b286f26b5 Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
2018-11-12binding: bluetooth: add power adapter change eventsMatt Ranostay1-0/+12
Bug-AGL: SPEC-1630 Change-Id: I615cbf19d180556b0650dbf6b5ba48848be49f97 Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
2018-11-12binding: bluetooth: change api name to old case sensitive formatMatt Ranostay1-1/+1
Bug-AGL: SPEC-1630 Change-Id: Iae18f069b7a8091331efda97a270b70d05de3e79 Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
2018-11-12binding: bluetooth: add initial discovery filter supportMatt Ranostay1-1/+35
Allow clients to request devices only with certain profile UUIDs to be displayed in an discovery scan. This allows to filter out things like location tokens, smart scales, and etc which can't possibly have a2dp or hfp profiles for instance. NOTE: This is a write only setting. In the future should be read/write to see current discovery filters. Bug-AGL: SPEC-1630 Change-Id: Ic8b18656f84ac8047b170d6e601fcc2e63786af0 Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
2018-11-12binding: bluetooth: add BLUEZ_DEFAULT_ADAPTERMatt Ranostay1-14/+5
Bug-AGL: SPEC-1630 Change-Id: I8e55d273ab58992e6f6327523853c6d330505278 Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
2018-11-12binding: bluetooth: add return_bluez_path functionMatt Ranostay1-21/+34
Concatenate adapter and device parameters to return a bluez path for usage within the binding's dbus calls. Bug-AGL: SPEC-1630 Change-Id: I4c96fa48baaf12b23aac98ba35f1ca82f7005bcb Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
2018-11-12binding: bluetooth: add check to be sure GError has been setMatt Ranostay1-4/+4
segfaults can happen if the dbus call reply fails but doesn't set a GError. Bug-AGL: SPEC-1630 Change-Id: I83ea2f7997a8fcef1cdd73a7df2cf9ad97e00d91 Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
2018-11-12binding: bluetooth: return adapter/device versus bluez pathMatt Ranostay1-6/+5
To allow this binding API to be bluetooth stack agnostic remove pure bluez paths, and replace with generic fields. Bug-AGL: SPEC-1630 Change-Id: Iadba73782b6339df2ca5937e16a654e7ef3e477b Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
2018-11-12binding: bluetooth: don't send empty PropertiesChanged messagesMatt Ranostay1-1/+11
Possible to have an PropertiesChanged events that produces no changes that are useful to report. Bug-AGL: SPEC-1630 Change-Id: I09b25943e3676abd5dd0f1c8caa2c0a2414f409f Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
2018-11-12binding: bluetooth: add version verbMatt Ranostay1-0/+14
Report API as 2.0 to middleware + application clients Bug-AGL: SPEC-1630 Change-Id: I4ce889a06a0cd287af2d08068a59bbc7d359c20b Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
2018-11-12binding: bluetooth: initial commit of binding rewriteMatt Ranostay1-0/+1034
Bug-AGL: SPEC-1630 Change-Id: I33cfec70283fa29f47b76f9e6be3e8e6cd6a2f54 Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>