Application Mac OS X : Gestion du ‘Mir:ror’ de Violet, le lecteur RFID associé au Nabaztags.

Création d’un package pour le déploiement de l’application de gestion du périphérique ‘Mir:ror’ de la société Violet.
Le tout est disponible dans une belle image disque… à télécharger depuis mon site Web.

A. Le principe de l’application…

Le ‘Mir:ror’ est un périphérique HID (Human Interface Device) qui ne demande pas de pilote. L’interface s’utilise en envoyant ou récupérant des chaines en Héxadécimal.

Je me base sur le projet de hidapi de signal11 pour générer la bibliothèque ‘libhidapi.0.dylib’ pour Mac ainsi que l’exécutable ‘hidtest’ modifié par mes soins.

L’exécutable génère un appel vers un script Bash (mirror_tags.sh) avec comme paramètres : l’action (show/hide) suivi de l’identifiant du tag.

Cas de la transformation en C++ de la variable int vers char :

Je suis (enfin!) arrivé à transformer en C++ la variable integer (qui contient les données héxadécimal du Mir:ror) en char de manière à générer une chaine de texte utilisable… (voir le fichier hidtest.cpp)

char response[1];
char url[256];

response[0]=buf[0];
response[1]=buf[1];

sprintf(url,"%02hhx",response[0], response[1], ...);

Le tout est lancé sur le Mac par le biais d’un service de lancement (launchd).

B. Le package Mac OS X…

Je génère deux versions du projet :

  • Une version 32bits (j’ai un vieux MacBook Pro Core Duo qui ne travaille pas en 64bits)
  • Une version 64bits.

Chaque package copie les différents composant du projet à leur place définitive :

  • Installation de la librairie ‘libhidapi’ dans /usr/local/lib/
  • Installation de l’exécutable ‘Mirror’ dans /usr/local/bin/
  • Installation du fichier de configuration ‘mirror_tags.sh’ dans « ~/Library/Application Support/Mirror By LCProd/ »
  • Installation du service de lancement ‘fr.lcprod.mirror.plist’ dans « ~/Library/LaunchAgents/ »

L’installateur exécute ensuite un le service de lancement pour démarrer l’application.

Cas de l’installateur Mac (PackageMaker) :

L’installateur ne permet pas d’installer en une fois des fichiers pour le système et pour l’utilisateur… je décide de le lancer root en vue d’une installation vers le système.

J’organise le déploiement en trois temps :

  1. Les fichiers soit copiés vers un répertoire temporaire par l’installateur.
  2. Un script Bash de post traitement Bash copie les fichiers vers leurs emplacements définitif : La commande ‘cp -aR’ permet de garder les droits originaux des fichiers 🙂
    cp -aR dossier_depart dossier_destination
  3. Le lancement du service doit être fait par l’utilisateur, j’utilise la commande ‘su’ pour activer ‘launchctl load …’
su $USER -c 'launchctl load -F $HOME/Library/LaunchAgents/fr.lcprod.mirror.plist'

Le tout est disponible dans une belle image disque… à télécharger depuis mon site Web.

C. Vos remarques, vos questions, vos améliorations… : Commentez ici ou envoyez des Tweets (@lcprod)

Un merci pour les ressources du Web :

 

Comments are closed.