Thank you very much for the fast answer.
This is the example, but how can i know which menu is entry is focused? and how would i connect the DATA _UP and DATA_DOWN Events to trigger those xmenu_inc and xmenu_dec functions...
//=================================================
uint8_t value = 0;
char buf[20];
// define callback procedure, which returns a menu entry with a value
const char *xmenu_value(uint8_t idx, uint8_t msg)
{
if ( msg == M2_STRLIST_MSG_GET_STR ) {
strcpy(buf, " Value: ");
itoa((int)value, buf+strlen(buf), 10);
return buf;
}
return "";
}
// define callback procedures which increment and decrement a value
const char *xmenu_inc(uint8_t idx, uint8_t msg) {
if ( msg == M2_STRLIST_MSG_SELECT ) {
value++;
}
return "";
}
const char *xmenu_dec(uint8_t idx, uint8_t msg) {
if ( msg == M2_STRLIST_MSG_SELECT ) {
value--;
}
return "";
}
//=================================================
// this is the overall menu structure for the X2L Menu
m2_xmenu_entry xmenu_data[] =
{
{ "Menu 1", NULL, NULL }, /* expandable main menu entry */
{ ".", NULL, xmenu_value }, /* The label of this menu line is returned by the callback procedure */
{ ". Inc", NULL, xmenu_inc }, /* This callback increments the value */
{ ". Dec", NULL, xmenu_dec }, /* This callback decrements the value */
{ "Menu 2", NULL, NULL },
{ ". Sub 2-1", &top_el_mnu1_sel, NULL },
{ ". Sub 2-2", &top_el_mnu2_sel, NULL},
{ ". Sub 2-3", &top_el_mnu3_sel, NULL },
{ NULL, NULL, NULL },
};