EventQueue Klasse für ESP32

OP #7372428
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.

OP #7372468
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

OP #7372509
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren