Skip to content

Virtual functions in client.h are out of line with standard Arduino API #2755

@SRGDamia1

Description

@SRGDamia1

Hardware:

Board: ESP32
Core Installation version: 1.0.2
IDE name: PlatformIO
Flash Frequency: N/A
PSRAM enabled: N/A
Upload Speed: N/A
Computer OS: Linux (TravisCI)

Description:

I am working on TinyGSM - a cross-platform GSM client. Because the client.h file in the current ESP32 core does not match the standard Arduino API (https://github.com/arduino/ArduinoCore-API/blob/master/api/Client.h) the library can no longer be compiled by esp32 users.

NOTE: The ESP8266 core introduced the same problem in version 2.5.0. They are fixing it for 2.5.1 (esp8266/Arduino#5969)

Sketch: (leave the backquotes for code formatting)

#include <Arduino.h>

#define TINY_GSM_MODEM_SIM800
#include <TinyGsmClient.h>

void setup() {
}

void loop() {
}

Debug Messages:

Unable to compile because of undefined virtual functions:

/tmp/tmpgkfUuk/src/test_build.ino:11:15: error: cannot declare variable 'client' to be of abstract type 'TinyGsmA6::GsmClient'
TinyGsmClient client(modem);
^
In file included from lib/TinyGSM/src/TinyGsmClient.h:65:0,
from /tmp/tmpgkfUuk/src/test_build.ino:8:
lib/TinyGSM/src/TinyGsmClientA6.h:44:7: note:   because the following virtual functions are pure within 'TinyGsmA6::GsmClient':
class GsmClient : public Client
^
In file included from /home/travis/.platformio/packages/framework-arduinoespressif32/cores/esp32/Arduino.h:157:0,
from /tmp/tmpdTm4GS:1:
/home/travis/.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;
^
/home/travis/.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;
^

This was also mentioned in #2704.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions