WebP7, pour une énième solution de transfert à cheval entre les platformes
Posté le 06/08/2021 16:23
C'est plus ou moins une bibliothèque JS servant à effectuer des transferts (ou autre commandes disponibles à travers le protocole p7) vers la calculatrice, utilisant l'API webUSB.
Les sources (sur la forge)
Choses à noter:
![](https://www.planet-casio.com/images/smileys/pointer.gif)
Je suis conscient que ça ne va probablement pas servir à grand chose puisque les nouvelles calculatrices utilisent des protocoles standards et que je crois avoir lu quelque part que maintenant que le module USB avait été rétro-ingénié (?), l'abstraction de BFile était la seule limite à la création d'une application de transfert utilisant ces fameux protocoles standards sur les calculatrices ne les utilisant pas ; sans oublier le fait que l'outil en ligne de commande est plus complet (pour l'instant), plus simple d'utilisation (probablement pour toujours au vu de mes aptitudes en CSS pour faire des interfaces sympas ⇒ raison pour laquelle j'oriente le projet vers une bibliothèque plutôt que vers un site ou une page WEB en tant que tel), et surtout plus rapide (en oubliant le fait que je n'ai pas implanté cette histoire d'envoi de paquets deux à deux dont je n'ai clairement pas saisi toutes les subtilités).
![](https://www.planet-casio.com/images/smileys/pointer.gif)
La totalité des commandes (dans le mode "classique", c'est à dire hors OS Update) n'a pas été implémentée et les mécanismes internes méritent quelques améliorations.
![](https://www.planet-casio.com/images/smileys/pointer.gif)
Même si j'ai dit que c'était à cheval entre les plateformes (notez ce magnifique jeu de mots digne des plus grands
![](https://www.planet-casio.com/images/smileys/wink.gif)
), c'est faux, laissez moi vous expliquer :
L'idée de base était de faire un portage de P7 pour Android, qui viendra peut-être un jour, vu la simplicité de la chose (ce qui me fait d'ailleurs penser @
Lephenixnoir que je n'oublie pas cette idée de portage de la suite sh-elf* pour Android, un jour ou l'autre, ça viendra...).
Mais je me suis souvenu que Numworks utilisait pour les mises à jours des calculatrices clients des pages WEBs, que j'avais déjà testé sur mon téléphone et qui fonctionnait. De là me vint l'idée de reproduire la même chose sur calculatrice (le projet devait même permettre la mise à jour du système d'exploitation, chose qui est dorénavant au point mort, après avoir lu l'avis de @
Cakeisalie5 sur le sujet), et c'est ainsi que je me suis embarqué la-dedans, en ce *magnifique* mois de Juillet.
- Au dernières nouvelles, le projet fonctionne parfaitement sur Linux, voire normalement n'importe quel OS Unix (donc Android inclus, et comme j'aime bien le dire : ça, c'est carré dans l'axe), à voir MacOS (9 chances sur 10 que ça ne marche pas, quel plaisir ces problèmes de compatibilité mdr), du moment que le navigateur supporte webUSB (navigateur basé sur Chromium, Opéra (?), ou la nouvelle version de Edge (qui du coup est basé sur Chromium ?), mais pas Firefox
![](https://www.planet-casio.com/images/smileys/sad.gif)
).
- Côté Windows... marche pas
![](https://www.planet-casio.com/images/smileys/cry.gif)
: théoriquement ça peut fonctionner, je me suis pas trop renseigné mais si j'ai bien compris, l'énumération des appareils pose problème, et ça à priori, sans installer de pilote(s) (genre Zadig qui permet de lister les appareils, mais ne fonctionne pas au moment de l'envoi des données, à creuser...), ça ne se corrige pas, ce qui est contraire à la volonté de base qui était de faire une interface simple, pour des gens simples, qui fonctionne directement ('Out-of-the-box', n'est-ce pas ?). En même temps chez Numworks ça fonctionne, mais je crois que c'est au moment de l'envoi des descripteurs que la calculatrice ajoute un champ avec les détails du pilote, hors on ne peut pas le contrôler (?).
Bien évidemment je voudrais remercier Simon Lothar et Andreas Bertheussen pour leur documentation, ainsi que @
Cakeisalie5 pour son utilitaire sur lequel je me suis parfois basé (plus précisément j'ai récupéré un ou deux commentaires que je trouvais biens, si ça pose problème je les retirerai, ainsi que la structure des fonctions internes, même si ce n'était pas parti pour au début).
À part ça je me suis dit que je devrais faire comme tout le monde, c'est-à-dire ajouter une licence, mais je ne sais pas comment ça fonctionne juridiquement donc je suis moyennement chaud, de toute façon je ne vois pas qui irait voler un code pareil, et même si je mettais une licence, dans les grandes lignes elle ressemblerait à ça :
Ma licence imaginaire dans les grandes lignes a écrit :
C'est moi l'auteur,
vous pouvez faire ce que vous voulez avec le code.
Ce qui m'amène au dernier point de l'article : Désolé pour la qualité du code, je suis pas un monstre du JS et du haut-niveau en général (en fait je n'ai jamais fait de haut-niveau, excepté bien sûr du Python lors de ces excellents cours de SNT imposés en seconde et du Bash, mais bon le Bash...), quoique si on considère que le C est haut-niveau, je n'ai pas d'excuses, à part que mon niveau en tant que développeur C casse pas des briques (casse pas trois pattes à un canard si vous préférez). Bref...
Voilà, voilà... Comme d'habitude toute remarque est bonne à prendre
![](https://www.planet-casio.com/images/smileys/smile.gif)
.
Citer : Posté le 06/08/2021 16:35 | #
Il est où le code surtout
Ecrivez vos programmes basic sur PC avec BIDE
Citer : Posté le 06/08/2021 16:51 | #
Ah oui mdr sur la forge.
D'ailleurs je viens de voir que j'ai mis que les boutons étaient déconnectés, mais en fait c'est juste que tout les résultats sont dans la console, encore une chose à corriger.
En gros pour envoyer un fichier faut d'abord connecter la calculatrice, attendre qu'il y ait marqué "Done." et ensuite sélectionner le fichier que l'on veut envoyer, qui sera envoyé dans la mémoire flash (fls0), à la racine.
Citer : Posté le 06/08/2021 17:05 | #
L'idée est intéressante, mais webUSB a l'air d'avoir des soucis :
- Considéré comme un risque de sécurité par un nombre conséquent de développeurs (sources)
- Encore en brouillon (source).
- Disponible dans Chrome uniquement (pour les raisons ci-dessus), pour une durée indéterminée (l'API a déjà été retirée et réimplémentée une fois).
Mais c'est de ce que j'en trouve.
Mon blog ⋅ Mes autres projets
Citer : Posté le 06/08/2021 17:28 | #
Je réfléchis vraiment pas assez quand je me lance dans des trucs
Après je te fais confiance sur les infos, j'avais aussi vu la partie risque de sécurité, mais bon...
Pour le côté un peu velléitaire de la technologie c'est sûr que ça ne met pas en confiance. Par contre la limitation à Chrome vu que ça s'applique aussi à ces dérivés (après vérification ça comprend bel et bien Opéra et Edge, ainsi que Chromium et les basés-sur-chromium (Brave, Vivaldi...) c'est moins problématique
De même je n'ai aucune connaissance technique sur le sujet donc c'est à prendre avec des pincettes.