Protocole EthernetWifi V1

Généralités

Le protocole de communication privilégié est l'UDP.

Le respect de l'endianness (et donc si nécessaire la conversion) doit être si nécessaire assurée au l'envoi comme à la réception.

Valeurs numériques

Toutes les valeurs numériques (récupérées depuis un capteur ou transmises comme consigne) doivent être converties de sorte que leurs valeurs varient entre -32767(valeur minimale théoriquement atteignable) et 32767 (valeur maximale théoriquement atteignable).
Un champ de valeur aussi important garantissant une précision en principe suffisante pour les calculs à effectuer par la suite.

L'usage de int16_t définis dans stdint.h peut donc être pertinent dans le cadre des manipulations de ces valeurs.

Une formule permettant d'obtenir un formatage efficace est :
Val_formatée = (65534 . (Val_Réelle - Val_Min)/(Val_Max - Val_Min)) – 32767
Attention : les calculs doivent être réalisés en float afin d'éviter des pertes importantes au cours de la division.

Pour inverser le formatage, la formule est :
Val_récup = (((Val_formatée + 32767) / 65534) . (Val_Max – Val_Min)) +Val_Min

Si ce choix semble non pertinent merci de nous contacter.

Attention : à l'issue de ce formatage, le 0 ne désigne pas nécessairement la position neutre ou le 0 conventionnel. Cela ne sera vrai que si l'intervalle des valeurs d'origine est centré en 0 (val_min = -val_max).

Format général de la trame

Le format de trame sera le suivant :

<NUM_PAQUET><!><TYPE_TRAME><< ?>|<<:><VAL>[,VAL[,...]]>><!><CTRL_SUM><CRLF>

Avec :

<NUM_PAQUET> : numéro du paquet, auto-incrémental, sur 4 chiffres, non signé, en décimal.

<!> : caractère "!" utilisé comme séparateur

<TYPE_TRAME> : suite de 2 caractères en ASCII indiquant les informations portées par la trame (voir plus bas)

<< ?>|<<:><VAL>[,VAL[,...]]>> valant soit :
-- "?" dans le cadre de la demande d'une (série de) valeurs
-- ":" suivi d'une série de valeurs séparés par des virgules

<CTRL_SUM> consiste en la somme des valeur ASCII de toute la trame jusqu'au caractère "!" précédant cette somme ("!" inclus)

<CRLF> : caractères "\r\n"

Liste des TYPE_TRAME

les TYPES_TRAME sont des suites de 2 caractères ASCII

La liste des types réservés sont disponibles sur la page : Types des trames

Exemples

On aura ainsi par exemple

0010!Gx?!513

correspond au dixième message échangé, le contrôleur demande au drone la valeur de son gyroscope en x

0011!Gx:21!608

serait la réponse du drone

ou encore

0101!0B:21,22,58!828

Qui serait le 101e message d'une série, utilisant un protocole de test (commençant par 0) et renvoyant 3 valeurs

Informations complémentaires

Notes :
1) La présence de bits de bourrage en fin de trames peut être envisagée et pourrait être décidée dans le cadre d'une révision ultérieure de ce document
2) Ce protocole est encore une ébauche, il est susceptible d'être modifié par la suite
3) Ce protocole constitue un premier jet destiné à la phase de conception initiale du système, l'optimisation de la vitesse n'est pas privilégiée ici
4) Ce protocole sera probablement fortement étendu voire totalement abandonné lors de développement ultérieurs du projet, les implémentations de divers protocoles doivent donc pouvoir être interverties aisément au sein du code réalisé (au besoin à l'aide de pattern adéquats). Les révisions cités son suceptibles d'affecter profondément la forme des trames mais aussi de manière non négligeable les informations transmises

5)Par ailleurs, de manière plus générale, l'usage des variables définies dans stdint.h pourrait être un gage de portabilité, il me semble donc pertinent d'envisager de les préférer aux variables par défaut.


Dernière révision : 11/03/2013 9h00
Auteurs : Couma Joani -- Faure Axel