/* * This file is part of the rtap localisation project. */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define AGGREGATE_DEFAULT_PORT 9900 // Port d'échange des données /* Type booléen */ typedef enum {FALSE, TRUE} BOOL ; /* Type direction */ typedef enum {NORTH = 1, EAST, SOUTH, WEST} DIRECTION ; /* Message envoyé par l'AP à l'agrégateur */ typedef struct _couple_message { unsigned char ap_mac_addr_bytes[6] ; // Adresse MAC de l'AP émetteur de l'info en octets unsigned char mobile_mac_addr_bytes[6] ; // Adresse MAC du mobile en octets struct timeval request_time ; // Identifiant du paquet = date sur le client struct timeval start_time ; // Heure d'arrivée du premier paquet du couple unsigned char antenna_signal_dbm ; // Puissance du signal reçu par l'AP du mobile /* Données pour la calibration */ float x_position ; float y_position ; float z_position ; DIRECTION direction ; // Orientation de la demande de localisation } couple_message ; /* Types de paquets */ #define PACKET_TYPE_NORMAL 0 #define PACKET_TYPE_CALIBRATION 1 /* Position des champs fixes de l'en-tête rtap (octets) */ #define RTAP_P_HREVISION 0 // Header revision #define RTAP_P_HPAD 1 // Header pad #define RTAP_P_HLENGTH 2 // Header length #define RTAP_P_PRESENTFLAGS 4 // Present flags /* Longueur des champs de l'en-tête rtap (octets) */ #define RTAP_L_HREVISION 1 // Header revision #define RTAP_L_HPAD 1 // Header pad #define RTAP_L_HLENGTH 2 // Header length #define RTAP_L_PRESENTFLAGS 4 // Present flags #define RTAP_L_MACTS 8 // MAC timestamp #define RTAP_L_FLAGS 1 // autre champ de flags #define RTAP_L_RATE 1 // Data rate #define RTAP_L_CHANNEL 2 // Channel #define RTAP_L_CHANNELTYPE 2 // Channel type #define RTAP_L_ANTENNASIGNALDBM 1 // SSI signal dBm #define RTAP_L_ANTENNANOISEDBM 1 // SSI noise dBm #define RTAP_L_ANTENNA 1 // Antenna #define RTAP_L_FHSS 2 #define RTAP_L_LOCKQUALITY 2 #define RTAP_L_TXATTENUATION 2 #define RTAP_L_TXATTENUATIONDB 2 #define RTAP_L_TXATTENUATIONDBM 1 #define RTAP_L_ANTENNASIGNALDB 1 // en dB #define RTAP_L_ANTENNANOISEDB 1 // en dB #define RTAP_L_FCS 4 #define RTAP_L_EXT // Non implémenté /* Positions pour affichage (tableau check de ss_list) */ #define RTAP_MACTS 0 #define RTAP_FLAGS 1 #define RTAP_RATE 2 #define RTAP_CHANNEL 3 // ainsi que RTAP_CHANNELTYPE #define RTAP_FHSS 4 #define RTAP_ANTENNASIGNALDBM 5 #define RTAP_ANTENNANOISEDBM 6 #define RTAP_LOCKQUALITY 7 #define RTAP_TXATTENUATION 8 #define RTAP_TXATTENUATIONDB 9 #define RTAP_TXATTENUATIONDBM 10 #define RTAP_ANTENNA 11 #define RTAP_ANTENNASIGNALDB 12 #define RTAP_ANTENNANOISEDB 13 #define RTAP_FCS 14 /* Variables globales */ BOOL run ; /* En-têtes de fonctions */ // Fonctions utilitaires char* mac_bytes_to_string(unsigned char *mac_binary) ; char frequency_to_channel(unsigned short channel) ; unsigned long timeval_to_ms(struct timeval date) ; unsigned long sub_date(struct timeval sup, struct timeval inf) ; BOOL mac_cmp(unsigned char *mac1, unsigned char *mac2) ; // Signaux void sigint_handler(int num) ; void sigterm_handler(int num) ; // Réseau int create_udp_listening_socket(int port) ; int create_udp_sending_socket(char *server_address, int server_port, struct sockaddr_in *server_description, struct sockaddr_in * client_description) ;