Status speichern/ Statusverwaltung

Hallo,

suche nach einer komfortablen Möglichkeit verschiedenste Status (Mehrzahl) zu speichern.

Ein Beispiel:

Ein Knopf soll drei LEDs nur dann ausschalten, wenn die Erste dieser LEDs momentan an ist und innerhalb der letzten Minute eine bestimmte Meldung per RS-232 ankam.

Es geht mir jetzt nicht darum, wie man diesen Code von der Logik her programmiert, sondern ob es hierbei ein "Patentrezept" im Bezug auf eine Art "Statusverwaltung" gibt.

Bis zu acht Status kann ich ja beispielsweise in einem Byte speichern, oder über einen einzelnen boolean halt einen Status, oder mehrere über ein Array,.. weiss momentan nicht, welchen Weg ich einschlagen soll.

In fast sämtlichen Fällen die ich momentan bearbeite, hat jeder einzelne Status meistens nur zwei Zustände.

Und in welchem Satz versteckt sich nun die Frage?

if(Satz && unterstrichen)
{
  frage = satz;
}

Gruß Chris

Für Status Sachen sind enums sehr praktisch (enumerated type, Aufzählungstyp)

typedef enum { LED, MESSAGE, LED_AND_MESSAGE, NONE } states;
states state = NONE;

Dann kannst du das machen:
state = LED;

Und das in der Funktion die deine Nachricht empfängt:

if(state == LED)
    state = LED_AND_MESSAGE;
else
    state = MESSAGE;

Oder das (für diese Anwendung vielleicht weniger relevant):

void function(uint8_t state)
{
    if(state == LED_AND_MESSAGE)
     .....
}

function(LED_AND_MESSAGE);

Was ich hier so sehe lösen viele Anfänger das mit Integer-Variablen, der dann Nummern zugewiesen werden. Das geht, aber mit enums hat man aussagekräftige Namen.

Is super! Danke vielmals. :slight_smile:

Gruß Chris