Skip to content

Commit

Permalink
Merge pull request arduino-libraries#116 from luigigubello/random_loc…
Browse files Browse the repository at this point in the history
…al_port

Added method to set random local port
  • Loading branch information
aentinger authored Sep 3, 2020
2 parents 894b21d + f567329 commit aff9c6b
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 4 deletions.
10 changes: 8 additions & 2 deletions NTPClient.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ void NTPClient::begin() {
this->begin(NTP_DEFAULT_LOCAL_PORT);
}

void NTPClient::begin(int port) {
void NTPClient::begin(unsigned int port) {
this->_port = port;

this->_udp->begin(this->_port);
Expand Down Expand Up @@ -120,7 +120,7 @@ bool NTPClient::forceUpdate() {
bool NTPClient::update() {
if ((millis() - this->_lastUpdate >= this->_updateInterval) // Update after _updateInterval
|| this->_lastUpdate == 0) { // Update if there was no update yet.
if (!this->_udpSetup) this->begin(); // setup the UDP client if needed
if (!this->_udpSetup || this->_port != NTP_DEFAULT_LOCAL_PORT) this->begin(this->_port); // setup the UDP client if needed
return this->forceUpdate();
}
return false; // return false if update does not occur
Expand Down Expand Up @@ -182,6 +182,7 @@ void NTPClient::sendNTPPacket() {
memset(this->_packetBuffer, 0, NTP_PACKET_SIZE);
// Initialize values needed to form NTP request
// (see URL above for details on the packets)

this->_packetBuffer[0] = 0b11100011; // LI, Version, Mode
this->_packetBuffer[1] = 0; // Stratum, or type of clock
this->_packetBuffer[2] = 6; // Polling Interval
Expand All @@ -202,3 +203,8 @@ void NTPClient::sendNTPPacket() {
this->_udp->write(this->_packetBuffer, NTP_PACKET_SIZE);
this->_udp->endPacket();
}

void NTPClient::setRandomPort(unsigned int minValue, unsigned int maxValue) {
randomSeed(analogRead(0));
this->_port = random(minValue, maxValue);
}
9 changes: 7 additions & 2 deletions NTPClient.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ class NTPClient {

const char* _poolServerName = "pool.ntp.org"; // Default time server
IPAddress _poolServerIP;
int _port = NTP_DEFAULT_LOCAL_PORT;
unsigned int _port = NTP_DEFAULT_LOCAL_PORT;
long _timeOffset = 0;

unsigned long _updateInterval = 60000; // In ms
Expand Down Expand Up @@ -44,6 +44,11 @@ class NTPClient {
*/
void setPoolServerName(const char* poolServerName);

/**
* Set random local port
*/
void setRandomPort(unsigned int minValue, unsigned int maxValue);

/**
* Starts the underlying UDP client with the default local port
*/
Expand All @@ -52,7 +57,7 @@ class NTPClient {
/**
* Starts the underlying UDP client with the specified local port
*/
void begin(int port);
void begin(unsigned int port);

/**
* This should be called in the main loop of your application. By default an update from the NTP Server is only
Expand Down

0 comments on commit aff9c6b

Please sign in to comment.