mirror of https://github.com/ARMmbed/mbed-os.git
Merge pull request #12234 from michalpasztamobica/esp8266_builtin_dns
ESP8266: Add built-in hostname resolution handling (disabled by default)pull/12245/head
commit
194fc6667e
|
|
@ -627,7 +627,11 @@ nsapi_error_t ESP8266::open_tcp(int id, const char *addr, int port, int keepaliv
|
||||||
bool ESP8266::dns_lookup(const char *name, char *ip)
|
bool ESP8266::dns_lookup(const char *name, char *ip)
|
||||||
{
|
{
|
||||||
_smutex.lock();
|
_smutex.lock();
|
||||||
bool done = _parser.send("AT+CIPDOMAIN=\"%s\"", name) && _parser.recv("+CIPDOMAIN:%s%*[\r]%*[\n]", ip);
|
set_timeout(ESP8266_DNS_TIMEOUT);
|
||||||
|
bool done = _parser.send("AT+CIPDOMAIN=\"%s\"", name)
|
||||||
|
&& _parser.recv("+CIPDOMAIN:%15[^\n]\n", ip)
|
||||||
|
&& _parser.recv("OK\n");
|
||||||
|
set_timeout();
|
||||||
_smutex.unlock();
|
_smutex.unlock();
|
||||||
|
|
||||||
return done;
|
return done;
|
||||||
|
|
|
||||||
|
|
@ -43,6 +43,9 @@
|
||||||
#ifndef ESP8266_MISC_TIMEOUT
|
#ifndef ESP8266_MISC_TIMEOUT
|
||||||
#define ESP8266_MISC_TIMEOUT 2000
|
#define ESP8266_MISC_TIMEOUT 2000
|
||||||
#endif
|
#endif
|
||||||
|
#ifndef ESP8266_DNS_TIMEOUT
|
||||||
|
#define ESP8266_DNS_TIMEOUT 15000
|
||||||
|
#endif
|
||||||
|
|
||||||
#define ESP8266_SCAN_TIME_MIN 0 // [ms]
|
#define ESP8266_SCAN_TIME_MIN 0 // [ms]
|
||||||
#define ESP8266_SCAN_TIME_MAX 1500 // [ms]
|
#define ESP8266_SCAN_TIME_MAX 1500 // [ms]
|
||||||
|
|
|
||||||
|
|
@ -652,6 +652,28 @@ int ESP8266Interface::scan(WiFiAccessPoint *res, unsigned count, scan_mode mode,
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if MBED_CONF_ESP8266_BUILT_IN_DNS
|
||||||
|
nsapi_error_t ESP8266Interface::gethostbyname(const char *name, SocketAddress *address, nsapi_version_t version, const char *interface_name)
|
||||||
|
{
|
||||||
|
char ip[NSAPI_IPv4_SIZE];
|
||||||
|
memset(ip, 0, NSAPI_IPv4_SIZE);
|
||||||
|
if (!_esp.dns_lookup(name, ip)) {
|
||||||
|
return NSAPI_ERROR_DNS_FAILURE;
|
||||||
|
}
|
||||||
|
if (!address->set_ip_address(ip)) {
|
||||||
|
return NSAPI_ERROR_DNS_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return NSAPI_ERROR_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
nsapi_error_t ESP8266Interface::add_dns_server(const SocketAddress &address, const char *interface_name)
|
||||||
|
{
|
||||||
|
return NSAPI_ERROR_OK;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
bool ESP8266Interface::_get_firmware_ok()
|
bool ESP8266Interface::_get_firmware_ok()
|
||||||
{
|
{
|
||||||
ESP8266::fw_at_version at_v = _esp.at_version();
|
ESP8266::fw_at_version at_v = _esp.at_version();
|
||||||
|
|
|
||||||
|
|
@ -228,14 +228,25 @@ public:
|
||||||
* version is chosen by the stack (defaults to NSAPI_UNSPEC)
|
* version is chosen by the stack (defaults to NSAPI_UNSPEC)
|
||||||
* @return 0 on success, negative error code on failure
|
* @return 0 on success, negative error code on failure
|
||||||
*/
|
*/
|
||||||
|
#if MBED_CONF_ESP8266_BUILT_IN_DNS
|
||||||
|
nsapi_error_t gethostbyname(const char *name, SocketAddress *address, nsapi_version_t version, const char *interface_name);
|
||||||
|
#else
|
||||||
using NetworkInterface::gethostbyname;
|
using NetworkInterface::gethostbyname;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
using NetworkInterface::gethostbyname_async;
|
||||||
|
using NetworkInterface::gethostbyname_async_cancel;
|
||||||
|
|
||||||
/** Add a domain name server to list of servers to query
|
/** Add a domain name server to list of servers to query
|
||||||
*
|
*
|
||||||
* @param addr Destination for the host address
|
* @param addr Destination for the host address
|
||||||
* @return 0 on success, negative error code on failure
|
* @return 0 on success, negative error code on failure
|
||||||
*/
|
*/
|
||||||
|
#if MBED_CONF_ESP8266_BUILT_IN_DNS
|
||||||
|
nsapi_error_t add_dns_server(const SocketAddress &address, const char *interface_name);
|
||||||
|
#else
|
||||||
using NetworkInterface::add_dns_server;
|
using NetworkInterface::add_dns_server;
|
||||||
|
#endif
|
||||||
|
|
||||||
/** @copydoc NetworkStack::setsockopt
|
/** @copydoc NetworkStack::setsockopt
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -65,6 +65,10 @@
|
||||||
"channels": {
|
"channels": {
|
||||||
"help": "channel count, 13 by default",
|
"help": "channel count, 13 by default",
|
||||||
"value": null
|
"value": null
|
||||||
|
},
|
||||||
|
"built-in-dns": {
|
||||||
|
"help": "use built-in CIPDOMAIN AT command to resolve address to IP",
|
||||||
|
"value": false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"target_overrides": {
|
"target_overrides": {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue