Handle buttons & encoders in View, not Model

This commit is contained in:
2023-03-07 21:58:28 +01:00
parent 38d3d765ad
commit d26339e265
19 changed files with 257 additions and 165 deletions

View File

@ -0,0 +1,24 @@
#ifndef __INC_STW_BUTTON_CONTROLLER_HPP
#define __INC_STW_BUTTON_CONTROLLER_HPP
#include "platform/driver/button/ButtonController.hpp"
#include <stdint.h>
constexpr uint8_t KEY_BTN1 = 1;
constexpr uint8_t KEY_BTN2 = 2;
constexpr uint8_t KEY_BTN3 = 3;
constexpr uint8_t KEY_BTN4 = 4;
constexpr uint8_t KEY_BTN5 = 5;
constexpr uint8_t KEY_BTN6 = 6;
constexpr uint8_t KEY_ENC1_CW = 21;
constexpr uint8_t KEY_ENC1_CCW = 22;
constexpr uint8_t KEY_ENC2_CW = 23;
constexpr uint8_t KEY_ENC2_CCW = 24;
class STWButtonController : public touchgfx::ButtonController {
public:
virtual void init();
virtual bool sample(uint8_t &key);
};
#endif // __INC_STW_BUTTON_CONTROLLER_HPP

View File

@ -42,7 +42,7 @@ extern "C" {
/* Exported constants --------------------------------------------------------*/
/* USER CODE BEGIN EC */
extern volatile int ltdc_cb_triggered;
extern TX_QUEUE ui_queue;
extern TX_QUEUE gui_button_queue;
/* USER CODE END EC */
/* Exported macro ------------------------------------------------------------*/
@ -62,16 +62,12 @@ void Error_Handler(void);
/* Private defines -----------------------------------------------------------*/
#define ENC1A_Pin GPIO_PIN_3
#define ENC1A_GPIO_Port GPIOE
#define ENC1A_EXTI_IRQn EXTI3_IRQn
#define ENC1B_Pin GPIO_PIN_4
#define ENC1B_GPIO_Port GPIOE
#define ENC1B_EXTI_IRQn EXTI4_IRQn
#define ENC2A_Pin GPIO_PIN_5
#define ENC2A_GPIO_Port GPIOE
#define ENC2A_EXTI_IRQn EXTI9_5_IRQn
#define ENC2B_Pin GPIO_PIN_6
#define ENC2B_GPIO_Port GPIOE
#define ENC2B_EXTI_IRQn EXTI9_5_IRQn
#define BTN1_Pin GPIO_PIN_0
#define BTN1_GPIO_Port GPIOF
#define BTN2_Pin GPIO_PIN_1

View File

@ -12,12 +12,12 @@ extern "C" {
#define BUTTON_MIN_PRESS_TIME 50 // ms
#define ENC_MAX_PHASE 50 // ms
typedef enum { UMK_BTN_RELEASED, UMK_ENC_CW, UMK_ENC_CCW } UIMessageKind;
typedef enum { UMK_BTN_RELEASED, UMK_ENC_CW, UMK_ENC_CCW } ButtonMessageKind;
typedef struct {
UIMessageKind kind;
ButtonMessageKind kind;
int number;
} UIMessage;
} ButtonMessage;
void ui_thread_entry(ULONG _);