mirror of
https://github.com/esp8266/Arduino.git
synced 2025-06-04 18:03:20 +03:00
IPv6 on esp8266-nonos-sdk and arduino (#5136)
This commit is contained in:
parent
a501d3ca3b
commit
5c4db3acf4
464
boards.txt
464
boards.txt
@ -321,19 +321,27 @@ generic.menu.led.15.build.led=-DLED_BUILTIN=15
|
||||
generic.menu.ip.lm2f=v2 Lower Memory
|
||||
generic.menu.ip.lm2f.build.lwip_include=lwip2/include
|
||||
generic.menu.ip.lm2f.build.lwip_lib=-llwip2-536-feat
|
||||
generic.menu.ip.lm2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1
|
||||
generic.menu.ip.lm2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=0
|
||||
generic.menu.ip.hb2f=v2 Higher Bandwidth
|
||||
generic.menu.ip.hb2f.build.lwip_include=lwip2/include
|
||||
generic.menu.ip.hb2f.build.lwip_lib=-llwip2-1460-feat
|
||||
generic.menu.ip.hb2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1
|
||||
generic.menu.ip.hb2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1 -DLWIP_IPV6=0
|
||||
generic.menu.ip.lm2n=v2 Lower Memory (no features)
|
||||
generic.menu.ip.lm2n.build.lwip_include=lwip2/include
|
||||
generic.menu.ip.lm2n.build.lwip_lib=-llwip2-536
|
||||
generic.menu.ip.lm2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=0
|
||||
generic.menu.ip.lm2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=0 -DLWIP_IPV6=0
|
||||
generic.menu.ip.hb2n=v2 Higher Bandwidth (no features)
|
||||
generic.menu.ip.hb2n.build.lwip_include=lwip2/include
|
||||
generic.menu.ip.hb2n.build.lwip_lib=-llwip2-1460
|
||||
generic.menu.ip.hb2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=0
|
||||
generic.menu.ip.hb2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=0 -DLWIP_IPV6=0
|
||||
generic.menu.ip.lm6f=v2 IPv6 Lower Memory
|
||||
generic.menu.ip.lm6f.build.lwip_include=lwip2/include
|
||||
generic.menu.ip.lm6f.build.lwip_lib=-llwip6-536-feat
|
||||
generic.menu.ip.lm6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=1
|
||||
generic.menu.ip.hb6f=v2 IPv6 Higher Bandwidth
|
||||
generic.menu.ip.hb6f.build.lwip_include=lwip2/include
|
||||
generic.menu.ip.hb6f.build.lwip_lib=-llwip6-1460-feat
|
||||
generic.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1 -DLWIP_IPV6=1
|
||||
generic.menu.ip.hb1=v1.4 Higher Bandwidth
|
||||
generic.menu.ip.hb1.build.lwip_lib=-llwip_gcc
|
||||
generic.menu.ip.hb1.build.lwip_flags=-DLWIP_OPEN_SRC
|
||||
@ -572,19 +580,27 @@ esp8285.menu.led.15.build.led=-DLED_BUILTIN=15
|
||||
esp8285.menu.ip.lm2f=v2 Lower Memory
|
||||
esp8285.menu.ip.lm2f.build.lwip_include=lwip2/include
|
||||
esp8285.menu.ip.lm2f.build.lwip_lib=-llwip2-536-feat
|
||||
esp8285.menu.ip.lm2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1
|
||||
esp8285.menu.ip.lm2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=0
|
||||
esp8285.menu.ip.hb2f=v2 Higher Bandwidth
|
||||
esp8285.menu.ip.hb2f.build.lwip_include=lwip2/include
|
||||
esp8285.menu.ip.hb2f.build.lwip_lib=-llwip2-1460-feat
|
||||
esp8285.menu.ip.hb2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1
|
||||
esp8285.menu.ip.hb2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1 -DLWIP_IPV6=0
|
||||
esp8285.menu.ip.lm2n=v2 Lower Memory (no features)
|
||||
esp8285.menu.ip.lm2n.build.lwip_include=lwip2/include
|
||||
esp8285.menu.ip.lm2n.build.lwip_lib=-llwip2-536
|
||||
esp8285.menu.ip.lm2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=0
|
||||
esp8285.menu.ip.lm2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=0 -DLWIP_IPV6=0
|
||||
esp8285.menu.ip.hb2n=v2 Higher Bandwidth (no features)
|
||||
esp8285.menu.ip.hb2n.build.lwip_include=lwip2/include
|
||||
esp8285.menu.ip.hb2n.build.lwip_lib=-llwip2-1460
|
||||
esp8285.menu.ip.hb2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=0
|
||||
esp8285.menu.ip.hb2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=0 -DLWIP_IPV6=0
|
||||
esp8285.menu.ip.lm6f=v2 IPv6 Lower Memory
|
||||
esp8285.menu.ip.lm6f.build.lwip_include=lwip2/include
|
||||
esp8285.menu.ip.lm6f.build.lwip_lib=-llwip6-536-feat
|
||||
esp8285.menu.ip.lm6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=1
|
||||
esp8285.menu.ip.hb6f=v2 IPv6 Higher Bandwidth
|
||||
esp8285.menu.ip.hb6f.build.lwip_include=lwip2/include
|
||||
esp8285.menu.ip.hb6f.build.lwip_lib=-llwip6-1460-feat
|
||||
esp8285.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1 -DLWIP_IPV6=1
|
||||
esp8285.menu.ip.hb1=v1.4 Higher Bandwidth
|
||||
esp8285.menu.ip.hb1.build.lwip_lib=-llwip_gcc
|
||||
esp8285.menu.ip.hb1.build.lwip_flags=-DLWIP_OPEN_SRC
|
||||
@ -749,19 +765,27 @@ espduino.menu.eesz.4M3M.build.spiffs_blocksize=8192
|
||||
espduino.menu.ip.lm2f=v2 Lower Memory
|
||||
espduino.menu.ip.lm2f.build.lwip_include=lwip2/include
|
||||
espduino.menu.ip.lm2f.build.lwip_lib=-llwip2-536-feat
|
||||
espduino.menu.ip.lm2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1
|
||||
espduino.menu.ip.lm2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=0
|
||||
espduino.menu.ip.hb2f=v2 Higher Bandwidth
|
||||
espduino.menu.ip.hb2f.build.lwip_include=lwip2/include
|
||||
espduino.menu.ip.hb2f.build.lwip_lib=-llwip2-1460-feat
|
||||
espduino.menu.ip.hb2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1
|
||||
espduino.menu.ip.hb2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1 -DLWIP_IPV6=0
|
||||
espduino.menu.ip.lm2n=v2 Lower Memory (no features)
|
||||
espduino.menu.ip.lm2n.build.lwip_include=lwip2/include
|
||||
espduino.menu.ip.lm2n.build.lwip_lib=-llwip2-536
|
||||
espduino.menu.ip.lm2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=0
|
||||
espduino.menu.ip.lm2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=0 -DLWIP_IPV6=0
|
||||
espduino.menu.ip.hb2n=v2 Higher Bandwidth (no features)
|
||||
espduino.menu.ip.hb2n.build.lwip_include=lwip2/include
|
||||
espduino.menu.ip.hb2n.build.lwip_lib=-llwip2-1460
|
||||
espduino.menu.ip.hb2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=0
|
||||
espduino.menu.ip.hb2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=0 -DLWIP_IPV6=0
|
||||
espduino.menu.ip.lm6f=v2 IPv6 Lower Memory
|
||||
espduino.menu.ip.lm6f.build.lwip_include=lwip2/include
|
||||
espduino.menu.ip.lm6f.build.lwip_lib=-llwip6-536-feat
|
||||
espduino.menu.ip.lm6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=1
|
||||
espduino.menu.ip.hb6f=v2 IPv6 Higher Bandwidth
|
||||
espduino.menu.ip.hb6f.build.lwip_include=lwip2/include
|
||||
espduino.menu.ip.hb6f.build.lwip_lib=-llwip6-1460-feat
|
||||
espduino.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1 -DLWIP_IPV6=1
|
||||
espduino.menu.ip.hb1=v1.4 Higher Bandwidth
|
||||
espduino.menu.ip.hb1.build.lwip_lib=-llwip_gcc
|
||||
espduino.menu.ip.hb1.build.lwip_flags=-DLWIP_OPEN_SRC
|
||||
@ -918,19 +942,27 @@ huzzah.menu.eesz.4M3M.build.spiffs_blocksize=8192
|
||||
huzzah.menu.ip.lm2f=v2 Lower Memory
|
||||
huzzah.menu.ip.lm2f.build.lwip_include=lwip2/include
|
||||
huzzah.menu.ip.lm2f.build.lwip_lib=-llwip2-536-feat
|
||||
huzzah.menu.ip.lm2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1
|
||||
huzzah.menu.ip.lm2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=0
|
||||
huzzah.menu.ip.hb2f=v2 Higher Bandwidth
|
||||
huzzah.menu.ip.hb2f.build.lwip_include=lwip2/include
|
||||
huzzah.menu.ip.hb2f.build.lwip_lib=-llwip2-1460-feat
|
||||
huzzah.menu.ip.hb2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1
|
||||
huzzah.menu.ip.hb2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1 -DLWIP_IPV6=0
|
||||
huzzah.menu.ip.lm2n=v2 Lower Memory (no features)
|
||||
huzzah.menu.ip.lm2n.build.lwip_include=lwip2/include
|
||||
huzzah.menu.ip.lm2n.build.lwip_lib=-llwip2-536
|
||||
huzzah.menu.ip.lm2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=0
|
||||
huzzah.menu.ip.lm2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=0 -DLWIP_IPV6=0
|
||||
huzzah.menu.ip.hb2n=v2 Higher Bandwidth (no features)
|
||||
huzzah.menu.ip.hb2n.build.lwip_include=lwip2/include
|
||||
huzzah.menu.ip.hb2n.build.lwip_lib=-llwip2-1460
|
||||
huzzah.menu.ip.hb2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=0
|
||||
huzzah.menu.ip.hb2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=0 -DLWIP_IPV6=0
|
||||
huzzah.menu.ip.lm6f=v2 IPv6 Lower Memory
|
||||
huzzah.menu.ip.lm6f.build.lwip_include=lwip2/include
|
||||
huzzah.menu.ip.lm6f.build.lwip_lib=-llwip6-536-feat
|
||||
huzzah.menu.ip.lm6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=1
|
||||
huzzah.menu.ip.hb6f=v2 IPv6 Higher Bandwidth
|
||||
huzzah.menu.ip.hb6f.build.lwip_include=lwip2/include
|
||||
huzzah.menu.ip.hb6f.build.lwip_lib=-llwip6-1460-feat
|
||||
huzzah.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1 -DLWIP_IPV6=1
|
||||
huzzah.menu.ip.hb1=v1.4 Higher Bandwidth
|
||||
huzzah.menu.ip.hb1.build.lwip_lib=-llwip_gcc
|
||||
huzzah.menu.ip.hb1.build.lwip_flags=-DLWIP_OPEN_SRC
|
||||
@ -1087,19 +1119,27 @@ inventone.menu.eesz.4M3M.build.spiffs_blocksize=8192
|
||||
inventone.menu.ip.lm2f=v2 Lower Memory
|
||||
inventone.menu.ip.lm2f.build.lwip_include=lwip2/include
|
||||
inventone.menu.ip.lm2f.build.lwip_lib=-llwip2-536-feat
|
||||
inventone.menu.ip.lm2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1
|
||||
inventone.menu.ip.lm2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=0
|
||||
inventone.menu.ip.hb2f=v2 Higher Bandwidth
|
||||
inventone.menu.ip.hb2f.build.lwip_include=lwip2/include
|
||||
inventone.menu.ip.hb2f.build.lwip_lib=-llwip2-1460-feat
|
||||
inventone.menu.ip.hb2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1
|
||||
inventone.menu.ip.hb2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1 -DLWIP_IPV6=0
|
||||
inventone.menu.ip.lm2n=v2 Lower Memory (no features)
|
||||
inventone.menu.ip.lm2n.build.lwip_include=lwip2/include
|
||||
inventone.menu.ip.lm2n.build.lwip_lib=-llwip2-536
|
||||
inventone.menu.ip.lm2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=0
|
||||
inventone.menu.ip.lm2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=0 -DLWIP_IPV6=0
|
||||
inventone.menu.ip.hb2n=v2 Higher Bandwidth (no features)
|
||||
inventone.menu.ip.hb2n.build.lwip_include=lwip2/include
|
||||
inventone.menu.ip.hb2n.build.lwip_lib=-llwip2-1460
|
||||
inventone.menu.ip.hb2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=0
|
||||
inventone.menu.ip.hb2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=0 -DLWIP_IPV6=0
|
||||
inventone.menu.ip.lm6f=v2 IPv6 Lower Memory
|
||||
inventone.menu.ip.lm6f.build.lwip_include=lwip2/include
|
||||
inventone.menu.ip.lm6f.build.lwip_lib=-llwip6-536-feat
|
||||
inventone.menu.ip.lm6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=1
|
||||
inventone.menu.ip.hb6f=v2 IPv6 Higher Bandwidth
|
||||
inventone.menu.ip.hb6f.build.lwip_include=lwip2/include
|
||||
inventone.menu.ip.hb6f.build.lwip_lib=-llwip6-1460-feat
|
||||
inventone.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1 -DLWIP_IPV6=1
|
||||
inventone.menu.ip.hb1=v1.4 Higher Bandwidth
|
||||
inventone.menu.ip.hb1.build.lwip_lib=-llwip_gcc
|
||||
inventone.menu.ip.hb1.build.lwip_flags=-DLWIP_OPEN_SRC
|
||||
@ -1259,19 +1299,27 @@ cw01.menu.eesz.4M3M.build.spiffs_blocksize=8192
|
||||
cw01.menu.ip.lm2f=v2 Lower Memory
|
||||
cw01.menu.ip.lm2f.build.lwip_include=lwip2/include
|
||||
cw01.menu.ip.lm2f.build.lwip_lib=-llwip2-536-feat
|
||||
cw01.menu.ip.lm2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1
|
||||
cw01.menu.ip.lm2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=0
|
||||
cw01.menu.ip.hb2f=v2 Higher Bandwidth
|
||||
cw01.menu.ip.hb2f.build.lwip_include=lwip2/include
|
||||
cw01.menu.ip.hb2f.build.lwip_lib=-llwip2-1460-feat
|
||||
cw01.menu.ip.hb2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1
|
||||
cw01.menu.ip.hb2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1 -DLWIP_IPV6=0
|
||||
cw01.menu.ip.lm2n=v2 Lower Memory (no features)
|
||||
cw01.menu.ip.lm2n.build.lwip_include=lwip2/include
|
||||
cw01.menu.ip.lm2n.build.lwip_lib=-llwip2-536
|
||||
cw01.menu.ip.lm2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=0
|
||||
cw01.menu.ip.lm2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=0 -DLWIP_IPV6=0
|
||||
cw01.menu.ip.hb2n=v2 Higher Bandwidth (no features)
|
||||
cw01.menu.ip.hb2n.build.lwip_include=lwip2/include
|
||||
cw01.menu.ip.hb2n.build.lwip_lib=-llwip2-1460
|
||||
cw01.menu.ip.hb2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=0
|
||||
cw01.menu.ip.hb2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=0 -DLWIP_IPV6=0
|
||||
cw01.menu.ip.lm6f=v2 IPv6 Lower Memory
|
||||
cw01.menu.ip.lm6f.build.lwip_include=lwip2/include
|
||||
cw01.menu.ip.lm6f.build.lwip_lib=-llwip6-536-feat
|
||||
cw01.menu.ip.lm6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=1
|
||||
cw01.menu.ip.hb6f=v2 IPv6 Higher Bandwidth
|
||||
cw01.menu.ip.hb6f.build.lwip_include=lwip2/include
|
||||
cw01.menu.ip.hb6f.build.lwip_lib=-llwip6-1460-feat
|
||||
cw01.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1 -DLWIP_IPV6=1
|
||||
cw01.menu.ip.hb1=v1.4 Higher Bandwidth
|
||||
cw01.menu.ip.hb1.build.lwip_lib=-llwip_gcc
|
||||
cw01.menu.ip.hb1.build.lwip_flags=-DLWIP_OPEN_SRC
|
||||
@ -1431,19 +1479,27 @@ espresso_lite_v1.menu.ResetMethod.nodemcu.upload.resetmethod=nodemcu
|
||||
espresso_lite_v1.menu.ip.lm2f=v2 Lower Memory
|
||||
espresso_lite_v1.menu.ip.lm2f.build.lwip_include=lwip2/include
|
||||
espresso_lite_v1.menu.ip.lm2f.build.lwip_lib=-llwip2-536-feat
|
||||
espresso_lite_v1.menu.ip.lm2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1
|
||||
espresso_lite_v1.menu.ip.lm2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=0
|
||||
espresso_lite_v1.menu.ip.hb2f=v2 Higher Bandwidth
|
||||
espresso_lite_v1.menu.ip.hb2f.build.lwip_include=lwip2/include
|
||||
espresso_lite_v1.menu.ip.hb2f.build.lwip_lib=-llwip2-1460-feat
|
||||
espresso_lite_v1.menu.ip.hb2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1
|
||||
espresso_lite_v1.menu.ip.hb2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1 -DLWIP_IPV6=0
|
||||
espresso_lite_v1.menu.ip.lm2n=v2 Lower Memory (no features)
|
||||
espresso_lite_v1.menu.ip.lm2n.build.lwip_include=lwip2/include
|
||||
espresso_lite_v1.menu.ip.lm2n.build.lwip_lib=-llwip2-536
|
||||
espresso_lite_v1.menu.ip.lm2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=0
|
||||
espresso_lite_v1.menu.ip.lm2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=0 -DLWIP_IPV6=0
|
||||
espresso_lite_v1.menu.ip.hb2n=v2 Higher Bandwidth (no features)
|
||||
espresso_lite_v1.menu.ip.hb2n.build.lwip_include=lwip2/include
|
||||
espresso_lite_v1.menu.ip.hb2n.build.lwip_lib=-llwip2-1460
|
||||
espresso_lite_v1.menu.ip.hb2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=0
|
||||
espresso_lite_v1.menu.ip.hb2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=0 -DLWIP_IPV6=0
|
||||
espresso_lite_v1.menu.ip.lm6f=v2 IPv6 Lower Memory
|
||||
espresso_lite_v1.menu.ip.lm6f.build.lwip_include=lwip2/include
|
||||
espresso_lite_v1.menu.ip.lm6f.build.lwip_lib=-llwip6-536-feat
|
||||
espresso_lite_v1.menu.ip.lm6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=1
|
||||
espresso_lite_v1.menu.ip.hb6f=v2 IPv6 Higher Bandwidth
|
||||
espresso_lite_v1.menu.ip.hb6f.build.lwip_include=lwip2/include
|
||||
espresso_lite_v1.menu.ip.hb6f.build.lwip_lib=-llwip6-1460-feat
|
||||
espresso_lite_v1.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1 -DLWIP_IPV6=1
|
||||
espresso_lite_v1.menu.ip.hb1=v1.4 Higher Bandwidth
|
||||
espresso_lite_v1.menu.ip.hb1.build.lwip_lib=-llwip_gcc
|
||||
espresso_lite_v1.menu.ip.hb1.build.lwip_flags=-DLWIP_OPEN_SRC
|
||||
@ -1603,19 +1659,27 @@ espresso_lite_v2.menu.ResetMethod.nodemcu.upload.resetmethod=nodemcu
|
||||
espresso_lite_v2.menu.ip.lm2f=v2 Lower Memory
|
||||
espresso_lite_v2.menu.ip.lm2f.build.lwip_include=lwip2/include
|
||||
espresso_lite_v2.menu.ip.lm2f.build.lwip_lib=-llwip2-536-feat
|
||||
espresso_lite_v2.menu.ip.lm2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1
|
||||
espresso_lite_v2.menu.ip.lm2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=0
|
||||
espresso_lite_v2.menu.ip.hb2f=v2 Higher Bandwidth
|
||||
espresso_lite_v2.menu.ip.hb2f.build.lwip_include=lwip2/include
|
||||
espresso_lite_v2.menu.ip.hb2f.build.lwip_lib=-llwip2-1460-feat
|
||||
espresso_lite_v2.menu.ip.hb2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1
|
||||
espresso_lite_v2.menu.ip.hb2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1 -DLWIP_IPV6=0
|
||||
espresso_lite_v2.menu.ip.lm2n=v2 Lower Memory (no features)
|
||||
espresso_lite_v2.menu.ip.lm2n.build.lwip_include=lwip2/include
|
||||
espresso_lite_v2.menu.ip.lm2n.build.lwip_lib=-llwip2-536
|
||||
espresso_lite_v2.menu.ip.lm2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=0
|
||||
espresso_lite_v2.menu.ip.lm2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=0 -DLWIP_IPV6=0
|
||||
espresso_lite_v2.menu.ip.hb2n=v2 Higher Bandwidth (no features)
|
||||
espresso_lite_v2.menu.ip.hb2n.build.lwip_include=lwip2/include
|
||||
espresso_lite_v2.menu.ip.hb2n.build.lwip_lib=-llwip2-1460
|
||||
espresso_lite_v2.menu.ip.hb2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=0
|
||||
espresso_lite_v2.menu.ip.hb2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=0 -DLWIP_IPV6=0
|
||||
espresso_lite_v2.menu.ip.lm6f=v2 IPv6 Lower Memory
|
||||
espresso_lite_v2.menu.ip.lm6f.build.lwip_include=lwip2/include
|
||||
espresso_lite_v2.menu.ip.lm6f.build.lwip_lib=-llwip6-536-feat
|
||||
espresso_lite_v2.menu.ip.lm6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=1
|
||||
espresso_lite_v2.menu.ip.hb6f=v2 IPv6 Higher Bandwidth
|
||||
espresso_lite_v2.menu.ip.hb6f.build.lwip_include=lwip2/include
|
||||
espresso_lite_v2.menu.ip.hb6f.build.lwip_lib=-llwip6-1460-feat
|
||||
espresso_lite_v2.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1 -DLWIP_IPV6=1
|
||||
espresso_lite_v2.menu.ip.hb1=v1.4 Higher Bandwidth
|
||||
espresso_lite_v2.menu.ip.hb1.build.lwip_lib=-llwip_gcc
|
||||
espresso_lite_v2.menu.ip.hb1.build.lwip_flags=-DLWIP_OPEN_SRC
|
||||
@ -1775,19 +1839,27 @@ phoenix_v1.menu.ResetMethod.nodemcu.upload.resetmethod=nodemcu
|
||||
phoenix_v1.menu.ip.lm2f=v2 Lower Memory
|
||||
phoenix_v1.menu.ip.lm2f.build.lwip_include=lwip2/include
|
||||
phoenix_v1.menu.ip.lm2f.build.lwip_lib=-llwip2-536-feat
|
||||
phoenix_v1.menu.ip.lm2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1
|
||||
phoenix_v1.menu.ip.lm2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=0
|
||||
phoenix_v1.menu.ip.hb2f=v2 Higher Bandwidth
|
||||
phoenix_v1.menu.ip.hb2f.build.lwip_include=lwip2/include
|
||||
phoenix_v1.menu.ip.hb2f.build.lwip_lib=-llwip2-1460-feat
|
||||
phoenix_v1.menu.ip.hb2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1
|
||||
phoenix_v1.menu.ip.hb2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1 -DLWIP_IPV6=0
|
||||
phoenix_v1.menu.ip.lm2n=v2 Lower Memory (no features)
|
||||
phoenix_v1.menu.ip.lm2n.build.lwip_include=lwip2/include
|
||||
phoenix_v1.menu.ip.lm2n.build.lwip_lib=-llwip2-536
|
||||
phoenix_v1.menu.ip.lm2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=0
|
||||
phoenix_v1.menu.ip.lm2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=0 -DLWIP_IPV6=0
|
||||
phoenix_v1.menu.ip.hb2n=v2 Higher Bandwidth (no features)
|
||||
phoenix_v1.menu.ip.hb2n.build.lwip_include=lwip2/include
|
||||
phoenix_v1.menu.ip.hb2n.build.lwip_lib=-llwip2-1460
|
||||
phoenix_v1.menu.ip.hb2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=0
|
||||
phoenix_v1.menu.ip.hb2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=0 -DLWIP_IPV6=0
|
||||
phoenix_v1.menu.ip.lm6f=v2 IPv6 Lower Memory
|
||||
phoenix_v1.menu.ip.lm6f.build.lwip_include=lwip2/include
|
||||
phoenix_v1.menu.ip.lm6f.build.lwip_lib=-llwip6-536-feat
|
||||
phoenix_v1.menu.ip.lm6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=1
|
||||
phoenix_v1.menu.ip.hb6f=v2 IPv6 Higher Bandwidth
|
||||
phoenix_v1.menu.ip.hb6f.build.lwip_include=lwip2/include
|
||||
phoenix_v1.menu.ip.hb6f.build.lwip_lib=-llwip6-1460-feat
|
||||
phoenix_v1.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1 -DLWIP_IPV6=1
|
||||
phoenix_v1.menu.ip.hb1=v1.4 Higher Bandwidth
|
||||
phoenix_v1.menu.ip.hb1.build.lwip_lib=-llwip_gcc
|
||||
phoenix_v1.menu.ip.hb1.build.lwip_flags=-DLWIP_OPEN_SRC
|
||||
@ -1947,19 +2019,27 @@ phoenix_v2.menu.ResetMethod.nodemcu.upload.resetmethod=nodemcu
|
||||
phoenix_v2.menu.ip.lm2f=v2 Lower Memory
|
||||
phoenix_v2.menu.ip.lm2f.build.lwip_include=lwip2/include
|
||||
phoenix_v2.menu.ip.lm2f.build.lwip_lib=-llwip2-536-feat
|
||||
phoenix_v2.menu.ip.lm2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1
|
||||
phoenix_v2.menu.ip.lm2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=0
|
||||
phoenix_v2.menu.ip.hb2f=v2 Higher Bandwidth
|
||||
phoenix_v2.menu.ip.hb2f.build.lwip_include=lwip2/include
|
||||
phoenix_v2.menu.ip.hb2f.build.lwip_lib=-llwip2-1460-feat
|
||||
phoenix_v2.menu.ip.hb2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1
|
||||
phoenix_v2.menu.ip.hb2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1 -DLWIP_IPV6=0
|
||||
phoenix_v2.menu.ip.lm2n=v2 Lower Memory (no features)
|
||||
phoenix_v2.menu.ip.lm2n.build.lwip_include=lwip2/include
|
||||
phoenix_v2.menu.ip.lm2n.build.lwip_lib=-llwip2-536
|
||||
phoenix_v2.menu.ip.lm2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=0
|
||||
phoenix_v2.menu.ip.lm2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=0 -DLWIP_IPV6=0
|
||||
phoenix_v2.menu.ip.hb2n=v2 Higher Bandwidth (no features)
|
||||
phoenix_v2.menu.ip.hb2n.build.lwip_include=lwip2/include
|
||||
phoenix_v2.menu.ip.hb2n.build.lwip_lib=-llwip2-1460
|
||||
phoenix_v2.menu.ip.hb2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=0
|
||||
phoenix_v2.menu.ip.hb2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=0 -DLWIP_IPV6=0
|
||||
phoenix_v2.menu.ip.lm6f=v2 IPv6 Lower Memory
|
||||
phoenix_v2.menu.ip.lm6f.build.lwip_include=lwip2/include
|
||||
phoenix_v2.menu.ip.lm6f.build.lwip_lib=-llwip6-536-feat
|
||||
phoenix_v2.menu.ip.lm6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=1
|
||||
phoenix_v2.menu.ip.hb6f=v2 IPv6 Higher Bandwidth
|
||||
phoenix_v2.menu.ip.hb6f.build.lwip_include=lwip2/include
|
||||
phoenix_v2.menu.ip.hb6f.build.lwip_lib=-llwip6-1460-feat
|
||||
phoenix_v2.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1 -DLWIP_IPV6=1
|
||||
phoenix_v2.menu.ip.hb1=v1.4 Higher Bandwidth
|
||||
phoenix_v2.menu.ip.hb1.build.lwip_lib=-llwip_gcc
|
||||
phoenix_v2.menu.ip.hb1.build.lwip_flags=-DLWIP_OPEN_SRC
|
||||
@ -2116,19 +2196,27 @@ nodemcu.menu.eesz.4M3M.build.spiffs_blocksize=8192
|
||||
nodemcu.menu.ip.lm2f=v2 Lower Memory
|
||||
nodemcu.menu.ip.lm2f.build.lwip_include=lwip2/include
|
||||
nodemcu.menu.ip.lm2f.build.lwip_lib=-llwip2-536-feat
|
||||
nodemcu.menu.ip.lm2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1
|
||||
nodemcu.menu.ip.lm2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=0
|
||||
nodemcu.menu.ip.hb2f=v2 Higher Bandwidth
|
||||
nodemcu.menu.ip.hb2f.build.lwip_include=lwip2/include
|
||||
nodemcu.menu.ip.hb2f.build.lwip_lib=-llwip2-1460-feat
|
||||
nodemcu.menu.ip.hb2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1
|
||||
nodemcu.menu.ip.hb2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1 -DLWIP_IPV6=0
|
||||
nodemcu.menu.ip.lm2n=v2 Lower Memory (no features)
|
||||
nodemcu.menu.ip.lm2n.build.lwip_include=lwip2/include
|
||||
nodemcu.menu.ip.lm2n.build.lwip_lib=-llwip2-536
|
||||
nodemcu.menu.ip.lm2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=0
|
||||
nodemcu.menu.ip.lm2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=0 -DLWIP_IPV6=0
|
||||
nodemcu.menu.ip.hb2n=v2 Higher Bandwidth (no features)
|
||||
nodemcu.menu.ip.hb2n.build.lwip_include=lwip2/include
|
||||
nodemcu.menu.ip.hb2n.build.lwip_lib=-llwip2-1460
|
||||
nodemcu.menu.ip.hb2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=0
|
||||
nodemcu.menu.ip.hb2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=0 -DLWIP_IPV6=0
|
||||
nodemcu.menu.ip.lm6f=v2 IPv6 Lower Memory
|
||||
nodemcu.menu.ip.lm6f.build.lwip_include=lwip2/include
|
||||
nodemcu.menu.ip.lm6f.build.lwip_lib=-llwip6-536-feat
|
||||
nodemcu.menu.ip.lm6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=1
|
||||
nodemcu.menu.ip.hb6f=v2 IPv6 Higher Bandwidth
|
||||
nodemcu.menu.ip.hb6f.build.lwip_include=lwip2/include
|
||||
nodemcu.menu.ip.hb6f.build.lwip_lib=-llwip6-1460-feat
|
||||
nodemcu.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1 -DLWIP_IPV6=1
|
||||
nodemcu.menu.ip.hb1=v1.4 Higher Bandwidth
|
||||
nodemcu.menu.ip.hb1.build.lwip_lib=-llwip_gcc
|
||||
nodemcu.menu.ip.hb1.build.lwip_flags=-DLWIP_OPEN_SRC
|
||||
@ -2285,19 +2373,27 @@ nodemcuv2.menu.eesz.4M3M.build.spiffs_blocksize=8192
|
||||
nodemcuv2.menu.ip.lm2f=v2 Lower Memory
|
||||
nodemcuv2.menu.ip.lm2f.build.lwip_include=lwip2/include
|
||||
nodemcuv2.menu.ip.lm2f.build.lwip_lib=-llwip2-536-feat
|
||||
nodemcuv2.menu.ip.lm2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1
|
||||
nodemcuv2.menu.ip.lm2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=0
|
||||
nodemcuv2.menu.ip.hb2f=v2 Higher Bandwidth
|
||||
nodemcuv2.menu.ip.hb2f.build.lwip_include=lwip2/include
|
||||
nodemcuv2.menu.ip.hb2f.build.lwip_lib=-llwip2-1460-feat
|
||||
nodemcuv2.menu.ip.hb2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1
|
||||
nodemcuv2.menu.ip.hb2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1 -DLWIP_IPV6=0
|
||||
nodemcuv2.menu.ip.lm2n=v2 Lower Memory (no features)
|
||||
nodemcuv2.menu.ip.lm2n.build.lwip_include=lwip2/include
|
||||
nodemcuv2.menu.ip.lm2n.build.lwip_lib=-llwip2-536
|
||||
nodemcuv2.menu.ip.lm2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=0
|
||||
nodemcuv2.menu.ip.lm2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=0 -DLWIP_IPV6=0
|
||||
nodemcuv2.menu.ip.hb2n=v2 Higher Bandwidth (no features)
|
||||
nodemcuv2.menu.ip.hb2n.build.lwip_include=lwip2/include
|
||||
nodemcuv2.menu.ip.hb2n.build.lwip_lib=-llwip2-1460
|
||||
nodemcuv2.menu.ip.hb2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=0
|
||||
nodemcuv2.menu.ip.hb2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=0 -DLWIP_IPV6=0
|
||||
nodemcuv2.menu.ip.lm6f=v2 IPv6 Lower Memory
|
||||
nodemcuv2.menu.ip.lm6f.build.lwip_include=lwip2/include
|
||||
nodemcuv2.menu.ip.lm6f.build.lwip_lib=-llwip6-536-feat
|
||||
nodemcuv2.menu.ip.lm6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=1
|
||||
nodemcuv2.menu.ip.hb6f=v2 IPv6 Higher Bandwidth
|
||||
nodemcuv2.menu.ip.hb6f.build.lwip_include=lwip2/include
|
||||
nodemcuv2.menu.ip.hb6f.build.lwip_lib=-llwip6-1460-feat
|
||||
nodemcuv2.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1 -DLWIP_IPV6=1
|
||||
nodemcuv2.menu.ip.hb1=v1.4 Higher Bandwidth
|
||||
nodemcuv2.menu.ip.hb1.build.lwip_lib=-llwip_gcc
|
||||
nodemcuv2.menu.ip.hb1.build.lwip_flags=-DLWIP_OPEN_SRC
|
||||
@ -2444,19 +2540,27 @@ modwifi.menu.eesz.2M1M.build.spiffs_blocksize=8192
|
||||
modwifi.menu.ip.lm2f=v2 Lower Memory
|
||||
modwifi.menu.ip.lm2f.build.lwip_include=lwip2/include
|
||||
modwifi.menu.ip.lm2f.build.lwip_lib=-llwip2-536-feat
|
||||
modwifi.menu.ip.lm2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1
|
||||
modwifi.menu.ip.lm2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=0
|
||||
modwifi.menu.ip.hb2f=v2 Higher Bandwidth
|
||||
modwifi.menu.ip.hb2f.build.lwip_include=lwip2/include
|
||||
modwifi.menu.ip.hb2f.build.lwip_lib=-llwip2-1460-feat
|
||||
modwifi.menu.ip.hb2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1
|
||||
modwifi.menu.ip.hb2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1 -DLWIP_IPV6=0
|
||||
modwifi.menu.ip.lm2n=v2 Lower Memory (no features)
|
||||
modwifi.menu.ip.lm2n.build.lwip_include=lwip2/include
|
||||
modwifi.menu.ip.lm2n.build.lwip_lib=-llwip2-536
|
||||
modwifi.menu.ip.lm2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=0
|
||||
modwifi.menu.ip.lm2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=0 -DLWIP_IPV6=0
|
||||
modwifi.menu.ip.hb2n=v2 Higher Bandwidth (no features)
|
||||
modwifi.menu.ip.hb2n.build.lwip_include=lwip2/include
|
||||
modwifi.menu.ip.hb2n.build.lwip_lib=-llwip2-1460
|
||||
modwifi.menu.ip.hb2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=0
|
||||
modwifi.menu.ip.hb2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=0 -DLWIP_IPV6=0
|
||||
modwifi.menu.ip.lm6f=v2 IPv6 Lower Memory
|
||||
modwifi.menu.ip.lm6f.build.lwip_include=lwip2/include
|
||||
modwifi.menu.ip.lm6f.build.lwip_lib=-llwip6-536-feat
|
||||
modwifi.menu.ip.lm6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=1
|
||||
modwifi.menu.ip.hb6f=v2 IPv6 Higher Bandwidth
|
||||
modwifi.menu.ip.hb6f.build.lwip_include=lwip2/include
|
||||
modwifi.menu.ip.hb6f.build.lwip_lib=-llwip6-1460-feat
|
||||
modwifi.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1 -DLWIP_IPV6=1
|
||||
modwifi.menu.ip.hb1=v1.4 Higher Bandwidth
|
||||
modwifi.menu.ip.hb1.build.lwip_lib=-llwip_gcc
|
||||
modwifi.menu.ip.hb1.build.lwip_flags=-DLWIP_OPEN_SRC
|
||||
@ -2613,19 +2717,27 @@ thing.menu.eesz.512K128.build.spiffs_blocksize=4096
|
||||
thing.menu.ip.lm2f=v2 Lower Memory
|
||||
thing.menu.ip.lm2f.build.lwip_include=lwip2/include
|
||||
thing.menu.ip.lm2f.build.lwip_lib=-llwip2-536-feat
|
||||
thing.menu.ip.lm2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1
|
||||
thing.menu.ip.lm2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=0
|
||||
thing.menu.ip.hb2f=v2 Higher Bandwidth
|
||||
thing.menu.ip.hb2f.build.lwip_include=lwip2/include
|
||||
thing.menu.ip.hb2f.build.lwip_lib=-llwip2-1460-feat
|
||||
thing.menu.ip.hb2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1
|
||||
thing.menu.ip.hb2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1 -DLWIP_IPV6=0
|
||||
thing.menu.ip.lm2n=v2 Lower Memory (no features)
|
||||
thing.menu.ip.lm2n.build.lwip_include=lwip2/include
|
||||
thing.menu.ip.lm2n.build.lwip_lib=-llwip2-536
|
||||
thing.menu.ip.lm2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=0
|
||||
thing.menu.ip.lm2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=0 -DLWIP_IPV6=0
|
||||
thing.menu.ip.hb2n=v2 Higher Bandwidth (no features)
|
||||
thing.menu.ip.hb2n.build.lwip_include=lwip2/include
|
||||
thing.menu.ip.hb2n.build.lwip_lib=-llwip2-1460
|
||||
thing.menu.ip.hb2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=0
|
||||
thing.menu.ip.hb2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=0 -DLWIP_IPV6=0
|
||||
thing.menu.ip.lm6f=v2 IPv6 Lower Memory
|
||||
thing.menu.ip.lm6f.build.lwip_include=lwip2/include
|
||||
thing.menu.ip.lm6f.build.lwip_lib=-llwip6-536-feat
|
||||
thing.menu.ip.lm6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=1
|
||||
thing.menu.ip.hb6f=v2 IPv6 Higher Bandwidth
|
||||
thing.menu.ip.hb6f.build.lwip_include=lwip2/include
|
||||
thing.menu.ip.hb6f.build.lwip_lib=-llwip6-1460-feat
|
||||
thing.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1 -DLWIP_IPV6=1
|
||||
thing.menu.ip.hb1=v1.4 Higher Bandwidth
|
||||
thing.menu.ip.hb1.build.lwip_lib=-llwip_gcc
|
||||
thing.menu.ip.hb1.build.lwip_flags=-DLWIP_OPEN_SRC
|
||||
@ -2782,19 +2894,27 @@ thingdev.menu.eesz.512K128.build.spiffs_blocksize=4096
|
||||
thingdev.menu.ip.lm2f=v2 Lower Memory
|
||||
thingdev.menu.ip.lm2f.build.lwip_include=lwip2/include
|
||||
thingdev.menu.ip.lm2f.build.lwip_lib=-llwip2-536-feat
|
||||
thingdev.menu.ip.lm2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1
|
||||
thingdev.menu.ip.lm2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=0
|
||||
thingdev.menu.ip.hb2f=v2 Higher Bandwidth
|
||||
thingdev.menu.ip.hb2f.build.lwip_include=lwip2/include
|
||||
thingdev.menu.ip.hb2f.build.lwip_lib=-llwip2-1460-feat
|
||||
thingdev.menu.ip.hb2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1
|
||||
thingdev.menu.ip.hb2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1 -DLWIP_IPV6=0
|
||||
thingdev.menu.ip.lm2n=v2 Lower Memory (no features)
|
||||
thingdev.menu.ip.lm2n.build.lwip_include=lwip2/include
|
||||
thingdev.menu.ip.lm2n.build.lwip_lib=-llwip2-536
|
||||
thingdev.menu.ip.lm2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=0
|
||||
thingdev.menu.ip.lm2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=0 -DLWIP_IPV6=0
|
||||
thingdev.menu.ip.hb2n=v2 Higher Bandwidth (no features)
|
||||
thingdev.menu.ip.hb2n.build.lwip_include=lwip2/include
|
||||
thingdev.menu.ip.hb2n.build.lwip_lib=-llwip2-1460
|
||||
thingdev.menu.ip.hb2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=0
|
||||
thingdev.menu.ip.hb2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=0 -DLWIP_IPV6=0
|
||||
thingdev.menu.ip.lm6f=v2 IPv6 Lower Memory
|
||||
thingdev.menu.ip.lm6f.build.lwip_include=lwip2/include
|
||||
thingdev.menu.ip.lm6f.build.lwip_lib=-llwip6-536-feat
|
||||
thingdev.menu.ip.lm6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=1
|
||||
thingdev.menu.ip.hb6f=v2 IPv6 Higher Bandwidth
|
||||
thingdev.menu.ip.hb6f.build.lwip_include=lwip2/include
|
||||
thingdev.menu.ip.hb6f.build.lwip_lib=-llwip6-1460-feat
|
||||
thingdev.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1 -DLWIP_IPV6=1
|
||||
thingdev.menu.ip.hb1=v1.4 Higher Bandwidth
|
||||
thingdev.menu.ip.hb1.build.lwip_lib=-llwip_gcc
|
||||
thingdev.menu.ip.hb1.build.lwip_flags=-DLWIP_OPEN_SRC
|
||||
@ -2951,19 +3071,27 @@ esp210.menu.eesz.4M3M.build.spiffs_blocksize=8192
|
||||
esp210.menu.ip.lm2f=v2 Lower Memory
|
||||
esp210.menu.ip.lm2f.build.lwip_include=lwip2/include
|
||||
esp210.menu.ip.lm2f.build.lwip_lib=-llwip2-536-feat
|
||||
esp210.menu.ip.lm2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1
|
||||
esp210.menu.ip.lm2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=0
|
||||
esp210.menu.ip.hb2f=v2 Higher Bandwidth
|
||||
esp210.menu.ip.hb2f.build.lwip_include=lwip2/include
|
||||
esp210.menu.ip.hb2f.build.lwip_lib=-llwip2-1460-feat
|
||||
esp210.menu.ip.hb2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1
|
||||
esp210.menu.ip.hb2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1 -DLWIP_IPV6=0
|
||||
esp210.menu.ip.lm2n=v2 Lower Memory (no features)
|
||||
esp210.menu.ip.lm2n.build.lwip_include=lwip2/include
|
||||
esp210.menu.ip.lm2n.build.lwip_lib=-llwip2-536
|
||||
esp210.menu.ip.lm2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=0
|
||||
esp210.menu.ip.lm2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=0 -DLWIP_IPV6=0
|
||||
esp210.menu.ip.hb2n=v2 Higher Bandwidth (no features)
|
||||
esp210.menu.ip.hb2n.build.lwip_include=lwip2/include
|
||||
esp210.menu.ip.hb2n.build.lwip_lib=-llwip2-1460
|
||||
esp210.menu.ip.hb2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=0
|
||||
esp210.menu.ip.hb2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=0 -DLWIP_IPV6=0
|
||||
esp210.menu.ip.lm6f=v2 IPv6 Lower Memory
|
||||
esp210.menu.ip.lm6f.build.lwip_include=lwip2/include
|
||||
esp210.menu.ip.lm6f.build.lwip_lib=-llwip6-536-feat
|
||||
esp210.menu.ip.lm6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=1
|
||||
esp210.menu.ip.hb6f=v2 IPv6 Higher Bandwidth
|
||||
esp210.menu.ip.hb6f.build.lwip_include=lwip2/include
|
||||
esp210.menu.ip.hb6f.build.lwip_lib=-llwip6-1460-feat
|
||||
esp210.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1 -DLWIP_IPV6=1
|
||||
esp210.menu.ip.hb1=v1.4 Higher Bandwidth
|
||||
esp210.menu.ip.hb1.build.lwip_lib=-llwip_gcc
|
||||
esp210.menu.ip.hb1.build.lwip_flags=-DLWIP_OPEN_SRC
|
||||
@ -3120,19 +3248,27 @@ d1_mini.menu.eesz.4M3M.build.spiffs_blocksize=8192
|
||||
d1_mini.menu.ip.lm2f=v2 Lower Memory
|
||||
d1_mini.menu.ip.lm2f.build.lwip_include=lwip2/include
|
||||
d1_mini.menu.ip.lm2f.build.lwip_lib=-llwip2-536-feat
|
||||
d1_mini.menu.ip.lm2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1
|
||||
d1_mini.menu.ip.lm2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=0
|
||||
d1_mini.menu.ip.hb2f=v2 Higher Bandwidth
|
||||
d1_mini.menu.ip.hb2f.build.lwip_include=lwip2/include
|
||||
d1_mini.menu.ip.hb2f.build.lwip_lib=-llwip2-1460-feat
|
||||
d1_mini.menu.ip.hb2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1
|
||||
d1_mini.menu.ip.hb2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1 -DLWIP_IPV6=0
|
||||
d1_mini.menu.ip.lm2n=v2 Lower Memory (no features)
|
||||
d1_mini.menu.ip.lm2n.build.lwip_include=lwip2/include
|
||||
d1_mini.menu.ip.lm2n.build.lwip_lib=-llwip2-536
|
||||
d1_mini.menu.ip.lm2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=0
|
||||
d1_mini.menu.ip.lm2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=0 -DLWIP_IPV6=0
|
||||
d1_mini.menu.ip.hb2n=v2 Higher Bandwidth (no features)
|
||||
d1_mini.menu.ip.hb2n.build.lwip_include=lwip2/include
|
||||
d1_mini.menu.ip.hb2n.build.lwip_lib=-llwip2-1460
|
||||
d1_mini.menu.ip.hb2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=0
|
||||
d1_mini.menu.ip.hb2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=0 -DLWIP_IPV6=0
|
||||
d1_mini.menu.ip.lm6f=v2 IPv6 Lower Memory
|
||||
d1_mini.menu.ip.lm6f.build.lwip_include=lwip2/include
|
||||
d1_mini.menu.ip.lm6f.build.lwip_lib=-llwip6-536-feat
|
||||
d1_mini.menu.ip.lm6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=1
|
||||
d1_mini.menu.ip.hb6f=v2 IPv6 Higher Bandwidth
|
||||
d1_mini.menu.ip.hb6f.build.lwip_include=lwip2/include
|
||||
d1_mini.menu.ip.hb6f.build.lwip_lib=-llwip6-1460-feat
|
||||
d1_mini.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1 -DLWIP_IPV6=1
|
||||
d1_mini.menu.ip.hb1=v1.4 Higher Bandwidth
|
||||
d1_mini.menu.ip.hb1.build.lwip_lib=-llwip_gcc
|
||||
d1_mini.menu.ip.hb1.build.lwip_flags=-DLWIP_OPEN_SRC
|
||||
@ -3272,19 +3408,27 @@ d1_mini_pro.menu.eesz.16M15M.build.spiffs_blocksize=8192
|
||||
d1_mini_pro.menu.ip.lm2f=v2 Lower Memory
|
||||
d1_mini_pro.menu.ip.lm2f.build.lwip_include=lwip2/include
|
||||
d1_mini_pro.menu.ip.lm2f.build.lwip_lib=-llwip2-536-feat
|
||||
d1_mini_pro.menu.ip.lm2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1
|
||||
d1_mini_pro.menu.ip.lm2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=0
|
||||
d1_mini_pro.menu.ip.hb2f=v2 Higher Bandwidth
|
||||
d1_mini_pro.menu.ip.hb2f.build.lwip_include=lwip2/include
|
||||
d1_mini_pro.menu.ip.hb2f.build.lwip_lib=-llwip2-1460-feat
|
||||
d1_mini_pro.menu.ip.hb2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1
|
||||
d1_mini_pro.menu.ip.hb2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1 -DLWIP_IPV6=0
|
||||
d1_mini_pro.menu.ip.lm2n=v2 Lower Memory (no features)
|
||||
d1_mini_pro.menu.ip.lm2n.build.lwip_include=lwip2/include
|
||||
d1_mini_pro.menu.ip.lm2n.build.lwip_lib=-llwip2-536
|
||||
d1_mini_pro.menu.ip.lm2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=0
|
||||
d1_mini_pro.menu.ip.lm2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=0 -DLWIP_IPV6=0
|
||||
d1_mini_pro.menu.ip.hb2n=v2 Higher Bandwidth (no features)
|
||||
d1_mini_pro.menu.ip.hb2n.build.lwip_include=lwip2/include
|
||||
d1_mini_pro.menu.ip.hb2n.build.lwip_lib=-llwip2-1460
|
||||
d1_mini_pro.menu.ip.hb2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=0
|
||||
d1_mini_pro.menu.ip.hb2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=0 -DLWIP_IPV6=0
|
||||
d1_mini_pro.menu.ip.lm6f=v2 IPv6 Lower Memory
|
||||
d1_mini_pro.menu.ip.lm6f.build.lwip_include=lwip2/include
|
||||
d1_mini_pro.menu.ip.lm6f.build.lwip_lib=-llwip6-536-feat
|
||||
d1_mini_pro.menu.ip.lm6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=1
|
||||
d1_mini_pro.menu.ip.hb6f=v2 IPv6 Higher Bandwidth
|
||||
d1_mini_pro.menu.ip.hb6f.build.lwip_include=lwip2/include
|
||||
d1_mini_pro.menu.ip.hb6f.build.lwip_lib=-llwip6-1460-feat
|
||||
d1_mini_pro.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1 -DLWIP_IPV6=1
|
||||
d1_mini_pro.menu.ip.hb1=v1.4 Higher Bandwidth
|
||||
d1_mini_pro.menu.ip.hb1.build.lwip_lib=-llwip_gcc
|
||||
d1_mini_pro.menu.ip.hb1.build.lwip_flags=-DLWIP_OPEN_SRC
|
||||
@ -3481,19 +3625,27 @@ d1_mini_lite.menu.eesz.1M512.build.spiffs_blocksize=4096
|
||||
d1_mini_lite.menu.ip.lm2f=v2 Lower Memory
|
||||
d1_mini_lite.menu.ip.lm2f.build.lwip_include=lwip2/include
|
||||
d1_mini_lite.menu.ip.lm2f.build.lwip_lib=-llwip2-536-feat
|
||||
d1_mini_lite.menu.ip.lm2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1
|
||||
d1_mini_lite.menu.ip.lm2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=0
|
||||
d1_mini_lite.menu.ip.hb2f=v2 Higher Bandwidth
|
||||
d1_mini_lite.menu.ip.hb2f.build.lwip_include=lwip2/include
|
||||
d1_mini_lite.menu.ip.hb2f.build.lwip_lib=-llwip2-1460-feat
|
||||
d1_mini_lite.menu.ip.hb2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1
|
||||
d1_mini_lite.menu.ip.hb2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1 -DLWIP_IPV6=0
|
||||
d1_mini_lite.menu.ip.lm2n=v2 Lower Memory (no features)
|
||||
d1_mini_lite.menu.ip.lm2n.build.lwip_include=lwip2/include
|
||||
d1_mini_lite.menu.ip.lm2n.build.lwip_lib=-llwip2-536
|
||||
d1_mini_lite.menu.ip.lm2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=0
|
||||
d1_mini_lite.menu.ip.lm2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=0 -DLWIP_IPV6=0
|
||||
d1_mini_lite.menu.ip.hb2n=v2 Higher Bandwidth (no features)
|
||||
d1_mini_lite.menu.ip.hb2n.build.lwip_include=lwip2/include
|
||||
d1_mini_lite.menu.ip.hb2n.build.lwip_lib=-llwip2-1460
|
||||
d1_mini_lite.menu.ip.hb2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=0
|
||||
d1_mini_lite.menu.ip.hb2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=0 -DLWIP_IPV6=0
|
||||
d1_mini_lite.menu.ip.lm6f=v2 IPv6 Lower Memory
|
||||
d1_mini_lite.menu.ip.lm6f.build.lwip_include=lwip2/include
|
||||
d1_mini_lite.menu.ip.lm6f.build.lwip_lib=-llwip6-536-feat
|
||||
d1_mini_lite.menu.ip.lm6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=1
|
||||
d1_mini_lite.menu.ip.hb6f=v2 IPv6 Higher Bandwidth
|
||||
d1_mini_lite.menu.ip.hb6f.build.lwip_include=lwip2/include
|
||||
d1_mini_lite.menu.ip.hb6f.build.lwip_lib=-llwip6-1460-feat
|
||||
d1_mini_lite.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1 -DLWIP_IPV6=1
|
||||
d1_mini_lite.menu.ip.hb1=v1.4 Higher Bandwidth
|
||||
d1_mini_lite.menu.ip.hb1.build.lwip_lib=-llwip_gcc
|
||||
d1_mini_lite.menu.ip.hb1.build.lwip_flags=-DLWIP_OPEN_SRC
|
||||
@ -3650,19 +3802,27 @@ d1.menu.eesz.4M3M.build.spiffs_blocksize=8192
|
||||
d1.menu.ip.lm2f=v2 Lower Memory
|
||||
d1.menu.ip.lm2f.build.lwip_include=lwip2/include
|
||||
d1.menu.ip.lm2f.build.lwip_lib=-llwip2-536-feat
|
||||
d1.menu.ip.lm2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1
|
||||
d1.menu.ip.lm2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=0
|
||||
d1.menu.ip.hb2f=v2 Higher Bandwidth
|
||||
d1.menu.ip.hb2f.build.lwip_include=lwip2/include
|
||||
d1.menu.ip.hb2f.build.lwip_lib=-llwip2-1460-feat
|
||||
d1.menu.ip.hb2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1
|
||||
d1.menu.ip.hb2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1 -DLWIP_IPV6=0
|
||||
d1.menu.ip.lm2n=v2 Lower Memory (no features)
|
||||
d1.menu.ip.lm2n.build.lwip_include=lwip2/include
|
||||
d1.menu.ip.lm2n.build.lwip_lib=-llwip2-536
|
||||
d1.menu.ip.lm2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=0
|
||||
d1.menu.ip.lm2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=0 -DLWIP_IPV6=0
|
||||
d1.menu.ip.hb2n=v2 Higher Bandwidth (no features)
|
||||
d1.menu.ip.hb2n.build.lwip_include=lwip2/include
|
||||
d1.menu.ip.hb2n.build.lwip_lib=-llwip2-1460
|
||||
d1.menu.ip.hb2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=0
|
||||
d1.menu.ip.hb2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=0 -DLWIP_IPV6=0
|
||||
d1.menu.ip.lm6f=v2 IPv6 Lower Memory
|
||||
d1.menu.ip.lm6f.build.lwip_include=lwip2/include
|
||||
d1.menu.ip.lm6f.build.lwip_lib=-llwip6-536-feat
|
||||
d1.menu.ip.lm6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=1
|
||||
d1.menu.ip.hb6f=v2 IPv6 Higher Bandwidth
|
||||
d1.menu.ip.hb6f.build.lwip_include=lwip2/include
|
||||
d1.menu.ip.hb6f.build.lwip_lib=-llwip6-1460-feat
|
||||
d1.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1 -DLWIP_IPV6=1
|
||||
d1.menu.ip.hb1=v1.4 Higher Bandwidth
|
||||
d1.menu.ip.hb1.build.lwip_lib=-llwip_gcc
|
||||
d1.menu.ip.hb1.build.lwip_flags=-DLWIP_OPEN_SRC
|
||||
@ -3822,19 +3982,27 @@ espino.menu.eesz.4M3M.build.spiffs_blocksize=8192
|
||||
espino.menu.ip.lm2f=v2 Lower Memory
|
||||
espino.menu.ip.lm2f.build.lwip_include=lwip2/include
|
||||
espino.menu.ip.lm2f.build.lwip_lib=-llwip2-536-feat
|
||||
espino.menu.ip.lm2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1
|
||||
espino.menu.ip.lm2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=0
|
||||
espino.menu.ip.hb2f=v2 Higher Bandwidth
|
||||
espino.menu.ip.hb2f.build.lwip_include=lwip2/include
|
||||
espino.menu.ip.hb2f.build.lwip_lib=-llwip2-1460-feat
|
||||
espino.menu.ip.hb2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1
|
||||
espino.menu.ip.hb2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1 -DLWIP_IPV6=0
|
||||
espino.menu.ip.lm2n=v2 Lower Memory (no features)
|
||||
espino.menu.ip.lm2n.build.lwip_include=lwip2/include
|
||||
espino.menu.ip.lm2n.build.lwip_lib=-llwip2-536
|
||||
espino.menu.ip.lm2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=0
|
||||
espino.menu.ip.lm2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=0 -DLWIP_IPV6=0
|
||||
espino.menu.ip.hb2n=v2 Higher Bandwidth (no features)
|
||||
espino.menu.ip.hb2n.build.lwip_include=lwip2/include
|
||||
espino.menu.ip.hb2n.build.lwip_lib=-llwip2-1460
|
||||
espino.menu.ip.hb2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=0
|
||||
espino.menu.ip.hb2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=0 -DLWIP_IPV6=0
|
||||
espino.menu.ip.lm6f=v2 IPv6 Lower Memory
|
||||
espino.menu.ip.lm6f.build.lwip_include=lwip2/include
|
||||
espino.menu.ip.lm6f.build.lwip_lib=-llwip6-536-feat
|
||||
espino.menu.ip.lm6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=1
|
||||
espino.menu.ip.hb6f=v2 IPv6 Higher Bandwidth
|
||||
espino.menu.ip.hb6f.build.lwip_include=lwip2/include
|
||||
espino.menu.ip.hb6f.build.lwip_lib=-llwip6-1460-feat
|
||||
espino.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1 -DLWIP_IPV6=1
|
||||
espino.menu.ip.hb1=v1.4 Higher Bandwidth
|
||||
espino.menu.ip.hb1.build.lwip_lib=-llwip_gcc
|
||||
espino.menu.ip.hb1.build.lwip_flags=-DLWIP_OPEN_SRC
|
||||
@ -3991,19 +4159,27 @@ espinotee.menu.eesz.4M3M.build.spiffs_blocksize=8192
|
||||
espinotee.menu.ip.lm2f=v2 Lower Memory
|
||||
espinotee.menu.ip.lm2f.build.lwip_include=lwip2/include
|
||||
espinotee.menu.ip.lm2f.build.lwip_lib=-llwip2-536-feat
|
||||
espinotee.menu.ip.lm2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1
|
||||
espinotee.menu.ip.lm2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=0
|
||||
espinotee.menu.ip.hb2f=v2 Higher Bandwidth
|
||||
espinotee.menu.ip.hb2f.build.lwip_include=lwip2/include
|
||||
espinotee.menu.ip.hb2f.build.lwip_lib=-llwip2-1460-feat
|
||||
espinotee.menu.ip.hb2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1
|
||||
espinotee.menu.ip.hb2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1 -DLWIP_IPV6=0
|
||||
espinotee.menu.ip.lm2n=v2 Lower Memory (no features)
|
||||
espinotee.menu.ip.lm2n.build.lwip_include=lwip2/include
|
||||
espinotee.menu.ip.lm2n.build.lwip_lib=-llwip2-536
|
||||
espinotee.menu.ip.lm2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=0
|
||||
espinotee.menu.ip.lm2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=0 -DLWIP_IPV6=0
|
||||
espinotee.menu.ip.hb2n=v2 Higher Bandwidth (no features)
|
||||
espinotee.menu.ip.hb2n.build.lwip_include=lwip2/include
|
||||
espinotee.menu.ip.hb2n.build.lwip_lib=-llwip2-1460
|
||||
espinotee.menu.ip.hb2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=0
|
||||
espinotee.menu.ip.hb2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=0 -DLWIP_IPV6=0
|
||||
espinotee.menu.ip.lm6f=v2 IPv6 Lower Memory
|
||||
espinotee.menu.ip.lm6f.build.lwip_include=lwip2/include
|
||||
espinotee.menu.ip.lm6f.build.lwip_lib=-llwip6-536-feat
|
||||
espinotee.menu.ip.lm6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=1
|
||||
espinotee.menu.ip.hb6f=v2 IPv6 Higher Bandwidth
|
||||
espinotee.menu.ip.hb6f.build.lwip_include=lwip2/include
|
||||
espinotee.menu.ip.hb6f.build.lwip_lib=-llwip6-1460-feat
|
||||
espinotee.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1 -DLWIP_IPV6=1
|
||||
espinotee.menu.ip.hb1=v1.4 Higher Bandwidth
|
||||
espinotee.menu.ip.hb1.build.lwip_lib=-llwip_gcc
|
||||
espinotee.menu.ip.hb1.build.lwip_flags=-DLWIP_OPEN_SRC
|
||||
@ -4220,19 +4396,27 @@ wifinfo.menu.eesz.1M512.build.spiffs_blocksize=4096
|
||||
wifinfo.menu.ip.lm2f=v2 Lower Memory
|
||||
wifinfo.menu.ip.lm2f.build.lwip_include=lwip2/include
|
||||
wifinfo.menu.ip.lm2f.build.lwip_lib=-llwip2-536-feat
|
||||
wifinfo.menu.ip.lm2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1
|
||||
wifinfo.menu.ip.lm2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=0
|
||||
wifinfo.menu.ip.hb2f=v2 Higher Bandwidth
|
||||
wifinfo.menu.ip.hb2f.build.lwip_include=lwip2/include
|
||||
wifinfo.menu.ip.hb2f.build.lwip_lib=-llwip2-1460-feat
|
||||
wifinfo.menu.ip.hb2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1
|
||||
wifinfo.menu.ip.hb2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1 -DLWIP_IPV6=0
|
||||
wifinfo.menu.ip.lm2n=v2 Lower Memory (no features)
|
||||
wifinfo.menu.ip.lm2n.build.lwip_include=lwip2/include
|
||||
wifinfo.menu.ip.lm2n.build.lwip_lib=-llwip2-536
|
||||
wifinfo.menu.ip.lm2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=0
|
||||
wifinfo.menu.ip.lm2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=0 -DLWIP_IPV6=0
|
||||
wifinfo.menu.ip.hb2n=v2 Higher Bandwidth (no features)
|
||||
wifinfo.menu.ip.hb2n.build.lwip_include=lwip2/include
|
||||
wifinfo.menu.ip.hb2n.build.lwip_lib=-llwip2-1460
|
||||
wifinfo.menu.ip.hb2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=0
|
||||
wifinfo.menu.ip.hb2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=0 -DLWIP_IPV6=0
|
||||
wifinfo.menu.ip.lm6f=v2 IPv6 Lower Memory
|
||||
wifinfo.menu.ip.lm6f.build.lwip_include=lwip2/include
|
||||
wifinfo.menu.ip.lm6f.build.lwip_lib=-llwip6-536-feat
|
||||
wifinfo.menu.ip.lm6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=1
|
||||
wifinfo.menu.ip.hb6f=v2 IPv6 Higher Bandwidth
|
||||
wifinfo.menu.ip.hb6f.build.lwip_include=lwip2/include
|
||||
wifinfo.menu.ip.hb6f.build.lwip_lib=-llwip6-1460-feat
|
||||
wifinfo.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1 -DLWIP_IPV6=1
|
||||
wifinfo.menu.ip.hb1=v1.4 Higher Bandwidth
|
||||
wifinfo.menu.ip.hb1.build.lwip_lib=-llwip_gcc
|
||||
wifinfo.menu.ip.hb1.build.lwip_flags=-DLWIP_OPEN_SRC
|
||||
@ -4401,19 +4585,27 @@ arduino-esp8266.menu.eesz.4M3M.build.spiffs_blocksize=8192
|
||||
arduino-esp8266.menu.ip.lm2f=v2 Lower Memory
|
||||
arduino-esp8266.menu.ip.lm2f.build.lwip_include=lwip2/include
|
||||
arduino-esp8266.menu.ip.lm2f.build.lwip_lib=-llwip2-536-feat
|
||||
arduino-esp8266.menu.ip.lm2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1
|
||||
arduino-esp8266.menu.ip.lm2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=0
|
||||
arduino-esp8266.menu.ip.hb2f=v2 Higher Bandwidth
|
||||
arduino-esp8266.menu.ip.hb2f.build.lwip_include=lwip2/include
|
||||
arduino-esp8266.menu.ip.hb2f.build.lwip_lib=-llwip2-1460-feat
|
||||
arduino-esp8266.menu.ip.hb2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1
|
||||
arduino-esp8266.menu.ip.hb2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1 -DLWIP_IPV6=0
|
||||
arduino-esp8266.menu.ip.lm2n=v2 Lower Memory (no features)
|
||||
arduino-esp8266.menu.ip.lm2n.build.lwip_include=lwip2/include
|
||||
arduino-esp8266.menu.ip.lm2n.build.lwip_lib=-llwip2-536
|
||||
arduino-esp8266.menu.ip.lm2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=0
|
||||
arduino-esp8266.menu.ip.lm2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=0 -DLWIP_IPV6=0
|
||||
arduino-esp8266.menu.ip.hb2n=v2 Higher Bandwidth (no features)
|
||||
arduino-esp8266.menu.ip.hb2n.build.lwip_include=lwip2/include
|
||||
arduino-esp8266.menu.ip.hb2n.build.lwip_lib=-llwip2-1460
|
||||
arduino-esp8266.menu.ip.hb2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=0
|
||||
arduino-esp8266.menu.ip.hb2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=0 -DLWIP_IPV6=0
|
||||
arduino-esp8266.menu.ip.lm6f=v2 IPv6 Lower Memory
|
||||
arduino-esp8266.menu.ip.lm6f.build.lwip_include=lwip2/include
|
||||
arduino-esp8266.menu.ip.lm6f.build.lwip_lib=-llwip6-536-feat
|
||||
arduino-esp8266.menu.ip.lm6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=1
|
||||
arduino-esp8266.menu.ip.hb6f=v2 IPv6 Higher Bandwidth
|
||||
arduino-esp8266.menu.ip.hb6f.build.lwip_include=lwip2/include
|
||||
arduino-esp8266.menu.ip.hb6f.build.lwip_lib=-llwip6-1460-feat
|
||||
arduino-esp8266.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1 -DLWIP_IPV6=1
|
||||
arduino-esp8266.menu.ip.hb1=v1.4 Higher Bandwidth
|
||||
arduino-esp8266.menu.ip.hb1.build.lwip_lib=-llwip_gcc
|
||||
arduino-esp8266.menu.ip.hb1.build.lwip_flags=-DLWIP_OPEN_SRC
|
||||
@ -4571,19 +4763,27 @@ gen4iod.menu.eesz.512K128.build.spiffs_blocksize=4096
|
||||
gen4iod.menu.ip.lm2f=v2 Lower Memory
|
||||
gen4iod.menu.ip.lm2f.build.lwip_include=lwip2/include
|
||||
gen4iod.menu.ip.lm2f.build.lwip_lib=-llwip2-536-feat
|
||||
gen4iod.menu.ip.lm2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1
|
||||
gen4iod.menu.ip.lm2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=0
|
||||
gen4iod.menu.ip.hb2f=v2 Higher Bandwidth
|
||||
gen4iod.menu.ip.hb2f.build.lwip_include=lwip2/include
|
||||
gen4iod.menu.ip.hb2f.build.lwip_lib=-llwip2-1460-feat
|
||||
gen4iod.menu.ip.hb2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1
|
||||
gen4iod.menu.ip.hb2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1 -DLWIP_IPV6=0
|
||||
gen4iod.menu.ip.lm2n=v2 Lower Memory (no features)
|
||||
gen4iod.menu.ip.lm2n.build.lwip_include=lwip2/include
|
||||
gen4iod.menu.ip.lm2n.build.lwip_lib=-llwip2-536
|
||||
gen4iod.menu.ip.lm2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=0
|
||||
gen4iod.menu.ip.lm2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=0 -DLWIP_IPV6=0
|
||||
gen4iod.menu.ip.hb2n=v2 Higher Bandwidth (no features)
|
||||
gen4iod.menu.ip.hb2n.build.lwip_include=lwip2/include
|
||||
gen4iod.menu.ip.hb2n.build.lwip_lib=-llwip2-1460
|
||||
gen4iod.menu.ip.hb2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=0
|
||||
gen4iod.menu.ip.hb2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=0 -DLWIP_IPV6=0
|
||||
gen4iod.menu.ip.lm6f=v2 IPv6 Lower Memory
|
||||
gen4iod.menu.ip.lm6f.build.lwip_include=lwip2/include
|
||||
gen4iod.menu.ip.lm6f.build.lwip_lib=-llwip6-536-feat
|
||||
gen4iod.menu.ip.lm6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=1
|
||||
gen4iod.menu.ip.hb6f=v2 IPv6 Higher Bandwidth
|
||||
gen4iod.menu.ip.hb6f.build.lwip_include=lwip2/include
|
||||
gen4iod.menu.ip.hb6f.build.lwip_lib=-llwip6-1460-feat
|
||||
gen4iod.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1 -DLWIP_IPV6=1
|
||||
gen4iod.menu.ip.hb1=v1.4 Higher Bandwidth
|
||||
gen4iod.menu.ip.hb1.build.lwip_lib=-llwip_gcc
|
||||
gen4iod.menu.ip.hb1.build.lwip_flags=-DLWIP_OPEN_SRC
|
||||
@ -4741,19 +4941,27 @@ oak.menu.eesz.4M3M.build.spiffs_blocksize=8192
|
||||
oak.menu.ip.lm2f=v2 Lower Memory
|
||||
oak.menu.ip.lm2f.build.lwip_include=lwip2/include
|
||||
oak.menu.ip.lm2f.build.lwip_lib=-llwip2-536-feat
|
||||
oak.menu.ip.lm2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1
|
||||
oak.menu.ip.lm2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=0
|
||||
oak.menu.ip.hb2f=v2 Higher Bandwidth
|
||||
oak.menu.ip.hb2f.build.lwip_include=lwip2/include
|
||||
oak.menu.ip.hb2f.build.lwip_lib=-llwip2-1460-feat
|
||||
oak.menu.ip.hb2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1
|
||||
oak.menu.ip.hb2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1 -DLWIP_IPV6=0
|
||||
oak.menu.ip.lm2n=v2 Lower Memory (no features)
|
||||
oak.menu.ip.lm2n.build.lwip_include=lwip2/include
|
||||
oak.menu.ip.lm2n.build.lwip_lib=-llwip2-536
|
||||
oak.menu.ip.lm2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=0
|
||||
oak.menu.ip.lm2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=0 -DLWIP_IPV6=0
|
||||
oak.menu.ip.hb2n=v2 Higher Bandwidth (no features)
|
||||
oak.menu.ip.hb2n.build.lwip_include=lwip2/include
|
||||
oak.menu.ip.hb2n.build.lwip_lib=-llwip2-1460
|
||||
oak.menu.ip.hb2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=0
|
||||
oak.menu.ip.hb2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=0 -DLWIP_IPV6=0
|
||||
oak.menu.ip.lm6f=v2 IPv6 Lower Memory
|
||||
oak.menu.ip.lm6f.build.lwip_include=lwip2/include
|
||||
oak.menu.ip.lm6f.build.lwip_lib=-llwip6-536-feat
|
||||
oak.menu.ip.lm6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=1
|
||||
oak.menu.ip.hb6f=v2 IPv6 Higher Bandwidth
|
||||
oak.menu.ip.hb6f.build.lwip_include=lwip2/include
|
||||
oak.menu.ip.hb6f.build.lwip_lib=-llwip6-1460-feat
|
||||
oak.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1 -DLWIP_IPV6=1
|
||||
oak.menu.ip.hb1=v1.4 Higher Bandwidth
|
||||
oak.menu.ip.hb1.build.lwip_lib=-llwip_gcc
|
||||
oak.menu.ip.hb1.build.lwip_flags=-DLWIP_OPEN_SRC
|
||||
@ -4910,19 +5118,27 @@ wifiduino.menu.eesz.4M3M.build.spiffs_blocksize=8192
|
||||
wifiduino.menu.ip.lm2f=v2 Lower Memory
|
||||
wifiduino.menu.ip.lm2f.build.lwip_include=lwip2/include
|
||||
wifiduino.menu.ip.lm2f.build.lwip_lib=-llwip2-536-feat
|
||||
wifiduino.menu.ip.lm2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1
|
||||
wifiduino.menu.ip.lm2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=0
|
||||
wifiduino.menu.ip.hb2f=v2 Higher Bandwidth
|
||||
wifiduino.menu.ip.hb2f.build.lwip_include=lwip2/include
|
||||
wifiduino.menu.ip.hb2f.build.lwip_lib=-llwip2-1460-feat
|
||||
wifiduino.menu.ip.hb2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1
|
||||
wifiduino.menu.ip.hb2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1 -DLWIP_IPV6=0
|
||||
wifiduino.menu.ip.lm2n=v2 Lower Memory (no features)
|
||||
wifiduino.menu.ip.lm2n.build.lwip_include=lwip2/include
|
||||
wifiduino.menu.ip.lm2n.build.lwip_lib=-llwip2-536
|
||||
wifiduino.menu.ip.lm2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=0
|
||||
wifiduino.menu.ip.lm2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=0 -DLWIP_IPV6=0
|
||||
wifiduino.menu.ip.hb2n=v2 Higher Bandwidth (no features)
|
||||
wifiduino.menu.ip.hb2n.build.lwip_include=lwip2/include
|
||||
wifiduino.menu.ip.hb2n.build.lwip_lib=-llwip2-1460
|
||||
wifiduino.menu.ip.hb2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=0
|
||||
wifiduino.menu.ip.hb2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=0 -DLWIP_IPV6=0
|
||||
wifiduino.menu.ip.lm6f=v2 IPv6 Lower Memory
|
||||
wifiduino.menu.ip.lm6f.build.lwip_include=lwip2/include
|
||||
wifiduino.menu.ip.lm6f.build.lwip_lib=-llwip6-536-feat
|
||||
wifiduino.menu.ip.lm6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=1
|
||||
wifiduino.menu.ip.hb6f=v2 IPv6 Higher Bandwidth
|
||||
wifiduino.menu.ip.hb6f.build.lwip_include=lwip2/include
|
||||
wifiduino.menu.ip.hb6f.build.lwip_lib=-llwip6-1460-feat
|
||||
wifiduino.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1 -DLWIP_IPV6=1
|
||||
wifiduino.menu.ip.hb1=v1.4 Higher Bandwidth
|
||||
wifiduino.menu.ip.hb1.build.lwip_lib=-llwip_gcc
|
||||
wifiduino.menu.ip.hb1.build.lwip_flags=-DLWIP_OPEN_SRC
|
||||
@ -5156,19 +5372,27 @@ wifi_slot.menu.eesz.2M1M.build.spiffs_blocksize=8192
|
||||
wifi_slot.menu.ip.lm2f=v2 Lower Memory
|
||||
wifi_slot.menu.ip.lm2f.build.lwip_include=lwip2/include
|
||||
wifi_slot.menu.ip.lm2f.build.lwip_lib=-llwip2-536-feat
|
||||
wifi_slot.menu.ip.lm2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1
|
||||
wifi_slot.menu.ip.lm2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=0
|
||||
wifi_slot.menu.ip.hb2f=v2 Higher Bandwidth
|
||||
wifi_slot.menu.ip.hb2f.build.lwip_include=lwip2/include
|
||||
wifi_slot.menu.ip.hb2f.build.lwip_lib=-llwip2-1460-feat
|
||||
wifi_slot.menu.ip.hb2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1
|
||||
wifi_slot.menu.ip.hb2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1 -DLWIP_IPV6=0
|
||||
wifi_slot.menu.ip.lm2n=v2 Lower Memory (no features)
|
||||
wifi_slot.menu.ip.lm2n.build.lwip_include=lwip2/include
|
||||
wifi_slot.menu.ip.lm2n.build.lwip_lib=-llwip2-536
|
||||
wifi_slot.menu.ip.lm2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=0
|
||||
wifi_slot.menu.ip.lm2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=0 -DLWIP_IPV6=0
|
||||
wifi_slot.menu.ip.hb2n=v2 Higher Bandwidth (no features)
|
||||
wifi_slot.menu.ip.hb2n.build.lwip_include=lwip2/include
|
||||
wifi_slot.menu.ip.hb2n.build.lwip_lib=-llwip2-1460
|
||||
wifi_slot.menu.ip.hb2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=0
|
||||
wifi_slot.menu.ip.hb2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=0 -DLWIP_IPV6=0
|
||||
wifi_slot.menu.ip.lm6f=v2 IPv6 Lower Memory
|
||||
wifi_slot.menu.ip.lm6f.build.lwip_include=lwip2/include
|
||||
wifi_slot.menu.ip.lm6f.build.lwip_lib=-llwip6-536-feat
|
||||
wifi_slot.menu.ip.lm6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=1
|
||||
wifi_slot.menu.ip.hb6f=v2 IPv6 Higher Bandwidth
|
||||
wifi_slot.menu.ip.hb6f.build.lwip_include=lwip2/include
|
||||
wifi_slot.menu.ip.hb6f.build.lwip_lib=-llwip6-1460-feat
|
||||
wifi_slot.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1 -DLWIP_IPV6=1
|
||||
wifi_slot.menu.ip.hb1=v1.4 Higher Bandwidth
|
||||
wifi_slot.menu.ip.hb1.build.lwip_lib=-llwip_gcc
|
||||
wifi_slot.menu.ip.hb1.build.lwip_flags=-DLWIP_OPEN_SRC
|
||||
@ -5325,19 +5549,27 @@ wiolink.menu.eesz.4M3M.build.spiffs_blocksize=8192
|
||||
wiolink.menu.ip.lm2f=v2 Lower Memory
|
||||
wiolink.menu.ip.lm2f.build.lwip_include=lwip2/include
|
||||
wiolink.menu.ip.lm2f.build.lwip_lib=-llwip2-536-feat
|
||||
wiolink.menu.ip.lm2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1
|
||||
wiolink.menu.ip.lm2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=0
|
||||
wiolink.menu.ip.hb2f=v2 Higher Bandwidth
|
||||
wiolink.menu.ip.hb2f.build.lwip_include=lwip2/include
|
||||
wiolink.menu.ip.hb2f.build.lwip_lib=-llwip2-1460-feat
|
||||
wiolink.menu.ip.hb2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1
|
||||
wiolink.menu.ip.hb2f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1 -DLWIP_IPV6=0
|
||||
wiolink.menu.ip.lm2n=v2 Lower Memory (no features)
|
||||
wiolink.menu.ip.lm2n.build.lwip_include=lwip2/include
|
||||
wiolink.menu.ip.lm2n.build.lwip_lib=-llwip2-536
|
||||
wiolink.menu.ip.lm2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=0
|
||||
wiolink.menu.ip.lm2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=0 -DLWIP_IPV6=0
|
||||
wiolink.menu.ip.hb2n=v2 Higher Bandwidth (no features)
|
||||
wiolink.menu.ip.hb2n.build.lwip_include=lwip2/include
|
||||
wiolink.menu.ip.hb2n.build.lwip_lib=-llwip2-1460
|
||||
wiolink.menu.ip.hb2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=0
|
||||
wiolink.menu.ip.hb2n.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=0 -DLWIP_IPV6=0
|
||||
wiolink.menu.ip.lm6f=v2 IPv6 Lower Memory
|
||||
wiolink.menu.ip.lm6f.build.lwip_include=lwip2/include
|
||||
wiolink.menu.ip.lm6f.build.lwip_lib=-llwip6-536-feat
|
||||
wiolink.menu.ip.lm6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=1
|
||||
wiolink.menu.ip.hb6f=v2 IPv6 Higher Bandwidth
|
||||
wiolink.menu.ip.hb6f.build.lwip_include=lwip2/include
|
||||
wiolink.menu.ip.hb6f.build.lwip_lib=-llwip6-1460-feat
|
||||
wiolink.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1 -DLWIP_IPV6=1
|
||||
wiolink.menu.ip.hb1=v1.4 Higher Bandwidth
|
||||
wiolink.menu.ip.hb1.build.lwip_lib=-llwip_gcc
|
||||
wiolink.menu.ip.hb1.build.lwip_flags=-DLWIP_OPEN_SRC
|
||||
|
168
cores/esp8266/AddrList.h
Normal file
168
cores/esp8266/AddrList.h
Normal file
@ -0,0 +1,168 @@
|
||||
/*
|
||||
AddrList.h - cycle through lwIP netif's ip addresses like a c++ list
|
||||
Copyright (c) 2018 david gauchard. All right reserved.
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with this library; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
/*
|
||||
This class allows to explore all configured IP addresses
|
||||
in lwIP netifs, with that kind of c++ loop:
|
||||
|
||||
for (auto a: ifList)
|
||||
out.printf("IF='%s' index=%d legacy=%d IPv4=%d local=%d hostname='%s' addr= %s\n",
|
||||
a->iface().c_str(),
|
||||
a->number(),
|
||||
a->addr().isLegacy(),
|
||||
a->addr().isV4(),
|
||||
a->addr().isLocal(),
|
||||
a->hostname().c_str(),
|
||||
a->addr().toString().c_str());
|
||||
|
||||
This loop:
|
||||
|
||||
while (WiFi.status() != WL_CONNECTED()) {
|
||||
Serial.print('.');
|
||||
delay(500);
|
||||
}
|
||||
|
||||
can be replaced by:
|
||||
|
||||
for (bool configured = false; !configured; ) {
|
||||
for (auto iface: ifList)
|
||||
if ((configured = !iface->addr().isLocal())
|
||||
break;
|
||||
Serial.print('.');
|
||||
delay(500);
|
||||
}
|
||||
|
||||
waiting for an IPv6 global address:
|
||||
|
||||
for (bool configured = false; !configured; ) {
|
||||
for (auto iface: ifList)
|
||||
if ((configured = ( !iface->addr()->isV4()
|
||||
&& !iface->addr().isLocal())))
|
||||
break;
|
||||
Serial.print('.');
|
||||
delay(500);
|
||||
}
|
||||
|
||||
waiting for an IPv6 global address, on a specific interface:
|
||||
|
||||
for (bool configured = false; !configured; ) {
|
||||
for (auto iface: ifList)
|
||||
if ((configured = ( !iface->addr()->isV4()
|
||||
&& !iface->addr().isLocal()
|
||||
&& iface->number() == STATION_IF)))
|
||||
break;
|
||||
Serial.print('.');
|
||||
delay(500);
|
||||
}
|
||||
*/
|
||||
|
||||
#ifndef __ADDRLIST_H
|
||||
#define __ADDRLIST_H
|
||||
|
||||
#include <IPAddress.h>
|
||||
#include <lwip/netif.h>
|
||||
|
||||
#if LWIP_IPV6
|
||||
#define IF_NUM_ADDRESSES (1 + LWIP_IPV6_NUM_ADDRESSES)
|
||||
#else
|
||||
#define IF_NUM_ADDRESSES (1)
|
||||
#endif
|
||||
|
||||
|
||||
class AddrListClass {
|
||||
|
||||
// no member in this class
|
||||
// lwIP's global 'struct netif* netif_list' is used
|
||||
// designed to be used with 'for (auto x: ifList)'
|
||||
|
||||
public:
|
||||
|
||||
class const_iterator {
|
||||
|
||||
public:
|
||||
|
||||
// iterator operations:
|
||||
|
||||
const_iterator (bool begin = true): _netif(begin? netif_list: nullptr), _num(-1) { ++*this; }
|
||||
const_iterator (const const_iterator& o): _netif(o._netif), _num(o._num) { }
|
||||
const_iterator& operator= (const const_iterator& o) { _netif = o._netif; _num = o._num; return *this; }
|
||||
|
||||
bool operator!= (const const_iterator& o) { return !equal(o); }
|
||||
bool operator== (const const_iterator& o) { return equal(o); }
|
||||
|
||||
const_iterator operator++(int) {
|
||||
const_iterator ret = *this;
|
||||
++(*this);
|
||||
return ret;
|
||||
}
|
||||
|
||||
const_iterator& operator++() {
|
||||
while (_netif) {
|
||||
if (++_num == IF_NUM_ADDRESSES) {
|
||||
_num = -1;
|
||||
_netif = _netif->next;
|
||||
continue;
|
||||
}
|
||||
if (!ip_addr_isany(_ip_from_netif_num()))
|
||||
break;
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
// (*iterator) emulation:
|
||||
|
||||
const const_iterator& operator* () const { return *this; }
|
||||
const const_iterator* operator-> () const { return this; }
|
||||
|
||||
bool isLegacy() const { return _num == 0; }
|
||||
bool isLocal() const { return addr().isLocal(); }
|
||||
IPAddress addr () const { return _ip_from_netif_num(); }
|
||||
IPAddress netmask () const { return _netif->netmask; }
|
||||
IPAddress gw () const { return _netif->gw; }
|
||||
String iface () const { return String(_netif->name[0]) + _netif->name[1]; }
|
||||
const char* hostname () const { return _netif->hostname?: emptyString.c_str(); }
|
||||
const char* mac () const { return (const char*)_netif->hwaddr; }
|
||||
int number () const { return _netif->num; }
|
||||
|
||||
protected:
|
||||
|
||||
bool equal (const const_iterator& o) {
|
||||
return _netif == o._netif
|
||||
&& (!_netif || _num == o._num);
|
||||
}
|
||||
|
||||
const ip_addr_t* _ip_from_netif_num () const {
|
||||
#if LWIP_IPV6
|
||||
return _num? &_netif->ip6_addr[_num - 1]: &_netif->ip_addr;
|
||||
#else
|
||||
return &_netif->ip_addr;
|
||||
#endif
|
||||
}
|
||||
|
||||
netif* _netif;
|
||||
int _num; // address index (0 is legacy, _num-1 is ip6_addr[]'s index)
|
||||
};
|
||||
|
||||
const const_iterator begin () const { return const_iterator(true); }
|
||||
const const_iterator end () const { return const_iterator(false); }
|
||||
};
|
||||
|
||||
extern AddrListClass addrList;
|
||||
|
||||
#endif // __ADDRLIST_H
|
@ -26,7 +26,7 @@
|
||||
class Client: public Stream {
|
||||
|
||||
public:
|
||||
virtual int connect(IPAddress ip, uint16_t port) =0;
|
||||
virtual int connect(CONST IPAddress& ip, uint16_t port) =0;
|
||||
virtual int connect(const char *host, uint16_t port) =0;
|
||||
virtual size_t write(uint8_t) =0;
|
||||
virtual size_t write(const uint8_t *buf, size_t size) =0;
|
||||
@ -39,7 +39,7 @@ class Client: public Stream {
|
||||
virtual uint8_t connected() = 0;
|
||||
virtual operator bool() = 0;
|
||||
protected:
|
||||
uint8_t* rawIPAddress(IPAddress& addr) {
|
||||
CONST uint8_t* rawIPAddress(CONST IPAddress& addr) {
|
||||
return addr.raw_address();
|
||||
}
|
||||
;
|
||||
|
@ -29,9 +29,6 @@
|
||||
#define STR(x) STRHELPER(x) // stringifier
|
||||
|
||||
static const char arduino_esp8266_git_ver [] PROGMEM = STR(ARDUINO_ESP8266_GIT_DESC);
|
||||
#if LWIP_VERSION_MAJOR != 1
|
||||
static const char lwip2_version [] PROGMEM = "/lwIP:" STR(LWIP_VERSION_MAJOR) "." STR(LWIP_VERSION_MINOR) "." STR(LWIP_VERSION_REVISION);
|
||||
#endif
|
||||
static const char bearssl_version [] PROGMEM = "/BearSSL:" STR(BEARSSL_GIT);
|
||||
|
||||
String EspClass::getFullVersion()
|
||||
@ -40,17 +37,18 @@ String EspClass::getFullVersion()
|
||||
+ F("/Core:") + FPSTR(arduino_esp8266_git_ver)
|
||||
#if LWIP_VERSION_MAJOR == 1
|
||||
+ F("/lwIP:") + String(LWIP_VERSION_MAJOR) + "." + String(LWIP_VERSION_MINOR) + "." + String(LWIP_VERSION_REVISION)
|
||||
#else
|
||||
+ FPSTR(lwip2_version)
|
||||
#endif
|
||||
#if LWIP_VERSION_IS_DEVELOPMENT
|
||||
+ F("-dev")
|
||||
#endif
|
||||
#if LWIP_VERSION_IS_RC
|
||||
+ F("rc") + String(LWIP_VERSION_RC)
|
||||
#endif
|
||||
#ifdef LWIP_HASH_STR
|
||||
+ "(" + F(LWIP_HASH_STR) + ")"
|
||||
#else // LWIP_VERSION_MAJOR != 1
|
||||
+ F("/lwIP:")
|
||||
#if LWIP_IPV6
|
||||
+ F("IPv6+")
|
||||
#endif
|
||||
+ F(LWIP_HASH_STR)
|
||||
#endif
|
||||
+ FPSTR(bearssl_version)
|
||||
;
|
||||
|
@ -20,28 +20,47 @@
|
||||
#include <Arduino.h>
|
||||
#include <IPAddress.h>
|
||||
#include <Print.h>
|
||||
#include <StreamString.h>
|
||||
|
||||
IPAddress::IPAddress() {
|
||||
_address.dword = 0;
|
||||
_ip = *IP_ANY_TYPE; // lwIP's v4-or-v6 generic address
|
||||
}
|
||||
|
||||
bool IPAddress::isSet () const {
|
||||
return !ip_addr_isany(&_ip);
|
||||
}
|
||||
|
||||
IPAddress::IPAddress(uint8_t first_octet, uint8_t second_octet, uint8_t third_octet, uint8_t fourth_octet) {
|
||||
_address.bytes[0] = first_octet;
|
||||
_address.bytes[1] = second_octet;
|
||||
_address.bytes[2] = third_octet;
|
||||
_address.bytes[3] = fourth_octet;
|
||||
setV4();
|
||||
(*this)[0] = first_octet;
|
||||
(*this)[1] = second_octet;
|
||||
(*this)[2] = third_octet;
|
||||
(*this)[3] = fourth_octet;
|
||||
}
|
||||
|
||||
IPAddress::IPAddress(uint32_t address) {
|
||||
_address.dword = address;
|
||||
setV4();
|
||||
v4() = address;
|
||||
}
|
||||
|
||||
IPAddress::IPAddress(const uint8_t *address) {
|
||||
memcpy(_address.bytes, address, sizeof(_address.bytes));
|
||||
setV4();
|
||||
v4() = *reinterpret_cast<const uint32_t*>(address);
|
||||
}
|
||||
|
||||
bool IPAddress::fromString(const char *address) {
|
||||
// TODO: add support for "a", "a.b", "a.b.c" formats
|
||||
if (!fromString4(address)) {
|
||||
#if LWIP_IPV6
|
||||
return fromString6(address);
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool IPAddress::fromString4(const char *address) {
|
||||
// TODO: (IPv4) add support for "a", "a.b", "a.b.c" formats
|
||||
|
||||
uint16_t acc = 0; // Accumulator
|
||||
uint8_t dots = 0;
|
||||
@ -63,7 +82,7 @@ bool IPAddress::fromString(const char *address) {
|
||||
// Too much dots (there must be 3 dots)
|
||||
return false;
|
||||
}
|
||||
_address.bytes[dots++] = acc;
|
||||
(*this)[dots++] = acc;
|
||||
acc = 0;
|
||||
}
|
||||
else
|
||||
@ -77,39 +96,72 @@ bool IPAddress::fromString(const char *address) {
|
||||
// Too few dots (there must be 3 dots)
|
||||
return false;
|
||||
}
|
||||
_address.bytes[3] = acc;
|
||||
(*this)[3] = acc;
|
||||
|
||||
setV4();
|
||||
return true;
|
||||
}
|
||||
|
||||
IPAddress& IPAddress::operator=(const uint8_t *address) {
|
||||
memcpy(_address.bytes, address, sizeof(_address.bytes));
|
||||
setV4();
|
||||
v4() = *reinterpret_cast<const uint32_t*>(address);
|
||||
return *this;
|
||||
}
|
||||
|
||||
IPAddress& IPAddress::operator=(uint32_t address) {
|
||||
_address.dword = address;
|
||||
setV4();
|
||||
v4() = address;
|
||||
return *this;
|
||||
}
|
||||
|
||||
bool IPAddress::operator==(const uint8_t* addr) const {
|
||||
return memcmp(addr, _address.bytes, sizeof(_address.bytes)) == 0;
|
||||
return isV4() && v4() == *reinterpret_cast<const uint32_t*>(addr);
|
||||
}
|
||||
|
||||
size_t IPAddress::printTo(Print& p) const {
|
||||
size_t n = 0;
|
||||
for(int i = 0; i < 3; i++) {
|
||||
n += p.print(_address.bytes[i], DEC);
|
||||
n += p.print('.');
|
||||
|
||||
if (!isSet())
|
||||
return p.print(F("(IP unset)"));
|
||||
|
||||
#if LWIP_IPV6
|
||||
if (isV6()) {
|
||||
int count0 = 0;
|
||||
for (int i = 0; i < 8; i++) {
|
||||
uint16_t bit = PP_NTOHS(raw6()[i]);
|
||||
if (bit || count0 < 0) {
|
||||
n += p.printf("%x", bit);
|
||||
if (count0 > 0)
|
||||
// no more hiding 0
|
||||
count0 = -8;
|
||||
} else
|
||||
count0++;
|
||||
if ((i != 7 && count0 < 2) || count0 == 7)
|
||||
n += p.print(':');
|
||||
}
|
||||
return n;
|
||||
}
|
||||
#endif
|
||||
|
||||
for(int i = 0; i < 4; i++) {
|
||||
n += p.print((*this)[i], DEC);
|
||||
if (i != 3)
|
||||
n += p.print('.');
|
||||
}
|
||||
n += p.print(_address.bytes[3], DEC);
|
||||
return n;
|
||||
}
|
||||
|
||||
String IPAddress::toString() const
|
||||
{
|
||||
char szRet[16];
|
||||
sprintf(szRet,"%u.%u.%u.%u", _address.bytes[0], _address.bytes[1], _address.bytes[2], _address.bytes[3]);
|
||||
return String(szRet);
|
||||
StreamString sstr;
|
||||
#if LWIP_IPV6
|
||||
if (isV6())
|
||||
sstr.reserve(40); // 8 shorts x 4 chars each + 7 colons + nullterm
|
||||
else
|
||||
#endif
|
||||
sstr.reserve(16); // 4 bytes with 3 chars max + 3 dots + nullterm, or '(IP unset)'
|
||||
printTo(sstr);
|
||||
return sstr;
|
||||
}
|
||||
|
||||
bool IPAddress::isValid(const String& arg) {
|
||||
@ -120,4 +172,63 @@ bool IPAddress::isValid(const char* arg) {
|
||||
return IPAddress().fromString(arg);
|
||||
}
|
||||
|
||||
const IPAddress INADDR_NONE(0, 0, 0, 0);
|
||||
CONST IPAddress IPNoAddress; // generic "0.0.0.0" for v4 & v6
|
||||
|
||||
/**************************************/
|
||||
|
||||
#if LWIP_IPV6
|
||||
|
||||
bool IPAddress::fromString6(const char *address) {
|
||||
// TODO: test test test
|
||||
|
||||
uint32_t acc = 0; // Accumulator
|
||||
int dots = 0, doubledots = -1;
|
||||
|
||||
while (*address)
|
||||
{
|
||||
char c = tolower(*address++);
|
||||
if (isalnum(c)) {
|
||||
if (c >= 'a')
|
||||
c -= 'a' - '0' - 10;
|
||||
acc = acc * 16 + (c - '0');
|
||||
if (acc > 0xffff)
|
||||
// Value out of range
|
||||
return false;
|
||||
}
|
||||
else if (c == ':') {
|
||||
if (*address == ':') {
|
||||
if (doubledots >= 0)
|
||||
// :: allowed once
|
||||
return false;
|
||||
// remember location
|
||||
doubledots = dots + !!acc;
|
||||
address++;
|
||||
}
|
||||
if (dots == 7)
|
||||
// too many separators
|
||||
return false;
|
||||
raw6()[dots++] = PP_HTONS(acc);
|
||||
acc = 0;
|
||||
}
|
||||
else
|
||||
// Invalid char
|
||||
return false;
|
||||
}
|
||||
|
||||
if (doubledots == -1 && dots != 7)
|
||||
// Too few separators
|
||||
return false;
|
||||
raw6()[dots++] = PP_HTONS(acc);
|
||||
|
||||
if (doubledots != -1) {
|
||||
for (int i = dots - doubledots - 1; i >= 0; i--)
|
||||
raw6()[8 - dots + doubledots + i] = raw6()[doubledots + i];
|
||||
for (int i = doubledots; i < 8 - dots + doubledots; i++)
|
||||
raw6()[i] = 0;
|
||||
}
|
||||
|
||||
setV6();
|
||||
return true;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
@ -24,21 +24,44 @@
|
||||
#include <WString.h>
|
||||
#include <Printable.h>
|
||||
|
||||
#include <lwip/init.h>
|
||||
#include <lwip/ip_addr.h>
|
||||
|
||||
#if LWIP_VERSION_MAJOR == 1
|
||||
// compatibility macros to make lwIP-v1 compiling lwIP-v2 API
|
||||
#define LWIP_IPV6_NUM_ADDRESSES 0
|
||||
#define ip_2_ip4(x) (x)
|
||||
#define ipv4_addr ip_addr
|
||||
#define IP_IS_V4_VAL(x) (1)
|
||||
#define IP_SET_TYPE_VAL(x,y) do { (void)0; } while (0)
|
||||
#define IP_ANY_TYPE (&ip_addr_any)
|
||||
#define IP4_ADDR_ANY4 IPADDR_ANY
|
||||
#define IPADDR4_INIT(x) { x }
|
||||
#define CONST /* nothing: lwIP-v1 does not use const */
|
||||
#else
|
||||
#define CONST const
|
||||
#endif
|
||||
|
||||
// A class to make it easier to handle and pass around IP addresses
|
||||
// IPv6 update:
|
||||
// IPAddress is now a decorator class for lwIP's ip_addr_t
|
||||
// fully backward compatible with legacy IPv4-only Arduino's
|
||||
// with unchanged footprint when IPv6 is disabled
|
||||
|
||||
class IPAddress: public Printable {
|
||||
private:
|
||||
union {
|
||||
uint8_t bytes[4]; // IPv4 address
|
||||
uint32_t dword;
|
||||
} _address;
|
||||
|
||||
ip_addr_t _ip;
|
||||
|
||||
// Access the raw byte array containing the address. Because this returns a pointer
|
||||
// to the internal structure rather than a copy of the address this function should only
|
||||
// be used when you know that the usage of the returned uint8_t* will be transient and not
|
||||
// stored.
|
||||
uint8_t* raw_address() {
|
||||
return _address.bytes;
|
||||
return reinterpret_cast<uint8_t*>(&v4());
|
||||
}
|
||||
const uint8_t* raw_address() const {
|
||||
return reinterpret_cast<const uint8_t*>(&v4());
|
||||
}
|
||||
|
||||
public:
|
||||
@ -54,22 +77,37 @@ class IPAddress: public Printable {
|
||||
// Overloaded cast operator to allow IPAddress objects to be used where a pointer
|
||||
// to a four-byte uint8_t array is expected
|
||||
operator uint32_t() const {
|
||||
return _address.dword;
|
||||
return isV4()? v4(): (uint32_t)0;
|
||||
}
|
||||
|
||||
// the above uint32_t() cast can be ambiguous
|
||||
// if gcc complains, use instead isSet() or v4() according to what's relevant
|
||||
bool isSet () const;
|
||||
// generic IPv4 wrapper to uint32-view like arduino loves to see it
|
||||
const u32_t& v4() const { return ip_2_ip4(&_ip)->addr; } // for raw_address(const)
|
||||
u32_t& v4() { return ip_2_ip4(&_ip)->addr; }
|
||||
|
||||
bool operator==(const IPAddress& addr) const {
|
||||
return _address.dword == addr._address.dword;
|
||||
return ip_addr_cmp(&_ip, &addr._ip);
|
||||
}
|
||||
bool operator!=(const IPAddress& addr) const {
|
||||
return !ip_addr_cmp(&_ip, &addr._ip);
|
||||
}
|
||||
bool operator==(uint32_t addr) const {
|
||||
return _address.dword == addr;
|
||||
return isV4() && v4() == addr;
|
||||
}
|
||||
bool operator!=(uint32_t addr) const {
|
||||
return !(isV4() && v4() == addr);
|
||||
}
|
||||
bool operator==(const uint8_t* addr) const;
|
||||
|
||||
// Overloaded index operator to allow getting and setting individual octets of the address
|
||||
uint8_t operator[](int index) const {
|
||||
return _address.bytes[index];
|
||||
return isV4()? *(raw_address() + index): 0;
|
||||
}
|
||||
uint8_t& operator[](int index) {
|
||||
return _address.bytes[index];
|
||||
setV4();
|
||||
return *(raw_address() + index);
|
||||
}
|
||||
|
||||
// Overloaded copy operators to allow initialisation of IPAddress objects from other types
|
||||
@ -79,13 +117,13 @@ class IPAddress: public Printable {
|
||||
virtual size_t printTo(Print& p) const;
|
||||
String toString() const;
|
||||
|
||||
/*
|
||||
check if input string(arg) is a valid IPV4 address or not.
|
||||
return true on valid.
|
||||
return false on invalid.
|
||||
*/
|
||||
static bool isValid(const String& arg);
|
||||
static bool isValid(const char* arg);
|
||||
/*
|
||||
check if input string(arg) is a valid IPV4 address or not.
|
||||
return true on valid.
|
||||
return false on invalid.
|
||||
*/
|
||||
static bool isValid(const String& arg);
|
||||
static bool isValid(const char* arg);
|
||||
|
||||
friend class EthernetClass;
|
||||
friend class UDP;
|
||||
@ -93,8 +131,68 @@ class IPAddress: public Printable {
|
||||
friend class Server;
|
||||
friend class DhcpClass;
|
||||
friend class DNSClient;
|
||||
};
|
||||
|
||||
extern const IPAddress INADDR_NONE;
|
||||
/*
|
||||
lwIP address compatibility
|
||||
*/
|
||||
IPAddress(const ipv4_addr* fw_addr) { setV4(); v4() = fw_addr->addr; }
|
||||
IPAddress(const ip_addr_t& lwip_addr) { _ip = lwip_addr; }
|
||||
|
||||
#if LWIP_VERSION_MAJOR != 1
|
||||
IPAddress(ipv4_addr fw_addr) { setV4(); v4() = fw_addr.addr; }
|
||||
IPAddress(const ip_addr_t* lwip_addr) { _ip = *lwip_addr; }
|
||||
#endif
|
||||
|
||||
operator ip_addr_t () const { return _ip; }
|
||||
operator const ip_addr_t*() const { return &_ip; }
|
||||
operator ip_addr_t*() { return &_ip; }
|
||||
|
||||
bool isV4() const { return IP_IS_V4_VAL(_ip); }
|
||||
void setV4() { IP_SET_TYPE_VAL(_ip, IPADDR_TYPE_V4); }
|
||||
|
||||
bool isLocal () const { return ip_addr_islinklocal(&_ip); }
|
||||
|
||||
#if LWIP_IPV6
|
||||
|
||||
uint16_t* raw6()
|
||||
{
|
||||
setV6();
|
||||
return reinterpret_cast<uint16_t*>(ip_2_ip6(&_ip));
|
||||
}
|
||||
|
||||
const uint16_t* raw6() const
|
||||
{
|
||||
return isV6()? reinterpret_cast<const uint16_t*>(ip_2_ip6(&_ip)): nullptr;
|
||||
}
|
||||
|
||||
// when not IPv6, ip_addr_t == ip4_addr_t so this one would be ambiguous
|
||||
// required otherwise
|
||||
operator const ip4_addr_t*() const { return isV4()? ip_2_ip4(&_ip): nullptr; }
|
||||
|
||||
bool isV6() const { return IP_IS_V6_VAL(_ip); }
|
||||
void setV6() { IP_SET_TYPE_VAL(_ip, IPADDR_TYPE_V6); }
|
||||
|
||||
protected:
|
||||
bool fromString6(const char *address);
|
||||
|
||||
#else
|
||||
|
||||
// allow portable code when IPv6 is not enabled
|
||||
|
||||
uint16_t* raw6() { return nullptr; }
|
||||
const uint16_t* raw6() const { return nullptr; }
|
||||
bool isV6() const { return false; }
|
||||
void setV6() { }
|
||||
|
||||
#endif
|
||||
|
||||
protected:
|
||||
bool fromString4(const char *address);
|
||||
|
||||
};
|
||||
|
||||
extern CONST IPAddress IPNoAddress;
|
||||
|
||||
#include <AddrList.h>
|
||||
|
||||
#endif
|
||||
|
@ -78,11 +78,11 @@ class UDP: public Stream {
|
||||
virtual void flush() =0; // Finish reading the current packet
|
||||
|
||||
// Return the IP address of the host who sent the current incoming packet
|
||||
virtual IPAddress remoteIP() =0;
|
||||
virtual IPAddress remoteIP() const =0;
|
||||
// Return the port of the host who sent the current incoming packet
|
||||
virtual uint16_t remotePort() =0;
|
||||
virtual uint16_t remotePort() const =0;
|
||||
protected:
|
||||
uint8_t* rawIPAddress(IPAddress& addr) {
|
||||
CONST uint8_t* rawIPAddress(CONST IPAddress& addr) {
|
||||
return addr.raw_address();
|
||||
}
|
||||
};
|
||||
|
@ -124,7 +124,7 @@ void ArduinoOTAClass::begin() {
|
||||
_udp_ota = new UdpContext;
|
||||
_udp_ota->ref();
|
||||
|
||||
if(!_udp_ota->listen(*IP_ADDR_ANY, _port))
|
||||
if(!_udp_ota->listen(IP_ADDR_ANY, _port))
|
||||
return;
|
||||
_udp_ota->onRx(std::bind(&ArduinoOTAClass::_onRx, this));
|
||||
MDNS.begin(_hostname.c_str());
|
||||
@ -172,7 +172,7 @@ String ArduinoOTAClass::readStringUntil(char end){
|
||||
|
||||
void ArduinoOTAClass::_onRx(){
|
||||
if(!_udp_ota->next()) return;
|
||||
ip_addr_t ota_ip;
|
||||
IPAddress ota_ip;
|
||||
|
||||
if (_state == OTA_IDLE) {
|
||||
int cmd = parseInt();
|
||||
@ -189,7 +189,7 @@ void ArduinoOTAClass::_onRx(){
|
||||
if(_md5.length() != 32)
|
||||
return;
|
||||
|
||||
ota_ip.addr = (uint32_t)_ota_ip;
|
||||
ota_ip = _ota_ip;
|
||||
|
||||
if (_password.length()){
|
||||
MD5Builder nonce_md5;
|
||||
@ -201,7 +201,7 @@ void ArduinoOTAClass::_onRx(){
|
||||
char auth_req[38];
|
||||
sprintf(auth_req, "AUTH %s", _nonce.c_str());
|
||||
_udp_ota->append((const char *)auth_req, strlen(auth_req));
|
||||
_udp_ota->send(&ota_ip, _ota_udp_port);
|
||||
_udp_ota->send(ota_ip, _ota_udp_port);
|
||||
_state = OTA_WAITAUTH;
|
||||
return;
|
||||
} else {
|
||||
@ -228,12 +228,12 @@ void ArduinoOTAClass::_onRx(){
|
||||
_challengemd5.calculate();
|
||||
String result = _challengemd5.toString();
|
||||
|
||||
ota_ip.addr = (uint32_t)_ota_ip;
|
||||
ota_ip = _ota_ip;
|
||||
if(result.equalsConstantTime(response)) {
|
||||
_state = OTA_RUNUPDATE;
|
||||
} else {
|
||||
_udp_ota->append("Authentication Failed", 21);
|
||||
_udp_ota->send(&ota_ip, _ota_udp_port);
|
||||
_udp_ota->send(ota_ip, _ota_udp_port);
|
||||
if (_error_callback) _error_callback(OTA_AUTH_ERROR);
|
||||
_state = OTA_IDLE;
|
||||
}
|
||||
@ -243,8 +243,7 @@ void ArduinoOTAClass::_onRx(){
|
||||
}
|
||||
|
||||
void ArduinoOTAClass::_runUpdate() {
|
||||
ip_addr_t ota_ip;
|
||||
ota_ip.addr = (uint32_t)_ota_ip;
|
||||
IPAddress ota_ip = _ota_ip;
|
||||
|
||||
if (!Update.begin(_size, _cmd)) {
|
||||
#ifdef OTA_DEBUG
|
||||
@ -258,14 +257,14 @@ void ArduinoOTAClass::_runUpdate() {
|
||||
Update.printError(ss);
|
||||
_udp_ota->append("ERR: ", 5);
|
||||
_udp_ota->append(ss.c_str(), ss.length());
|
||||
_udp_ota->send(&ota_ip, _ota_udp_port);
|
||||
_udp_ota->send(ota_ip, _ota_udp_port);
|
||||
delay(100);
|
||||
_udp_ota->listen(*IP_ADDR_ANY, _port);
|
||||
_udp_ota->listen(IP_ADDR_ANY, _port);
|
||||
_state = OTA_IDLE;
|
||||
return;
|
||||
}
|
||||
_udp_ota->append("OK", 2);
|
||||
_udp_ota->send(&ota_ip, _ota_udp_port);
|
||||
_udp_ota->send(ota_ip, _ota_udp_port);
|
||||
delay(100);
|
||||
|
||||
Update.setMD5(_md5.c_str());
|
||||
@ -284,7 +283,7 @@ void ArduinoOTAClass::_runUpdate() {
|
||||
#ifdef OTA_DEBUG
|
||||
OTA_DEBUG.printf("Connect Failed\n");
|
||||
#endif
|
||||
_udp_ota->listen(*IP_ADDR_ANY, _port);
|
||||
_udp_ota->listen(IP_ADDR_ANY, _port);
|
||||
if (_error_callback) {
|
||||
_error_callback(OTA_CONNECT_ERROR);
|
||||
}
|
||||
@ -302,7 +301,7 @@ void ArduinoOTAClass::_runUpdate() {
|
||||
#ifdef OTA_DEBUG
|
||||
OTA_DEBUG.printf("Receive Failed\n");
|
||||
#endif
|
||||
_udp_ota->listen(*IP_ADDR_ANY, _port);
|
||||
_udp_ota->listen(IP_ADDR_ANY, _port);
|
||||
if (_error_callback) {
|
||||
_error_callback(OTA_RECEIVE_ERROR);
|
||||
}
|
||||
@ -337,7 +336,7 @@ void ArduinoOTAClass::_runUpdate() {
|
||||
ESP.restart();
|
||||
}
|
||||
} else {
|
||||
_udp_ota->listen(*IP_ADDR_ANY, _port);
|
||||
_udp_ota->listen(IP_ADDR_ANY, _port);
|
||||
if (_error_callback) {
|
||||
_error_callback(OTA_END_ERROR);
|
||||
}
|
||||
|
@ -65,7 +65,9 @@ extern "C" {
|
||||
#define _conn_read8() _conn->read()
|
||||
#define _conn_readS(b, l) _conn->read((b), (l));
|
||||
|
||||
static const IPAddress LLMNR_MULTICAST_ADDR(224, 0, 0, 252);
|
||||
// llmnr ipv6 is FF02:0:0:0:0:0:1:3
|
||||
// lwip-v2's igmp_joingroup only supports IPv4
|
||||
#define LLMNR_MULTICAST_ADDR 224, 0, 0, 252
|
||||
static const int LLMNR_MULTICAST_TTL = 1;
|
||||
static const int LLMNR_PORT = 5355;
|
||||
|
||||
@ -109,21 +111,20 @@ bool LLMNRResponder::_restart() {
|
||||
_conn = 0;
|
||||
}
|
||||
|
||||
ip_addr_t multicast_addr;
|
||||
multicast_addr.addr = (uint32_t)LLMNR_MULTICAST_ADDR;
|
||||
IPAddress llmnr(LLMNR_MULTICAST_ADDR);
|
||||
|
||||
if (igmp_joingroup(IP_ADDR_ANY, &multicast_addr) != ERR_OK)
|
||||
if (igmp_joingroup(IP4_ADDR_ANY4, llmnr) != ERR_OK)
|
||||
return false;
|
||||
|
||||
_conn = new UdpContext;
|
||||
_conn->ref();
|
||||
|
||||
if (!_conn->listen(*IP_ADDR_ANY, LLMNR_PORT))
|
||||
if (!_conn->listen(IP_ADDR_ANY, LLMNR_PORT))
|
||||
return false;
|
||||
|
||||
_conn->setMulticastTTL(LLMNR_MULTICAST_TTL);
|
||||
_conn->onRx(std::bind(&LLMNRResponder::_process_packet, this));
|
||||
_conn->connect(multicast_addr, LLMNR_PORT);
|
||||
_conn->connect(llmnr, LLMNR_PORT);
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -229,15 +230,16 @@ void LLMNRResponder::_process_packet() {
|
||||
Serial.println("(no matching RRs)");
|
||||
#endif
|
||||
|
||||
ip_addr_t remote_ip;
|
||||
remote_ip.addr = _conn->getRemoteAddress();
|
||||
IPAddress remote_ip = _conn->getRemoteAddress();
|
||||
|
||||
struct ip_info ip_info;
|
||||
bool match_ap = false;
|
||||
if (wifi_get_opmode() & SOFTAP_MODE) {
|
||||
wifi_get_ip_info(SOFTAP_IF, &ip_info);
|
||||
if (ip_info.ip.addr && ip_addr_netcmp(&remote_ip, &ip_info.ip, &ip_info.netmask))
|
||||
match_ap = true;
|
||||
IPAddress infoIp(ip_info.ip);
|
||||
IPAddress infoMask(ip_info.netmask);
|
||||
if (ip_info.ip.addr && ip_addr_netcmp((const ip_addr_t*)remote_ip, (const ip_addr_t*)infoIp, ip_2_ip4((const ip_addr_t*)infoMask)))
|
||||
match_ap = true;
|
||||
}
|
||||
if (!match_ap)
|
||||
wifi_get_ip_info(STATION_IF, &ip_info);
|
||||
@ -277,7 +279,7 @@ void LLMNRResponder::_process_packet() {
|
||||
_conn->append(reinterpret_cast<const char*>(rr), sizeof(rr));
|
||||
}
|
||||
_conn->setMulticastInterface(remote_ip);
|
||||
_conn->send(&remote_ip, _conn->getRemotePort());
|
||||
_conn->send(remote_ip, _conn->getRemotePort());
|
||||
}
|
||||
|
||||
#if !defined(NO_GLOBAL_INSTANCES) && !defined(NO_GLOBAL_LLMNR)
|
||||
|
12
libraries/ESP8266NetBIOS/ESP8266NetBIOS.cpp
Executable file → Normal file
12
libraries/ESP8266NetBIOS/ESP8266NetBIOS.cpp
Executable file → Normal file
@ -174,11 +174,7 @@ void ESP8266NetBIOS::end()
|
||||
}
|
||||
}
|
||||
|
||||
#if LWIP_VERSION_MAJOR == 1
|
||||
void ESP8266NetBIOS::_recv(udp_pcb *upcb, pbuf *pb, ip_addr_t *addr, uint16_t port)
|
||||
#else
|
||||
void ESP8266NetBIOS::_recv(udp_pcb *upcb, pbuf *pb, const ip_addr_t *addr, uint16_t port)
|
||||
#endif
|
||||
void ESP8266NetBIOS::_recv(udp_pcb *upcb, pbuf *pb, CONST ip_addr_t *addr, uint16_t port)
|
||||
{
|
||||
(void)upcb;
|
||||
(void)addr;
|
||||
@ -269,11 +265,7 @@ void ESP8266NetBIOS::_recv(udp_pcb *upcb, pbuf *pb, const ip_addr_t *addr, uint1
|
||||
}
|
||||
}
|
||||
|
||||
#if LWIP_VERSION_MAJOR == 1
|
||||
void ESP8266NetBIOS::_s_recv(void *arg, udp_pcb *upcb, pbuf *p, struct ip_addr *addr, uint16_t port)
|
||||
#else
|
||||
void ESP8266NetBIOS::_s_recv(void *arg, udp_pcb *upcb, pbuf *p, const ip_addr_t *addr, uint16_t port)
|
||||
#endif
|
||||
void ESP8266NetBIOS::_s_recv(void *arg, udp_pcb *upcb, pbuf *p, CONST ip_addr_t *addr, uint16_t port)
|
||||
{
|
||||
reinterpret_cast<ESP8266NetBIOS*>(arg)->_recv(upcb, p, addr, port);
|
||||
}
|
||||
|
10
libraries/ESP8266NetBIOS/ESP8266NetBIOS.h
Executable file → Normal file
10
libraries/ESP8266NetBIOS/ESP8266NetBIOS.h
Executable file → Normal file
@ -28,13 +28,9 @@ protected:
|
||||
void _getnbname(char *nbname, char *name, uint8_t maxlen);
|
||||
void _makenbname(char *name, char *nbname, uint8_t outlen);
|
||||
|
||||
#if LWIP_VERSION_MAJOR == 1
|
||||
void _recv(udp_pcb *upcb, pbuf *pb, struct ip_addr *addr, uint16_t port);
|
||||
static void _s_recv(void *arg, udp_pcb *upcb, pbuf *p, struct ip_addr *addr, uint16_t port);
|
||||
#else
|
||||
void _recv(udp_pcb *upcb, pbuf *pb, const ip_addr_t *addr, uint16_t port);
|
||||
static void _s_recv(void *arg, udp_pcb *upcb, pbuf *p, const ip_addr_t *addr, uint16_t port);
|
||||
#endif
|
||||
void _recv(udp_pcb *upcb, pbuf *pb, CONST ip_addr_t *addr, uint16_t port);
|
||||
static void _s_recv(void *arg, udp_pcb *upcb, pbuf *p, CONST ip_addr_t *addr, uint16_t port);
|
||||
|
||||
public:
|
||||
ESP8266NetBIOS();
|
||||
~ESP8266NetBIOS();
|
||||
|
@ -53,7 +53,10 @@ extern "C" {
|
||||
#define SSDP_URI_SIZE 2
|
||||
#define SSDP_BUFFER_SIZE 64
|
||||
#define SSDP_MULTICAST_TTL 2
|
||||
static const IPAddress SSDP_MULTICAST_ADDR(239, 255, 255, 250);
|
||||
|
||||
// ssdp ipv6 is FF05::C
|
||||
// lwip-v2's igmp_joingroup only supports IPv4
|
||||
#define SSDP_MULTICAST_ADDR 239, 255, 255, 250
|
||||
|
||||
static const char _ssdp_response_template[] PROGMEM =
|
||||
"HTTP/1.1 200 OK\r\n"
|
||||
@ -172,23 +175,22 @@ bool SSDPClass::begin() {
|
||||
_server = new UdpContext;
|
||||
_server->ref();
|
||||
|
||||
ip_addr_t ifaddr;
|
||||
ifaddr.addr = WiFi.localIP();
|
||||
ip_addr_t multicast_addr;
|
||||
multicast_addr.addr = (uint32_t) SSDP_MULTICAST_ADDR;
|
||||
if (igmp_joingroup(&ifaddr, &multicast_addr) != ERR_OK ) {
|
||||
IPAddress local = WiFi.localIP();
|
||||
IPAddress mcast(SSDP_MULTICAST_ADDR);
|
||||
|
||||
if (igmp_joingroup(local, mcast) != ERR_OK ) {
|
||||
DEBUGV("SSDP failed to join igmp group");
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!_server->listen(*IP_ADDR_ANY, SSDP_PORT)) {
|
||||
if (!_server->listen(IP_ADDR_ANY, SSDP_PORT)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
_server->setMulticastInterface(ifaddr);
|
||||
_server->setMulticastInterface(local);
|
||||
_server->setMulticastTTL(_ttl);
|
||||
_server->onRx(std::bind(&SSDPClass::_update, this));
|
||||
if (!_server->connect(multicast_addr, SSDP_PORT)) {
|
||||
if (!_server->connect(mcast, SSDP_PORT)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -209,7 +211,7 @@ void SSDPClass::_send(ssdp_method_t method) {
|
||||
valueBuffer,
|
||||
SSDP_INTERVAL,
|
||||
_modelName,
|
||||
_modelNumber,
|
||||
_modelNumber,
|
||||
_uuid,
|
||||
(method == NONE) ? "ST" : "NT",
|
||||
_deviceType,
|
||||
@ -218,28 +220,28 @@ void SSDPClass::_send(ssdp_method_t method) {
|
||||
|
||||
_server->append(buffer, len);
|
||||
|
||||
ip_addr_t remoteAddr;
|
||||
IPAddress remoteAddr;
|
||||
uint16_t remotePort;
|
||||
if (method == NONE) {
|
||||
remoteAddr.addr = _respondToAddr;
|
||||
remoteAddr = _respondToAddr;
|
||||
remotePort = _respondToPort;
|
||||
#ifdef DEBUG_SSDP
|
||||
DEBUG_SSDP.print("Sending Response to ");
|
||||
#endif
|
||||
} else {
|
||||
remoteAddr.addr = SSDP_MULTICAST_ADDR;
|
||||
remoteAddr = IPAddress(SSDP_MULTICAST_ADDR);
|
||||
remotePort = SSDP_PORT;
|
||||
#ifdef DEBUG_SSDP
|
||||
DEBUG_SSDP.println("Sending Notify to ");
|
||||
#endif
|
||||
}
|
||||
#ifdef DEBUG_SSDP
|
||||
DEBUG_SSDP.print(IPAddress(remoteAddr.addr));
|
||||
DEBUG_SSDP.print(IPAddress(remoteAddr));
|
||||
DEBUG_SSDP.print(":");
|
||||
DEBUG_SSDP.println(remotePort);
|
||||
#endif
|
||||
|
||||
_server->send(&remoteAddr, remotePort);
|
||||
_server->send(remoteAddr, remotePort);
|
||||
}
|
||||
|
||||
void SSDPClass::schema(WiFiClient client) {
|
||||
|
@ -201,10 +201,19 @@ bool ESP8266WiFiAPClass::softAPConfig(IPAddress local_ip, IPAddress gateway, IPA
|
||||
}
|
||||
bool ret = true;
|
||||
|
||||
if ( !local_ip.isV4()
|
||||
|| !subnet.isV4()
|
||||
#if LWIP_IPV6
|
||||
// uninitialized gateway is valid
|
||||
|| gateway.isV6()
|
||||
#endif
|
||||
) {
|
||||
return false;
|
||||
}
|
||||
struct ip_info info;
|
||||
info.ip.addr = static_cast<uint32_t>(local_ip);
|
||||
info.gw.addr = static_cast<uint32_t>(gateway);
|
||||
info.netmask.addr = static_cast<uint32_t>(subnet);
|
||||
info.ip.addr = local_ip.v4();
|
||||
info.gw.addr = gateway.v4();
|
||||
info.netmask.addr = subnet.v4();
|
||||
|
||||
if(!wifi_softap_dhcps_stop()) {
|
||||
DEBUG_WIFI("[APConfig] wifi_softap_dhcps_stop failed!\n");
|
||||
@ -218,11 +227,11 @@ bool ESP8266WiFiAPClass::softAPConfig(IPAddress local_ip, IPAddress gateway, IPA
|
||||
struct dhcps_lease dhcp_lease;
|
||||
IPAddress ip = local_ip;
|
||||
ip[3] += 99;
|
||||
dhcp_lease.start_ip.addr = static_cast<uint32_t>(ip);
|
||||
dhcp_lease.start_ip.addr = ip.v4();
|
||||
DEBUG_WIFI("[APConfig] DHCP IP start: %s\n", ip.toString().c_str());
|
||||
|
||||
ip[3] += 100;
|
||||
dhcp_lease.end_ip.addr = static_cast<uint32_t>(ip);
|
||||
dhcp_lease.end_ip.addr = ip.v4();
|
||||
DEBUG_WIFI("[APConfig] DHCP IP end: %s\n", ip.toString().c_str());
|
||||
|
||||
if(!wifi_softap_set_dhcps_lease(&dhcp_lease)) {
|
||||
@ -252,7 +261,7 @@ bool ESP8266WiFiAPClass::softAPConfig(IPAddress local_ip, IPAddress gateway, IPA
|
||||
if(info.ip.addr == 0x00000000) {
|
||||
DEBUG_WIFI("[APConfig] IP config Invalid?!\n");
|
||||
ret = false;
|
||||
} else if(local_ip != info.ip.addr) {
|
||||
} else if(local_ip.v4() != info.ip.addr) {
|
||||
ip = info.ip.addr;
|
||||
DEBUG_WIFI("[APConfig] IP config not set correct?! new IP: %s\n", ip.toString().c_str());
|
||||
ret = false;
|
||||
|
@ -510,11 +510,7 @@ bool ESP8266WiFiGenericClass::isSleepLevelMax () {
|
||||
// ------------------------------------------------ Generic Network function ---------------------------------------------
|
||||
// -----------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
#if LWIP_VERSION_MAJOR == 1
|
||||
void wifi_dns_found_callback(const char *name, ip_addr_t *ipaddr, void *callback_arg);
|
||||
#else
|
||||
void wifi_dns_found_callback(const char *name, const ip_addr_t *ipaddr, void *callback_arg);
|
||||
#endif
|
||||
void wifi_dns_found_callback(const char *name, CONST ip_addr_t *ipaddr, void *callback_arg);
|
||||
|
||||
static bool _dns_lookup_pending = false;
|
||||
|
||||
@ -545,13 +541,13 @@ int ESP8266WiFiGenericClass::hostByName(const char* aHostname, IPAddress& aResul
|
||||
DEBUG_WIFI_GENERIC("[hostByName] request IP for: %s\n", aHostname);
|
||||
err_t err = dns_gethostbyname(aHostname, &addr, &wifi_dns_found_callback, &aResult);
|
||||
if(err == ERR_OK) {
|
||||
aResult = addr.addr;
|
||||
aResult = IPAddress(&addr);
|
||||
} else if(err == ERR_INPROGRESS) {
|
||||
_dns_lookup_pending = true;
|
||||
delay(timeout_ms);
|
||||
_dns_lookup_pending = false;
|
||||
// will return here when dns_found_callback fires
|
||||
if(aResult != 0) {
|
||||
if(aResult.isSet()) {
|
||||
err = ERR_OK;
|
||||
}
|
||||
}
|
||||
@ -571,18 +567,14 @@ int ESP8266WiFiGenericClass::hostByName(const char* aHostname, IPAddress& aResul
|
||||
* @param ipaddr
|
||||
* @param callback_arg
|
||||
*/
|
||||
#if LWIP_VERSION_MAJOR == 1
|
||||
void wifi_dns_found_callback(const char *name, ip_addr_t *ipaddr, void *callback_arg)
|
||||
#else
|
||||
void wifi_dns_found_callback(const char *name, const ip_addr_t *ipaddr, void *callback_arg)
|
||||
#endif
|
||||
void wifi_dns_found_callback(const char *name, CONST ip_addr_t *ipaddr, void *callback_arg)
|
||||
{
|
||||
(void) name;
|
||||
if (!_dns_lookup_pending) {
|
||||
return;
|
||||
}
|
||||
if(ipaddr) {
|
||||
(*reinterpret_cast<IPAddress*>(callback_arg)) = ipaddr->addr;
|
||||
(*reinterpret_cast<IPAddress*>(callback_arg)) = IPAddress(ipaddr);
|
||||
}
|
||||
esp_schedule(); // resume the hostByName function
|
||||
}
|
||||
|
@ -38,6 +38,9 @@ extern "C" {
|
||||
#include "lwip/err.h"
|
||||
#include "lwip/dns.h"
|
||||
#include "lwip/init.h" // LWIP_VERSION_
|
||||
#if LWIP_IPV6
|
||||
#include "lwip/netif.h" // struct netif
|
||||
#endif
|
||||
}
|
||||
|
||||
#include "debug.h"
|
||||
@ -117,7 +120,7 @@ wl_status_t ESP8266WiFiSTAClass::begin(const char* ssid, const char *passphrase,
|
||||
|
||||
struct station_config conf;
|
||||
strcpy(reinterpret_cast<char*>(conf.ssid), ssid);
|
||||
|
||||
|
||||
conf.threshold.authmode = AUTH_OPEN;
|
||||
|
||||
if(passphrase) {
|
||||
@ -244,15 +247,20 @@ bool ESP8266WiFiSTAClass::config(IPAddress local_ip, IPAddress arg1, IPAddress a
|
||||
dns1 = arg1;
|
||||
}
|
||||
|
||||
// check whether all is IPv4 (or gateway not set)
|
||||
if (!(local_ip.isV4() && subnet.isV4() && (!gateway.isSet() || gateway.isV4()))) {
|
||||
return false;
|
||||
}
|
||||
|
||||
//ip and gateway must be in the same subnet
|
||||
if((local_ip & subnet) != (gateway & subnet)) {
|
||||
if((local_ip.v4() & subnet.v4()) != (gateway.v4() & subnet.v4())) {
|
||||
return false;
|
||||
}
|
||||
|
||||
struct ip_info info;
|
||||
info.ip.addr = static_cast<uint32_t>(local_ip);
|
||||
info.gw.addr = static_cast<uint32_t>(gateway);
|
||||
info.netmask.addr = static_cast<uint32_t>(subnet);
|
||||
info.ip.addr = local_ip.v4();
|
||||
info.gw.addr = gateway.v4();
|
||||
info.netmask.addr = subnet.v4();
|
||||
|
||||
wifi_station_dhcpc_stop();
|
||||
if(wifi_set_ip_info(STATION_IF, &info)) {
|
||||
@ -260,18 +268,15 @@ bool ESP8266WiFiSTAClass::config(IPAddress local_ip, IPAddress arg1, IPAddress a
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
ip_addr_t d;
|
||||
|
||||
if(dns1 != (uint32_t)0x00000000) {
|
||||
if(dns1.isSet()) {
|
||||
// Set DNS1-Server
|
||||
d.addr = static_cast<uint32_t>(dns1);
|
||||
dns_setserver(0, &d);
|
||||
dns_setserver(0, dns1);
|
||||
}
|
||||
|
||||
if(dns2 != (uint32_t)0x00000000) {
|
||||
if(dns2.isSet()) {
|
||||
// Set DNS2-Server
|
||||
d.addr = static_cast<uint32_t>(dns2);
|
||||
dns_setserver(1, &d);
|
||||
dns_setserver(1, dns2);
|
||||
}
|
||||
|
||||
return true;
|
||||
@ -392,7 +397,6 @@ IPAddress ESP8266WiFiSTAClass::localIP() {
|
||||
return IPAddress(ip.ip.addr);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get the station interface MAC address.
|
||||
* @param mac pointer to uint8_t array with length WL_MAC_ADDR_LENGTH
|
||||
@ -446,8 +450,7 @@ IPAddress ESP8266WiFiSTAClass::dnsIP(uint8_t dns_no) {
|
||||
ip_addr_t dns_ip = dns_getserver(dns_no);
|
||||
return IPAddress(dns_ip.addr);
|
||||
#else
|
||||
const ip_addr_t* dns_ip = dns_getserver(dns_no);
|
||||
return IPAddress(dns_ip->addr);
|
||||
return IPAddress(dns_getserver(dns_no));
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -137,22 +137,19 @@ int WiFiClient::connect(const String& host, uint16_t port)
|
||||
return connect(host.c_str(), port);
|
||||
}
|
||||
|
||||
int WiFiClient::connect(IPAddress ip, uint16_t port)
|
||||
int WiFiClient::connect(CONST IPAddress& ip, uint16_t port)
|
||||
{
|
||||
ip_addr_t addr;
|
||||
addr.addr = ip;
|
||||
|
||||
if (_client) {
|
||||
stop();
|
||||
_client->unref();
|
||||
_client = nullptr;
|
||||
}
|
||||
|
||||
#if LWIP_VERSION_MAJOR == 1
|
||||
// if the default interface is down, tcp_connect exits early without
|
||||
// ever calling tcp_err
|
||||
// http://lists.gnu.org/archive/html/lwip-devel/2010-05/msg00001.html
|
||||
#if LWIP_VERSION_MAJOR == 1
|
||||
netif* interface = ip_route(&addr);
|
||||
netif* interface = ip_route(ip);
|
||||
if (!interface) {
|
||||
DEBUGV("no route to host\r\n");
|
||||
return 0;
|
||||
@ -170,7 +167,7 @@ int WiFiClient::connect(IPAddress ip, uint16_t port)
|
||||
_client = new ClientContext(pcb, nullptr, nullptr);
|
||||
_client->ref();
|
||||
_client->setTimeout(_timeout);
|
||||
int res = _client->connect(&addr, port);
|
||||
int res = _client->connect(ip, port);
|
||||
if (res == 0) {
|
||||
_client->unref();
|
||||
_client = nullptr;
|
||||
|
@ -53,7 +53,7 @@ public:
|
||||
WiFiClient& operator=(const WiFiClient&);
|
||||
|
||||
uint8_t status();
|
||||
virtual int connect(IPAddress ip, uint16_t port);
|
||||
virtual int connect(CONST IPAddress& ip, uint16_t port);
|
||||
virtual int connect(const char *host, uint16_t port);
|
||||
virtual int connect(const String& host, uint16_t port);
|
||||
virtual size_t write(uint8_t);
|
||||
|
@ -95,7 +95,7 @@ WiFiClientSecure::WiFiClientSecure(ClientContext* client, bool usePMEM,
|
||||
_ssl->connectServer(client, _timeout);
|
||||
}
|
||||
|
||||
int WiFiClientSecure::connect(IPAddress ip, uint16_t port)
|
||||
int WiFiClientSecure::connect(CONST IPAddress& ip, uint16_t port)
|
||||
{
|
||||
if (!WiFiClient::connect(ip, port)) {
|
||||
return 0;
|
||||
|
@ -35,7 +35,7 @@ public:
|
||||
WiFiClientSecure();
|
||||
~WiFiClientSecure() override;
|
||||
|
||||
int connect(IPAddress ip, uint16_t port) override;
|
||||
int connect(CONST IPAddress& ip, uint16_t port) override;
|
||||
int connect(const String& host, uint16_t port) override;
|
||||
int connect(const char* name, uint16_t port) override;
|
||||
|
||||
|
@ -200,7 +200,7 @@ bool WiFiClientSecure::flush(unsigned int maxWaitMs) {
|
||||
return WiFiClient::flush(maxWaitMs);
|
||||
}
|
||||
|
||||
int WiFiClientSecure::connect(IPAddress ip, uint16_t port) {
|
||||
int WiFiClientSecure::connect(CONST IPAddress& ip, uint16_t port) {
|
||||
if (!WiFiClient::connect(ip, port)) {
|
||||
return 0;
|
||||
}
|
||||
|
@ -36,7 +36,7 @@ class WiFiClientSecure : public WiFiClient {
|
||||
WiFiClientSecure();
|
||||
~WiFiClientSecure() override;
|
||||
|
||||
int connect(IPAddress ip, uint16_t port) override;
|
||||
int connect(CONST IPAddress& ip, uint16_t port) override;
|
||||
int connect(const String& host, uint16_t port) override;
|
||||
int connect(const char* name, uint16_t port) override;
|
||||
|
||||
|
@ -37,7 +37,7 @@ extern "C" {
|
||||
#include "lwip/inet.h"
|
||||
#include <include/ClientContext.h>
|
||||
|
||||
WiFiServer::WiFiServer(IPAddress addr, uint16_t port)
|
||||
WiFiServer::WiFiServer(const IPAddress& addr, uint16_t port)
|
||||
: _port(port)
|
||||
, _addr(addr)
|
||||
, _pcb(nullptr)
|
||||
@ -48,7 +48,7 @@ WiFiServer::WiFiServer(IPAddress addr, uint16_t port)
|
||||
|
||||
WiFiServer::WiFiServer(uint16_t port)
|
||||
: _port(port)
|
||||
, _addr((uint32_t) IPADDR_ANY)
|
||||
, _addr(IP_ANY_TYPE)
|
||||
, _pcb(nullptr)
|
||||
, _unclaimed(nullptr)
|
||||
, _discarded(nullptr)
|
||||
@ -61,16 +61,16 @@ void WiFiServer::begin() {
|
||||
|
||||
void WiFiServer::begin(uint16_t port) {
|
||||
close();
|
||||
_port = port;
|
||||
_port = port;
|
||||
err_t err;
|
||||
tcp_pcb* pcb = tcp_new();
|
||||
if (!pcb)
|
||||
return;
|
||||
|
||||
ip_addr_t local_addr;
|
||||
local_addr.addr = (uint32_t) _addr;
|
||||
pcb->so_options |= SOF_REUSEADDR;
|
||||
err = tcp_bind(pcb, &local_addr, _port);
|
||||
|
||||
// (IPAddress _addr) operator-converted to (const ip_addr_t*)
|
||||
err = tcp_bind(pcb, _addr, _port);
|
||||
|
||||
if (err != ERR_OK) {
|
||||
tcp_close(pcb);
|
||||
|
@ -46,7 +46,7 @@ protected:
|
||||
enum { _ndDefault, _ndFalse, _ndTrue } _noDelay = _ndDefault;
|
||||
|
||||
public:
|
||||
WiFiServer(IPAddress addr, uint16_t port);
|
||||
WiFiServer(const IPAddress& addr, uint16_t port);
|
||||
WiFiServer(uint16_t port);
|
||||
virtual ~WiFiServer() {}
|
||||
WiFiClient available(uint8_t* status = NULL);
|
||||
|
@ -40,7 +40,6 @@ extern "C"
|
||||
#include "lwip/mem.h"
|
||||
#include <include/UdpContext.h>
|
||||
|
||||
|
||||
template<>
|
||||
WiFiUDP* SList<WiFiUDP>::_s_first = 0;
|
||||
|
||||
@ -83,9 +82,7 @@ uint8_t WiFiUDP::begin(uint16_t port)
|
||||
|
||||
_ctx = new UdpContext;
|
||||
_ctx->ref();
|
||||
ip_addr_t addr;
|
||||
addr.addr = INADDR_ANY;
|
||||
return (_ctx->listen(addr, port)) ? 1 : 0;
|
||||
return (_ctx->listen(IPAddress(), port)) ? 1 : 0;
|
||||
}
|
||||
|
||||
uint8_t WiFiUDP::beginMulticast(IPAddress interfaceAddr, IPAddress multicast, uint16_t port)
|
||||
@ -95,20 +92,14 @@ uint8_t WiFiUDP::beginMulticast(IPAddress interfaceAddr, IPAddress multicast, ui
|
||||
_ctx = 0;
|
||||
}
|
||||
|
||||
ip_addr_t ifaddr;
|
||||
ifaddr.addr = (uint32_t) interfaceAddr;
|
||||
ip_addr_t multicast_addr;
|
||||
multicast_addr.addr = (uint32_t) multicast;
|
||||
|
||||
if (igmp_joingroup(&ifaddr, &multicast_addr)!= ERR_OK) {
|
||||
if (igmp_joingroup(interfaceAddr, multicast)!= ERR_OK) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
_ctx = new UdpContext;
|
||||
_ctx->ref();
|
||||
ip_addr_t addr;
|
||||
addr.addr = INADDR_ANY;
|
||||
if (!_ctx->listen(addr, port)) {
|
||||
ip_addr_t addr = IPADDR4_INIT(INADDR_ANY);
|
||||
if (!_ctx->listen(&addr, port)) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -155,32 +146,24 @@ int WiFiUDP::beginPacket(const char *host, uint16_t port)
|
||||
|
||||
int WiFiUDP::beginPacket(IPAddress ip, uint16_t port)
|
||||
{
|
||||
ip_addr_t addr;
|
||||
addr.addr = ip;
|
||||
|
||||
if (!_ctx) {
|
||||
_ctx = new UdpContext;
|
||||
_ctx->ref();
|
||||
}
|
||||
return (_ctx->connect(addr, port)) ? 1 : 0;
|
||||
return (_ctx->connect(ip, port)) ? 1 : 0;
|
||||
}
|
||||
|
||||
int WiFiUDP::beginPacketMulticast(IPAddress multicastAddress, uint16_t port,
|
||||
IPAddress interfaceAddress, int ttl)
|
||||
{
|
||||
ip_addr_t mcastAddr;
|
||||
mcastAddr.addr = multicastAddress;
|
||||
ip_addr_t ifaceAddr;
|
||||
ifaceAddr.addr = interfaceAddress;
|
||||
|
||||
if (!_ctx) {
|
||||
_ctx = new UdpContext;
|
||||
_ctx->ref();
|
||||
}
|
||||
if (!_ctx->connect(mcastAddr, port)) {
|
||||
if (!_ctx->connect(multicastAddress, port)) {
|
||||
return 0;
|
||||
}
|
||||
_ctx->setMulticastInterface(ifaceAddr);
|
||||
_ctx->setMulticastInterface(interfaceAddress);
|
||||
_ctx->setMulticastTTL(ttl);
|
||||
return 1;
|
||||
}
|
||||
@ -248,15 +231,15 @@ void WiFiUDP::flush()
|
||||
endPacket();
|
||||
}
|
||||
|
||||
IPAddress WiFiUDP::remoteIP()
|
||||
IPAddress WiFiUDP::remoteIP() const
|
||||
{
|
||||
if (!_ctx)
|
||||
return IPAddress(0U);
|
||||
return IPNoAddress;
|
||||
|
||||
return IPAddress(_ctx->getRemoteAddress());
|
||||
return _ctx->getRemoteAddress();
|
||||
}
|
||||
|
||||
uint16_t WiFiUDP::remotePort()
|
||||
uint16_t WiFiUDP::remotePort() const
|
||||
{
|
||||
if (!_ctx)
|
||||
return 0;
|
||||
@ -264,18 +247,15 @@ uint16_t WiFiUDP::remotePort()
|
||||
return _ctx->getRemotePort();
|
||||
}
|
||||
|
||||
IPAddress WiFiUDP::destinationIP()
|
||||
IPAddress WiFiUDP::destinationIP() const
|
||||
{
|
||||
IPAddress addr;
|
||||
|
||||
if (!_ctx)
|
||||
return addr;
|
||||
return IPNoAddress;
|
||||
|
||||
addr = _ctx->getDestAddress();
|
||||
return addr;
|
||||
return _ctx->getDestAddress();
|
||||
}
|
||||
|
||||
uint16_t WiFiUDP::localPort()
|
||||
uint16_t WiFiUDP::localPort() const
|
||||
{
|
||||
if (!_ctx)
|
||||
return 0;
|
||||
|
@ -47,7 +47,7 @@ public:
|
||||
// Finish with the UDP connetion
|
||||
virtual void stop();
|
||||
// join a multicast group and listen on the given port
|
||||
uint8_t beginMulticast(IPAddress interfaceAddr, IPAddress multicast, uint16_t port);
|
||||
uint8_t beginMulticast(IPAddress interfaceAddr, IPAddress multicast, uint16_t port);
|
||||
|
||||
// Sending UDP packets
|
||||
|
||||
@ -63,9 +63,9 @@ public:
|
||||
// use WiFi.localIP() or WiFi.softAPIP() depending on the interface you need
|
||||
// ttl - multicast packet TTL (default is 1)
|
||||
// Returns 1 if successful, 0 if there was a problem with the supplied IP address or port
|
||||
virtual int beginPacketMulticast(IPAddress multicastAddress,
|
||||
virtual int beginPacketMulticast(IPAddress multicastAddress,
|
||||
uint16_t port,
|
||||
IPAddress interfaceAddress,
|
||||
IPAddress interfaceAddress,
|
||||
int ttl = 1);
|
||||
// Finish off this packet and send it
|
||||
// Returns 1 if the packet was sent successfully, 0 if there was an error
|
||||
@ -95,14 +95,14 @@ public:
|
||||
virtual void flush(); // Finish reading the current packet
|
||||
|
||||
// Return the IP address of the host who sent the current incoming packet
|
||||
virtual IPAddress remoteIP();
|
||||
virtual IPAddress remoteIP() const;
|
||||
// Return the port of the host who sent the current incoming packet
|
||||
virtual uint16_t remotePort();
|
||||
virtual uint16_t remotePort() const;
|
||||
// Return the destination address for incoming packets,
|
||||
// useful to distinguish multicast and ordinary packets
|
||||
IPAddress destinationIP();
|
||||
IPAddress destinationIP() const;
|
||||
// Return the local port for outgoing packets
|
||||
uint16_t localPort();
|
||||
uint16_t localPort() const;
|
||||
|
||||
static void stopAll();
|
||||
static void stopAllExcept(WiFiUDP * exC);
|
||||
|
@ -122,7 +122,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
int connect(ip_addr_t* addr, uint16_t port)
|
||||
int connect(CONST ip_addr_t* addr, uint16_t port)
|
||||
{
|
||||
err_t err = tcp_connect(_pcb, addr, port, &ClientContext::_s_connected);
|
||||
if (err != ERR_OK) {
|
||||
@ -145,7 +145,7 @@ public:
|
||||
return 1;
|
||||
}
|
||||
|
||||
size_t availableForWrite()
|
||||
size_t availableForWrite() const
|
||||
{
|
||||
return _pcb? tcp_sndbuf(_pcb): 0;
|
||||
}
|
||||
@ -180,13 +180,13 @@ public:
|
||||
return _timeout_ms;
|
||||
}
|
||||
|
||||
uint32_t getRemoteAddress() const
|
||||
const ip_addr_t* getRemoteAddress() const
|
||||
{
|
||||
if(!_pcb) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
return _pcb->remote_ip.addr;
|
||||
return &_pcb->remote_ip;
|
||||
}
|
||||
|
||||
uint16_t getRemotePort() const
|
||||
@ -198,13 +198,13 @@ public:
|
||||
return _pcb->remote_port;
|
||||
}
|
||||
|
||||
uint32_t getLocalAddress() const
|
||||
const ip_addr_t* getLocalAddress() const
|
||||
{
|
||||
if(!_pcb) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
return _pcb->local_ip.addr;
|
||||
return &_pcb->local_ip;
|
||||
}
|
||||
|
||||
uint16_t getLocalPort() const
|
||||
|
@ -30,9 +30,7 @@ void esp_schedule();
|
||||
#include <assert.h>
|
||||
}
|
||||
|
||||
|
||||
#define GET_IP_HDR(pb) reinterpret_cast<ip_hdr*>(((uint8_t*)((pb)->payload)) - UDP_HLEN - IP_HLEN);
|
||||
#define GET_UDP_HDR(pb) reinterpret_cast<udp_hdr*>(((uint8_t*)((pb)->payload)) - UDP_HLEN);
|
||||
#define GET_UDP_HDR(pb) (reinterpret_cast<udp_hdr*>(((uint8_t*)((pb)->payload)) - UDP_HLEN))
|
||||
|
||||
class UdpContext
|
||||
{
|
||||
@ -90,17 +88,17 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
bool connect(ip_addr_t addr, uint16_t port)
|
||||
bool connect(const ip_addr_t* addr, uint16_t port)
|
||||
{
|
||||
ip_addr_copy(_pcb->remote_ip, addr);
|
||||
_pcb->remote_ip = *addr;
|
||||
_pcb->remote_port = port;
|
||||
return true;
|
||||
}
|
||||
|
||||
bool listen(ip_addr_t addr, uint16_t port)
|
||||
bool listen(CONST ip_addr_t* addr, uint16_t port)
|
||||
{
|
||||
udp_recv(_pcb, &_s_recv, (void *) this);
|
||||
err_t err = udp_bind(_pcb, &addr, port);
|
||||
err_t err = udp_bind(_pcb, addr, port);
|
||||
return err == ERR_OK;
|
||||
}
|
||||
|
||||
@ -110,14 +108,14 @@ public:
|
||||
}
|
||||
|
||||
#if LWIP_VERSION_MAJOR == 1
|
||||
void setMulticastInterface(ip_addr_t addr)
|
||||
void setMulticastInterface(const ip_addr_t addr)
|
||||
{
|
||||
udp_set_multicast_netif_addr(_pcb, addr);
|
||||
}
|
||||
#else
|
||||
void setMulticastInterface(const ip_addr_t& addr)
|
||||
void setMulticastInterface(const ip_addr_t* addr)
|
||||
{
|
||||
udp_set_multicast_netif_addr(_pcb, &addr);
|
||||
udp_set_multicast_netif_addr(_pcb, ip_2_ip4(addr));
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -159,16 +157,12 @@ public:
|
||||
return (pos <= _rx_buf->len);
|
||||
}
|
||||
|
||||
uint32_t getRemoteAddress()
|
||||
CONST IPAddress& getRemoteAddress() CONST
|
||||
{
|
||||
if (!_rx_buf)
|
||||
return 0;
|
||||
|
||||
ip_hdr* iphdr = GET_IP_HDR(_rx_buf);
|
||||
return iphdr->src.addr;
|
||||
return _src_addr;
|
||||
}
|
||||
|
||||
uint16_t getRemotePort()
|
||||
uint16_t getRemotePort() const
|
||||
{
|
||||
if (!_rx_buf)
|
||||
return 0;
|
||||
@ -177,20 +171,15 @@ public:
|
||||
return lwip_ntohs(udphdr->src);
|
||||
}
|
||||
|
||||
uint32_t getDestAddress()
|
||||
const IPAddress& getDestAddress() const
|
||||
{
|
||||
if (!_rx_buf)
|
||||
return 0;
|
||||
|
||||
ip_hdr* iphdr = GET_IP_HDR(_rx_buf);
|
||||
return iphdr->dest.addr;
|
||||
return _dst_addr;
|
||||
}
|
||||
|
||||
uint16_t getLocalPort()
|
||||
uint16_t getLocalPort() const
|
||||
{
|
||||
if (!_pcb)
|
||||
return 0;
|
||||
|
||||
return _pcb->local_port;
|
||||
}
|
||||
|
||||
@ -242,7 +231,7 @@ public:
|
||||
return size;
|
||||
}
|
||||
|
||||
int peek()
|
||||
int peek() const
|
||||
{
|
||||
if (!_rx_buf || _rx_buf_offset == _rx_buf->len)
|
||||
return -1;
|
||||
@ -259,7 +248,6 @@ public:
|
||||
_consume(_rx_buf->len - _rx_buf_offset);
|
||||
}
|
||||
|
||||
|
||||
size_t append(const char* data, size_t size)
|
||||
{
|
||||
if (!_tx_buf_head || _tx_buf_head->tot_len < _tx_buf_offset + size)
|
||||
@ -292,7 +280,7 @@ public:
|
||||
return size;
|
||||
}
|
||||
|
||||
bool send(ip_addr_t* addr = 0, uint16_t port = 0)
|
||||
bool send(CONST ip_addr_t* addr = 0, uint16_t port = 0)
|
||||
{
|
||||
size_t data_size = _tx_buf_offset;
|
||||
pbuf* tx_copy = pbuf_alloc(PBUF_TRANSPORT, data_size, PBUF_RAM);
|
||||
@ -403,21 +391,33 @@ private:
|
||||
_rx_buf = pb;
|
||||
_rx_buf_offset = 0;
|
||||
}
|
||||
|
||||
// --> Arduino's UDP is a stream but UDP is not <--
|
||||
// When IPv6 is enabled, we store addresses from here
|
||||
// because lwIP's macro are valid only in this callback
|
||||
// (there's no easy way to safely guess whether packet
|
||||
// is from v4 or v6 when we have only access to payload)
|
||||
// Because of this stream-ed way this is inacurate when
|
||||
// user does not swallow data quickly enough (the former
|
||||
// IPv4-only way suffers from the exact same issue.
|
||||
|
||||
#if LWIP_VERSION_MAJOR == 1
|
||||
_src_addr = current_iphdr_src;
|
||||
_dst_addr = current_iphdr_dest;
|
||||
#else
|
||||
_src_addr = ip_data.current_iphdr_src;
|
||||
_dst_addr = ip_data.current_iphdr_dest;
|
||||
#endif
|
||||
|
||||
if (_on_rx) {
|
||||
_on_rx();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#if LWIP_VERSION_MAJOR == 1
|
||||
static void _s_recv(void *arg,
|
||||
udp_pcb *upcb, pbuf *p,
|
||||
ip_addr_t *addr, u16_t port)
|
||||
#else
|
||||
static void _s_recv(void *arg,
|
||||
udp_pcb *upcb, pbuf *p,
|
||||
const ip_addr_t *addr, u16_t port)
|
||||
#endif
|
||||
CONST ip_addr_t *addr, u16_t port)
|
||||
{
|
||||
reinterpret_cast<UdpContext*>(arg)->_recv(upcb, p, addr, port);
|
||||
}
|
||||
@ -435,6 +435,7 @@ private:
|
||||
#ifdef LWIP_MAYBE_XCC
|
||||
uint16_t _mcast_ttl;
|
||||
#endif
|
||||
IPAddress _src_addr, _dst_addr;
|
||||
};
|
||||
|
||||
|
||||
|
@ -192,22 +192,22 @@ bool MDNSResponder::_listen() {
|
||||
#ifdef DEBUG_ESP_MDNS_RX
|
||||
DEBUG_ESP_PORT.println("MDNS listening");
|
||||
#endif
|
||||
ip_addr_t multicast_addr;
|
||||
multicast_addr.addr = (uint32_t) MDNS_MULTICAST_ADDR;
|
||||
|
||||
if (igmp_joingroup(IP_ADDR_ANY, &multicast_addr)!= ERR_OK) {
|
||||
IPAddress mdns(MDNS_MULTICAST_ADDR);
|
||||
|
||||
if (igmp_joingroup(IP4_ADDR_ANY4, mdns)!= ERR_OK) {
|
||||
return false;
|
||||
}
|
||||
|
||||
_conn = new UdpContext;
|
||||
_conn->ref();
|
||||
|
||||
if (!_conn->listen(*IP_ADDR_ANY, MDNS_PORT)) {
|
||||
if (!_conn->listen(IP_ADDR_ANY, MDNS_PORT)) {
|
||||
return false;
|
||||
}
|
||||
_conn->setMulticastTTL(MDNS_MULTICAST_TTL);
|
||||
_conn->onRx(std::bind(&MDNSResponder::update, this));
|
||||
_conn->connect(multicast_addr, MDNS_PORT);
|
||||
_conn->connect(mdns, MDNS_PORT);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@ -332,13 +332,11 @@ int MDNSResponder::queryService(char *service, char *proto) {
|
||||
_waitingForAnswers = true;
|
||||
for (int itfn = 0; itfn < 2; itfn++) {
|
||||
struct ip_info ip_info;
|
||||
ip_addr_t ifaddr;
|
||||
|
||||
wifi_get_ip_info((!itfn) ? SOFTAP_IF : STATION_IF, &ip_info);
|
||||
if (!ip_info.ip.addr)
|
||||
continue;
|
||||
ifaddr.addr = ip_info.ip.addr;
|
||||
_conn->setMulticastInterface(ifaddr);
|
||||
_conn->setMulticastInterface(IPAddress(ip_info.ip.addr));
|
||||
|
||||
// Write the header
|
||||
_conn->flush();
|
||||
@ -464,10 +462,11 @@ IPAddress MDNSResponder::_getRequestMulticastInterface(){
|
||||
struct ip_info ip_info;
|
||||
bool match_ap = false;
|
||||
if (wifi_get_opmode() & SOFTAP_MODE) {
|
||||
struct ip_info remote_ip_info;
|
||||
remote_ip_info.ip.addr = _conn->getRemoteAddress();
|
||||
const IPAddress& remote_ip = _conn->getRemoteAddress();
|
||||
wifi_get_ip_info(SOFTAP_IF, &ip_info);
|
||||
if (ip_info.ip.addr && ip_addr_netcmp(&remote_ip_info.ip, &ip_info.ip, &ip_info.netmask))
|
||||
IPAddress infoIp(ip_info.ip);
|
||||
IPAddress infoMask(ip_info.netmask);
|
||||
if (ip_info.ip.addr && ip_addr_netcmp((const ip_addr_t*)remote_ip, (const ip_addr_t*)infoIp, ip_2_ip4((const ip_addr_t*)infoMask)))
|
||||
match_ap = true;
|
||||
}
|
||||
if (!match_ap)
|
||||
@ -1056,9 +1055,7 @@ void MDNSResponder::_replyToTypeEnumRequest(IPAddress multicastInterface) {
|
||||
_conn->append(reinterpret_cast<const char*>(localName), localNameLen); // "local"
|
||||
_conn->append(reinterpret_cast<const char*>(&terminator), 1); // terminator
|
||||
|
||||
ip_addr_t ifaddr;
|
||||
ifaddr.addr = multicastInterface;
|
||||
_conn->setMulticastInterface(ifaddr);
|
||||
_conn->setMulticastInterface(multicastInterface);
|
||||
_conn->send();
|
||||
}
|
||||
}
|
||||
@ -1263,9 +1260,7 @@ void MDNSResponder::_replyToInstanceRequest(uint8_t questionMask, uint8_t respon
|
||||
}
|
||||
}
|
||||
|
||||
ip_addr_t ifaddr;
|
||||
ifaddr.addr = multicastInterface;
|
||||
_conn->setMulticastInterface(ifaddr);
|
||||
_conn->setMulticastInterface(multicastInterface);
|
||||
_conn->send();
|
||||
}
|
||||
|
||||
|
@ -127,7 +127,7 @@ int DNSClient::getHostByName(const char* aHostname, IPAddress& aResult)
|
||||
}
|
||||
|
||||
// Check we've got a valid DNS server to use
|
||||
if (iDNSServer == INADDR_NONE)
|
||||
if (iDNSServer == IPNoAddress)
|
||||
{
|
||||
return INVALID_SERVER;
|
||||
}
|
||||
|
@ -35,7 +35,7 @@ int EthernetClient::connect(const char* host, uint16_t port) {
|
||||
}
|
||||
}
|
||||
|
||||
int EthernetClient::connect(IPAddress ip, uint16_t port) {
|
||||
int EthernetClient::connect(CONST IPAddress& ip, uint16_t port) {
|
||||
if (_sock != MAX_SOCK_NUM)
|
||||
return 0;
|
||||
|
||||
|
@ -12,7 +12,7 @@ public:
|
||||
EthernetClient(uint8_t sock);
|
||||
|
||||
uint8_t status();
|
||||
virtual int connect(IPAddress ip, uint16_t port);
|
||||
virtual int connect(CONST IPAddress& ip, uint16_t port);
|
||||
virtual int connect(const char *host, uint16_t port);
|
||||
virtual size_t write(uint8_t);
|
||||
virtual size_t write(const uint8_t *buf, size_t size);
|
||||
|
@ -94,9 +94,9 @@ public:
|
||||
virtual void flush(); // Finish reading the current packet
|
||||
|
||||
// Return the IP address of the host who sent the current incoming packet
|
||||
virtual IPAddress remoteIP() { return _remoteIP; };
|
||||
virtual IPAddress remoteIP() const { return _remoteIP; };
|
||||
// Return the port of the host who sent the current incoming packet
|
||||
virtual uint16_t remotePort() { return _remotePort; };
|
||||
virtual uint16_t remotePort() const { return _remotePort; };
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@ -75,7 +75,7 @@ uint8_t listen(SOCKET s)
|
||||
*
|
||||
* @return 1 for success else 0.
|
||||
*/
|
||||
uint8_t connect(SOCKET s, uint8_t * addr, uint16_t port)
|
||||
uint8_t connect(SOCKET s, const uint8_t * addr, uint16_t port)
|
||||
{
|
||||
if
|
||||
(
|
||||
@ -420,7 +420,7 @@ uint16_t bufferData(SOCKET s, uint16_t offset, const uint8_t* buf, uint16_t len)
|
||||
return ret;
|
||||
}
|
||||
|
||||
int startUDP(SOCKET s, uint8_t* addr, uint16_t port)
|
||||
int startUDP(SOCKET s, const uint8_t* addr, uint16_t port)
|
||||
{
|
||||
if
|
||||
(
|
||||
|
@ -6,7 +6,7 @@
|
||||
extern uint8_t socket(SOCKET s, uint8_t protocol, uint16_t port, uint8_t flag); // Opens a socket(TCP or UDP or IP_RAW mode)
|
||||
extern uint8_t socketStatus(SOCKET s);
|
||||
extern void close(SOCKET s); // Close socket
|
||||
extern uint8_t connect(SOCKET s, uint8_t * addr, uint16_t port); // Establish TCP connection (Active connection)
|
||||
extern uint8_t connect(SOCKET s, const uint8_t * addr, uint16_t port); // Establish TCP connection (Active connection)
|
||||
extern void disconnect(SOCKET s); // disconnect the connection
|
||||
extern uint8_t listen(SOCKET s); // Establish TCP connection (Passive connection)
|
||||
extern uint16_t send(SOCKET s, const uint8_t * buf, uint16_t len); // Send data (TCP)
|
||||
@ -26,7 +26,7 @@ extern uint16_t igmpsend(SOCKET s, const uint8_t * buf, uint16_t len);
|
||||
or more calls to bufferData and then finally sent with sendUDP.
|
||||
@return 1 if the datagram was successfully set up, or 0 if there was an error
|
||||
*/
|
||||
extern int startUDP(SOCKET s, uint8_t* addr, uint16_t port);
|
||||
extern int startUDP(SOCKET s, const uint8_t* addr, uint16_t port);
|
||||
/*
|
||||
@brief This function copies up to len bytes of data from buf into a UDP datagram to be
|
||||
sent later by sendUDP. Allows datagrams to be built up from a series of bufferData calls.
|
||||
|
@ -1,14 +1,24 @@
|
||||
#ifndef UTIL_H
|
||||
#define UTIL_H
|
||||
|
||||
#ifndef htons
|
||||
#define htons(x) ( ((x)<< 8 & 0xFF00) | \
|
||||
((x)>> 8 & 0x00FF) )
|
||||
#define ntohs(x) htons(x)
|
||||
#endif
|
||||
|
||||
#ifndef ntohs
|
||||
#define ntohs(x) htons(x)
|
||||
#endif
|
||||
|
||||
#ifndef htonl
|
||||
#define htonl(x) ( ((x)<<24 & 0xFF000000UL) | \
|
||||
((x)<< 8 & 0x00FF0000UL) | \
|
||||
((x)>> 8 & 0x0000FF00UL) | \
|
||||
((x)>>24 & 0x000000FFUL) )
|
||||
#endif
|
||||
|
||||
#ifndef ntohl
|
||||
#define ntohl(x) htonl(x)
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
@ -260,7 +260,7 @@ private:
|
||||
static inline uint8_t readSn(SOCKET _s, uint16_t _addr);
|
||||
static inline uint8_t writeSn(SOCKET _s, uint16_t _addr, uint8_t _data);
|
||||
static inline uint16_t readSn(SOCKET _s, uint16_t _addr, uint8_t *_buf, uint16_t len);
|
||||
static inline uint16_t writeSn(SOCKET _s, uint16_t _addr, uint8_t *_buf, uint16_t len);
|
||||
static inline uint16_t writeSn(SOCKET _s, uint16_t _addr, const uint8_t *_buf, uint16_t len);
|
||||
|
||||
static const uint16_t CH_BASE = 0x0400;
|
||||
static const uint16_t CH_SIZE = 0x0100;
|
||||
@ -286,7 +286,7 @@ private:
|
||||
return res; \
|
||||
}
|
||||
#define __SOCKET_REGISTER_N(name, address, size) \
|
||||
static uint16_t write##name(SOCKET _s, uint8_t *_buff) { \
|
||||
static uint16_t write##name(SOCKET _s, const uint8_t *_buff) { \
|
||||
return writeSn(_s, address, _buff, size); \
|
||||
} \
|
||||
static uint16_t read##name(SOCKET _s, uint8_t *_buff) { \
|
||||
@ -371,7 +371,7 @@ uint16_t W5100Class::readSn(SOCKET _s, uint16_t _addr, uint8_t *_buf, uint16_t _
|
||||
return read(CH_BASE + _s * CH_SIZE + _addr, _buf, _len);
|
||||
}
|
||||
|
||||
uint16_t W5100Class::writeSn(SOCKET _s, uint16_t _addr, uint8_t *_buf, uint16_t _len) {
|
||||
uint16_t W5100Class::writeSn(SOCKET _s, uint16_t _addr, const uint8_t *_buf, uint16_t _len) {
|
||||
return write(CH_BASE + _s * CH_SIZE + _addr, _buf, _len);
|
||||
}
|
||||
|
||||
|
183
libraries/esp8266/examples/IPv6/IPv6.ino
Normal file
183
libraries/esp8266/examples/IPv6/IPv6.ino
Normal file
@ -0,0 +1,183 @@
|
||||
|
||||
/*
|
||||
arduino IPv6 example
|
||||
released to public domain
|
||||
|
||||
output is like:
|
||||
|
||||
SDK:2.2.1(cfd48f3)/Core:2.4.2-141-g4f97603/lwIP:IPv6+STABLE-2_1_0_RC1/glue:arduino-2.4.2-30-ga53619c/BearSSL:6d1cefc
|
||||
dns0=10.43.1.254
|
||||
Try me at these addresses:
|
||||
(with 'telnet <addr> or 'nc -u <addr> 23')
|
||||
IF='st'(0) IPv6=0 local=0 hostname='ipv6test' addr= 10.43.1.244 / mask:255.255.255.0 / gw:10.43.1.254
|
||||
IF='st'(0) IPv6=1 local=1 hostname='ipv6test' addr= fe80::1afe:34ff:fed1:cec7
|
||||
IF='st'(0) IPV6=1 local=0 hostname='ipv6test' addr= 2xxx:xxxx:xxxx:xxxx:1afe:34ff:fed1:cec7
|
||||
resolving www.google.com: 216.58.205.100
|
||||
resolving ipv6.google.com: 2a00:1450:4002:808::200e
|
||||
*/
|
||||
|
||||
#include <ESP8266WiFi.h>
|
||||
#include <WiFiUdp.h>
|
||||
#include <PolledTimeout.h>
|
||||
#include <lwip/dns.h>
|
||||
|
||||
#ifndef STASSID
|
||||
#define STASSID "your-ssid"
|
||||
#define STAPSK "your-password"
|
||||
#endif
|
||||
|
||||
#define FQDN F("www.google.com") // with both IPv4 & IPv6 addresses
|
||||
#define FQDN6 F("ipv6.google.com") // does not resolve in IPv4
|
||||
#define STATUSDELAY_MS 10000
|
||||
#define TCP_PORT 23
|
||||
#define UDP_PORT 23
|
||||
|
||||
WiFiServer statusServer(TCP_PORT);
|
||||
WiFiUDP udp;
|
||||
esp8266::polledTimeout::periodic statusPeriod(STATUSDELAY_MS);
|
||||
|
||||
void fqdn(Print& out, const String& fqdn) {
|
||||
out.print(F("resolving "));
|
||||
out.print(fqdn);
|
||||
out.print(F(": "));
|
||||
IPAddress result;
|
||||
if (WiFi.hostByName(fqdn.c_str(), result)) {
|
||||
result.printTo(out);
|
||||
out.println();
|
||||
} else {
|
||||
out.println(F("timeout or not found"));
|
||||
}
|
||||
}
|
||||
|
||||
void status(Print& out) {
|
||||
out.println(F("------------------------------"));
|
||||
out.println(ESP.getFullVersion());
|
||||
|
||||
dns_setserver(DNS_MAX_SERVERS - 1, IPAddress(8, 8, 8, 8));
|
||||
|
||||
for (int i = 0; i < DNS_MAX_SERVERS; i++) {
|
||||
IPAddress dns = WiFi.dnsIP(i);
|
||||
if (dns.isSet()) {
|
||||
out.printf("dns%d: %s\n", i, dns.toString().c_str());
|
||||
}
|
||||
}
|
||||
|
||||
out.println(F("Try me at these addresses:"));
|
||||
out.println(F("(with 'telnet <addr> or 'nc -u <addr> 23')"));
|
||||
for (auto a : addrList) {
|
||||
out.printf("IF='%s' IPv6=%d local=%d hostname='%s' addr= %s",
|
||||
a->iface().c_str(),
|
||||
!a->addr().isV4(),
|
||||
a->addr().isLocal(),
|
||||
a->hostname(),
|
||||
a->addr().toString().c_str());
|
||||
|
||||
if (a->isLegacy()) {
|
||||
out.printf(" / mask:%s / gw:%s",
|
||||
a->netmask().toString().c_str(),
|
||||
a->gw().toString().c_str());
|
||||
}
|
||||
|
||||
out.println();
|
||||
}
|
||||
|
||||
// lwIP's dns client will ask for IPv4 first (by default)
|
||||
// an example is provided with a fqdn which does not resolve with IPv4
|
||||
fqdn(out, FQDN);
|
||||
fqdn(out, FQDN6);
|
||||
|
||||
out.println(F("------------------------------"));
|
||||
}
|
||||
|
||||
void setup() {
|
||||
WiFi.hostname("ipv6test");
|
||||
|
||||
Serial.begin(115200);
|
||||
Serial.println();
|
||||
Serial.println(ESP.getFullVersion());
|
||||
|
||||
WiFi.mode(WIFI_STA);
|
||||
WiFi.begin(STASSID, STAPSK);
|
||||
|
||||
status(Serial);
|
||||
|
||||
#if 0
|
||||
|
||||
// legacy loop (still valid with IPv4 only)
|
||||
|
||||
while (WiFi.status() != WL_CONNECTED) {
|
||||
Serial.print('.');
|
||||
delay(500);
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
// Use this loop instead to wait for an IPv6 routable address
|
||||
|
||||
// addr->isLocal() (meaning "not routable on internet") is true with:
|
||||
// - IPV4 DHCP autoconfigured address 169.254.x.x
|
||||
// (false for any other including 192.168./16 and 10./24 since NAT may be in the equation)
|
||||
// - IPV6 link-local addresses (fe80::/64)
|
||||
|
||||
for (bool configured = false; !configured;) {
|
||||
for (auto addr : addrList)
|
||||
if ((configured = !addr->isLocal()
|
||||
// && addr->isV6() // uncomment when IPv6 is mandatory
|
||||
// && addr->ifnumber() == STATION_IF
|
||||
)) {
|
||||
break;
|
||||
}
|
||||
Serial.print('.');
|
||||
delay(500);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
Serial.println(F("connected: "));
|
||||
|
||||
statusServer.begin();
|
||||
udp.begin(UDP_PORT);
|
||||
|
||||
Serial.print(F("TCP server on port "));
|
||||
Serial.print(TCP_PORT);
|
||||
Serial.print(F(" - UDP server on port "));
|
||||
Serial.println(UDP_PORT);
|
||||
|
||||
statusPeriod.reset();
|
||||
}
|
||||
|
||||
unsigned long statusTimeMs = 0;
|
||||
|
||||
void loop() {
|
||||
|
||||
if (statusServer.hasClient()) {
|
||||
WiFiClient cli = statusServer.available();
|
||||
status(cli);
|
||||
}
|
||||
|
||||
// if there's data available, read a packet
|
||||
int packetSize = udp.parsePacket();
|
||||
if (packetSize) {
|
||||
Serial.print(F("udp received "));
|
||||
Serial.print(packetSize);
|
||||
Serial.print(F(" bytes from "));
|
||||
udp.remoteIP().printTo(Serial);
|
||||
Serial.print(F(" :"));
|
||||
Serial.println(udp.remotePort());
|
||||
int c;
|
||||
while ((c = udp.read()) >= 0) {
|
||||
Serial.write(c);
|
||||
}
|
||||
|
||||
// send a reply, to the IP address and port that sent us the packet we received
|
||||
udp.beginPacket(udp.remoteIP(), udp.remotePort());
|
||||
status(udp);
|
||||
udp.endPacket();
|
||||
}
|
||||
|
||||
|
||||
if (statusPeriod) {
|
||||
status(Serial);
|
||||
}
|
||||
|
||||
}
|
@ -951,19 +951,27 @@ macros = {
|
||||
( '.menu.ip.lm2f', 'v2 Lower Memory' ),
|
||||
( '.menu.ip.lm2f.build.lwip_include', 'lwip2/include' ),
|
||||
( '.menu.ip.lm2f.build.lwip_lib', '-llwip2-536-feat' ),
|
||||
( '.menu.ip.lm2f.build.lwip_flags', '-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1' ),
|
||||
( '.menu.ip.lm2f.build.lwip_flags', '-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=0' ),
|
||||
( '.menu.ip.hb2f', 'v2 Higher Bandwidth' ),
|
||||
( '.menu.ip.hb2f.build.lwip_include', 'lwip2/include' ),
|
||||
( '.menu.ip.hb2f.build.lwip_lib', '-llwip2-1460-feat' ),
|
||||
( '.menu.ip.hb2f.build.lwip_flags', '-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1' ),
|
||||
( '.menu.ip.hb2f.build.lwip_flags', '-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1 -DLWIP_IPV6=0' ),
|
||||
( '.menu.ip.lm2n', 'v2 Lower Memory (no features)' ),
|
||||
( '.menu.ip.lm2n.build.lwip_include', 'lwip2/include' ),
|
||||
( '.menu.ip.lm2n.build.lwip_lib', '-llwip2-536' ),
|
||||
( '.menu.ip.lm2n.build.lwip_flags', '-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=0' ),
|
||||
( '.menu.ip.lm2n.build.lwip_flags', '-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=0 -DLWIP_IPV6=0' ),
|
||||
( '.menu.ip.hb2n', 'v2 Higher Bandwidth (no features)' ),
|
||||
( '.menu.ip.hb2n.build.lwip_include', 'lwip2/include' ),
|
||||
( '.menu.ip.hb2n.build.lwip_lib', '-llwip2-1460' ),
|
||||
( '.menu.ip.hb2n.build.lwip_flags', '-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=0' ),
|
||||
( '.menu.ip.hb2n.build.lwip_flags', '-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=0 -DLWIP_IPV6=0' ),
|
||||
( '.menu.ip.lm6f', 'v2 IPv6 Lower Memory' ),
|
||||
( '.menu.ip.lm6f.build.lwip_include', 'lwip2/include' ),
|
||||
( '.menu.ip.lm6f.build.lwip_lib', '-llwip6-536-feat' ),
|
||||
( '.menu.ip.lm6f.build.lwip_flags', '-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=1' ),
|
||||
( '.menu.ip.hb6f', 'v2 IPv6 Higher Bandwidth' ),
|
||||
( '.menu.ip.hb6f.build.lwip_include', 'lwip2/include' ),
|
||||
( '.menu.ip.hb6f.build.lwip_lib', '-llwip6-1460-feat' ),
|
||||
( '.menu.ip.hb6f.build.lwip_flags', '-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1 -DLWIP_IPV6=1' ),
|
||||
]),
|
||||
|
||||
'lwip': collections.OrderedDict([
|
||||
|
@ -140,28 +140,40 @@ if "PIO_FRAMEWORK_ARDUINO_LWIP_HIGHER_BANDWIDTH" in flatten_cppdefines:
|
||||
CPPPATH=[join(FRAMEWORK_DIR, "tools", "sdk", "lwip", "include")],
|
||||
LIBS=["lwip_gcc"]
|
||||
)
|
||||
elif "PIO_FRAMEWORK_ARDUINO_LWIP2_IPV6_LOW_MEMORY" in flatten_cppdefines:
|
||||
env.Append(
|
||||
CPPDEFINES=[("TCP_MSS", 536), ("LWIP_FEATURES", 1), ("LWIP_IPV6", 1)],
|
||||
CPPPATH=[join(FRAMEWORK_DIR, "tools", "sdk", "lwip2", "include")],
|
||||
LIBS=["lwip6-536-feat"]
|
||||
)
|
||||
elif "PIO_FRAMEWORK_ARDUINO_LWIP2_IPV6_HIGHER_BANDWIDTH" in flatten_cppdefines:
|
||||
env.Append(
|
||||
CPPDEFINES=[("TCP_MSS", 1460), ("LWIP_FEATURES", 1), ("LWIP_IPV6", 1)],
|
||||
CPPPATH=[join(FRAMEWORK_DIR, "tools", "sdk", "lwip2", "include")],
|
||||
LIBS=["lwip6-1460-feat"]
|
||||
)
|
||||
elif "PIO_FRAMEWORK_ARDUINO_LWIP2_HIGHER_BANDWIDTH" in flatten_cppdefines:
|
||||
env.Append(
|
||||
CPPDEFINES=[("TCP_MSS", 1460), ("LWIP_FEATURES", 1)],
|
||||
CPPDEFINES=[("TCP_MSS", 1460), ("LWIP_FEATURES", 1), ("LWIP_IPV6", 0)],
|
||||
CPPPATH=[join(FRAMEWORK_DIR, "tools", "sdk", "lwip2", "include")],
|
||||
LIBS=["lwip2-1460-feat"]
|
||||
)
|
||||
elif "PIO_FRAMEWORK_ARDUINO_LWIP2_LOW_MEMORY_LOW_FLASH" in flatten_cppdefines:
|
||||
env.Append(
|
||||
CPPDEFINES=[("TCP_MSS", 536), ("LWIP_FEATURES", 0)],
|
||||
CPPDEFINES=[("TCP_MSS", 536), ("LWIP_FEATURES", 0), ("LWIP_IPV6", 0)],
|
||||
CPPPATH=[join(FRAMEWORK_DIR, "tools", "sdk", "lwip2", "include")],
|
||||
LIBS=["lwip2-536"]
|
||||
)
|
||||
elif "PIO_FRAMEWORK_ARDUINO_LWIP2_HIGHER_BANDWIDTH_LOW_FLASH" in flatten_cppdefines:
|
||||
env.Append(
|
||||
CPPDEFINES=[("TCP_MSS", 1460), ("LWIP_FEATURES", 0)],
|
||||
CPPDEFINES=[("TCP_MSS", 1460), ("LWIP_FEATURES", 0), ("LWIP_IPV6", 0)],
|
||||
CPPPATH=[join(FRAMEWORK_DIR, "tools", "sdk", "lwip2", "include")],
|
||||
LIBS=["lwip2-1460"]
|
||||
)
|
||||
# PIO_FRAMEWORK_ARDUINO_LWIP2_LOW_MEMORY (default)
|
||||
else:
|
||||
env.Append(
|
||||
CPPDEFINES=[("TCP_MSS", 536), ("LWIP_FEATURES", 1)],
|
||||
CPPDEFINES=[("TCP_MSS", 536), ("LWIP_FEATURES", 1), ("LWIP_IPV6", 0)],
|
||||
CPPPATH=[join(FRAMEWORK_DIR, "tools", "sdk", "lwip2", "include")],
|
||||
LIBS=["lwip2-536-feat"]
|
||||
)
|
||||
|
@ -432,21 +432,21 @@ sint8 espconn_get_keepalive(struct espconn *espconn, uint8 level, void *optarg);
|
||||
* TypedefName : dns_found_callback
|
||||
* Description : Callback which is invoked when a hostname is found.
|
||||
* Parameters : name -- pointer to the name that was looked up.
|
||||
* ipaddr -- pointer to an ip_addr_t containing the IP address of
|
||||
* ipaddr -- pointer to an ipv4_addr_t containing the IP address of
|
||||
* the hostname, or NULL if the name could not be found (or on any
|
||||
* other error).
|
||||
* callback_arg -- a user-specified callback argument passed to
|
||||
* dns_gethostbyname
|
||||
*******************************************************************************/
|
||||
|
||||
typedef void (*dns_found_callback)(const char *name, ip_addr_t *ipaddr, void *callback_arg);
|
||||
typedef void (*dns_found_callback)(const char *name, ipv4_addr_t *ipaddr, void *callback_arg);
|
||||
|
||||
/******************************************************************************
|
||||
* FunctionName : espconn_gethostbyname
|
||||
* Description : Resolve a hostname (string) into an IP address.
|
||||
* Parameters : pespconn -- espconn to resolve a hostname
|
||||
* hostname -- the hostname that is to be queried
|
||||
* addr -- pointer to a ip_addr_t where to store the address if
|
||||
* addr -- pointer to a ipv4_addr_t where to store the address if
|
||||
* it is already cached in the dns_table (only valid if ESPCONN_OK
|
||||
* is returned!)
|
||||
* found -- a callback function to be called on success, failure
|
||||
@ -459,7 +459,7 @@ typedef void (*dns_found_callback)(const char *name, ip_addr_t *ipaddr, void *ca
|
||||
* - ESPCONN_ARG: dns client not initialized or invalid hostname
|
||||
*******************************************************************************/
|
||||
|
||||
err_t espconn_gethostbyname(struct espconn *pespconn, const char *hostname, ip_addr_t *addr, dns_found_callback found);
|
||||
err_t espconn_gethostbyname(struct espconn *pespconn, const char *hostname, ipv4_addr_t *addr, dns_found_callback found);
|
||||
|
||||
/******************************************************************************
|
||||
* FunctionName : espconn_abort
|
||||
@ -623,7 +623,7 @@ sint8 espconn_secure_delete(struct espconn *espconn);
|
||||
* multicast_ip -- multicast ip given by user
|
||||
* Returns : none
|
||||
*******************************************************************************/
|
||||
sint8 espconn_igmp_join(ip_addr_t *host_ip, ip_addr_t *multicast_ip);
|
||||
sint8 espconn_igmp_join(ipv4_addr_t *host_ip, ipv4_addr_t *multicast_ip);
|
||||
|
||||
/******************************************************************************
|
||||
* FunctionName : espconn_igmp_leave
|
||||
@ -632,7 +632,7 @@ sint8 espconn_igmp_join(ip_addr_t *host_ip, ip_addr_t *multicast_ip);
|
||||
* multicast_ip -- multicast ip given by user
|
||||
* Returns : none
|
||||
*******************************************************************************/
|
||||
sint8 espconn_igmp_leave(ip_addr_t *host_ip, ip_addr_t *multicast_ip);
|
||||
sint8 espconn_igmp_leave(ipv4_addr_t *host_ip, ipv4_addr_t *multicast_ip);
|
||||
|
||||
/******************************************************************************
|
||||
* FunctionName : espconn_recv_hold
|
||||
@ -738,7 +738,7 @@ void espconn_mdns_enable(void);
|
||||
* dnsserver -- IP address of the DNS server to set
|
||||
* Returns : none
|
||||
*******************************************************************************/
|
||||
void espconn_dns_setserver(uint8 numdns, ip_addr_t *dnsserver);
|
||||
void espconn_dns_setserver(uint8 numdns, ipv4_addr_t *dnsserver);
|
||||
/******************************************************************************
|
||||
* FunctionName : espconn_dns_getserver
|
||||
* Description : get dns server.
|
||||
@ -746,7 +746,7 @@ void espconn_dns_setserver(uint8 numdns, ip_addr_t *dnsserver);
|
||||
* be < DNS_MAX_SERVERS = 2
|
||||
* Returns : dnsserver -- IP address of the DNS server to set
|
||||
*******************************************************************************/
|
||||
ip_addr_t espconn_dns_getserver(uint8 numdns);
|
||||
ipv4_addr_t espconn_dns_getserver(uint8 numdns);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
@ -31,16 +31,16 @@
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
struct ip_addr {
|
||||
struct ipv4_addr {
|
||||
uint32 addr;
|
||||
};
|
||||
|
||||
typedef struct ip_addr ip_addr_t;
|
||||
typedef struct ipv4_addr ipv4_addr_t;
|
||||
|
||||
struct ip_info {
|
||||
struct ip_addr ip;
|
||||
struct ip_addr netmask;
|
||||
struct ip_addr gw;
|
||||
struct ipv4_addr ip;
|
||||
struct ipv4_addr netmask;
|
||||
struct ipv4_addr gw;
|
||||
};
|
||||
|
||||
/**
|
||||
@ -51,7 +51,7 @@ struct ip_info {
|
||||
* @arg mask network identifier mask
|
||||
* @return !0 if the network identifiers of both address match
|
||||
*/
|
||||
#define ip_addr_netcmp(addr1, addr2, mask) (((addr1)->addr & \
|
||||
#define ipv4_addr_netcmp(addr1, addr2, mask) (((addr1)->addr & \
|
||||
(mask)->addr) == \
|
||||
((addr2)->addr & \
|
||||
(mask)->addr))
|
||||
@ -64,15 +64,15 @@ struct ip_info {
|
||||
((uint32)((b) & 0xff) << 8) | \
|
||||
(uint32)((a) & 0xff)
|
||||
|
||||
#define ip4_addr1(ipaddr) (((uint8*)(ipaddr))[0])
|
||||
#define ip4_addr2(ipaddr) (((uint8*)(ipaddr))[1])
|
||||
#define ip4_addr3(ipaddr) (((uint8*)(ipaddr))[2])
|
||||
#define ip4_addr4(ipaddr) (((uint8*)(ipaddr))[3])
|
||||
#define ipv4_addr1(ipaddr) (((uint8*)(ipaddr))[0])
|
||||
#define ipv4_addr2(ipaddr) (((uint8*)(ipaddr))[1])
|
||||
#define ipv4_addr3(ipaddr) (((uint8*)(ipaddr))[2])
|
||||
#define ipv4_addr4(ipaddr) (((uint8*)(ipaddr))[3])
|
||||
|
||||
#define ip4_addr1_16(ipaddr) ((uint16)ip4_addr1(ipaddr))
|
||||
#define ip4_addr2_16(ipaddr) ((uint16)ip4_addr2(ipaddr))
|
||||
#define ip4_addr3_16(ipaddr) ((uint16)ip4_addr3(ipaddr))
|
||||
#define ip4_addr4_16(ipaddr) ((uint16)ip4_addr4(ipaddr))
|
||||
#define ipv4_addr1_16(ipaddr) ((uint16)ipv4_addr1(ipaddr))
|
||||
#define ipv4_addr2_16(ipaddr) ((uint16)ipv4_addr2(ipaddr))
|
||||
#define ipv4_addr3_16(ipaddr) ((uint16)ipv4_addr3(ipaddr))
|
||||
#define ipv4_addr4_16(ipaddr) ((uint16)ipv4_addr4(ipaddr))
|
||||
|
||||
|
||||
/** 255.255.255.255 */
|
||||
@ -81,10 +81,10 @@ struct ip_info {
|
||||
#define IPADDR_ANY ((uint32)0x00000000UL)
|
||||
uint32 ipaddr_addr(const char *cp);
|
||||
|
||||
#define IP2STR(ipaddr) ip4_addr1_16(ipaddr), \
|
||||
ip4_addr2_16(ipaddr), \
|
||||
ip4_addr3_16(ipaddr), \
|
||||
ip4_addr4_16(ipaddr)
|
||||
#define IP2STR(ipaddr) ipv4_addr1_16(ipaddr), \
|
||||
ipv4_addr2_16(ipaddr), \
|
||||
ipv4_addr3_16(ipaddr), \
|
||||
ipv4_addr4_16(ipaddr)
|
||||
|
||||
#define IPSTR "%d.%d.%d.%d"
|
||||
|
||||
|
@ -1,342 +0,0 @@
|
||||
/*
|
||||
* ESPRESSIF MIT License
|
||||
*
|
||||
* Copyright (c) 2015 <ESPRESSIF SYSTEMS (SHANGHAI) PTE LTD>
|
||||
*
|
||||
* Permission is hereby granted for use on ESPRESSIF SYSTEMS ESP8266 only, in which case,
|
||||
* it is free of charge, to any person obtaining a copy of this software and associated
|
||||
* documentation files (the "Software"), to deal in the Software without restriction, including
|
||||
* without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
* and/or sell copies of the Software, and to permit persons to whom the Software is furnished
|
||||
* to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all copies or
|
||||
* substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
*/
|
||||
#ifndef __LWIP_API_MESH_H__
|
||||
#define __LWIP_API_MESH_H__
|
||||
|
||||
#include "ip_addr.h"
|
||||
#include "user_interface.h"
|
||||
#include "espconn.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define ESP_MESH_GROUP_ID_LEN (6)
|
||||
|
||||
typedef void (* espconn_mesh_callback)();
|
||||
typedef void (* espconn_mesh_scan_callback)(void *arg, int8_t status);
|
||||
|
||||
enum mesh_type {
|
||||
MESH_CLOSE = 0,
|
||||
MESH_LOCAL,
|
||||
MESH_ONLINE,
|
||||
MESH_NONE = 0xFF
|
||||
};
|
||||
/** \defgroup Mesh_APIs Mesh APIs
|
||||
* @brief Mesh APIs
|
||||
*
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
/** @addtogroup Mesh_APIs
|
||||
* @{
|
||||
*/
|
||||
|
||||
enum mesh_status {
|
||||
MESH_DISABLE = 0,
|
||||
MESH_WIFI_CONN,
|
||||
MESH_NET_CONN,
|
||||
MESH_LOCAL_AVAIL,
|
||||
MESH_ONLINE_AVAIL
|
||||
};
|
||||
|
||||
enum mesh_node_type {
|
||||
MESH_NODE_PARENT = 0,
|
||||
MESH_NODE_CHILD,
|
||||
MESH_NODE_ALL
|
||||
};
|
||||
|
||||
struct mesh_scan_para_type {
|
||||
espconn_mesh_scan_callback usr_scan_cb; // scan done callback
|
||||
uint8_t grp_id[ESP_MESH_GROUP_ID_LEN]; // group id
|
||||
bool grp_set; // group set
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @brief Check whether the IP address is mesh local IP address or not.
|
||||
*
|
||||
* @attention 1. The range of mesh local IP address is 2.255.255.* ~ max_hop.255.255.*.
|
||||
* @attention 2. IP pointer should not be NULL. If the IP pointer is NULL, it will return false.
|
||||
*
|
||||
* @param struct ip_addr *ip : IP address
|
||||
*
|
||||
* @return true : the IP address is mesh local IP address
|
||||
* @return false : the IP address is not mesh local IP address
|
||||
*/
|
||||
bool espconn_mesh_local_addr(struct ip_addr *ip);
|
||||
|
||||
/**
|
||||
* @brief Get the information of router used by mesh network.
|
||||
*
|
||||
* @attention 1. The function should be called after mesh_enable_done
|
||||
*
|
||||
* @param struct station_config *router: router inforamtion
|
||||
*
|
||||
* @return true : succeed
|
||||
* @return false : fail
|
||||
*/
|
||||
bool espconn_mesh_get_router(struct station_config *router);
|
||||
|
||||
/**
|
||||
* @brief Set the information of router used by mesh network.
|
||||
*
|
||||
* @attention The function must be called before espconn_mesh_enable.
|
||||
*
|
||||
* @param struct station_config *router: router information.
|
||||
* user should initialize the ssid and password.
|
||||
*
|
||||
* @return true : succeed
|
||||
* @return false : fail
|
||||
*/
|
||||
bool espconn_mesh_set_router(struct station_config *router);
|
||||
|
||||
/**
|
||||
* @brief Set server setup by user.
|
||||
*
|
||||
* @attention If users wants to use themself server, they use the function.
|
||||
* but the function must be called before espconn_mesh_enable.
|
||||
* at the same time, users need to implement the server.
|
||||
*
|
||||
* @param struct ip_addr *ip : ip address of server.
|
||||
* @param uint16_t port : port used by server.
|
||||
*
|
||||
* @return true : succeed
|
||||
* @return false : fail
|
||||
*/
|
||||
bool espconn_mesh_server_init(struct ip_addr *ip, uint16_t port);
|
||||
|
||||
/**
|
||||
* @brief Get the information of mesh node.
|
||||
*
|
||||
* @param enum mesh_node_type typ : mesh node type.
|
||||
* @param uint8_t **info : the information will be saved in *info.
|
||||
* @param uint8_t *count : the node count in *info.
|
||||
*
|
||||
* @return true : succeed
|
||||
* @return false : fail
|
||||
*/
|
||||
bool espconn_mesh_get_node_info(enum mesh_node_type type,
|
||||
uint8_t **info, uint8_t *count);
|
||||
|
||||
/**
|
||||
* @brief Set WiFi cryption algrithm and password for mesh node.
|
||||
*
|
||||
* @attention The function must be called before espconn_mesh_enable.
|
||||
*
|
||||
* @param AUTH_MODE mode : cryption algrithm (WPA/WAP2/WPA_WPA2).
|
||||
* @param uint8_t *passwd : password of WiFi.
|
||||
* @param uint8_t passwd_len : length of password (8 <= passwd_len <= 64).
|
||||
*
|
||||
* @return true : succeed
|
||||
* @return false : fail
|
||||
*/
|
||||
bool espconn_mesh_encrypt_init(AUTH_MODE mode, uint8_t *passwd, uint8_t passwd_len);
|
||||
/**
|
||||
* @brief Set prefix of SSID for mesh node.
|
||||
*
|
||||
* @attention The function must be called before espconn_mesh_enable.
|
||||
*
|
||||
* @param uint8_t *prefix : prefix of SSID.
|
||||
* @param uint8_t prefix_len : length of prefix (0 < passwd_len <= 22).
|
||||
*
|
||||
* @return true : succeed
|
||||
* @return false : fail
|
||||
*/
|
||||
bool espconn_mesh_set_ssid_prefix(uint8_t *prefix, uint8_t prefix_len);
|
||||
|
||||
/**
|
||||
* @brief Set max hop for mesh network.
|
||||
*
|
||||
* @attention The function must be called before espconn_mesh_enable.
|
||||
*
|
||||
* @param uint8_t max_hops : max hop of mesh network (1 <= max_hops < 10, 4 is recommended).
|
||||
*
|
||||
* @return true : succeed
|
||||
* @return false : fail
|
||||
*/
|
||||
bool espconn_mesh_set_max_hops(uint8_t max_hops);
|
||||
|
||||
/**
|
||||
* @brief Set group ID of mesh node.
|
||||
*
|
||||
* @attention The function must be called before espconn_mesh_enable.
|
||||
*
|
||||
* @param uint8_t *grp_id : group ID.
|
||||
* @param uint16_t gid_len: length of group ID, now gid_len = 6.
|
||||
*
|
||||
* @return true : succeed
|
||||
* @return false : fail
|
||||
*/
|
||||
bool espconn_mesh_group_id_init(uint8_t *grp_id, uint16_t gid_len);
|
||||
|
||||
/**
|
||||
* @brief Set the curent device type.
|
||||
*
|
||||
* @param uint8_t dev_type : device type of mesh node
|
||||
*
|
||||
* @return true : succeed
|
||||
* @return false : fail
|
||||
*/
|
||||
bool espconn_mesh_set_dev_type(uint8_t dev_type);
|
||||
/**
|
||||
* @brief Get the curent device type.
|
||||
*
|
||||
* @param none
|
||||
*
|
||||
* @return device type
|
||||
*/
|
||||
uint8_t espconn_mesh_get_dev_type();
|
||||
|
||||
/**
|
||||
* @brief Try to establish mesh connection to server.
|
||||
*
|
||||
* @attention If espconn_mesh_connect fail, returns non-0 value, there is no connection, so it
|
||||
* won't enter any espconn callback.
|
||||
*
|
||||
* @param struct espconn *usr_esp : the network connection structure, the usr_esp to
|
||||
* listen to the connection
|
||||
*
|
||||
* @return 0 : succeed
|
||||
* @return Non-0 : error code
|
||||
* - ESPCONN_RTE - Routing Problem
|
||||
* - ESPCONN_MEM - Out of memory
|
||||
* - ESPCONN_ISCONN - Already connected
|
||||
* - ESPCONN_ARG - Illegal argument, can't find the corresponding connection
|
||||
* according to structure espconn
|
||||
*/
|
||||
int8_t espconn_mesh_connect(struct espconn *usr_esp);
|
||||
|
||||
/**
|
||||
* @brief Disconnect a mesh connection.
|
||||
*
|
||||
* @attention Do not call this API in any espconn callback. If needed, please use system
|
||||
* task to trigger espconn_mesh_disconnect.
|
||||
*
|
||||
* @param struct espconn *usr_esp : the network connection structure
|
||||
*
|
||||
* @return 0 : succeed
|
||||
* @return Non-0 : error code
|
||||
* - ESPCONN_ARG - illegal argument, can't find the corresponding TCP connection
|
||||
* according to structure espconn
|
||||
*/
|
||||
|
||||
int8_t espconn_mesh_disconnect(struct espconn *usr_esp);
|
||||
|
||||
/**
|
||||
* @brief Get current mesh status.
|
||||
*
|
||||
* @param null
|
||||
*
|
||||
* @return the current mesh status, please refer to enum mesh_status.
|
||||
*/
|
||||
int8_t espconn_mesh_get_status();
|
||||
|
||||
/**
|
||||
* @brief Send data through mesh network.
|
||||
*
|
||||
* @attention Please call espconn_mesh_sent after espconn_sent_callback of the pre-packet.
|
||||
*
|
||||
* @param struct espconn *usr_esp : the network connection structure
|
||||
* @param uint8 *pdata : pointer of data
|
||||
* @param uint16 len : data length
|
||||
*
|
||||
* @return 0 : succeed
|
||||
* @return Non-0 : error code
|
||||
* - ESPCONN_MEM - out of memory
|
||||
* - ESPCONN_ARG - illegal argument, can't find the corresponding network transmission
|
||||
* according to structure espconn
|
||||
* - ESPCONN_MAXNUM - buffer of sending data is full
|
||||
* - ESPCONN_IF - send UDP data fail
|
||||
*/
|
||||
int8_t espconn_mesh_sent(struct espconn *usr_esp, uint8 *pdata, uint16 len);
|
||||
|
||||
/**
|
||||
* @brief Get max hop of mesh network.
|
||||
*
|
||||
* @param null.
|
||||
*
|
||||
* @return the current max hop of mesh
|
||||
*/
|
||||
uint8_t espconn_mesh_get_max_hops();
|
||||
|
||||
/**
|
||||
* @brief To enable mesh network.
|
||||
*
|
||||
* @attention 1. the function should be called in user_init.
|
||||
* @attention 2. if mesh node can not scan the mesh AP, it will be isolate node without trigger enable_cb.
|
||||
* user can use espconn_mesh_get_status to get current status of node.
|
||||
* @attention 3. if user try to enable online mesh, but node fails to establish mesh connection
|
||||
* the node will work with local mesh.
|
||||
*
|
||||
* @param espconn_mesh_callback enable_cb : callback function of mesh-enable
|
||||
* @param enum mesh_type type : type of mesh, local or online.
|
||||
*
|
||||
* @return null
|
||||
*/
|
||||
void espconn_mesh_enable(espconn_mesh_callback enable_cb, enum mesh_type type);
|
||||
|
||||
/**
|
||||
* @brief To disable mesh network.
|
||||
*
|
||||
* @attention When mesh network is disabed, the system will trigger disable_cb.
|
||||
*
|
||||
* @param espconn_mesh_callback disable_cb : callback function of mesh-disable
|
||||
* @param enum mesh_type type : type of mesh, local or online.
|
||||
*
|
||||
* @return null
|
||||
*/
|
||||
void espconn_mesh_disable(espconn_mesh_callback disable_cb);
|
||||
|
||||
/**
|
||||
* @brief To print version of mesh.
|
||||
*
|
||||
* @param null
|
||||
*
|
||||
* @return null
|
||||
*/
|
||||
void espconn_mesh_print_ver();
|
||||
|
||||
/**
|
||||
* @brief To get AP around node.
|
||||
*
|
||||
* @attention User can get normal AP or mesh AP using the function.
|
||||
* If user plans to get normal AP, he/she needs to clear grp_set flag in para.
|
||||
* If user plans to get mesh AP, he/she needs to set grp_set and grp_id;
|
||||
*
|
||||
* @param struct mesh_scan_para_type *para : callback function of mesh-disable
|
||||
*
|
||||
* @return null
|
||||
*/
|
||||
void espconn_mesh_scan(struct mesh_scan_para_type *para);
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
@ -2,10 +2,14 @@
|
||||
#define __SNTP_H__
|
||||
|
||||
#include "os_type.h"
|
||||
#ifdef LWIP_OPEN_SRC
|
||||
|
||||
#include "lwip/init.h"
|
||||
#include "lwip/ip_addr.h"
|
||||
|
||||
#if LWIP_VERSION_MAJOR == 1
|
||||
#define ipv4_addr_t ip_addr_t
|
||||
#else
|
||||
#include "ip_addr.h"
|
||||
typedef struct ip4_addr ipv4_addr_t;
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
@ -43,15 +47,15 @@ void sntp_stop(void);
|
||||
* @param numdns the index of the NTP server to set must be < SNTP_MAX_SERVERS
|
||||
* @param dnsserver IP address of the NTP server to set
|
||||
*/
|
||||
void sntp_setserver(unsigned char idx, ip_addr_t *addr);
|
||||
void sntp_setserver(unsigned char idx, ipv4_addr_t *addr);
|
||||
/**
|
||||
* Obtain one of the currently configured by IP address (or DHCP) NTP servers
|
||||
*
|
||||
* @param numdns the index of the NTP server
|
||||
* @return IP address of the indexed NTP server or "ip_addr_any" if the NTP
|
||||
* @return IP address of the indexed NTP server or "ipv4_addr_any" if the NTP
|
||||
* server has not been configured by address (or at all).
|
||||
*/
|
||||
ip_addr_t sntp_getserver(unsigned char idx);
|
||||
ipv4_addr_t sntp_getserver(unsigned char idx);
|
||||
/**
|
||||
* Initialize one of the NTP servers by name
|
||||
*
|
||||
|
@ -27,9 +27,18 @@
|
||||
|
||||
#include "os_type.h"
|
||||
#ifdef LWIP_OPEN_SRC
|
||||
|
||||
#include "lwip/init.h"
|
||||
#if LWIP_VERSION_MAJOR == 1
|
||||
#define ipv4_addr ip_addr
|
||||
#endif
|
||||
#include "lwip/ip_addr.h"
|
||||
#if LWIP_VERSION_MAJOR != 1
|
||||
typedef struct ip4_addr ipv4_addr_t;
|
||||
#endif
|
||||
|
||||
#else
|
||||
#include "ip_addr.h"
|
||||
#error LWIP_OPEN_SRC must be defined
|
||||
#endif
|
||||
|
||||
#include "queue.h"
|
||||
@ -356,13 +365,13 @@ struct station_info {
|
||||
STAILQ_ENTRY(station_info) next;
|
||||
|
||||
uint8 bssid[6];
|
||||
struct ip_addr ip;
|
||||
struct ipv4_addr ip;
|
||||
};
|
||||
|
||||
struct dhcps_lease {
|
||||
bool enable;
|
||||
struct ip_addr start_ip;
|
||||
struct ip_addr end_ip;
|
||||
struct ipv4_addr start_ip;
|
||||
struct ipv4_addr end_ip;
|
||||
};
|
||||
|
||||
enum dhcps_offer_option{
|
||||
@ -519,9 +528,9 @@ typedef struct {
|
||||
} Event_StaMode_AuthMode_Change_t;
|
||||
|
||||
typedef struct {
|
||||
struct ip_addr ip;
|
||||
struct ip_addr mask;
|
||||
struct ip_addr gw;
|
||||
struct ipv4_addr ip;
|
||||
struct ipv4_addr mask;
|
||||
struct ipv4_addr gw;
|
||||
} Event_StaMode_Got_IP_t;
|
||||
|
||||
typedef struct {
|
||||
@ -531,7 +540,7 @@ typedef struct {
|
||||
|
||||
typedef struct {
|
||||
uint8 mac[6];
|
||||
struct ip_addr ip;
|
||||
struct ipv4_addr ip;
|
||||
uint8 aid;
|
||||
} Event_SoftAPMode_Distribute_Sta_IP_t;
|
||||
|
||||
|
@ -114,6 +114,8 @@ SECTIONS
|
||||
*liblwip2-1460.a:(.literal .text .literal.* .text.*)
|
||||
*liblwip2-536-feat.a:(.literal .text .literal.* .text.*)
|
||||
*liblwip2-1460-feat.a:(.literal .text .literal.* .text.*)
|
||||
*liblwip6-536-feat.a:(.literal .text .literal.* .text.*)
|
||||
*liblwip6-1460-feat.a:(.literal .text .literal.* .text.*)
|
||||
*libbearssl.a:(.literal .text .literal.* .text.*)
|
||||
*libaxtls.a:(.literal .text .literal.* .text.*)
|
||||
*libat.a:(.literal.* .text.*)
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
tools/sdk/lib/liblwip6-1460-feat.a
Normal file
BIN
tools/sdk/lib/liblwip6-1460-feat.a
Normal file
Binary file not shown.
BIN
tools/sdk/lib/liblwip6-536-feat.a
Normal file
BIN
tools/sdk/lib/liblwip6-536-feat.a
Normal file
Binary file not shown.
@ -1 +1 @@
|
||||
Subproject commit 80224f017dd83d0d88dd82ccd5d896313c90a234
|
||||
Subproject commit fab2c912f3e419ac0b218664f6ee9820e699f973
|
@ -90,14 +90,14 @@ typedef uint32_t sys_prot_t; // not really used
|
||||
ip4_addr3_16(ipaddr), \
|
||||
ip4_addr4_16(ipaddr)
|
||||
|
||||
// ip_addr / ip_info: do not exist in lwip2 (only in lwip1.4)
|
||||
struct ip_addr {
|
||||
// ipv4_addr / ip_info: do not exist in lwip2 (only in lwip1.4)
|
||||
struct ipv4_addr {
|
||||
uint32_t addr;
|
||||
};
|
||||
struct ip_info {
|
||||
struct ip_addr ip;
|
||||
struct ip_addr netmask;
|
||||
struct ip_addr gw;
|
||||
struct ipv4_addr ip;
|
||||
struct ipv4_addr netmask;
|
||||
struct ipv4_addr gw;
|
||||
};
|
||||
|
||||
///////////////////////////////
|
||||
|
@ -24,8 +24,8 @@
|
||||
|
||||
#if ULWIPDEBUG
|
||||
//#define LWIP_DBG_TYPES_ON (LWIP_DBG_ON|LWIP_DBG_TRACE|LWIP_DBG_STATE|LWIP_DBG_FRESH|LWIP_DBG_HALT)
|
||||
//#define LWIP_DBG_TYPES_ON (LWIP_DBG_ON|LWIP_DBG_TRACE|LWIP_DBG_STATE|LWIP_DBG_FRESH)
|
||||
#define LWIP_DBG_TYPES_ON (LWIP_DBG_ON)
|
||||
#define LWIP_DBG_TYPES_ON (LWIP_DBG_ON|LWIP_DBG_TRACE|LWIP_DBG_STATE|LWIP_DBG_FRESH)
|
||||
//#define LWIP_DBG_TYPES_ON (LWIP_DBG_ON)
|
||||
#endif
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -1,5 +1,5 @@
|
||||
// generated by makefiles/make-lwip2-hash
|
||||
#ifndef LWIP_HASH_H
|
||||
#define LWIP_HASH_H
|
||||
#define LWIP_HASH_STR "STABLE-2_1_0_RELEASE/glue:arduino-2.4.2-13-g80224f0"
|
||||
#define LWIP_HASH_STR "STABLE-2_1_2_RELEASE/glue:1.0"
|
||||
#endif // LWIP_HASH_H
|
||||
|
@ -83,14 +83,14 @@ extern "C" {
|
||||
#endif
|
||||
|
||||
#if BYTE_ORDER == BIG_ENDIAN
|
||||
#define lwip_htons(x) (x)
|
||||
#define lwip_ntohs(x) (x)
|
||||
#define lwip_htonl(x) (x)
|
||||
#define lwip_ntohl(x) (x)
|
||||
#define PP_HTONS(x) (x)
|
||||
#define PP_NTOHS(x) (x)
|
||||
#define PP_HTONL(x) (x)
|
||||
#define PP_NTOHL(x) (x)
|
||||
#define lwip_htons(x) ((u16_t)(x))
|
||||
#define lwip_ntohs(x) ((u16_t)(x))
|
||||
#define lwip_htonl(x) ((u32_t)(x))
|
||||
#define lwip_ntohl(x) ((u32_t)(x))
|
||||
#define PP_HTONS(x) ((u16_t)(x))
|
||||
#define PP_NTOHS(x) ((u16_t)(x))
|
||||
#define PP_HTONL(x) ((u32_t)(x))
|
||||
#define PP_NTOHL(x) ((u32_t)(x))
|
||||
#else /* BYTE_ORDER != BIG_ENDIAN */
|
||||
#ifndef lwip_htons
|
||||
u16_t lwip_htons(u16_t x);
|
||||
|
@ -49,14 +49,6 @@ extern "C" {
|
||||
* @{
|
||||
*/
|
||||
|
||||
/** Define LWIP_ERR_T in cc.h if you want to use
|
||||
* a different type for your platform (must be signed). */
|
||||
#ifdef LWIP_ERR_T
|
||||
typedef LWIP_ERR_T err_t;
|
||||
#else /* LWIP_ERR_T */
|
||||
typedef s8_t err_t;
|
||||
#endif /* LWIP_ERR_T*/
|
||||
|
||||
/** Definitions for error constants. */
|
||||
typedef enum {
|
||||
/** No error, everything OK. */
|
||||
@ -96,6 +88,14 @@ typedef enum {
|
||||
ERR_ARG = -16
|
||||
} err_enum_t;
|
||||
|
||||
/** Define LWIP_ERR_T in cc.h if you want to use
|
||||
* a different type for your platform (must be signed). */
|
||||
#ifdef LWIP_ERR_T
|
||||
typedef LWIP_ERR_T err_t;
|
||||
#else /* LWIP_ERR_T */
|
||||
typedef s8_t err_t;
|
||||
#endif /* LWIP_ERR_T*/
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
@ -54,7 +54,7 @@ extern "C" {
|
||||
/** x.X.x: Minor version of the stack */
|
||||
#define LWIP_VERSION_MINOR 1
|
||||
/** x.x.X: Revision of the stack */
|
||||
#define LWIP_VERSION_REVISION 0
|
||||
#define LWIP_VERSION_REVISION 2
|
||||
/** For release candidates, this is set to 1..254
|
||||
* For official releases, this is set to 255 (LWIP_RC_RELEASE)
|
||||
* For development versions (Git), this is set to 0 (LWIP_RC_DEVELOPMENT) */
|
||||
|
@ -2378,7 +2378,7 @@
|
||||
* LWIP_IPV6==1: Enable IPv6
|
||||
*/
|
||||
#if !defined LWIP_IPV6 || defined __DOXYGEN__
|
||||
#define LWIP_IPV6 0
|
||||
#error LWIP_IPV6 must be defined
|
||||
#endif
|
||||
|
||||
/**
|
||||
@ -3531,7 +3531,7 @@
|
||||
*/
|
||||
|
||||
#ifndef LWIP_FEATURES
|
||||
#error LWIP_FEATURES is not defined
|
||||
#error LWIP_FEATURES must be defined
|
||||
#endif
|
||||
|
||||
/*
|
||||
|
Loading…
x
Reference in New Issue
Block a user