From: hcj <1224667075@qq.com> Date: Mon, 23 Dec 2024 09:23:19 +0000 (+0800) Subject: 修改按键投票机制,增加GPIO按键单独投票 X-Git-Tag: v1.3.113-repair_tp~62^2~10 X-Git-Url: http://git.snicker.com.cn/css/static/gitweb.css?a=commitdiff_plain;h=3a8d14bc587b83e2ec1bc752b499240d83de67b2;p=mirrors%2FFD230.git 修改按键投票机制,增加GPIO按键单独投票 --- diff --git a/code/sdk/drivers/chips/brandy/porting/button/button_porting.c b/code/sdk/drivers/chips/brandy/porting/button/button_porting.c index e319507e7..ea0e58763 100755 --- a/code/sdk/drivers/chips/brandy/porting/button/button_porting.c +++ b/code/sdk/drivers/chips/brandy/porting/button/button_porting.c @@ -320,14 +320,59 @@ static errcode_t porting_button_pmu_pwr_cfg(pin_t pin) return ERRCODE_SUCC; } -static void porting_button_add_veto(void) +static void porting_button_add_veto(uint8_t id) { - uapi_pm_add_sleep_veto(PM_ID_BUTTON); + if(id==0) + { + uint8_t cnt = pm_veto_get_id_cnt(PM_ID_BUTTON); + if(cnt==0) + { + uapi_pm_add_sleep_veto(PM_ID_BUTTON); + printf("PM_ID_BUTTON:%d\r\n",id); + } + else + { + printf(" porting_button_add_veto:%d\r\n",cnt); + } + } + else + { + + uint8_t cnt = pm_veto_get_id_cnt(PM_ID_BUTTON_GPIO); + if(cnt==0) + { + uapi_pm_add_sleep_veto(PM_ID_BUTTON_GPIO); + printf("PM_ID_BUTTON:%d\r\n",id); + } + else + { + printf(" porting_button_add_veto:%d\r\n",cnt); + } + } } -static void porting_button_remove_veto(void) +static void porting_button_remove_veto(uint8_t id) { - uapi_pm_remove_sleep_veto(PM_ID_BUTTON); + if(id==0) + { + uint8_t cnt = pm_veto_get_id_cnt(PM_ID_BUTTON); + for (int i = 0; i < cnt; i++) + { + uapi_pm_remove_sleep_veto(PM_ID_BUTTON); + } + printf("porting_button_remove_veto:%d\r\n",id); + } + else + { + uint8_t cnt = pm_veto_get_id_cnt(PM_ID_BUTTON_GPIO); + for (int i = 0; i < cnt; i++) + { + uapi_pm_remove_sleep_veto(PM_ID_BUTTON_GPIO); + } + printf("porting_button_remove_veto:%d\r\n",id); + } + + } button_peripheral_api g_brandy_button_api = { diff --git a/code/sdk/drivers/drivers/driver/button/button.c b/code/sdk/drivers/drivers/driver/button/button.c index 6e0fb2a0c..2a9ab717c 100644 --- a/code/sdk/drivers/drivers/driver/button/button.c +++ b/code/sdk/drivers/drivers/driver/button/button.c @@ -154,7 +154,7 @@ static void button_irq_callback(pin_t pin) button_api->button_clear_interrupt(pin); button_press_state_t press_state = button_get_press_state(pin); button_send_msg(BUTTON_PWREN_ID, press_state); - button_api->button_add_veto(); + button_api->button_add_veto(0); button_timer_start_check_released(); } @@ -179,7 +179,7 @@ static void button_gpio_callback(pin_t pin, uintptr_t param) osal_irq_restore(irq_sts); button_peripheral_api *button_api = button_port_get_api(); - button_api->button_add_veto(); + button_api->button_add_veto(1); button_timer_start(); } @@ -228,7 +228,7 @@ static void button_debounced_timer_callback(uint32_t data) button_timer_start(); } else { button_peripheral_api *button_api = button_port_get_api(); - button_api->button_remove_veto(); + button_api->button_remove_veto(1); } } @@ -243,7 +243,7 @@ static void button_check_released_timer_callback(uint32_t data) press_state = button_get_press_state(PIN_NONE); if (press_state == 1) { button_send_msg(1, RELEASED); - button_api->button_remove_veto(); + button_api->button_remove_veto(0); } else { button_timer_start_check_released(); } diff --git a/code/sdk/drivers/peripheral/button/button.c b/code/sdk/drivers/peripheral/button/button.c index e038cd5c6..88e8a4f8b 100644 --- a/code/sdk/drivers/peripheral/button/button.c +++ b/code/sdk/drivers/peripheral/button/button.c @@ -154,7 +154,8 @@ static void button_irq_callback(pin_t pin) button_api->button_clear_interrupt(pin); button_press_state_t press_state = button_get_press_state(pin); button_send_msg(BUTTON_PWREN_ID, press_state); - button_api->button_add_veto(); + printf("button_irq_callback pin\r\n"); + button_api->button_add_veto(0); button_timer_start_check_released(); } @@ -179,7 +180,7 @@ static void button_gpio_callback(pin_t pin, uintptr_t param) osal_irq_restore(irq_sts); button_peripheral_api *button_api = button_port_get_api(); - button_api->button_add_veto(); + button_api->button_add_veto(1); button_timer_start(); } @@ -228,7 +229,7 @@ static void button_debounced_timer_callback(uint32_t data) button_timer_start(); } else { button_peripheral_api *button_api = button_port_get_api(); - button_api->button_remove_veto(); + button_api->button_remove_veto(1); } } @@ -243,7 +244,7 @@ static void button_check_released_timer_callback(uint32_t data) press_state = button_get_press_state(PIN_NONE); if (press_state == 1) { button_send_msg(1, RELEASED); - button_api->button_remove_veto(); + button_api->button_remove_veto(0); } else { button_timer_start_check_released(); } diff --git a/code/sdk/drivers/peripheral/button/button.h b/code/sdk/drivers/peripheral/button/button.h index a32acabc0..4e644042f 100644 --- a/code/sdk/drivers/peripheral/button/button.h +++ b/code/sdk/drivers/peripheral/button/button.h @@ -72,8 +72,8 @@ typedef struct { button_press_state_t (*button_get_state)(pin_t pin); errcode_t (*button_register_callback)(pin_t pin, osal_irq_handler thread_handler); errcode_t (*button_unregister_callback)(pin_t pin); - void (*button_add_veto)(void); - void (*button_remove_veto)(void); + void (*button_add_veto)(uint8_t); + void (*button_remove_veto)(uint8_t); } button_peripheral_api; /** diff --git a/code/sdk/middleware/chips/brandy/pm/include/pm_definition.h b/code/sdk/middleware/chips/brandy/pm/include/pm_definition.h index 5517b07a1..9b49850f5 100755 --- a/code/sdk/middleware/chips/brandy/pm/include/pm_definition.h +++ b/code/sdk/middleware/chips/brandy/pm/include/pm_definition.h @@ -49,6 +49,7 @@ typedef enum { PM_ID_GSENSOR,//新增,加速计 PM_ID_CAT1,//Cat1 communication PM_ID_P_TEST,//产测 + PM_ID_BUTTON_GPIO,//gpio按键 PM_ID_MAX, } pm_id_t; diff --git a/code/sdk/middleware/chips/brandy/pm/pm.c b/code/sdk/middleware/chips/brandy/pm/pm.c index c07591e72..c72ad384e 100755 --- a/code/sdk/middleware/chips/brandy/pm/pm.c +++ b/code/sdk/middleware/chips/brandy/pm/pm.c @@ -238,6 +238,7 @@ const char* pm_id_name_arr[] ={ "PM_ID_GSENSOR",//新增,加速计 "PM_ID_CAT1",//Cat1 communication "PM_ID_P_TEST", + "PM_ID_BUTTON_GPIO",//GPIO按键 "PM_ID_MAX" };