Open carlescufi opened 5 months ago
One thing not discussed here is that the ATT implementation has a synchronous callback structure, meaning that any request will send a response before handling the next request.
One of the purposes of EATT was to support multiple requests simultaneously, which we won't be able to do with the current callback-based implementation. To properly support EATT we need multiple threads (one for each bearer) or a asynchronous approach to sending responses.
I would obviously vote for an async approach, with the application allocating the working memory, and any other resources for the req/rsp.
I would obviously vote for an async approach, with the application allocating the working memory, and any other resources for the req/rsp.
Yes please :)
The goal of this proposal is to give the application full control over traffic and operations on multiple dynamic L2CAP channels that are acting as ATT bearers (i.e. connecting to the
0x0027
SPSM). This requires the use ofstruct bt_l2cap_chan
as an identifier on all of these operations and callbacks/app notifications (i.e. both ways).bt_l2cap_ecred_*
existing APIs for all EATT-related channel operations (creation, reconfiguration and destruction).struct bt_l2cap_chan
is a parameter or part of the callback.bt_eatt_*
APIs.Additionally, consider restructuring the different L2CAP channel structure so that it reflects the spec and the nature of L2CAP, and not necessarily BR/EDR and LE. For example, consider having an
struct l2cap_fixed_chan
andstruct l2cap_dyn_chan
.