#include #include #include "SimpleWiNo.h" #include //Objet Wino SimpleWiNo wino; //Constantes de configuration des noeuds #define ADRESSE_CLUSTER 0x4A89 #define ADRESSE_NOEUD 0x0002 #define CANAL 7 //Variables pour le paquet uint8_t rxbuf[40]; //Buffer de reception uint8_t packetLenRX; //Longueur du paquet reçu uint16_t adresseMacSource; //Adresse de couche 2 du noeud source uint16_t adresseIpSource; //Adresse de couche 3 du noeud source uint16_t adresseMulticast; //Adresse multicast reçue //Propriétés du paquet #define ADRESSE_MULTICAST 0x7878 #define TTL_MAX 7 //Time To Live avant expiration //Indices des champs du paquet (format paquet) #define CHAMP_ADRESSE_DST 0 //Position de l'adresse de destination #define CHAMP_TTL 2 //Position du TTL dans le paquet #define CHAMP_ADRESSE_SRC 3 //Position du champ d'adressage #define CHAMP_NUM_SEQ 5 //Position du numéro de séquence #define CHAMP_MIN_PAYLOAD 6 //Position du premier octet de la payload //Mémorisation des paquets //Nombre de paquets maximums mémorisables #define NB_PAQUET_MEM 10 //Structure pour l'identification struct identifiant{ uint16_t srcAddr; uint8_t sqn; }; typedef struct identifiant IDENTIFIANT; uint8_t indiceMemId=0; //Indice pour la mise à jour dans le tableau IDENTIFIANT idRecu; //Identifiant courant du paquet reçu IDENTIFIANT tabId[NB_PAQUET_MEM]; //Tableau d'identifiants //Procédures pour la mémorisation //Initialisation du tableau d'identifiants void initTabId(IDENTIFIANT tab[]){ for(int i=0; i