summaryrefslogtreecommitdiffstats
path: root/plugins
AgeCommit message (Collapse)AuthorFilesLines
2019-05-24Clarify internals hal functions and files namesJonathan Aillet1-4/+5
The purpose of this commit is to have of a more standard way to name files and functions used to generate/handle hal api (generated from hal json configuration file). It occurred to me that 'hal-controller' was not a good name because it is harder for people who don't know about the app-controller to understanded what is the purpose of these files/functions. It was renamed to 'internal-hal' because it's about hal that are all handle/load by hal-manager in opposition of external-hal that are independant binding/binder that can register themselves to hal-manager. BUG-AGL: SPEC-2329 Change-Id: I11b7efe64ec474b004a2a15ed8969b9db95d428f Signed-off-by: Jonathan Aillet <jonathan.aillet@iot.bzh>
2019-02-18bluealsa plugin: do not do anything when the HAL is not readyThierry Bultel1-7/+21
Change-Id: Ifad933c3c5f574aad437a59708c01c6d674dc914 Signed-off-by: Thierry Bultel <thierry.bultel@iot.bzh>
2019-02-13bluealsa plugin: get the sampling rate from the transportThierry Bultel2-9/+32
The sampling rate, for both SCO and A2DP, had been harcoded for convenience. But this is not a constant, because it depends on the connected handset. This commit retrieves the sampling rate for each new transport and uses that information as a parameter for the stream creation in the softmixer. Change-Id: I4d30eccba9cc63d7f4e618c571719996a136b4f5 Signed-off-by: Thierry Bultel <thierry.bultel@iot.bzh>
2019-02-07hal-bluealsa: fixes the abort due to sync call in io eventhalibut_7.90.0halibut/7.90.07.90.0Thierry Bultel1-17/+4
The binder does not accept that synchronous calls are performed in the context of a systemd event, it makes is abort. To solve that, synchronous calls for creating/deleting bluetooth streams in the softmixer are simply here replaced by asynchronous calls. BUG-AGL: SPEC-2162 Change-Id: I4916d11cc904622449930365c5c09f67fe74425f Signed-off-by: Thierry Bultel <thierry.bultel@iot.bzh>
2019-01-29bluealsa plugin: monitor the state of service via dbusThierry Bultel4-29/+219
By monitoring the changes of names on dbus, and by asking dbus for the list of available names at startup, the bluealsa plugin can now be started at whatever time, and is also robust to bluealsa restarts. Moreover, since the bluealsa name has the HCI interface has a suffix (org.bluez-alsa.hci0, for instance), there is not need to hardcode the hci name. Even better, the plugin supports several instances of bluealsa (since the daemon needs one instace per hci device), and will add a watch for added transports for every instance it detects. Complete cleanup of the created streams in softmixer is done when one watched instance disappears. Finnaly, there is a new cmd line '-DWITHOUT_BLUEALSA' option to CMake, for developpers that want to use 4A on host, without the bluealsa library. Default build (SDK, bitbake) consider that the bluealsa shared library is always available. Notice that in the future, the bluealsa library might disappeared, to be replaced by a full dbus interface to bluealsa. BUG-AGL:SPEC-2126 Change-Id: I67fc6edf5147c71dc97f1fc1257d3dadbdde20fc Signed-off-by: Thierry Bultel <thierry.bultel@iot.bzh>
2019-01-28Migrate to newer application framework callsJonathan Aillet1-2/+2
Migrate from 'afb_api_call_sync_legacy' function to 'afb_api_call_sync' function, therefore, handle function return and response json differently from before. Change-Id: Ia7fb42188b8d41e22db2d824459a0d10ed6d6a8e Signed-off-by: Jonathan Aillet <jonathan.aillet@iot.bzh>
2019-01-28Migrate app-controller from submodule to libraryJonathan Aillet1-2/+0
Change-Id: I5a3de70994374e9a447fde67eef5925915335863 Signed-off-by: Jonathan Aillet <jonathan.aillet@iot.bzh>
2019-01-28Migrate afb-helpers from submodule to libraryJonathan Aillet1-1/+0
Change-Id: I1d554d29e11f7bac327ed65b4187dac3572ae0a6 Signed-off-by: Jonathan Aillet <jonathan.aillet@iot.bzh>
2019-01-28Move from controller functions to afb functionsJonathan Aillet3-37/+37
Move from controller 'afb-definitions.h' functions to application framework 'afb/afb-binding.h' functions. Change-Id: I4cd62af881ef8ac949b082ede9dfcc4736d1e12c Signed-off-by: Jonathan Aillet <jonathan.aillet@iot.bzh>
2019-01-28Turn '4a-hal-utilities' into an internal libraryJonathan Aillet1-0/+1
That way, includes will be cleaner and '4a-hal-utilities' functions will be usable in plugin. Change-Id: I8a2146bd4e5dd5ef449b9ba7f2b1eed4d59045d3 Signed-off-by: Jonathan Aillet <jonathan.aillet@iot.bzh>
2018-12-20Adds support for bluetooth audio through bluez-alsaguppy_6.99.4guppy_6.99.3guppy/6.99.4guppy/6.99.36.99.46.99.3Thierry Bultel13-1194/+971
Implements a new bluealsa plugin to the HAL manager, reacting to the changes of the available transports. This plugin is linked with the new bluealsa.so shared library. New transports (SCO & A2DP) result in softmixer invocations of the "attach" verb, that creates the new capture (eg, A2DP capture from bluealsa ioplug PCM, SCO microphone capture), playbacks (SCO playback to a softmixer zone, and SCO output to bluealsa iogplug PCM). When a transport disappears, the hal manager calls the transaction deletion verb that will tell the softmixer to remove the created streams and associated objects. Change-Id: I36037a4f14ef7fee38070fc0df66c40b4ce46e8b Signed-off-by: Thierry Bultel <thierry.bultel@iot.bzh>
2018-11-02hal-bt : Each plugin has its own data structureJonathan Aillet1-68/+94
Each hal bluetooth plugin instance has its own data structure. It is made to have several hal working simultaneously with bluetooth. Change-Id: I2175bcbb327f590a6098b68c206d1cf518c8fb74 Signed-off-by: Jonathan Aillet <jonathan.aillet@iot.bzh>
2018-11-02Use new ctl functions to set/get ctl external dataJonathan Aillet1-1/+1
Use new controller functions to set/get controller configuration structure external data field. Change-Id: I0e1ce259fccbbd8b4054efbed07cef5c5b9243b5 Signed-off-by: Jonathan Aillet <jonathan.aillet@iot.bzh>
2018-11-02Update version of app-controller submodule.Jonathan Aillet1-2/+2
Use new function of controller to add actions to sections (avoid compilation errors). Changes of app-controller: (33abde5 - Romain Forlot) Reworked pluginConfig function (8094951 - Romain Forlot) Retrieve plugin list from api rather than a global (871bd64 - Romain Forlot) Add setter/getter for user free defined pointer (f543f05 - Romain Forlot) Pass the plugin to action. (ce07538 - Romain Forlot) Abort if one required API is missing Change-Id: Ic19d72776f00cfe5f8b8fcecff3ab46d42376dda Signed-off-by: Jonathan Aillet <jonathan.aillet@iot.bzh>
2018-11-02Use ctl defines to call afb functionsJonathan Aillet2-43/+48
Use controller 'afb-defintions.h' defines to call application framework functions. Change-Id: If9599b0397a593440ce2e08f039dc279c63f7428 Signed-off-by: Jonathan Aillet <jonathan.aillet@iot.bzh>
2018-10-08bluetooth: set audio rate to 44100Thierry Bultel1-2/+2
44100 seems to be the most common sample rate. Fis is a temporary fix, because the actual sample rate may differ and depend on the information available at the bluetooth transport level. Handing it dynamically means some significant changes in softmixer: - instanciate the rate converter on playback in all the cases - either been able to modify it after creation, or if not possible, close and restart the output PCM plugin stack. Change-Id: I6bd900fd539251b60b97bbaf15e1390bf49c13e0 Signed-off-by: Thierry Bultel <thierry.bultel@iot.bzh>
2018-10-08hl-bt: Check that hal is available in initJonathan Aillet1-9/+16
In hal-bluetooth plugin, check that hal is available in plugin initialization. Move every data initialization after that everything is checked. Change-Id: I8055dd17e75099a8009f21a1070d1de293682d4b Signed-off-by: Jonathan Aillet <jonathan.aillet@iot.bzh>
2018-10-08hal-bt: Use plugin name definition in printsJonathan Aillet1-3/+3
Use hal-bluetooth plugin name definition in prints instead of plain text. Change-Id: Idafbead6bdc510115ac0f7ebc06cfad79ceeceed Signed-off-by: Jonathan Aillet <jonathan.aillet@iot.bzh>
2018-10-08hal-bt: Enrich 'halmixer' section in plugin initJonathan Aillet2-7/+105
Enrich 'halmixer' section with bluetooth specific 'source' and 'stream' during hal-bt plugin initialization. Some parameters must be passed to plugin using 'params' key in controller json plugin section. This allows to get rid of must of the additional configuration when using bluetooth in a hal. Change-Id: I5820e75307a3394eca80cf783e7bc4c31c2d7659 Signed-off-by: Jonathan Aillet <jonathan.aillet@iot.bzh>
2018-10-08hal-bt: Use plugin name in onload/init printsJonathan Aillet1-5/+5
hal-bt: Use plugin name in onload/initialization prints to help identify startup hal-bt plugin prints. Change-Id: Ie065a127d0321d44e800828aab1994b35aeb5739 Signed-off-by: Jonathan Aillet <jonathan.aillet@iot.bzh>
2018-10-08hal-bt: Check presence of a bluetooth receiverJonathan Aillet2-5/+27
Disable hal-bt plugin if no bluetooth receiver is connected at plugin initialization. To be bale to check if there is no connected bluetooth receiver, use call to 'power' verb of 'Bluetooth-Manager' api. Change-Id: Idd301d2106e8b2e79e25969cc2c1a2a4e4194711 Signed-off-by: Jonathan Aillet <jonathan.aillet@iot.bzh>
2018-10-08hal-bt: Move bluetooth api require into initJonathan Aillet1-27/+15
In hal-bt plugin, move 'Bluetooth-Manager' require into plugin 'initialization' instead of plugin 'onload'. Change-Id: I52dab7631674b4139ad74d0de0825633ea5a5b91 Signed-off-by: Jonathan Aillet <jonathan.aillet@iot.bzh>
2018-10-08Remove unnecessary 'function' string in printsJonathan Aillet1-6/+6
Function's names was printed using '__func__' when calling application framework prints functions. But, as the application framework prints functions already prints them, '__func__' has been removed from print calls to avoid duplicated information. Change-Id: I0dea49a9d84b7ccdbdaecec67ced6c98b5ed26d6 Signed-off-by: Jonathan Aillet <jonathan.aillet@iot.bzh>
2018-10-08Add ctl actions needed by Hal-Bt in plugin initJonathan Aillet1-4/+65
Add controller events/onloads actions needed by Hal-Bt plugin in plugin initialization ('CTLP_INIT'). Therefore, these actions can be reomved from json files. Change-Id: I67391abfc7d3fd0f8b9d4fbd0fe8698497da1393 Signed-off-by: Jonathan Aillet <jonathan.aillet@iot.bzh>
2018-10-08Handle error send by Bluetooth-ManagerJonathan Aillet1-9/+18
Handle error send by 'Bluetooth-Manager' when no bluetooth devices are detected by discorvery. Change-Id: Iadd2ef7dbd5aff59da62e50f99622a9aaf2627dc Signed-off-by: Jonathan Aillet <jonathan.aillet@iot.bzh>
2018-10-08Get bluetooth device interface from path in HalBtJonathan Aillet1-6/+9
In Hal-Bt plugin, get bluetooth device 'hci' interface from 'Path' key send by 'Bluetooth-Manager'. As, the 'Path' key contains the whole path of the device, some string manipulations are necessary ... Change-Id: I320a41fb1589214b0ae6999e1c8b793c7cdd41a7 Signed-off-by: Jonathan Aillet <jonathan.aillet@iot.bzh>
2018-10-08Correct a typo in debug print of Hal-Bt pluginJonathan Aillet1-1/+1
Correct a typo in debug print of Hal-Bt plugin. Change-Id: I2fd2731853f865fcfa09dbe06d6f495ad449ff98 Signed-off-by: Jonathan Aillet <jonathan.aillet@iot.bzh>
2018-10-08Prevent segfault when receiving request in Hal-BtJonathan Aillet1-2/+2
Prevent segfault when receiving 'get_connected_bt_a2dp_devices' and 'get_selected_bt_a2dp_device' requests in Hal-Bt plugin. Change-Id: I1eb5dcab997ae77d8adc3cf28585c2449ec42a2e Signed-off-by: Jonathan Aillet <jonathan.aillet@iot.bzh>
2018-10-08hal-bt-data: ignore devices with no UUIDsThierry Bultel1-4/+10
just ignore devices that do not have any UUIDs Change-Id: Ic3cb25d8f8521e8f6c73afa173745a26e9c873ce Signed-off-by: Thierry Bultel <thierry.bultel@iot.bzh>
2018-10-08Free afb call sync json returned object in Hal-BtJonathan Aillet2-1/+9
Free forgotten application framework call sync json returned object in Hal-Bt plugin. Change-Id: Ic9680fd735154b21839fad93b4d13a7609009866 Signed-off-by: Jonathan Aillet <jonathan.aillet@iot.bzh>
2018-10-08Improve Hal-Bt print messagesJonathan Aillet5-15/+50
Improve Hal-Bt print messages by changing the print level of messages, by adding some messages, and by add information for some existing messages. Also improve response of requests. Change-Id: Icf6dc9f4da1a2ee912dda2850464926c68f2eda6 Signed-off-by: Jonathan Aillet <jonathan.aillet@iot.bzh>
2018-10-08Improve Hal-Bt plugin A2DP bt devices detectionJonathan Aillet1-4/+6
Consider an A2DP bluetooth device as connected only if its seen as 'AVPConnected' by 'Bluetooth-Manager'. Change-Id: I54511a193ebf64e35a7605723440f3a0fae2b2fd Signed-off-by: Jonathan Aillet <jonathan.aillet@iot.bzh>
2018-10-08HalBt plugin keeps list of connected A2DP devicesJonathan Aillet5-66/+67
Hal-Bt plugin only keeps list of connected bluetooth A2DP devices instead of a list of all connected bluetooth devices. Change-Id: I6c06be78a927dcac32ed4683d44431514e7daf06 Signed-off-by: Jonathan Aillet <jonathan.aillet@iot.bzh>
2018-10-08Use correct file to include controllerJonathan Aillet5-5/+5
Use correct file ('ctl-config.h') instead of (''ctl-plugin.h) to include controller. Change-Id: I93a1bcb5dab51211532fc59ffd979ea7acad1530 Signed-off-by: Jonathan Aillet <jonathan.aillet@iot.bzh>
2018-10-08Improve Hal-Bt plugin event catcher behaviourJonathan Aillet1-6/+9
Improve Hal-Bt plugin event catcher behaviour by : - avoiding error generation when bluetooth device is changed. - avoiding calling 'mixer' when the selected device is changed. Change-Id: Ia7402f865551ff9df418269ac6927b66581bae9a Signed-off-by: Jonathan Aillet <jonathan.aillet@iot.bzh>
2018-10-08Prevent Hal-Bt plugin from crashing 4AJonathan Aillet2-5/+19
Prevent Hal-Bt plugin from crashing 4A when 'Bluetooth-Manager' api is not found. Change-Id: Id8ecc3efcc36825abbb4a2bb8cf553327c45d173 Signed-off-by: Jonathan Aillet <jonathan.aillet@iot.bzh>
2018-10-08Correct an error in Hal-Bt when calling 'mixer'Jonathan Aillet1-1/+1
Correct an error in Hal-Bt plugin when calling 'mixer', response was not correctly analyzed. Change-Id: I719076c77501a9c6776559cd8acfcea033a26d1b Signed-off-by: Jonathan Aillet <jonathan.aillet@iot.bzh>
2018-10-08hal-bt! display error messages of sync callsThierry Bultel1-5/+7
Change-Id: I9daa5d665cd727cd26817645e4dd6b987e6f5b05 Signed-off-by: Thierry Bultel <thierry.bultel@iot.bzh>
2018-10-08Implement link with softmixer in hal-bt pluginJonathan Aillet5-18/+168
In hal bluetooth plugin, implement all call to softmixer used to enable/disable bluetooth stream and to set bt streamed device. Change-Id: I16f6fbf6a02f34490876d390883bdd040661647e Signed-off-by: Jonathan Aillet <jonathan.aillet@iot.bzh>
2018-10-08Get hal data in hal-bt pluginJonathan Aillet3-0/+17
Get hal data in hal-bt plugin. It will be used, for example, to get softmixer call information. Change-Id: I3cb2fd8d2f3f656fb4a796e13c1f62e751675861 Signed-off-by: Jonathan Aillet <jonathan.aillet@iot.bzh>
2018-10-08Test afb require result at hal-bt plugin loadJonathan Aillet1-1/+4
Test afb require on 'Bluetooth-Manager' result at hal-bt plugin load before keep going with plugin hal-bt load actions. Change-Id: I19983d12ad6634acafc6cc32d96dbae554c70245 Signed-off-by: Jonathan Aillet <jonathan.aillet@iot.bzh>
2018-10-08Add handling of hci and profile in hal-bt pluginJonathan Aillet3-11/+50
Add handling of bluetoothg hci and bluetooth profile when keep bluetooth connected devices up to date. Change-Id: I49b3e67136168bcae711eb8f7ffb2e1ccdbad3ae Signed-off-by: Jonathan Aillet <jonathan.aillet@iot.bzh>
2018-10-08Fix little mistakes/typo in hal bluetooth pluginJonathan Aillet2-14/+12
Correct typo. Remove an unnecessary message print. Update returned error code. Change-Id: If52965b8c7158dfd17bbba411d6dc2c4aafe970a Signed-off-by: Jonathan Aillet <jonathan.aillet@iot.bzh>
2018-10-08Add bluetooth hal pluginJonathan Aillet8-24/+763
Add first version of a hal plugin that will handle hal that wants bluetooth as an audio device. Change-Id: I4f5628ef9688c417b1b443fc3c4948cb23c17214 Signed-off-by: Jonathan Aillet <jonathan.aillet@iot.bzh>
2018-10-08Add compilation configurationJonathan Aillet3-0/+93
Add compilation configuration for 4a-hal-gezneric project. Change-Id: If5bc696cbf3170923ea67cef301c71720a70fe70 Signed-off-by: Jonathan Aillet <jonathan.aillet@iot.bzh>