1
0
mirror of https://github.com/esp8266/Arduino.git synced 2025-04-19 23:22:16 +03:00

Set a value for SSDP notify interval (#7110)

* Set a value for SSDP notify interval, default to 1200 seconds.

* Changed uint8_t to uint32_t

Co-authored-by: david gauchard <gauchard@laas.fr>
This commit is contained in:
Martijn Scheepers 2020-03-03 23:00:38 +01:00 committed by GitHub
parent e39cbe6328
commit b64e8da2e2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 12 additions and 6 deletions

View File

@ -69,7 +69,7 @@ static const char _ssdp_notify_template[] PROGMEM =
static const char _ssdp_packet_template[] PROGMEM = static const char _ssdp_packet_template[] PROGMEM =
"%s" // _ssdp_response_template / _ssdp_notify_template "%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 "SERVER: Arduino/1.0 UPNP/1.1 %s/%s\r\n" // _modelName, _modelNumber
"USN: %s\r\n" // _uuid "USN: %s\r\n" // _uuid
"%s: %s\r\n" // "NT" or "ST", _deviceType "%s: %s\r\n" // "NT" or "ST", _deviceType
@ -130,6 +130,7 @@ SSDPClass::SSDPClass() :
_timer(0), _timer(0),
_port(80), _port(80),
_ttl(SSDP_MULTICAST_TTL), _ttl(SSDP_MULTICAST_TTL),
_interval(SSDP_INTERVAL),
_respondToAddr(0,0,0,0), _respondToAddr(0,0,0,0),
_respondToPort(0), _respondToPort(0),
_pending(false), _pending(false),
@ -241,7 +242,7 @@ void SSDPClass::_send(ssdp_method_t method) {
int len = snprintf_P(buffer, sizeof(buffer), int len = snprintf_P(buffer, sizeof(buffer),
_ssdp_packet_template, _ssdp_packet_template,
valueBuffer, valueBuffer,
SSDP_INTERVAL, _interval,
_modelName, _modelName,
_modelNumber, _modelNumber,
_uuid, _uuid,
@ -428,7 +429,7 @@ void SSDPClass::_update() {
if (_pending && (millis() - _process_time) > _delay) { if (_pending && (millis() - _process_time) > _delay) {
_pending = false; _delay = 0; _pending = false; _delay = 0;
_send(NONE); _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(); _notify_time = millis();
_st_is_uuid = false; _st_is_uuid = false;
_send(NOTIFY); _send(NOTIFY);
@ -493,11 +494,14 @@ void SSDPClass::setManufacturerURL(const char *url) {
strlcpy(_manufacturerURL, url, sizeof(_manufacturerURL)); strlcpy(_manufacturerURL, url, sizeof(_manufacturerURL));
} }
void SSDPClass::setTTL(const uint8_t ttl) { void SSDPClass::setTTL(const uint8_t ttl) {
_ttl = ttl; _ttl = ttl;
} }
void SSDPClass::setInterval(uint32_t interval) {
_interval = interval;
}
void SSDPClass::_onTimerStatic(SSDPClass* self) { void SSDPClass::_onTimerStatic(SSDPClass* self) {
self->_update(); self->_update();
} }

View File

@ -71,13 +71,13 @@ class SSDPClass{
void setUUID(const String& uuid) { setUUID(uuid.c_str()); } void setUUID(const String& uuid) { setUUID(uuid.c_str()); }
void setUUID(const char *uuid); 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 setName(const char *name);
void setURL(const String& url) { setURL(url.c_str()); } void setURL(const String& url) { setURL(url.c_str()); }
void setURL(const char *url); void setURL(const char *url);
void setSchemaURL(const String& url) { setSchemaURL(url.c_str()); } void setSchemaURL(const String& url) { setSchemaURL(url.c_str()); }
void setSchemaURL(const char *url); 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 char *serialNumber);
void setSerialNumber(const uint32_t serialNumber); void setSerialNumber(const uint32_t serialNumber);
void setModelName(const String& name) { setModelName(name.c_str()); } void setModelName(const String& name) { setModelName(name.c_str()); }
@ -92,6 +92,7 @@ class SSDPClass{
void setManufacturerURL(const char *url); void setManufacturerURL(const char *url);
void setHTTPPort(uint16_t port); void setHTTPPort(uint16_t port);
void setTTL(uint8_t ttl); void setTTL(uint8_t ttl);
void setInterval(uint32_t interval);
protected: protected:
void _send(ssdp_method_t method); void _send(ssdp_method_t method);
@ -104,6 +105,7 @@ class SSDPClass{
SSDPTimer* _timer; SSDPTimer* _timer;
uint16_t _port; uint16_t _port;
uint8_t _ttl; uint8_t _ttl;
uint32_t _interval;
IPAddress _respondToAddr; IPAddress _respondToAddr;
uint16_t _respondToPort; uint16_t _respondToPort;