mirror of
https://github.com/HASwitchPlate/openHASP.git
synced 2025-07-27 13:16:45 +00:00
Merge ethernet_esp32 and esthernet_spi.cpp
This commit is contained in:
parent
2af1f4800e
commit
0f95052dc3
@ -234,14 +234,13 @@ static WiFiSpiClass WiFi;
|
|||||||
|
|
||||||
#if HASP_USE_ETHERNET > 0
|
#if HASP_USE_ETHERNET > 0
|
||||||
#if defined(ARDUINO_ARCH_ESP32)
|
#if defined(ARDUINO_ARCH_ESP32)
|
||||||
|
#include "sys/net/hasp_ethernet_esp32.h"
|
||||||
#if HASP_USE_SPI_ETHERNET > 0
|
#if HASP_USE_SPI_ETHERNET > 0
|
||||||
#include <ETHSPI.h>
|
#include <ETHSPI.h>
|
||||||
#include "sys/net/hasp_ethernet_spi.h"
|
|
||||||
#warning Using ESP32 Ethernet SPI W5500
|
#warning Using ESP32 Ethernet SPI W5500
|
||||||
|
#define HASP_ETHERNET ETHSPI
|
||||||
|
|
||||||
#else
|
#else
|
||||||
#include <ETH.h>
|
|
||||||
|
|
||||||
#define ETH_ADDR 0
|
#define ETH_ADDR 0
|
||||||
#define ETH_POWER_PIN -1
|
#define ETH_POWER_PIN -1
|
||||||
#define ETH_MDC_PIN 23
|
#define ETH_MDC_PIN 23
|
||||||
@ -249,10 +248,11 @@ static WiFiSpiClass WiFi;
|
|||||||
#define NRST 5
|
#define NRST 5
|
||||||
#define ETH_TYPE ETH_PHY_LAN8720
|
#define ETH_TYPE ETH_PHY_LAN8720
|
||||||
#define ETH_CLKMODE ETH_CLOCK_GPIO17_OUT
|
#define ETH_CLKMODE ETH_CLOCK_GPIO17_OUT
|
||||||
|
#include <ETH.h>
|
||||||
#include "sys/net/hasp_ethernet_esp32.h"
|
|
||||||
#warning Using ESP32 Ethernet LAN8720
|
#warning Using ESP32 Ethernet LAN8720
|
||||||
|
#define HASP_ETHERNET ETH
|
||||||
#endif // HASP_USE_SPI_ETHERNET
|
#endif // HASP_USE_SPI_ETHERNET
|
||||||
|
|
||||||
#else
|
#else
|
||||||
#if USE_BUILTIN_ETHERNET > 0
|
#if USE_BUILTIN_ETHERNET > 0
|
||||||
#include <LwIP.h>
|
#include <LwIP.h>
|
||||||
|
@ -1320,7 +1320,7 @@ static hasp_attribute_type_t special_attribute_src(lv_obj_t* obj, const char* pa
|
|||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
#if defined(ARDUINO) && defined(ARDUINO_ARCH_ESP32)
|
#if defined(ARDUINO) && defined(ARDUINO_ARCH_ESP32) && 1
|
||||||
HTTPClient http;
|
HTTPClient http;
|
||||||
http.begin(payload);
|
http.begin(payload);
|
||||||
|
|
||||||
|
@ -1040,9 +1040,7 @@ void dispatch_reboot(bool saveConfig)
|
|||||||
#if HASP_USE_CONFIG > 0
|
#if HASP_USE_CONFIG > 0
|
||||||
debugStop();
|
debugStop();
|
||||||
#endif
|
#endif
|
||||||
#if HASP_USE_WIFI > 0
|
networkStop();
|
||||||
wifiStop();
|
|
||||||
#endif
|
|
||||||
LOG_VERBOSE(TAG_MSGR, F("-------------------------------------"));
|
LOG_VERBOSE(TAG_MSGR, F("-------------------------------------"));
|
||||||
LOG_TRACE(TAG_MSGR, F(D_DISPATCH_REBOOT));
|
LOG_TRACE(TAG_MSGR, F(D_DISPATCH_REBOOT));
|
||||||
|
|
||||||
|
@ -192,6 +192,7 @@ enum {
|
|||||||
TAG_MQTT_RCV = 67,
|
TAG_MQTT_RCV = 67,
|
||||||
TAG_FTP = 68,
|
TAG_FTP = 68,
|
||||||
TAG_TIME = 69,
|
TAG_TIME = 69,
|
||||||
|
TAG_NETW = 70,
|
||||||
|
|
||||||
TAG_LVGL = 90,
|
TAG_LVGL = 90,
|
||||||
TAG_LVFS = 91,
|
TAG_LVFS = 91,
|
||||||
|
@ -8,39 +8,46 @@
|
|||||||
#include "hal/hasp_hal.h"
|
#include "hal/hasp_hal.h"
|
||||||
#include "dev/device.h"
|
#include "dev/device.h"
|
||||||
|
|
||||||
#if HASP_USE_ETHERNET > 0 && defined(ARDUINO_ARCH_ESP32) && HASP_USE_SPI_ETHERNET == 0
|
#if HASP_USE_ETHERNET > 0 && defined(ARDUINO_ARCH_ESP32) && defined(HASP_ETHERNET)
|
||||||
|
|
||||||
|
bool eth_connected = false;
|
||||||
IPAddress ip;
|
IPAddress ip;
|
||||||
|
|
||||||
|
void ethernet_get_ipaddress(char* buffer, size_t len)
|
||||||
|
{
|
||||||
|
IPAddress ip = HASP_ETHERNET.localIP();
|
||||||
|
snprintf_P(buffer, len, PSTR("%d.%d.%d.%d"), ip[0], ip[1], ip[2], ip[3]);
|
||||||
|
}
|
||||||
|
|
||||||
void EthernetEvent(WiFiEvent_t event)
|
void EthernetEvent(WiFiEvent_t event)
|
||||||
{
|
{
|
||||||
switch(event) {
|
switch(event) {
|
||||||
case SYSTEM_EVENT_ETH_START:
|
case ARDUINO_EVENT_ETH_START:
|
||||||
LOG_TRACE(TAG_ETH, F(D_SERVICE_STARTED));
|
LOG_TRACE(TAG_ETH, F(D_SERVICE_STARTED));
|
||||||
// set eth hostname here
|
// set eth hostname here
|
||||||
ETH.setHostname(haspDevice.get_hostname());
|
HASP_ETHERNET.setHostname(haspDevice.get_hostname());
|
||||||
break;
|
break;
|
||||||
case SYSTEM_EVENT_ETH_CONNECTED:
|
case ARDUINO_EVENT_ETH_CONNECTED:
|
||||||
LOG_TRACE(TAG_ETH, F(D_SERVICE_CONNECTED));
|
LOG_TRACE(TAG_ETH, F(D_SERVICE_CONNECTED));
|
||||||
eth_connected = true;
|
eth_connected = true;
|
||||||
break;
|
break;
|
||||||
case SYSTEM_EVENT_ETH_GOT_IP:
|
case ARDUINO_EVENT_ETH_GOT_IP:
|
||||||
LOG_TRACE(TAG_ETH, F(D_INFO_MAC_ADDRESS " %s"), ETH.macAddress().c_str());
|
LOG_TRACE(TAG_ETH, F(D_INFO_MAC_ADDRESS " %s"), HASP_ETHERNET.macAddress().c_str());
|
||||||
ip = ETH.localIP();
|
ip = HASP_ETHERNET.localIP();
|
||||||
LOG_TRACE(TAG_ETH, F("IPv4: %d.%d.%d.%d"), ip[0], ip[1], ip[2], ip[3]);
|
LOG_TRACE(TAG_ETH, F("IPv4: %d.%d.%d.%d"), ip[0], ip[1], ip[2], ip[3]);
|
||||||
if(ETH.fullDuplex()) {
|
if(HASP_ETHERNET.fullDuplex()) {
|
||||||
LOG_TRACE(TAG_ETH, F(D_INFO_FULL_DUPLEX));
|
LOG_TRACE(TAG_ETH, F(D_INFO_FULL_DUPLEX));
|
||||||
}
|
}
|
||||||
LOG_TRACE(TAG_ETH, F(D_INFO_LINK_SPEED " %d Mbps"), ETH.linkSpeed());
|
LOG_TRACE(TAG_ETH, F(D_INFO_LINK_SPEED " %d Mbps"), HASP_ETHERNET.linkSpeed());
|
||||||
eth_connected = true;
|
eth_connected = true;
|
||||||
networkStart(); // Start network services
|
networkStart(); // Start network services
|
||||||
break;
|
break;
|
||||||
case SYSTEM_EVENT_ETH_DISCONNECTED:
|
case ARDUINO_EVENT_ETH_DISCONNECTED:
|
||||||
LOG_TRACE(TAG_ETH, F(D_SERVICE_DISCONNECTED));
|
LOG_TRACE(TAG_ETH, F(D_SERVICE_DISCONNECTED));
|
||||||
eth_connected = false;
|
eth_connected = false;
|
||||||
networkStop(); // Stop network services
|
networkStop(); // Stop network services
|
||||||
break;
|
break;
|
||||||
case SYSTEM_EVENT_ETH_STOP:
|
case ARDUINO_EVENT_ETH_STOP:
|
||||||
LOG_WARNING(TAG_ETH, F(D_SERVICE_STOPPED));
|
LOG_WARNING(TAG_ETH, F(D_SERVICE_STOPPED));
|
||||||
eth_connected = false;
|
eth_connected = false;
|
||||||
break;
|
break;
|
||||||
@ -51,8 +58,22 @@ void EthernetEvent(WiFiEvent_t event)
|
|||||||
|
|
||||||
void ethernetSetup()
|
void ethernetSetup()
|
||||||
{
|
{
|
||||||
|
#if HASP_USE_WIFI == 0
|
||||||
|
// Need to make sure we get the Ethernet Events
|
||||||
|
WiFi.begin();
|
||||||
|
WiFi.mode(WIFI_OFF);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
bool started = false;
|
||||||
WiFi.onEvent(EthernetEvent);
|
WiFi.onEvent(EthernetEvent);
|
||||||
ETH.begin(ETH_ADDR, ETH_POWER_PIN, ETH_MDC_PIN, ETH_MDIO_PIN, ETH_TYPE, ETH_CLKMODE);
|
#if HASP_USE_SPI_ETHERNET > 0
|
||||||
|
started = HASP_ETHERNET.begin(ETHSPI_MOSI_GPIO, ETHSPI_MISO_GPIO, ETHSPI_SCLK_GPIO, ETHSPI_CS_GPIO, ETHSPI_INT_GPIO,
|
||||||
|
ETHSPI_HOST);
|
||||||
|
#else
|
||||||
|
started = HASP_ETHERNET.begin(ETH_ADDR, ETH_POWER_PIN, ETH_MDC_PIN, ETH_MDIO_PIN, ETH_TYPE, ETH_CLKMODE);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if(started) LOG_TRACE(TAG_ETH, F("ETHSPI Started "));
|
||||||
}
|
}
|
||||||
|
|
||||||
IRAM_ATTR void ethernetLoop(void)
|
IRAM_ATTR void ethernetLoop(void)
|
||||||
@ -67,8 +88,8 @@ bool ethernetEvery5Seconds()
|
|||||||
void ethernet_get_statusupdate(char* buffer, size_t len)
|
void ethernet_get_statusupdate(char* buffer, size_t len)
|
||||||
{
|
{
|
||||||
snprintf_P(buffer, len, PSTR("\"eth\":\"%s\",\"link\":\"%d Mbps\",\"ip\":\"%s\",\"mac\":\"%s\","),
|
snprintf_P(buffer, len, PSTR("\"eth\":\"%s\",\"link\":\"%d Mbps\",\"ip\":\"%s\",\"mac\":\"%s\","),
|
||||||
eth_connected ? F("on") : F("off"), ETH.linkSpeed(), ETH.localIP().toString().c_str(),
|
eth_connected ? F("on") : F("off"), HASP_ETHERNET.linkSpeed(),
|
||||||
ETH.macAddress().c_str());
|
HASP_ETHERNET.localIP().toString().c_str(), HASP_ETHERNET.macAddress().c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
void ethernet_get_info(JsonDocument& doc)
|
void ethernet_get_info(JsonDocument& doc)
|
||||||
@ -79,17 +100,17 @@ void ethernet_get_info(JsonDocument& doc)
|
|||||||
|
|
||||||
JsonObject info = doc.createNestedObject(F(D_INFO_ETHERNET));
|
JsonObject info = doc.createNestedObject(F(D_INFO_ETHERNET));
|
||||||
|
|
||||||
buffer = ETH.linkSpeed();
|
buffer = HASP_ETHERNET.linkSpeed();
|
||||||
buffer += F(" Mbps");
|
buffer += F(" Mbps");
|
||||||
if(ETH.fullDuplex()) {
|
if(HASP_ETHERNET.fullDuplex()) {
|
||||||
buffer += F(" " D_INFO_FULL_DUPLEX);
|
buffer += F(" " D_INFO_FULL_DUPLEX);
|
||||||
}
|
}
|
||||||
|
|
||||||
info[F(D_INFO_LINK_SPEED)] = buffer;
|
info[F(D_INFO_LINK_SPEED)] = buffer;
|
||||||
info[F(D_INFO_IP_ADDRESS)] = ETH.localIP().toString();
|
info[F(D_INFO_IP_ADDRESS)] = HASP_ETHERNET.localIP().toString();
|
||||||
info[F(D_INFO_GATEWAY)] = ETH.gatewayIP().toString();
|
info[F(D_INFO_GATEWAY)] = HASP_ETHERNET.gatewayIP().toString();
|
||||||
info[F(D_INFO_DNS_SERVER)] = ETH.dnsIP().toString();
|
info[F(D_INFO_DNS_SERVER)] = HASP_ETHERNET.dnsIP().toString();
|
||||||
info[F(D_INFO_MAC_ADDRESS)] = ETH.macAddress();
|
info[F(D_INFO_MAC_ADDRESS)] = HASP_ETHERNET.macAddress();
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
@ -6,14 +6,13 @@
|
|||||||
|
|
||||||
#include "ArduinoJson.h"
|
#include "ArduinoJson.h"
|
||||||
|
|
||||||
static bool eth_connected = false;
|
|
||||||
|
|
||||||
void ethernetSetup();
|
void ethernetSetup();
|
||||||
IRAM_ATTR void ethernetLoop(void);
|
IRAM_ATTR void ethernetLoop(void);
|
||||||
|
|
||||||
bool ethernetEverySecond();
|
bool ethernetEverySecond();
|
||||||
bool ethernetEvery5Seconds();
|
bool ethernetEvery5Seconds();
|
||||||
void ethernet_get_statusupdate(char* buffer, size_t len);
|
void ethernet_get_statusupdate(char* buffer, size_t len);
|
||||||
|
void ethernet_get_ipaddress(char* buffer, size_t len);
|
||||||
|
|
||||||
void ethernet_get_info(JsonDocument& doc);
|
void ethernet_get_info(JsonDocument& doc);
|
||||||
|
|
||||||
|
@ -1,103 +0,0 @@
|
|||||||
/* MIT License - Copyright (c) 2022 Ben Suffolk, ben@vanilla.net
|
|
||||||
For full license information read the LICENSE file in the project folder */
|
|
||||||
|
|
||||||
|
|
||||||
#include "hasp_conf.h"
|
|
||||||
#include "hasp_debug.h"
|
|
||||||
#include "hasp_network.h"
|
|
||||||
|
|
||||||
#include "hal/hasp_hal.h"
|
|
||||||
#include "dev/device.h"
|
|
||||||
|
|
||||||
#if HASP_USE_ETHERNET > 0 && defined(ARDUINO_ARCH_ESP32) && HASP_USE_SPI_ETHERNET > 0
|
|
||||||
|
|
||||||
static bool eth_connected = false;
|
|
||||||
|
|
||||||
void EthernetEvent(WiFiEvent_t event)
|
|
||||||
{
|
|
||||||
IPAddress ip;
|
|
||||||
switch(event) {
|
|
||||||
case ARDUINO_EVENT_ETH_START:
|
|
||||||
LOG_TRACE(TAG_ETH, F(D_SERVICE_STARTED));
|
|
||||||
// set eth hostname here
|
|
||||||
ETHSPI.setHostname(haspDevice.get_hostname());
|
|
||||||
break;
|
|
||||||
case ARDUINO_EVENT_ETH_CONNECTED:
|
|
||||||
LOG_TRACE(TAG_ETH, F(D_SERVICE_CONNECTED));
|
|
||||||
eth_connected = true;
|
|
||||||
break;
|
|
||||||
case ARDUINO_EVENT_ETH_GOT_IP:
|
|
||||||
LOG_TRACE(TAG_ETH, F(D_INFO_MAC_ADDRESS " %s"), ETHSPI.macAddress().c_str());
|
|
||||||
ip = ETHSPI.localIP();
|
|
||||||
LOG_TRACE(TAG_ETH, F("IPv4: %d.%d.%d.%d"), ip[0], ip[1], ip[2], ip[3]);
|
|
||||||
if(ETHSPI.fullDuplex()) {
|
|
||||||
LOG_TRACE(TAG_ETH, F(D_INFO_FULL_DUPLEX));
|
|
||||||
}
|
|
||||||
LOG_TRACE(TAG_ETH, F(D_INFO_LINK_SPEED " %d Mbps"), ETHSPI.linkSpeed());
|
|
||||||
eth_connected = true;
|
|
||||||
networkStart(); // Start network services
|
|
||||||
break;
|
|
||||||
case ARDUINO_EVENT_ETH_DISCONNECTED:
|
|
||||||
LOG_TRACE(TAG_ETH, F(D_SERVICE_DISCONNECTED));
|
|
||||||
eth_connected = false;
|
|
||||||
networkStop(); // Stop network services
|
|
||||||
break;
|
|
||||||
case ARDUINO_EVENT_ETH_STOP:
|
|
||||||
LOG_WARNING(TAG_ETH, F(D_SERVICE_STOPPED));
|
|
||||||
eth_connected = false;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void ethernetSetup()
|
|
||||||
{
|
|
||||||
#if HASP_USE_WIFI == 0
|
|
||||||
// Need to make sure we get the Ethernet Events
|
|
||||||
WiFi.begin();
|
|
||||||
WiFi.mode(WIFI_OFF);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
WiFi.onEvent(EthernetEvent);
|
|
||||||
ETHSPI.begin();
|
|
||||||
}
|
|
||||||
|
|
||||||
IRAM_ATTR void ethernetLoop(void)
|
|
||||||
{}
|
|
||||||
|
|
||||||
bool ethernetEvery5Seconds()
|
|
||||||
{
|
|
||||||
return eth_connected;
|
|
||||||
}
|
|
||||||
|
|
||||||
void ethernet_get_statusupdate(char* buffer, size_t len)
|
|
||||||
{
|
|
||||||
snprintf_P(buffer, len, PSTR("\"eth\":\"%s\",\"link\":\"%d Mbps\",\"ip\":\"%s\",\"mac\":\"%s\","),
|
|
||||||
eth_connected ? F("on") : F("off"), ETHSPI.linkSpeed(), ETHSPI.localIP().toString().c_str(),
|
|
||||||
ETHSPI.macAddress().c_str());
|
|
||||||
}
|
|
||||||
|
|
||||||
void ethernet_get_info(JsonDocument& doc)
|
|
||||||
{
|
|
||||||
char size_buf[32];
|
|
||||||
String buffer((char*)0);
|
|
||||||
buffer.reserve(64);
|
|
||||||
|
|
||||||
JsonObject info = doc.createNestedObject(F(D_INFO_ETHERNET));
|
|
||||||
|
|
||||||
buffer = ETHSPI.linkSpeed();
|
|
||||||
buffer += F(" Mbps");
|
|
||||||
if(ETHSPI.fullDuplex()) {
|
|
||||||
buffer += F(" " D_INFO_FULL_DUPLEX);
|
|
||||||
}
|
|
||||||
|
|
||||||
info[F(D_INFO_LINK_SPEED)] = buffer;
|
|
||||||
info[F(D_INFO_IP_ADDRESS)] = ETHSPI.localIP().toString();
|
|
||||||
info[F(D_INFO_GATEWAY)] = ETHSPI.gatewayIP().toString();
|
|
||||||
info[F(D_INFO_DNS_SERVER)] = ETHSPI.dnsIP().toString();
|
|
||||||
info[F(D_INFO_MAC_ADDRESS)] = ETHSPI.macAddress();
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
@ -1,18 +0,0 @@
|
|||||||
/* MIT License - Copyright (c) 2022 Ben Suffolk, ben@vanilla.net
|
|
||||||
For full license information read the LICENSE file in the project folder */
|
|
||||||
|
|
||||||
#ifndef HASP_ETHERNET_SPI_H
|
|
||||||
#define HASP_ETHERNET_SPI_H
|
|
||||||
|
|
||||||
#include "ArduinoJson.h"
|
|
||||||
|
|
||||||
void ethernetSetup();
|
|
||||||
IRAM_ATTR void ethernetLoop(void);
|
|
||||||
|
|
||||||
bool ethernetEverySecond();
|
|
||||||
bool ethernetEvery5Seconds();
|
|
||||||
void ethernet_get_statusupdate(char* buffer, size_t len);
|
|
||||||
|
|
||||||
void ethernet_get_info(JsonDocument& doc);
|
|
||||||
|
|
||||||
#endif
|
|
@ -6,8 +6,6 @@
|
|||||||
|
|
||||||
#include "ArduinoJson.h"
|
#include "ArduinoJson.h"
|
||||||
|
|
||||||
static bool eth_connected = false;
|
|
||||||
|
|
||||||
void ethernetSetup();
|
void ethernetSetup();
|
||||||
void ethernetLoop(void);
|
void ethernetLoop(void);
|
||||||
|
|
||||||
|
@ -8,9 +8,50 @@
|
|||||||
#include "hasp_network.h"
|
#include "hasp_network.h"
|
||||||
#include "sys/svc/hasp_mdns.h"
|
#include "sys/svc/hasp_mdns.h"
|
||||||
|
|
||||||
bool haspOnline = false;
|
bool last_network_state = false;
|
||||||
|
bool current_network_state = false;
|
||||||
|
uint16_t network_reconnect_counter = 0;
|
||||||
|
|
||||||
#if HASP_USE_ETHERNET > 0 || HASP_USE_WIFI > 0
|
#if HASP_USE_ETHERNET > 0 || HASP_USE_WIFI > 0
|
||||||
|
|
||||||
|
void network_disconnected()
|
||||||
|
{
|
||||||
|
|
||||||
|
// if(wifiReconnectCounter++ % 5 == 0)
|
||||||
|
// LOG_WARNING(TAG_NETW, F("Disconnected from %s (Reason: %s [%d])"), ssid, buffer, reason);
|
||||||
|
|
||||||
|
// if(!current_network_state) return; // we were not connected
|
||||||
|
|
||||||
|
current_network_state = false; // now we are disconnected
|
||||||
|
network_reconnect_counter++;
|
||||||
|
// LOG_VERBOSE(TAG_NETW, F("Connected = %s"),
|
||||||
|
// WiFi.status() == WL_CONNECTED ? PSTR(D_NETWORK_ONLINE) : PSTR(D_NETWORK_OFFLINE));
|
||||||
|
}
|
||||||
|
|
||||||
|
void network_connected()
|
||||||
|
{
|
||||||
|
if(current_network_state) return; // already connected
|
||||||
|
|
||||||
|
current_network_state = true; // now we are connected
|
||||||
|
network_reconnect_counter = 0;
|
||||||
|
LOG_VERBOSE(TAG_NETW, F("Connected = %s"),
|
||||||
|
WiFi.status() == WL_CONNECTED ? PSTR(D_NETWORK_ONLINE) : PSTR(D_NETWORK_OFFLINE));
|
||||||
|
}
|
||||||
|
|
||||||
|
void network_run_scripts()
|
||||||
|
{
|
||||||
|
if(last_network_state != current_network_state) {
|
||||||
|
if(current_network_state) {
|
||||||
|
dispatch_exec(NULL, "L:/online.cmd", TAG_NETW);
|
||||||
|
networkStart();
|
||||||
|
} else {
|
||||||
|
dispatch_exec(NULL, "L:/offline.cmd", TAG_NETW);
|
||||||
|
networkStop();
|
||||||
|
}
|
||||||
|
last_network_state = current_network_state;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void networkStart(void)
|
void networkStart(void)
|
||||||
{
|
{
|
||||||
// haspProgressVal(255); // hide
|
// haspProgressVal(255); // hide
|
||||||
@ -31,6 +72,7 @@ void networkStart(void)
|
|||||||
void networkStop(void)
|
void networkStop(void)
|
||||||
{
|
{
|
||||||
haspProgressMsg(F("Network Disconnected"));
|
haspProgressMsg(F("Network Disconnected"));
|
||||||
|
network_reconnect_counter = 0; // Prevent endless loop in wifiDisconnected
|
||||||
|
|
||||||
debugStopSyslog();
|
debugStopSyslog();
|
||||||
// mqttStop();
|
// mqttStop();
|
||||||
@ -41,8 +83,15 @@ void networkStop(void)
|
|||||||
#if HASP_USE_MDNS > 0
|
#if HASP_USE_MDNS > 0
|
||||||
mdnsStop();
|
mdnsStop();
|
||||||
#endif
|
#endif
|
||||||
}
|
|
||||||
|
|
||||||
|
#if HASP_USE_ETHERNET > 0
|
||||||
|
// ethernetStop();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if HASP_USE_WIFI > 0
|
||||||
|
wifiStop();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
void networkSetup()
|
void networkSetup()
|
||||||
{
|
{
|
||||||
#if HASP_USE_ETHERNET > 0
|
#if HASP_USE_ETHERNET > 0
|
||||||
@ -54,14 +103,6 @@ void networkSetup()
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void network_run_scripts()
|
|
||||||
{
|
|
||||||
if(haspOnline)
|
|
||||||
dispatch_exec(NULL, "L:/online.cmd", TAG_WIFI);
|
|
||||||
else
|
|
||||||
dispatch_exec(NULL, "L:/offline.cmd", TAG_WIFI);
|
|
||||||
}
|
|
||||||
|
|
||||||
IRAM_ATTR void networkLoop(void)
|
IRAM_ATTR void networkLoop(void)
|
||||||
{
|
{
|
||||||
#if HASP_USE_ETHERNET > 0
|
#if HASP_USE_ETHERNET > 0
|
||||||
@ -99,41 +140,8 @@ IRAM_ATTR void networkLoop(void)
|
|||||||
|
|
||||||
bool networkEvery5Seconds(void)
|
bool networkEvery5Seconds(void)
|
||||||
{
|
{
|
||||||
#if HASP_USE_ETHERNET > 0
|
if(current_network_state != last_network_state) network_run_scripts();
|
||||||
if(ethernetEvery5Seconds() != haspOnline) {
|
return current_network_state;
|
||||||
haspOnline = !haspOnline;
|
|
||||||
LOG_WARNING(TAG_ETH, haspOnline ? F(D_NETWORK_ONLINE) : F(D_NETWORK_OFFLINE));
|
|
||||||
|
|
||||||
if(haspOnline) {
|
|
||||||
networkStart();
|
|
||||||
} else {
|
|
||||||
networkStop();
|
|
||||||
}
|
|
||||||
|
|
||||||
network_run_scripts();
|
|
||||||
}
|
|
||||||
|
|
||||||
return haspOnline;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if HASP_USE_WIFI > 0
|
|
||||||
if(wifiEvery5Seconds() != haspOnline) {
|
|
||||||
haspOnline = !haspOnline;
|
|
||||||
LOG_WARNING(TAG_WIFI, haspOnline ? F(D_NETWORK_ONLINE) : F(D_NETWORK_OFFLINE));
|
|
||||||
|
|
||||||
if(haspOnline) {
|
|
||||||
networkStart();
|
|
||||||
} else {
|
|
||||||
networkStop();
|
|
||||||
}
|
|
||||||
|
|
||||||
network_run_scripts();
|
|
||||||
}
|
|
||||||
|
|
||||||
return haspOnline;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* bool networkEverySecond(void)
|
/* bool networkEverySecond(void)
|
||||||
@ -180,6 +188,7 @@ void network_get_ipaddress(char* buffer, size_t len)
|
|||||||
#endif
|
#endif
|
||||||
snprintf_P(buffer, len, PSTR("%d.%d.%d.%d"), ip[0], ip[1], ip[2], ip[3]);
|
snprintf_P(buffer, len, PSTR("%d.%d.%d.%d"), ip[0], ip[1], ip[2], ip[3]);
|
||||||
return;
|
return;
|
||||||
|
ethernet_get_ipaddress(buffer, len);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if HASP_USE_WIFI > 0
|
#if HASP_USE_WIFI > 0
|
||||||
|
@ -13,6 +13,8 @@ void networkStart(void);
|
|||||||
void networkStop(void);
|
void networkStop(void);
|
||||||
|
|
||||||
/* ===== Special Event Processors ===== */
|
/* ===== Special Event Processors ===== */
|
||||||
|
void network_connected();
|
||||||
|
void network_disconnected();
|
||||||
void network_run_scripts();
|
void network_run_scripts();
|
||||||
|
|
||||||
/* ===== Getter and Setter Functions ===== */
|
/* ===== Getter and Setter Functions ===== */
|
||||||
|
@ -41,16 +41,14 @@ SPIClass espSPI(ESPSPI_MOSI, ESPSPI_MISO, ESPSPI_SCLK); // SPI port where esp is
|
|||||||
char wifiSsid[MAX_USERNAME_LENGTH] = WIFI_SSID;
|
char wifiSsid[MAX_USERNAME_LENGTH] = WIFI_SSID;
|
||||||
char wifiPassword[MAX_PASSWORD_LENGTH] = WIFI_PASSWORD;
|
char wifiPassword[MAX_PASSWORD_LENGTH] = WIFI_PASSWORD;
|
||||||
char wifiIpAddress[16] = "";
|
char wifiIpAddress[16] = "";
|
||||||
uint16_t wifiReconnectCounter = 0;
|
|
||||||
bool wifiOnline = false;
|
|
||||||
bool wifiEnabled = true;
|
bool wifiEnabled = true;
|
||||||
|
extern uint16_t network_reconnect_counter;
|
||||||
|
|
||||||
// const byte DNS_PORT = 53;
|
// const byte DNS_PORT = 53;
|
||||||
// DNSServer dnsServer;
|
// DNSServer dnsServer;
|
||||||
|
|
||||||
/* ============ Connection Event Handlers =============================================================== */
|
/* ============ Connection Event Handlers =============================================================== */
|
||||||
|
|
||||||
|
|
||||||
static void wifiConnected(IPAddress ipaddress)
|
static void wifiConnected(IPAddress ipaddress)
|
||||||
{
|
{
|
||||||
#if defined(STM32F4xx)
|
#if defined(STM32F4xx)
|
||||||
@ -63,18 +61,13 @@ static void wifiConnected(IPAddress ipaddress)
|
|||||||
|
|
||||||
if((uint32_t)ipaddress == 0) {
|
if((uint32_t)ipaddress == 0) {
|
||||||
LOG_ERROR(TAG_WIFI, F(D_NETWORK_IP_ADDRESS_RECEIVED), wifiIpAddress);
|
LOG_ERROR(TAG_WIFI, F(D_NETWORK_IP_ADDRESS_RECEIVED), wifiIpAddress);
|
||||||
wifiOnline = false;
|
network_disconnected();
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
LOG_TRACE(TAG_WIFI, F(D_NETWORK_IP_ADDRESS_RECEIVED), wifiIpAddress);
|
LOG_TRACE(TAG_WIFI, F(D_NETWORK_IP_ADDRESS_RECEIVED), wifiIpAddress);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(wifiOnline) return; // already connected
|
network_connected();
|
||||||
|
|
||||||
wifiOnline = true; // now we are connected
|
|
||||||
wifiReconnectCounter = 0;
|
|
||||||
LOG_VERBOSE(TAG_WIFI, F("Connected = %s"),
|
|
||||||
WiFi.status() == WL_CONNECTED ? PSTR(D_NETWORK_ONLINE) : PSTR(D_NETWORK_OFFLINE));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void wifiDisconnected(const char* ssid, uint8_t reason)
|
static void wifiDisconnected(const char* ssid, uint8_t reason)
|
||||||
@ -265,14 +258,7 @@ static void wifiDisconnected(const char* ssid, uint8_t reason)
|
|||||||
snprintf_P(buffer, sizeof(buffer), PSTR(D_ERROR_UNKNOWN));
|
snprintf_P(buffer, sizeof(buffer), PSTR(D_ERROR_UNKNOWN));
|
||||||
}
|
}
|
||||||
|
|
||||||
if(wifiReconnectCounter++ % 5 == 0)
|
network_disconnected();
|
||||||
LOG_WARNING(TAG_WIFI, F("Disconnected from %s (Reason: %s [%d])"), ssid, buffer, reason);
|
|
||||||
|
|
||||||
if(!wifiOnline) return; // we were not connected
|
|
||||||
|
|
||||||
wifiOnline = false; // now we are disconnected
|
|
||||||
LOG_VERBOSE(TAG_WIFI, F("Connected = %s"),
|
|
||||||
WiFi.status() == WL_CONNECTED ? PSTR(D_NETWORK_ONLINE) : PSTR(D_NETWORK_OFFLINE));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void wifiSsidConnected(const char* ssid)
|
static void wifiSsidConnected(const char* ssid)
|
||||||
@ -519,7 +505,7 @@ bool wifiEvery5Seconds()
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(wifiEnabled) {
|
if(wifiEnabled) {
|
||||||
LOG_WARNING(TAG_WIFI, F("No Connection... retry %d"), wifiReconnectCounter);
|
LOG_WARNING(TAG_WIFI, F("No Connection... retry %d"), network_reconnect_counter);
|
||||||
wifiReconnect();
|
wifiReconnect();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -565,7 +551,6 @@ bool wifiValidateSsid(const char* ssid, const char* pass)
|
|||||||
|
|
||||||
void wifiStop()
|
void wifiStop()
|
||||||
{
|
{
|
||||||
wifiReconnectCounter = 0; // Prevent endless loop in wifiDisconnected
|
|
||||||
WiFi.disconnect(true);
|
WiFi.disconnect(true);
|
||||||
#if !defined(STM32F4xx)
|
#if !defined(STM32F4xx)
|
||||||
WiFi.mode(WIFI_OFF);
|
WiFi.mode(WIFI_OFF);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user