Files
mimiclaw/main/buttons/button_driver.c
crispyberry c06f706ffd chore: remove dead code and fix unsafe patterns
- Remove unused context_build_messages() (superseded by direct cJSON in agent_loop)
- Remove unused llm_chat() and its helper extract_text_* functions (superseded by llm_chat_tools)
- Remove ota_manager.c from build (never called)
- Remove config_screen.c stub from build (no-op module)
- Remove unused PWR_KEY_State, Button_GPIO_Get_Level; drop config_screen dependency from button_driver
- Fix incorrect type cast in tool_get_time.c (char[64] cast to char**)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21 17:11:15 +08:00

63 lines
1.9 KiB
C

#include "buttons/button_driver.h"
#include "esp_err.h"
#include "esp_log.h"
#include "esp_timer.h"
#include "driver/gpio.h"
static void ESP32_Button_init(void){
gpio_reset_pin(Button_PIN1);
gpio_set_direction(Button_PIN1, GPIO_MODE_INPUT);
gpio_set_pull_mode(Button_PIN1, GPIO_PULLUP_ONLY);
}
static void Timer_Callback(void *arg){
button_ticks();
}
struct Button BUTTON1;
PressEvent BOOT_KEY_State;
static uint8_t Read_Button_GPIO_Level(uint8_t button_id)
{
if(!button_id)
return (uint8_t)(gpio_get_level(Button_PIN1));
return 0;
}
static void Button_SINGLE_CLICK_Callback(void* btn){
struct Button *user_button = (struct Button *)btn;
if(user_button == &BUTTON1){
BOOT_KEY_State = SINGLE_CLICK;
}
}
static void Button_DOUBLE_CLICK_Callback(void* btn){
struct Button *user_button = (struct Button *)btn;
if(user_button == &BUTTON1){
BOOT_KEY_State = DOUBLE_CLICK;
}
}
static void Button_LONG_PRESS_START_Callback(void* btn){
struct Button *user_button = (struct Button *)btn;
if(user_button == &BUTTON1){
BOOT_KEY_State= LONG_PRESS_START;
}
}
void button_Init(void)
{
ESP32_Button_init();
button_init(&BUTTON1, Read_Button_GPIO_Level, 0 , 0);
button_attach(&BUTTON1, SINGLE_CLICK, Button_SINGLE_CLICK_Callback);
button_attach(&BUTTON1, DOUBLE_CLICK, Button_DOUBLE_CLICK_Callback);
button_attach(&BUTTON1, LONG_PRESS_START, Button_LONG_PRESS_START_Callback);
const esp_timer_create_args_t clock_tick_timer_args =
{
.callback = &Timer_Callback,
.name = "Timer_task",
.arg = NULL,
};
esp_timer_handle_t clock_tick_timer = NULL;
ESP_ERROR_CHECK(esp_timer_create(&clock_tick_timer_args, &clock_tick_timer));
ESP_ERROR_CHECK(esp_timer_start_periodic(clock_tick_timer, 1000 * 5));
BOOT_KEY_State = NONE_PRESS;
button_start(&BUTTON1);
}