Drop the EmbassyUart flush-per-write workaround once embassy-stm32 ships the BufferedUart TX fix

Ouverte
#385 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

Personne n'a encore pris cette issue.

Évaluation

Difficulté
2/5
Temps estimé
1-3 heures
Accessibilité débutants
20/100
Type d'issue
Refactorisation
Clarté
Plutôt claire
Activité
Active
Stack technique
embedded-iot, rust
Domaine
embedded-iot

Piste de recherche

The workaround lives in aimdb-embassy-adapter/src/io.rs, where EmbassyUart and EmbassyUartWriter route write_all through write_all_flushed; the flush-count assertions are in that file's tests. Bump embassy-stm32 in the workspace Cargo.toml only once a release containing upstream commit 560ad7e91 exists, then switch to plain write_all and update CHANGELOG.md. Done means the NUCLEO-H563ZI full record.list reply arrives on fresh boot with no RX traffic, which needs hardware and is not a newcomer task yet.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

dependencies

Tracking issue for option 1 of #382.

Background

embassy-stm32 0.6.0's BufferedUart::write returns Poll::Pending without registering a TX waker when the ring has less free space than the chunk, so the first large reply after boot stalls after 256 B (see #382). #384 works around it in aimdb-embassy-adapter/src/io.rs: EmbassyUart's write_all (and the split writer's) goes through write_all_flushed, which flushes after every chunk. That costs a short gap on the line every 64 B.

Upstream fixed it on embassy main in 560ad7e91 ("stm32: fix embedded_io::Write impl for BufferedUartTx", 2026-07-17). It is not in a crates.io release yet; 0.6.0 is still the latest. Pinning embassy-stm32 to a git rev alone does not resolve (embassy-time-driver conflict), so it would mean moving the whole embassy-* family to git.

To do once a release with 560ad7e91 is out

  • Bump embassy-stm32 in the workspace Cargo.toml (and any embassy-* crates it pulls along).
  • Replace write_all_flushed with plain write_all in EmbassyUart and EmbassyUartWriter; revert the flush-count assertions in the io.rs tests.
  • Drop the workaround's Fixed note from aimdb-embassy-adapter/CHANGELOG.md, or record the removal.
  • Re-verify on the NUCLEO-H563ZI: fresh boot → serial_demo client (or serial_demo raw … record.list) straight away, on the serial, MQTT and KNX demos. The full record.list reply must arrive without any RX traffic to kick it. The aimdb CLI is not a valid check: its small hello reply arms the waker first, so it passes even on unfixed firmware.
Langage dominant
Rust
Étoiles
101
Forks
20
Merge moyen
2 h 33 min
PR mergées (30 j)
90

Préparer son environnement

Ouvrir dans Codespaces

Lance le conteneur de développement du projet dans votre navigateur, avec votre propre compte GitHub.

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de aimdb-dev/aimdb

Toutes les issues de aimdb-dev/aimdb

Issues similaires

Plus d'issues Rust

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.