LoRa Access Point 1.5.2018

Dependencies:   mbed ds3231 SX1276Lib_LoRa_Access_Point

Revision:
4:e20eb5efd859
Parent:
3:7a3ddda464bf
Child:
5:19b34c4d27a1
--- a/RFM95W.cpp	Mon Apr 23 21:28:36 2018 +0000
+++ b/RFM95W.cpp	Mon Apr 30 17:09:34 2018 +0000
@@ -47,7 +47,7 @@
 void RFM95W::SendMessage()
 {
     snprintf((char *)ack, 3, "%c%c%c",GATEWAY_ID, sendBuffer[0], messageNumber);
-    radio.Send( sendBuffer, 10 );       // poslem len 10 bajtov
+    radio.Send( sendBuffer, 15 );       // poslem len 10 bajtov
 }
 
 void RFM95W::SendAck(uint8_t addr, uint8_t messageNumber)
@@ -60,31 +60,27 @@
 
 float RFM95W::CalculateRandomTime()
 {
-    uint8_t number;
-    while(number == 0) {number = rand() % 1200;}
-    return (timeOnAirSec * (number / 200.0));
+    uint8_t number = rand() % 1500;;
+    while(number == 0) {number = rand() % 1500;}
+    return (timeOnAirSec * (number / 150.0));
 };
 
 void RFM95W::OnCheckAck()
 {
     if((receivedAck == false) && (sendCounter < MAX_RESENDS))
+        sendTicker.attach(callback(this,&RFM95W::OnSendAgain), CalculateRandomTime());
+    else if((receivedAck == false) && (sendCounter >= MAX_RESENDS))
     {
-        sendTicker.attach(callback(this,&RFM95W::OnSendAgain), CalculateRandomTime());
-/*        NumberOfFailSends++;
-        if(NumberOfFailSends >=3 )
-        {
-//            MessageAlter = !MessageAlter;           // ????????????????????????????????????????????????????????????????????????????????????????????????????????
-           NumberOfFailSends = 0;
-           sampleTicker.detach();
-           sampleTicker.attach(&onSampleTick,15.0);          // kazdych 15s
-        }
-*/
+        messageNumber++;
+        if(messageNumber>255)
+            messageNumber = 0;
     }
     ackTicker.detach();
 };
 
 void RFM95W::OnSendAgain()
 {
+    pc.printf("On send again \r\n");
     SendMessage();
     sendCounter++;
     sendTicker.detach();
@@ -97,6 +93,7 @@
         sendingAck = false;
     else
     {
+        pc.printf("OnTxDone !\r\n");
         receivedAck = false;
         ackTicker.attach(callback(this,&RFM95W::OnCheckAck),timeOnAirSec*3);
     }
@@ -173,7 +170,28 @@
     snprintf((char *)sendBuffer, BUFF_SIZE, "%c%c%c|%.2f|",addr, GATEWAY_ID, messageNumber, value);
     sendCounter = 0;
     receivedAck = false;
-    SendMessage();
+    SendMessage();   
+};
+
+void RFM95W::SendValue(uint8_t addr, int value)
+{
+    snprintf((char *)sendBuffer, BUFF_SIZE, "%c%c%c|%d|",addr, GATEWAY_ID, messageNumber, value);
+    sendCounter = 0;
+    receivedAck = false;
+    SendMessage();   
+};
+
+void RFM95W::SendMessage(char* message)
+{
+    snprintf((char *)sendBuffer, BUFF_SIZE, "%s", message);
+    sendBuffer[0] = (char)sendBuffer[0];
+    sendBuffer[1] = (char)GATEWAY_ID;
+    sendBuffer[2] = (char)messageNumber;
+    sendCounter = 0;
+    receivedAck = false;
+
+    pc.printf("%s",sendBuffer);
+    SendMessage();   
 };
 
 void RFM95W::Init( void )