Previous Up Next

3  Programmation système

Vous allez programmer le micro-contrôleur en C pour analyser les paquets TCP/IP reçus et en générer d’autres.

3.1  Code fourni

Pour vous faciliter la vie une grande partie du code vous est fourni : http://rex.plil.fr/Enseignement/Reseau/TP-C.Reseau.GIS3/Arduino-C.tgz. Vous y trouverez, dans serial.c, des fonctions de gestion du port série et, dans les autres sources des fonctions pour utiliser les éléments du bouclier multi-fonctions.

Un Makefile est disponible, pour compiler il suffit de taper make. Pour télécharger le programme sur l’Arduino, tapez make upload.

3.2  Protocole SLIP

L’utilitaire slattach doit être configuré pour utiliser le protocole SLIP. Ce protocole permet de marquer la fin des paquets avec l’octet de valeur 0xc0. Si ce caractère est présent dans le paquet lui-même, il est remplacé par les deux caractères 0xdb et 0xdc. Si le caractère d’échappement 0xdb est présent dans le paquet il est remplacé par les deux caractères 0xdb et 0xdd.

3.3  Réception d’un paquet UDP

Pour contrôler les LEDs du bouclier nous allons nous baser sur les données UDP. Commencez par vérifier que le paquet reçu est un paquet UDP vous concernant :

Si le paquet est le paquet UDP attendu, prenez les octets de données et effectuez l’action correspondante sur les LEDs.

Vous pouvez tester votre programme en utilisant la commande Unix ci-dessous :

echo -ne "\xff" | nc -q0 -u <adresse IP Arduino> <port UDP>

3.4  Envoi d’un paquet UDP

Sur réception d’un paquet UDP particulier, par exemple sur un second port UDP, votre Arduino doit renvoyer un paquet UDP sur le même port avec comme données l’état des boutons du bouclier.

Vous devez donc constituer un paquet IPv4 contenant un paquet UDP contenant les données. Ce paquet doit être envoyé sur le port série en utilisant le protocole SLIP. N’oubliez pas de calculer la somme de contrôle IPv4 et éventuellement la somme de contrôle UDP.

Vous pouvez tester votre programme en utilisant la commande Unix ci-dessous :

nc -u -l -p <port UDP> | od -tx1 -w1

Previous Up Next