Skip to content

feat(app) : WP-D.3 sous Android, BLE entre deux téléphones, essayé sur le Galaxy A57 et le TECNO BF6 - #257

Merged
Medboy224 merged 4 commits into
mainfrom
feat/ble-android
Nov 3, 2026
Merged

Medboy224 merged 4 commits into
mainfrom
feat/ble-android

Conversation

@Medboy224

Copy link
Copy Markdown
Owner

Lot WP-D.3 du plan J6d, pour Android : le chemin par BLE marche entre deux téléphones, essayé sur le Galaxy A57 et le TECNO BF6. Windows suit dans sa propre PR.

Ce qu'il y a

  • Ble.kt (API du système, D5) :
    • une annonce avec l'UUID seul (BLE-02) ;
    • un serveur GATT qui garde chaque réponse jusqu'à ce que l'autre la lise : une lecture qui arrive avant la réponse du cœur attend 25 s au plus ;
    • une recherche filtrée sur le service, qui tourne aussi écran éteint (WP-D.0) ;
    • un client qui écrit puis lit, sans demander de MTU (3,3 s perdues vers Windows à la sonde) : les messages longs passent en écritures et lectures longues ;
    • les permissions de BLE-12, et la demande du système pour allumer le Bluetooth.
  • platform/ble.dart : l'interface Ble, l'adaptateur Android, et un adaptateur vide ailleurs (Zorin, D4).
  • BleLink, entre la radio et le cœur :
    • touché, l'appareil répond seul ; il crée le réseau quand c'est à lui, à la bande convenue, ou rejoint celui de l'autre ;
    • son utilisateur touchant un appareil, il mène l'échange (confiance mutuelle, ou PIN), puis la session : pair_ble, ou P3 entre appareils de confiance mutuelle ;
    • BLE est en pause pendant une session (D3).
  • Une section BLE du panneau développeur, pour l'essayer sur les appareils en attendant les écrans (WP-D.5).
  • Cœur :
    • la réponse « à toi de créer le réseau » porte la bande convenue : seul le répondant connaît les bandes des deux côtés (bible §6.6 mise à jour) ;
    • le cœur met son propre port dans le réseau que la plateforme lui donne.

Essai réel du 2 novembre (Galaxy A57, TECNO BF6)

Par le chemin de confiance : les deux appareils se faisaient déjà confiance.

Mesure Résultat
Se trouver par BLE sans Wi-Fi commun, se reconnaître ✅ noms affichés, sans PIN
Réseau créé par l'un, rejoint par l'autre, session ouverte ✅ 7 à 10 s du réseau créé à la session
Session perdue : elle revient seule ✅ en 25 à 35 s, après correction
Tenue écran éteint ❌ #256 : quand l'A57 cherche des réseaux, son point d'accès lâche le TECNO (4 fois sur 4) ; écran allumé, aucune coupure

Trouvé et corrigé pendant l'essai :

  • Le réseau du créateur était arrêté 15 s après une session perdue, alors que l'autre le rejoignait 8 s plus tard. Il est maintenant gardé 10 minutes, comme du côté qui le rejoint. Cela vaut aussi pour le QR.
  • Le TECNO fait tourner son point d'accès local sur wlan0, que la recherche de son adresse manquait : il n'avait pas d'adresse, d'où « pas de réseau ». Cela valait aussi pour le QR.
  • Wi-Fi éteint, un téléphone disait pouvoir rejoindre un réseau. Il ne le dit plus : il crée alors le sien, et l'autre le rejoint.
  • BLE est en pause pendant une session : il partageait la radio à 2,4 GHz avec le réseau.

Essayé sans effet, puis retiré : un verrou Wi-Fi « haute performance ». C'est le point d'accès de l'A57 qui lâche le TECNO (#256).

Pas encore

Vérifications

  • go test ./... passe.
  • flutter analyze : aucun problème ; flutter test : 174 tests passent, dont 8 nouveaux pour BleLink et 1 pour le réseau gardé après une session perdue.
  • APK de débogage construit et essayé sur les deux téléphones.

🤖 Generated with Claude Code

Medboy224 and others added 4 commits November 2, 2026 20:56
…cœur

Android (Ble.kt) : annonce avec l'UUID seul, serveur GATT qui garde la
réponse jusqu'à ce que l'autre la lise, recherche filtrée sur le service
(elle tourne écran éteint), client qui écrit puis lit, sans demander de
MTU : les messages longs passent en écriture et lecture longues.
Permissions de BLE-12, demande d'allumer le Bluetooth.

Dart : l'interface Ble (un adaptateur Android, aucun ailleurs pour
l'instant) et BleLink, entre la radio et le cœur. Touché, l'appareil
répond seul, crée le réseau à la bande convenue quand c'est à lui, et
rejoint celui de l'autre sinon ; son utilisateur touchant un appareil,
BleLink mène l'échange (confiance mutuelle, ou PIN), puis la session
(pair_ble, ou P3). Une section du panneau développeur pour l'essayer sur
les appareils, en attendant les écrans (WP-D.5).

Cœur : la réponse « à toi de créer le réseau » porte la bande convenue
(seul le répondant connaît les bandes des deux côtés) ; le cœur met son
propre port dans le réseau que la plateforme lui donne.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…nt la session

Essai réel du 2 novembre entre le Galaxy A57 et le TECNO BF6, par le
chemin de confiance : la session s'ouvre, puis le TECNO perd le lien Wi-Fi
au bout de 70 s. Il rejoint le réseau 8 s plus tard, mais l'A57 l'avait
déjà arrêté.

- Une session perdue (« connection timed out ») garde le réseau que cet
  appareil a créé pendant rejoinFor, comme le côté qui l'a rejoint ; une
  déconnexion voulue l'arrête toujours aussitôt. Vaut aussi pour le QR.
- BLE se met en pause pendant une session et reprend après (décision D3) :
  sa recherche et son annonce à plein régime partageaient la radio à
  2,4 GHz avec le réseau rejoint.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…int, rien à rejoindre

Essai réel du 2 novembre entre le Galaxy A57 et le TECNO BF6 :
- le TECNO fait tourner son point d'accès local sur wlan0, sa seule
  interface Wi-Fi, que la recherche par noms (swlan0, ap0…) manquait :
  pas d'adresse, donc « pas de réseau ». L'adresse est maintenant celle qui
  apparaît au démarrage, sur toute interface sauf les données mobiles et
  l'USB, avec quelques nouveaux essais si elle tarde ;
- son Wi-Fi éteint (son propre point d'accès arrêté), le TECNO annonçait
  par BLE pouvoir rejoindre un réseau, et ne le pouvait pas. Wi-Fi éteint,
  il ne dit plus rien rejoindre : l'autre rejoint alors le sien.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… le TECNO BF6

Plan J6d : ce qui est fait, l'essai du 2 novembre (se trouver par BLE,
réseau, session, retour seul après une coupure), les corrections, le verrou
Wi-Fi essayé sans effet, et ce qui reste ouvert : la coupure écran éteint
quand le créateur cherche des réseaux, l'arrêt d'un réseau non rejoint en
2 minutes, l'adaptateur Windows.

Bible : BLE-02, BLE-09, BLE-11, BLE-12 ; DISC-12, le réseau gardé après une
session perdue.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@Medboy224
Medboy224 merged commit 1430160 into main Nov 3, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant