PaulStoffregen / Ethernet

Ethernet library for Teensy (Wiznet W5100 / W5200 / W5500)
http://www.pjrc.com/teensy/td_libs_Ethernet.html
130 stars 83 forks source link

ESP32 & platformio #32

Closed colarocker closed 5 years ago

colarocker commented 5 years ago

Hey there! I'm trying to get the ethernet library to work with platformio for my esp32, im stuck @ basic examples, the compiler always gives me alot of errors like the following, any idea how to get it running?

Processing esp32dev (platform: espressif32; board: esp32dev; framework: arduino)

Verbose mode can be enabled via -v, --verbose option CONFIGURATION: https://docs.platformio.org/page/boards/espressif32/esp32dev.html PLATFORM: Espressif 32 > Espressif ESP32 Dev Module HARDWARE: ESP32 240MHz 320KB RAM (4MB Flash) DEBUG: CURRENT(esp-prog) EXTERNAL(esp-prog, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa) Library Dependency Finder -> http://bit.ly/configure-pio-ldf LDF MODES: FINDER(chain) COMPATIBILITY(soft) Collected 30 compatible libraries Scanning dependencies... Dependency Graph |-- 2.0.0 | |-- 1.0 |-- 1.0 Compiling .pioenvs\esp32dev\src\main.cpp.o Compiling .pioenvs\esp32dev\lib42b\Ethernet_ID872\Dhcp.cpp.o Compiling .pioenvs\esp32dev\lib42b\Ethernet_ID872\Dns.cpp.o Compiling .pioenvs\esp32dev\lib42b\Ethernet_ID872\Ethernet.cpp.o Compiling .pioenvs\esp32dev\lib42b\Ethernet_ID872\EthernetClient.cpp.o Compiling .pioenvs\esp32dev\lib42b\Ethernet_ID872\EthernetServer.cpp.o Compiling .pioenvs\esp32dev\lib42b\Ethernet_ID872\EthernetUdp.cpp.o Compiling .pioenvs\esp32dev\lib42b\Ethernet_ID872\socket.cpp.o In file included from src\main.cpp:23:0: .piolibdeps\Ethernet_ID872\src/Ethernet.h:258:2: error: invalid abstract return type 'EthernetClient' EthernetClient available(); ^ .piolibdeps\Ethernet_ID872\src/Ethernet.h:214:7: note: because the following virtual functions are pure within 'EthernetClient': class EthernetClient : public Client { ^ In file included from C:\Users\Sir_A.platformio\packages\framework-arduinoespressif32\cores\esp32/Arduino.h:157:0, from .piolibdeps\Ethernet_ID872\src/Ethernet.h:51, from src\main.cpp:23: C:\Users\Sir_A.platformio\packages\framework-arduinoespressif32\cores\esp32/Client.h:31:17: note: virtual int Client::connect(IPAddress, uint16_t, int) virtual int connect(IPAddress ip, uint16_t port, int timeout) =0; ^ C:\Users\Sir_A.platformio\packages\framework-arduinoespressif32\cores\esp32/Client.h:32:17: note: virtual int Client::connect(const char, uint16_t, int) virtual int connect(const char host, uint16_t port, int timeout) =0; ^ In file included from src\main.cpp:23:0: .piolibdeps\Ethernet_ID872\src/Ethernet.h:259:2: error: invalid abstract return type 'EthernetClient' EthernetClient accept(); ^ src\main.cpp:38:16: error: cannot declare variable 'server' to be of abstract type 'EthernetServer' EthernetServer server(23); ^ In file included from src\main.cpp:23:0: .piolibdeps\Ethernet_ID872\src/Ethernet.h:253:7: note: because the following virtual functions are pure within 'EthernetServer': class EthernetServer : public Server { ^ In file included from C:\Users\Sir_A.platformio\packages\framework-arduinoespressif32\cores\esp32/Arduino.h:158:0, from .piolibdeps\Ethernet_ID872\src/Ethernet.h:51, from src\main.cpp:23: C:\Users\Sir_A.platformio\packages\framework-arduinoespressif32\cores\esp32/Server.h:28:18: note: virtual void Server::begin(uint16_t) virtual void begin(uint16_t port=0) =0; ^ src\main.cpp:40:25: error: invalid abstract type 'EthernetClient' for 'clients' EthernetClient clients[8]; ^ src\main.cpp: In function 'void loop()': src\main.cpp:80:44: error: cannot allocate an object of abstract type 'EthernetClient' EthernetClient newClient = server.accept(); ^ src\main.cpp:80:18: error: cannot declare variable 'newClient' to be of abstract type 'EthernetClient' EthernetClient newClient = server.accept(); ^ [.pioenvs\esp32dev\src\main.cpp.o] Error 1 In file included from .piolibdeps\Ethernet_ID872\src\Dhcp.cpp:5:0: .piolibdeps\Ethernet_ID872\src\Ethernet.h:258:2: error: invalid abstract return type 'EthernetClient' EthernetClient available(); ^ .piolibdeps\Ethernet_ID872\src\Ethernet.h:214:7: note: because the following virtual functions are pure within 'EthernetClient': class EthernetClient : public Client { ^ In file included from C:\Users\Sir_A.platformio\packages\framework-arduinoespressif32\cores\esp32/Arduino.h:157:0, from .piolibdeps\Ethernet_ID872\src\Dhcp.cpp:4: C:\Users\Sir_A.platformio\packages\framework-arduinoespressif32\cores\esp32/Client.h:31:17: note: virtual int Client::connect(IPAddress, uint16_t, int) virtual int connect(IPAddress ip, uint16_t port, int timeout) =0; ^ C:\Users\Sir_A.platformio\packages\framework-arduinoespressif32\cores\esp32/Client.h:32:17: note: virtual int Client::connect(const char, uint16_t, int) virtual int connect(const char host, uint16_t port, int timeout) =0; ^ In file included from .piolibdeps\Ethernet_ID872\src\Dhcp.cpp:5:0: .piolibdeps\Ethernet_ID872\src\Ethernet.h:259:2: error: invalid abstract return type 'EthernetClient' EthernetClient accept(); ^ In file included from .piolibdeps\Ethernet_ID872\src\Dns.cpp:6:0: .piolibdeps\Ethernet_ID872\src\Ethernet.h:258:2: error: invalid abstract return type 'EthernetClient' EthernetClient available(); ^ .piolibdeps\Ethernet_ID872\src\Ethernet.h:214:7: note: because the following virtual functions are pure within 'EthernetClient': class EthernetClient : public Client { ^ In file included from C:\Users\Sir_A.platformio\packages\framework-arduinoespressif32\cores\esp32/Arduino.h:157:0, from .piolibdeps\Ethernet_ID872\src\Dns.cpp:5: C:\Users\Sir_A.platformio\packages\framework-arduinoespressif32\cores\esp32/Client.h:31:17: note: virtual int Client::connect(IPAddress, uint16_t, int) virtual int connect(IPAddress ip, uint16_t port, int timeout) =0; ^ C:\Users\Sir_A.platformio\packages\framework-arduinoespressif32\cores\esp32/Client.h:32:17: note: virtual int Client::connect(const char, uint16_t, int) virtual int connect(const char host, uint16_t port, int timeout) =0; ^ In file included from .piolibdeps\Ethernet_ID872\src\Dns.cpp:6:0: .piolibdeps\Ethernet_ID872\src\Ethernet.h:259:2: error: invalid abstract return type 'EthernetClient' EthernetClient accept(); ^ [.pioenvs\esp32dev\lib42b\Ethernet_ID872\Dhcp.cpp.o] Error 1 In file included from .piolibdeps\Ethernet_ID872\src\Ethernet.cpp:22:0: .piolibdeps\Ethernet_ID872\src\Ethernet.h:258:2: error: invalid abstract return type 'EthernetClient' EthernetClient available(); ^ .piolibdeps\Ethernet_ID872\src\Ethernet.h:214:7: note: because the following virtual functions are pure within 'EthernetClient': class EthernetClient : public Client { ^ In file included from C:\Users\Sir_A.platformio\packages\framework-arduinoespressif32\cores\esp32/Arduino.h:157:0, from .piolibdeps\Ethernet_ID872\src\Ethernet.cpp:21: C:\Users\Sir_A.platformio\packages\framework-arduinoespressif32\cores\esp32/Client.h:31:17: note: virtual int Client::connect(IPAddress, uint16_t, int) virtual int connect(IPAddress ip, uint16_t port, int timeout) =0; ^ C:\Users\Sir_A.platformio\packages\framework-arduinoespressif32\cores\esp32/Client.h:32:17: note: virtual int Client::connect(const char, uint16_t, int) virtual int connect(const char host, uint16_t port, int timeout) =0; ^ In file included from .piolibdeps\Ethernet_ID872\src\Ethernet.cpp:22:0: .piolibdeps\Ethernet_ID872\src\Ethernet.h:259:2: error: invalid abstract return type 'EthernetClient' EthernetClient accept(); ^ [.pioenvs\esp32dev\lib42b\Ethernet_ID872\Dns.cpp.o] Error 1 In file included from .piolibdeps\Ethernet_ID872\src\EthernetClient.cpp:22:0: .piolibdeps\Ethernet_ID872\src\Ethernet.h:258:2: error: invalid abstract return type 'EthernetClient' EthernetClient available(); ^ .piolibdeps\Ethernet_ID872\src\Ethernet.h:214:7: note: because the following virtual functions are pure within 'EthernetClient': class EthernetClient : public Client { ^ In file included from C:\Users\Sir_A.platformio\packages\framework-arduinoespressif32\cores\esp32/Arduino.h:157:0, from .piolibdeps\Ethernet_ID872\src\EthernetClient.cpp:21: C:\Users\Sir_A.platformio\packages\framework-arduinoespressif32\cores\esp32/Client.h:31:17: note: virtual int Client::connect(IPAddress, uint16_t, int) virtual int connect(IPAddress ip, uint16_t port, int timeout) =0; ^ C:\Users\Sir_A.platformio\packages\framework-arduinoespressif32\cores\esp32/Client.h:32:17: note: virtual int Client::connect(const char, uint16_t, int) virtual int connect(const char host, uint16_t port, int timeout) =0; ^ In file included from .piolibdeps\Ethernet_ID872\src\EthernetClient.cpp:22:0: .piolibdeps\Ethernet_ID872\src\Ethernet.h:259:2: error: invalid abstract return type 'EthernetClient' EthernetClient accept(); ^ [.pioenvs\esp32dev\lib42b\Ethernet_ID872\Ethernet.cpp.o] Error 1 In file included from .piolibdeps\Ethernet_ID872\src\EthernetServer.cpp:22:0: .piolibdeps\Ethernet_ID872\src\Ethernet.h:258:2: error: invalid abstract return type 'EthernetClient' EthernetClient available(); ^ .piolibdeps\Ethernet_ID872\src\Ethernet.h:214:7: note: because the following virtual functions are pure within 'EthernetClient': class EthernetClient : public Client { ^ In file included from C:\Users\Sir_A.platformio\packages\framework-arduinoespressif32\cores\esp32/Arduino.h:157:0, from .piolibdeps\Ethernet_ID872\src\EthernetServer.cpp:21: C:\Users\Sir_A.platformio\packages\framework-arduinoespressif32\cores\esp32/Client.h:31:17: note: virtual int Client::connect(IPAddress, uint16_t, int) virtual int connect(IPAddress ip, uint16_t port, int timeout) =0; ^ C:\Users\Sir_A.platformio\packages\framework-arduinoespressif32\cores\esp32/Client.h:32:17: note: virtual int Client::connect(const char, uint16_t, int) virtual int connect(const char host, uint16_t port, int timeout) =0; ^ In file included from .piolibdeps\Ethernet_ID872\src\EthernetServer.cpp:22:0: .piolibdeps\Ethernet_ID872\src\Ethernet.h:259:2: error: invalid abstract return type 'EthernetClient' EthernetClient accept(); ^ .piolibdeps\Ethernet_ID872\src\EthernetServer.cpp:40:1: error: invalid abstract return type 'EthernetClient' EthernetClient EthernetServer::available() ^ .piolibdeps\Ethernet_ID872\src\EthernetServer.cpp: In member function 'EthernetClient EthernetServer::available()': .piolibdeps\Ethernet_ID872\src\EthernetServer.cpp:40:16: error: invalid abstract return type for member function 'EthernetClient EthernetServer::available()' EthernetClient EthernetServer::available() ^ .piolibdeps\Ethernet_ID872\src\EthernetServer.cpp:47:47: error: invalid cast to abstract class type 'EthernetClient' if (!chip) return EthernetClient(MAX_SOCK_NUM); ^ .piolibdeps\Ethernet_ID872\src\EthernetServer.cpp:72:33: error: invalid cast to abstract class type 'EthernetClient' return EthernetClient(sockindex); ^ .piolibdeps\Ethernet_ID872\src\EthernetServer.cpp: At global scope: .piolibdeps\Ethernet_ID872\src\EthernetServer.cpp:75:1: error: invalid abstract return type 'EthernetClient' EthernetClient EthernetServer::accept() ^ .piolibdeps\Ethernet_ID872\src\EthernetServer.cpp: In member function 'EthernetClient EthernetServer::accept()': .piolibdeps\Ethernet_ID872\src\EthernetServer.cpp:75:16: error: invalid abstract return type for member function 'EthernetClient EthernetServer::accept()' EthernetClient EthernetServer::accept() ^ .piolibdeps\Ethernet_ID872\src\EthernetServer.cpp:82:47: error: invalid cast to abstract class type 'EthernetClient' if (!chip) return EthernetClient(MAX_SOCK_NUM); ^ .piolibdeps\Ethernet_ID872\src\EthernetServer.cpp:104:33: error: invalid cast to abstract class type 'EthernetClient' return EthernetClient(sockindex); ^ .piolibdeps\Ethernet_ID872\src\EthernetServer.cpp: In member function 'virtual size_t EthernetServer::write(const uint8_t*, size_t)': .piolibdeps\Ethernet_ID872\src\EthernetServer.cpp:170:12: error: cannot allocate an object of abstract type 'EthernetClient' available(); ^ [.pioenvs\esp32dev\lib42b\Ethernet_ID872\EthernetClient.cpp.o] Error 1 [.pioenvs\esp32dev\lib42b\Ethernet_ID872\EthernetServer.cpp.o] Error 1 In file included from .piolibdeps\Ethernet_ID872\src\EthernetUdp.cpp:30:0: .piolibdeps\Ethernet_ID872\src\Ethernet.h:258:2: error: invalid abstract return type 'EthernetClient' EthernetClient available(); ^ .piolibdeps\Ethernet_ID872\src\Ethernet.h:214:7: note: because the following virtual functions are pure within 'EthernetClient': class EthernetClient : public Client { ^ In file included from C:\Users\Sir_A.platformio\packages\framework-arduinoespressif32\cores\esp32/Arduino.h:157:0, from .piolibdeps\Ethernet_ID872\src\EthernetUdp.cpp:29: C:\Users\Sir_A.platformio\packages\framework-arduinoespressif32\cores\esp32/Client.h:31:17: note: virtual int Client::connect(IPAddress, uint16_t, int) virtual int connect(IPAddress ip, uint16_t port, int timeout) =0; ^ C:\Users\Sir_A.platformio\packages\framework-arduinoespressif32\cores\esp32/Client.h:32:17: note: virtual int Client::connect(const char, uint16_t, int) virtual int connect(const char host, uint16_t port, int timeout) =0; ^ In file included from .piolibdeps\Ethernet_ID872\src\EthernetUdp.cpp:30:0: .piolibdeps\Ethernet_ID872\src\Ethernet.h:259:2: error: invalid abstract return type 'EthernetClient' EthernetClient accept(); ^ In file included from .piolibdeps\Ethernet_ID872\src\socket.cpp:22:0: .piolibdeps\Ethernet_ID872\src\Ethernet.h:258:2: error: invalid abstract return type 'EthernetClient' EthernetClient available(); ^ .piolibdeps\Ethernet_ID872\src\Ethernet.h:214:7: note: because the following virtual functions are pure within 'EthernetClient': class EthernetClient : public Client { ^ In file included from C:\Users\Sir_A.platformio\packages\framework-arduinoespressif32\cores\esp32/Arduino.h:157:0, from .piolibdeps\Ethernet_ID872\src\socket.cpp:21: C:\Users\Sir_A.platformio\packages\framework-arduinoespressif32\cores\esp32/Client.h:31:17: note: virtual int Client::connect(IPAddress, uint16_t, int) virtual int connect(IPAddress ip, uint16_t port, int timeout) =0; ^ C:\Users\Sir_A.platformio\packages\framework-arduinoespressif32\cores\esp32/Client.h:32:17: note: virtual int Client::connect(const char, uint16_t, int) virtual int connect(const char host, uint16_t port, int timeout) =0; ^ In file included from .piolibdeps\Ethernet_ID872\src\socket.cpp:22:0: .piolibdeps\Ethernet_ID872\src\Ethernet.h:259:2: error: invalid abstract return type 'EthernetClient' EthernetClient accept(); ^ [.pioenvs\esp32dev\lib42b\Ethernet_ID872\EthernetUdp.cpp.o] Error 1 [.pioenvs\esp32dev\lib42b\Ethernet_ID872\socket.cpp.o] Error 1 ================================================================= [ERROR] Took 2.30 seconds ================================================================= The terminal process terminated with exit code: 1

colarocker commented 5 years ago

okay found it out with help of platformio forum, i had to switch dependencies for an older build of platformios esp32 support: platform = espressif32@1.7.0 in the platformio.ini