8000 Functional update, host and service probes by hreintke · Pull Request #5653 · esp8266/Arduino · GitHub
[go: up one dir, main page]

Skip to content

Functional update, host and service probes #5653

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 29 commits into from
Feb 5, 2019
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
5674603
Functional update, host and service probes
hreintke Jan 23, 2019
57c9ba4
Fix ServiceMonitor.ino warnings
hreintke Jan 23, 2019
168de73
Adding MDNSServiceQueryCallback functional
hreintke Jan 23, 2019
ab86859
DynamicServices Functional
hreintke Jan 24, 2019
8f8e90f
Fix ServiceMonitor to match latest MDNSServiceInfo
hreintke Jan 24, 2019
e3dee4f
Fix unused variable in LEAdns.h
hreintke Jan 24, 2019
b237160
mDNS_Clock.ino fix
hreintke Jan 24, 2019
6bb6e90
example restyle
d-a-v Jan 24, 2019
45fbbb9
Merge pull request #1 from d-a-v/FunctionalMDNS
hreintke Jan 24, 2019
b74735c
Merge branch 'master' into FunctionalMDNS
d-a-v Jan 24, 2019
516ed01
Merge branch 'master' into FunctionalMDNS
d-a-v Jan 24, 2019
639f097
Add keyValues and answerInfo
hreintke Jan 26, 2019
5da1832
Waring and formattin fix
hreintke Jan 26, 2019
249b325
Change struct MDNSServiceInfo { MDNSServiceInfo(MDNSResponder ...
hreintke Jan 26, 2019
db0d502
Make AnswerType user friendly
hreintke Jan 27, 2019
0ece474
Update ServiceInfo example
hreintke Jan 27, 2019
fd2cd67
Code cleanup
hreintke Jan 27, 2019
88f1547
AnswerType update, Astyle update servicemonitor
hreintke Jan 27, 2019
819a7e0
Update clock example to webserver
hreintke Jan 28, 2019
f667b56
Second typedef for probe callbacks
hreintke Jan 29, 2019
902f453
Merge branch 'master' into FunctionalMDNS
devyte Jan 31, 2019
7068938
Optimizations
hreintke Feb 1, 2019
772d633
Update callbacks to void
hreintke Feb 1, 2019
c189902
esp32 compatibility
hreintke Feb 1, 2019
8d3f912
std::map to const char*
hreintke Feb 3, 2019
603b659
Fix emplace_back call
hreintke Feb 4, 2019
e3f86d2
Change Dynamic callback to void(...)
hreintke Feb 4, 2019
0f0edb5
Add WiFi events reset() in close()
hreintke Feb 4, 2019
699656d
Merge branch 'master' into FunctionalMDNS
devyte Feb 5, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
example restyle
  • Loading branch information
d-a-v committed Jan 24, 2019
commit 6bb6e90a2b7f9c6001449f0a19b0d2b7dccd5b75
54 changes: 27 additions & 27 deletions libraries/ESP8266mDNS/examples/LEAmDNS/mDNS_Clock/mDNS_Clock.ino
Original file line number Diff line number Diff line change
Expand Up @@ -156,37 +156,37 @@ bool MDNSDynamicServiceTxtCallback(const MDNSResponder::hMDNSService p_hService)
restarted via p_pMDNSResponder->setHostname().

*/
bool hostProbeResult (String p_pcDomainName, bool p_bProbeResult) {
bool hostProbeResult(String p_pcDomainName, bool p_bProbeResult) {

Serial.println("MDNSProbeResultCallback");
Serial.printf("MDNSProbeResultCallback: Host domain '%s.local' is %s\n", p_pcDomainName.c_str(), (p_bProbeResult ? "free" : "already USED!"));
if (true == p_bProbeResult) {
// Set station hostname
setStationHostname(pcHostDomain);

if (!bHostDomainConfirmed) {
// Hostname free -> setup clock service
bHostDomainConfirmed = true;

if (!hMDNSService) {
// Add a 'clock.tcp' service to port 'SERVICE_PORT', using the host domain as instance domain
hMDNSService = MDNS.addService(0, "espclk", "tcp", SERVICE_PORT);
if (hMDNSService) {
// Add a simple static MDNS service TXT item
MDNS.addServiceTxt(hMDNSService, "port#", SERVICE_PORT);
// Set the callback function for dynamic service TXTs
MDNS.setDynamicServiceTxtCallback(MDNSDynamicServiceTxtCallback);
}
Serial.printf("MDNSProbeResultCallback: Host domain '%s.local' is %s\n", p_pcDomainName.c_str(), (p_bProbeResult ? "free" : "already USED!"));
if (true == p_bProbeResult) {
// Set station hostname
setStationHostname(pcHostDomain);

if (!bHostDomainConfirmed) {
// Hostname free -> setup clock service
bHostDomainConfirmed = true;

if (!hMDNSService) {
// Add a 'clock.tcp' service to port 'SERVICE_PORT', using the host domain as instance domain
hMDNSService = MDNS.addService(0, "espclk", "tcp", SERVICE_PORT);
if (hMDNSService) {
// Add a simple static MDNS service TXT item
MDNS.addServiceTxt(hMDNSService, "port#", SERVICE_PORT);
// Set the callback function for dynamic service TXTs
MDNS.setDynamicServiceTxtCallback(MDNSDynamicServiceTxtCallback);
}
}
}
} else {
// Change hostname, use '-' as divider between base name and index
if (MDNSResponder::indexDomain(pcHostDomain, "-", 0)) {
MDNS.setHostname(pcHostDomain);
} else {
// Change hostname, use '-' as divider between base name and index
if (MDNSResponder::indexDomain(pcHostDomain, "-", 0)) {
MDNS.setHostname(pcHostDomain);
} else {
Serial.println("MDNSProbeResultCallback: FAILED to update hostname!");
}
}
Serial.println("MDNSProbeResultCallback: FAILED to update hostname!");
}
}
return true;
}

Expand Down Expand Up @@ -306,7 +306,7 @@ void loop(void) {
// Update time (if needed)
//static unsigned long ulNextTimeUpdate = UPDATE_CYCLE;
static esp8266::polledTimeout::periodic timeout(UPDATE_CYCLE);
if (timeout.expired()){
if (timeout.expired()) {

if (hMDNSService) {
// Just trigger a new MDNS announcement, this will lead to a call to
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -89,40 +89,39 @@ bool setStationHostname(const char* p_pcHostname) {
MDNSServiceQueryCallback
*/

bool MDNSServiceQueryCallback (MDNSResponder::MDNSServiceInfo serviceInfo, uint32_t p_u32ServiceQueryAnswerMask, bool p_bSetContent)
{
String answerInfo;
switch (p_u32ServiceQueryAnswerMask){
case MDNSResponder::ServiceQueryAnswerType_ServiceDomain :
answerInfo = "ServiceDomain " + serviceInfo.serviceDomain();
break;
case MDNSResponder::ServiceQueryAnswerType_HostDomainAndPort :
answerInfo = "HostDomainAndPort " + serviceInfo.hostDomain() + ":" + String(serviceInfo.hostPort());
break;
case MDNSResponder::ServiceQueryAnswerType_IP4Address :
answerInfo = "IP4Address ";
for (IPAddress ip : serviceInfo.IPAdresses()){
answerInfo += "- " + ip.toString();
};
break;
case MDNSResponder::ServiceQueryAnswerType_Txts :
answerInfo = "TXT " + serviceInfo.strKeyValue();

break;
default :
answerInfo = "Unknown";
}
Serial.printf("Answer %s %s\n",answerInfo.c_str(),p_bSetContent ? "Modified" : "Deleted");

return true;
bool MDNSServiceQueryCallback(MDNSResponder::MDNSServiceInfo serviceInfo, uint32_t p_u32ServiceQueryAnswerMask, bool p_bSetContent) {
String answerInfo;
switch (p_u32ServiceQueryAnswerMask) {
case MDNSResponder::ServiceQueryAnswerType_ServiceDomain :
answerInfo = "ServiceDomain " + serviceInfo.serviceDomain();
break;
case MDNSResponder::ServiceQueryAnswerType_HostDomainAndPort :
answerInfo = "HostDomainAndPort " + serviceInfo.hostDomain() + ":" + String(serviceInfo.hostPort());
break;
case MDNSResponder::ServiceQueryAnswerType_IP4Address :
answerInfo = "IP4Address ";
for (IPAddress ip : serviceInfo.IPAdresses()) {
answerInfo += "- " + ip.toString();
};
break;
case MDNSResponder::ServiceQueryAnswerType_Txts :
answerInfo = "TXT " + serviceInfo.strKeyValue();

break;
default :
answerInfo = "Unknown";
}
Serial.printf("Answer %s %s\n", answerInfo.c_str(), p_bSetContent ? "Modified" : "Deleted");

return true;
}

bool MDNSServiceQueryCallback1(MDNSResponder* p_pMDNSResponder, // The MDNS responder object
const MDNSResponder::hMDNSServiceQuery p_hServiceQuery, // Handle to the service query
uint32_t p_u32AnswerIndex, // Index of the updated answer
uint32_t p_u32ServiceQueryAnswerMask, // Mask for the updated component
bool p_bSetContent, // true: Component set, false: component deleted
void* p_pUserdata) { // pUserdata; here '0', as none set via 'installServiceQuery'
const MDNSResponder::hMDNSServiceQuery p_hServiceQuery, // Handle to the service query
uint32_t p_u32AnswerIndex, // Index of the updated answer
uint32_t p_u32ServiceQueryAnswerMask, // Mask for the updated component
bool p_bSetContent, // true: Component set, false: component deleted
void* p_pUserdata) { // pUserdata; here '0', as none set via 'installServiceQuery'
(void) p_pUserdata;
Serial.printf("MDNSServiceQueryCallback\n");

Expand Down Expand Up @@ -213,13 +212,12 @@ bool MDNSServiceQueryCallback1(MDNSResponder* p_pMDNSResponder,
Probe result callback for Services
*/

bool serviceProbeResult (String p_pcServiceName,
const MDNSResponder::hMDNSService p_hMDNSService,
bool p_bProbeResult)
{
(void) p_hMDNSService;
Serial.printf("MDNSServiceProbeResultCallback: Service %s probe %s\n", p_pcServiceName.c_str(), (p_bProbeResult ? "succeeded." : "failed!"));
return true;
bool serviceProbeResult(String p_pcServiceName,
const MDNSResponder::hMDNSService p_hMDNSService,
bool p_bProbeResult) {
(void) p_hMDNSService;
Serial.printf("MDNSServiceProbeResultCallback: Service %s probe %s\n", p_pcServiceName.c_str(), (p_bProbeResult ? "succeeded." : "failed!") 8000 );
return true;
}


Expand All @@ -235,50 +233,50 @@ bool serviceProbeResult (String p_pcServiceName,

*/

bool hostProbeResult (String p_pcDomainName, bool p_bProbeResult) {
bool hostProbeResult(String p_pcDomainName, bool p_bProbeResult) {

Serial.printf("MDNSHostProbeResultCallback: Host domain '%s.local' is %s\n", p_pcDomainName.c_str(), (p_bProbeResult ? "free" : "already USED!"));
Serial.printf("MDNSHostProbeResultCallback: Host domain '%s.local' is %s\n", p_pcDomainName.c_str(), (p_bProbeResult ? "free" : "already USED!"));

if (true == p_bProbeResult) {
// Set station hostname
setStationHostname(pcHostDomain);
if (true == p_bProbeResult) {
// Set station hostname
setStationHostname(pcHostDomain);

if (!bHostDomainConfirmed) {
// Hostname free -> setup clock service
bHostDomainConfirmed = true;
if (!bHostDomainConfirmed) {
// Hostname free -> setup clock service
bHostDomainConfirmed = true;

if (!hMDNSService) {
// Add a 'http.tcp' service to port 'SERVICE_PORT', using the host domain as instance domain
hMDNSService = MDNS.addService(0, "http", "tcp", SERVICE_PORT);
if (hMDNSService) {
MDNS.setServiceProbeResultCallback(hMDNSService, serviceProbeResult);
if (!hMDNSService) {
// Add a 'http.tcp' service to port 'SERVICE_PORT', using the host domain as instance domain
hMDNSService = MDNS.addService(0, "http", "tcp", SERVICE_PORT);
if (hMDNSService) {
MDNS.setServiceProbeResultCallback(hMDNSService, serviceProbeResult);

// Add some '_http._tcp' protocol specific MDNS service TXT items
// See: http://www.dns-sd.org/txtrecords.html#http
MDNS.addServiceTxt(hMDNSService, "user", "");
MDNS.addServiceTxt(hMDNSService, "password", "");
MDNS.addServiceTxt(hMDNSService, "path", "/");
}
// Add some '_http._tcp' protocol specific MDNS service TXT items
// See: http://www.dns-sd.org/txtrecords.html#http
MDNS.addServiceTxt(hMDNSService, "user", "");
MDNS.addServiceTxt(hMDNSService, "password", "");
MDNS.addServiceTxt(hMDNSService, "path", "/");
}

// Install dynamic 'http.tcp' service query
if (!hMDNSServiceQuery) {
hMDNSServiceQuery = MDNS.installServiceQuery("http", "tcp", MDNSServiceQueryCallback);
if (hMDNSServiceQuery) {
Serial.printf("MDNSProbeResultCallback: Service query for 'http.tcp' services installed.\n");
} else {
Serial.printf("MDNSProbeResultCallback: FAILED to install service query for 'http.tcp' services!\n");
}
// Install dynamic 'http.tcp' service query
if (!hMDNSServiceQuery) {
hMDNSServiceQuery = MDNS.installServiceQuery("http", "tcp", MDNSServiceQueryCallback);
if (hMDNSServiceQuery) {
Serial.printf("MDNSProbeResultCallback: Service query for 'http.tcp' services installed.\n");
} else {
Serial.printf("MDNSProbeResultCallback: FAILED to install service query for 'http.tcp' services!\n");
}
}
}
}
} else {
// Change hostname, use '-' as divider between base name and index
if (MDNSResponder::indexDomain(pcHostDomain, "-", 0)) {
MDNS.setHostname(pcHostDomain);
} else {
// Change hostname, use '-' as divider between base name and index
if (MDNSResponder::indexDomain(pcHostDomain, "-", 0)) {
MDNS.setHostname(pcHostDomain);
} else {
Serial.println("MDNSProbeResultCallback: FAILED to update hostname!");
}
}
Serial.println("MDNSProbeResultCallback: FAILED to update hostname!");
}
}

return true;
}
Expand All @@ -302,7 +300,7 @@ void handleHTTPRequest() {
Serial.println("Sending 200");
server.send(200, "text/html", s);
Serial.println("Done with request");
Serial.printf("FM %d\n",ESP.getFreeHeap());
Serial.printf("FM %d\n", ESP.getFreeHeap());
}

/*
Expand Down
0