Files
RP2350_MIDI_Lighter/Firmware/Hierarchical_Menu.c
Christian Leibold 90bca063e6 - Added Solder Guides to the Housing
- Did some minor adjustments for better fitting
 - Added Select Value screen and initializes the infrastructure
2025-09-19 17:16:35 +02:00

128 lines
4.8 KiB
C

/*
* File: Hierarchical_Menu.c
*
* Created: Created: Sunday September 2025 07:47:28
* Author: Chris
*/
#include "Hierarchical_Menu.h"
// ============================================================================================
// Includes
#include "Screens.h"
#include "EEPROM_M24C64.h"
// ============================================================================================
// Forward Declaration
static const Menu_Item _Menu_Items_MIDI_Config[];
static const Menu_Item _Menu_Items_MIDI_Notes[];
static const Menu_Item _Menu_Items_MIDI_Pause[];
static const Menu_Item _Menu_Items_MIDI[];
static const Menu_List _Menu_List_MIDI_Config;
static const Menu_List _Menu_List_MIDI_Notes;
static const Menu_List _Menu_List_MIDI_Pause;
static const Menu_List _Menu_List_MIDI;
const Hierarchical_Menu _Hierarchical_Menu_MIDI;
// ============================================================================================
// Variables Configuration
static const Menu_Configuration_Select_Value _Select_Value_Fade_Speed = {
.Min = 1,
.Max = UINT8_MAX,
.Format = "%u"
};
// ============================================================================================
// Variables Hierarchical Menu
static const Menu_Item _Menu_Items_MIDI_Config[] = {
{ "MIDI Channel" , NULL, false, &_Menu_List_MIDI_Config, NONE, "", NULL, NULL },
{ "Select Octave" , NULL, false, &_Menu_List_MIDI_Config, NONE, "", NULL, NULL },
{ "Skip Note Off" , NULL, false, &_Menu_List_MIDI_Config, BOOL, "Skip Note Off", (void*)(&_EEPROM_Content.Channel_MIDI_Configuration[0].Skip_Note_Off_Event), NULL },
{ "Back" , NULL, true , &_Menu_List_MIDI_Config, NONE, "", NULL, NULL }
};
static const Menu_List _Menu_List_MIDI_Config = {
.Title = "MIDI Config",
.Items = _Menu_Items_MIDI_Config,
.Item_Count = sizeof(_Menu_Items_MIDI_Config) / sizeof(Menu_Item),
.Parent = &_Menu_Items_MIDI[0],
.Root = &_Hierarchical_Menu_MIDI
};
static const Menu_Item _Menu_Items_MIDI_Notes[] = {
{ "Red" , NULL, false, &_Menu_List_MIDI_Notes, NONE, "", NULL, NULL },
{ "Green" , NULL, false, &_Menu_List_MIDI_Notes, NONE, "", NULL, NULL },
{ "Blue" , NULL, false, &_Menu_List_MIDI_Notes, NONE, "", NULL, NULL },
{ "Default Notes" , NULL, false, &_Menu_List_MIDI_Notes, NONE, "", NULL, NULL },
{ "Back" , NULL, true , &_Menu_List_MIDI_Notes, NONE, "", NULL, NULL }
};
static const Menu_List _Menu_List_MIDI_Notes = {
.Title = "Color Notes",
.Items = _Menu_Items_MIDI_Notes,
.Item_Count = sizeof(_Menu_Items_MIDI_Notes) / sizeof(Menu_Item),
.Parent = &_Menu_Items_MIDI[1],
.Root = &_Hierarchical_Menu_MIDI
};
static const Menu_Item _Menu_Items_MIDI_Pause[] = {
{ "Enable" , NULL, false, &_Menu_List_MIDI_Pause, BOOL, "Enable Pause Light", (void*)(&_EEPROM_Content.Pause_Light_Configuration[0].Enabled), NULL },
{ "Color" , NULL, false, &_Menu_List_MIDI_Pause, RGB , "Pause Light Color", (void*)(&_EEPROM_Content.Pause_Light_Configuration[0].Color), NULL },
{ "Fade Speed" , NULL, false, &_Menu_List_MIDI_Pause, VALUE, "Pause Light Fade Speed", (void*)(&_EEPROM_Content.Pause_Light_Configuration[0].Fade_Speed), (void*)(&_Select_Value_Fade_Speed)},
{ "Timeout" , NULL, false, &_Menu_List_MIDI_Pause, NONE, "", NULL, NULL },
{ "Reset" , NULL, false, &_Menu_List_MIDI_Pause, NONE, "", NULL, NULL },
{ "Back" , NULL, true , &_Menu_List_MIDI_Pause, NONE, "", NULL, NULL }
};
static const Menu_List _Menu_List_MIDI_Pause = {
.Title = "Pause Light",
.Items = _Menu_Items_MIDI_Pause,
.Item_Count = sizeof(_Menu_Items_MIDI_Pause) / sizeof(Menu_Item),
.Parent = &_Menu_Items_MIDI[2],
.Root = &_Hierarchical_Menu_MIDI
};
static const Menu_Item _Menu_Items_MIDI[] = {
{ "MIDI Config" , &_Menu_List_MIDI_Config , false, &_Menu_List_MIDI },
{ "Color Notes" , &_Menu_List_MIDI_Notes , false, &_Menu_List_MIDI },
{ "Pause Light" , &_Menu_List_MIDI_Pause , false, &_Menu_List_MIDI },
{ "Back" , NULL , true , &_Menu_List_MIDI }
};
static const Menu_List _Menu_List_MIDI = {
.Title = "MIDI",
.Items = _Menu_Items_MIDI,
.Item_Count = sizeof(_Menu_Items_MIDI) / sizeof(Menu_Item),
.Parent = NULL,
.Root = &_Hierarchical_Menu_MIDI
};
const Hierarchical_Menu _Hierarchical_Menu_MIDI = {
.List = &_Menu_List_MIDI,
.Parent_Function = &Screen_Setup_Settings,
.Parent_Selected_Setting = 0
};
// ============================================================================================
// Function Declarations
/*******************************************************************
Functions
*******************************************************************/
/*******************************************************************
Internal Functions
*******************************************************************/