Skip to main content

BleSystem

Struct BleSystem 

Source
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

Source

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.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.