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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.