mirror of
https://github.com/esp8266/Arduino.git
synced 2025-07-14 13:41:23 +03:00
Functional update, host and service probes (#5653)
* Functional update, host and service probes * Fix ServiceMonitor.ino warnings * Adding MDNSServiceQueryCallback functional ServiceMonitor.ino needs some updates for web page but works on Serial output. * DynamicServices Functional * Fix ServiceMonitor to match latest MDNSServiceInfo * Fix unused variable in LEAdns.h * mDNS_Clock.ino fix * example restyle * Add keyValues and answerInfo * Waring and formattin fix * Change struct MDNSServiceInfo { MDNSServiceInfo(MDNSResponder ... to struct MDNSServiceInfo { MDNSServiceInfo(MDNSResponder& * Make AnswerType user friendly * Update ServiceInfo example * Code cleanup * AnswerType update, Astyle update servicemonitor * Update clock example to webserver * Second typedef for probe callbacks Change String -> const char* at multiple locations * Optimizations * Update callbacks to void * esp32 compatibility * std::map to const char* * Fix emplace_back call * Change Dynamic callback to void(...) * Add WiFi events reset() in close()
This commit is contained in:
@ -58,7 +58,6 @@ MDNSResponder::MDNSResponder(void)
|
||||
m_pcHostname(0),
|
||||
m_pServiceQueries(0),
|
||||
m_fnServiceTxtCallback(0),
|
||||
m_pServiceTxtCallbackUserdata(0),
|
||||
#ifdef ENABLE_ESP_MDNS_RESPONDER_PASSIV_MODE
|
||||
m_bPassivModeEnabled(true) {
|
||||
#else
|
||||
@ -138,7 +137,10 @@ bool MDNSResponder::begin(const char* p_pcHostname,
|
||||
*/
|
||||
bool MDNSResponder::close(void) {
|
||||
|
||||
_announce(false, true);
|
||||
m_GotIPHandler.reset(); // reset WiFi event callbacks.
|
||||
m_DisconnectedHandler.reset();
|
||||
|
||||
_announce(false, true);
|
||||
_resetProbeStatus(false); // Stop probing
|
||||
|
||||
_releaseServiceQueries();
|
||||
@ -148,6 +150,18 @@ bool MDNSResponder::close(void) {
|
||||
return true;
|
||||
}
|
||||
|
||||
/*
|
||||
* MDNSResponder::end
|
||||
*
|
||||
* Ends the MDNS responder.
|
||||
* for compatibility with esp32
|
||||
*
|
||||
*/
|
||||
|
||||
bool MDNSResponder::end(void) {
|
||||
return close();
|
||||
}
|
||||
|
||||
/*
|
||||
* MDNSResponder::setHostname
|
||||
*
|
||||
@ -464,11 +478,9 @@ bool MDNSResponder::addServiceTxt(String p_strService,
|
||||
* service TXT items are needed.
|
||||
*
|
||||
*/
|
||||
bool MDNSResponder::setDynamicServiceTxtCallback(MDNSResponder::MDNSDynamicServiceTxtCallbackFn p_fnCallback,
|
||||
void* p_pUserdata) {
|
||||
bool MDNSResponder::setDynamicServiceTxtCallback(MDNSResponder::MDNSDynamicServiceTxtCallbackFunc p_fnCallback) {
|
||||
|
||||
m_fnServiceTxtCallback = p_fnCallback;
|
||||
m_pServiceTxtCallbackUserdata = p_pUserdata;
|
||||
|
||||
return true;
|
||||
}
|
||||
@ -481,15 +493,13 @@ bool MDNSResponder::setDynamicServiceTxtCallback(MDNSResponder::MDNSDynamicServi
|
||||
*
|
||||
*/
|
||||
bool MDNSResponder::setDynamicServiceTxtCallback(MDNSResponder::hMDNSService p_hService,
|
||||
MDNSResponder::MDNSDynamicServiceTxtCallbackFn p_fnCallback,
|
||||
void* p_pUserdata) {
|
||||
MDNSResponder::MDNSDynamicServiceTxtCallbackFunc p_fnCallback) {
|
||||
|
||||
bool bResult = false;
|
||||
|
||||
stcMDNSService* pService = _findService(p_hService);
|
||||
if (pService) {
|
||||
pService->m_fnTxtCallback = p_fnCallback;
|
||||
pService->m_pTxtCallbackUserdata = p_pUserdata;
|
||||
|
||||
bResult = true;
|
||||
}
|
||||
@ -766,8 +776,7 @@ uint16_t MDNSResponder::port(const uint32_t p_u32AnswerIndex) {
|
||||
*/
|
||||
MDNSResponder::hMDNSServiceQuery MDNSResponder::installServiceQuery(const char* p_pcService,
|
||||
const char* p_pcProtocol,
|
||||
MDNSResponder::MDNSServiceQueryCallbackFn p_fnCallback,
|
||||
void* p_pUserdata) {
|
||||
MDNSResponder::MDNSServiceQueryCallbackFunc p_fnCallback) {
|
||||
hMDNSServiceQuery hResult = 0;
|
||||
|
||||
stcMDNSServiceQuery* pServiceQuery = 0;
|
||||
@ -780,7 +789,6 @@ MDNSResponder::hMDNSServiceQuery MDNSResponder::installServiceQuery(const char*
|
||||
(_buildDomainForService(p_pcService, p_pcProtocol, pServiceQuery->m_ServiceTypeDomain))) {
|
||||
|
||||
pServiceQuery->m_fnCallback = p_fnCallback;
|
||||
pServiceQuery->m_pUserdata = p_pUserdata;
|
||||
pServiceQuery->m_bLegacyQuery = false;
|
||||
|
||||
if (_sendMDNSServiceQuery(*pServiceQuery)) {
|
||||
@ -822,6 +830,15 @@ uint32_t MDNSResponder::answerCount(const MDNSResponder::hMDNSServiceQuery p_hSe
|
||||
return (pServiceQuery ? pServiceQuery->answerCount() : 0);
|
||||
}
|
||||
|
||||
std::vector<MDNSResponder::MDNSServiceInfo> MDNSResponder::answerInfo (const MDNSResponder::hMDNSServiceQuery p_hServiceQuery) {
|
||||
std::vector<MDNSResponder::MDNSServiceInfo> tempVector;
|
||||
for (uint32_t i=0;i<answerCount(p_hServiceQuery);i++)
|
||||
{
|
||||
tempVector.emplace_back(*this,p_hServiceQuery,i);
|
||||
}
|
||||
return tempVector;
|
||||
}
|
||||
|
||||
/*
|
||||
* MDNSResponder::answerServiceDomain
|
||||
*
|
||||
@ -1011,7 +1028,7 @@ const char* MDNSResponder::answerTxts(const MDNSResponder::hMDNSServiceQuery p_h
|
||||
if ((pSQAnswer) &&
|
||||
(pSQAnswer->m_Txts.m_pTxts) &&
|
||||
(!pSQAnswer->m_pcTxts)) {
|
||||
|
||||
|
||||
pSQAnswer->m_pcTxts = pSQAnswer->allocTxts(pSQAnswer->m_Txts.c_strLength());
|
||||
if (pSQAnswer->m_pcTxts) {
|
||||
pSQAnswer->m_Txts.c_str(pSQAnswer->m_pcTxts);
|
||||
@ -1020,7 +1037,6 @@ const char* MDNSResponder::answerTxts(const MDNSResponder::hMDNSServiceQuery p_h
|
||||
return (pSQAnswer ? pSQAnswer->m_pcTxts : 0);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* PROBING
|
||||
*/
|
||||
@ -1035,15 +1051,18 @@ const char* MDNSResponder::answerTxts(const MDNSResponder::hMDNSServiceQuery p_h
|
||||
* When succeeded, the host or service domain will be announced by the MDNS responder.
|
||||
*
|
||||
*/
|
||||
bool MDNSResponder::setProbeResultCallback(MDNSResponder::MDNSProbeResultCallbackFn p_fnCallback,
|
||||
void* p_pUserdata) {
|
||||
|
||||
m_HostProbeInformation.m_fnProbeResultCallback = p_fnCallback;
|
||||
m_HostProbeInformation.m_pProbeResultCallbackUserdata = p_pUserdata;
|
||||
bool MDNSResponder::setHostProbeResultCallback(MDNSResponder::MDNSHostProbeFn p_fnCallback) {
|
||||
|
||||
m_HostProbeInformation.m_fnHostProbeResultCallback = p_fnCallback;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool MDNSResponder::setHostProbeResultCallback(MDNSHostProbeFn1 pfn) {
|
||||
using namespace std::placeholders;
|
||||
return setHostProbeResultCallback(std::bind(pfn, *this, _1, _2));
|
||||
}
|
||||
|
||||
/*
|
||||
* MDNSResponder::setServiceProbeResultCallback
|
||||
*
|
||||
@ -1054,20 +1073,25 @@ bool MDNSResponder::setProbeResultCallback(MDNSResponder::MDNSProbeResultCallbac
|
||||
*
|
||||
*/
|
||||
bool MDNSResponder::setServiceProbeResultCallback(const MDNSResponder::hMDNSService p_hService,
|
||||
MDNSResponder::MDNSProbeResultCallbackFn p_fnCallback,
|
||||
void* p_pUserdata) {
|
||||
MDNSResponder::MDNSServiceProbeFn p_fnCallback) {
|
||||
|
||||
bool bResult = false;
|
||||
|
||||
stcMDNSService* pService = _findService(p_hService);
|
||||
if (pService) {
|
||||
pService->m_ProbeInformation.m_fnProbeResultCallback = p_fnCallback;
|
||||
pService->m_ProbeInformation.m_pProbeResultCallbackUserdata = p_pUserdata;
|
||||
pService->m_ProbeInformation.m_fnServiceProbeResultCallback = p_fnCallback;
|
||||
|
||||
bResult = true;
|
||||
}
|
||||
return bResult;
|
||||
}
|
||||
|
||||
bool MDNSResponder::setServiceProbeResultCallback(const MDNSResponder::hMDNSService p_hService,
|
||||
MDNSResponder::MDNSServiceProbeFn1 p_fnCallback) {
|
||||
using namespace std::placeholders;
|
||||
return setServiceProbeResultCallback(p_hService, std::bind(p_fnCallback, *this, _1, _2, _3));
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* MISC
|
||||
|
Reference in New Issue
Block a user