Forum: Mikrocontroller und Digitale Elektronik EventQueue Klasse für ESP32


von J. S. (jojos)


Lesenswert?

In Mbed bzw. dem Arduino Mbed-core gibt es die schöne EventQueue Klasse. 
Kennt jemand diese auch für das Arduino Framework für den ESP? Aber 
nicht das C event API.

Im Prinzip ist das eine Queue die mit Callbacks gefüllt wird und diese 
werden dann vom dispatcher aufgerufen. Zusätzlich gibt es aber noch 
geplante Ausführung nach einer angegebenen Zeit, also z.B.
1
    EventQueue q;
2
3
    // Aufruf z.B. in einer ISR
4
    q.call(printf, "ping\n");
5
    q.call_in(2s, printf, "pong\n");
6
7
    // Abarbeitung in main oder einem Thread
8
    q.dispatch_forever();

Der Teil mit den callbacks lässt sich vermutlich relativ einfach aus 
Mbed übernehmen, nur die Timing Funktionalität geht schon ins System.

von Cyblord -. (cyblord)


Lesenswert?

J. S. schrieb:
> In Mbed bzw. dem Arduino Mbed-core gibt es die schöne EventQueue Klasse.
> Kennt jemand diese auch für das Arduino Framework für den ESP?

Ist bei Arduino nicht alles open source? Warum nimmst du den Code davon 
dann nicht einfach?

von J. S. (jojos)


Lesenswert?

Cyblord -. schrieb:

> Ist bei Arduino nicht alles open source? Warum nimmst du den Code davon
> dann nicht einfach?

Weil ich ein fauler Informatiker bin...
Die Queue und die Callbacks sollten sich benutzen lassen, nur an dem 
Timer hängt ein größerer Rattenschwanz dran. Das call_in() und 
call_every() benutzt Timerklassen die es in Arduino nicht gibt und tief 
ins System gehen. Den Mbed Core gibt es nur für ARM Cortex-M, weil es ja 
auch von ARM kommt. Wenn es das trotzdem für ESP gibt, dann möchte ich 
das nicht neu erfinden.

edit:
und es scheint tatsächlich etwas zu geben. Es ist gar nicht so tief im 
System wie ich angenommen hatte und es ist Multi Kulti, es ist als 
eigenes Teilprojekt entstanden:
https://github.com/ARMmbed/mbed-events

: Bearbeitet durch User
von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

J. S. schrieb:
> Kennt jemand diese auch für das Arduino Framework für den ESP?
Die FreeRTOS Queue schmeckt dir nicht?
(die ist dabei)

von J. S. (jojos)


Lesenswert?

Die hat nicht die gezeigte Funktionalität.
Die EventQueue basiert auf einem Projekt von geky, und ist da auch für 
POSIX und FreeRTOS implementiert. Von daher sollte das auch für die ESP 
zu nutzen sein. In Mbed hat equeue einen C++ Wrapper und ist noch mit 
Callbacks kombiniert.

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.