Harden firmware state and transfer handling

This commit is contained in:
Julian Appel 2026-07-24 09:49:21 +02:00
parent 50dbf8fbee
commit ce5db617a1
27 changed files with 558 additions and 231 deletions

View file

@ -9,8 +9,10 @@
//
// Nebenläufigkeit:
// push() wird aus Encoder-ISRs und aus dem Matrixcallback im Loop aufgerufen.
// pop() läuft ebenfalls im Loop. Es gibt aktuell keine Critical Section für
// den Fall, dass ein Encoderinterrupt einen Matrix-Push unterbricht.
// Der Matrixcallback maskiert Interrupts während push(); Encoder-ISRs können
// sich auf dem Single-Core-M0+ nicht gleichpriorisiert gegenseitig unterbrechen.
// pop() läuft im Loop; ein gleichzeitig eintreffender Push wird spätestens
// im nächsten processEvents()-Durchlauf sichtbar.
#pragma once
#include "SEvent.h"
@ -31,6 +33,6 @@ public:
private:
static const uint8_t QUEUE_SIZE = 17; // 16 nutzbare Slots
SEvent m_buf[QUEUE_SIZE];
uint8_t m_head = 0; // Nächster Lese-Index (Consumer: pop)
uint8_t m_tail = 0; // Nächster Schreib-Index (Producer: push)
volatile uint8_t m_head = 0; // Nächster Lese-Index (Consumer: pop)
volatile uint8_t m_tail = 0; // Nächster Schreib-Index (Producer: push)
};