From b09e8e593af83c8183b994c515bb188c0491c146 Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Fri, 16 Jan 2015 17:56:11 +0300 Subject: [PATCH] Add remoteIP and remotePort methods to WiFiClient --- libraries/ESP8266WiFi/src/WiFiClient.cpp | 19 +++++++++++++++++-- libraries/ESP8266WiFi/src/WiFiClient.h | 6 ++++-- .../ESP8266WiFi/src/include/ClientContext.h | 16 ++++++++++++++++ 3 files changed, 37 insertions(+), 4 deletions(-) diff --git a/libraries/ESP8266WiFi/src/WiFiClient.cpp b/libraries/ESP8266WiFi/src/WiFiClient.cpp index b7b037401..5c6ca4019 100644 --- a/libraries/ESP8266WiFi/src/WiFiClient.cpp +++ b/libraries/ESP8266WiFi/src/WiFiClient.cpp @@ -43,11 +43,10 @@ extern "C" #define MIN_LOCAL_PORT 1024 #define MAX_LOCAL_PORT 1124 - static int g_localPort = MIN_LOCAL_PORT; +static int g_localPort = MIN_LOCAL_PORT; ICACHE_FLASH_ATTR WiFiClient::WiFiClient() : _client(0) -, _lastPollTime(0) { } @@ -229,6 +228,22 @@ ICACHE_FLASH_ATTR WiFiClient::operator bool() return _client != 0; } +IPAddress WiFiClient::remoteIP() +{ + if (!_client) + return IPAddress(0U); + + return IPAddress(_client->getRemoteAddress()); +} + +uint16_t WiFiClient::remotePort() +{ + if (!_client) + return 0; + + return _client->getRemotePort(); +} + int8_t ICACHE_FLASH_ATTR WiFiClient::_s_connected(void* arg, void* tpcb, int8_t err) { return reinterpret_cast(arg)->_connected(tpcb, err); diff --git a/libraries/ESP8266WiFi/src/WiFiClient.h b/libraries/ESP8266WiFi/src/WiFiClient.h index 8994e710a..251f2b3e3 100644 --- a/libraries/ESP8266WiFi/src/WiFiClient.h +++ b/libraries/ESP8266WiFi/src/WiFiClient.h @@ -53,6 +53,9 @@ public: virtual uint8_t connected(); virtual operator bool(); + IPAddress remoteIP(); + uint16_t remotePort(); + friend class WiFiServer; using Print::write; @@ -66,8 +69,7 @@ private: void _err(int8_t err); ClientContext* _client; - uint32_t _lastPollTime; - + }; #endif diff --git a/libraries/ESP8266WiFi/src/include/ClientContext.h b/libraries/ESP8266WiFi/src/include/ClientContext.h index 2ddbc5e15..bc550f2b9 100644 --- a/libraries/ESP8266WiFi/src/include/ClientContext.h +++ b/libraries/ESP8266WiFi/src/include/ClientContext.h @@ -88,6 +88,22 @@ public: } } + uint32_t getRemoteAddress() + { + if (!_pcb) + return 0; + + return _pcb->remote_ip.addr; + } + + uint16_t getRemotePort() + { + if (!_pcb) + return 0; + + return _pcb->remote_port; + } + size_t getSize() const { if (!_rx_buf)