/*
 * Menu.hpp
 *
 *  Created on: Jun 8, 2024
 *      Author: Carst
 */

#ifndef MENU_HPP_
#define MENU_HPP_

#include <cstdint>

namespace ElektronischeLast
{
  class Menu
	{
    private:
      typedef enum
      {
        MenuLevel_Main,
        MenuLevel_Call,
        MenuLevel_ICallInit,
        MenuLevel_ICall,
        MenuLevel_UCallInit,
        MenuLevel_UCall,
        MenuLevel_ISoll,
      } MenuLevel_t;

			MenuLevel_t menu_level = MenuLevel_Main;

			uint32_t spannung = 0U;
			uint32_t strom = 0U;
			uint32_t temperatur = 0U;
			uint32_t geschwindigkeit = 0U;

	    uint32_t soll = 0U;
	    uint32_t cursor = 0U;

	    uint8_t configurations = 0U;

			void menu_main(void);
			void menu_call(void);
			void menu_icall_init(void);
			void menu_icall(void);
			void menu_ucall_init(void);
			void menu_ucall(void);
			void menu_isoll(void);

    public:
      void init(void);
      void run(void);
      void set_measurements(uint32_t spannung, uint32_t strom, uint32_t temperatur, uint32_t geschwindigkeit);
	};
}

#endif