Difference between revisions of "Projets:Perso:2015:LedTube:Protocole"
(→Protocole série / UDP) |
(→Protocole série / UDP) |
||
Line 7: | Line 7: | ||
*WIFI protection : OPEN | *WIFI protection : OPEN | ||
*DHCP activé | *DHCP activé | ||
− | *DHCP Range : 192.168. | + | *DHCP Range : 192.168.1.1 - 192.168.1.??? |
− | *Adresse IP du module WIFI sur le réseau WIFI : 192.168.0. | + | *Adresse IP du module WIFI sur le réseau WIFI : 192.168.1.0 |
+ | *Masque sous réseau 255.255.255.0 | ||
*Numéro de port UDP : 5125 (decimal) | *Numéro de port UDP : 5125 (decimal) | ||
Line 23: | Line 24: | ||
* un vecteur vitesse de translation horizontale (nombre flottant dans [-1,1]). En tours par seconde. | * un vecteur vitesse de translation horizontale (nombre flottant dans [-1,1]). En tours par seconde. | ||
* une demande de changement de mode de génération d'image. | * une demande de changement de mode de génération d'image. | ||
+ | * une commande d'intensité lumineuse exploitée par certains modes (8,9,10,?) | ||
Il n'est pas nécessaire de limiter le nombre de commande par trame UDP à 1. Le parser gère les données reçues comme un stream continu. | Il n'est pas nécessaire de limiter le nombre de commande par trame UDP à 1. Le parser gère les données reçues comme un stream continu. |
Revision as of 21:08, 7 February 2016
Protocole série / UDP
- SSID WIFI : LEDTUBE
- WIFI protection : OPEN
- DHCP activé
- DHCP Range : 192.168.1.1 - 192.168.1.???
- Adresse IP du module WIFI sur le réseau WIFI : 192.168.1.0
- Masque sous réseau 255.255.255.0
- Numéro de port UDP : 5125 (decimal)
Une interface UDP/IP est offerte pour y injecter des images et envoyer des commandes.
Le système n'envoie jamais rien vers le device connecté.
La limitation de débit est liée à la liaison série entre le MCU et le module WIFI. Elle est à 115200 bauds. Soit un débit utile proche de 92kbits/s. On testera de passer cette liaison à plus grande vitesse.
Le système ne peut recevoir que les choses suivantes
- des images en RAW en une seule trame UDP pour les images fixes (si possible)
- une commande d'initialisation de la translation (nombre flottant dans [-1,1]).
- un vecteur vitesse de translation horizontale (nombre flottant dans [-1,1]). En tours par seconde.
- une demande de changement de mode de génération d'image.
- une commande d'intensité lumineuse exploitée par certains modes (8,9,10,?)
Il n'est pas nécessaire de limiter le nombre de commande par trame UDP à 1. Le parser gère les données reçues comme un stream continu.
Les commandes ne sont jamais acknoledgées. Le système n'envoie jamais rien en réponse, quoi qu'il arrive. Aucun message spontané non plus.
Il est à noter que le passage en TCP ne demanderait que très peu de changement dans la mesure où en réalité, le parser gère un stream.
Pas de notion de sprites. Pas de notions de couches superposées transparentes. On va pas refaire le chipset de l'amiga.
Les commandes sont aussi exprimées en syntaxe sprintf.
Par exemple, la commande POS qui a un paramètre variable en nombre flottant à nombre de décimales fixe est documentée en utilisant le formatage de la commande en langage C sprintf.
float pos;
sprintf(s,"LEDTUBE:POS:%+01.4f\r\n",pos);
Commande init translation, exprimée en unité de tour. Paramètre = Nombre flottant à virgule fixe dans [-1,1]
- "LEDTUBE:POS:???????\r\n" (masque parser de commande)
- "LEDTUBE:POS:%+01.4f\r\n" (syntaxe sprintf pour le formatage en C)
- "LEDTUBE:POS:+0.2445\r\n" (exemple)
- "LEDTUBE:POS:-0.1200\r\n" (exemple)
Commande vecteur vitesse de translation horizontale, exprimé en tours par seconde. Paramètre = Nombre flottant à virgule fixe dans [-1,1]
- "LEDTUBE:SPD:???????\r\n" (masque parser de commande)
- "LEDTUBE:SPD:%+01.4f\r\n" (syntaxe sprintf pour le formatage en C)
- "LEDTUBE:SPD:-0.1112\r\n" (exemple)
Commande Image Raw
- "LEDTUBE:RAW:" (masque parser de commande)
- "LEDTUBE:RAW:[RGB](1200x)" (pseudo syntaxe)
- "LEDTUBE:RAW:RGBRGBRGBRGB..." (exemple.Nota : il n'y a pas de \r\n à la fin)
Les images devraient je pense être envoyées en 2 trames UDP (limitation module WIFI). C'est à tester.
Changement de mode. Paramètre entier dans [0..]
- "LEDTUBE:MOD:????\r\n" (masque parser de commande)
- "LEDTUBE:MOD:%04X\r\n" (syntaxe sprintf pour le formatage en C)
- "LEDTUBE:MOD:000A\r\n" (exemple)
Changement de l'intensité lumineuse (dans certains modes). Paramètre entier dans [0..255]
- "LEDTUBE:INT:????\r\n" (masque parser de commande)
- "LEDTUBE:INT:%04X\r\n" (syntaxe sprintf pour le formatage en C)
- "LEDTUBE:INT:008A\r\n" (exemple)
Modes (decimal)
- 0 : le système passe dans ce mode à chaque réception d'une image RAW.
- 1..5 : plasma dynamique
- 6 : 3 spaces invaders RGB
- 7 : image noire
- 8 : image blanche
- 9 : image jaune
- 10 : 3 logos Electrolab RGB