Le projet P7 est constitué d'utilitaires de communication destinés à être utilisés avec des calculatrices CASIO fx (Graph). Ces utilitaires permettent d'interagir avec les systèmes de fichiers présents sur la calculatrice (envoi et réception de fichiers, inventaire des fichiers présents sur la calculatrice, copie, suppression, ...), d'afficher l'écran en temps réel, et de sauvegarder/remplacer les composants du système présents sur la machine.
Ce projet représente également, en compagnie d'autres, une libération du domaine : en effet, jusqu'ici, les logiciels produits par CASIO pour interagir avec ses calculatrices ne sont que pour Microsoft Windows. Le projet P7 n'est pas le premier projet dans le domaine, mais il est le premier à être aussi complet et sous licence libre (LGPL3).
Le projet est composé d'une bibliothèque, avec une interface aisée et une autre plus avancée, la libp7 (actuellement en version 3.0), ainsi que d'un set d'utilitaires en ligne de commande, les
p7utils (actuellement en version 3.0). Il n'y a actuellement pas de logiciel avec une interface graphique.
Le dépôt Debian hébergeant les paquets a eu quelques soucis récemment, et un autre sera mis en place dans un moment (probablement en avril 2017, vu le temps que j'ai). En attendant, vous pouvez construire vous-mêmes les paquets et les installer en utilisant les commandes suivantes :
sudo apt install devscripts debhelper libusb-1.0-0-dev libsdl1.2-dev asciidoc
cd /tmp && git clone https://github.com/cakeisalie5/p7-packaging
cd p7-packaging
make -C libp7 && sudo make -C libp7 install
make -C p7utils && sudo make -C p7utils install
Désolé pour la gêne occasionée !
Breizh_craft s'est chargé de mettre la lib et les utilitaires sur l'AUR, disponibles via la commande yaourt
(non installée de base sur Arch). Pour installer les deux utilitaires, vous pouvez simplement faire :
yaourt -S p7 p7screen
S'il n'y a aucun paquet cité ici pour votre distributions et que vous en avez fait un, contactez-moi, j'y ajouterai une mention ici !
Avant de construire, vous devez installer ces logiciels (pré-requis) :
Name | Version |
---|---|
make | >= 4.0 |
curl | n'importe |
gcc | >= 4.9 |
binutils | n'importe |
asciidoc | n'importe |
gzip | >= 1.6 |
libusb | >= 1.0 |
libsdl | == 1.2.15 |
pkg-config | >= 0.27 |
Pour télécharger, construire et installer la lib :
cd /tmp
curl -o libp7-3.0.tar.gz https://p7.planet-casio.com/pub/libp7-3.0.tar.gz
tar xzf libp7-3.0.tar.gz && cd libp7-3.0
./configure --udev && make && sudo make install
Pour télécharger, construire et installer les utilitaires :
cd /tmp
curl -o p7utils-3.0.tar.gz https://p7.planet-casio.com/pub/p7utils-3.0.tar.gz
tar xzf p7utils-3.0.tar.gz && cd p7utils-3.0
./configure && make && sudo make install
À noter qu'afin de ne pas devoir lancer les utilitaires en root, il est conseillé d'ajouter votre compte utilisateur au groupe uucp
:
sudo usermod -a -G uucp <votre nom d'utilisateur>
Pour le moment, avec p7
, on peut :
Pour envoyer un fichier :
# Envoi d'un addin, confirmation interactive en cas d'overwrite
p7 send addin.g1a
# La même, avec une jolie barre de chargement
p7 send -# addin.g1a
# Envoi d'un addin sous un autre nom et dans un dossier
# - confirmation interactive en cas d'overwrite
p7 send -o autrenom.g1a -d dossier addin.g1a
# Envoi d'un addin, forcer l'overwrite
p7 send -f addin.g1a
Pour demander un fichier :
# Réception simple
p7 get addin.g1a
# Réception d'un addin d'un dossier distant
p7 get -d dossier addin.g1a
# Réception d'un fichier et affichage de celui-ci dans la sortie standard
p7 get -o - doc.txt
Pour copier un fichier distant dans un autre fichier distant :
# Copie d'un fichier texte d'un dossier à la racine
p7 copy -d hidden file.txt VISIBLE.txt
# Copie d'un addin dans un dossier
p7 copy addin.g1a -t disabled addin.g1a
Pour supprimer un fichier distant :
# Suppression d'un fichier distant la racine
p7 del addin.g1a
# La même, mais dans un dossier
p7 del -d dossier info.txt
Pour lister les fichiers distants :
p7 ls
Pour optimiser la mémoire :
p7 optimize
Pour dumper des informations concernant la calculatrice :
p7 info
A noter qu'il est possible d'utiliser un autre filesystem que celui par défaut (fls0
). Par exemple, pour les calculatrices dotées d'un lecteur de carte SD, il est possible d'y accéder via le système de fichiers crd0
avec l'option --device crd0
.
Pour afficher l'écran distant avec p7screen
, il faut :
p7screen
dans votre terminalEt voilà, normalement, une fenêtre s'est créée avec l'écran de votre calculatrice ! À noter que si vous allez dans "CAPT" et que vous sélectionnez Projector, cela ne marchera pas, il faut vraiment sélectionner Projector au moment de brancher votre calculatrice.
Le projet P7, ainsi que les projets l'ayant précédé, ont demandé beaucoup de rétro-ingénierie, de formalisation et de tests avant d'en arriver à ce stade. Merci à :
Clin d'oeil aux projets ayant précédé le projet P7 :
J'ai écrit quelques notes en plus, si ça peut aider les éventuelles personnes qui souhaitent comprendre le protocole et son implémentation plus en profondeur.