From b0846b68de84a62c686253a96cd5a36d6be7b11e Mon Sep 17 00:00:00 2001 From: robincvlr Date: Thu, 11 Jan 2018 15:13:49 +0100 Subject: [PATCH] communication en fonction temp aleatoires ok --- emetteur/emetteur.cpp | 112 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------------------------------- recepteur/recepteur.cpp | 83 +++++++++++++++++++++++++++++++++++++++++++---------------------------------------- 2 files changed, 121 insertions(+), 74 deletions(-) diff --git a/emetteur/emetteur.cpp b/emetteur/emetteur.cpp index cf66b69..3704bae 100644 --- a/emetteur/emetteur.cpp +++ b/emetteur/emetteur.cpp @@ -56,14 +56,87 @@ uint8_t testMsg[TRAME_SIZE]; //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// +//Fonctions utiles + +//Debug pour savoir si le message a été transmis +void OnTxDone( void ) +{ + Radio.SetChannel( HoppingFrequencies[0] ); + Radio.Sleep( ); + State = TX; + debug_if( DEBUG_MESSAGE, "\nEnvoye \n\r" ); +} + +//Time out de transmission. Échec de l'envoi +void OnTxTimeout( void ) +{ + Radio.SetChannel(HoppingFrequencies[0]); + Radio.Sleep( ); + State = TX_TIMEOUT; + debug_if( DEBUG_MESSAGE, "Echec de l'envoi \n\r"); +} + +//Modification du canal d'emission +void OnFhssChangeChannel( uint8_t channelIndex ) +{ + Radio.SetChannel(HoppingFrequencies[channelIndex]); + debug_if(DEBUG_MESSAGE, "F%d-", channelIndex); +} + +//fonction permettant de convertir int en uint8_t (ASCII) +uint8_t RandAscii(int nb) +{ + int return_var; + + if (nb == 0) { + return_var = 0x30; + } + else if (nb == 1) { + return_var = 0x31; + } + else if (nb == 2) { + return_var = 0x32; + } + else if (nb == 3) { + return_var = 0x33; + } + else if (nb == 4) { + return_var = 0x34; + } + else if (nb == 5) { + return_var = 0x35; + } + else if (nb == 6) { + return_var = 0x36; + } + else if (nb == 7) { + return_var = 0x37; + } + else if (nb == 8) { + return_var = 0x38; + } + else if (nb == 9) { + return_var = 0x39; + } + return return_var; +} +//////////////////////////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////////////////////////// void TrameCreation() { //Création d'une trame /* - [1...] : ID de l'emetteur - [...] : ID du recepteur cible - [...] : Température communiquée ici 20 pour l'exemple + [1...6] : ID de l'emetteur + [7...11] : ID du recepteur cible + [12...13] : Température communiquée ici 20 pour l'exemple */ + //Génération aléatoire des températures + int dizaines_i = rand()%10; + int unites_i = rand()%10; + uint8_t dizaines_c = RandAscii(dizaines_i); + uint8_t unites_c = RandAscii(unites_i); + //Converti en ASCII testMsg[0] = 0x46; //emetteur F testMsg[1] = 0x33; //emetteur 3 @@ -78,8 +151,8 @@ void TrameCreation() testMsg[9] = 0x31; //recepteur 1 testMsg[10] = 0x43; //recepteur C // - testMsg[11] = 0x32; //temperature 2 dizaines - testMsg[12] = 0x31; //temperature 0 unités + testMsg[11] = dizaines_c; //temperature 2 dizaines + testMsg[12] = unites_c; //temperature 0 unités } //////////////////////////////////////////////////////////////////////////////// @@ -144,32 +217,3 @@ int main( void ) } } //////////////////////////////////////////////////////////////////////////////// - -//////////////////////////////////////////////////////////////////////////////// -//Fonctions utiles - -//Debug pour savoir si le message a été transmis -void OnTxDone( void ) -{ - Radio.SetChannel( HoppingFrequencies[0] ); - Radio.Sleep( ); - State = TX; - debug_if( DEBUG_MESSAGE, "\nEnvoye \n\r" ); -} - -//Time out de transmission. Échec de l'envoi -void OnTxTimeout( void ) -{ - Radio.SetChannel(HoppingFrequencies[0]); - Radio.Sleep( ); - State = TX_TIMEOUT; - debug_if( DEBUG_MESSAGE, "Echec de l'envoi \n\r"); -} - -//Modification du canal d'emission -void OnFhssChangeChannel( uint8_t channelIndex ) -{ - Radio.SetChannel(HoppingFrequencies[channelIndex]); - debug_if(DEBUG_MESSAGE, "F%d-", channelIndex); -} -//////////////////////////////////////////////////////////////////////////////// diff --git a/recepteur/recepteur.cpp b/recepteur/recepteur.cpp index db85536..1a3cf57 100644 --- a/recepteur/recepteur.cpp +++ b/recepteur/recepteur.cpp @@ -59,6 +59,44 @@ uint8_t receptMsg[13]; //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// +//Fonctions utiles +void OnRxDone( uint8_t *payload, uint16_t size, int16_t rssi, int8_t snr ) +{ + Radio.SetChannel( HoppingFrequencies[0] ); + Radio.Sleep( ); + BufferSize = size; + memcpy( Buffer, payload, BufferSize ); + RssiValue = rssi; + SnrValue = snr; + State = RX; + debug_if( DEBUG_MESSAGE, "> OnRxDone\n\r" ); +} + +void OnRxTimeout( void ) +{ + Radio.SetChannel( HoppingFrequencies[0] ); + Radio.Sleep( ); + Buffer[BufferSize] = 0; + State = RX_TIMEOUT; + debug_if( DEBUG_MESSAGE, "> OnRxTimeout\n\r" ); +} + +void OnRxError( void ) +{ + Radio.SetChannel( HoppingFrequencies[0] ); + Radio.Sleep( ); + State = RX_ERROR; + debug_if( DEBUG_MESSAGE, "> OnRxError\n\r" ); +} + +void OnFhssChangeChannel( uint8_t channelIndex ) +{ + Radio.SetChannel( HoppingFrequencies[channelIndex] ); + debug_if( DEBUG_MESSAGE, "F%d-", channelIndex ); +} +//////////////////////////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////////////////////////// void TrameComp() { //Création d'une trame de comparaison pour vérifier si l'id de l'emetteur est bonne @@ -130,60 +168,25 @@ int main( void ) TrameComp(); debug("Reception en cours...\r\n"); debug("Etat initial du Buffer : %s\r\n",(char*)Buffer); - Radio.Rx(RX_TIMEOUT_VALUE); //Reception mode en continu car TIME_OUT_VALUE = 0 while(1) { + Radio.Rx(RX_TIMEOUT_VALUE); //Reception mode en continu car TIME_OUT_VALUE = 0 if( BufferSize > 0 ) { if(strncmp((const char*)Buffer, (const char*)receptMsg, TRAME_SIZE-2 ) == 0) //-2 pour ne vérifier que l'entete { debug("Trame recue : %s\r\n",(char*)Buffer); + //il faut enregistrer la trame + //il faut vider le buffer + memset (Buffer, NULL, BUFFER_SIZE); } else { debug("Attente d'une trame...\n"); } - wait_ms(1000); + wait_ms(5000); } } } //////////////////////////////////////////////////////////////////////////////// - -//////////////////////////////////////////////////////////////////////////////// -//Fonctions utiles -void OnRxDone( uint8_t *payload, uint16_t size, int16_t rssi, int8_t snr ) -{ - Radio.SetChannel( HoppingFrequencies[0] ); - Radio.Sleep( ); - BufferSize = size; - memcpy( Buffer, payload, BufferSize ); - RssiValue = rssi; - SnrValue = snr; - State = RX; - debug_if( DEBUG_MESSAGE, "> OnRxDone\n\r" ); -} - -void OnRxTimeout( void ) -{ - Radio.SetChannel( HoppingFrequencies[0] ); - Radio.Sleep( ); - Buffer[BufferSize] = 0; - State = RX_TIMEOUT; - debug_if( DEBUG_MESSAGE, "> OnRxTimeout\n\r" ); -} - -void OnRxError( void ) -{ - Radio.SetChannel( HoppingFrequencies[0] ); - Radio.Sleep( ); - State = RX_ERROR; - debug_if( DEBUG_MESSAGE, "> OnRxError\n\r" ); -} - -void OnFhssChangeChannel( uint8_t channelIndex ) -{ - Radio.SetChannel( HoppingFrequencies[channelIndex] ); - debug_if( DEBUG_MESSAGE, "F%d-", channelIndex ); -} -//////////////////////////////////////////////////////////////////////////////// -- libgit2 0.21.2