Développement

Suite a la mise a disposition par Violet de spécifications, deux types de développement sont aujourd'hui possibles pour le Nabaztag.

API HTTP

Le développement le plus immédiat a mettre en œuvre repose sur l'API HTTP, qui permet a tout client Web d'interagir avec les serveurs Violet. Le client web peut être un navigateur, mais aussi et surtout un programme.

Les commandes existantes permettent:

  • le retrait de la position actuelle des oreilles
  • un changement de position des oreilles
  • l'envoi au lapin d'un message de la bibliothèque Violet ou d'un MP3 personnel
  • l'envoi d'un message en synthèse vocale
  • l'envoi vers les nabcast
  • l'envoi d'une chorégraphie, ou animation visuelle du lapin

L'API HTTP est largement mise en œuvre sur plusieurs sites Web qui mettent a disposition une interface de saisie et d'envoi des commandes. Elle est principalement discutée sur le forum forumactif dans la rubrique API, sa documentation est disponible sur le site Violet.

NabazLab ne repose pas sur cette API, mais certaines de ses fonctions constituent des outils utiles pour son usage. En particulier, l'éditeur de chorégraphie intégré au Studio permet d'exporter au format de l'API HTTP et de tester en envoyant la chorégraphie aux serveurs Violet.

Client-serveur

L'essence de NabazLab est d'offrir une alternative au système Violet en fournissant a la fois une outil de développement et un serveur indépendant pour le Nabaztag. Cette combinaison permet la création de services spéciaux non disponibles ailleurs, ou non réalisables depuis un serveur distant.

Ce type d'application est distribué entre le serveur et le lapin:

  • Côté lapin
    Le microcode intégré dans le lapin ne peut pas être mis a jour, mais il implémente une machine virtuelle capable elle-même d'exécuter des programmes a la manière d'une machine virtuelle Java ou .NET. Tous les services Violet sont réalisés ainsi.

    Au démarrage, la machine virtuelle est vide et le lapin contacte son serveur pour obtenir le programme a exécuter. Par la suite, le lapin contacte a nouveau le serveur a intervalle régulier pour obtenir les mises à jour du programme et de ses paramètres.

    NabazLab contient un assembleur pour la machine virtuelle. Accessible en ligne de commande, dans le Studio, depuis le Service, ou depuis n'importe quel programme .NET, il transforme le texte du programme en bytecode directement exécutable par la machine virtuelle.

    Le langage assembleur est un langage de très bas niveau. Outre les opérations communes de calcul et de gestion du flot d'exécution, il permet le pilotage des éléments matériels du Nabaztag. La documentation du langage est disponible sur le site Violet, les extensions spécifiques a NabazLab sont documentées sur la page Assembleur.

    NabazLab Studio contient un éditeur de texte et un mini-serveur pour tester le code créé.

  • Côté serveur
    Le serveur détermine le comportement du lapin en répondant a ses requêtes récurrentes en fonction de paramètres externes. De tels paramètres peuvent être le nombre de messages dans une boite aux lettres, les messages sonores en attente dans une base de données, un calcul de biorythme, ou a peu près n'importe quoi d'autre.

    Une réponse complète du serveur est une compilation de sons échantillonnés, de fichiers midi, de bytecode exécutable et de paramètres pour le bytecode. Une réponse partielle de mise a jour des paramètres est aussi possible.

    NabazLab Service contient un serveur autonome et modulaire, pilotable par une interface Web. Une bibliothèque permet de créer un module et service minimum en quelques lignes de code C#, VB.NET ou Java (J#).

Ces deux composants sont très étroitement liés, et doivent être développés et mis au point ensemble.

NabazLab vise a fournir un support et un environnement pour les deux aspects du développement.

Cohabitation

Il est à noter que du fait de l'architecture, il est en principe impossible de faire cohabiter les services Violet et des services spécifiques. A un instant donné le bytecode chargé dans le lapin est soit celui de Violet, soit un développement particulier.

Bien qu'il soit possible pour un module ou proxy de modifier au vol les données échangées entre le lapin et le serveur Violet afin d'ajouter ou de modifier un service, cette approche n'est pas recommandée. Le moindre changement du cote Violet risquerait de provoquer un dysfonctionnement.

Si une cohabitation des services est souhaitée l'approche "sûre" consiste a implémenter une bascule automatique au sein du module entre deux modes de fonctionnement :

  • Mode proxy, ou Violet
    Les requêtes du lapin sont retransmises a Violet et les réponses retournées au lapin, sans modification. Quand le module souhaite prendre le contrôle du lapin suite a un évènement extérieur ou chronologique, il provoque un rechargement de la VM avec son propre bytecode.
  • Mode serveur, ou local
    Quand le contrôle n'est plus nécessaire, la première requête reçue du lapin est modifiée par le module pour contenir des paramètres de réinitialisation, puis transmise a Violet. En retour, Violet retourne une réponse contenant le bytecode original et le module revient au mode proxy.