LoRa Access Point 1.5.2018
Dependencies: mbed ds3231 SX1276Lib_LoRa_Access_Point
Diff: RFM95W.h
- Revision:
- 3:7a3ddda464bf
- Parent:
- 2:0499e1d037a5
- Child:
- 4:e20eb5efd859
--- a/RFM95W.h Mon Apr 23 10:30:01 2018 +0000 +++ b/RFM95W.h Mon Apr 23 21:28:36 2018 +0000 @@ -56,6 +56,7 @@ #define RX_TIMEOUT_VALUE 2500000 // in us // 3500000 #define BUFF_SIZE 255 // Define the payload size here // 32 #define MAX_DEVICES 255 +#define MAX_RESENDS 5 //------------------------------------------------------------------------------ //------------------------------------------------------------------------------ @@ -65,15 +66,29 @@ RadioEvents_t radioEvents; /**< Radio events function pointer */ SX1276MB1xAS radio; /**< Radiovy modul */ DigitalOut indicationLed; /**< Indikacna led */ + AnalogIn noise; Ticker ledTicker; -// uint8_t receivedMessage[BUFF_SIZE]; + Ticker sendTicker; + Ticker ackTicker; + uint8_t receivedMessage[BUFF_SIZE]; + uint8_t sendBuffer[BUFF_SIZE]; + uint8_t ack[3]; volatile uint8_t messageNumbers[MAX_DEVICES]; + volatile uint8_t messageNumber; /**< My message number */ volatile uint8_t ledState; volatile float timeOnAirSec; + volatile bool receivedAck; + volatile bool sendingAck; + volatile uint8_t sendCounter; + float CalculateRandomTime(); + void InitRandom(); void OnLedTick(); + void SendMessage(); void SendAck(uint8_t addr, uint8_t messageNumber); + void OnCheckAck(); + void OnSendAgain(); public: RFM95W(); void Init(); @@ -82,7 +97,8 @@ void OnTxTimeout( void ); void OnRxTimeout( void ); void OnRxError( void ); - void OnCadDone( bool channelActivityDetected ); + void OnCadDone( bool channelActivityDetected ); + void SendValue(uint8_t addr, float value); }; extern RFM95W rfm;