|
- /*!
- * \file main.c
- *
- * \brief Radio sensitivity test
- *
- * \remark When LED1 stops blinking LoRa packets aren't received any more and
- * the sensitivity level has been reached.
- * By reading the RF generator output power we can estimate the board
- * sensitivity
- *
- * \copyright Revised BSD License, see section \ref LICENSE.
- *
- * \code
- * ______ _
- * / _____) _ | |
- * ( (____ _____ ____ _| |_ _____ ____| |__
- * \____ \| ___ | (_ _) ___ |/ ___) _ \
- * _____) ) ____| | | || |_| ____( (___| | | |
- * (______/|_____)_|_|_| \__)_____)\____)_| |_|
- * (C)2013-2017 Semtech
- *
- * \endcode
- *
- * \author Miguel Luis ( Semtech )
- *
- * \author Gregory Cristian ( Semtech )
- */
- #include "board.h"
- #include "gpio.h"
- #include "timer.h"
- #include "radio.h"
-
- #if defined( REGION_AS923 )
-
- #define RF_FREQUENCY 923000000 // Hz
-
- #elif defined( REGION_AU915 )
-
- #define RF_FREQUENCY 915000000 // Hz
-
- #elif defined( REGION_CN470 )
-
- #define RF_FREQUENCY 470000000 // Hz
-
- #elif defined( REGION_CN779 )
-
- #define RF_FREQUENCY 779000000 // Hz
-
- #elif defined( REGION_EU433 )
-
- #define RF_FREQUENCY 433000000 // Hz
-
- #elif defined( REGION_EU868 )
-
- #define RF_FREQUENCY 868000000 // Hz
-
- #elif defined( REGION_KR920 )
-
- #define RF_FREQUENCY 920000000 // Hz
-
- #elif defined( REGION_IN865 )
-
- #define RF_FREQUENCY 865000000 // Hz
-
- #elif defined( REGION_US915 )
-
- #define RF_FREQUENCY 915000000 // Hz
-
- #elif defined( REGION_RU864 )
-
- #define RF_FREQUENCY 864000000 // Hz
-
- #else
- #error "Please define a frequency band in the compiler options."
- #endif
-
- #if defined( USE_MODEM_LORA )
-
- #define LORA_BANDWIDTH 0 // [0: 125 kHz,
- // 1: 250 kHz,
- // 2: 500 kHz,
- // 3: Reserved]
- #define LORA_SPREADING_FACTOR 10 // [SF7..SF12]
- #define LORA_CODINGRATE 1 // [1: 4/5,
- // 2: 4/6,
- // 3: 4/7,
- // 4: 4/8]
- #define LORA_SYMBOL_TIMEOUT 5 // Symbols
- #define LORA_PREAMBLE_LENGTH 8 // Same for Tx and Rx
- #define LORA_FIX_LENGTH_PAYLOAD_ON false
- #define LORA_IQ_INVERSION_ON false
-
- #elif defined( USE_MODEM_FSK )
-
- #define FSK_DATARATE 50000 // bps
- #define FSK_BANDWIDTH 50000 // Hz
- #define FSK_AFC_BANDWIDTH 83333 // Hz
- #define FSK_PREAMBLE_LENGTH 5 // Same for Tx and Rx
- #define FSK_FIX_LENGTH_PAYLOAD_ON false
-
- #else
- #error "Please define a modem in the compiler options."
- #endif
-
- /*!
- * Radio events function pointer
- */
- static RadioEvents_t RadioEvents;
-
- /*!
- * LED GPIO pins objects
- */
- extern Gpio_t Led1;
-
- /*!
- * \brief Function to be executed on Radio Rx Done event
- */
- void OnRxDone( uint8_t *payload, uint16_t size, int16_t rssi, int8_t snr );
-
- /*!
- * Main application entry point.
- */
- int main( void )
- {
- // Target board initialization
- BoardInitMcu( );
- BoardInitPeriph( );
-
- // Radio initialization
- RadioEvents.RxDone = OnRxDone;
-
- Radio.Init( &RadioEvents );
-
- Radio.SetChannel( RF_FREQUENCY );
-
- #if defined( USE_MODEM_LORA )
-
- Radio.SetRxConfig( MODEM_LORA, LORA_BANDWIDTH, LORA_SPREADING_FACTOR,
- LORA_CODINGRATE, 0, LORA_PREAMBLE_LENGTH,
- LORA_SYMBOL_TIMEOUT, LORA_FIX_LENGTH_PAYLOAD_ON,
- 0, true, 0, 0, LORA_IQ_INVERSION_ON, true );
-
- Radio.SetMaxPayloadLength( MODEM_LORA, 255 );
-
- #elif defined( USE_MODEM_FSK )
-
- Radio.SetRxConfig( MODEM_FSK, FSK_BANDWIDTH, FSK_DATARATE,
- 0, FSK_AFC_BANDWIDTH, FSK_PREAMBLE_LENGTH,
- 0, FSK_FIX_LENGTH_PAYLOAD_ON, 0, true,
- 0, 0, false, true );
-
- Radio.SetMaxPayloadLength( MODEM_FSK, 255 );
-
- #else
- #error "Please define a frequency band in the compiler options."
- #endif
-
- Radio.Rx( 0 ); // Continuous Rx
-
- while( 1 )
- {
- BoardLowPowerHandler( );
- // Process Radio IRQ
- if( Radio.IrqProcess != NULL )
- {
- Radio.IrqProcess( );
- }
- }
- }
-
- void OnRxDone( uint8_t *payload, uint16_t size, int16_t rssi, int8_t snr )
- {
- static uint8_t ledState = 1;
- // Toggle LED 1
- ledState ^= 1;
- GpioWrite( &Led1, ledState );
- }
|