From 022e882001f1c063320fd5737f16fdbff52d1abb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Hru=C5=A1ka?= Date: Tue, 3 Oct 2017 22:16:07 +0200 Subject: [PATCH] added IP to answerback message --- user/ansi_parser_callbacks.c | 11 ++++++++++- user/cgi_wifi.c | 17 +---------------- user/wifimgr.c | 16 ++++++++++++++++ user/wifimgr.h | 2 ++ 4 files changed, 29 insertions(+), 17 deletions(-) diff --git a/user/ansi_parser_callbacks.c b/user/ansi_parser_callbacks.c index 5903a75..906a072 100644 --- a/user/ansi_parser_callbacks.c +++ b/user/ansi_parser_callbacks.c @@ -11,6 +11,7 @@ #include "version.h" #include "uart_buffer.h" #include "screen.h" +#include "wifimgr.h" volatile bool enquiry_suppressed = false; ETSTimer enqTimer; @@ -51,7 +52,15 @@ apars_handle_enq(void) wifi_get_macaddr(SOFTAP_IF, mac); char buf100[100]; - sprintf(buf100, "\x1bXESPTerm "VERSION_STRING" #"GIT_HASH_BACKEND"+"GIT_HASH_FRONTEND" id=%02X%02X%02X\x1b\\", mac[3], mac[4], mac[5]); + char *buf = buf100; + buf += sprintf(buf, "\x1bX"); + buf += sprintf(buf, "ESPTerm "VERSION_STRING" "); + buf += sprintf(buf, "#"GIT_HASH_BACKEND"+"GIT_HASH_FRONTEND" "); + buf += sprintf(buf, "id=%02X%02X%02X ", mac[3], mac[4], mac[5]); + int x = getStaIpAsString(buf); + if (x) buf += x; + else buf--; // remove the trailing space + buf += sprintf(buf, "\x1b\\"); // version encased in SOS and ST apars_respond(buf100); diff --git a/user/cgi_wifi.c b/user/cgi_wifi.c index 8f0f22f..7378977 100644 --- a/user/cgi_wifi.c +++ b/user/cgi_wifi.c @@ -617,22 +617,7 @@ httpd_cgi_state ICACHE_FLASH_ATTR tplWlan(HttpdConnData *connData, char *token, } } else if (streq(token, "sta_active_ip")) { - x = wifi_get_opmode(); - connectStatus = wifi_station_get_connect_status(); - - if (x == SOFTAP_MODE || connectStatus != STATION_GOT_IP || wificonf->opmode == SOFTAP_MODE) { - strcpy(buff, ""); - } - else { - struct ip_info info; - wifi_get_ip_info(STATION_IF, &info); - sprintf(buff, IPSTR, GOOD_IP2STR(info.ip.addr)); - -// sprintf(buff, "ip: "IPSTR", mask: "IPSTR", gw: "IPSTR, -// GOOD_IP2STR(info.ip.addr), -// GOOD_IP2STR(info.netmask.addr), -// GOOD_IP2STR(info.gw.addr)); - } + getStaIpAsString(buff); } tplSend(connData, buff, -1); diff --git a/user/wifimgr.c b/user/wifimgr.c index f1acc8e..2588365 100644 --- a/user/wifimgr.c +++ b/user/wifimgr.c @@ -8,6 +8,22 @@ WiFiConfigBundle * const wificonf = &persist.current.wificonf; WiFiConfChangeFlags wifi_change_flags; +int ICACHE_FLASH_ATTR getStaIpAsString(char *buffer) +{ + WIFI_MODE x = wifi_get_opmode(); + STATION_STATUS connectStatus = wifi_station_get_connect_status(); + + if (x == SOFTAP_MODE || connectStatus != STATION_GOT_IP || wificonf->opmode == SOFTAP_MODE) { + strcpy(buffer, ""); + return 0; + } + else { + struct ip_info info; + wifi_get_ip_info(STATION_IF, &info); + return sprintf(buffer, IPSTR, GOOD_IP2STR(info.ip.addr)); + } +} + /** * Restore defaults in the WiFi config block. * This is to be called if the WiFi config is corrupted on startup, diff --git a/user/wifimgr.h b/user/wifimgr.h index 33c49bb..146c3c8 100644 --- a/user/wifimgr.h +++ b/user/wifimgr.h @@ -60,6 +60,8 @@ void wifimgr_restore_defaults(void); void wifimgr_apply_settings(void); +int getStaIpAsString(char *buffer); + #if DEBUG_WIFI #define wifi_warn warn #define wifi_dbg dbg