LoRa Access Point 1.5.2018

Dependencies:   mbed ds3231 SX1276Lib_LoRa_Access_Point

Revision:
8:5d99fbf255d6
Parent:
6:1ee035ae2a2c
Child:
10:e62222c46ee9
--- 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" );