Skip to content

lwip2: fix static address management #4677

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 5 commits into from
May 1, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
91 changes: 91 additions & 0 deletions libraries/esp8266/examples/interactive/interactive.ino
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@

/*
Interactive script meant for debugging only
Run it on serial console and keep this source file opened for the list of commands
Please configure SSID, PSK and IPAddresses below to fit with your network

Released to public domain
*/

#include "ESP8266WiFi.h"
#include "user_interface.h"

const char SSID[] = "open";
const char PSK[] = "";

IPAddress staticip(192, 168, 1, 123);
IPAddress gateway(192, 168, 1, 254);
IPAddress subnet(255, 255, 255, 0);

void setup() {
Serial.begin(115200);
Serial.setDebugOutput(true);

WiFi.mode(WIFI_STA);
WiFi.begin(SSID, PSK);
Serial.println("connecting");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println();
Serial.println(WiFi.localIP());
Serial.print(
"WL_IDLE_STATUS = 0\n"
"WL_NO_SSID_AVAIL = 1\n"
"WL_SCAN_COMPLETED = 2\n"
"WL_CONNECTED = 3\n"
"WL_CONNECT_FAILED = 4\n"
"WL_CONNECTION_LOST = 5\n"
"WL_DISCONNECTED = 6\n"
);
}

void WiFiOn() {
wifi_fpm_do_wakeup();
wifi_fpm_close();
wifi_set_opmode(STATION_MODE);
wifi_station_connect();
}

void WiFiOff() {
wifi_station_disconnect();
wifi_set_opmode(NULL_MODE);
wifi_set_sleep_type(MODEM_SLEEP_T);
wifi_fpm_open();
wifi_fpm_do_sleep(0xFFFFFFF);
}

void loop() {
#define TEST(name, var, varinit, func) \
static decltype(func) var = (varinit); \
if ((var) != (func)) { var = (func); Serial.printf("**** %s: ", name); Serial.println(var); }

#define DO(x...) Serial.println(F( #x )); x; break

TEST("Free Heap", freeHeap, 0, ESP.getFreeHeap());
TEST("WiFiStatus", status, WL_IDLE_STATUS, WiFi.status());
TEST("STA-IP", localIp, (uint32_t)0, WiFi.localIP());
TEST("AP-IP", apIp, (uint32_t)0, WiFi.softAPIP());

switch (Serial.read()) {
case 'F': DO(WiFiOff());
case 'N': DO(WiFiOn());
case '1': DO(WiFi.mode(WIFI_AP));
case '2': DO(WiFi.mode(WIFI_AP_STA));
case '3': DO(WiFi.mode(WIFI_STA));
case 'R': DO(if (((GPI >> 16) & 0xf) == 1) ESP.reset() /* else must hard reset */);
case 'd': DO(WiFi.disconnect());
case 'b': DO(WiFi.begin());
case 'B': DO(WiFi.begin(SSID, PSK));
case 'r': DO(WiFi.reconnect());
case 'c': DO(wifi_station_connect());
case 'a': DO(WiFi.setAutoReconnect(false));
case 'A': DO(WiFi.setAutoReconnect(true));
case 'n': DO(WiFi.setSleepMode(WIFI_NONE_SLEEP));
case 'l': DO(WiFi.setSleepMode(WIFI_LIGHT_SLEEP));
case 'm': DO(WiFi.setSleepMode(WIFI_MODEM_SLEEP));
case 's': DO(WiFi.config(staticip, gateway, subnet));
case 'D': DO(wifi_station_dhcpc_start());
}
}
Binary file modified tools/sdk/lib/liblwip2.a
Binary file not shown.
Binary file modified tools/sdk/lib/liblwip2_1460.a
Binary file not shown.
10 changes: 10 additions & 0 deletions tools/sdk/lwip2/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,16 @@
all install clean: builder/lwip2-src/README
make -C builder -f Makefile.arduino $@

latestmaster: downloadmaster install

latestupstream: downloadupstream install

downloadupstream: downloadmaster
cd builder/lwip2-src; git checkout master

downloadmaster: download
cd builder; git checkout master

download: builder/lwip2-src/README

builder/lwip2-src/README:
Expand Down
6 changes: 5 additions & 1 deletion tools/sdk/lwip2/README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
```make install```: download, compile, install lwip2

```make latestmaster```: download latest lwip2, compile, install

```make latestupstream```: download latest lwip2 and latest upstream lwIP, compile, install

```make download```: download lwIP-2 builder

```make clean```: clean builder only
Expand All @@ -10,4 +14,4 @@ MSS values are in builder/Makefile.arduino

MSS values in boards.txt are only informative

current lwip2 submodule repository: https://github.com/d-a-v/esp82xx-nonos-linklayer/tree/arduino-2.4.0
current lwip2 submodule repository: https://github.com/d-a-v/esp82xx-nonos-linklayer/tree/arduino-2.4.1
10 changes: 10 additions & 0 deletions tools/sdk/lwip2/include/gluedebug.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
#ifndef __GLUE_DEBUG_H
#define __GLUE_DEBUG_H

// this file is commonly included by both sides of the glue
/////////////////////////////////////////////////////////////////////////////
// user-definable

Expand All @@ -27,6 +28,15 @@
#define LWIP_DBG_TYPES_ON (LWIP_DBG_ON)
#endif

/////////////////////////////////////////////////////////////////////////////
// packet capture callback from esp side
#include <stdlib.h>

#ifdef __cplusplus
extern "C"
#endif
void (*phy_capture) (int netif_idx, const char* data, size_t len, int out, int success);

/////////////////////////////////////////////////////////////////////////////

#if UDEBUG && UDEBUGSTORE
Expand Down
2 changes: 1 addition & 1 deletion tools/sdk/lwip2/include/lwip-git-hash.h
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// generated by makefiles/make-lwip2-hash
#ifndef LWIP_HASH_H
#define LWIP_HASH_H
#define LWIP_HASH_STR "STABLE-2_0_3_RELEASE/glue:arduino-2.4.1"
#define LWIP_HASH_STR "STABLE-2_0_3_RELEASE/glue:arduino-2.4.1-7-g2b827f8"
#endif // LWIP_HASH_H
16 changes: 13 additions & 3 deletions tools/sdk/lwip2/include/lwipopts.h
Original file line number Diff line number Diff line change
Expand Up @@ -2688,9 +2688,11 @@
* Return ERR_OK if packet is accepted, any error code otherwise.
* Payload points to ethernet header!
*/
#ifdef __DOXYGEN__
#define LWIP_HOOK_UNKNOWN_ETH_PROTOCOL(pbuf, netif)
#endif
//#ifdef __DOXYGEN__
//#define LWIP_HOOK_UNKNOWN_ETH_PROTOCOL(pbuf, netif)
//#endif
#define LWIP_HOOK_UNKNOWN_ETH_PROTOCOL(pbuf, netif) lwip_unhandled_packet((pbuf), (netif))

/**
* @}
*/
Expand Down Expand Up @@ -3003,4 +3005,12 @@
#include "lwip-git-hash.h"
#include <sys/time.h> // settimeofday() + struct timeval

// allow to handle special packets (user redefinable)
struct pbuf;
struct netif;
#ifndef LWIP_ERR_T
#define LWIP_ERR_T s8
#endif
LWIP_ERR_T lwip_unhandled_packet (struct pbuf* pbuf, struct netif* netif) __attribute__((weak));

#endif // MYLWIPOPTS_H