Just installed and stuck already

I am looking for an alternative to the Arduino-IDE, and just installed UECIDE. However, I could not get very far, choking at the attempt of using library WebServer.

I reduced my "sketch" to just this line:

#include <WebServer.h>

and compiled. This is what I got:

• Error at line 37 in file WiFiServer.h:
‣ invalid abstract return type 'WiFiClient'

• Error at line 97 in file WebServer.h:
‣ invalid abstract return type 'WiFiClient'

• Error at line 166 in file WebServer.h:
‣ cannot declare field 'WebServer::_server' to be of abstract type 'WiFiServer'

• Error at line 168 in file WebServer.h:
‣ cannot declare field 'WebServer::_currentClient' to be of abstract type 'WiFiClient'

• Error at line 97 in file WebServer.h:
‣ invalid abstract return type for member function 'virtual WiFiClient WebServer::client()'

• Error at line 97 in file WebServer.h:
‣ cannot allocate an object of abstract type 'WiFiClient'

• Error at line 141 in file WebServer.h:
‣ 'class WiFiClient' has no member named 'write_P'

Well, the webserver runs without any problems in Arduio-IDE, and the line 37 from the first error message is an empty line in WiFiServer.h :-/

Where do I even look?

Comments

Sorry, missed this info in my

Sorry, missed this info in my frustration :-/

Desktop is Ubuntu 16.04.6 LTS (with Cinnamon). UECIDE was first 0.10.6 installed via repositories, and then updated with uecide_0.11.0-beta-5_all.deb. (No difference between the two).

Hardware is ESP32 Dev and Wrover Module. (same failure for both)

Even unmodified examples loaded from the File -> Examples menu give failures, e.g. loading BLE_server.ino:

• Error at line 17 in file FreeRTOS.h: ‣ freertos/ringbuf.h: No such file or directory

Same error for BLE_notify.ino, BLE_client.ino, BLE_scan.ino.

All the stuff that I am interested in ...

Hum... strange. I tried ESP32

Hum... strange. I tried ESP32 last night with a blank sketch including just WebServer.h and it compiled fine. I'll try with a fresh installation, see if it's something that is making it work in my setup and not in a blank one.

The FreeRTOS problem is a

The FreeRTOS problem is a completely separate one (a packaging problem), but I can't get WebServer.h to fail at all. Unless you have a rogue copy of another WebServer.h library that is being picked up (check the path stated when it compiles the library - it should be in <home>/.uecide/libraries/Communications/esp32/WebServer) I can't see where a problem would be.

Ok, I have built a new ESP32

Ok, I have built a new ESP32 core package that should fix the FreeRTOS Ringbuf problem (simply an include path was missing from the compilation commandline). Updating that in the Plugin Manager should fix that problem. Still no idea what is going on with your WebServer library though...

So, when I make a sketch with

So, when I make a sketch with just the #include <WebServer.h> line, and then recompile after a right-click on WebServer in the left panel, I get:

‣ WebServer [/home/ullix/Code/uecide/libraries/Communications/esp32/WebServer]
• Error at line 37 in file WiFiServer.h:
‣ invalid abstract return type 'WiFiClient'

The path is where all the code resides installed coming with uecide; no changes from my side. I am attaching this WebServer directory.

Attachments: 

UECIDE's internal library

UECIDE's internal library files installed from the Plugin Manager as part of a core should be installed in /home/ullix/.uecide/libraries not in /home/ullix/Code/uecide - unless you have changed the preferences or specified a --datadir command line option. How did the files get to where they are being shown?

I won't exclude that I had

I won't exclude that I had messed the installation up, but don't really know.

I restarted by de-installing the 0.11.0 Beta 5 version, and deleted everything from uecide that I could find. Then installed the 0.10.6 version from repository.

Almost all of my sketches do compile now - GREAT!!! - , with one exception: BLE_client from the uecide examples - the other BLE examples server and notify compile fine - throws this error message:

Compiling...
• Preprocessing...
• Converting binary files
• Compiling sketch...
• Error at line 8 in file BLE_client_proto.h:
‣ expected constructor, destructor, or type conversion before ';' token
Compiling Failed

The complete BLE_client_proto.h is this:

#ifndef _UECIDE_FUNCTION_PROTOTYPES
#define _UECIDE_FUNCTION_PROTOTYPES
// This should be inserted at line 22
bool connectToServer();
void loop();
notifyCallback( BLERemoteCharacteristic* pBLERemoteCharacteristic, uint8_t* pData, size_t length, bool isNotify);
void setup();
#endif

No error thrown when run in the Arduino-IDE

There's something about that

There's something about that function that the prototype parser doesn't like at the moment. Probably something to do with the position of the *. I'll look into it, but for now if you change the function so each of the * are next to the variable name not the type it should fix it. Also put all the parameters on one line.

static void notifyCallback(BLERemoteCharacteristic *pBLERemoteCharacteristic, uint8_t *pData, size_t length, bool isNotify) {

The solution is your easiest

The solution is your easiest proposal: Just put all parameters on one line! Doing only a single line break in the parameter list, results in the same error popping up!

OK. Now after my attempts for finding a better IDE than Arduino-IDE resulted in utter failures with Eclipse, Sloeber, and Platformio, and deep confusion with codebender, I guess I'll be a new uecide user who will eventually master its intricacies...

Compliments to all contributors, and hope you will have a long life to keep supporting your software :-))

Thanks :)

Thanks :)

We love it when people find these strange esoteric issues - it helps us refine the IDE to the point of perfection. Don't hesitate to raise any other questions and issues as you find them.

Right now I'm refactoring much of the internals of the IDE since some of the things that plugins rely on are being deprecated by Oracle.

Pages