#pragma once

#include "gpio_evaluateSwitch.hpp"
#include "buzzer.hpp"
#include "control.hpp"
#include "auto.hpp"
#include "config.hpp"
#include "joystick.hpp"
#include "types.hpp"




//  //===================================
//  //====== buttonCommands class =======
//  //===================================
//  //class which runs commands depending on the count a button was pressed
//  class buttonCommands {
//      public:
//          //--- constructor ---
//          buttonCommands (
//                  gpio_evaluatedSwitch * button_f,
//                  evaluatedJoystick * joystick_f,
//                  controlledArmchair * control_f,
//                  buzzer_t * buzzer_f,
//                  controlledMotor * motorLeft_f, 
//                  controlledMotor * motorRight_f
//                  ); 
//  
//          //--- functions ---
//          //the following function has to be started once in a separate task. 
//          //repeatedly evaluates and processes button events then takes the corresponding action
//          void startHandleLoop(); 
//  
//      private:
//          //--- functions ---
//          void action(uint8_t count, bool lastPressLong);
//  
//          //--- objects ---
//          gpio_evaluatedSwitch* button;
//          evaluatedJoystick* joystick;
//          controlledArmchair * control;
//          buzzer_t* buzzer;
//          controlledMotor * motorLeft;
//          controlledMotor * motorRight;
//  
//          //--- variables ---
//          uint8_t count = 0;
//          uint32_t timestamp_lastAction = 0;
//          enum class inputState_t {IDLE, WAIT_FOR_INPUT};
//          inputState_t state = inputState_t::IDLE;
//  
//  };