Forum: Mikrocontroller und Digitale Elektronik ESP8266: cont_yield verursacht neuerdings Fehler


von Helmut -. (dc3yc)


Lesenswert?

Hallo,

ein ESP8266-Programm, das sich früher (vor ca. 2 Jahren) mit der 
Arduino-IDE ohne Fehler compilieren ließ, wirft nun folgenden Fehler:
1
In file included from D:\Micros\Arduino_Projekte\libraries\ESP8266Scheduler\src/Scheduler.h:5,
2
                 from D:\Micros\ESP8266_Projekte\MQTT\LED_Controller64_MQTT_OTA\LED_Controller64_MQTT_OTA.ino:8:
3
D:\Micros\Arduino_Projekte\libraries\ESP8266Scheduler\src/Task.h: In member function 'void Task::yield()':
4
D:\Micros\Arduino_Projekte\libraries\ESP8266Scheduler\src/Task.h:32:9: error: 'cont_yield' was not declared in this scope; did you mean 'can_yield'?
5
   32 |         cont_yield(&context);
6
      |         ^~~~~~~~~~

Ich verwende darin den ESP8266-Scheduler von Nicholas Wiersma. Hat sich 
da im ESP-SDK irgendwas geändert, dass es diese Funktion nicht mehr 
gibt? Und was müsste ich entsprechend anpassen?

Danke für eure Hilfe!

von Rainer W. (rawi)


Lesenswert?

Helmut -. schrieb:
> Und was müsste ich entsprechend anpassen?

Guck die Sourcen durch und prüfe, ob cont.h und der zugehörige Code 
eingebunden ist oder verwende deine alte Umgebung/Bibliotheken.

: Bearbeitet durch User
von Steve van de Grens (roehrmond)


Lesenswert?

Die Funktion cont_yield() kommt nicht vom Espressif SDK, sondern vom 
Ardiuno ESP8266 Core. Die Funktion wurde am 16.10.2021 in Version 3.1.2 
mit diesem Commit entfernt:
https://github.com/esp8266/Arduino/commit/c312a2eaf1356ceaafad7c4935fa850e087c84fe#diff-1e7aa14c3546219ddea33c784ef21dfcfe958d0a7c9fba700cadec77c09a8123L58

Da kannst du auch sehen, wodurch sie ersetzt wurde. Vielleicht kannst du 
die selbe Änderung auch an deinem Scheduler vornehmen.

: Bearbeitet durch User
von Helmut -. (dc3yc)


Lesenswert?

Rainer W. schrieb:
> Guck die Sourcen durch und prüfe, ob cont.h und der zugehörige Code
> eingebunden ist oder verwende deine alte Umgebung/Bibliotheken.

Nicht zielführende und unsinnige Antwort. Wenn ich wüsste, welche libs 
und Versionen ich damals verwendet hatte, müsste ich die Frage nicht 
stellen.

von Joachim B. (jar)


Lesenswert?

Helmut -. schrieb:
> Wenn ich wüsste, welche libs
> und Versionen ich damals verwendet hatte

hmmm, meine PET2001 Programme mit peek und poke laufen auch nicht mehr

mir fällt auf

Helmut -. schrieb:
> D:\Micros\Arduino_Projekte\libraries\ESP8266Scheduler\src/Task.h:

slash / und backslash \ in einer Zeile stehen, Computerwechsel von Linux 
zu Windows?

von Steve van de Grens (roehrmond)


Lesenswert?

Joachim B. schrieb:
> mir fällt auf, dass  slash / und backslash \ in einer Zeile stehen

Das ist eine Eigenart der Arduino IDE. Windows unterstützt inzwischen 
beides.

von Helmut -. (dc3yc)


Lesenswert?

Steve van de Grens schrieb:
> Die Funktion cont_yield() kommt nicht vom Espressif SDK, sondern vom
> Ardiuno ESP8266 Core. Die Funktion wurde am 16.10.2021 in Version 3.1.2
> mit diesem Commit entfernt:
> 
https://github.com/esp8266/Arduino/commit/c312a2eaf1356ceaafad7c4935fa850e087c84fe#diff-1e7aa14c3546219ddea33c784ef21dfcfe958d0a7c9fba700cadec77c09a8123L58

Das war die Lösung, Danke!!!

Nachdem ich die ESP8266 Board Def 2.6.2 geladen hatte, ging alles 
sauber.
So ein shit der Arduinisten, einfach eine globale Funktion umzubenennen, 
ohne einen Würgaround einzubauen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.