UART to Console with NRF51DK board and InAir9 module

Dependencies:   BLE_API SX1272Lib mbed nRF51822

Fork of BLE_UARTConsole by Bluetooth Low Energy

Committer:
AMNoll
Date:
Mon Nov 13 23:16:56 2017 +0000
Revision:
10:12607a53d71d
to team

Who changed what in which revision?

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