mirror of
https://github.com/arendst/Tasmota.git
synced 2025-07-27 04:36:31 +00:00
Fixed IPv6 support in safeboot (#21233)
This commit is contained in:
parent
bf47a1e51c
commit
c4431eb6fe
@ -14,6 +14,9 @@ All notable changes to this project will be documented in this file.
|
|||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
- HASPmota `align` attribute and expand PNG cache
|
||||||
|
- LVGL restore `lv_palette` functions
|
||||||
|
- IPv6 support in safeboot
|
||||||
|
|
||||||
### Removed
|
### Removed
|
||||||
|
|
||||||
@ -58,8 +61,6 @@ All notable changes to this project will be documented in this file.
|
|||||||
- NeoPool hydrolysis unit for Hidrolife, Bionet and Generic device (#21098)
|
- NeoPool hydrolysis unit for Hidrolife, Bionet and Generic device (#21098)
|
||||||
- M5Core2 LoRa868 module receive exception
|
- M5Core2 LoRa868 module receive exception
|
||||||
- Fade out on CCT bulb with `SO92 1` (#21159)
|
- Fade out on CCT bulb with `SO92 1` (#21159)
|
||||||
- HASPmota `align` attribute and expand PNG cache
|
|
||||||
- LVGL restore `lv_palette` functions
|
|
||||||
|
|
||||||
### Removed
|
### Removed
|
||||||
- Unused `#define MQTT_DATA_STRING` support
|
- Unused `#define MQTT_DATA_STRING` support
|
||||||
|
@ -135,8 +135,6 @@ struct WIFI {
|
|||||||
bool wifi_test_AP_TIMEOUT = false;
|
bool wifi_test_AP_TIMEOUT = false;
|
||||||
bool wifi_Test_Restart = false;
|
bool wifi_Test_Restart = false;
|
||||||
bool wifi_Test_Save_SSID2 = false;
|
bool wifi_Test_Save_SSID2 = false;
|
||||||
// IPv6 support, not guarded with #if LWIP_IPV6 to avoid bloating code with ifdefs
|
|
||||||
bool ipv6_local_link_called = false; // did we already enable IPv6 Local-Link address, needs to be redone at each reconnect
|
|
||||||
} Wifi;
|
} Wifi;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
@ -208,7 +208,7 @@ void CmndWifiTest(void)
|
|||||||
AddLog(LOG_LEVEL_INFO, PSTR(D_LOG_WIFI D_CONNECTING_TO_AP " %s " D_AS " %s ..."),
|
AddLog(LOG_LEVEL_INFO, PSTR(D_LOG_WIFI D_CONNECTING_TO_AP " %s " D_AS " %s ..."),
|
||||||
ssid_test, TasmotaGlobal.hostname);
|
ssid_test, TasmotaGlobal.hostname);
|
||||||
|
|
||||||
WiFi.begin(ssid_test,pswd_test);
|
WiFiHelper::begin(ssid_test,pswd_test);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
ResponseCmndChar(D_JSON_BUSY);
|
ResponseCmndChar(D_JSON_BUSY);
|
||||||
|
@ -250,12 +250,12 @@ void WifiBegin(uint8_t flag, uint8_t channel) {
|
|||||||
|
|
||||||
char stemp[40] = { 0 };
|
char stemp[40] = { 0 };
|
||||||
if (channel) {
|
if (channel) {
|
||||||
WiFi.begin(SettingsText(SET_STASSID1 + Settings->sta_active), SettingsText(SET_STAPWD1 + Settings->sta_active), channel, Wifi.bssid);
|
WiFiHelper::begin(SettingsText(SET_STASSID1 + Settings->sta_active), SettingsText(SET_STAPWD1 + Settings->sta_active), channel, Wifi.bssid);
|
||||||
// Add connected BSSID and channel for multi-AP installations
|
// Add connected BSSID and channel for multi-AP installations
|
||||||
char hex_char[18];
|
char hex_char[18];
|
||||||
snprintf_P(stemp, sizeof(stemp), PSTR(" Channel %d BSSId %s"), channel, ToHex_P((unsigned char*)Wifi.bssid, 6, hex_char, sizeof(hex_char), ':'));
|
snprintf_P(stemp, sizeof(stemp), PSTR(" Channel %d BSSId %s"), channel, ToHex_P((unsigned char*)Wifi.bssid, 6, hex_char, sizeof(hex_char), ':'));
|
||||||
} else {
|
} else {
|
||||||
WiFi.begin(SettingsText(SET_STASSID1 + Settings->sta_active), SettingsText(SET_STAPWD1 + Settings->sta_active));
|
WiFiHelper::begin(SettingsText(SET_STASSID1 + Settings->sta_active), SettingsText(SET_STAPWD1 + Settings->sta_active));
|
||||||
}
|
}
|
||||||
delay(500);
|
delay(500);
|
||||||
AddLog(LOG_LEVEL_INFO, PSTR(D_LOG_WIFI D_CONNECTING_TO_AP "%d %s%s " D_IN_MODE " %s " D_AS " %s..."),
|
AddLog(LOG_LEVEL_INFO, PSTR(D_LOG_WIFI D_CONNECTING_TO_AP "%d %s%s " D_IN_MODE " %s " D_AS " %s..."),
|
||||||
@ -818,18 +818,6 @@ void WifiCheckIp(void) {
|
|||||||
AddLog(LOG_LEVEL_DEBUG_MORE, PSTR(D_LOG_WIFI D_CHECKING_CONNECTION));
|
AddLog(LOG_LEVEL_DEBUG_MORE, PSTR(D_LOG_WIFI D_CHECKING_CONNECTION));
|
||||||
Wifi.counter = WIFI_CHECK_SEC;
|
Wifi.counter = WIFI_CHECK_SEC;
|
||||||
|
|
||||||
#ifdef USE_IPV6
|
|
||||||
if (WL_CONNECTED == WiFi.status()) {
|
|
||||||
#ifdef ESP32
|
|
||||||
if (!Wifi.ipv6_local_link_called) {
|
|
||||||
WiFi.enableIPv6(true); // TODO
|
|
||||||
Wifi.ipv6_local_link_called = true;
|
|
||||||
// AddLog(LOG_LEVEL_DEBUG, PSTR("WIF: calling enableIPV6"));
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
#endif // USE_IPV6
|
|
||||||
|
|
||||||
if ((WL_CONNECTED == WiFi.status()) && WifiHasIP()) {
|
if ((WL_CONNECTED == WiFi.status()) && WifiHasIP()) {
|
||||||
WifiSetState(1);
|
WifiSetState(1);
|
||||||
Wifi.counter = WIFI_CHECK_SEC;
|
Wifi.counter = WIFI_CHECK_SEC;
|
||||||
@ -1091,7 +1079,7 @@ void WifiConnect(void)
|
|||||||
{
|
{
|
||||||
if (!Settings->flag4.network_wifi) { return; }
|
if (!Settings->flag4.network_wifi) { return; }
|
||||||
|
|
||||||
#if defined(ESP32) && !defined(FIRMWARE_MINIMAL)
|
#ifdef ESP32
|
||||||
static bool wifi_event_registered = false;
|
static bool wifi_event_registered = false;
|
||||||
if (!wifi_event_registered) {
|
if (!wifi_event_registered) {
|
||||||
WiFi.onEvent(WifiEvents); // register event listener only once
|
WiFi.onEvent(WifiEvents); // register event listener only once
|
||||||
@ -1494,27 +1482,6 @@ void WifiEvents(arduino_event_t *event) {
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ARDUINO_EVENT_WIFI_STA_CONNECTED:
|
|
||||||
// workaround for the race condition in LWIP, see https://github.com/espressif/arduino-esp32/pull/9016#discussion_r1451774885
|
|
||||||
{
|
|
||||||
uint32_t i = 5; // try 5 times only
|
|
||||||
while (esp_netif_create_ip6_linklocal(get_esp_interface_netif(ESP_IF_WIFI_STA)) != ESP_OK) {
|
|
||||||
delay(1);
|
|
||||||
if (i-- == 0) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// WiFi.enableIPv6();
|
|
||||||
// AddLog(LOG_LEVEL_DEBUG, PSTR("WIF: Received ARDUINO_EVENT_WIFI_STA_CONNECTED"));
|
|
||||||
Wifi.ipv6_local_link_called = false; // not sure if this is needed, make sure link-local is restored at each reconnect
|
|
||||||
break;
|
|
||||||
case ARDUINO_EVENT_WIFI_STA_DISCONNECTED:
|
|
||||||
case ARDUINO_EVENT_WIFI_STA_AUTHMODE_CHANGE:
|
|
||||||
Wifi.ipv6_local_link_called = false;
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -1941,7 +1941,7 @@ void HandleWifiConfiguration(void) {
|
|||||||
AddLog(LOG_LEVEL_INFO, PSTR(D_LOG_WIFI D_CONNECTING_TO_AP " %s " D_AS " %s ..."),
|
AddLog(LOG_LEVEL_INFO, PSTR(D_LOG_WIFI D_CONNECTING_TO_AP " %s " D_AS " %s ..."),
|
||||||
SettingsText(SET_STASSID1), TasmotaGlobal.hostname);
|
SettingsText(SET_STASSID1), TasmotaGlobal.hostname);
|
||||||
|
|
||||||
WiFi.begin(SettingsText(SET_STASSID1), SettingsText(SET_STAPWD1));
|
WiFiHelper::begin(SettingsText(SET_STASSID1), SettingsText(SET_STAPWD1));
|
||||||
|
|
||||||
WebRestart(2);
|
WebRestart(2);
|
||||||
} else {
|
} else {
|
||||||
|
@ -377,7 +377,7 @@ void MESHstartNode(int32_t _channel, uint8_t _role){ //we need a running broker
|
|||||||
#ifdef ESP8266 // for now only ESP8266, might be added for the ESP32 later
|
#ifdef ESP8266 // for now only ESP8266, might be added for the ESP32 later
|
||||||
MESH.channel = _channel;
|
MESH.channel = _channel;
|
||||||
WiFi.mode(WIFI_STA);
|
WiFi.mode(WIFI_STA);
|
||||||
WiFi.begin("", "", MESH.channel, nullptr, false); //fake connection attempt to set channel
|
WiFiHelper::begin("", "", MESH.channel, nullptr, false); //fake connection attempt to set channel
|
||||||
wifi_promiscuous_enable(1);
|
wifi_promiscuous_enable(1);
|
||||||
wifi_set_channel(MESH.channel);
|
wifi_set_channel(MESH.channel);
|
||||||
wifi_promiscuous_enable(0);
|
wifi_promiscuous_enable(0);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user