76 lines
2.2 KiB
C++
76 lines
2.2 KiB
C++
#pragma once
|
|
|
|
#include "gpio_evaluateSwitch.hpp"
|
|
#include "buzzer.hpp"
|
|
#include "control.hpp"
|
|
#include "motorctl.hpp"
|
|
#include "auto.hpp"
|
|
#include "joystick.hpp"
|
|
#include "chairAdjust.hpp"
|
|
|
|
|
|
|
|
//===================================
|
|
//====== buttonCommands class =======
|
|
//===================================
|
|
//class which runs commands depending on the count a button was pressed
|
|
class buttonCommands {
|
|
public:
|
|
//--- constructor ---
|
|
buttonCommands(
|
|
controlledArmchair *control_f,
|
|
evaluatedJoystick *joystick_f,
|
|
QueueHandle_t encoderQueue_f,
|
|
controlledMotor * motorLeft_f,
|
|
controlledMotor *motorRight_f,
|
|
cControlledRest *legRest_f,
|
|
cControlledRest *backRest_f,
|
|
buzzer_t *buzzer_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 ---
|
|
controlledArmchair * control;
|
|
evaluatedJoystick* joystick;
|
|
controlledMotor * motorLeft;
|
|
controlledMotor * motorRight;
|
|
buzzer_t* buzzer;
|
|
QueueHandle_t encoderQueue;
|
|
cControlledRest *legRest;
|
|
cControlledRest *backRest;
|
|
|
|
//--- variables ---
|
|
uint8_t count = 0;
|
|
uint32_t timestamp_lastAction = 0;
|
|
enum class inputState_t {IDLE, WAIT_FOR_INPUT};
|
|
inputState_t state = inputState_t::IDLE;
|
|
|
|
};
|
|
|
|
|
|
|
|
//======================================
|
|
//============ button task =============
|
|
//======================================
|
|
// struct with variables passed to task from main
|
|
typedef struct task_button_parameters_t
|
|
{
|
|
controlledArmchair *control;
|
|
evaluatedJoystick *joystick;
|
|
QueueHandle_t encoderQueue;
|
|
controlledMotor *motorLeft;
|
|
controlledMotor *motorRight;
|
|
cControlledRest *legRest;
|
|
cControlledRest *backRest;
|
|
buzzer_t *buzzer;
|
|
} task_button_parameters_t;
|
|
|
|
//task that handles the button interface/commands
|
|
void task_button( void * task_button_parameters ); |