pub struct BleSystem {
pub runner: Runner<'static, BleController, DefaultPacketPool>,
pub peripheral: Peripheral<'static, BleController, DefaultPacketPool>,
pub server: BleServer<'static>,
}Expand description
Regroupe les trois composants nécessaires au fonctionnement de la pile BLE : le runner de la pile hôte, le rôle périphérique et le serveur GATT applicatif.
Ces trois éléments sont volontairement scindés (plutôt que gardés dans
une seule struct opaque) car trouble-host attend qu’ils soient
utilisés indépendamment : le runner est piloté en tâche de fond
(run_ble_runner), tandis que peripheral sert à publier des
annonces BLE et server à répondre aux lectures/écritures GATT.
Fields§
§runner: Runner<'static, BleController, DefaultPacketPool>Boucle d’évènements de la pile hôte BLE ; doit tourner en continu.
peripheral: Peripheral<'static, BleController, DefaultPacketPool>Rôle périphérique : publicité BLE et acceptation de connexions.
server: BleServer<'static>Serveur GATT applicatif (voir BleServer).
#[gatt_server] génère un type portant un paramètre de durée de vie
(BleServer<'values>), hérité de la chaîne de caractères passée à
PeripheralConfig::name. Comme on lui passe toujours un &'static str (le nom de l’appareil est un littéral), cette durée de vie vaut
systématiquement 'static ici.
Implementations§
Source§impl BleSystem
impl BleSystem
Sourcepub fn init(bt_peripheral: BT<'static>) -> Self
pub fn init(bt_peripheral: BT<'static>) -> Self
Initialise le contrôleur BLE matériel, la pile hôte trouble-host
et le serveur GATT, et retourne les trois composants prêts à
l’emploi dans un BleSystem.
§Mémoire statique
trouble-host exige que ses ressources internes (HostResources)
ainsi que la Stack elle-même vivent aussi longtemps que le
runner/peripheral retournés (borne 'static). Comme ce ne sont
pas des variables globales au sens Rust, elles sont promues en
'static via StaticCell, le motif standard dans l’écosystème
Embassy pour ce cas de figure.
§Panics
Cette fonction panique si :
- l’initialisation du
BleConnectoréchoue (matériel radio indisponible ou mal configuré), - la création du serveur GATT échoue (par exemple si le nom du périphérique dépasse la longueur maximale autorisée par le GAP, 22 octets).
Ces deux échecs sont considérés comme irrécupérables à ce stade de
l’initialisation et ne peuvent pas être corrigés à l’exécution ;
c’est pourquoi ils sont remontés par panic! plutôt que par un
Result. Si tu préfères une gestion d’erreur récupérable, remplace
les .expect(...) par une propagation via Result.