Skip to content

PadLab 0.6.0 — la batterie, vraiment

Choose a tag to compare

@NiceMank NiceMank released this 21 Oct 14:41
· 1 commit to main since this release

0.6.0 — la batterie, vraiment

Cette version corrige trois choses qui n'auraient pas dû sortir en 0.5.0.

Pourquoi la batterie ne s'affichait pas

Deux défauts se cumulaient dans le module Android :

  1. La lecture était faite sur le thread principal. InputDevice.getBatteryState()
    est un appel Binder synchrone ; sur une manette Bluetooth le noyau peut mettre
    plus de dix secondes à répondre. Résultat : interface figée, ou valeur
    abandonnée en route. La lecture se fait maintenant sur un fil dédié, avec un
    cache de 20 secondes.
  2. Aucun repli quand Android 12+ ne renseigne rien. Or le niveau est souvent
    publié par le noyau (/sys/class/power_supply/*-battery/capacity) même quand
    l'API officielle répond « inconnu ». Deux sources sont désormais essayées,
    dans cet ordre, et la source utilisée est annoncée.

Et quand aucune des deux ne répond, l'écran affiche la raison exacte et un bouton
Réessayer — plus jamais un tiret muet. Une lecture ratée ne fait pas non plus
disparaître un pourcentage déjà connu.

La manette 3D ne bouge plus toute seule

Elle est immobile au repos. Deux boutons, en haut à droite du cadre :
Tourner / Stop et Recentrer. L'indication « Glissez pour tourner »
s'efface dès que vous touchez le modèle.

Qualité d'exécution

  • Réglages entièrement réécrits : plus de titre affiché deux fois, une seule
    grammaire de cartes, les informations techniques montrées seulement quand
    elles existent.
  • « TEMPS DE CHARGE » n'apparaît plus hors charge.
  • Écran de test : modèle plus grand, compteur « Touches vues n/12 ».
  • Glyphes qui s'affichaient en carrés vides remplacés par des libellés lisibles.

Sous le capot

  • describe() ne lit plus la batterie : chaque scan bloquait le thread principal.
  • 39 tests dans l'application (+3 sur la batterie, +4 sur la scène immobile),
    24 dans pad_core, 4 dans pad_ui, 4 dans pad_bridge, 13 dans pclink.
  • Analyse statique : zéro avertissement sur les cinq paquets.

Limites assumées

  • Android 12+ expose getBatteryState(). En dessous, seul le noyau peut répondre,
    et tout le monde n'a pas ces nœuds : dans ce cas, l'application le dit.
  • Le niveau système Android est celui que la manette veut bien publier : beaucoup
    de manettes bon marché ne le font pas du tout.