JPEG compressor
Dependencies: SDL_lib SX1276Lib mbed
lora_tansc.h@2:f256eebcade8, 2017-01-11 (annotated)
- Committer:
- miruga27
- Date:
- Wed Jan 11 20:20:00 2017 +0000
- Revision:
- 2:f256eebcade8
- Parent:
- 1:f0c646dfe574
JPEG Compressor and SX1276 transmitter
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
miruga27 | 1:f0c646dfe574 | 1 | #include "mbed.h" |
miruga27 | 1:f0c646dfe574 | 2 | #include "lora2.h" |
miruga27 | 1:f0c646dfe574 | 3 | #include "sx1276-hal.h" |
miruga27 | 1:f0c646dfe574 | 4 | #include "debug.h" |
miruga27 | 2:f256eebcade8 | 5 | |
miruga27 | 1:f0c646dfe574 | 6 | /* Set this flag to '1' to display debug messages on the console */ |
miruga27 | 2:f256eebcade8 | 7 | #define DEBUG_MESSAGE 0 |
miruga27 | 2:f256eebcade8 | 8 | |
miruga27 | 1:f0c646dfe574 | 9 | /* Set this flag to '1' to use the LoRa modulation or to '0' to use FSK modulation */ |
miruga27 | 1:f0c646dfe574 | 10 | #define USE_MODEM_LORA 1 |
miruga27 | 1:f0c646dfe574 | 11 | #define USE_MODEM_FSK !USE_MODEM_LORA |
miruga27 | 2:f256eebcade8 | 12 | |
miruga27 | 2:f256eebcade8 | 13 | #define RF_FREQUENCY 868000000 // Hz |
miruga27 | 2:f256eebcade8 | 14 | #define TX_OUTPUT_POWER 20 // 14 dBm |
miruga27 | 2:f256eebcade8 | 15 | |
miruga27 | 1:f0c646dfe574 | 16 | #if USE_MODEM_LORA == 1 |
miruga27 | 2:f256eebcade8 | 17 | |
miruga27 | 2:f256eebcade8 | 18 | #define LORA_BANDWIDTH 2 // [0: 125 kHz, |
miruga27 | 1:f0c646dfe574 | 19 | // 1: 250 kHz, |
miruga27 | 1:f0c646dfe574 | 20 | // 2: 500 kHz, |
miruga27 | 1:f0c646dfe574 | 21 | // 3: Reserved] |
miruga27 | 2:f256eebcade8 | 22 | #define LORA_SPREADING_FACTOR 7 // [SF7..SF12] |
miruga27 | 1:f0c646dfe574 | 23 | #define LORA_CODINGRATE 1 // [1: 4/5, |
miruga27 | 1:f0c646dfe574 | 24 | // 2: 4/6, |
miruga27 | 1:f0c646dfe574 | 25 | // 3: 4/7, |
miruga27 | 1:f0c646dfe574 | 26 | // 4: 4/8] |
miruga27 | 1:f0c646dfe574 | 27 | #define LORA_PREAMBLE_LENGTH 8 // Same for Tx and Rx |
miruga27 | 1:f0c646dfe574 | 28 | #define LORA_SYMBOL_TIMEOUT 5 // Symbols |
miruga27 | 1:f0c646dfe574 | 29 | #define LORA_FIX_LENGTH_PAYLOAD_ON false |
miruga27 | 2:f256eebcade8 | 30 | #define LORA_FHSS_ENABLED false |
miruga27 | 1:f0c646dfe574 | 31 | #define LORA_NB_SYMB_HOP 4 |
miruga27 | 1:f0c646dfe574 | 32 | #define LORA_IQ_INVERSION_ON false |
miruga27 | 1:f0c646dfe574 | 33 | #define LORA_CRC_ENABLED true |
miruga27 | 1:f0c646dfe574 | 34 | |
miruga27 | 1:f0c646dfe574 | 35 | #elif USE_MODEM_FSK == 1 |
miruga27 | 2:f256eebcade8 | 36 | |
miruga27 | 1:f0c646dfe574 | 37 | #define FSK_FDEV 25000 // Hz |
miruga27 | 1:f0c646dfe574 | 38 | #define FSK_DATARATE 19200 // bps |
miruga27 | 1:f0c646dfe574 | 39 | #define FSK_BANDWIDTH 50000 // Hz |
miruga27 | 1:f0c646dfe574 | 40 | #define FSK_AFC_BANDWIDTH 83333 // Hz |
miruga27 | 1:f0c646dfe574 | 41 | #define FSK_PREAMBLE_LENGTH 5 // Same for Tx and Rx |
miruga27 | 1:f0c646dfe574 | 42 | #define FSK_FIX_LENGTH_PAYLOAD_ON false |
miruga27 | 1:f0c646dfe574 | 43 | #define FSK_CRC_ENABLED true |
miruga27 | 1:f0c646dfe574 | 44 | |
miruga27 | 1:f0c646dfe574 | 45 | #else |
miruga27 | 1:f0c646dfe574 | 46 | #error "Please define a modem in the compiler options." |
miruga27 | 1:f0c646dfe574 | 47 | #endif |
miruga27 | 2:f256eebcade8 | 48 | |
miruga27 | 2:f256eebcade8 | 49 | #define RX_TIMEOUT_VALUE 7500000 // in us |
miruga27 | 2:f256eebcade8 | 50 | #define BUFFER_SIZE 32 // Define the payload size here |
miruga27 | 2:f256eebcade8 | 51 | |
miruga27 | 1:f0c646dfe574 | 52 | #if( defined ( TARGET_KL25Z ) || defined ( TARGET_LPC11U6X ) ) |
miruga27 | 1:f0c646dfe574 | 53 | DigitalOut led(LED2); |
miruga27 | 1:f0c646dfe574 | 54 | #else |
miruga27 | 1:f0c646dfe574 | 55 | DigitalOut led(LED1); |
miruga27 | 1:f0c646dfe574 | 56 | #endif |
miruga27 | 2:f256eebcade8 | 57 | |
miruga27 | 1:f0c646dfe574 | 58 | /* |
miruga27 | 1:f0c646dfe574 | 59 | * Global variables declarations |
miruga27 | 1:f0c646dfe574 | 60 | */ |
miruga27 | 1:f0c646dfe574 | 61 | typedef enum |
miruga27 | 1:f0c646dfe574 | 62 | { |
miruga27 | 1:f0c646dfe574 | 63 | LOWPOWER = 0, |
miruga27 | 1:f0c646dfe574 | 64 | IDLE, |
miruga27 | 1:f0c646dfe574 | 65 | |
miruga27 | 1:f0c646dfe574 | 66 | RX, |
miruga27 | 1:f0c646dfe574 | 67 | RX_TIMEOUT, |
miruga27 | 1:f0c646dfe574 | 68 | RX_ERROR, |
miruga27 | 1:f0c646dfe574 | 69 | |
miruga27 | 1:f0c646dfe574 | 70 | TX, |
miruga27 | 1:f0c646dfe574 | 71 | TX_TIMEOUT, |
miruga27 | 1:f0c646dfe574 | 72 | |
miruga27 | 1:f0c646dfe574 | 73 | CAD, |
miruga27 | 1:f0c646dfe574 | 74 | CAD_DONE |
miruga27 | 1:f0c646dfe574 | 75 | }AppStates_t; |
miruga27 | 2:f256eebcade8 | 76 | |
miruga27 | 1:f0c646dfe574 | 77 | volatile AppStates_t State = LOWPOWER; |
miruga27 | 2:f256eebcade8 | 78 | |
miruga27 | 1:f0c646dfe574 | 79 | /*! |
miruga27 | 1:f0c646dfe574 | 80 | * Radio events function pointer |
miruga27 | 1:f0c646dfe574 | 81 | */ |
miruga27 | 1:f0c646dfe574 | 82 | static RadioEvents_t RadioEvents; |
miruga27 | 2:f256eebcade8 | 83 | |
miruga27 | 1:f0c646dfe574 | 84 | /* |
miruga27 | 1:f0c646dfe574 | 85 | * Global variables declarations |
miruga27 | 1:f0c646dfe574 | 86 | */ |
miruga27 | 1:f0c646dfe574 | 87 | SX1276MB1xAS Radio( NULL ); |
miruga27 | 2:f256eebcade8 | 88 | |
miruga27 | 1:f0c646dfe574 | 89 | const uint8_t PingMsg[] = "PING"; |
miruga27 | 1:f0c646dfe574 | 90 | const uint8_t PongMsg[] = "PONG"; |
miruga27 | 2:f256eebcade8 | 91 | |
miruga27 | 2:f256eebcade8 | 92 | |
miruga27 | 1:f0c646dfe574 | 93 | const uint8_t AckMsg[] = "ACK"; |
miruga27 | 1:f0c646dfe574 | 94 | const uint8_t EOPMsg[] = "EOP"; |
miruga27 | 1:f0c646dfe574 | 95 | const uint8_t RfSMsg[] = "RfS"; |
miruga27 | 2:f256eebcade8 | 96 | |
miruga27 | 2:f256eebcade8 | 97 | const uint8_t RfSY[] = "RfSy"; |
miruga27 | 2:f256eebcade8 | 98 | const uint8_t RfSU[] = "RfSu"; |
miruga27 | 2:f256eebcade8 | 99 | const uint8_t RfSV[] = "RfSv"; |
miruga27 | 2:f256eebcade8 | 100 | const uint8_t InitMsg[] = "INIT"; |
miruga27 | 2:f256eebcade8 | 101 | const uint8_t PaqMsg[] = "\t\n"; |
miruga27 | 2:f256eebcade8 | 102 | |
miruga27 | 1:f0c646dfe574 | 103 | int py=0,pu=0,pv=0,py2=0,pu2=0,pv2=0; |
miruga27 | 1:f0c646dfe574 | 104 | int py_ant=0,pu_ant=0,pv_ant=0; |
miruga27 | 1:f0c646dfe574 | 105 | int flag_y=0,flag_u=0,flag_v=0; |
miruga27 | 1:f0c646dfe574 | 106 | uint16_t BufferSize = BUFFER_SIZE; |
miruga27 | 1:f0c646dfe574 | 107 | uint8_t Buffer[BUFFER_SIZE]; |
miruga27 | 2:f256eebcade8 | 108 | int empezar=0; |
miruga27 | 1:f0c646dfe574 | 109 | //uint8_t Buffer2[4]; |
miruga27 | 2:f256eebcade8 | 110 | int init=0; |
miruga27 | 1:f0c646dfe574 | 111 | int16_t RssiValue = 0.0; |
miruga27 | 1:f0c646dfe574 | 112 | int8_t SnrValue = 0.0; |
miruga27 | 2:f256eebcade8 | 113 | short int init_packet=0; |
miruga27 | 2:f256eebcade8 | 114 | int start=0; |
miruga27 | 1:f0c646dfe574 | 115 | bool first_y=true,first_u=true,first_v=true; |
miruga27 | 2:f256eebcade8 | 116 | |
miruga27 | 2:f256eebcade8 | 117 | void lora(short int *temp1,short int index1,short int *temp2,short int index2,short int *temp3,short int index3) |
miruga27 | 1:f0c646dfe574 | 118 | { |
miruga27 | 1:f0c646dfe574 | 119 | uint8_t i; |
miruga27 | 2:f256eebcade8 | 120 | bool isMaster = true; |
miruga27 | 1:f0c646dfe574 | 121 | |
miruga27 | 1:f0c646dfe574 | 122 | |
miruga27 | 2:f256eebcade8 | 123 | // debug( "\n\n\r SX1276 JPEG Compressor Application \n\n\r" ); |
miruga27 | 2:f256eebcade8 | 124 | |
miruga27 | 1:f0c646dfe574 | 125 | // Initialize Radio driver |
miruga27 | 1:f0c646dfe574 | 126 | RadioEvents.TxDone = OnTxDone; |
miruga27 | 1:f0c646dfe574 | 127 | RadioEvents.RxDone = OnRxDone; |
miruga27 | 1:f0c646dfe574 | 128 | RadioEvents.RxError = OnRxError; |
miruga27 | 1:f0c646dfe574 | 129 | RadioEvents.TxTimeout = OnTxTimeout; |
miruga27 | 1:f0c646dfe574 | 130 | RadioEvents.RxTimeout = OnRxTimeout; |
miruga27 | 1:f0c646dfe574 | 131 | Radio.Init( &RadioEvents ); |
miruga27 | 1:f0c646dfe574 | 132 | |
miruga27 | 1:f0c646dfe574 | 133 | // verify the connection with the board |
miruga27 | 1:f0c646dfe574 | 134 | while( Radio.Read( REG_VERSION ) == 0x00 ) |
miruga27 | 1:f0c646dfe574 | 135 | { |
miruga27 | 2:f256eebcade8 | 136 | |
miruga27 | 2:f256eebcade8 | 137 | debug( "Radio could not be detected!\n\r", NULL ); |
miruga27 | 1:f0c646dfe574 | 138 | wait( 1 ); |
miruga27 | 1:f0c646dfe574 | 139 | } |
miruga27 | 2:f256eebcade8 | 140 | |
miruga27 | 1:f0c646dfe574 | 141 | //debug_if( ( DEBUG_MESSAGE & ( Radio.DetectBoardType( ) == SX1276MB1LAS ) ) , "\n\r > Board Type: SX1276MB1LAS < \n\r" ); |
miruga27 | 1:f0c646dfe574 | 142 | //debug_if( ( DEBUG_MESSAGE & ( Radio.DetectBoardType( ) == SX1276MB1MAS ) ) , "\n\r > Board Type: SX1276MB1MAS < \n\r" ); |
miruga27 | 1:f0c646dfe574 | 143 | |
miruga27 | 2:f256eebcade8 | 144 | Radio.SetChannel( RF_FREQUENCY ); |
miruga27 | 2:f256eebcade8 | 145 | |
miruga27 | 1:f0c646dfe574 | 146 | #if USE_MODEM_LORA == 1 |
miruga27 | 1:f0c646dfe574 | 147 | |
miruga27 | 2:f256eebcade8 | 148 | // debug_if( LORA_FHSS_ENABLED, "\n\n\r > LORA FHSS Mode < \n\n\r"); |
miruga27 | 1:f0c646dfe574 | 149 | //debug_if( !LORA_FHSS_ENABLED, "\n\n\r > LORA Mode < \n\n\r"); |
miruga27 | 2:f256eebcade8 | 150 | |
miruga27 | 1:f0c646dfe574 | 151 | Radio.SetTxConfig( MODEM_LORA, TX_OUTPUT_POWER, 0, LORA_BANDWIDTH, |
miruga27 | 1:f0c646dfe574 | 152 | LORA_SPREADING_FACTOR, LORA_CODINGRATE, |
miruga27 | 1:f0c646dfe574 | 153 | LORA_PREAMBLE_LENGTH, LORA_FIX_LENGTH_PAYLOAD_ON, |
miruga27 | 1:f0c646dfe574 | 154 | LORA_CRC_ENABLED, LORA_FHSS_ENABLED, LORA_NB_SYMB_HOP, |
miruga27 | 2:f256eebcade8 | 155 | LORA_IQ_INVERSION_ON, 2000000 ); |
miruga27 | 1:f0c646dfe574 | 156 | |
miruga27 | 1:f0c646dfe574 | 157 | Radio.SetRxConfig( MODEM_LORA, LORA_BANDWIDTH, LORA_SPREADING_FACTOR, |
miruga27 | 1:f0c646dfe574 | 158 | LORA_CODINGRATE, 0, LORA_PREAMBLE_LENGTH, |
miruga27 | 1:f0c646dfe574 | 159 | LORA_SYMBOL_TIMEOUT, LORA_FIX_LENGTH_PAYLOAD_ON, 0, |
miruga27 | 1:f0c646dfe574 | 160 | LORA_CRC_ENABLED, LORA_FHSS_ENABLED, LORA_NB_SYMB_HOP, |
miruga27 | 1:f0c646dfe574 | 161 | LORA_IQ_INVERSION_ON, true ); |
miruga27 | 1:f0c646dfe574 | 162 | |
miruga27 | 1:f0c646dfe574 | 163 | #elif USE_MODEM_FSK == 1 |
miruga27 | 2:f256eebcade8 | 164 | |
miruga27 | 1:f0c646dfe574 | 165 | debug("\n\n\r > FSK Mode < \n\n\r"); |
miruga27 | 1:f0c646dfe574 | 166 | Radio.SetTxConfig( MODEM_FSK, TX_OUTPUT_POWER, FSK_FDEV, 0, |
miruga27 | 1:f0c646dfe574 | 167 | FSK_DATARATE, 0, |
miruga27 | 1:f0c646dfe574 | 168 | FSK_PREAMBLE_LENGTH, FSK_FIX_LENGTH_PAYLOAD_ON, |
miruga27 | 2:f256eebcade8 | 169 | FSK_CRC_ENABLED, 0, 0, 0, 2000000 ); |
miruga27 | 1:f0c646dfe574 | 170 | |
miruga27 | 1:f0c646dfe574 | 171 | Radio.SetRxConfig( MODEM_FSK, FSK_BANDWIDTH, FSK_DATARATE, |
miruga27 | 1:f0c646dfe574 | 172 | 0, FSK_AFC_BANDWIDTH, FSK_PREAMBLE_LENGTH, |
miruga27 | 1:f0c646dfe574 | 173 | 0, FSK_FIX_LENGTH_PAYLOAD_ON, 0, FSK_CRC_ENABLED, |
miruga27 | 1:f0c646dfe574 | 174 | 0, 0, false, true ); |
miruga27 | 1:f0c646dfe574 | 175 | |
miruga27 | 1:f0c646dfe574 | 176 | #else |
miruga27 | 2:f256eebcade8 | 177 | |
miruga27 | 1:f0c646dfe574 | 178 | #error "Please define a modem in the compiler options." |
miruga27 | 2:f256eebcade8 | 179 | |
miruga27 | 1:f0c646dfe574 | 180 | #endif |
miruga27 | 2:f256eebcade8 | 181 | |
miruga27 | 2:f256eebcade8 | 182 | //debug_if( DEBUG_MESSAGE, "Starting Ping-Pong loop\r\n" ); |
miruga27 | 1:f0c646dfe574 | 183 | |
miruga27 | 1:f0c646dfe574 | 184 | led = 0; |
miruga27 | 2:f256eebcade8 | 185 | flag_y=0,flag_u=0,flag_v=0; |
miruga27 | 2:f256eebcade8 | 186 | first_y=true,first_u=true,first_v=true; |
miruga27 | 2:f256eebcade8 | 187 | |
miruga27 | 2:f256eebcade8 | 188 | int finish=0,start=0; |
miruga27 | 1:f0c646dfe574 | 189 | Radio.Rx( RX_TIMEOUT_VALUE ); |
miruga27 | 2:f256eebcade8 | 190 | |
miruga27 | 1:f0c646dfe574 | 191 | while( 1 ) |
miruga27 | 1:f0c646dfe574 | 192 | { |
miruga27 | 1:f0c646dfe574 | 193 | switch( State ) |
miruga27 | 1:f0c646dfe574 | 194 | { |
miruga27 | 1:f0c646dfe574 | 195 | case RX: |
miruga27 | 1:f0c646dfe574 | 196 | if( isMaster == true ) |
miruga27 | 1:f0c646dfe574 | 197 | { |
miruga27 | 1:f0c646dfe574 | 198 | if( BufferSize > 0 ) |
miruga27 | 1:f0c646dfe574 | 199 | { |
miruga27 | 1:f0c646dfe574 | 200 | |
miruga27 | 2:f256eebcade8 | 201 | if( strncmp( ( const char* )Buffer, ( const char* )AckMsg, 3 ) == 0 ) |
miruga27 | 1:f0c646dfe574 | 202 | { |
miruga27 | 1:f0c646dfe574 | 203 | led = !led; |
miruga27 | 2:f256eebcade8 | 204 | // debug( "...Ack RX\r\n" ); |
miruga27 | 2:f256eebcade8 | 205 | |
miruga27 | 2:f256eebcade8 | 206 | Buffer[0]='\t'; |
miruga27 | 2:f256eebcade8 | 207 | Buffer[1]='\n'; |
miruga27 | 2:f256eebcade8 | 208 | //index1=22;index2=25;index3=25; |
miruga27 | 2:f256eebcade8 | 209 | int pointer=0; |
miruga27 | 2:f256eebcade8 | 210 | py_ant=py;pu_ant=pu;pv_ant=pv; |
miruga27 | 2:f256eebcade8 | 211 | for(pointer=2;pointer<BufferSize;pointer+=2){ |
miruga27 | 2:f256eebcade8 | 212 | |
miruga27 | 2:f256eebcade8 | 213 | if(flag_y==0) {//se comprueba si se ha cargado en el buffer de transmisión cada una de las componentes |
miruga27 | 2:f256eebcade8 | 214 | if(first_y == true) {//en primer lugar se manda la longitud de la componente y u v |
miruga27 | 2:f256eebcade8 | 215 | Buffer[pointer]=index1&0xff;//Se carga la parte baja del short int y en el siguiente byte se carga la parte alta. |
miruga27 | 2:f256eebcade8 | 216 | Buffer[pointer+1]=(index1>>8)&0xff; |
miruga27 | 2:f256eebcade8 | 217 | // debug("%c %c \r\n",Buffer[pointer],Buffer[pointer+1]); |
miruga27 | 2:f256eebcade8 | 218 | first_y = false; |
miruga27 | 2:f256eebcade8 | 219 | // debug( "transmitting y length...\r\n" ); |
miruga27 | 2:f256eebcade8 | 220 | // debug( " %u %u ...\r\n",Buffer[pointer],Buffer[pointer+1]); |
miruga27 | 2:f256eebcade8 | 221 | } |
miruga27 | 2:f256eebcade8 | 222 | else{ |
miruga27 | 2:f256eebcade8 | 223 | // debug( "py= %i..\r\n",py ); |
miruga27 | 2:f256eebcade8 | 224 | Buffer[pointer]=*(temp1+py) & 0xff; |
miruga27 | 2:f256eebcade8 | 225 | |
miruga27 | 2:f256eebcade8 | 226 | Buffer[pointer+1]=(*(temp1+py)>>8) & 0xff; |
miruga27 | 2:f256eebcade8 | 227 | py++; |
miruga27 | 2:f256eebcade8 | 228 | // debug( "transmitting y data %i..\r\n",py ); |
miruga27 | 2:f256eebcade8 | 229 | if(py >= index1) { |
miruga27 | 2:f256eebcade8 | 230 | // debug( "py final = %i...\r\n",py ); |
miruga27 | 2:f256eebcade8 | 231 | flag_y=1; |
miruga27 | 2:f256eebcade8 | 232 | |
miruga27 | 2:f256eebcade8 | 233 | break; |
miruga27 | 2:f256eebcade8 | 234 | |
miruga27 | 2:f256eebcade8 | 235 | } |
miruga27 | 2:f256eebcade8 | 236 | } |
miruga27 | 2:f256eebcade8 | 237 | } |
miruga27 | 2:f256eebcade8 | 238 | else if(flag_u==0){ |
miruga27 | 2:f256eebcade8 | 239 | if(first_u == true) { |
miruga27 | 2:f256eebcade8 | 240 | // debug( "pu= %i..\r\n",pu ); |
miruga27 | 2:f256eebcade8 | 241 | Buffer[pointer]=index2&0xff; |
miruga27 | 2:f256eebcade8 | 242 | Buffer[pointer+1]=(index2>>8)&0xff; |
miruga27 | 2:f256eebcade8 | 243 | first_u = false; |
miruga27 | 2:f256eebcade8 | 244 | // debug( "transmitting u length...\r\n" ); |
miruga27 | 2:f256eebcade8 | 245 | // debug( " %u %u ...\r\n",Buffer[pointer],Buffer[pointer+1]); |
miruga27 | 2:f256eebcade8 | 246 | } |
miruga27 | 2:f256eebcade8 | 247 | else{ |
miruga27 | 2:f256eebcade8 | 248 | |
miruga27 | 2:f256eebcade8 | 249 | Buffer[pointer]=*(temp2+pu) & 0xff; |
miruga27 | 2:f256eebcade8 | 250 | Buffer[pointer+1]=(*(temp2+pu)>>8) & 0xff; |
miruga27 | 2:f256eebcade8 | 251 | pu++; |
miruga27 | 2:f256eebcade8 | 252 | // debug( "transmitting u data...\r\n" ); |
miruga27 | 2:f256eebcade8 | 253 | if(pu>= index2) { |
miruga27 | 2:f256eebcade8 | 254 | flag_u=1; |
miruga27 | 2:f256eebcade8 | 255 | |
miruga27 | 2:f256eebcade8 | 256 | break; |
miruga27 | 2:f256eebcade8 | 257 | } |
miruga27 | 2:f256eebcade8 | 258 | } |
miruga27 | 2:f256eebcade8 | 259 | } |
miruga27 | 2:f256eebcade8 | 260 | |
miruga27 | 2:f256eebcade8 | 261 | else{ |
miruga27 | 2:f256eebcade8 | 262 | if(first_v == true) { |
miruga27 | 2:f256eebcade8 | 263 | Buffer[pointer]=index3&0xff; |
miruga27 | 2:f256eebcade8 | 264 | Buffer[pointer+1]=(index3>>8)&0xff; |
miruga27 | 2:f256eebcade8 | 265 | first_v = false; |
miruga27 | 2:f256eebcade8 | 266 | // debug( "transmitting v length...\r\n" ); |
miruga27 | 2:f256eebcade8 | 267 | // debug( " %u %u ...\r\n",Buffer[pointer],Buffer[pointer+1]); |
miruga27 | 2:f256eebcade8 | 268 | } |
miruga27 | 2:f256eebcade8 | 269 | else{ |
miruga27 | 2:f256eebcade8 | 270 | // debug( "pv= %i..\r\n",pv ); |
miruga27 | 2:f256eebcade8 | 271 | Buffer[pointer]=*(temp3+pv) & 0xff; |
miruga27 | 2:f256eebcade8 | 272 | Buffer[pointer+1]=(*(temp3+pv)>>8) & 0xff; |
miruga27 | 2:f256eebcade8 | 273 | pv++; |
miruga27 | 2:f256eebcade8 | 274 | // debug( "transmitting v data ...\r\n" ); |
miruga27 | 2:f256eebcade8 | 275 | if(pv >= index3) { |
miruga27 | 2:f256eebcade8 | 276 | flag_v=1; |
miruga27 | 2:f256eebcade8 | 277 | |
miruga27 | 2:f256eebcade8 | 278 | break; |
miruga27 | 2:f256eebcade8 | 279 | } |
miruga27 | 2:f256eebcade8 | 280 | } |
miruga27 | 2:f256eebcade8 | 281 | } |
miruga27 | 2:f256eebcade8 | 282 | |
miruga27 | 2:f256eebcade8 | 283 | |
miruga27 | 2:f256eebcade8 | 284 | } |
miruga27 | 2:f256eebcade8 | 285 | if(finish==1){ |
miruga27 | 2:f256eebcade8 | 286 | flag_y=0;flag_u=0;flag_v=0; |
miruga27 | 2:f256eebcade8 | 287 | py=0;pu=0;pv=0; |
miruga27 | 2:f256eebcade8 | 288 | first_y=true;first_u=true;first_v=true; |
miruga27 | 2:f256eebcade8 | 289 | start=0; |
miruga27 | 2:f256eebcade8 | 290 | goto end; |
miruga27 | 1:f0c646dfe574 | 291 | } |
miruga27 | 1:f0c646dfe574 | 292 | |
miruga27 | 2:f256eebcade8 | 293 | //debug( "end of cycle..\r\n" ); |
miruga27 | 1:f0c646dfe574 | 294 | |
miruga27 | 2:f256eebcade8 | 295 | if(flag_y==1 && flag_u==1 && flag_v==1){ |
miruga27 | 2:f256eebcade8 | 296 | //flag_y=0;flag_u=0;flag_v=0; |
miruga27 | 2:f256eebcade8 | 297 | //py_ant=0;pu_ant=0;pv_ant=0; |
miruga27 | 2:f256eebcade8 | 298 | py=0;pu=0;pv=0; |
miruga27 | 2:f256eebcade8 | 299 | //start=0; |
miruga27 | 2:f256eebcade8 | 300 | // debug( "finished transmission ...\r\n" ); |
miruga27 | 2:f256eebcade8 | 301 | //first_y=true;first_u=true;first_v=true; |
miruga27 | 2:f256eebcade8 | 302 | finish=1; |
miruga27 | 2:f256eebcade8 | 303 | |
miruga27 | 2:f256eebcade8 | 304 | |
miruga27 | 2:f256eebcade8 | 305 | } |
miruga27 | 2:f256eebcade8 | 306 | |
miruga27 | 2:f256eebcade8 | 307 | |
miruga27 | 2:f256eebcade8 | 308 | |
miruga27 | 2:f256eebcade8 | 309 | for( i = pointer; i < BufferSize; i++ ) |
miruga27 | 2:f256eebcade8 | 310 | { |
miruga27 | 2:f256eebcade8 | 311 | Buffer[i] = i - 4; |
miruga27 | 2:f256eebcade8 | 312 | } |
miruga27 | 2:f256eebcade8 | 313 | wait_ms( 10 ); |
miruga27 | 2:f256eebcade8 | 314 | // debug( "Sending packet...\r\n" ); |
miruga27 | 2:f256eebcade8 | 315 | Radio.Send( Buffer, BufferSize ); |
miruga27 | 2:f256eebcade8 | 316 | //if(finish==1) goto end; |
miruga27 | 2:f256eebcade8 | 317 | } |
miruga27 | 2:f256eebcade8 | 318 | |
miruga27 | 2:f256eebcade8 | 319 | else // valid reception but neither a PING or a PONG message |
miruga27 | 1:f0c646dfe574 | 320 | { // Set device as master ans start again |
miruga27 | 2:f256eebcade8 | 321 | isMaster = true; |
miruga27 | 2:f256eebcade8 | 322 | // debug("RfS received...\r\n"); |
miruga27 | 2:f256eebcade8 | 323 | if(strncmp( ( const char* )Buffer, ( const char* )RfSY, 4 ) == 0 ) { |
miruga27 | 2:f256eebcade8 | 324 | |
miruga27 | 2:f256eebcade8 | 325 | py=py_ant; |
miruga27 | 2:f256eebcade8 | 326 | //py-=15; |
miruga27 | 2:f256eebcade8 | 327 | /*py=0xff & Buffer[6]; |
miruga27 | 2:f256eebcade8 | 328 | py=py<<8; |
miruga27 | 2:f256eebcade8 | 329 | py=py | (Buffer[5] & 0xff);*/ |
miruga27 | 2:f256eebcade8 | 330 | flag_y=0; |
miruga27 | 2:f256eebcade8 | 331 | if(py<=0) { |
miruga27 | 2:f256eebcade8 | 332 | first_y=true; |
miruga27 | 2:f256eebcade8 | 333 | py=0; |
miruga27 | 2:f256eebcade8 | 334 | } |
miruga27 | 2:f256eebcade8 | 335 | |
miruga27 | 2:f256eebcade8 | 336 | } |
miruga27 | 2:f256eebcade8 | 337 | else if(strncmp( ( const char* )Buffer, ( const char* )RfSU, 4 ) == 0) { |
miruga27 | 2:f256eebcade8 | 338 | pu=pu_ant; |
miruga27 | 2:f256eebcade8 | 339 | //pu-=15; |
miruga27 | 2:f256eebcade8 | 340 | /* pu=0xff & Buffer[6]; |
miruga27 | 2:f256eebcade8 | 341 | pu=pu<<8; |
miruga27 | 2:f256eebcade8 | 342 | pu=pu | (Buffer[5] & 0xff);*/ |
miruga27 | 2:f256eebcade8 | 343 | flag_u=0; |
miruga27 | 2:f256eebcade8 | 344 | if(pu<=0) { |
miruga27 | 2:f256eebcade8 | 345 | first_u=true; |
miruga27 | 2:f256eebcade8 | 346 | pu=0; |
miruga27 | 2:f256eebcade8 | 347 | } |
miruga27 | 2:f256eebcade8 | 348 | |
miruga27 | 2:f256eebcade8 | 349 | } |
miruga27 | 2:f256eebcade8 | 350 | else { |
miruga27 | 2:f256eebcade8 | 351 | pv=pv_ant; |
miruga27 | 2:f256eebcade8 | 352 | //pv-=15; |
miruga27 | 2:f256eebcade8 | 353 | /*pv=0xff & Buffer[6]; |
miruga27 | 2:f256eebcade8 | 354 | pv=pv<<8; |
miruga27 | 2:f256eebcade8 | 355 | pv=pv | (Buffer[5] & 0xff);*/ |
miruga27 | 2:f256eebcade8 | 356 | |
miruga27 | 2:f256eebcade8 | 357 | flag_v=0; |
miruga27 | 2:f256eebcade8 | 358 | if(pv<=0) { |
miruga27 | 2:f256eebcade8 | 359 | first_v=true; |
miruga27 | 2:f256eebcade8 | 360 | pv=0; |
miruga27 | 2:f256eebcade8 | 361 | } |
miruga27 | 2:f256eebcade8 | 362 | |
miruga27 | 2:f256eebcade8 | 363 | } |
miruga27 | 2:f256eebcade8 | 364 | |
miruga27 | 2:f256eebcade8 | 365 | strcpy( ( char* )Buffer, ( char* )InitMsg ); |
miruga27 | 2:f256eebcade8 | 366 | Buffer[4]=py&0xff; |
miruga27 | 2:f256eebcade8 | 367 | Buffer[5]=(py>>8)&0xff; |
miruga27 | 2:f256eebcade8 | 368 | |
miruga27 | 2:f256eebcade8 | 369 | Buffer[6]=pu&0xff; |
miruga27 | 2:f256eebcade8 | 370 | Buffer[7]=(pu>>8)&0xff; |
miruga27 | 2:f256eebcade8 | 371 | Buffer[8]=pv&0xff; |
miruga27 | 2:f256eebcade8 | 372 | Buffer[9]=(pv>>8)&0xff; |
miruga27 | 2:f256eebcade8 | 373 | // We fill the buffer with numbers for the payload |
miruga27 | 2:f256eebcade8 | 374 | for( i = 10; i < BufferSize; i++ ) |
miruga27 | 2:f256eebcade8 | 375 | { |
miruga27 | 2:f256eebcade8 | 376 | Buffer[i] = i - 4; |
miruga27 | 2:f256eebcade8 | 377 | } |
miruga27 | 2:f256eebcade8 | 378 | wait_ms( 10 ); |
miruga27 | 2:f256eebcade8 | 379 | Radio.Send( Buffer, BufferSize ); |
miruga27 | 2:f256eebcade8 | 380 | |
miruga27 | 2:f256eebcade8 | 381 | |
miruga27 | 1:f0c646dfe574 | 382 | } |
miruga27 | 1:f0c646dfe574 | 383 | } |
miruga27 | 1:f0c646dfe574 | 384 | } |
miruga27 | 1:f0c646dfe574 | 385 | else |
miruga27 | 1:f0c646dfe574 | 386 | { |
miruga27 | 1:f0c646dfe574 | 387 | if( BufferSize > 0 ) |
miruga27 | 1:f0c646dfe574 | 388 | { |
miruga27 | 2:f256eebcade8 | 389 | if( strncmp( ( const char* )Buffer, ( const char* )InitMsg, 4 ) == 0 ) |
miruga27 | 2:f256eebcade8 | 390 | { |
miruga27 | 1:f0c646dfe574 | 391 | led = !led; |
miruga27 | 2:f256eebcade8 | 392 | // debug( "...Init received\r\n" ); |
miruga27 | 2:f256eebcade8 | 393 | // Send the reply to the PING string |
miruga27 | 1:f0c646dfe574 | 394 | strcpy( ( char* )Buffer, ( char* )AckMsg ); |
miruga27 | 1:f0c646dfe574 | 395 | // We fill the buffer with numbers for the payload |
miruga27 | 2:f256eebcade8 | 396 | for( i = 3; i < BufferSize; i++ ) |
miruga27 | 2:f256eebcade8 | 397 | { |
miruga27 | 1:f0c646dfe574 | 398 | Buffer[i] = i - 4; |
miruga27 | 2:f256eebcade8 | 399 | } |
miruga27 | 1:f0c646dfe574 | 400 | wait_ms( 10 ); |
miruga27 | 1:f0c646dfe574 | 401 | Radio.Send( Buffer, BufferSize ); |
miruga27 | 2:f256eebcade8 | 402 | } |
miruga27 | 2:f256eebcade8 | 403 | else if( strncmp( ( const char* )Buffer, ( const char* )PaqMsg, 2 ) == 0 ) |
miruga27 | 2:f256eebcade8 | 404 | { // A master already exists then become a slave |
miruga27 | 1:f0c646dfe574 | 405 | |
miruga27 | 2:f256eebcade8 | 406 | // debug( "...Receiving data TX \r\n" ); |
miruga27 | 2:f256eebcade8 | 407 | led = !led; |
miruga27 | 2:f256eebcade8 | 408 | //isMaster = false; |
miruga27 | 2:f256eebcade8 | 409 | // Send the next PONG frame |
miruga27 | 2:f256eebcade8 | 410 | strcpy( ( char* )Buffer, ( char* )AckMsg ); |
miruga27 | 2:f256eebcade8 | 411 | // We fill the buffer with numbers for the payload |
miruga27 | 2:f256eebcade8 | 412 | for( i = 4; i < BufferSize; i++ ) |
miruga27 | 2:f256eebcade8 | 413 | { |
miruga27 | 2:f256eebcade8 | 414 | Buffer[i] = i - 4; |
miruga27 | 2:f256eebcade8 | 415 | } |
miruga27 | 2:f256eebcade8 | 416 | wait_ms( 10 ); |
miruga27 | 2:f256eebcade8 | 417 | Radio.Send( Buffer, BufferSize ); |
miruga27 | 1:f0c646dfe574 | 418 | } |
miruga27 | 2:f256eebcade8 | 419 | else // RfS |
miruga27 | 2:f256eebcade8 | 420 | { // Set device as master and start again |
miruga27 | 2:f256eebcade8 | 421 | |
miruga27 | 2:f256eebcade8 | 422 | Radio.Rx( RX_TIMEOUT_VALUE ); |
miruga27 | 2:f256eebcade8 | 423 | } |
miruga27 | 1:f0c646dfe574 | 424 | } |
miruga27 | 1:f0c646dfe574 | 425 | } |
miruga27 | 2:f256eebcade8 | 426 | State = LOWPOWER; |
miruga27 | 1:f0c646dfe574 | 427 | break; |
miruga27 | 1:f0c646dfe574 | 428 | case TX: |
miruga27 | 1:f0c646dfe574 | 429 | led = !led; |
miruga27 | 1:f0c646dfe574 | 430 | if( isMaster == true ) |
miruga27 | 1:f0c646dfe574 | 431 | { |
miruga27 | 1:f0c646dfe574 | 432 | |
miruga27 | 2:f256eebcade8 | 433 | // debug( "Iransmitting packet TX...\r\n" ); |
miruga27 | 2:f256eebcade8 | 434 | //if(finish==1) goto end; |
miruga27 | 1:f0c646dfe574 | 435 | } |
miruga27 | 1:f0c646dfe574 | 436 | else |
miruga27 | 1:f0c646dfe574 | 437 | { |
miruga27 | 2:f256eebcade8 | 438 | // debug( "ACK RX...\r\n" ); |
miruga27 | 2:f256eebcade8 | 439 | } |
miruga27 | 2:f256eebcade8 | 440 | Radio.Rx( RX_TIMEOUT_VALUE ); |
miruga27 | 2:f256eebcade8 | 441 | State = LOWPOWER; |
miruga27 | 1:f0c646dfe574 | 442 | break; |
miruga27 | 1:f0c646dfe574 | 443 | case RX_TIMEOUT: |
miruga27 | 1:f0c646dfe574 | 444 | if( isMaster == true ) |
miruga27 | 1:f0c646dfe574 | 445 | { |
miruga27 | 2:f256eebcade8 | 446 | // Send the next PING frame |
miruga27 | 2:f256eebcade8 | 447 | |
miruga27 | 2:f256eebcade8 | 448 | |
miruga27 | 2:f256eebcade8 | 449 | // debug("start!\r\n");//empezamos aqui |
miruga27 | 2:f256eebcade8 | 450 | //py-=15;pu-=15;pv-=15; |
miruga27 | 2:f256eebcade8 | 451 | if(start==0) { |
miruga27 | 2:f256eebcade8 | 452 | py=0;pu=0;pv=0; |
miruga27 | 2:f256eebcade8 | 453 | start=1; |
miruga27 | 2:f256eebcade8 | 454 | } |
miruga27 | 2:f256eebcade8 | 455 | else{ |
miruga27 | 2:f256eebcade8 | 456 | py=py_ant;pu=pu_ant;pv=pv_ant; |
miruga27 | 2:f256eebcade8 | 457 | |
miruga27 | 2:f256eebcade8 | 458 | if(pv<=0) { |
miruga27 | 2:f256eebcade8 | 459 | flag_v=0; |
miruga27 | 2:f256eebcade8 | 460 | first_v=true; |
miruga27 | 2:f256eebcade8 | 461 | pv=0; |
miruga27 | 2:f256eebcade8 | 462 | } |
miruga27 | 2:f256eebcade8 | 463 | if(pu<=0) { |
miruga27 | 2:f256eebcade8 | 464 | flag_u=0; |
miruga27 | 2:f256eebcade8 | 465 | first_v=true; |
miruga27 | 2:f256eebcade8 | 466 | pu=0; |
miruga27 | 2:f256eebcade8 | 467 | } |
miruga27 | 2:f256eebcade8 | 468 | if(py<=0) { |
miruga27 | 2:f256eebcade8 | 469 | flag_y=0; |
miruga27 | 2:f256eebcade8 | 470 | first_v=true; |
miruga27 | 2:f256eebcade8 | 471 | py=0; |
miruga27 | 2:f256eebcade8 | 472 | } |
miruga27 | 2:f256eebcade8 | 473 | } |
miruga27 | 2:f256eebcade8 | 474 | strcpy( ( char* )Buffer, ( char* )InitMsg ); |
miruga27 | 2:f256eebcade8 | 475 | Buffer[4]=py&0xff; |
miruga27 | 2:f256eebcade8 | 476 | Buffer[5]=(py>>8)&0xff; |
miruga27 | 2:f256eebcade8 | 477 | |
miruga27 | 2:f256eebcade8 | 478 | Buffer[6]=pu&0xff; |
miruga27 | 2:f256eebcade8 | 479 | Buffer[7]=(pu>>8)&0xff; |
miruga27 | 2:f256eebcade8 | 480 | Buffer[8]=pv&0xff; |
miruga27 | 2:f256eebcade8 | 481 | Buffer[9]=(pv>>8)&0xff; |
miruga27 | 2:f256eebcade8 | 482 | for( i = 10; i < BufferSize; i++ ) |
miruga27 | 2:f256eebcade8 | 483 | { |
miruga27 | 2:f256eebcade8 | 484 | Buffer[i] = i - 4; |
miruga27 | 2:f256eebcade8 | 485 | } |
miruga27 | 2:f256eebcade8 | 486 | |
miruga27 | 2:f256eebcade8 | 487 | wait_ms( 10 ); |
miruga27 | 2:f256eebcade8 | 488 | Radio.Send( Buffer, BufferSize ); |
miruga27 | 2:f256eebcade8 | 489 | |
miruga27 | 2:f256eebcade8 | 490 | |
miruga27 | 2:f256eebcade8 | 491 | Radio.Rx( RX_TIMEOUT_VALUE ); |
miruga27 | 2:f256eebcade8 | 492 | } |
miruga27 | 2:f256eebcade8 | 493 | else |
miruga27 | 2:f256eebcade8 | 494 | { |
miruga27 | 2:f256eebcade8 | 495 | Radio.Rx( RX_TIMEOUT_VALUE ); |
miruga27 | 2:f256eebcade8 | 496 | } |
miruga27 | 2:f256eebcade8 | 497 | State = LOWPOWER; |
miruga27 | 2:f256eebcade8 | 498 | break; |
miruga27 | 2:f256eebcade8 | 499 | case RX_ERROR: |
miruga27 | 2:f256eebcade8 | 500 | // We have received a Packet with a CRC error, send reply as if packet was correct |
miruga27 | 2:f256eebcade8 | 501 | if( isMaster == true ) |
miruga27 | 2:f256eebcade8 | 502 | { |
miruga27 | 1:f0c646dfe574 | 503 | // Send the next PING frame |
miruga27 | 1:f0c646dfe574 | 504 | strcpy( ( char* )Buffer, ( char* )RfSMsg ); |
miruga27 | 1:f0c646dfe574 | 505 | for( i = 4; i < BufferSize; i++ ) |
miruga27 | 1:f0c646dfe574 | 506 | { |
miruga27 | 1:f0c646dfe574 | 507 | Buffer[i] = i - 4; |
miruga27 | 1:f0c646dfe574 | 508 | } |
miruga27 | 2:f256eebcade8 | 509 | // debug("CRC error!\r\n");//empezamos aqui |
miruga27 | 2:f256eebcade8 | 510 | //py=py_ant;pu=pu_ant;pv=pv_ant; |
miruga27 | 2:f256eebcade8 | 511 | wait_ms( 10 ); |
miruga27 | 1:f0c646dfe574 | 512 | Radio.Send( Buffer, BufferSize ); |
miruga27 | 2:f256eebcade8 | 513 | |
miruga27 | 2:f256eebcade8 | 514 | |
miruga27 | 1:f0c646dfe574 | 515 | } |
miruga27 | 1:f0c646dfe574 | 516 | else |
miruga27 | 1:f0c646dfe574 | 517 | { |
miruga27 | 2:f256eebcade8 | 518 | // Send the next PONG frame |
miruga27 | 2:f256eebcade8 | 519 | strcpy( ( char* )Buffer, ( char* )AckMsg ); |
miruga27 | 1:f0c646dfe574 | 520 | for( i = 4; i < BufferSize; i++ ) |
miruga27 | 1:f0c646dfe574 | 521 | { |
miruga27 | 1:f0c646dfe574 | 522 | Buffer[i] = i - 4; |
miruga27 | 1:f0c646dfe574 | 523 | } |
miruga27 | 1:f0c646dfe574 | 524 | wait_ms( 10 ); |
miruga27 | 1:f0c646dfe574 | 525 | Radio.Send( Buffer, BufferSize ); |
miruga27 | 1:f0c646dfe574 | 526 | } |
miruga27 | 2:f256eebcade8 | 527 | State = LOWPOWER; |
miruga27 | 1:f0c646dfe574 | 528 | break; |
miruga27 | 1:f0c646dfe574 | 529 | case TX_TIMEOUT: |
miruga27 | 1:f0c646dfe574 | 530 | Radio.Rx( RX_TIMEOUT_VALUE ); |
miruga27 | 1:f0c646dfe574 | 531 | State = LOWPOWER; |
miruga27 | 1:f0c646dfe574 | 532 | break; |
miruga27 | 1:f0c646dfe574 | 533 | case LOWPOWER: |
miruga27 | 1:f0c646dfe574 | 534 | break; |
miruga27 | 1:f0c646dfe574 | 535 | default: |
miruga27 | 1:f0c646dfe574 | 536 | State = LOWPOWER; |
miruga27 | 1:f0c646dfe574 | 537 | break; |
miruga27 | 1:f0c646dfe574 | 538 | } |
miruga27 | 1:f0c646dfe574 | 539 | } |
miruga27 | 1:f0c646dfe574 | 540 | end: |
miruga27 | 1:f0c646dfe574 | 541 | int a; |
miruga27 | 1:f0c646dfe574 | 542 | } |
miruga27 | 2:f256eebcade8 | 543 | |
miruga27 | 1:f0c646dfe574 | 544 | void OnTxDone( void ) |
miruga27 | 1:f0c646dfe574 | 545 | { |
miruga27 | 1:f0c646dfe574 | 546 | Radio.Sleep( ); |
miruga27 | 1:f0c646dfe574 | 547 | State = TX; |
miruga27 | 1:f0c646dfe574 | 548 | debug_if( DEBUG_MESSAGE, "> OnTxDone\n\r" ); |
miruga27 | 1:f0c646dfe574 | 549 | } |
miruga27 | 2:f256eebcade8 | 550 | |
miruga27 | 1:f0c646dfe574 | 551 | void OnRxDone( uint8_t *payload, uint16_t size, int16_t rssi, int8_t snr) |
miruga27 | 1:f0c646dfe574 | 552 | { |
miruga27 | 1:f0c646dfe574 | 553 | Radio.Sleep( ); |
miruga27 | 1:f0c646dfe574 | 554 | BufferSize = size; |
miruga27 | 1:f0c646dfe574 | 555 | memcpy( Buffer, payload, BufferSize ); |
miruga27 | 1:f0c646dfe574 | 556 | RssiValue = rssi; |
miruga27 | 1:f0c646dfe574 | 557 | SnrValue = snr; |
miruga27 | 1:f0c646dfe574 | 558 | State = RX; |
miruga27 | 1:f0c646dfe574 | 559 | debug_if( DEBUG_MESSAGE, "> OnRxDone\n\r" ); |
miruga27 | 1:f0c646dfe574 | 560 | } |
miruga27 | 2:f256eebcade8 | 561 | |
miruga27 | 1:f0c646dfe574 | 562 | void OnTxTimeout( void ) |
miruga27 | 1:f0c646dfe574 | 563 | { |
miruga27 | 1:f0c646dfe574 | 564 | Radio.Sleep( ); |
miruga27 | 1:f0c646dfe574 | 565 | State = TX_TIMEOUT; |
miruga27 | 2:f256eebcade8 | 566 | debug_if( DEBUG_MESSAGE, "> OnTxTimeout\n\r" ); |
miruga27 | 1:f0c646dfe574 | 567 | } |
miruga27 | 2:f256eebcade8 | 568 | |
miruga27 | 1:f0c646dfe574 | 569 | void OnRxTimeout( void ) |
miruga27 | 1:f0c646dfe574 | 570 | { |
miruga27 | 1:f0c646dfe574 | 571 | Radio.Sleep( ); |
miruga27 | 1:f0c646dfe574 | 572 | Buffer[ BufferSize ] = 0; |
miruga27 | 1:f0c646dfe574 | 573 | State = RX_TIMEOUT; |
miruga27 | 2:f256eebcade8 | 574 | debug_if( DEBUG_MESSAGE, "> OnRxTimeout\n\r" ); |
miruga27 | 1:f0c646dfe574 | 575 | } |
miruga27 | 2:f256eebcade8 | 576 | |
miruga27 | 1:f0c646dfe574 | 577 | void OnRxError( void ) |
miruga27 | 1:f0c646dfe574 | 578 | { |
miruga27 | 1:f0c646dfe574 | 579 | Radio.Sleep( ); |
miruga27 | 1:f0c646dfe574 | 580 | State = RX_ERROR; |
miruga27 | 1:f0c646dfe574 | 581 | debug_if( DEBUG_MESSAGE, "> OnRxError\n\r" ); |
miruga27 | 1:f0c646dfe574 | 582 | } |