
MAX32625PICO LP1 mode
Dependencies: SX1276GenericLib USBDevice
Fork of PICO_LP1 by
SX1276GenericPingPong/GenericPingPong2.cpp@7:8875c4d513bb, 2020-10-16 (annotated)
- Committer:
- walterluu
- Date:
- Fri Oct 16 06:46:00 2020 +0000
- Revision:
- 7:8875c4d513bb
- Parent:
- 6:51f492ca61a2
MAX32625PICO LP1 mode;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
walterluu | 3:85fc843a9d7d | 1 | /* |
walterluu | 3:85fc843a9d7d | 2 | * This file contains a copy of the master content sx1276PingPong |
walterluu | 3:85fc843a9d7d | 3 | * with adaption for the SX1276Generic environment |
walterluu | 3:85fc843a9d7d | 4 | * (c) 2017 Helmut Tschemernjak |
walterluu | 3:85fc843a9d7d | 5 | * 30826 Garbsen (Hannover) Germany |
walterluu | 3:85fc843a9d7d | 6 | */ |
walterluu | 3:85fc843a9d7d | 7 | |
walterluu | 3:85fc843a9d7d | 8 | #include "mbed.h" |
walterluu | 3:85fc843a9d7d | 9 | #include "PinMap.h" |
walterluu | 3:85fc843a9d7d | 10 | #include "GenericPingPong2.h" |
walterluu | 3:85fc843a9d7d | 11 | #include "sx1276-mbed-hal.h" |
walterluu | 3:85fc843a9d7d | 12 | #include "main.h" |
walterluu | 3:85fc843a9d7d | 13 | #include "global_buffers.h" //adding this for development |
walterluu | 3:85fc843a9d7d | 14 | |
walterluu | 3:85fc843a9d7d | 15 | #include "sx1276.h" |
walterluu | 3:85fc843a9d7d | 16 | |
walterluu | 3:85fc843a9d7d | 17 | #include "USBSerial.h" |
walterluu | 3:85fc843a9d7d | 18 | |
walterluu | 3:85fc843a9d7d | 19 | #ifdef FEATURE_LORA // in main.cpp |
walterluu | 3:85fc843a9d7d | 20 | |
walterluu | 3:85fc843a9d7d | 21 | /* Set this flag to '1' to display debug messages on the console */ |
walterluu | 7:8875c4d513bb | 22 | #define DEBUG_MESSAGE 1 |
walterluu | 3:85fc843a9d7d | 23 | |
walterluu | 3:85fc843a9d7d | 24 | /* Set this flag to '1' to use the LoRa modulation or to '0' to use FSK modulation */ |
walterluu | 3:85fc843a9d7d | 25 | #define USE_MODEM_LORA 1 |
walterluu | 3:85fc843a9d7d | 26 | #define USE_MODEM_FSK !USE_MODEM_LORA |
walterluu | 3:85fc843a9d7d | 27 | #define RF_FREQUENCY RF_FREQUENCY_915_0 // Hz |
walterluu | 7:8875c4d513bb | 28 | #define TX_OUTPUT_POWER 1 // 14 dBm |
walterluu | 3:85fc843a9d7d | 29 | |
walterluu | 3:85fc843a9d7d | 30 | #if USE_MODEM_LORA == 1 |
walterluu | 3:85fc843a9d7d | 31 | |
walterluu | 3:85fc843a9d7d | 32 | #define LORA_BANDWIDTH 125000 // LoRa default, details in SX1276::BandwidthMap |
walterluu | 3:85fc843a9d7d | 33 | #define LORA_SPREADING_FACTOR LORA_SF7 |
walterluu | 3:85fc843a9d7d | 34 | #define LORA_CODINGRATE LORA_ERROR_CODING_RATE_4_5 |
walterluu | 3:85fc843a9d7d | 35 | |
walterluu | 7:8875c4d513bb | 36 | //#define LORA_PREAMBLE_LENGTH 8 // Same for Tx and Rx, default |
walterluu | 7:8875c4d513bb | 37 | #define LORA_PREAMBLE_LENGTH 5 |
walterluu | 7:8875c4d513bb | 38 | //#define LORA_SYMBOL_TIMEOUT 5 // Symbols |
walterluu | 7:8875c4d513bb | 39 | #define LORA_SYMBOL_TIMEOUT 4 // Symbols |
walterluu | 7:8875c4d513bb | 40 | |
walterluu | 3:85fc843a9d7d | 41 | #define LORA_FIX_LENGTH_PAYLOAD_ON false |
walterluu | 3:85fc843a9d7d | 42 | #define LORA_FHSS_ENABLED false |
walterluu | 3:85fc843a9d7d | 43 | #define LORA_NB_SYMB_HOP 4 |
walterluu | 3:85fc843a9d7d | 44 | #define LORA_IQ_INVERSION_ON false |
walterluu | 3:85fc843a9d7d | 45 | #define LORA_CRC_ENABLED true |
walterluu | 3:85fc843a9d7d | 46 | |
walterluu | 3:85fc843a9d7d | 47 | #elif USE_MODEM_FSK == 1 |
walterluu | 3:85fc843a9d7d | 48 | |
walterluu | 3:85fc843a9d7d | 49 | #define FSK_FDEV 25000 // Hz |
walterluu | 3:85fc843a9d7d | 50 | #define FSK_DATARATE 19200 // bps |
walterluu | 3:85fc843a9d7d | 51 | #define FSK_BANDWIDTH 50000 // Hz |
walterluu | 3:85fc843a9d7d | 52 | #define FSK_AFC_BANDWIDTH 83333 // Hz |
walterluu | 3:85fc843a9d7d | 53 | #define FSK_PREAMBLE_LENGTH 5 // Same for Tx and Rx |
walterluu | 3:85fc843a9d7d | 54 | #define FSK_FIX_LENGTH_PAYLOAD_ON false |
walterluu | 3:85fc843a9d7d | 55 | #define FSK_CRC_ENABLED true |
walterluu | 3:85fc843a9d7d | 56 | |
walterluu | 3:85fc843a9d7d | 57 | #else |
walterluu | 3:85fc843a9d7d | 58 | #error "Please define a modem in the compiler options." |
walterluu | 3:85fc843a9d7d | 59 | #endif |
walterluu | 3:85fc843a9d7d | 60 | |
walterluu | 3:85fc843a9d7d | 61 | |
walterluu | 7:8875c4d513bb | 62 | #if MASTER == 1 |
walterluu | 7:8875c4d513bb | 63 | #define RX_TIMEOUT_VALUE 3500 // in ms, default |
walterluu | 7:8875c4d513bb | 64 | #elif SLAVE == 1 |
walterluu | 7:8875c4d513bb | 65 | #define RX_TIMEOUT_VALUE 333 // in ms |
walterluu | 7:8875c4d513bb | 66 | #endif |
walterluu | 3:85fc843a9d7d | 67 | |
walterluu | 3:85fc843a9d7d | 68 | //#define BUFFER_SIZE 32 // Define the payload size here |
walterluu | 3:85fc843a9d7d | 69 | //#define BUFFER_SIZE 64 // Define the payload size here |
walterluu | 3:85fc843a9d7d | 70 | |
walterluu | 3:85fc843a9d7d | 71 | |
walterluu | 3:85fc843a9d7d | 72 | /* |
walterluu | 3:85fc843a9d7d | 73 | * Global variables declarations |
walterluu | 3:85fc843a9d7d | 74 | */ |
walterluu | 3:85fc843a9d7d | 75 | typedef enum |
walterluu | 3:85fc843a9d7d | 76 | { |
walterluu | 3:85fc843a9d7d | 77 | LOWPOWER = 0, |
walterluu | 3:85fc843a9d7d | 78 | IDLE, |
walterluu | 3:85fc843a9d7d | 79 | |
walterluu | 3:85fc843a9d7d | 80 | RX, |
walterluu | 3:85fc843a9d7d | 81 | RX_TIMEOUT, |
walterluu | 3:85fc843a9d7d | 82 | RX_ERROR, |
walterluu | 3:85fc843a9d7d | 83 | |
walterluu | 3:85fc843a9d7d | 84 | TX, |
walterluu | 3:85fc843a9d7d | 85 | TX_TIMEOUT, |
walterluu | 3:85fc843a9d7d | 86 | |
walterluu | 3:85fc843a9d7d | 87 | CAD, |
walterluu | 3:85fc843a9d7d | 88 | CAD_DONE |
walterluu | 3:85fc843a9d7d | 89 | } AppStates_t; |
walterluu | 3:85fc843a9d7d | 90 | |
walterluu | 3:85fc843a9d7d | 91 | volatile AppStates_t State = LOWPOWER; |
walterluu | 3:85fc843a9d7d | 92 | |
walterluu | 3:85fc843a9d7d | 93 | /*! |
walterluu | 3:85fc843a9d7d | 94 | * Radio events function pointer |
walterluu | 3:85fc843a9d7d | 95 | */ |
walterluu | 3:85fc843a9d7d | 96 | static RadioEvents_t RadioEvents; |
walterluu | 3:85fc843a9d7d | 97 | |
walterluu | 3:85fc843a9d7d | 98 | /* |
walterluu | 3:85fc843a9d7d | 99 | * Global variables declarations |
walterluu | 3:85fc843a9d7d | 100 | */ |
walterluu | 3:85fc843a9d7d | 101 | SX1276Generic *Radio; |
walterluu | 3:85fc843a9d7d | 102 | |
walterluu | 3:85fc843a9d7d | 103 | |
walterluu | 3:85fc843a9d7d | 104 | //const uint8_t PingMsg[] = { 0xff, 0xff, 0x00, 0x00, 'P', 'I', 'N', 'G'};// "PING"; |
walterluu | 3:85fc843a9d7d | 105 | //const uint8_t PongMsg[] = { 0xff, 0xff, 0x00, 0x00, 'P', 'O', 'N', 'G'};// "PONG"; |
walterluu | 3:85fc843a9d7d | 106 | |
walterluu | 3:85fc843a9d7d | 107 | //uint16_t BufferSize = BUFFER_SIZE; |
walterluu | 3:85fc843a9d7d | 108 | //uint8_t *Buffer; |
walterluu | 3:85fc843a9d7d | 109 | |
walterluu | 3:85fc843a9d7d | 110 | // Aliases for the buffers that are made in the main() |
walterluu | 3:85fc843a9d7d | 111 | uint8_t *BufferTx; |
walterluu | 3:85fc843a9d7d | 112 | uint8_t *BufferRx; |
walterluu | 3:85fc843a9d7d | 113 | USBSerial *ad; |
walterluu | 3:85fc843a9d7d | 114 | |
walterluu | 3:85fc843a9d7d | 115 | DigitalOut *led3; |
walterluu | 3:85fc843a9d7d | 116 | |
walterluu | 3:85fc843a9d7d | 117 | |
walterluu | 3:85fc843a9d7d | 118 | /* |
walterluu | 3:85fc843a9d7d | 119 | This function is in Devin's main function |
walterluu | 3:85fc843a9d7d | 120 | |
walterluu | 3:85fc843a9d7d | 121 | */ |
walterluu | 3:85fc843a9d7d | 122 | int SX1276PingPongSetup(uint8_t *BufferTxFromMain, uint8_t *BufferRxFromMain, USBSerial *_ad) |
walterluu | 3:85fc843a9d7d | 123 | { |
walterluu | 3:85fc843a9d7d | 124 | ad = _ad; |
walterluu | 3:85fc843a9d7d | 125 | |
walterluu | 3:85fc843a9d7d | 126 | ad->printf("TEST\r\n" ); |
walterluu | 3:85fc843a9d7d | 127 | |
walterluu | 3:85fc843a9d7d | 128 | #if( defined ( TARGET_KL25Z ) || defined ( TARGET_Lad11U6X ) ) |
walterluu | 3:85fc843a9d7d | 129 | DigitalOut *led = new DigitalOut(LED2); |
walterluu | 3:85fc843a9d7d | 130 | #elif defined(TARGET_NUCLEO_L073RZ) || defined(TARGET_DISCO_L072CZ_LRWAN1) |
walterluu | 3:85fc843a9d7d | 131 | DigitalOut *led = new DigitalOut(LED4); // RX red |
walterluu | 3:85fc843a9d7d | 132 | led3 = new DigitalOut(LED3); // TX blue |
walterluu | 3:85fc843a9d7d | 133 | #else |
walterluu | 3:85fc843a9d7d | 134 | DigitalOut *led = new DigitalOut(LED1); |
walterluu | 3:85fc843a9d7d | 135 | // led = 0; |
walterluu | 3:85fc843a9d7d | 136 | led3 = led; |
walterluu | 3:85fc843a9d7d | 137 | #endif |
walterluu | 3:85fc843a9d7d | 138 | |
walterluu | 3:85fc843a9d7d | 139 | BufferTx = BufferTxFromMain; |
walterluu | 3:85fc843a9d7d | 140 | BufferRx = BufferRxFromMain; |
walterluu | 3:85fc843a9d7d | 141 | *led3 = 0; // change to 0 |
walterluu | 3:85fc843a9d7d | 142 | |
walterluu | 3:85fc843a9d7d | 143 | #ifdef B_L072Z_LRWAN1_LORA |
walterluu | 3:85fc843a9d7d | 144 | Radio = new SX1276Generic(NULL, MURATA_SX1276, |
walterluu | 3:85fc843a9d7d | 145 | LORA_SPI_MOSI, LORA_SPI_MISO, LORA_SPI_SCLK, LORA_CS, LORA_RESET, |
walterluu | 3:85fc843a9d7d | 146 | LORA_DIO0, LORA_DIO1, LORA_DIO2, LORA_DIO3, LORA_DIO4, LORA_DIO5, |
walterluu | 3:85fc843a9d7d | 147 | LORA_ANT_RX, LORA_ANT_TX, LORA_ANT_BOOST, LORA_TCXO); |
walterluu | 3:85fc843a9d7d | 148 | #else // RFM95 |
walterluu | 3:85fc843a9d7d | 149 | Radio = new SX1276Generic(NULL, RFM95_SX1276, |
walterluu | 3:85fc843a9d7d | 150 | LORA_SPI_MOSI, LORA_SPI_MISO, LORA_SPI_SCLK, LORA_CS, LORA_RESET, |
walterluu | 3:85fc843a9d7d | 151 | LORA_DIO0, LORA_DIO1, LORA_DIO2, LORA_DIO3, LORA_DIO4, LORA_DIO5); |
walterluu | 3:85fc843a9d7d | 152 | |
walterluu | 3:85fc843a9d7d | 153 | #endif |
walterluu | 3:85fc843a9d7d | 154 | |
walterluu | 3:85fc843a9d7d | 155 | // dprintf("SX1276 Ping Pong Demo Application" ); |
walterluu | 3:85fc843a9d7d | 156 | ad->printf("SX1276 Ping Pong Demo Application\r\n"); |
walterluu | 3:85fc843a9d7d | 157 | // dprintf("Freqency: %.1f", (double)RF_FREQUENCY/1000000.0); |
walterluu | 3:85fc843a9d7d | 158 | ad->printf("Freqency: %.1f\r\n", (double)RF_FREQUENCY/1000000.0); |
walterluu | 3:85fc843a9d7d | 159 | // dprintf("TXPower: %d dBm", TX_OUTPUT_POWER); |
walterluu | 3:85fc843a9d7d | 160 | ad->printf("TXPower: %d dBm\r\n", TX_OUTPUT_POWER); |
walterluu | 3:85fc843a9d7d | 161 | #if USE_MODEM_LORA == 1 |
walterluu | 3:85fc843a9d7d | 162 | // dprintf("Bandwidth: %d Hz", LORA_BANDWIDTH); |
walterluu | 3:85fc843a9d7d | 163 | ad->printf("Bandwidth: %d Hz\r\n", LORA_BANDWIDTH); |
walterluu | 3:85fc843a9d7d | 164 | // dprintf("Spreading factor: SF%d", LORA_SPREADING_FACTOR); |
walterluu | 3:85fc843a9d7d | 165 | ad->printf("Spreading factor: SF%d\r\n", LORA_SPREADING_FACTOR); |
walterluu | 3:85fc843a9d7d | 166 | #elif USE_MODEM_FSK == 1 |
walterluu | 3:85fc843a9d7d | 167 | // dprintf("Bandwidth: %d kHz", FSK_BANDWIDTH); |
walterluu | 3:85fc843a9d7d | 168 | ad->printf("Bandwidth: %d kHz\r\n", FSK_BANDWIDTH); |
walterluu | 3:85fc843a9d7d | 169 | // dprintf("Baudrate: %d", FSK_DATARATE); |
walterluu | 3:85fc843a9d7d | 170 | ad->printf("Baudrate: %d\r\n", FSK_DATARATE); |
walterluu | 3:85fc843a9d7d | 171 | #endif |
walterluu | 3:85fc843a9d7d | 172 | // Initialize Radio driver |
walterluu | 3:85fc843a9d7d | 173 | RadioEvents.TxDone = OnTxDone; |
walterluu | 3:85fc843a9d7d | 174 | RadioEvents.RxDone = OnRxDone; |
walterluu | 3:85fc843a9d7d | 175 | RadioEvents.RxError = OnRxError; |
walterluu | 3:85fc843a9d7d | 176 | RadioEvents.TxTimeout = OnTxTimeout; |
walterluu | 3:85fc843a9d7d | 177 | RadioEvents.RxTimeout = OnRxTimeout; |
walterluu | 3:85fc843a9d7d | 178 | if (Radio->Init( &RadioEvents ) == false) { |
walterluu | 3:85fc843a9d7d | 179 | while(1) { |
walterluu | 3:85fc843a9d7d | 180 | // dprintf("Radio could not be detected!"); |
walterluu | 3:85fc843a9d7d | 181 | ad->printf("Radio could not be detected!\r\n"); |
walterluu | 3:85fc843a9d7d | 182 | wait( 1 ); |
walterluu | 3:85fc843a9d7d | 183 | } |
walterluu | 3:85fc843a9d7d | 184 | } |
walterluu | 3:85fc843a9d7d | 185 | |
walterluu | 3:85fc843a9d7d | 186 | |
walterluu | 3:85fc843a9d7d | 187 | switch(Radio->DetectBoardType()) { |
walterluu | 3:85fc843a9d7d | 188 | case SX1276MB1LAS: |
walterluu | 3:85fc843a9d7d | 189 | if (DEBUG_MESSAGE) |
walterluu | 3:85fc843a9d7d | 190 | ad->printf(" > Board Type: SX1276MB1LAS <\r\n"); |
walterluu | 3:85fc843a9d7d | 191 | break; |
walterluu | 3:85fc843a9d7d | 192 | case SX1276MB1MAS: |
walterluu | 3:85fc843a9d7d | 193 | if (DEBUG_MESSAGE) |
walterluu | 3:85fc843a9d7d | 194 | ad->printf(" > Board Type: SX1276MB1LAS <\r\n"); |
walterluu | 3:85fc843a9d7d | 195 | case MURATA_SX1276: |
walterluu | 3:85fc843a9d7d | 196 | if (DEBUG_MESSAGE) |
walterluu | 3:85fc843a9d7d | 197 | ad->printf(" > Board Type: MURATA_SX1276_STM32L0 <\r\n"); |
walterluu | 3:85fc843a9d7d | 198 | break; |
walterluu | 3:85fc843a9d7d | 199 | case RFM95_SX1276: |
walterluu | 3:85fc843a9d7d | 200 | if (DEBUG_MESSAGE) |
walterluu | 3:85fc843a9d7d | 201 | ad->printf(" > HopeRF RFM95xx <\r\n"); |
walterluu | 3:85fc843a9d7d | 202 | break; |
walterluu | 3:85fc843a9d7d | 203 | default: |
walterluu | 3:85fc843a9d7d | 204 | ad->printf(" > Board Type: unknown <\r\n"); |
walterluu | 3:85fc843a9d7d | 205 | } |
walterluu | 3:85fc843a9d7d | 206 | |
walterluu | 3:85fc843a9d7d | 207 | Radio->SetChannel(RF_FREQUENCY ); |
walterluu | 3:85fc843a9d7d | 208 | |
walterluu | 3:85fc843a9d7d | 209 | #if USE_MODEM_LORA == 1 |
walterluu | 3:85fc843a9d7d | 210 | |
walterluu | 3:85fc843a9d7d | 211 | if (LORA_FHSS_ENABLED) |
walterluu | 3:85fc843a9d7d | 212 | ad->printf(" > LORA FHSS Mode <\r\n"); |
walterluu | 3:85fc843a9d7d | 213 | if (!LORA_FHSS_ENABLED) |
walterluu | 3:85fc843a9d7d | 214 | ad->printf(" > LORA Mode <\r\n"); |
walterluu | 3:85fc843a9d7d | 215 | |
walterluu | 3:85fc843a9d7d | 216 | |
walterluu | 3:85fc843a9d7d | 217 | // Without this line, the default max payload length is only 64 bytes |
walterluu | 3:85fc843a9d7d | 218 | Radio->SetMaxPayloadLength(MODEM_LORA, 255); |
walterluu | 3:85fc843a9d7d | 219 | |
walterluu | 3:85fc843a9d7d | 220 | Radio->SetTxConfig( MODEM_LORA, TX_OUTPUT_POWER, 0, LORA_BANDWIDTH, |
walterluu | 3:85fc843a9d7d | 221 | LORA_SPREADING_FACTOR, LORA_CODINGRATE, |
walterluu | 3:85fc843a9d7d | 222 | LORA_PREAMBLE_LENGTH, LORA_FIX_LENGTH_PAYLOAD_ON, |
walterluu | 3:85fc843a9d7d | 223 | LORA_CRC_ENABLED, LORA_FHSS_ENABLED, LORA_NB_SYMB_HOP, |
walterluu | 3:85fc843a9d7d | 224 | LORA_IQ_INVERSION_ON, 2000 ); |
walterluu | 3:85fc843a9d7d | 225 | |
walterluu | 3:85fc843a9d7d | 226 | Radio->SetRxConfig( MODEM_LORA, LORA_BANDWIDTH, LORA_SPREADING_FACTOR, |
walterluu | 3:85fc843a9d7d | 227 | LORA_CODINGRATE, 0, LORA_PREAMBLE_LENGTH, |
walterluu | 3:85fc843a9d7d | 228 | LORA_SYMBOL_TIMEOUT, LORA_FIX_LENGTH_PAYLOAD_ON, 0, |
walterluu | 3:85fc843a9d7d | 229 | LORA_CRC_ENABLED, LORA_FHSS_ENABLED, LORA_NB_SYMB_HOP, |
walterluu | 3:85fc843a9d7d | 230 | LORA_IQ_INVERSION_ON, true ); |
walterluu | 3:85fc843a9d7d | 231 | |
walterluu | 3:85fc843a9d7d | 232 | #elif USE_MODEM_FSK == 1 |
walterluu | 3:85fc843a9d7d | 233 | |
walterluu | 3:85fc843a9d7d | 234 | ad->printf(" > FSK Mode <\n"); |
walterluu | 3:85fc843a9d7d | 235 | Radio->SetTxConfig( MODEM_FSK, TX_OUTPUT_POWER, FSK_FDEV, 0, |
walterluu | 3:85fc843a9d7d | 236 | FSK_DATARATE, 0, |
walterluu | 3:85fc843a9d7d | 237 | FSK_PREAMBLE_LENGTH, FSK_FIX_LENGTH_PAYLOAD_ON, |
walterluu | 3:85fc843a9d7d | 238 | FSK_CRC_ENABLED, 0, 0, 0, 2000 ); |
walterluu | 3:85fc843a9d7d | 239 | |
walterluu | 3:85fc843a9d7d | 240 | Radio->SetRxConfig( MODEM_FSK, FSK_BANDWIDTH, FSK_DATARATE, |
walterluu | 3:85fc843a9d7d | 241 | 0, FSK_AFC_BANDWIDTH, FSK_PREAMBLE_LENGTH, |
walterluu | 3:85fc843a9d7d | 242 | 0, FSK_FIX_LENGTH_PAYLOAD_ON, 0, FSK_CRC_ENABLED, |
walterluu | 3:85fc843a9d7d | 243 | 0, 0, false, true ); |
walterluu | 3:85fc843a9d7d | 244 | |
walterluu | 3:85fc843a9d7d | 245 | #else |
walterluu | 3:85fc843a9d7d | 246 | |
walterluu | 3:85fc843a9d7d | 247 | #error "Please define a modem in the compiler options." |
walterluu | 3:85fc843a9d7d | 248 | |
walterluu | 3:85fc843a9d7d | 249 | #endif |
walterluu | 3:85fc843a9d7d | 250 | |
walterluu | 3:85fc843a9d7d | 251 | if (DEBUG_MESSAGE) |
walterluu | 3:85fc843a9d7d | 252 | ad->printf("Starting Ping-Pong loop\r\n"); |
walterluu | 3:85fc843a9d7d | 253 | |
walterluu | 7:8875c4d513bb | 254 | #if MASTER == 1 |
walterluu | 7:8875c4d513bb | 255 | Radio->Rx( RX_TIMEOUT_VALUE ); // initate Rx State for Master |
walterluu | 7:8875c4d513bb | 256 | #endif |
walterluu | 7:8875c4d513bb | 257 | |
walterluu | 3:85fc843a9d7d | 258 | return 0; //added by Walter due to "Control reaches end of non-void function" |
walterluu | 3:85fc843a9d7d | 259 | } |
walterluu | 3:85fc843a9d7d | 260 | |
walterluu | 7:8875c4d513bb | 261 | |
walterluu | 7:8875c4d513bb | 262 | bool SX1276MasterCheckForNewData(void) |
walterluu | 7:8875c4d513bb | 263 | { |
walterluu | 7:8875c4d513bb | 264 | bool new_data_available = false; |
walterluu | 7:8875c4d513bb | 265 | switch( State ) |
walterluu | 7:8875c4d513bb | 266 | { |
walterluu | 7:8875c4d513bb | 267 | case RX: |
walterluu | 7:8875c4d513bb | 268 | if( BufferSizeRx > 0 ) |
walterluu | 7:8875c4d513bb | 269 | { |
walterluu | 7:8875c4d513bb | 270 | new_data_available = true; |
walterluu | 7:8875c4d513bb | 271 | wait_ms( 10 ); //do we need this? |
walterluu | 7:8875c4d513bb | 272 | if (DEBUG_MESSAGE) |
walterluu | 7:8875c4d513bb | 273 | ad->printf( "State=RX\r\n" ); |
walterluu | 7:8875c4d513bb | 274 | } |
walterluu | 7:8875c4d513bb | 275 | Radio->Rx( RX_TIMEOUT_VALUE ); |
walterluu | 7:8875c4d513bb | 276 | State = LOWPOWER; |
walterluu | 7:8875c4d513bb | 277 | break; |
walterluu | 7:8875c4d513bb | 278 | case RX_TIMEOUT: |
walterluu | 7:8875c4d513bb | 279 | wait_ms( 10 ); |
walterluu | 7:8875c4d513bb | 280 | if (DEBUG_MESSAGE) |
walterluu | 7:8875c4d513bb | 281 | ad->printf( "State=RX_TIMEOUT\r\n" ); |
walterluu | 7:8875c4d513bb | 282 | Radio->Rx( RX_TIMEOUT_VALUE ); |
walterluu | 7:8875c4d513bb | 283 | State = LOWPOWER; |
walterluu | 7:8875c4d513bb | 284 | break; |
walterluu | 7:8875c4d513bb | 285 | case RX_ERROR: |
walterluu | 7:8875c4d513bb | 286 | // We have received a Packet with a CRC error, send reply as if packet was correct |
walterluu | 7:8875c4d513bb | 287 | wait_ms( 10 ); |
walterluu | 7:8875c4d513bb | 288 | if (DEBUG_MESSAGE) |
walterluu | 7:8875c4d513bb | 289 | ad->printf( "State=RX_ERROR\r\n" ); |
walterluu | 7:8875c4d513bb | 290 | Radio->Rx( RX_TIMEOUT_VALUE ); |
walterluu | 7:8875c4d513bb | 291 | State = LOWPOWER; |
walterluu | 7:8875c4d513bb | 292 | break; |
walterluu | 7:8875c4d513bb | 293 | case TX_TIMEOUT: |
walterluu | 7:8875c4d513bb | 294 | if (DEBUG_MESSAGE) |
walterluu | 7:8875c4d513bb | 295 | ad->printf( "State=TX_TIMEOUT\r\n" ); |
walterluu | 7:8875c4d513bb | 296 | State = LOWPOWER; |
walterluu | 7:8875c4d513bb | 297 | break; |
walterluu | 7:8875c4d513bb | 298 | case LOWPOWER: |
walterluu | 7:8875c4d513bb | 299 | sleep(); |
walterluu | 7:8875c4d513bb | 300 | break; |
walterluu | 7:8875c4d513bb | 301 | default: |
walterluu | 7:8875c4d513bb | 302 | sleep(); // TODO, should this be removed? |
walterluu | 7:8875c4d513bb | 303 | break; |
walterluu | 7:8875c4d513bb | 304 | } |
walterluu | 7:8875c4d513bb | 305 | return new_data_available; |
walterluu | 7:8875c4d513bb | 306 | } |
walterluu | 7:8875c4d513bb | 307 | |
walterluu | 7:8875c4d513bb | 308 | void SX1276SlaveSendData(void) |
walterluu | 7:8875c4d513bb | 309 | { |
walterluu | 7:8875c4d513bb | 310 | //wait_ms( 10 ); |
walterluu | 7:8875c4d513bb | 311 | Radio->Send( BufferTx, BufferSizeTx ); |
walterluu | 7:8875c4d513bb | 312 | sleep(); |
walterluu | 7:8875c4d513bb | 313 | } |
walterluu | 7:8875c4d513bb | 314 | |
walterluu | 3:85fc843a9d7d | 315 | /**************************************************************************************************************************************** |
walterluu | 3:85fc843a9d7d | 316 | * |
walterluu | 3:85fc843a9d7d | 317 | ****************************************************************************************************************************************/ |
walterluu | 3:85fc843a9d7d | 318 | int SX1276PingPong(void) |
walterluu | 3:85fc843a9d7d | 319 | { |
walterluu | 3:85fc843a9d7d | 320 | #if MASTER == 1 // Master Device: Bluetooth Gateway |
walterluu | 3:85fc843a9d7d | 321 | bool isMaster = true; |
walterluu | 3:85fc843a9d7d | 322 | #elif SLAVE == 1 // Slave Device: Robot |
walterluu | 3:85fc843a9d7d | 323 | bool isMaster = false; |
walterluu | 3:85fc843a9d7d | 324 | #endif |
walterluu | 3:85fc843a9d7d | 325 | |
walterluu | 3:85fc843a9d7d | 326 | switch( State ) |
walterluu | 3:85fc843a9d7d | 327 | { |
walterluu | 3:85fc843a9d7d | 328 | case RX: |
walterluu | 3:85fc843a9d7d | 329 | // *led3 = 0; // uncommented |
walterluu | 3:85fc843a9d7d | 330 | if( isMaster == true ) // Master Device received payload from Slave |
walterluu | 3:85fc843a9d7d | 331 | { |
walterluu | 3:85fc843a9d7d | 332 | if( BufferSizeRx > 0 ) |
walterluu | 3:85fc843a9d7d | 333 | { |
walterluu | 3:85fc843a9d7d | 334 | /* This checks if the ID of the received transaction is matching that of |
walterluu | 3:85fc843a9d7d | 335 | * the slave device's ID. This is defined in the GenericPingPong.h |
walterluu | 3:85fc843a9d7d | 336 | */ |
walterluu | 3:85fc843a9d7d | 337 | if( memcmp(&BufferRx[rx_idx_signature], PongMsg, sizeof(PongMsg)) == 0 ) |
walterluu | 3:85fc843a9d7d | 338 | { |
walterluu | 3:85fc843a9d7d | 339 | // *led = !*led; |
walterluu | 3:85fc843a9d7d | 340 | // *led = 0; // changed to 0 |
walterluu | 3:85fc843a9d7d | 341 | if (DEBUG_MESSAGE) |
walterluu | 3:85fc843a9d7d | 342 | ad->printf( "...Pong\r\n" ); |
walterluu | 3:85fc843a9d7d | 343 | wait_ms( 10 ); |
walterluu | 3:85fc843a9d7d | 344 | Radio->Send( BufferTx, BufferSizeTx ); |
walterluu | 3:85fc843a9d7d | 345 | } // memcmp != 0 |
walterluu | 3:85fc843a9d7d | 346 | else // valid reception but not a PONG message |
walterluu | 3:85fc843a9d7d | 347 | { // Set device as master and start again |
walterluu | 3:85fc843a9d7d | 348 | isMaster = true; // new update |
walterluu | 3:85fc843a9d7d | 349 | Radio->Rx( RX_TIMEOUT_VALUE ); |
walterluu | 3:85fc843a9d7d | 350 | } // end of if memcmp |
walterluu | 3:85fc843a9d7d | 351 | } // end of if BufferSizeRx > 0 |
walterluu | 3:85fc843a9d7d | 352 | } // end of isMaster == true |
walterluu | 3:85fc843a9d7d | 353 | else // Slave Device received payload from Master |
walterluu | 3:85fc843a9d7d | 354 | { |
walterluu | 3:85fc843a9d7d | 355 | if( BufferSizeRx > 0 ) |
walterluu | 3:85fc843a9d7d | 356 | { |
walterluu | 3:85fc843a9d7d | 357 | if( memcmp(BufferRx, PingMsg, sizeof(PingMsg)) == 0 ) |
walterluu | 3:85fc843a9d7d | 358 | { |
walterluu | 3:85fc843a9d7d | 359 | // *led = !*led; |
walterluu | 3:85fc843a9d7d | 360 | // *led = 0 //changed to 0 |
walterluu | 3:85fc843a9d7d | 361 | if (DEBUG_MESSAGE) |
walterluu | 3:85fc843a9d7d | 362 | ad->printf( "...Ping\r\n" ); |
walterluu | 3:85fc843a9d7d | 363 | wait_ms( 10 ); |
walterluu | 3:85fc843a9d7d | 364 | Radio->Send( BufferTx, BufferSizeTx ); |
walterluu | 3:85fc843a9d7d | 365 | } |
walterluu | 3:85fc843a9d7d | 366 | else // valid reception but not a PING as expected |
walterluu | 3:85fc843a9d7d | 367 | { // Set device as slave and start again |
walterluu | 3:85fc843a9d7d | 368 | isMaster = false; // new update |
walterluu | 3:85fc843a9d7d | 369 | Radio->Rx( RX_TIMEOUT_VALUE ); |
walterluu | 3:85fc843a9d7d | 370 | } |
walterluu | 3:85fc843a9d7d | 371 | } // end of if BufferSizeRx > 0 |
walterluu | 3:85fc843a9d7d | 372 | } // end of if (isMaster == True), end of checking devices |
walterluu | 3:85fc843a9d7d | 373 | |
walterluu | 3:85fc843a9d7d | 374 | State = LOWPOWER; // back to LOWPOWER State |
walterluu | 3:85fc843a9d7d | 375 | |
walterluu | 3:85fc843a9d7d | 376 | break; |
walterluu | 3:85fc843a9d7d | 377 | case TX: |
walterluu | 3:85fc843a9d7d | 378 | // *led3 = 0; // change to 0 |
walterluu | 3:85fc843a9d7d | 379 | if( isMaster == true ) // Master Device |
walterluu | 3:85fc843a9d7d | 380 | { |
walterluu | 3:85fc843a9d7d | 381 | if (DEBUG_MESSAGE) |
walterluu | 3:85fc843a9d7d | 382 | ad->printf("Ping...\r\n" ); |
walterluu | 3:85fc843a9d7d | 383 | } |
walterluu | 3:85fc843a9d7d | 384 | else // Slave Device |
walterluu | 3:85fc843a9d7d | 385 | { |
walterluu | 3:85fc843a9d7d | 386 | if (DEBUG_MESSAGE) |
walterluu | 3:85fc843a9d7d | 387 | ad->printf("Pong...\r\n" ); |
walterluu | 3:85fc843a9d7d | 388 | } |
walterluu | 3:85fc843a9d7d | 389 | Radio->Rx( RX_TIMEOUT_VALUE ); |
walterluu | 3:85fc843a9d7d | 390 | State = LOWPOWER; // back to LOWPOWER State |
walterluu | 3:85fc843a9d7d | 391 | break; |
walterluu | 3:85fc843a9d7d | 392 | case RX_TIMEOUT: |
walterluu | 3:85fc843a9d7d | 393 | if( isMaster == true ) // Master Device |
walterluu | 3:85fc843a9d7d | 394 | { |
walterluu | 3:85fc843a9d7d | 395 | wait_ms( 10 ); |
walterluu | 3:85fc843a9d7d | 396 | Radio->Send( BufferTx, BufferSizeTx ); |
walterluu | 3:85fc843a9d7d | 397 | } |
walterluu | 3:85fc843a9d7d | 398 | else // Slave Device |
walterluu | 3:85fc843a9d7d | 399 | { |
walterluu | 3:85fc843a9d7d | 400 | Radio->Rx( RX_TIMEOUT_VALUE ); |
walterluu | 3:85fc843a9d7d | 401 | } |
walterluu | 3:85fc843a9d7d | 402 | State = LOWPOWER; // back to LOWPOWER State |
walterluu | 3:85fc843a9d7d | 403 | break; |
walterluu | 3:85fc843a9d7d | 404 | case RX_ERROR: |
walterluu | 3:85fc843a9d7d | 405 | // We have received a Packet with a CRC error, send reply as if packet was correct |
walterluu | 3:85fc843a9d7d | 406 | if( isMaster == true ) // Master Device |
walterluu | 3:85fc843a9d7d | 407 | { |
walterluu | 3:85fc843a9d7d | 408 | // Send the next PING frame |
walterluu | 3:85fc843a9d7d | 409 | // memcpy(BufferTx, PingMsg, sizeof(PingMsg)); |
walterluu | 3:85fc843a9d7d | 410 | /* |
walterluu | 3:85fc843a9d7d | 411 | for( i = 4; i < BufferSizeTx; i++ ) |
walterluu | 3:85fc843a9d7d | 412 | { |
walterluu | 3:85fc843a9d7d | 413 | BufferTx[i] = i - 4; |
walterluu | 3:85fc843a9d7d | 414 | } |
walterluu | 3:85fc843a9d7d | 415 | */ |
walterluu | 3:85fc843a9d7d | 416 | // fillPayloadWithGlobalBufs(BufferTx); |
walterluu | 3:85fc843a9d7d | 417 | wait_ms( 10 ); |
walterluu | 3:85fc843a9d7d | 418 | Radio->Send( BufferTx, BufferSizeTx ); |
walterluu | 3:85fc843a9d7d | 419 | } |
walterluu | 3:85fc843a9d7d | 420 | else // Slave Device |
walterluu | 3:85fc843a9d7d | 421 | { |
walterluu | 3:85fc843a9d7d | 422 | // Send the next PONG frame |
walterluu | 3:85fc843a9d7d | 423 | // memcpy(BufferTx, PongMsg, sizeof(PongMsg)); |
walterluu | 3:85fc843a9d7d | 424 | /* |
walterluu | 3:85fc843a9d7d | 425 | for( i = sizeof(PongMsg); i < BufferSizeTx; i++ ) |
walterluu | 3:85fc843a9d7d | 426 | { |
walterluu | 3:85fc843a9d7d | 427 | BufferTx[i] = i - sizeof(PongMsg); |
walterluu | 3:85fc843a9d7d | 428 | } |
walterluu | 3:85fc843a9d7d | 429 | */ |
walterluu | 3:85fc843a9d7d | 430 | wait_ms( 10 ); |
walterluu | 3:85fc843a9d7d | 431 | Radio->Send( BufferTx, BufferSizeTx ); |
walterluu | 3:85fc843a9d7d | 432 | } |
walterluu | 3:85fc843a9d7d | 433 | State = LOWPOWER; // Back to Low Power State |
walterluu | 3:85fc843a9d7d | 434 | break; |
walterluu | 3:85fc843a9d7d | 435 | case TX_TIMEOUT: |
walterluu | 3:85fc843a9d7d | 436 | Radio->Rx( RX_TIMEOUT_VALUE ); |
walterluu | 3:85fc843a9d7d | 437 | State = LOWPOWER; |
walterluu | 3:85fc843a9d7d | 438 | break; |
walterluu | 3:85fc843a9d7d | 439 | case LOWPOWER: |
walterluu | 3:85fc843a9d7d | 440 | sleep(); |
walterluu | 3:85fc843a9d7d | 441 | break; |
walterluu | 3:85fc843a9d7d | 442 | default: |
walterluu | 3:85fc843a9d7d | 443 | State = LOWPOWER; |
walterluu | 3:85fc843a9d7d | 444 | break; |
walterluu | 3:85fc843a9d7d | 445 | } |
walterluu | 3:85fc843a9d7d | 446 | } |
walterluu | 3:85fc843a9d7d | 447 | |
walterluu | 3:85fc843a9d7d | 448 | |
walterluu | 3:85fc843a9d7d | 449 | int TimeOnAirSend(void) { |
walterluu | 3:85fc843a9d7d | 450 | |
walterluu | 3:85fc843a9d7d | 451 | return Radio->TimeOnAir( MODEM_LORA, sizeof(BufferSizeTx)); |
walterluu | 3:85fc843a9d7d | 452 | |
walterluu | 3:85fc843a9d7d | 453 | } |
walterluu | 3:85fc843a9d7d | 454 | |
walterluu | 3:85fc843a9d7d | 455 | |
walterluu | 3:85fc843a9d7d | 456 | int SX1276SensorSend(void) { |
walterluu | 3:85fc843a9d7d | 457 | |
walterluu | 3:85fc843a9d7d | 458 | switch( State ) |
walterluu | 3:85fc843a9d7d | 459 | { |
walterluu | 3:85fc843a9d7d | 460 | case RX: |
walterluu | 3:85fc843a9d7d | 461 | // if( BufferSizeRx > 0 ) |
walterluu | 3:85fc843a9d7d | 462 | // { |
walterluu | 3:85fc843a9d7d | 463 | // Radio->Send( BufferTx, BufferSizeTx ); |
walterluu | 3:85fc843a9d7d | 464 | // Radio->Rx( RX_TIMEOUT_VALUE ); |
walterluu | 3:85fc843a9d7d | 465 | // } // end of if BufferSizeRx > 0 |
walterluu | 3:85fc843a9d7d | 466 | |
walterluu | 3:85fc843a9d7d | 467 | Radio->Send( BufferTx, BufferSizeTx ); |
walterluu | 3:85fc843a9d7d | 468 | Radio->Rx( RX_TIMEOUT_VALUE ); |
walterluu | 3:85fc843a9d7d | 469 | |
walterluu | 3:85fc843a9d7d | 470 | State = LOWPOWER; // back to LOWPOWER State |
walterluu | 3:85fc843a9d7d | 471 | |
walterluu | 3:85fc843a9d7d | 472 | break; |
walterluu | 3:85fc843a9d7d | 473 | } // end of switch statement |
walterluu | 3:85fc843a9d7d | 474 | } |
walterluu | 3:85fc843a9d7d | 475 | |
walterluu | 3:85fc843a9d7d | 476 | |
walterluu | 3:85fc843a9d7d | 477 | |
walterluu | 3:85fc843a9d7d | 478 | int SX1276GateWayReceive(int TimeOut) { |
walterluu | 3:85fc843a9d7d | 479 | |
walterluu | 3:85fc843a9d7d | 480 | switch( State ) |
walterluu | 3:85fc843a9d7d | 481 | { |
walterluu | 3:85fc843a9d7d | 482 | case RX: |
walterluu | 3:85fc843a9d7d | 483 | // if( BufferSizeRx > 0 ) |
walterluu | 3:85fc843a9d7d | 484 | // { |
walterluu | 3:85fc843a9d7d | 485 | //// Radio->Send( BufferTx, BufferSizeTx ); |
walterluu | 3:85fc843a9d7d | 486 | // Radio->Rx( RX_TIMEOUT_VALUE ); |
walterluu | 3:85fc843a9d7d | 487 | // } // end of if BufferSizeRx > 0 |
walterluu | 3:85fc843a9d7d | 488 | |
walterluu | 3:85fc843a9d7d | 489 | |
walterluu | 3:85fc843a9d7d | 490 | // Radio->Rx( RX_TIMEOUT_VALUE ); |
walterluu | 3:85fc843a9d7d | 491 | |
walterluu | 3:85fc843a9d7d | 492 | Radio->Rx( TimeOut ); |
walterluu | 3:85fc843a9d7d | 493 | |
walterluu | 3:85fc843a9d7d | 494 | State = LOWPOWER; // back to LOWPOWER State |
walterluu | 3:85fc843a9d7d | 495 | |
walterluu | 3:85fc843a9d7d | 496 | break; |
walterluu | 3:85fc843a9d7d | 497 | } // end of switch statement |
walterluu | 3:85fc843a9d7d | 498 | } |
walterluu | 3:85fc843a9d7d | 499 | |
walterluu | 3:85fc843a9d7d | 500 | |
walterluu | 3:85fc843a9d7d | 501 | |
walterluu | 3:85fc843a9d7d | 502 | |
walterluu | 3:85fc843a9d7d | 503 | //void OnTxDone(void *radio, void *userThisPtr, void *userData) |
walterluu | 3:85fc843a9d7d | 504 | //{ |
walterluu | 3:85fc843a9d7d | 505 | // Radio->Sleep( ); |
walterluu | 3:85fc843a9d7d | 506 | // State = TX; |
walterluu | 3:85fc843a9d7d | 507 | // if (DEBUG_MESSAGE) |
walterluu | 3:85fc843a9d7d | 508 | // dprintf("> OnTxDone"); |
walterluu | 3:85fc843a9d7d | 509 | //} |
walterluu | 3:85fc843a9d7d | 510 | |
walterluu | 3:85fc843a9d7d | 511 | // moved to main |
walterluu | 3:85fc843a9d7d | 512 | void OnTxDone(void *radio, void *userThisPtr, void *userData) |
walterluu | 3:85fc843a9d7d | 513 | { |
walterluu | 3:85fc843a9d7d | 514 | Radio->Sleep( ); |
walterluu | 3:85fc843a9d7d | 515 | State = TX; |
walterluu | 3:85fc843a9d7d | 516 | if (DEBUG_MESSAGE) |
walterluu | 3:85fc843a9d7d | 517 | //dprintf("> OnTxDone"); |
walterluu | 3:85fc843a9d7d | 518 | ad->printf("> OnTxDone"); |
walterluu | 3:85fc843a9d7d | 519 | } |
walterluu | 3:85fc843a9d7d | 520 | |
walterluu | 3:85fc843a9d7d | 521 | |
walterluu | 3:85fc843a9d7d | 522 | //void OnRxDone(void *radio, void *userThisPtr, void *userData, uint8_t *payload, uint16_t size, int16_t rssi, int8_t snr) |
walterluu | 3:85fc843a9d7d | 523 | //{ |
walterluu | 3:85fc843a9d7d | 524 | // Radio->Sleep( ); |
walterluu | 3:85fc843a9d7d | 525 | // BufferSize = size; |
walterluu | 3:85fc843a9d7d | 526 | // memcpy( Buffer, payload, BufferSize ); |
walterluu | 3:85fc843a9d7d | 527 | // State = RX; |
walterluu | 3:85fc843a9d7d | 528 | // if (DEBUG_MESSAGE) |
walterluu | 3:85fc843a9d7d | 529 | // dprintf("> OnRxDone: RssiValue=%d dBm, SnrValue=%d", rssi, snr); |
walterluu | 3:85fc843a9d7d | 530 | // dump("Data:", payload, size); |
walterluu | 3:85fc843a9d7d | 531 | //} |
walterluu | 3:85fc843a9d7d | 532 | |
walterluu | 3:85fc843a9d7d | 533 | // moved to main |
walterluu | 3:85fc843a9d7d | 534 | void OnRxDone(void *radio, void *userThisPtr, void *userData, uint8_t *payload, uint16_t size, int16_t rssi, int8_t snr) |
walterluu | 3:85fc843a9d7d | 535 | { |
walterluu | 3:85fc843a9d7d | 536 | Radio->Sleep( ); |
walterluu | 3:85fc843a9d7d | 537 | |
walterluu | 3:85fc843a9d7d | 538 | if(BufferSizeRx != size) |
walterluu | 3:85fc843a9d7d | 539 | memcpy( BufferRx, payload, size ); |
walterluu | 3:85fc843a9d7d | 540 | else |
walterluu | 3:85fc843a9d7d | 541 | memcpy( BufferRx, payload, BufferSizeRx ); |
walterluu | 3:85fc843a9d7d | 542 | State = RX; |
walterluu | 3:85fc843a9d7d | 543 | |
walterluu | 3:85fc843a9d7d | 544 | // Reset the RxTimeoutCount |
walterluu | 3:85fc843a9d7d | 545 | RxTimeoutCount = 0; |
walterluu | 3:85fc843a9d7d | 546 | |
walterluu | 3:85fc843a9d7d | 547 | if (DEBUG_MESSAGE) { |
walterluu | 3:85fc843a9d7d | 548 | ad->printf("> OnRxDone: RssiValue=%d dBm, SnrValue=%d\n", rssi, snr); |
walterluu | 3:85fc843a9d7d | 549 | dump("Data:", payload, size); |
walterluu | 3:85fc843a9d7d | 550 | } |
walterluu | 3:85fc843a9d7d | 551 | } |
walterluu | 3:85fc843a9d7d | 552 | |
walterluu | 3:85fc843a9d7d | 553 | //void OnTxTimeout(void *radio, void *userThisPtr, void *userData) |
walterluu | 3:85fc843a9d7d | 554 | //{ |
walterluu | 3:85fc843a9d7d | 555 | // *led3 = 0; |
walterluu | 3:85fc843a9d7d | 556 | // Radio->Sleep( ); |
walterluu | 3:85fc843a9d7d | 557 | // State = TX_TIMEOUT; |
walterluu | 3:85fc843a9d7d | 558 | // if(DEBUG_MESSAGE) |
walterluu | 3:85fc843a9d7d | 559 | // dprintf("> OnTxTimeout"); |
walterluu | 3:85fc843a9d7d | 560 | //} |
walterluu | 3:85fc843a9d7d | 561 | |
walterluu | 3:85fc843a9d7d | 562 | // moved to main |
walterluu | 3:85fc843a9d7d | 563 | void OnTxTimeout(void *radio, void *userThisPtr, void *userData) |
walterluu | 3:85fc843a9d7d | 564 | { |
walterluu | 3:85fc843a9d7d | 565 | // *led3 = 0; |
walterluu | 3:85fc843a9d7d | 566 | Radio->Sleep( ); |
walterluu | 3:85fc843a9d7d | 567 | State = TX_TIMEOUT; |
walterluu | 3:85fc843a9d7d | 568 | if(DEBUG_MESSAGE) |
walterluu | 3:85fc843a9d7d | 569 | ad->printf("> OnTxTimeout"); |
walterluu | 3:85fc843a9d7d | 570 | } |
walterluu | 3:85fc843a9d7d | 571 | |
walterluu | 3:85fc843a9d7d | 572 | //void OnRxTimeout(void *radio, void *userThisPtr, void *userData) |
walterluu | 3:85fc843a9d7d | 573 | //{ |
walterluu | 3:85fc843a9d7d | 574 | // *led3 = 0; |
walterluu | 3:85fc843a9d7d | 575 | // Radio->Sleep( ); |
walterluu | 3:85fc843a9d7d | 576 | // Buffer[BufferSize-1] = 0; |
walterluu | 3:85fc843a9d7d | 577 | // State = RX_TIMEOUT; |
walterluu | 3:85fc843a9d7d | 578 | // if (DEBUG_MESSAGE) |
walterluu | 3:85fc843a9d7d | 579 | // dprintf("> OnRxTimeout"); |
walterluu | 3:85fc843a9d7d | 580 | //} |
walterluu | 3:85fc843a9d7d | 581 | |
walterluu | 3:85fc843a9d7d | 582 | // moved to main |
walterluu | 3:85fc843a9d7d | 583 | void OnRxTimeout(void *radio, void *userThisPtr, void *userData) |
walterluu | 3:85fc843a9d7d | 584 | { |
walterluu | 3:85fc843a9d7d | 585 | Radio->Sleep( ); |
walterluu | 3:85fc843a9d7d | 586 | BufferRx[BufferSizeRx-1] = 0; |
walterluu | 3:85fc843a9d7d | 587 | State = RX_TIMEOUT; |
walterluu | 3:85fc843a9d7d | 588 | if (DEBUG_MESSAGE) |
walterluu | 3:85fc843a9d7d | 589 | ad->printf("> OnRxTimeout\n"); |
walterluu | 3:85fc843a9d7d | 590 | |
walterluu | 3:85fc843a9d7d | 591 | // Increment how many times a transmission times out\ |
walterluu | 3:85fc843a9d7d | 592 | RxTimeoutCount = RxTimeoutCount + 1; |
walterluu | 3:85fc843a9d7d | 593 | } |
walterluu | 3:85fc843a9d7d | 594 | |
walterluu | 3:85fc843a9d7d | 595 | //void OnRxError(void *radio, void *userThisPtr, void *userData) |
walterluu | 3:85fc843a9d7d | 596 | //{ |
walterluu | 3:85fc843a9d7d | 597 | // Radio->Sleep( ); |
walterluu | 3:85fc843a9d7d | 598 | // State = RX_ERROR; |
walterluu | 3:85fc843a9d7d | 599 | // if (DEBUG_MESSAGE) |
walterluu | 3:85fc843a9d7d | 600 | // dprintf("> OnRxError"); |
walterluu | 3:85fc843a9d7d | 601 | //} |
walterluu | 3:85fc843a9d7d | 602 | |
walterluu | 3:85fc843a9d7d | 603 | // moved to main |
walterluu | 3:85fc843a9d7d | 604 | void OnRxError(void *radio, void *userThisPtr, void *userData) |
walterluu | 3:85fc843a9d7d | 605 | { |
walterluu | 3:85fc843a9d7d | 606 | Radio->Sleep( ); |
walterluu | 3:85fc843a9d7d | 607 | State = RX_ERROR; |
walterluu | 3:85fc843a9d7d | 608 | if (DEBUG_MESSAGE) |
walterluu | 3:85fc843a9d7d | 609 | ad->printf("> OnRxError\n"); |
walterluu | 3:85fc843a9d7d | 610 | |
walterluu | 3:85fc843a9d7d | 611 | // Increment how many times a transmission times out\ |
walterluu | 3:85fc843a9d7d | 612 | RxTimeoutCount = RxTimeoutCount + 1; |
walterluu | 3:85fc843a9d7d | 613 | } |
walterluu | 3:85fc843a9d7d | 614 | |
walterluu | 3:85fc843a9d7d | 615 | |
walterluu | 3:85fc843a9d7d | 616 | int numOfRxTimeouts() |
walterluu | 3:85fc843a9d7d | 617 | { |
walterluu | 3:85fc843a9d7d | 618 | return RxTimeoutCount; |
walterluu | 3:85fc843a9d7d | 619 | } |
walterluu | 3:85fc843a9d7d | 620 | |
walterluu | 3:85fc843a9d7d | 621 | |
walterluu | 7:8875c4d513bb | 622 | |
walterluu | 7:8875c4d513bb | 623 | |
walterluu | 3:85fc843a9d7d | 624 | #endif |