Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
wrapper-ble-esp32c3mini
À adapter : les badges
crates.io/docs.rs/Downloadspointent vers le nom de cratewrapper-ble-esp32c3mini— ils n'afficheront des données réelles qu'une fois le crate publié sur crates.io. Le badgeCIsuppose un workflow GitHub Actions à.github/workflows/ci.ymlet l'URLtonpseudo/wrapper-ble-esp32c3mini(à remplacer par ton vrai dépôt, comme pourrepositorydansCargo.toml). Supprime les badges qui ne s'appliquent pas encore à ton projet.
Bibliothèque no_std qui encapsule l'initialisation d'un périphérique BLE
(GATT peripheral) sur ESP32-C3, au-dessus de esp-radio, bt-hci et
trouble-host.
Elle expose :
BleController: alias vers le contrôleur HCI externe branché sur leBleConnectordeesp-radio;BleServer/DisplayService: un serveur GATT minimal avec deux caractéristiques (commanden écriture,statusen lecture/notification) ;BleSystem::init(...): construit le contrôleur, la pile hôtetrouble-hostet le serveur GATT, et te rendrunner,peripheraletserverprêts à l'emploi ;run_ble_runner(...): tâche à spawner qui fait tourner la boucle d'évènements de la pile hôte en continu.
Pourquoi ces versions précises de dépendances ?
Le Cargo.toml fige volontairement certaines versions plutôt que de
prendre les toutes dernières de chaque crate, parce qu'elles ne sont pas
toutes inter-compatibles au moment de la rédaction :
| Crate | Version retenue | Raison |
|---|---|---|
esp-radio |
0.18.0 |
dernière stable |
esp-hal |
1.1.2 |
esp-radio 0.18.0 exige esp-hal ~1.1.0-rc.0 → branche 1.1.x uniquement, pas 1.2.x |
bt-hci |
0.8.1 |
esp-radio 0.18.0 exige bt-hci ^0.8.0 |
trouble-host |
0.6.0 |
seule branche de trouble-host qui dépend elle-même de bt-hci ^0.8 (les versions 0.7/0.8 sont passées à bt-hci ^0.9/^0.10) |
heapless |
0.9 |
exigé par trouble-host 0.6.0 |
embassy-sync |
0.7.2 |
dépendance directe requise : l'expansion de #[gatt_server]/#[gatt_service] par trouble-host-macros 0.4.0 (la version réellement résolue par trouble-host 0.6.0, qui demande ^0.4.0) référence embassy_sync::... sans passer par un ré-export de trouble_host |
Si tu mets à jour une de ces dépendances, vérifie que les trois autres suivent : c'est le point qui casse le plus souvent une compilation dans cet écosystème.
Mémoire statique
trouble-host attend que ses ressources internes (HostResources) et la
Stack elle-même vivent en 'static. BleSystem::init utilise donc
static_cell::StaticCell pour les promouvoir, plutôt que de les garder en
variables locales (qui ne compileraient pas avec les bornes de durée de vie
attendues par Runner<'static, ...> / Peripheral<'static, ...>).
Durées de vie ('static)
Deux autres points de la signature sont volontairement fixés à 'static :
BleServer<'static>—#[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'staticici.bt_peripheral: esp_hal::peripherals::BT<'static>—esp_hal::peripherals::BTporte lui aussi un paramètre de durée de vie. Sans l'annoter explicitement dans la signature deBleSystem::init, le compilateur lui assigne une durée de vie anonyme propre à l'appel, incompatible avecBleController = ExternalController<BleConnector<'static>, 20>. UnPeripheralsobtenu normalement viaesp_hal::init(...)a des champs'staticpar défaut, doncperipherals.BTs'y prête directement.
Exemple minimal
use ;
async
async
La configuration de l'exécuteur Embassy (via esp-hal-embassy) reste à la
charge du binaire final ; cette bibliothèque ne fait que fournir les
futures et la structure GATT.
Licence
GPL-2.0-or-later — voir LICENSE.