-
Notifications
You must be signed in to change notification settings - Fork 484
Description
I'm looking at implementing this with an ESP32 and trouble.
From reading various RFCs it seems to be a somewhat straightforward affair.
One just needs a L2CAP channel and a minimal GATT service for advertising, which trouble supports.
The network forms a star topology where the "Central" is the router and the "Peripheral"s are nodes in the network.
All communications between nodes/peripherals happen via the router/central.
Central is responsible for connecting to nodes advertising themselves as nodes.
Each node (including the router) has a link-local IPv6 address derived from the BLE mac address, but can still register additional non-link-local addresses using standard IPv6 protocols like Neighbour Solicitation (NS).
The L2CAP channel takes care throttling (with the credits system) and disassembly/re-assembly.
The IPv6 headers sent over BLE are compressed in the same format used for IEEE 802.15.4, but the conditions for when to compress are different.
Multicast is an O(n) operation (where n is the number of nodes) rather than a O(1) operation, due to the star topology.
I've mostly gotten the mac logic down, I just need a networking stack to handle the networking.
I looked into implementing the Device trait and I'm trying to figure out which medium to use. Do I need to PR a BLE medium or can I just use the Ip medium.
I'm still trying to figure out if I need to modify smoltcp to work with BLE or if I can do it all behind the Device
trait.