LoRa Access Point 1.5.2018
Dependencies: mbed ds3231 SX1276Lib_LoRa_Access_Point
Diff: RFM95W.cpp
- 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 )