Forráskód Böngészése

add:触屏支持自动识别屏幕方向

Dozingfiretruck 10 hónapja
szülő
commit
5e111a1b15

+ 13 - 2
components/tp/luat_lib_tp.c

@@ -118,8 +118,13 @@ static int l_tp_init(lua_State* L){
     if (lcd_conf){
         luat_tp_config->w = lcd_conf->w;
         luat_tp_config->h = lcd_conf->h;
-        if (lcd_conf->opts->direction90 || lcd_conf->opts->direction270){
-            luat_tp_config->swap_xy = 1;
+        luat_tp_config->direction = lcd_conf->direction;
+        if (lcd_conf->direction == LUAT_LCD_ROTATE_0 || lcd_conf->direction == LUAT_LCD_ROTATE_180){
+            luat_tp_config->w = lcd_conf->w;
+            luat_tp_config->h = lcd_conf->h;
+        }else{
+            luat_tp_config->w = lcd_conf->h;
+            luat_tp_config->h = lcd_conf->w;
         }
     }
 #endif
@@ -192,6 +197,12 @@ static int l_tp_init(lua_State* L){
     }
     lua_pop(L, 1);
 
+    // lua_pushstring(L, "swap_xy");
+    // if (LUA_TBOOLEAN == lua_gettable(L, 2)) {
+    //     luat_tp_config->swap_xy = lua_toboolean(L, -1);
+    // }
+    // lua_pop(L, 1);
+
     ret = luat_tp_init(luat_tp_config);
     if (ret){
         // luat_tp_deinit(luat_tp_config);

+ 16 - 0
components/tp/luat_tp.c

@@ -16,6 +16,22 @@ void luat_tp_task_entry(void* param){
         luat_rtos_message_recv(g_s_tp_task_handle, &message_id, &luat_tp_config, LUAT_WAIT_FOREVER);
         luat_tp_data_t* tp_data = luat_tp_config->tp_data;
         luat_tp_config->opts->read(luat_tp_config,tp_data);
+        uint16_t coordinate_tmp;
+
+        if (luat_tp_config->direction == LUAT_TP_ROTATE_90){
+            coordinate_tmp = tp_data->x_coordinate;
+            tp_data->x_coordinate = tp_data->y_coordinate;
+            tp_data->y_coordinate = luat_tp_config->w - coordinate_tmp;
+        }else if (luat_tp_config->direction == LUAT_TP_ROTATE_180){
+            coordinate_tmp = tp_data->y_coordinate;
+            tp_data->x_coordinate = luat_tp_config->w - tp_data->x_coordinate;
+            tp_data->y_coordinate = luat_tp_config->h - coordinate_tmp;
+        }else if (luat_tp_config->direction == LUAT_TP_ROTATE_270){
+            coordinate_tmp = tp_data->x_coordinate;
+            tp_data->x_coordinate = luat_tp_config->h - tp_data->y_coordinate;
+            tp_data->y_coordinate = coordinate_tmp;
+        }
+        
 
         if (luat_tp_config->callback == NULL){
         	luat_tp_config->opts->read_done(luat_tp_config);

+ 7 - 0
components/tp/luat_tp.h

@@ -10,6 +10,12 @@
 typedef struct luat_tp_config luat_tp_config_t;
 typedef struct luat_tp_opts luat_tp_opts_t;
 
+enum{
+    LUAT_TP_ROTATE_0 = 0,
+    LUAT_TP_ROTATE_90,
+    LUAT_TP_ROTATE_180,
+    LUAT_TP_ROTATE_270,
+};
 
 typedef struct{
 	uint32_t         timestamp;
@@ -28,6 +34,7 @@ typedef struct luat_tp_config{
     uint8_t pin_rst;
     uint8_t pin_int;
     uint8_t swap_xy;
+    uint8_t direction;  // 旋转方向(软件控制) 
     uint8_t refresh_rate;
     uint8_t tp_num;
     uint8_t int_type;

+ 1 - 1
components/tp/luat_tp_gt911.c

@@ -276,7 +276,7 @@ static int tp_gt911_init(luat_tp_config_t* luat_tp_config){
 		cfg_table[GT911_MODULE_SWITCH1 - GT911_CONFIG_REG] &= 0xFC;
 		cfg_table[GT911_MODULE_SWITCH1 - GT911_CONFIG_REG] |= 0x01;
 	}
-
+    LLOGD("swap_xy:%d",luat_tp_config->swap_xy);
 	// xy cordinate swap.
 	if (luat_tp_config->swap_xy){
 		cfg_table[GT911_MODULE_SWITCH1 - GT911_CONFIG_REG] &= 0xF7;