#include #include #include "user_button.h" #include "iot_button.h" #include "esp_log.h" #include "freertos/FreeRTOS.h" #include "freertos/task.h" #include "freertos/queue.h" #include "freertos/semphr.h" #include "freertos/timers.h" #include "../EPD//include/EPD.h" static const char *LOG_TAG = "user button"; extern QueueHandle_t button_Data_queue; extern SemaphoreHandle_t button_semaphore; static button_handle_t user_button_handle[KEY_NUM] = {0}; static button_handle_t user_powerbutton_handle[3] = {0}; TimerHandle_t btn_timer_handle; bool is_setting = false; bool is_reset_net = false;//配网 uint16_t adc_value[][2]= { {BAOYANG_MIN_ADC,BAOYANG_MAX_ADC}, {FENGCUN_MIN_ADC,FENGCUN_MAX_ADC}, {GUZHUANG_MIN_ADC,GUZHANG_MAX_ADC}, {DAILIAO_MIN_ADC,DAILIAO_MAX_ADC}, {TINGJI_MIN_ADC,TINGJI_MAX_ADC}, {YUNXING_MIN_ADC,YUNXING_MAX_ADC}, }; uint16_t power_adc_value[][2]= { {0,100}, {1000,1900}, {2000,3063}, }; int find_key_value(int value) { int key = 0xff; for(int i =0 ;i<6;i++) { if( (adc_value[i][1]>=value)&& (adc_value[i][0]<=value) ) { key = i; printf("key vaule %d\r\n",i); break; } } return key; } static void user_button_single_click_cb(void *arg,void *usr_data); static void power_long_press_start_cb(void *arg,void *usr_data); static void power_long_press_hold_cb(void *arg,void *usr_data); static void power_long_press_up_cb(void *arg,void *usr_data); static void power_single_press_cb(void *arg,void *usr_data); static void user_button_single_UP_cb(void *arg,void *usr_data); static void power_button_multi_press_cb(void *arg,void *usr_data); static void power_left_single_press_cb(void *arg,void *usr_data) { printf("%s\r\n",__FUNCTION__); } static void power_right_single_press_cb(void *arg,void *usr_data) { printf("%s\r\n",__FUNCTION__); } int button_idx = 0; int power_button_idx = 0; int power_button_mult_time = 0; void btn_timer_Callback(TimerHandle_t xTimer) { ESP_LOGW(LOG_TAG, "btn_timer_Callback"); if(is_setting) { is_setting = false; } else if (is_reset_net) { is_reset_net = false; } is_setting = 0; //xTimerStop(btn_timer_handle,0); } void button_init(adc_oneshot_unit_handle_t adc_handle) { int i; printf("button_init\n"); #if 1 button_config_t adc_btn_cfg = { .type = BUTTON_TYPE_ADC, .long_press_time = CONFIG_BUTTON_LONG_PRESS_TIME_MS, .short_press_time = CONFIG_BUTTON_SHORT_PRESS_TIME_MS, .adc_button_config = { .adc_channel = 7, .adc_handle = &adc_handle, }, }; //左边6个按键初始化 for(i = 0;i < KEY_NUM ;i++) { adc_btn_cfg.adc_button_config.button_index = i; adc_btn_cfg.adc_button_config.min = adc_value[i][0] ; adc_btn_cfg.adc_button_config.max = adc_value[i][1] ; user_button_handle[i] = iot_button_create(&adc_btn_cfg); if(NULL == user_button_handle[i]) { printf( "Button create failed"); } button_idx = i; int ret = iot_button_register_cb( user_button_handle[i], BUTTON_PRESS_DOWN, user_button_single_click_cb,button_idx); //iot_button_register_cb( user_powerbutton_handle[i], BUTTON_LONG_PRESS_START, power_long_press_cb,button_idx); //iot_button_register_cb( user_button_handle[i], BUTTON_PRESS_UP, user_button_single_click_cb,button_idx); } #endif } void button_deinit(void) { printf("button_deinit\n"); for(int i=0;i