LoRa Access Point 1.5.2018
Dependencies: mbed ds3231 SX1276Lib_LoRa_Access_Point
Diff: RFM95W.h
- Revision:
- 0:ea088908ad26
- Child:
- 1:7543af31b91f
diff -r 000000000000 -r ea088908ad26 RFM95W.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/RFM95W.h Wed Apr 18 20:33:15 2018 +0000 @@ -0,0 +1,91 @@ +#ifndef RFM95W_H +#define RFM95W_H + +#include "mbed.h" +#include "sx1276-hal.h" +#include "ESP8266.h" + +#define GATEWAY_ID 1 // Moja adresa (id) + +//////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////// +/* Set this flag to '1' to display debug messages on the console */ +#define DEBUG_MESSAGE 0 + +/* Set this flag to '1' to use the LoRa modulation or to '0' to use FSK modulation */ +#define USE_MODEM_LORA 1 +#define USE_MODEM_FSK !USE_MODEM_LORA + +#define RF_FREQUENCY 869525000 //868000000 // Hz +#define TX_OUTPUT_POWER 20 // 20 dBm + +#if USE_MODEM_LORA == 1 + // Max range, slow data rate = BW=125, CR=4/5, SF=12 + #define LORA_BANDWIDTH 1 // [0: 125 kHz, + // 1: 250 kHz, + // 2: 500 kHz, + // 3: Reserved] + #define LORA_SPREADING_FACTOR 12 // [SF7..SF12] + #define LORA_CODINGRATE 1 // [1: 4/5, + // 2: 4/6, + // 3: 4/7, + // 4: 4/8] + #define LORA_PREAMBLE_LENGTH 8 // Same for Tx and Rx + #define LORA_SYMBOL_TIMEOUT 5 // Symbols + #define LORA_FIX_LENGTH_PAYLOAD_ON false + #define LORA_FHSS_ENABLED false + #define LORA_NB_SYMB_HOP 4 + #define LORA_IQ_INVERSION_ON false + #define LORA_CRC_ENABLED true + +#elif USE_MODEM_FSK == 1 + + #define FSK_FDEV 25000 // Hz + #define FSK_DATARATE 19200 // 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 + #define FSK_CRC_ENABLED true + +#else + #error "Please define a modem in the compiler options." +#endif + +#define RX_TIMEOUT_VALUE 2500000 // in us // 3500000 +#define BUFF_SIZE 255 // Define the payload size here // 32 + +#define MAX_DEVICES 255 +#define LED PB_0 //PC_0 +#define LED_BLIK_PERIOD 0.10 +//------------------------------------------------------------------------------ +//------------------------------------------------------------------------------ + +class RFM95W +{ +private: + RadioEvents_t radioEvents; /**< Radio events function pointer */ + SX1276MB1xAS radio; /**< Radiovy modul */ + DigitalOut indicationLed; /**< Indikacna led */ + Ticker ledTicker; +// uint8_t receivedMessage[BUFF_SIZE]; + uint8_t receivedMessage[BUFF_SIZE+10]; + volatile uint8_t messageNumbers[MAX_DEVICES]; + volatile uint8_t ledState; + volatile float timeOnAirSec; + + void OnLedTick(); + void SendAck(uint8_t addr, uint8_t messageNumber); +public: + RFM95W(); + void Init(); + void OnTxDone( void ); + void OnRxDone( uint8_t *payload, uint16_t size, int16_t rssi, int8_t snr ); + void OnTxTimeout( void ); + void OnRxTimeout( void ); + void OnRxError( void ); + void OnCadDone( bool channelActivityDetected ); +}; +extern RFM95W rfm; + +#endif \ No newline at end of file