Hello,
I use platformio with VSCode, and for beginning I try build simple application for NUCLEO with ESP8266. This is mbed-os-example-esp8266 from mbed Online Compiler where this app build without errors, and works well after flashing to board.
But when I try build this app in VSCode and PlatformIO I have only a lot of errors. Maybe this is a problem with framework configuration, maybe I don’t have configured needed features or options, but I can’t find good manual about this.
Where to look for solutions to this problems.
Best regards
Marek
Processing nucleo_f429zi (platform: ststm32; board: nucleo_f429zi; framework: mbed)
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/ststm32/nucleo_f429zi.html
PLATFORM: ST STM32 > ST Nucleo F429ZI
SYSTEM: STM32F429ZIT6 180MHz 256KB RAM (2MB Flash)
DEBUG: CURRENT(stlink) ON-BOARD(stlink) EXTERNAL(blackmagic, jlink)
Library Dependency Finder -> http://bit.ly/configure-pio-ldf
LDF MODES: FINDER(chain) COMPATIBILITY(soft)
Collected 42 compatible libraries
Scanning dependencies...
Dependency Graph
Compiling .pioenvs\nucleo_f429zi\lib040\esp8266-driver\ESP8266Interface.o
Compiling .pioenvs\nucleo_f429zi\lib040\esp8266-driver\ESP8266\ESP8266.o
Compiling .pioenvs\nucleo_f429zi\src\main.o
In file included from C:\Users\mares\.platformio\packages\framework-mbed\components\wifi\esp8266-driver\ESP8266Interface.cpp:18:0:
C:/Users/mares/.platformio/packages/framework-mbed/components/wifi/esp8266-driver/ESP8266/ESP8266.h:136:14: error: 'WiFiAccessPoint' has not been declared
int scan(WiFiAccessPoint *res, unsigned limit);
^~~~~~~~~~~~~~~
In file included from C:\Users\mares\.platformio\packages\framework-mbed\components\wifi\esp8266-driver\ESP8266Interface.cpp:19:0:
C:\Users\mares\.platformio\packages\framework-mbed\components\wifi\esp8266-driver\ESP8266Interface.h:28:45: error: expected class-name before ',' token
class ESP8266Interface : public NetworkStack, public WiFiInterface
^
C:\Users\mares\.platformio\packages\framework-mbed\components\wifi\esp8266-driver\ESP8266Interface.h:29:1: error: expected class-name before '{' token
{
^
In file included from C:\Users\mares\.platformio\packages\framework-mbed\components\wifi\esp8266-driver\ESP8266Interface.cpp:19:0:
C:\Users\mares\.platformio\packages\framework-mbed\components\wifi\esp8266-driver\ESP8266Interface.h:130:22: error: 'WiFiAccessPoint' has not been declared
virtual int scan(WiFiAccessPoint *res, unsigned count);
^~~~~~~~~~~~~~~
C:\Users\mares\.platformio\packages\framework-mbed\components\wifi\esp8266-driver\ESP8266Interface.h:146:11: error: 'NetworkInterface' has not been declared
using NetworkInterface::gethostbyname;
^~~~~~~~~~~~~~~~
C:\Users\mares\.platformio\packages\framework-mbed\components\wifi\esp8266-driver\ESP8266Interface.h:153:11: error: 'NetworkInterface' has not been declared
using NetworkInterface::add_dns_server;
^~~~~~~~~~~~~~~~
C:\Users\mares\.platformio\packages\framework-mbed\components\wifi\esp8266-driver\ESP8266Interface.h:230:49: error: 'SocketAddress' does not name a type; did you mean 'USB_SetDevAddress'?
virtual int socket_bind(void *handle, const SocketAddress &address);
^~~~~~~~~~~~~
USB_SetDevAddress
C:\Users\mares\.platformio\packages\framework-mbed\components\wifi\esp8266-driver\ESP8266Interface.h:245:52: error: 'SocketAddress' does not name a type; did you mean 'USB_SetDevAddress'?
virtual int socket_connect(void *handle, const SocketAddress &address);
^~~~~~~~~~~~~
USB_SetDevAddress
C:\Users\mares\.platformio\packages\framework-mbed\components\wifi\esp8266-driver\ESP8266Interface.h:254:60: error: 'SocketAddress' has not been declared
virtual int socket_accept(void *handle, void **socket, SocketAddress *address);
^~~~~~~~~~~~~
C:\Users\mares\.platformio\packages\framework-mbed\components\wifi\esp8266-driver\ESP8266Interface.h:285:51: error: 'SocketAddress' does not name a type; did you mean 'USB_SetDevAddress'?
virtual int socket_sendto(void *handle, const SocketAddress &address, const void *data, unsigned size);
^~~~~~~~~~~~~
USB_SetDevAddress
C:\Users\mares\.platformio\packages\framework-mbed\components\wifi\esp8266-driver\ESP8266Interface.h:298:47: error: 'SocketAddress' has not been declared
virtual int socket_recvfrom(void *handle, SocketAddress *address, void *buffer, unsigned size);
^~~~~~~~~~~~~
C:\Users\mares\.platformio\packages\framework-mbed\components\wifi\esp8266-driver\ESP8266Interface.h:312:13: error: 'NetworkStack' does not name a type
virtual NetworkStack *get_stack()
^~~~~~~~~~~~
C:\Users\mares\.platformio\packages\framework-mbed\components\wifi\esp8266-driver\ESP8266Interface.cpp:223:28: error: 'int ESP8266Interface::scan' is not a static data member of 'class ESP8266Interface'
int ESP8266Interface::scan(WiFiAccessPoint *res, unsigned count)
^~~~~~~~~~~~~~~
C:\Users\mares\.platformio\packages\framework-mbed\components\wifi\esp8266-driver\ESP8266Interface.cpp:223:28: error: 'WiFiAccessPoint' was not declared in this scope
In file included from C:\Users\mares\.platformio\packages\framework-mbed\components\wifi\esp8266-driver\ESP8266\ESP8266.cpp:17:0:
C:\Users\mares\.platformio\packages\framework-mbed\components\wifi\esp8266-driver\ESP8266\ESP8266.h:136:14: error: 'WiFiAccessPoint' has not been declared
int scan(WiFiAccessPoint *res, unsigned limit);
^~~~~~~~~~~~~~~
C:\Users\mares\.platformio\packages\framework-mbed\components\wifi\esp8266-driver\ESP8266\ESP8266.cpp:257:19: error: 'int ESP8266::scan' is not a static data member of 'class ESP8266'
int ESP8266::scan(WiFiAccessPoint *res, unsigned limit)
^~~~~~~~~~~~~~~
C:\Users\mares\.platformio\packages\framework-mbed\components\wifi\esp8266-driver\ESP8266\ESP8266.cpp:257:19: error: 'WiFiAccessPoint' was not declared in this scope
C:\Users\mares\.platformio\packages\framework-mbed\components\wifi\esp8266-driver\ESP8266\ESP8266.cpp:257:36: error: 'res' was not declared in this scope
int ESP8266::scan(WiFiAccessPoint *res, unsigned limit)
^~~
C:\Users\mares\.platformio\packages\framework-mbed\components\wifi\esp8266-driver\ESP8266\ESP8266.cpp:257:36: note: suggested alternative: 'reset'
int ESP8266::scan(WiFiAccessPoint *res, unsigned limit)
^~~
reset
C:\Users\mares\.platformio\packages\framework-mbed\components\wifi\esp8266-driver\ESP8266\ESP8266.cpp:257:41: error: expected primary-expression before 'unsigned'
int ESP8266::scan(WiFiAccessPoint *res, unsigned limit)
^~~~~~~~
C:\Users\mares\.platformio\packages\framework-mbed\components\wifi\esp8266-driver\ESP8266\ESP8266.cpp:257:55: error: expression list treated as compound expression in initializer [-fpermissive]
int ESP8266::scan(WiFiAccessPoint *res, unsigned limit)
^
C:\Users\mares\.platformio\packages\framework-mbed\components\wifi\esp8266-driver\ESP8266Interface.cpp:223:45: error: 'res' was not declared in this scope
int ESP8266Interface::scan(WiFiAccessPoint *res, unsigned count)
^~~
C:\Users\mares\.platformio\packages\framework-mbed\components\wifi\esp8266-driver\ESP8266Interface.cpp:223:45: note: suggested alternative: '_esp'
int ESP8266Interface::scan(WiFiAccessPoint *res, unsigned count)
^~~
_esp
C:\Users\mares\.platformio\packages\framework-mbed\components\wifi\esp8266-driver\ESP8266Interface.cpp:223:50: error: expected primary-expression before 'unsigned'
int ESP8266Interface::scan(WiFiAccessPoint *res, unsigned count)
^~~~~~~~
C:\Users\mares\.platformio\packages\framework-mbed\components\wifi\esp8266-driver\ESP8266Interface.cpp:223:64: error: expression list treated as compound expression in initializer [-fpermissive]
int ESP8266Interface::scan(WiFiAccessPoint *res, unsigned count)
^
*** [.pioenvs\nucleo_f429zi\lib040\esp8266-driver\ESP8266\ESP8266.o] Error 1
C:\Users\mares\.platformio\packages\framework-mbed\components\wifi\esp8266-driver\ESP8266Interface.cpp:298:5: error: 'SocketAddress' does not name a type; did you mean 'USB_SetDevAddress'?
SocketAddress addr;
^~~~~~~~~~~~~
USB_SetDevAddress
C:\Users\mares\.platformio\packages\framework-mbed\components\wifi\esp8266-driver\ESP8266Interface.cpp:352:55: error: 'SocketAddress' does not name a type; did you mean 'USB_SetDevAddress'?
int ESP8266Interface::socket_bind(void *handle, const SocketAddress &address)
^~~~~~~~~~~~~
USB_SetDevAddress
C:\Users\mares\.platformio\packages\framework-mbed\components\wifi\esp8266-driver\ESP8266Interface.cpp: In member function 'virtual int ESP8266Interface::socket_bind(void*, const int&)':
C:\Users\mares\.platformio\packages\framework-mbed\components\wifi\esp8266-driver\ESP8266Interface.cpp:361:20: error: request for member 'get_addr' in 'address', which is of non-class type 'const int'
if(address.get_addr().version != NSAPI_UNSPEC) {
^~~~~~~~
C:\Users\mares\.platformio\packages\framework-mbed\components\wifi\esp8266-driver\ESP8266Interface.cpp:366:44: error: request for member 'get_port' in 'address', which is of non-class type 'const int'
if(_local_ports[id] == address.get_port() && id != socket->id) { // Port already reserved by another socket
^~~~~~~~
C:\Users\mares\.platformio\packages\framework-mbed\components\wifi\esp8266-driver\ESP8266Interface.cpp:372:44: error: request for member 'get_port' in 'address', which is of non-class type 'const int'
_local_ports[socket->id] = address.get_port();
^~~~~~~~
C:\Users\mares\.platformio\packages\framework-mbed\components\wifi\esp8266-driver\ESP8266Interface.cpp: At global scope:
C:\Users\mares\.platformio\packages\framework-mbed\components\wifi\esp8266-driver\ESP8266Interface.cpp:384:58: error: 'SocketAddress' does not name a type; did you mean 'USB_SetDevAddress'?
int ESP8266Interface::socket_connect(void *handle, const SocketAddress &addr)
^~~~~~~~~~~~~
USB_SetDevAddress
C:\Users\mares\.platformio\packages\framework-mbed\components\wifi\esp8266-driver\ESP8266Interface.cpp: In member function 'virtual int ESP8266Interface::socket_connect(void*, const int&)':
C:\Users\mares\.platformio\packages\framework-mbed\components\wifi\esp8266-driver\ESP8266Interface.cpp:394:46: error: request for member 'get_ip_address' in 'addr', which is of non-class type 'const int'
ret = _esp.open_udp(socket->id, addr.get_ip_address(), addr.get_port(), _local_ports[socket->id]);
^~~~~~~~~~~~~~
C:\Users\mares\.platformio\packages\framework-mbed\components\wifi\esp8266-driver\ESP8266Interface.cpp:394:69: error: request for member 'get_port' in 'addr', which is of non-class type 'const int'
ret = _esp.open_udp(socket->id, addr.get_ip_address(), addr.get_port(), _local_ports[socket->id]);
^~~~~~~~
C:\Users\mares\.platformio\packages\framework-mbed\components\wifi\esp8266-driver\ESP8266Interface.cpp:399:45: error: request for member 'get_ip_address' in 'addr', which is of non-class type 'const int'
if (!_esp.open_tcp(socket->id, addr.get_ip_address(), addr.get_port(), socket->keepalive)) {
^~~~~~~~~~~~~~
C:\Users\mares\.platformio\packages\framework-mbed\components\wifi\esp8266-driver\ESP8266Interface.cpp:399:68: error: request for member 'get_port' in 'addr', which is of non-class type 'const int'
if (!_esp.open_tcp(socket->id, addr.get_ip_address(), addr.get_port(), socket->keepalive)) {
^~~~~~~~
C:\Users\mares\.platformio\packages\framework-mbed\components\wifi\esp8266-driver\ESP8266Interface.cpp: At global scope:
C:\Users\mares\.platformio\packages\framework-mbed\components\wifi\esp8266-driver\ESP8266Interface.cpp:408:66: error: 'SocketAddress' has not been declared
int ESP8266Interface::socket_accept(void *server, void **socket, SocketAddress *addr)
^~~~~~~~~~~~~
C:\Users\mares\.platformio\packages\framework-mbed\components\wifi\esp8266-driver\ESP8266Interface.cpp:448:57: error: 'SocketAddress' does not name a type; did you mean 'USB_SetDevAddress'?
int ESP8266Interface::socket_sendto(void *handle, const SocketAddress &addr, const void *data, unsigned size)
^~~~~~~~~~~~~
USB_SetDevAddress
C:\Users\mares\.platformio\packages\framework-mbed\components\wifi\esp8266-driver\ESP8266Interface.cpp: In member function 'virtual int ESP8266Interface::socket_sendto(void*, const int&, const void*, unsigned int)':
C:\Users\mares\.platformio\packages\framework-mbed\components\wifi\esp8266-driver\ESP8266Interface.cpp:456:21: error: request for member 'get_ip_address' in 'addr', which is of non-class type 'const int'
if((strcmp(addr.get_ip_address(), "0.0.0.0") == 0) || !addr.get_port()) {
^~~~~~~~~~~~~~
C:\Users\mares\.platformio\packages\framework-mbed\components\wifi\esp8266-driver\ESP8266Interface.cpp:456:65: error: request for member 'get_port' in 'addr', which is of non-class type 'const int'
if((strcmp(addr.get_ip_address(), "0.0.0.0") == 0) || !addr.get_port()) {
^~~~~~~~
C:\Users\mares\.platformio\packages\framework-mbed\components\wifi\esp8266-driver\ESP8266Interface.cpp:460:38: error: 'struct esp8266_socket' has no member named 'addr'
if (socket->connected && socket->addr != addr) {
^~~~
C:\Users\mares\.platformio\packages\framework-mbed\components\wifi\esp8266-driver\ESP8266Interface.cpp:472:17: error: 'struct esp8266_socket' has no member named 'addr'
socket->addr = addr;
^~~~
C:\Users\mares\.platformio\packages\framework-mbed\components\wifi\esp8266-driver\ESP8266Interface.cpp: At global scope:
C:\Users\mares\.platformio\packages\framework-mbed\components\wifi\esp8266-driver\ESP8266Interface.cpp:478:53: error: 'SocketAddress' has not been declared
int ESP8266Interface::socket_recvfrom(void *handle, SocketAddress *addr, void *data, unsigned size)
^~~~~~~~~~~~~
C:\Users\mares\.platformio\packages\framework-mbed\components\wifi\esp8266-driver\ESP8266Interface.cpp: In member function 'virtual int ESP8266Interface::socket_recvfrom(void*, int*, void*, unsigned int)':
C:\Users\mares\.platformio\packages\framework-mbed\components\wifi\esp8266-driver\ESP8266Interface.cpp:488:25: error: 'struct esp8266_socket' has no member named 'addr'
*addr = socket->addr;
^~~~
*** [.pioenvs\nucleo_f429zi\lib040\esp8266-driver\ESP8266Interface.o] Error 1
In file included from C:/Users/mares/.platformio/packages/framework-mbed/components/wifi/esp8266-driver/ESP8266Interface.h:21:0,
from src\main.cpp:22:
C:/Users/mares/.platformio/packages/framework-mbed/components/wifi/esp8266-driver/ESP8266/ESP8266.h:136:14: error: 'WiFiAccessPoint' has not been declared
int scan(WiFiAccessPoint *res, unsigned limit);
^~~~~~~~~~~~~~~
In file included from src\main.cpp:22:0:
C:/Users/mares/.platformio/packages/framework-mbed/components/wifi/esp8266-driver/ESP8266Interface.h:28:54: error: invalid use of incomplete type 'class WiFiInterface'
class ESP8266Interface : public NetworkStack, public WiFiInterface
^~~~~~~~~~~~~
In file included from C:/Users/mares/.platformio/packages/framework-mbed/features/netsocket/NetworkStack.h:23:0,
from C:/Users/mares/.platformio/packages/framework-mbed/features/netsocket/InternetSocket.h:24,
from C:/Users/mares/.platformio/packages/framework-mbed/features/netsocket/TCPSocket.h:23,
from src\main.cpp:18:
C:/Users/mares/.platformio/packages/framework-mbed/features/netsocket/NetworkInterface.h:29:7: note: forward declaration of 'class WiFiInterface'
class WiFiInterface;
^~~~~~~~~~~~~
In file included from src\main.cpp:22:0:
C:/Users/mares/.platformio/packages/framework-mbed/components/wifi/esp8266-driver/ESP8266Interface.h:130:22: error: 'WiFiAccessPoint' has not been declared
virtual int scan(WiFiAccessPoint *res, unsigned count);
^~~~~~~~~~~~~~~
C:/Users/mares/.platformio/packages/framework-mbed/components/wifi/esp8266-driver/ESP8266Interface.h:146:29: error: type 'NetworkInterface' is not a base type for type 'ESP8266Interface'
using NetworkInterface::gethostbyname;
^~~~~~~~~~~~~
C:/Users/mares/.platformio/packages/framework-mbed/components/wifi/esp8266-driver/ESP8266Interface.h:153:29: error: type 'NetworkInterface' is not a base type for type 'ESP8266Interface'
using NetworkInterface::add_dns_server;
^~~~~~~~~~~~~~
src\main.cpp: In function 'void scan_demo(WiFiInterface*)':
src\main.cpp:46:5: error: 'WiFiAccessPoint' was not declared in this scope
WiFiAccessPoint *ap;
^~~~~~~~~~~~~~~
src\main.cpp:46:22: error: 'ap' was not declared in this scope
WiFiAccessPoint *ap;
^~
src\main.cpp:50:21: error: invalid use of incomplete type 'class WiFiInterface'
int count = wifi->scan(NULL,0);
^~
In file included from C:/Users/mares/.platformio/packages/framework-mbed/features/netsocket/NetworkStack.h:23:0,
from C:/Users/mares/.platformio/packages/framework-mbed/features/netsocket/InternetSocket.h:24,
from C:/Users/mares/.platformio/packages/framework-mbed/features/netsocket/TCPSocket.h:23,
from src\main.cpp:18:
C:/Users/mares/.platformio/packages/framework-mbed/features/netsocket/NetworkInterface.h:29:7: note: forward declaration of 'class WiFiInterface'
class WiFiInterface;
^~~~~~~~~~~~~
src\main.cpp:50:23: error: invalid use of incomplete type 'class WiFiInterface'
int count = wifi->scan(NULL,0);
^~~~
In file included from C:/Users/mares/.platformio/packages/framework-mbed/features/netsocket/NetworkStack.h:23:0,
from C:/Users/mares/.platformio/packages/framework-mbed/features/netsocket/InternetSocket.h:24,
from C:/Users/mares/.platformio/packages/framework-mbed/features/netsocket/TCPSocket.h:23,
from src\main.cpp:18:
C:/Users/mares/.platformio/packages/framework-mbed/features/netsocket/NetworkInterface.h:29:7: note: forward declaration of 'class WiFiInterface'
class WiFiInterface;
^~~~~~~~~~~~~
src\main.cpp:55:14: error: 'WiFiAccessPoint' does not name a type
ap = new WiFiAccessPoint[count];
^~~~~~~~~~~~~~~
src\main.cpp:56:17: error: invalid use of incomplete type 'class WiFiInterface'
count = wifi->scan(ap, count);
^~
In file included from C:/Users/mares/.platformio/packages/framework-mbed/features/netsocket/NetworkStack.h:23:0,
from C:/Users/mares/.platformio/packages/framework-mbed/features/netsocket/InternetSocket.h:24,
from C:/Users/mares/.platformio/packages/framework-mbed/features/netsocket/TCPSocket.h:23,
from src\main.cpp:18:
C:/Users/mares/.platformio/packages/framework-mbed/features/netsocket/NetworkInterface.h:29:7: note: forward declaration of 'class WiFiInterface'
class WiFiInterface;
^~~~~~~~~~~~~
src\main.cpp:56:19: error: invalid use of incomplete type 'class WiFiInterface'
count = wifi->scan(ap, count);
^~~~
In file included from C:/Users/mares/.platformio/packages/framework-mbed/features/netsocket/NetworkStack.h:23:0,
from C:/Users/mares/.platformio/packages/framework-mbed/features/netsocket/InternetSocket.h:24,
from C:/Users/mares/.platformio/packages/framework-mbed/features/netsocket/TCPSocket.h:23,
from src\main.cpp:18:
C:/Users/mares/.platformio/packages/framework-mbed/features/netsocket/NetworkInterface.h:29:7: note: forward declaration of 'class WiFiInterface'
class WiFiInterface;
^~~~~~~~~~~~~
src\main.cpp:65:14: error: type '<type error>' argument given to 'delete', expected pointer
delete[] ap;
^~
src\main.cpp: In function 'int main()':
src\main.cpp:97:20: error: cannot convert 'ESP8266Interface*' to 'WiFiInterface*' for argument '1' to 'void scan_demo(WiFiInterface*)'
scan_demo(&wifi);
^
src\main.cpp:113:20: error: cannot convert 'ESP8266Interface*' to 'NetworkInterface*' for argument '1' to 'void http_demo(NetworkInterface*)'
http_demo(&wifi);
^
*** [.pioenvs\nucleo_f429zi\src\main.o] Error 1
====================================================================================================== [ERROR] Took 34.21 seconds ======================================================================================================
The terminal process terminated with exit code: 1
Terminal will be reused by tasks, press any key to close it.