Wanted to try this example Prototyping with Sonar Proximity Sensor - MATLAB & Simulink - MathWorks Australia on an ESP32. I’m building this in PlatformIO (VSC) and get various error messages. When I first imported the code to VSC it complained that it couldn’t find WiFi.h so I included it in platformio.ini as follows.
lib_deps =
arduino-libraries/WiFi101 @ 0.16.1
NOTE: I have not compiled this in the Arduino IDE before so don’t know whether this code compiles or it’s an issue with my PlatformIO install/setup
Building in release mode
Compiling .pio\build\nodemcu-32s\src\watertanksensor.ino.cpp.o
Generating partitions .pio\build\nodemcu-32s\partitions.bin
Compiling .pio\build\nodemcu-32s\lib375\WiFi101\WiFi.cpp.o
Compiling .pio\build\nodemcu-32s\lib375\WiFi101\WiFiClient.cpp.o
Compiling .pio\build\nodemcu-32s\lib375\WiFi101\WiFiMDNSResponder.cpp.o
Compiling .pio\build\nodemcu-32s\lib375\WiFi101\WiFiSSLClient.cpp.o
Compiling .pio\build\nodemcu-32s\lib375\WiFi101\WiFiServer.cpp.o
Compiling .pio\build\nodemcu-32s\lib375\WiFi101\WiFiUdp.cpp.o
Compiling .pio\build\nodemcu-32s\lib375\WiFi101\bsp\source\nm_bsp_arduino.c.o
In file included from C:\Users\tfmei\.platformio\packages\framework-arduinoespressif32\tools\sdk\include\newlib/stdio.h:29:0,
from C:\Users\tfmei\.platformio\packages\framework-arduinoespressif32\cores\esp32/Arduino.h:27,
from .pio\libdeps\nodemcu-32s\WiFi101\src\utility/WiFiSocket.h:28,
from .pio\libdeps\nodemcu-32s\WiFi101\src\WiFiClient.cpp:20:
C:\Users\tfmei\.platformio\packages\framework-arduinoespressif32\tools\sdk\include\newlib/sys/unistd.h:30:9: error: conflicting declaration of C function 'int close(int)'
int _EXFUN(close, (int __fildes ));
^
In file included from .pio\libdeps\nodemcu-32s\WiFi101\src\utility/WiFiSocket.h:24:0,
from .pio\libdeps\nodemcu-32s\WiFi101\src\WiFiClient.cpp:20:
.pio\libdeps\nodemcu-32s\WiFi101\src/socket/include/socket.h:1839:15: note: previous declaration 'sint8 close(SOCKET)'
NMI_API sint8 close(SOCKET sock);
^
In file included from C:\Users\tfmei\.platformio\packages\framework-arduinoespressif32\tools\sdk\include\newlib/time.h:10:0,
from .pio\libdeps\nodemcu-32s\WiFi101\src\WiFi.cpp:28:
C:\Users\tfmei\.platformio\packages\framework-arduinoespressif32\tools\sdk\include\newlib/sys/unistd.h:30:9: error: conflicting declaration of C function 'int close(int)'
int _EXFUN(close, (int __fildes ));
^
In file included from .pio\libdeps\nodemcu-32s\WiFi101\src\utility/WiFiSocket.h:24:0,
from .pio\libdeps\nodemcu-32s\WiFi101\src\WiFi.cpp:36:
.pio\libdeps\nodemcu-32s\WiFi101\src/socket/include/socket.h:1839:15: note: previous declaration 'sint8 close(SOCKET)'
NMI_API sint8 close(SOCKET sock);
^
In file included from .pio\libdeps\nodemcu-32s\WiFi101\src/WiFiClient.h:28:0,
from .pio\libdeps\nodemcu-32s\WiFi101\src/WiFi101.h:35,
from C:/Users/tfmei/OneDrive/Documents/PlatformIO/Projects/210903-000154-nodemcu-32s/src/watertanksensor.ino:4:
.pio\libdeps\nodemcu-32s\WiFi101\src/socket/include/socket.h:1839:32: error: conflicting declaration of C function 'sint8 close(SOCKET)'
NMI_API sint8 close(SOCKET sock);
^
In file included from C:\Users\tfmei\.platformio\packages\framework-arduinoespressif32\tools\sdk\include\newlib/stdio.h:29:0,
from C:\Users\tfmei\.platformio\packages\framework-arduinoespressif32\cores\esp32/Arduino.h:27,
from C:\Users\tfmei\AppData\Local\Temp\tmp5ukpniga:1:
C:\Users\tfmei\.platformio\packages\framework-arduinoespressif32\tools\sdk\include\newlib/sys/unistd.h:30:9: note: previous declaration 'int close(int)'
int _EXFUN(close, (int __fildes ));
^
C:/Users/tfmei/OneDrive/Documents/PlatformIO/Projects/210903-000154-nodemcu-32s/src/watertanksensor.ino:17:21: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
char* writeAPIKey = "T3G1AGMZ7E70FLTX";
^
C:/Users/tfmei/OneDrive/Documents/PlatformIO/Projects/210903-000154-nodemcu-32s/src/watertanksensor.ino:18:20: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
char* readAPIKey = "8GN3TDS2B6OLS646";
^
C:/Users/tfmei/OneDrive/Documents/PlatformIO/Projects/210903-000154-nodemcu-32s/src/watertanksensor.ino: In function 'int connectWifi()':
C:/Users/tfmei/OneDrive/Documents/PlatformIO/Projects/210903-000154-nodemcu-32s/src/watertanksensor.ino:170:3: warning: no return statement in function returning non-void [-Wreturn-type]
}
^
*** [.pio\build\nodemcu-32s\src\watertanksensor.ino.cpp.o] Error 1
In file included from C:\Users\tfmei\.platformio\packages\framework-arduinoespressif32\tools\sdk\include\newlib/stdio.h:29:0,
from C:\Users\tfmei\.platformio\packages\framework-arduinoespressif32\cores\esp32/Arduino.h:27,
from .pio\libdeps\nodemcu-32s\WiFi101\src\utility/WiFiSocket.h:28,
from .pio\libdeps\nodemcu-32s\WiFi101\src\WiFiServer.cpp:20:
C:\Users\tfmei\.platformio\packages\framework-arduinoespressif32\tools\sdk\include\newlib/sys/unistd.h:30:9: error: conflicting declaration of C function 'int close(int)'
int _EXFUN(close, (int __fildes ));
^
In file included from .pio\libdeps\nodemcu-32s\WiFi101\src\utility/WiFiSocket.h:24:0,
from .pio\libdeps\nodemcu-32s\WiFi101\src\WiFiServer.cpp:20:
.pio\libdeps\nodemcu-32s\WiFi101\src/socket/include/socket.h:1839:15: note: previous declaration 'sint8 close(SOCKET)'
NMI_API sint8 close(SOCKET sock);
^
In file included from C:\Users\tfmei\.platformio\packages\framework-arduinoespressif32\tools\sdk\include\newlib/string.h:10:0,
from .pio\libdeps\nodemcu-32s\WiFi101\src\WiFiUdp.cpp:20:
C:\Users\tfmei\.platformio\packages\framework-arduinoespressif32\tools\sdk\include\newlib/sys/unistd.h:30:9: error: conflicting declaration of C function 'int close(int)'
int _EXFUN(close, (int __fildes ));
^
In file included from .pio\libdeps\nodemcu-32s\WiFi101\src\utility/WiFiSocket.h:24:0,
from .pio\libdeps\nodemcu-32s\WiFi101\src\WiFiUdp.cpp:22:
.pio\libdeps\nodemcu-32s\WiFi101\src/socket/include/socket.h:1839:15: note: previous declaration 'sint8 close(SOCKET)'
NMI_API sint8 close(SOCKET sock);
^
*** [.pio\build\nodemcu-32s\lib375\WiFi101\WiFiClient.cpp.o] Error 1
.pio\libdeps\nodemcu-32s\WiFi101\src\WiFi.cpp: In member function 'int WiFiClass::init()':
.pio\libdeps\nodemcu-32s\WiFi101\src\WiFi.cpp:303:46: error: invalid conversion from 'void (*)(uint8_t*, uint32_t) {aka void (*)(unsigned char*, unsigned int)}' to 'tpfAppResolveCb {aka void (*)(unsigned char*, long unsigned int)}' [-fpermissive]
registerSocketCallback(socket_cb, resolve_cb);
^
In file included from .pio\libdeps\nodemcu-32s\WiFi101\src\utility/WiFiSocket.h:24:0,
from .pio\libdeps\nodemcu-32s\WiFi101\src\WiFi.cpp:36:
.pio\libdeps\nodemcu-32s\WiFi101\src/socket/include/socket.h:1047:14: note: initializing argument 2 of 'void registerSocketCallback(tpfAppSocketCb, tpfAppResolveCb)'
NMI_API void registerSocketCallback(tpfAppSocketCb socket_cb, tpfAppResolveCb resolve_cb);
^
.pio\libdeps\nodemcu-32s\WiFi101\src\WiFi.cpp: At global scope:
.pio\libdeps\nodemcu-32s\WiFi101\src\WiFi.cpp:1133:10: error: prototype for 'uint32_t WiFiClass::getTime()' does not match any in class 'WiFiClass'
uint32_t WiFiClass::getTime()
^
In file included from .pio\libdeps\nodemcu-32s\WiFi101\src\WiFi.cpp:38:0:
.pio\libdeps\nodemcu-32s\WiFi101\src\WiFi101.h:157:16: error: candidate is: long unsigned int WiFiClass::getTime()
unsigned long getTime();
^
In file included from .pio\libdeps\nodemcu-32s\WiFi101\src\WiFiClient.h:28:0,
from .pio\libdeps\nodemcu-32s\WiFi101\src\WiFiSSLClient.h:23,
from .pio\libdeps\nodemcu-32s\WiFi101\src\WiFiSSLClient.cpp:20:
.pio\libdeps\nodemcu-32s\WiFi101\src\socket/include/socket.h:1839:32: error: conflicting declaration of C function 'sint8 close(SOCKET)'
NMI_API sint8 close(SOCKET sock);
^
In file included from C:\Users\tfmei\.platformio\packages\framework-arduinoespressif32\tools\sdk\include\newlib/stdio.h:29:0,
from C:\Users\tfmei\.platformio\packages\framework-arduinoespressif32\cores\esp32/Arduino.h:27,
from .pio\libdeps\nodemcu-32s\WiFi101\src\WiFiClient.h:23,
from .pio\libdeps\nodemcu-32s\WiFi101\src\WiFiSSLClient.h:23,
from .pio\libdeps\nodemcu-32s\WiFi101\src\WiFiSSLClient.cpp:20:
C:\Users\tfmei\.platformio\packages\framework-arduinoespressif32\tools\sdk\include\newlib/sys/unistd.h:30:9: note: previous declaration 'int close(int)'
int _EXFUN(close, (int __fildes ));
^
*** [.pio\build\nodemcu-32s\lib375\WiFi101\WiFi.cpp.o] Error 1
*** [.pio\build\nodemcu-32s\lib375\WiFi101\WiFiSSLClient.cpp.o] Error 1
In file included from .pio\libdeps\nodemcu-32s\WiFi101\src\WiFiClient.h:28:0,
from .pio\libdeps\nodemcu-32s\WiFi101\src\WiFi101.h:35,
from .pio\libdeps\nodemcu-32s\WiFi101\src\WiFiMDNSResponder.h:27,
from .pio\libdeps\nodemcu-32s\WiFi101\src\WiFiMDNSResponder.cpp:32:
.pio\libdeps\nodemcu-32s\WiFi101\src\socket/include/socket.h:1839:32: error: conflicting declaration of C function 'sint8 close(SOCKET)'
NMI_API sint8 close(SOCKET sock);
^
In file included from C:\Users\tfmei\.platformio\packages\framework-arduinoespressif32\tools\sdk\include\newlib/strings.h:10:0,
from .pio\libdeps\nodemcu-32s\WiFi101\src\WiFiMDNSResponder.cpp:28:
C:\Users\tfmei\.platformio\packages\framework-arduinoespressif32\tools\sdk\include\newlib/sys/unistd.h:30:9: note: previous declaration 'int close(int)'
int _EXFUN(close, (int __fildes ));
^
*** [.pio\build\nodemcu-32s\lib375\WiFi101\WiFiMDNSResponder.cpp.o] Error 1
*** [.pio\build\nodemcu-32s\lib375\WiFi101\WiFiServer.cpp.o] Error 1
*** [.pio\build\nodemcu-32s\lib375\WiFi101\WiFiUdp.cpp.o] Error 1
========================================================================================== [FAILED] Took 7.40 seconds
Is this an issue with my PlatformIO environment?