diff --git a/Ethernet.h b/Ethernet.h new file mode 100644 index 0000000..652038a --- /dev/null +++ b/Ethernet.h @@ -0,0 +1,61 @@ +// Copyright (C) 2024, Mark Qvist +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// This program 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 General Public License for more details. +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +#pragma once + +#include + +SPIClass eth_spi(HSPI); +bool eth_is_connected = false; +IPAddress eth_device_ip; + +char eth_hostname[10]; + +void onEthEvent(WiFiEvent_t event) { + switch (event) { + case ARDUINO_EVENT_ETH_START: + memcpy(eth_hostname, bt_devname, 5); + memcpy(eth_hostname+5, bt_devname+6, 4); + eth_hostname[9] = 0x00; + ETH.setHostname(eth_hostname); + break; + case ARDUINO_EVENT_ETH_GOT_IP: + eth_is_connected = true; + eth_device_ip = ETH.localIP(); + break; + case ARDUINO_EVENT_ETH_DISCONNECTED: + case ARDUINO_EVENT_ETH_STOP: + eth_is_connected = false; + break; + default: + break; + } +} + +void init_ethernet() { + eth_spi.begin(pin_eth_sclk, pin_eth_miso, pin_eth_mosi, pin_eth_cs); + WiFi.onEvent(onEthEvent); + ETH.begin( + ETH_PHY_W5500, + 0, + pin_eth_cs, + pin_eth_int, + pin_eth_rst, + eth_spi, + 20000000 + ); + remote_listener.begin(); + remote_listener.setTimeout(WR_SOCKET_TIMEOUT); + wr_state = WR_STATE_ON; +} + +bool ethernet_is_connected() { return eth_is_connected; }