- examples/05_ble_adv: Manually shove bytes through the HCI.
- examples/12_blufi: Apart from the parts that are handled by the "blufi"-profile, this example directly works with the BTA API.
- examples/14_gatt_server and examples/15_gatt_client: Work with the ESP provided APIs
Well... of course I would like to avoid having to manually write bytes to the VHCI, as it is rather low level, tedious and error prone to implement a completely functional Bluetooth peripheral with multiple services, etc. (at least if it's me doing this... )
BTA API (bt/bluedroid/bta/include)
Bluedroid application layer. This seems like a fairly consistent API and looks understandable to me.
ESP API (bt/bluedroid/api/include)
My understanding is that the ESP API provides an interface that would be a bit more consistent with the rest of the system, but is essentially just placed on top of the BTA API, decoupling direct calls to the BTA API from the user application by implementing the intermediate BTC task.
Is this assessment correct?
Now, I understand that the ESP BLE stack is still under development, so it is obvious that it looks like the ESP API is not yet completed. There are a few things missing, e.g. advertising more than one UUID128 is not yet workable, there is still lots of error checking missing, the documentation is rather minimalistic etc.
So, my questions are:
- Does anything speak against using the BTA API directly? It seems to be documented rather thoroughly and seems to be well usable.
- Are there any large updates planned for the BLE API in the near future? Is there some sort of roadmap or some more info about where Espressif are headed with it?