Add support for Nucleo-F446RE

Dependencies:   mbed

Committer:
GregCr
Date:
Wed Feb 17 09:17:46 2016 +0000
Revision:
13:edb9b443c1dd
Parent:
10:7af820d1e1df
Child:
14:c7251480feb9
First Release

Who changed what in which revision?

UserRevisionLine numberNew contents of line
GregCr 0:1ed39951ab7b 1 #include "mbed.h"
GregCr 4:5ece30264cd9 2 #include "main.h"
GregCr 13:edb9b443c1dd 3 #include "sx1272-hal.h"
GregCr 8:f956dee63a56 4 #include "debug.h"
GregCr 0:1ed39951ab7b 5
GregCr 0:1ed39951ab7b 6 /* Set this flag to '1' to display debug messages on the console */
GregCr 13:edb9b443c1dd 7 #define DEBUG_MESSAGE 1
GregCr 0:1ed39951ab7b 8
GregCr 0:1ed39951ab7b 9 /* Set this flag to '1' to use the LoRa modulation or to '0' to use FSK modulation */
GregCr 5:f2431c4fe3bb 10 #define USE_MODEM_LORA 1
GregCr 0:1ed39951ab7b 11 #define USE_MODEM_FSK !USE_MODEM_LORA
GregCr 0:1ed39951ab7b 12
GregCr 5:f2431c4fe3bb 13 #define RF_FREQUENCY 868000000 // Hz
GregCr 0:1ed39951ab7b 14 #define TX_OUTPUT_POWER 14 // 14 dBm
GregCr 0:1ed39951ab7b 15
GregCr 0:1ed39951ab7b 16 #if USE_MODEM_LORA == 1
GregCr 0:1ed39951ab7b 17
GregCr 1:126d70d374f6 18 #define LORA_BANDWIDTH 2 // [0: 125 kHz,
GregCr 0:1ed39951ab7b 19 // 1: 250 kHz,
GregCr 0:1ed39951ab7b 20 // 2: 500 kHz,
GregCr 0:1ed39951ab7b 21 // 3: Reserved]
GregCr 0:1ed39951ab7b 22 #define LORA_SPREADING_FACTOR 7 // [SF7..SF12]
GregCr 0:1ed39951ab7b 23 #define LORA_CODINGRATE 1 // [1: 4/5,
GregCr 0:1ed39951ab7b 24 // 2: 4/6,
GregCr 0:1ed39951ab7b 25 // 3: 4/7,
GregCr 0:1ed39951ab7b 26 // 4: 4/8]
GregCr 0:1ed39951ab7b 27 #define LORA_PREAMBLE_LENGTH 8 // Same for Tx and Rx
GregCr 0:1ed39951ab7b 28 #define LORA_SYMBOL_TIMEOUT 5 // Symbols
GregCr 0:1ed39951ab7b 29 #define LORA_FIX_LENGTH_PAYLOAD_ON false
GregCr 3:8b9e2a4df4b5 30 #define LORA_FHSS_ENABLED false
GregCr 3:8b9e2a4df4b5 31 #define LORA_NB_SYMB_HOP 4
GregCr 0:1ed39951ab7b 32 #define LORA_IQ_INVERSION_ON false
GregCr 3:8b9e2a4df4b5 33 #define LORA_CRC_ENABLED true
GregCr 3:8b9e2a4df4b5 34
GregCr 0:1ed39951ab7b 35 #elif USE_MODEM_FSK == 1
GregCr 0:1ed39951ab7b 36
GregCr 2:59e108728d71 37 #define FSK_FDEV 25000 // Hz
GregCr 2:59e108728d71 38 #define FSK_DATARATE 19200 // bps
GregCr 2:59e108728d71 39 #define FSK_BANDWIDTH 50000 // Hz
GregCr 2:59e108728d71 40 #define FSK_AFC_BANDWIDTH 83333 // Hz
GregCr 0:1ed39951ab7b 41 #define FSK_PREAMBLE_LENGTH 5 // Same for Tx and Rx
GregCr 0:1ed39951ab7b 42 #define FSK_FIX_LENGTH_PAYLOAD_ON false
GregCr 3:8b9e2a4df4b5 43 #define FSK_CRC_ENABLED true
GregCr 3:8b9e2a4df4b5 44
GregCr 0:1ed39951ab7b 45 #else
GregCr 0:1ed39951ab7b 46 #error "Please define a modem in the compiler options."
GregCr 0:1ed39951ab7b 47 #endif
GregCr 0:1ed39951ab7b 48
GregCr 7:c1bbd6c56979 49 #define RX_TIMEOUT_VALUE 3500000 // in us
GregCr 0:1ed39951ab7b 50 #define BUFFER_SIZE 32 // Define the payload size here
GregCr 0:1ed39951ab7b 51
GregCr 8:f956dee63a56 52 #if( defined ( TARGET_KL25Z ) || defined ( TARGET_LPC11U6X ) )
GregCr 3:8b9e2a4df4b5 53 DigitalOut led(LED2);
GregCr 3:8b9e2a4df4b5 54 #else
GregCr 3:8b9e2a4df4b5 55 DigitalOut led(LED1);
GregCr 3:8b9e2a4df4b5 56 #endif
GregCr 3:8b9e2a4df4b5 57
GregCr 0:1ed39951ab7b 58 /*
GregCr 0:1ed39951ab7b 59 * Global variables declarations
GregCr 0:1ed39951ab7b 60 */
mluis 10:7af820d1e1df 61 typedef enum
mluis 10:7af820d1e1df 62 {
mluis 10:7af820d1e1df 63 LOWPOWER = 0,
mluis 10:7af820d1e1df 64 IDLE,
mluis 10:7af820d1e1df 65
mluis 10:7af820d1e1df 66 RX,
mluis 10:7af820d1e1df 67 RX_TIMEOUT,
mluis 10:7af820d1e1df 68 RX_ERROR,
mluis 10:7af820d1e1df 69
mluis 10:7af820d1e1df 70 TX,
mluis 10:7af820d1e1df 71 TX_TIMEOUT,
mluis 10:7af820d1e1df 72
mluis 10:7af820d1e1df 73 CAD,
mluis 10:7af820d1e1df 74 CAD_DONE
mluis 10:7af820d1e1df 75 }AppStates_t;
GregCr 0:1ed39951ab7b 76
mluis 10:7af820d1e1df 77 volatile AppStates_t State = LOWPOWER;
mluis 10:7af820d1e1df 78
mluis 10:7af820d1e1df 79 /*!
mluis 10:7af820d1e1df 80 * Radio events function pointer
mluis 10:7af820d1e1df 81 */
mluis 10:7af820d1e1df 82 static RadioEvents_t RadioEvents;
mluis 10:7af820d1e1df 83
mluis 10:7af820d1e1df 84 /*
mluis 10:7af820d1e1df 85 * Global variables declarations
mluis 10:7af820d1e1df 86 */
GregCr 13:edb9b443c1dd 87 SX1272MB2xAS Radio( NULL );
GregCr 0:1ed39951ab7b 88
GregCr 0:1ed39951ab7b 89 const uint8_t PingMsg[] = "PING";
GregCr 0:1ed39951ab7b 90 const uint8_t PongMsg[] = "PONG";
GregCr 0:1ed39951ab7b 91
GregCr 0:1ed39951ab7b 92 uint16_t BufferSize = BUFFER_SIZE;
GregCr 0:1ed39951ab7b 93 uint8_t Buffer[BUFFER_SIZE];
GregCr 0:1ed39951ab7b 94
GregCr 5:f2431c4fe3bb 95 int16_t RssiValue = 0.0;
GregCr 5:f2431c4fe3bb 96 int8_t SnrValue = 0.0;
GregCr 0:1ed39951ab7b 97
GregCr 0:1ed39951ab7b 98 int main()
GregCr 0:1ed39951ab7b 99 {
GregCr 0:1ed39951ab7b 100 uint8_t i;
GregCr 0:1ed39951ab7b 101 bool isMaster = true;
GregCr 0:1ed39951ab7b 102
GregCr 13:edb9b443c1dd 103 debug( "\n\n\r SX1272 Ping Pong Demo Application \n\n\r" );
mluis 10:7af820d1e1df 104
mluis 10:7af820d1e1df 105 // Initialize Radio driver
mluis 10:7af820d1e1df 106 RadioEvents.TxDone = OnTxDone;
mluis 10:7af820d1e1df 107 RadioEvents.RxDone = OnRxDone;
mluis 10:7af820d1e1df 108 RadioEvents.RxError = OnRxError;
mluis 10:7af820d1e1df 109 RadioEvents.TxTimeout = OnTxTimeout;
mluis 10:7af820d1e1df 110 RadioEvents.RxTimeout = OnRxTimeout;
mluis 10:7af820d1e1df 111 Radio.Init( &RadioEvents );
GregCr 0:1ed39951ab7b 112
GregCr 7:c1bbd6c56979 113 // verify the connection with the board
GregCr 7:c1bbd6c56979 114 while( Radio.Read( REG_VERSION ) == 0x00 )
GregCr 2:59e108728d71 115 {
GregCr 7:c1bbd6c56979 116 debug( "Radio could not be detected!\n\r", NULL );
GregCr 7:c1bbd6c56979 117 wait( 1 );
GregCr 2:59e108728d71 118 }
GregCr 7:c1bbd6c56979 119
GregCr 13:edb9b443c1dd 120 debug_if( ( DEBUG_MESSAGE & ( Radio.DetectBoardType( ) == SX1272MB2XAS ) ) , "\n\r > Board Type: SX1272MB2xAS < \n\r" );
GregCr 13:edb9b443c1dd 121
GregCr 0:1ed39951ab7b 122 Radio.SetChannel( RF_FREQUENCY );
GregCr 0:1ed39951ab7b 123
GregCr 0:1ed39951ab7b 124 #if USE_MODEM_LORA == 1
GregCr 3:8b9e2a4df4b5 125
GregCr 7:c1bbd6c56979 126 debug_if( LORA_FHSS_ENABLED, "\n\n\r > LORA FHSS Mode < \n\n\r");
GregCr 7:c1bbd6c56979 127 debug_if( !LORA_FHSS_ENABLED, "\n\n\r > LORA Mode < \n\n\r");
GregCr 7:c1bbd6c56979 128
GregCr 0:1ed39951ab7b 129 Radio.SetTxConfig( MODEM_LORA, TX_OUTPUT_POWER, 0, LORA_BANDWIDTH,
GregCr 0:1ed39951ab7b 130 LORA_SPREADING_FACTOR, LORA_CODINGRATE,
GregCr 0:1ed39951ab7b 131 LORA_PREAMBLE_LENGTH, LORA_FIX_LENGTH_PAYLOAD_ON,
GregCr 3:8b9e2a4df4b5 132 LORA_CRC_ENABLED, LORA_FHSS_ENABLED, LORA_NB_SYMB_HOP,
GregCr 7:c1bbd6c56979 133 LORA_IQ_INVERSION_ON, 2000000 );
GregCr 0:1ed39951ab7b 134
GregCr 0:1ed39951ab7b 135 Radio.SetRxConfig( MODEM_LORA, LORA_BANDWIDTH, LORA_SPREADING_FACTOR,
GregCr 0:1ed39951ab7b 136 LORA_CODINGRATE, 0, LORA_PREAMBLE_LENGTH,
mluis 9:e764990e45df 137 LORA_SYMBOL_TIMEOUT, LORA_FIX_LENGTH_PAYLOAD_ON, 0,
GregCr 3:8b9e2a4df4b5 138 LORA_CRC_ENABLED, LORA_FHSS_ENABLED, LORA_NB_SYMB_HOP,
GregCr 3:8b9e2a4df4b5 139 LORA_IQ_INVERSION_ON, true );
GregCr 0:1ed39951ab7b 140
GregCr 0:1ed39951ab7b 141 #elif USE_MODEM_FSK == 1
GregCr 0:1ed39951ab7b 142
GregCr 7:c1bbd6c56979 143 debug("\n\n\r > FSK Mode < \n\n\r");
GregCr 0:1ed39951ab7b 144 Radio.SetTxConfig( MODEM_FSK, TX_OUTPUT_POWER, FSK_FDEV, 0,
GregCr 0:1ed39951ab7b 145 FSK_DATARATE, 0,
GregCr 0:1ed39951ab7b 146 FSK_PREAMBLE_LENGTH, FSK_FIX_LENGTH_PAYLOAD_ON,
GregCr 7:c1bbd6c56979 147 FSK_CRC_ENABLED, 0, 0, 0, 2000000 );
GregCr 0:1ed39951ab7b 148
GregCr 0:1ed39951ab7b 149 Radio.SetRxConfig( MODEM_FSK, FSK_BANDWIDTH, FSK_DATARATE,
GregCr 0:1ed39951ab7b 150 0, FSK_AFC_BANDWIDTH, FSK_PREAMBLE_LENGTH,
mluis 9:e764990e45df 151 0, FSK_FIX_LENGTH_PAYLOAD_ON, 0, FSK_CRC_ENABLED,
GregCr 3:8b9e2a4df4b5 152 0, 0, false, true );
GregCr 0:1ed39951ab7b 153
GregCr 0:1ed39951ab7b 154 #else
GregCr 0:1ed39951ab7b 155
GregCr 0:1ed39951ab7b 156 #error "Please define a modem in the compiler options."
GregCr 0:1ed39951ab7b 157
GregCr 0:1ed39951ab7b 158 #endif
GregCr 1:126d70d374f6 159
GregCr 7:c1bbd6c56979 160 debug_if( DEBUG_MESSAGE, "Starting Ping-Pong loop\r\n" );
GregCr 0:1ed39951ab7b 161
GregCr 3:8b9e2a4df4b5 162 led = 0;
GregCr 3:8b9e2a4df4b5 163
GregCr 0:1ed39951ab7b 164 Radio.Rx( RX_TIMEOUT_VALUE );
GregCr 0:1ed39951ab7b 165
GregCr 0:1ed39951ab7b 166 while( 1 )
GregCr 0:1ed39951ab7b 167 {
GregCr 0:1ed39951ab7b 168 switch( State )
GregCr 0:1ed39951ab7b 169 {
GregCr 0:1ed39951ab7b 170 case RX:
GregCr 0:1ed39951ab7b 171 if( isMaster == true )
GregCr 0:1ed39951ab7b 172 {
GregCr 0:1ed39951ab7b 173 if( BufferSize > 0 )
GregCr 0:1ed39951ab7b 174 {
GregCr 0:1ed39951ab7b 175 if( strncmp( ( const char* )Buffer, ( const char* )PongMsg, 4 ) == 0 )
GregCr 0:1ed39951ab7b 176 {
GregCr 3:8b9e2a4df4b5 177 led = !led;
GregCr 2:59e108728d71 178 debug( "...Pong\r\n" );
GregCr 0:1ed39951ab7b 179 // Send the next PING frame
GregCr 7:c1bbd6c56979 180 strcpy( ( char* )Buffer, ( char* )PingMsg );
GregCr 0:1ed39951ab7b 181 // We fill the buffer with numbers for the payload
GregCr 0:1ed39951ab7b 182 for( i = 4; i < BufferSize; i++ )
GregCr 0:1ed39951ab7b 183 {
GregCr 0:1ed39951ab7b 184 Buffer[i] = i - 4;
GregCr 0:1ed39951ab7b 185 }
GregCr 0:1ed39951ab7b 186 wait_ms( 10 );
GregCr 0:1ed39951ab7b 187 Radio.Send( Buffer, BufferSize );
GregCr 0:1ed39951ab7b 188 }
GregCr 2:59e108728d71 189 else if( strncmp( ( const char* )Buffer, ( const char* )PingMsg, 4 ) == 0 )
GregCr 0:1ed39951ab7b 190 { // A master already exists then become a slave
GregCr 2:59e108728d71 191 debug( "...Ping\r\n" );
GregCr 3:8b9e2a4df4b5 192 led = !led;
GregCr 0:1ed39951ab7b 193 isMaster = false;
GregCr 7:c1bbd6c56979 194 // Send the next PONG frame
GregCr 7:c1bbd6c56979 195 strcpy( ( char* )Buffer, ( char* )PongMsg );
GregCr 2:59e108728d71 196 // We fill the buffer with numbers for the payload
GregCr 2:59e108728d71 197 for( i = 4; i < BufferSize; i++ )
GregCr 2:59e108728d71 198 {
GregCr 2:59e108728d71 199 Buffer[i] = i - 4;
GregCr 2:59e108728d71 200 }
GregCr 3:8b9e2a4df4b5 201 wait_ms( 10 );
GregCr 2:59e108728d71 202 Radio.Send( Buffer, BufferSize );
GregCr 2:59e108728d71 203 }
GregCr 2:59e108728d71 204 else // valid reception but neither a PING or a PONG message
GregCr 2:59e108728d71 205 { // Set device as master ans start again
GregCr 2:59e108728d71 206 isMaster = true;
GregCr 0:1ed39951ab7b 207 Radio.Rx( RX_TIMEOUT_VALUE );
GregCr 2:59e108728d71 208 }
GregCr 0:1ed39951ab7b 209 }
GregCr 0:1ed39951ab7b 210 }
GregCr 0:1ed39951ab7b 211 else
GregCr 0:1ed39951ab7b 212 {
GregCr 0:1ed39951ab7b 213 if( BufferSize > 0 )
GregCr 0:1ed39951ab7b 214 {
GregCr 0:1ed39951ab7b 215 if( strncmp( ( const char* )Buffer, ( const char* )PingMsg, 4 ) == 0 )
GregCr 0:1ed39951ab7b 216 {
GregCr 3:8b9e2a4df4b5 217 led = !led;
GregCr 2:59e108728d71 218 debug( "...Ping\r\n" );
GregCr 2:59e108728d71 219 // Send the reply to the PING string
GregCr 7:c1bbd6c56979 220 strcpy( ( char* )Buffer, ( char* )PongMsg );
GregCr 0:1ed39951ab7b 221 // We fill the buffer with numbers for the payload
GregCr 0:1ed39951ab7b 222 for( i = 4; i < BufferSize; i++ )
GregCr 0:1ed39951ab7b 223 {
GregCr 0:1ed39951ab7b 224 Buffer[i] = i - 4;
GregCr 0:1ed39951ab7b 225 }
GregCr 0:1ed39951ab7b 226 wait_ms( 10 );
GregCr 0:1ed39951ab7b 227 Radio.Send( Buffer, BufferSize );
GregCr 0:1ed39951ab7b 228 }
GregCr 2:59e108728d71 229 else // valid reception but not a PING as expected
GregCr 2:59e108728d71 230 { // Set device as master and start again
GregCr 2:59e108728d71 231 isMaster = true;
GregCr 2:59e108728d71 232 Radio.Rx( RX_TIMEOUT_VALUE );
GregCr 2:59e108728d71 233 }
GregCr 0:1ed39951ab7b 234 }
GregCr 0:1ed39951ab7b 235 }
GregCr 0:1ed39951ab7b 236 State = LOWPOWER;
GregCr 0:1ed39951ab7b 237 break;
GregCr 3:8b9e2a4df4b5 238 case TX:
GregCr 3:8b9e2a4df4b5 239 led = !led;
GregCr 2:59e108728d71 240 if( isMaster == true )
GregCr 0:1ed39951ab7b 241 {
GregCr 2:59e108728d71 242 debug( "Ping...\r\n" );
GregCr 0:1ed39951ab7b 243 }
GregCr 0:1ed39951ab7b 244 else
GregCr 0:1ed39951ab7b 245 {
GregCr 2:59e108728d71 246 debug( "Pong...\r\n" );
GregCr 0:1ed39951ab7b 247 }
GregCr 0:1ed39951ab7b 248 Radio.Rx( RX_TIMEOUT_VALUE );
GregCr 0:1ed39951ab7b 249 State = LOWPOWER;
GregCr 0:1ed39951ab7b 250 break;
GregCr 0:1ed39951ab7b 251 case RX_TIMEOUT:
GregCr 0:1ed39951ab7b 252 if( isMaster == true )
GregCr 0:1ed39951ab7b 253 {
GregCr 0:1ed39951ab7b 254 // Send the next PING frame
GregCr 7:c1bbd6c56979 255 strcpy( ( char* )Buffer, ( char* )PingMsg );
GregCr 0:1ed39951ab7b 256 for( i = 4; i < BufferSize; i++ )
GregCr 0:1ed39951ab7b 257 {
GregCr 0:1ed39951ab7b 258 Buffer[i] = i - 4;
GregCr 0:1ed39951ab7b 259 }
GregCr 0:1ed39951ab7b 260 wait_ms( 10 );
GregCr 0:1ed39951ab7b 261 Radio.Send( Buffer, BufferSize );
GregCr 0:1ed39951ab7b 262 }
GregCr 0:1ed39951ab7b 263 else
GregCr 0:1ed39951ab7b 264 {
GregCr 0:1ed39951ab7b 265 Radio.Rx( RX_TIMEOUT_VALUE );
GregCr 0:1ed39951ab7b 266 }
GregCr 0:1ed39951ab7b 267 State = LOWPOWER;
GregCr 0:1ed39951ab7b 268 break;
GregCr 0:1ed39951ab7b 269 case RX_ERROR:
GregCr 7:c1bbd6c56979 270 // We have received a Packet with a CRC error, send reply as if packet was correct
GregCr 0:1ed39951ab7b 271 if( isMaster == true )
GregCr 0:1ed39951ab7b 272 {
GregCr 0:1ed39951ab7b 273 // Send the next PING frame
GregCr 7:c1bbd6c56979 274 strcpy( ( char* )Buffer, ( char* )PingMsg );
GregCr 0:1ed39951ab7b 275 for( i = 4; i < BufferSize; i++ )
GregCr 0:1ed39951ab7b 276 {
GregCr 0:1ed39951ab7b 277 Buffer[i] = i - 4;
GregCr 0:1ed39951ab7b 278 }
GregCr 0:1ed39951ab7b 279 wait_ms( 10 );
GregCr 0:1ed39951ab7b 280 Radio.Send( Buffer, BufferSize );
GregCr 0:1ed39951ab7b 281 }
GregCr 0:1ed39951ab7b 282 else
GregCr 0:1ed39951ab7b 283 {
GregCr 2:59e108728d71 284 // Send the next PONG frame
GregCr 7:c1bbd6c56979 285 strcpy( ( char* )Buffer, ( char* )PongMsg );
GregCr 2:59e108728d71 286 for( i = 4; i < BufferSize; i++ )
GregCr 2:59e108728d71 287 {
GregCr 2:59e108728d71 288 Buffer[i] = i - 4;
GregCr 2:59e108728d71 289 }
GregCr 2:59e108728d71 290 wait_ms( 10 );
GregCr 2:59e108728d71 291 Radio.Send( Buffer, BufferSize );
GregCr 0:1ed39951ab7b 292 }
GregCr 0:1ed39951ab7b 293 State = LOWPOWER;
GregCr 0:1ed39951ab7b 294 break;
GregCr 0:1ed39951ab7b 295 case TX_TIMEOUT:
GregCr 0:1ed39951ab7b 296 Radio.Rx( RX_TIMEOUT_VALUE );
GregCr 0:1ed39951ab7b 297 State = LOWPOWER;
GregCr 0:1ed39951ab7b 298 break;
GregCr 0:1ed39951ab7b 299 case LOWPOWER:
GregCr 0:1ed39951ab7b 300 break;
GregCr 0:1ed39951ab7b 301 default:
GregCr 0:1ed39951ab7b 302 State = LOWPOWER;
GregCr 0:1ed39951ab7b 303 break;
GregCr 0:1ed39951ab7b 304 }
GregCr 0:1ed39951ab7b 305 }
GregCr 0:1ed39951ab7b 306 }
GregCr 0:1ed39951ab7b 307
GregCr 0:1ed39951ab7b 308 void OnTxDone( void )
GregCr 0:1ed39951ab7b 309 {
GregCr 5:f2431c4fe3bb 310 Radio.Sleep( );
GregCr 0:1ed39951ab7b 311 State = TX;
GregCr 7:c1bbd6c56979 312 debug_if( DEBUG_MESSAGE, "> OnTxDone\n\r" );
GregCr 0:1ed39951ab7b 313 }
GregCr 0:1ed39951ab7b 314
GregCr 4:5ece30264cd9 315 void OnRxDone( uint8_t *payload, uint16_t size, int16_t rssi, int8_t snr)
GregCr 0:1ed39951ab7b 316 {
GregCr 0:1ed39951ab7b 317 Radio.Sleep( );
GregCr 0:1ed39951ab7b 318 BufferSize = size;
GregCr 0:1ed39951ab7b 319 memcpy( Buffer, payload, BufferSize );
GregCr 0:1ed39951ab7b 320 RssiValue = rssi;
GregCr 0:1ed39951ab7b 321 SnrValue = snr;
GregCr 0:1ed39951ab7b 322 State = RX;
GregCr 7:c1bbd6c56979 323 debug_if( DEBUG_MESSAGE, "> OnRxDone\n\r" );
GregCr 0:1ed39951ab7b 324 }
GregCr 0:1ed39951ab7b 325
GregCr 0:1ed39951ab7b 326 void OnTxTimeout( void )
GregCr 0:1ed39951ab7b 327 {
GregCr 0:1ed39951ab7b 328 Radio.Sleep( );
GregCr 0:1ed39951ab7b 329 State = TX_TIMEOUT;
GregCr 7:c1bbd6c56979 330 debug_if( DEBUG_MESSAGE, "> OnTxTimeout\n\r" );
GregCr 0:1ed39951ab7b 331 }
GregCr 0:1ed39951ab7b 332
GregCr 0:1ed39951ab7b 333 void OnRxTimeout( void )
GregCr 0:1ed39951ab7b 334 {
GregCr 0:1ed39951ab7b 335 Radio.Sleep( );
GregCr 1:126d70d374f6 336 Buffer[ BufferSize ] = 0;
GregCr 0:1ed39951ab7b 337 State = RX_TIMEOUT;
GregCr 7:c1bbd6c56979 338 debug_if( DEBUG_MESSAGE, "> OnRxTimeout\n\r" );
GregCr 0:1ed39951ab7b 339 }
GregCr 0:1ed39951ab7b 340
GregCr 0:1ed39951ab7b 341 void OnRxError( void )
GregCr 0:1ed39951ab7b 342 {
GregCr 0:1ed39951ab7b 343 Radio.Sleep( );
GregCr 0:1ed39951ab7b 344 State = RX_ERROR;
GregCr 7:c1bbd6c56979 345 debug_if( DEBUG_MESSAGE, "> OnRxError\n\r" );
GregCr 0:1ed39951ab7b 346 }
GregCr 3:8b9e2a4df4b5 347