diff --git a/README.md b/README.md index c74d19b..41ee54d 100644 --- a/README.md +++ b/README.md @@ -118,7 +118,7 @@ int main() button_attach(&btn1, SINGLE_CLICK, BTN1_SINGLE_Click_Handler); button_attach(&btn1, DOUBLE_CLICK, BTN1_DOUBLE_Click_Handler); button_attach(&btn1, LONG_PRESS_START, BTN1_LONG_PRESS_START_Handler); - button_attach(&btn2, LONG_PRESS_HOLD, BTN1_LONG_PRESS_HOLD_Handler); + button_attach(&btn1, LONG_PRESS_HOLD, BTN1_LONG_PRESS_HOLD_Handler); button_start(&btn1); //make the timer invoking the button_ticks() interval 5ms. @@ -129,5 +129,3 @@ int main() {} } ``` - - diff --git a/examples/example_poll.c b/examples/example_poll.c index eb06029..8dec531 100644 --- a/examples/example_poll.c +++ b/examples/example_poll.c @@ -18,7 +18,7 @@ uint8_t read_button_GPIO(uint8_t button_id) int main() { - static uint8_t btn1_event_val; + static PressEvent btn1_event_val; button_init(&btn1, read_button_GPIO, 0, btn1_id); button_start(&btn1); diff --git a/multi_button.c b/multi_button.c index 6b09dc8..d1861e3 100644 --- a/multi_button.c +++ b/multi_button.c @@ -10,10 +10,12 @@ //button handle list head. static struct Button* head_handle = NULL; +static void button_handler(struct Button* handle); + /** * @brief Initializes the button struct handle. - * @param handle: the button handle strcut. - * @param pin_level: read the HAL GPIO of the connet button level. + * @param handle: the button handle struct. + * @param pin_level: read the HAL GPIO of the connected button level. * @param active_level: pressed GPIO level. * @param button_id: the button id. * @retval None @@ -30,7 +32,7 @@ void button_init(struct Button* handle, uint8_t(*pin_level)(uint8_t), uint8_t ac /** * @brief Attach the button event callback function. - * @param handle: the button handle strcut. + * @param handle: the button handle struct. * @param event: trigger event type. * @param cb: callback function. * @retval None @@ -42,7 +44,7 @@ void button_attach(struct Button* handle, PressEvent event, BtnCallback cb) /** * @brief Inquire the button event happen. - * @param handle: the button handle strcut. + * @param handle: the button handle struct. * @retval button event. */ PressEvent get_button_event(struct Button* handle) @@ -52,10 +54,10 @@ PressEvent get_button_event(struct Button* handle) /** * @brief Button driver core function, driver state machine. - * @param handle: the button handle strcut. + * @param handle: the button handle struct. * @retval None */ -void button_handler(struct Button* handle) +static void button_handler(struct Button* handle) { uint8_t read_gpio_level = handle->hal_button_Level(handle->button_id); @@ -69,7 +71,7 @@ void button_handler(struct Button* handle) handle->button_level = read_gpio_level; handle->debounce_cnt = 0; } - } else { //leved not change ,counter reset. + } else { //level not change ,counter reset. handle->debounce_cnt = 0; } @@ -93,7 +95,6 @@ void button_handler(struct Button* handle) EVENT_CB(PRESS_UP); handle->ticks = 0; handle->state = 2; - } else if(handle->ticks > LONG_TICKS) { handle->event = (uint8_t)LONG_PRESS_START; EVENT_CB(LONG_PRESS_START); @@ -131,7 +132,7 @@ void button_handler(struct Button* handle) } else { handle->state = 0; } - }else if(handle->ticks > SHORT_TICKS){ // long press up + } else if(handle->ticks > SHORT_TICKS) { // long press up handle->state = 0; } break; @@ -141,22 +142,21 @@ void button_handler(struct Button* handle) //continue hold trigger handle->event = (uint8_t)LONG_PRESS_HOLD; EVENT_CB(LONG_PRESS_HOLD); - } else { //releasd handle->event = (uint8_t)PRESS_UP; EVENT_CB(PRESS_UP); handle->state = 0; //reset } break; - default: - handle->state = 0; //reset - break; + default: + handle->state = 0; //reset + break; } } /** * @brief Start the button work, add the handle into work list. - * @param handle: target handle strcut. + * @param handle: target handle struct. * @retval 0: succeed. -1: already exist. */ int button_start(struct Button* handle) @@ -173,7 +173,7 @@ int button_start(struct Button* handle) /** * @brief Stop the button work, remove the handle off work list. - * @param handle: target handle strcut. + * @param handle: target handle struct. * @retval None */ void button_stop(struct Button* handle) @@ -181,12 +181,13 @@ void button_stop(struct Button* handle) struct Button** curr; for(curr = &head_handle; *curr; ) { struct Button* entry = *curr; - if (entry == handle) { + if(entry == handle) { *curr = entry->next; // free(entry); return;//glacier add 2021-8-18 - } else + } else { curr = &entry->next; + } } } @@ -195,7 +196,7 @@ void button_stop(struct Button* handle) * @param None. * @retval None */ -void button_ticks() +void button_ticks(void) { struct Button* target; for(target=head_handle; target; target=target->next) { diff --git a/multi_button.h b/multi_button.h index c468458..a5bfc99 100644 --- a/multi_button.h +++ b/multi_button.h @@ -11,7 +11,7 @@ //According to your need to modify the constants. #define TICKS_INTERVAL 5 //ms -#define DEBOUNCE_TICKS 3 //MAX 8 +#define DEBOUNCE_TICKS 3 //MAX 7 (0 ~ 7) #define SHORT_TICKS (300 /TICKS_INTERVAL) #define LONG_TICKS (1000 /TICKS_INTERVAL)