LoRa Access Point 1.5.2018
Dependencies: mbed ds3231 SX1276Lib_LoRa_Access_Point
Diff: RFM95W.cpp
- Revision:
- 8:5d99fbf255d6
- Parent:
- 6:1ee035ae2a2c
- Child:
- 10:e62222c46ee9
diff -r 33562b3c6012 -r 5d99fbf255d6 RFM95W.cpp --- a/RFM95W.cpp Tue May 01 11:35:51 2018 +0000 +++ b/RFM95W.cpp Wed Feb 13 18:03:44 2019 +0000 @@ -48,6 +48,7 @@ messageNumber = GATEWAY_ID; sendCounter = 0; receivedAck = false; + writeDataToSD = false; }; void RFM95W::OnLedTick() @@ -82,13 +83,16 @@ while(number == 0) { number = rand() % 1500; } - return (timeOnAirSec * (number / 150.0)); + return (timeOnAirSec * (number / 500.0)); }; void RFM95W::OnCheckAck() { if((receivedAck == false) && (sendCounter < MAX_RESENDS)) + { + sendTicker.detach(); sendTicker.attach(callback(this,&RFM95W::OnSendAgain), CalculateRandomTime()); + } else if((receivedAck == false) && (sendCounter >= MAX_RESENDS)) { messageNumber++; if(messageNumber>255) @@ -109,10 +113,13 @@ { radio.Sleep(); if(sendingAck) + { sendingAck = false; + } else { pc.printf("OnTxDone !\r\n"); receivedAck = false; + ackTicker.detach(); ackTicker.attach(callback(this,&RFM95W::OnCheckAck),timeOnAirSec*3); } radio.Rx(0); @@ -124,6 +131,7 @@ if(payload[0] == GATEWAY_ID) { uint8_t msgFrom = payload[1]; indicationLed=0; + ledTicker.detach(); ledTicker.attach(callback(this,&RFM95W::OnLedTick), LED_BLIK_PERIOD); if((size == 3) && (strncmp( ( const char* )payload, ( const char* )ack, 3 ) == 0) ) { receivedAck = true; @@ -146,7 +154,9 @@ payload[2] = 48; memmove(payload, payload+4, size - 4 + 1); // orezem prve styri bajty snprintf((char *)receivedMessage, BUFF_SIZE, "%d|%d|%d|%d|%s|\r\n", rssi, snr, GATEWAY_ID, msgFrom, payload); - wifi.SendMessage((char *)receivedMessage); + writeDataToSD = true; + wifi.SendMessage((char *)receivedMessage); + SDcard.Write((char *)receivedMessage); return; } radio.Rx(0); @@ -202,6 +212,15 @@ SendMessage(); }; +void RFM95W::WriteDataToSDcard() +{ + if(writeDataToSD) + { + // SDcard.Write((char *)receivedMessage); + writeDataToSD = false; + } +} + void RFM95W::Init( void ) { pc.printf( "\n\n\r------- RFM95W GATEWAY -------\n\r" );