Code carte émettrice (WRonski et Deleau)

Dependencies:   mbed BufferedSerial SX1276GenericLib HTU21D

Committer:
Adam06
Date:
Sun Apr 14 16:04:40 2019 +0000
Revision:
13:7b3468fd31be
Parent:
12:f3bdcf35751e
emetteur

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Helmut64 0:c43b6919ae15 1 /*
Helmut64 0:c43b6919ae15 2 * This file contains a copy of the master content sx1276PingPong
Helmut64 0:c43b6919ae15 3 * with adaption for the SX1276Generic environment
Helmut64 0:c43b6919ae15 4 * (c) 2017 Helmut Tschemernjak
Helmut64 0:c43b6919ae15 5 * 30826 Garbsen (Hannover) Germany
Helmut64 0:c43b6919ae15 6 */
Helmut64 0:c43b6919ae15 7
Helmut64 0:c43b6919ae15 8 #include "mbed.h"
Helmut64 0:c43b6919ae15 9 #include "PinMap.h"
Helmut64 0:c43b6919ae15 10 #include "GenericPingPong.h"
Helmut64 0:c43b6919ae15 11 #include "sx1276-mbed-hal.h"
Helmut64 0:c43b6919ae15 12 #include "main.h"
Adam06 12:f3bdcf35751e 13 #include "HTU21D.h"
Helmut64 0:c43b6919ae15 14
Helmut64 0:c43b6919ae15 15 #ifdef FEATURE_LORA
Helmut64 0:c43b6919ae15 16
Helmut64 0:c43b6919ae15 17 /* Set this flag to '1' to display debug messages on the console */
Helmut64 0:c43b6919ae15 18 #define DEBUG_MESSAGE 1
Helmut64 0:c43b6919ae15 19
Helmut64 0:c43b6919ae15 20 /* Set this flag to '1' to use the LoRa modulation or to '0' to use FSK modulation */
Helmut64 0:c43b6919ae15 21 #define USE_MODEM_LORA 1
Helmut64 0:c43b6919ae15 22 #define USE_MODEM_FSK !USE_MODEM_LORA
Helmut64 0:c43b6919ae15 23 #define RF_FREQUENCY RF_FREQUENCY_868_1 // Hz
Helmut64 0:c43b6919ae15 24 #define TX_OUTPUT_POWER 14 // 14 dBm
Helmut64 0:c43b6919ae15 25
Helmut64 0:c43b6919ae15 26 #if USE_MODEM_LORA == 1
Helmut64 0:c43b6919ae15 27
Helmut64 7:6a8a82bfb0c6 28 #define LORA_BANDWIDTH 125000 // LoRa default, details in SX1276::BandwidthMap
Helmut64 0:c43b6919ae15 29 #define LORA_SPREADING_FACTOR LORA_SF7
Helmut64 0:c43b6919ae15 30 #define LORA_CODINGRATE LORA_ERROR_CODING_RATE_4_5
Helmut64 0:c43b6919ae15 31
Helmut64 0:c43b6919ae15 32 #define LORA_PREAMBLE_LENGTH 8 // Same for Tx and Rx
Helmut64 0:c43b6919ae15 33 #define LORA_SYMBOL_TIMEOUT 5 // Symbols
Helmut64 0:c43b6919ae15 34 #define LORA_FIX_LENGTH_PAYLOAD_ON false
Helmut64 0:c43b6919ae15 35 #define LORA_FHSS_ENABLED false
Helmut64 0:c43b6919ae15 36 #define LORA_NB_SYMB_HOP 4
Helmut64 0:c43b6919ae15 37 #define LORA_IQ_INVERSION_ON false
Helmut64 0:c43b6919ae15 38 #define LORA_CRC_ENABLED true
Helmut64 0:c43b6919ae15 39
Helmut64 0:c43b6919ae15 40 #elif USE_MODEM_FSK == 1
Helmut64 0:c43b6919ae15 41
Helmut64 0:c43b6919ae15 42 #define FSK_FDEV 25000 // Hz
Helmut64 0:c43b6919ae15 43 #define FSK_DATARATE 19200 // bps
Helmut64 0:c43b6919ae15 44 #define FSK_BANDWIDTH 50000 // Hz
Helmut64 0:c43b6919ae15 45 #define FSK_AFC_BANDWIDTH 83333 // Hz
Helmut64 0:c43b6919ae15 46 #define FSK_PREAMBLE_LENGTH 5 // Same for Tx and Rx
Helmut64 0:c43b6919ae15 47 #define FSK_FIX_LENGTH_PAYLOAD_ON false
Helmut64 0:c43b6919ae15 48 #define FSK_CRC_ENABLED true
Helmut64 0:c43b6919ae15 49
Helmut64 0:c43b6919ae15 50 #else
Helmut64 0:c43b6919ae15 51 #error "Please define a modem in the compiler options."
Helmut64 0:c43b6919ae15 52 #endif
Helmut64 0:c43b6919ae15 53
Helmut64 0:c43b6919ae15 54
Helmut64 0:c43b6919ae15 55 #define RX_TIMEOUT_VALUE 3500 // in ms
Helmut64 0:c43b6919ae15 56
Adam06 13:7b3468fd31be 57 #define IDENTIFIANT1 0x02
Adam06 13:7b3468fd31be 58 #define IDENTIFIANT2 0x03
Adam06 13:7b3468fd31be 59
Helmut64 0:c43b6919ae15 60 //#define BUFFER_SIZE 32 // Define the payload size here
Helmut64 0:c43b6919ae15 61 #define BUFFER_SIZE 64 // Define the payload size here
Helmut64 0:c43b6919ae15 62
Helmut64 0:c43b6919ae15 63 /*
Helmut64 0:c43b6919ae15 64 * Global variables declarations
Helmut64 0:c43b6919ae15 65 */
Helmut64 0:c43b6919ae15 66 typedef enum
Helmut64 0:c43b6919ae15 67 {
Helmut64 0:c43b6919ae15 68 LOWPOWER = 0,
Helmut64 0:c43b6919ae15 69 IDLE,
Helmut64 0:c43b6919ae15 70
Helmut64 0:c43b6919ae15 71 RX,
Helmut64 0:c43b6919ae15 72 RX_TIMEOUT,
Helmut64 0:c43b6919ae15 73 RX_ERROR,
Helmut64 0:c43b6919ae15 74
Helmut64 0:c43b6919ae15 75 TX,
Helmut64 0:c43b6919ae15 76 TX_TIMEOUT,
Helmut64 0:c43b6919ae15 77
Helmut64 0:c43b6919ae15 78 CAD,
Helmut64 0:c43b6919ae15 79 CAD_DONE
Helmut64 0:c43b6919ae15 80 } AppStates_t;
Helmut64 0:c43b6919ae15 81
Helmut64 0:c43b6919ae15 82 volatile AppStates_t State = LOWPOWER;
Helmut64 0:c43b6919ae15 83
Helmut64 0:c43b6919ae15 84 /*!
Helmut64 0:c43b6919ae15 85 * Radio events function pointer
Helmut64 0:c43b6919ae15 86 */
Helmut64 0:c43b6919ae15 87 static RadioEvents_t RadioEvents;
Helmut64 0:c43b6919ae15 88
Helmut64 0:c43b6919ae15 89 /*
Helmut64 0:c43b6919ae15 90 * Global variables declarations
Helmut64 0:c43b6919ae15 91 */
Helmut64 0:c43b6919ae15 92 SX1276Generic *Radio;
Helmut64 0:c43b6919ae15 93
Adam06 13:7b3468fd31be 94 const uint8_t PingMsg[] = { 0xff, 0xff, 0x00, 0x00, 'P', 'I', 'N', 'G'};// "PING";
Adam06 13:7b3468fd31be 95 const uint8_t PongMsg[] = { 0xff, 0xff, 0x00, 0x00, 'P', 'O', 'N', 'G'};// "PONG";
Helmut64 0:c43b6919ae15 96
Helmut64 0:c43b6919ae15 97 uint16_t BufferSize = BUFFER_SIZE;
Helmut64 0:c43b6919ae15 98 uint8_t *Buffer;
Helmut64 0:c43b6919ae15 99
Helmut64 0:c43b6919ae15 100 DigitalOut *led3;
Helmut64 0:c43b6919ae15 101
Helmut64 0:c43b6919ae15 102
Helmut64 0:c43b6919ae15 103 int SX1276PingPong()
Helmut64 0:c43b6919ae15 104 {
Helmut64 0:c43b6919ae15 105 #if( defined ( TARGET_KL25Z ) || defined ( TARGET_LPC11U6X ) )
Helmut64 0:c43b6919ae15 106 DigitalOut *led = new DigitalOut(LED2);
bcostm 11:9d7409ebfa57 107 #elif defined(TARGET_NUCLEO_L073RZ) || defined(TARGET_DISCO_L072CZ_LRWAN1)
Helmut64 0:c43b6919ae15 108 DigitalOut *led = new DigitalOut(LED4); // RX red
Helmut64 0:c43b6919ae15 109 led3 = new DigitalOut(LED3); // TX blue
Helmut64 0:c43b6919ae15 110 #else
Helmut64 0:c43b6919ae15 111 DigitalOut *led = new DigitalOut(LED1);
Helmut64 0:c43b6919ae15 112 led3 = led;
Helmut64 0:c43b6919ae15 113 #endif
Helmut64 0:c43b6919ae15 114
Helmut64 0:c43b6919ae15 115 Buffer = new uint8_t[BUFFER_SIZE];
Helmut64 0:c43b6919ae15 116 *led3 = 1;
Helmut64 0:c43b6919ae15 117
Helmut64 0:c43b6919ae15 118 #ifdef B_L072Z_LRWAN1_LORA
Helmut64 0:c43b6919ae15 119 Radio = new SX1276Generic(NULL, MURATA_SX1276,
Helmut64 0:c43b6919ae15 120 LORA_SPI_MOSI, LORA_SPI_MISO, LORA_SPI_SCLK, LORA_CS, LORA_RESET,
Helmut64 0:c43b6919ae15 121 LORA_DIO0, LORA_DIO1, LORA_DIO2, LORA_DIO3, LORA_DIO4, LORA_DIO5,
Helmut64 0:c43b6919ae15 122 LORA_ANT_RX, LORA_ANT_TX, LORA_ANT_BOOST, LORA_TCXO);
Helmut64 0:c43b6919ae15 123 #else // RFM95
Helmut64 0:c43b6919ae15 124 Radio = new SX1276Generic(NULL, RFM95_SX1276,
Helmut64 0:c43b6919ae15 125 LORA_SPI_MOSI, LORA_SPI_MISO, LORA_SPI_SCLK, LORA_CS, LORA_RESET,
Helmut64 0:c43b6919ae15 126 LORA_DIO0, LORA_DIO1, LORA_DIO2, LORA_DIO3, LORA_DIO4, LORA_DIO5);
Helmut64 0:c43b6919ae15 127
Helmut64 0:c43b6919ae15 128 #endif
Helmut64 0:c43b6919ae15 129
Helmut64 0:c43b6919ae15 130 uint8_t i;
Helmut64 0:c43b6919ae15 131 bool isMaster = true;
Helmut64 0:c43b6919ae15 132
Helmut64 0:c43b6919ae15 133 dprintf("SX1276 Ping Pong Demo Application" );
Helmut64 0:c43b6919ae15 134 dprintf("Freqency: %.1f", (double)RF_FREQUENCY/1000000.0);
Helmut64 0:c43b6919ae15 135 dprintf("TXPower: %d dBm", TX_OUTPUT_POWER);
Helmut64 0:c43b6919ae15 136 #if USE_MODEM_LORA == 1
Helmut64 8:3b0d7b4ff28f 137 dprintf("Bandwidth: %d Hz", LORA_BANDWIDTH);
Helmut64 0:c43b6919ae15 138 dprintf("Spreading factor: SF%d", LORA_SPREADING_FACTOR);
Helmut64 0:c43b6919ae15 139 #elif USE_MODEM_FSK == 1
Helmut64 0:c43b6919ae15 140 dprintf("Bandwidth: %d kHz", FSK_BANDWIDTH);
Helmut64 0:c43b6919ae15 141 dprintf("Baudrate: %d", FSK_DATARATE);
Helmut64 0:c43b6919ae15 142 #endif
Helmut64 0:c43b6919ae15 143 // Initialize Radio driver
Helmut64 0:c43b6919ae15 144 RadioEvents.TxDone = OnTxDone;
Helmut64 0:c43b6919ae15 145 RadioEvents.RxDone = OnRxDone;
Helmut64 0:c43b6919ae15 146 RadioEvents.RxError = OnRxError;
Helmut64 0:c43b6919ae15 147 RadioEvents.TxTimeout = OnTxTimeout;
Helmut64 6:1b598b0e52e4 148 RadioEvents.RxTimeout = OnRxTimeout;
Helmut64 6:1b598b0e52e4 149 if (Radio->Init( &RadioEvents ) == false) {
Helmut64 6:1b598b0e52e4 150 while(1) {
Helmut64 6:1b598b0e52e4 151 dprintf("Radio could not be detected!");
Helmut64 6:1b598b0e52e4 152 wait( 1 );
Helmut64 6:1b598b0e52e4 153 }
Helmut64 0:c43b6919ae15 154 }
Helmut64 6:1b598b0e52e4 155
Helmut64 0:c43b6919ae15 156
Helmut64 0:c43b6919ae15 157 switch(Radio->DetectBoardType()) {
Helmut64 0:c43b6919ae15 158 case SX1276MB1LAS:
Helmut64 0:c43b6919ae15 159 if (DEBUG_MESSAGE)
Helmut64 0:c43b6919ae15 160 dprintf(" > Board Type: SX1276MB1LAS <");
Helmut64 0:c43b6919ae15 161 break;
Helmut64 0:c43b6919ae15 162 case SX1276MB1MAS:
Helmut64 0:c43b6919ae15 163 if (DEBUG_MESSAGE)
Helmut64 0:c43b6919ae15 164 dprintf(" > Board Type: SX1276MB1LAS <");
Helmut64 0:c43b6919ae15 165 case MURATA_SX1276:
Helmut64 0:c43b6919ae15 166 if (DEBUG_MESSAGE)
Helmut64 0:c43b6919ae15 167 dprintf(" > Board Type: MURATA_SX1276_STM32L0 <");
Helmut64 0:c43b6919ae15 168 break;
Helmut64 0:c43b6919ae15 169 case RFM95_SX1276:
Helmut64 0:c43b6919ae15 170 if (DEBUG_MESSAGE)
Helmut64 0:c43b6919ae15 171 dprintf(" > HopeRF RFM95xx <");
Helmut64 0:c43b6919ae15 172 break;
Helmut64 0:c43b6919ae15 173 default:
Helmut64 0:c43b6919ae15 174 dprintf(" > Board Type: unknown <");
Helmut64 0:c43b6919ae15 175 }
Helmut64 0:c43b6919ae15 176
Helmut64 0:c43b6919ae15 177 Radio->SetChannel(RF_FREQUENCY );
Helmut64 0:c43b6919ae15 178
Helmut64 0:c43b6919ae15 179 #if USE_MODEM_LORA == 1
Helmut64 0:c43b6919ae15 180
Helmut64 0:c43b6919ae15 181 if (LORA_FHSS_ENABLED)
Helmut64 0:c43b6919ae15 182 dprintf(" > LORA FHSS Mode <");
Helmut64 0:c43b6919ae15 183 if (!LORA_FHSS_ENABLED)
Helmut64 0:c43b6919ae15 184 dprintf(" > LORA Mode <");
Helmut64 0:c43b6919ae15 185
Helmut64 0:c43b6919ae15 186 Radio->SetTxConfig( MODEM_LORA, TX_OUTPUT_POWER, 0, LORA_BANDWIDTH,
Helmut64 0:c43b6919ae15 187 LORA_SPREADING_FACTOR, LORA_CODINGRATE,
Helmut64 0:c43b6919ae15 188 LORA_PREAMBLE_LENGTH, LORA_FIX_LENGTH_PAYLOAD_ON,
Helmut64 0:c43b6919ae15 189 LORA_CRC_ENABLED, LORA_FHSS_ENABLED, LORA_NB_SYMB_HOP,
Helmut64 0:c43b6919ae15 190 LORA_IQ_INVERSION_ON, 2000 );
Helmut64 0:c43b6919ae15 191
Helmut64 0:c43b6919ae15 192 Radio->SetRxConfig( MODEM_LORA, LORA_BANDWIDTH, LORA_SPREADING_FACTOR,
Helmut64 0:c43b6919ae15 193 LORA_CODINGRATE, 0, LORA_PREAMBLE_LENGTH,
Helmut64 0:c43b6919ae15 194 LORA_SYMBOL_TIMEOUT, LORA_FIX_LENGTH_PAYLOAD_ON, 0,
Helmut64 0:c43b6919ae15 195 LORA_CRC_ENABLED, LORA_FHSS_ENABLED, LORA_NB_SYMB_HOP,
Helmut64 0:c43b6919ae15 196 LORA_IQ_INVERSION_ON, true );
Helmut64 0:c43b6919ae15 197
Helmut64 0:c43b6919ae15 198 #elif USE_MODEM_FSK == 1
Helmut64 0:c43b6919ae15 199
Helmut64 0:c43b6919ae15 200 dprintf(" > FSK Mode <");
Helmut64 0:c43b6919ae15 201 Radio->SetTxConfig( MODEM_FSK, TX_OUTPUT_POWER, FSK_FDEV, 0,
Helmut64 0:c43b6919ae15 202 FSK_DATARATE, 0,
Helmut64 0:c43b6919ae15 203 FSK_PREAMBLE_LENGTH, FSK_FIX_LENGTH_PAYLOAD_ON,
Helmut64 0:c43b6919ae15 204 FSK_CRC_ENABLED, 0, 0, 0, 2000 );
Helmut64 0:c43b6919ae15 205
Helmut64 0:c43b6919ae15 206 Radio->SetRxConfig( MODEM_FSK, FSK_BANDWIDTH, FSK_DATARATE,
Helmut64 0:c43b6919ae15 207 0, FSK_AFC_BANDWIDTH, FSK_PREAMBLE_LENGTH,
Helmut64 0:c43b6919ae15 208 0, FSK_FIX_LENGTH_PAYLOAD_ON, 0, FSK_CRC_ENABLED,
Helmut64 0:c43b6919ae15 209 0, 0, false, true );
Helmut64 0:c43b6919ae15 210
Helmut64 0:c43b6919ae15 211 #else
Helmut64 0:c43b6919ae15 212
Helmut64 0:c43b6919ae15 213 #error "Please define a modem in the compiler options."
Helmut64 0:c43b6919ae15 214
Helmut64 0:c43b6919ae15 215 #endif
Helmut64 0:c43b6919ae15 216
Helmut64 0:c43b6919ae15 217 if (DEBUG_MESSAGE)
Helmut64 0:c43b6919ae15 218 dprintf("Starting Ping-Pong loop");
Helmut64 0:c43b6919ae15 219
Helmut64 0:c43b6919ae15 220
Helmut64 0:c43b6919ae15 221 Radio->Rx( RX_TIMEOUT_VALUE );
Helmut64 0:c43b6919ae15 222
Adam06 12:f3bdcf35751e 223
Adam06 13:7b3468fd31be 224 HTU21D temphumid(PB_14, PB_13); //temperaturevalue humid sensor || SDA, SCL
Adam06 13:7b3468fd31be 225 int sample_ctemp;
Adam06 13:7b3468fd31be 226 int sample_humid;
Adam06 13:7b3468fd31be 227
Adam06 13:7b3468fd31be 228
Helmut64 0:c43b6919ae15 229 while( 1 )
Helmut64 0:c43b6919ae15 230 {
Helmut64 0:c43b6919ae15 231 #ifdef TARGET_STM32L4
Helmut64 0:c43b6919ae15 232 WatchDogUpdate();
Helmut64 0:c43b6919ae15 233 #endif
Adam06 13:7b3468fd31be 234 while(1)
Helmut64 0:c43b6919ae15 235 {
Adam06 13:7b3468fd31be 236 sample_ctemp = temphumid.sample_ctemp(); //valeur de la température en dégrés celsius
Adam06 13:7b3468fd31be 237 sample_humid = temphumid.sample_humid(); //valeur de l'humidité
Adam06 13:7b3468fd31be 238 memcpy(Buffer, PingMsg, sizeof(PingMsg));
Adam06 13:7b3468fd31be 239 uint8_t temperaturevalue = sample_ctemp;
Adam06 13:7b3468fd31be 240 uint8_t humidityvalue = sample_humid;
Adam06 13:7b3468fd31be 241 for(int i = sizeof(PingMsg); i < BufferSize; i++) //on rempli le buffer
Adam06 13:7b3468fd31be 242 {
Adam06 13:7b3468fd31be 243 Buffer[i] = i - sizeof(PingMsg);
Adam06 13:7b3468fd31be 244 }
Adam06 13:7b3468fd31be 245 Buffer[2] = IDENTIFIANT1; //les identifiants servent à indentifier la carte client et serveur
Adam06 13:7b3468fd31be 246 Buffer[3] = IDENTIFIANT2;
Adam06 13:7b3468fd31be 247 Buffer[5]=temperaturevalue; //on met au bon endroit du buffer les valeurs des capteurs
Adam06 13:7b3468fd31be 248 Buffer[6]=humidityvalue;
Adam06 13:7b3468fd31be 249 wait(0.01);
Adam06 13:7b3468fd31be 250 Radio->Send(Buffer, BufferSize); //envoi du message
Adam06 13:7b3468fd31be 251 dprintf("La Temperature est de : %d degres celsius",temperaturevalue);
Adam06 13:7b3468fd31be 252 dprintf("L'Humidite est de : %d ", humidityvalue);
Adam06 13:7b3468fd31be 253 wait(2);
Adam06 13:7b3468fd31be 254
Adam06 13:7b3468fd31be 255 }
Helmut64 0:c43b6919ae15 256 }
Helmut64 0:c43b6919ae15 257 }
Helmut64 0:c43b6919ae15 258
bcostm 11:9d7409ebfa57 259 void OnTxDone(void *radio, void *userThisPtr, void *userData)
Helmut64 0:c43b6919ae15 260 {
Helmut64 0:c43b6919ae15 261 Radio->Sleep( );
Helmut64 0:c43b6919ae15 262 State = TX;
Helmut64 0:c43b6919ae15 263 if (DEBUG_MESSAGE)
Helmut64 0:c43b6919ae15 264 dprintf("> OnTxDone");
Helmut64 0:c43b6919ae15 265 }
Helmut64 0:c43b6919ae15 266
bcostm 11:9d7409ebfa57 267 void OnRxDone(void *radio, void *userThisPtr, void *userData, uint8_t *payload, uint16_t size, int16_t rssi, int8_t snr)
Helmut64 0:c43b6919ae15 268 {
Helmut64 0:c43b6919ae15 269 Radio->Sleep( );
Helmut64 0:c43b6919ae15 270 BufferSize = size;
Helmut64 0:c43b6919ae15 271 memcpy( Buffer, payload, BufferSize );
Helmut64 0:c43b6919ae15 272 State = RX;
Helmut64 0:c43b6919ae15 273 if (DEBUG_MESSAGE)
Helmut64 0:c43b6919ae15 274 dprintf("> OnRxDone: RssiValue=%d dBm, SnrValue=%d", rssi, snr);
Helmut64 0:c43b6919ae15 275 dump("Data:", payload, size);
Helmut64 0:c43b6919ae15 276 }
Helmut64 0:c43b6919ae15 277
bcostm 11:9d7409ebfa57 278 void OnTxTimeout(void *radio, void *userThisPtr, void *userData)
Helmut64 0:c43b6919ae15 279 {
Helmut64 0:c43b6919ae15 280 *led3 = 0;
Helmut64 0:c43b6919ae15 281 Radio->Sleep( );
Helmut64 0:c43b6919ae15 282 State = TX_TIMEOUT;
Helmut64 0:c43b6919ae15 283 if(DEBUG_MESSAGE)
Helmut64 0:c43b6919ae15 284 dprintf("> OnTxTimeout");
Helmut64 0:c43b6919ae15 285 }
Helmut64 0:c43b6919ae15 286
bcostm 11:9d7409ebfa57 287 void OnRxTimeout(void *radio, void *userThisPtr, void *userData)
Helmut64 0:c43b6919ae15 288 {
Helmut64 0:c43b6919ae15 289 *led3 = 0;
Helmut64 0:c43b6919ae15 290 Radio->Sleep( );
Helmut64 0:c43b6919ae15 291 Buffer[BufferSize-1] = 0;
Helmut64 0:c43b6919ae15 292 State = RX_TIMEOUT;
Helmut64 0:c43b6919ae15 293 if (DEBUG_MESSAGE)
Helmut64 0:c43b6919ae15 294 dprintf("> OnRxTimeout");
Helmut64 0:c43b6919ae15 295 }
Helmut64 0:c43b6919ae15 296
bcostm 11:9d7409ebfa57 297 void OnRxError(void *radio, void *userThisPtr, void *userData)
Helmut64 0:c43b6919ae15 298 {
Helmut64 0:c43b6919ae15 299 Radio->Sleep( );
Helmut64 0:c43b6919ae15 300 State = RX_ERROR;
Helmut64 0:c43b6919ae15 301 if (DEBUG_MESSAGE)
Helmut64 0:c43b6919ae15 302 dprintf("> OnRxError");
Helmut64 0:c43b6919ae15 303 }
Helmut64 0:c43b6919ae15 304
Helmut64 0:c43b6919ae15 305 #endif