diff --git a/src/didacticNet.cpp b/src/didacticNet.cpp index 6529e29f65f275139ccda0158965048c4ec2ed56..1b69eb7f69f451af788eed4512b5d0f0e170d21f 100644 --- a/src/didacticNet.cpp +++ b/src/didacticNet.cpp @@ -34,7 +34,7 @@ void didacticPSNet::setStream(Stream& stream){ } bool didacticPSNet::handleNetwork(){ - if(_waitingTime <= millis()){ + //if(_waitingTime <= millis()){ if(checkData()){ if(recieveData()){ //Serial.print("Message filter: ");Serial.println(_readBufferMessage[1]); @@ -45,21 +45,23 @@ bool didacticPSNet::handleNetwork(){ } _waitingTime = millis()+ random(CSMA_MIN_DELAY_MS, CSMA_MAX_DELAY_MS); } - else if(_dataToSend){ - //send data to network + //else if(_dataToSend){ + if(_dataToSend && _waitingTime <= millis()){ + //send data to network //TODO: test added CSMA_CHECKDELAY + 2nd checkData() delayMicroseconds(CSMA_CHECK_DELAY_US); if(!checkData()){ - if(!sendData()){ - return false; - } + if(!sendData()){ + return false; + } else{ _dataToSend = false; - _waitingTime = millis()+ random(CSMA_MID_DELAY_MS, CSMA_MAX_DELAY_MS); + //_waitingTime = millis()+ random(CSMA_MID_DELAY_MS, CSMA_MAX_DELAY_MS); + _waitingTime = millis()+ _intervalTime;//random(CSMA_MID_DELAY_MS, CSMA_MAX_DELAY_MS); } } - } - } + } + //} return true; } @@ -139,10 +141,17 @@ bool didacticPSNet::recieveData() { return false; } + void didacticPSNet::setInterval(long intervalTime){ + _intervalTime = intervalTime; + } + + //************************************************************************** // CLIENT //************************************************************************** -didacticPSNetClient::didacticPSNetClient(){} +didacticPSNetClient::didacticPSNetClient(){ + _intervalTime = INTERVAL_CLIENT; +} didacticPSNetClient::~didacticPSNetClient(){} @@ -414,7 +423,9 @@ int didacticPSNetClient::readSerialData(Stream& rsStream, char* rsDataArray, cha //************************************************************************** //Broker //************************************************************************** -didacticPSNetBroker::didacticPSNetBroker(){} +didacticPSNetBroker::didacticPSNetBroker(){ + _intervalTime = INTERVAL_BROKER; +} didacticPSNetBroker::~didacticPSNetBroker(){} diff --git a/src/didacticNet.h b/src/didacticNet.h index fda76125d25b7ba99a791feecf4b73beec7f4979..13250d6ecfd65fc224732297f3029606dfca9a16 100644 --- a/src/didacticNet.h +++ b/src/didacticNet.h @@ -31,6 +31,9 @@ #define CSMA_MID_DELAY_MS 20 #define CSMA_MAX_DELAY_MS 30 +#define INTERVAL_CLIENT 500L +#define INTERVAL_BROKER 0L + #define MAX_NR_TOPICS_CLIENT 5 #define MAX_NR_TOPICS_BROKER 20 #define MAX_LEN_TOPICS 10 @@ -58,6 +61,7 @@ class didacticPSNet bool _dataToSend = false; // int Data to send for queue? unsigned long _waitingTime = 0L; + unsigned long _intervalTime; int _currentTopicLength = 0; int _currentPayloadLength = 0; @@ -84,6 +88,8 @@ class didacticPSNet bool handleNetwork(); bool isDataToSend(); + void setInterval(long); + }; class didacticPSNetClient : public didacticPSNet