chinook/chinook — Issue #7: Protocole de communication
Author: pastjean
Created: 2011-11-19 01:12:59+00:00
State: open

Finir l'écriture des specs du protocole de communication

Voici l'extrait du début:
----

Spec - Protocole de communication
=================================

Le protocole est penser un peux sur le modèle d'un key-value store simple avec fonctionnalités de publication.

- Le protocole est facile a transférer sur can soit compacté avec [message pack](http://msgpack.org)
- Le protocole est pensé pour un réseau en broadcast (CAN)
- Protocole couche applicative 7

## Format :

[ verbe , chemin , body ]

## verbe :

Le verbe indique l'opération à effectuer

- *GET* : Demander la valeur d'une variable distante (La valeur sera renvoyé par PUBLISH)
- **SET** : Permet de changer une variable distante
- PUBLISH : publie la valeur d'une variable

## chemin :

Indique la variable touché

ex:

wind.speed
wind.direction
eol.direction
trans.vitesse
canserver.bus
...

## body (optionnel) :

Le contenue de la variable ou de l'opération que l'on veux effectuer. Le type de body est dépendant de la variable.

ex:

1.1231512 # float
180 # int
true # bool
"Hello" # string
[1,2,3,4,5] # tableau

## exemple du protocole

Publication en continue d'une variable:

[ PUBLISH, wind.speed, 12.43 ]
[ PUBLISH, wind.direction, 10.30 ]
[ PUBLISH, wind.speed, 11.30 ]
[ PUBLISH, wind.speed, 10.43 ]
[ PUBLISH, wind.direction, 10.43 ]
[ PUBLISH, heartbeat, 10.43 ]
Requête d'une variable:

[ GET, power.remainingTime ] # logger
[ PUBLISH, power.remainingTime, 14.2 ] # controlleur de pouvoir

Changement d'une variable:

[ SET, eol.pitch, 2.1234 ] # calculateur
# plus tard
[ PUBLISH, eol.pitch, 2.1234 ] # controlleur de l'éolienne