#pragma once #ifdef __cplusplus extern "C" { #endif #include "esp_err.h" // 按键引脚定义 #define PIN_BTN_BOOT 0 // GPIO0 BOOT按键(低电平有效) #define PIN_BTN_KEY2 4 // GPIO4 KEY2按键(低电平有效) // 界面上下文(决定按键行为) typedef enum { BTN_CTX_HOME, // Home界面 BTN_CTX_IMG, // Img浏览界面 BTN_CTX_SET, // 设置界面 BTN_CTX_PEIWANG, // 配对等待界面 BTN_CTX_IMAGE_SHAR, // 发送方等待配对 BTN_CTX_IMAGE_RECEPTION, // 接收方等待配对 BTN_CTX_SHARING, // 发送方传输中(不响应按键) BTN_CTX_RECEIVING, // 接收方接收中(不响应按键) BTN_CTX_UPDATE, // APP传图更新中(不响应按键) } btn_context_t; // 初始化按键驱动(KEY2使用iot_button,支持单击/双击/长按) esp_err_t dzbj_button_init(void); // 设置当前界面上下文(影响按键行为分发) void dzbj_button_set_context(btn_context_t ctx); // 获取当前界面上下文 btn_context_t dzbj_button_get_context(void); // 吧唧模式 BOOT 单击处理(唤醒屏幕 / 退出手电筒 / 各界面退出) void dzbj_boot_click_handler(void); // 注册BOOT+KEY2组合键模式切换(BOOT 2000ms长按时检测KEY2是否按下) void dzbj_button_register_mode_switch_combo(void *boot_handle); #ifdef __cplusplus } #endif