Rémi Jocaille , le 5 April, 2008 - 14:52

Salut,
Je crois que tu as passé assez de temps dans le code de l'API pour savoir qui je suis lol.
Je vais un peu m'expliquer sur l'architecture du système telle que tu la vu dans la version courrante de l'API, puis je te parlerai du système v2 que je suis en train de développer.
Tout d'abord, il faut connaître un peu l'historique software du projet. Vers le mois d'octobre 2006, alors que je travaillais uniquement sur un produit développé en sous-traitance pour une société de jouet française, on m'a demandé d'amorcer le développement des logiciels pour Tuxdroid. Je suis donc arrivé de mon monde windows (le seul que je connaissais ...) dans un tout nouveau monde inconnu. Ma mission était donc d'offrir une interface de contrôle du robot dans un langage script et de préférence communautaire. Comme tu t'en doute, j'étais vraiment le mieux placé pour remplir cette mission lol. Mon choix c'est porté (peut-être par ignorance) sur python. Comme la société était très pressé de pouvoir proposer qqchose, j'ai du obtenir des résultats en 1 ou 2 mois en devant en même temps apprendre linux, python et le c (Je n'en avais fait qu'à l'école). L'architecture daemon-api tcpip est donc née dans un total amateurisme. La boite comptait ensuite sur la communauté python, pour créer du contenu. Mais, on s'est fourré le doigt dans l'oeil... Alors j'ai du continuer à m'arracher pour créer des couches de plus haut niveau pour pouvoir créer des "gadgets" accessibles à monsieur tout le monde (Gadget manager, etc ...) (Ben oui, faut bien en vendre des tux, sinon on ferme les portes...). Depuis que j'ai démarré le projet, j'ai la tête dans le guidon, et c'est seulement depuis le tout début de cette année, que j'ai enfin pu reprendre tout à la base. J'ai donc pu profiter de l'expérience du premier système et des idées de Jaguarondi (Qui a beaucoup réfléchit sur l'architecture et qui c'est beaucoup entretenu avec des gens ayant un meilleur feeling que moi sur ce genre de développement).
Donc, avec Jaguarondi, on a fait une review des fonctionnalités du daemon.
A l'heure actuelle j'ai pratiquement terminé la première couche, qui offre une bien meilleur abstraction du robot (L'insertion de sons dans la flash est entièrement géré par cette couche maintenant). Cette couche est composée de 2 librairies so pour linux et 2 DLL pour windows (tout est cross-compilable maintenant ...). Une librairie pour le control du robot (tux_driver) et une librairie pour le control de la synthèse vocal (tux_osl). J'ai fait les wrappers pour ces librairies pour c(et c++), python et pascal. En ce qui concerne les commandes, requêtes et status, tout ce passe dans les strings. Ce qui fait que les API communiqueront avec tux uniquement en envoyant des commandes du genre (TUX_CMD:WINGS:ON_DURING:5.0,UP). Et elles recevront les évênements sous la forme ("light_level:float:50.0:3.09") (le 3.09 indique le delay avec le dernier changement d'état, c'est aussi une grande nouveauté) Les requêtes peuvent demander l'état d'un status particulier (même format que les évêments) ou l'état de tout les status d'un seul coup.
J'ai fait un petit serveur web en python pour tester ça, et une page web peut balancer des commandes à Tux sans autre chose que des tags html.
Il y a aussi un parser de macro dans les librairies qui permet d'interpréter par exemple ce fichier text :

0.0:TUX_CMD:MOUTH:OPEN
0.0:OSL_CMD:EFFECT:CRAZY_PITCH:START:100,250,40
0.0:OSL_CMD:TTS:SET_LOCUTOR:Heather8k
0.0:OSL_CMD:TTS:SPEAK:System failure ! The system is completly unstable !
6.0:OSL_CMD:EFFECT:CRAZY_PITCH:STOP
6.0:TUX_CMD:MOUTH:CLOSE

Le macro est envoyé au deux librairies qui prennent uniquement les commandes qui les concernent.

Voila, en gros où on en est du coté soft.
Si je viens te faire ce petit état des lieux, c'est parce que je suis tombé sur ton site il y a quelques jours et que j'ai été impressionné par le fait que tu ai eu le courage de retranscrire ma bordélique API en python lol
Et je me demandais si il ne serait pas intéressant de collaborer un peu, peut-être sur l'interface service-api ou api ou framework, ou autre pour la V2 de l'architecture.
Si tu es intéressé, tu as mon email et j'ai la même adresse sur msn. Quoi qu'il en sois je repasserai sur ton site.

A bientôt,
Rémi

Répondre

Le contenu de ce champ est gardé secret et ne sera pas montré publiquement.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • To highlight piece of code, just surround them with <code type="language"> Your code &tl;/code>>. Language can be java,c++,bash,etc... Everything Geshi support.
  • Les lignes et les paragraphes vont à la ligne automatiquement.
  • Textual smileys will be replaced with graphical ones.
  • Les adresses de pages web et de messagerie électronique sont transformées en liens automatiquement.

Plus d'informations sur les options de formatage

Connexion utilisateur
Commentaires récents