diff --git a/libraries/ESP8266SSDP/ESP8266SSDP.cpp b/libraries/ESP8266SSDP/ESP8266SSDP.cpp index aed49929d5..93121ffc8c 100644 --- a/libraries/ESP8266SSDP/ESP8266SSDP.cpp +++ b/libraries/ESP8266SSDP/ESP8266SSDP.cpp @@ -69,7 +69,7 @@ static const char _ssdp_notify_template[] PROGMEM = static const char _ssdp_packet_template[] PROGMEM = "%s" // _ssdp_response_template / _ssdp_notify_template - "CACHE-CONTROL: max-age=%u\r\n" // SSDP_INTERVAL + "CACHE-CONTROL: max-age=%u\r\n" // _interval "SERVER: Arduino/1.0 UPNP/1.1 %s/%s\r\n" // _modelName, _modelNumber "USN: %s\r\n" // _uuid "%s: %s\r\n" // "NT" or "ST", _deviceType @@ -130,6 +130,7 @@ SSDPClass::SSDPClass() : _timer(0), _port(80), _ttl(SSDP_MULTICAST_TTL), + _interval(SSDP_INTERVAL), _respondToAddr(0,0,0,0), _respondToPort(0), _pending(false), @@ -241,7 +242,7 @@ void SSDPClass::_send(ssdp_method_t method) { int len = snprintf_P(buffer, sizeof(buffer), _ssdp_packet_template, valueBuffer, - SSDP_INTERVAL, + _interval, _modelName, _modelNumber, _uuid, @@ -428,7 +429,7 @@ void SSDPClass::_update() { if (_pending && (millis() - _process_time) > _delay) { _pending = false; _delay = 0; _send(NONE); - } else if(_notify_time == 0 || (millis() - _notify_time) > (SSDP_INTERVAL * 1000L)){ + } else if(_notify_time == 0 || (millis() - _notify_time) > (_interval * 1000L)){ _notify_time = millis(); _st_is_uuid = false; _send(NOTIFY); @@ -493,11 +494,14 @@ void SSDPClass::setManufacturerURL(const char *url) { strlcpy(_manufacturerURL, url, sizeof(_manufacturerURL)); } - void SSDPClass::setTTL(const uint8_t ttl) { _ttl = ttl; } +void SSDPClass::setInterval(uint32_t interval) { + _interval = interval; +} + void SSDPClass::_onTimerStatic(SSDPClass* self) { self->_update(); } diff --git a/libraries/ESP8266SSDP/ESP8266SSDP.h b/libraries/ESP8266SSDP/ESP8266SSDP.h index ec7c86e2b5..527822f6dc 100644 --- a/libraries/ESP8266SSDP/ESP8266SSDP.h +++ b/libraries/ESP8266SSDP/ESP8266SSDP.h @@ -71,13 +71,13 @@ class SSDPClass{ void setUUID(const String& uuid) { setUUID(uuid.c_str()); } void setUUID(const char *uuid); - void setName(const String& name) { setName(name.c_str()); } + void setName(const String& name) { setName(name.c_str()); } void setName(const char *name); void setURL(const String& url) { setURL(url.c_str()); } void setURL(const char *url); void setSchemaURL(const String& url) { setSchemaURL(url.c_str()); } void setSchemaURL(const char *url); - void setSerialNumber(const String& serialNumber) { setSerialNumber(serialNumber.c_str()); } + void setSerialNumber(const String& serialNumber) { setSerialNumber(serialNumber.c_str()); } void setSerialNumber(const char *serialNumber); void setSerialNumber(const uint32_t serialNumber); void setModelName(const String& name) { setModelName(name.c_str()); } @@ -92,6 +92,7 @@ class SSDPClass{ void setManufacturerURL(const char *url); void setHTTPPort(uint16_t port); void setTTL(uint8_t ttl); + void setInterval(uint32_t interval); protected: void _send(ssdp_method_t method); @@ -104,6 +105,7 @@ class SSDPClass{ SSDPTimer* _timer; uint16_t _port; uint8_t _ttl; + uint32_t _interval; IPAddress _respondToAddr; uint16_t _respondToPort;