Handle buttons & encoders in View, not Model
This commit is contained in:
		
							
								
								
									
										24
									
								
								Core/Inc/STWButtonController.hpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								Core/Inc/STWButtonController.hpp
									
									
									
									
									
										Normal 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
 | 
			
		||||
@ -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
 | 
			
		||||
 | 
			
		||||
@ -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 _);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user