Projekt: LCDMenuLib / LCDMenuLib2 ( LCDML ) - Menü mit mehreren Ebenen

Ich habe gerade nochmal ein wenig Zeit investiert und verschiedene Varianten ausprobiert.

Also ursprünglich war die Funktion in der Klasse als Private deklariert und öffentlich nicht verfügbar. Nachdem einige hier nachgefragt hatten habe ich die Funktion verschoben. Intern hängen von der Funktion aber viele Werte ab und mir ist bisher noch keine Möglichkeit bekannt, direkt die Funktions ID auszugeben außer diese mit einer if Abfrage zu verknüpfen.

Also im Moment gibt es keine andere Lösung wie die, die du bisher herausgefunden hast. Alternative müsste ich größere Teile der Lib verändert um die Funktionalität zu gewährleisten oder eine neue Variable die wieder ein Byte belegt hinzufügen, damit die Id getrennt gespeichert wird.

Die If Abfrage kann man auch schön in einer Makro Funktion verstecken. Diese müsste in der LCDMenuLib_makros.h eingefügt werden.

...
#ifndef LCDMenuLib_macros_h
#define LCDMenuLib_macros_h
...
// hier irgendwo einfügen wo platz ist
#define LCDMenuLib_getActiveFuncId()	((bitRead(LCDML.control,_LCDMenuLib_control_funcsetup) == 1)?LCDML.getFunction():_LCDMenuLib_NO_FUNC)

...

Sobald du nun das Makro im Programm aufrufst, liefert dir dies die Funktion ID, nur wenn die Funktion aktive ist.
Beispiel:

void loop()
{  
  //LCDMenuLib_control_analog();      /* lcd menu control - config in tab "LCDML_control" */
  //LCDMenuLib_control_digital();     /* lcd menu control - config in tab "LCDML_control" */ 
  LCDMenuLib_control_serial();        /* lcd menu control */  
  LCDMenuLib_loop();                  /* lcd function call */

  //other function ... for example simple threads ..
  // Ausgabe der Funktions ID, 255 => keine Funktion aktiv.
  Serial.println(LCDMenuLib_getActiveFuncId());  
}