|
|
|
|
@ -120,12 +120,18 @@ void button_handler(struct Button* handle)
|
|
|
|
|
/**
|
|
|
|
|
* @brief Start the button work, add the handle into work list.
|
|
|
|
|
* @param btn: target handle strcut.
|
|
|
|
|
* @retval None
|
|
|
|
|
* @retval 0: succeed. -1: already exist.
|
|
|
|
|
*/
|
|
|
|
|
void button_start(struct Button* btn)
|
|
|
|
|
int button_start(struct Button* btn)
|
|
|
|
|
{
|
|
|
|
|
struct Button* target = head_handle;
|
|
|
|
|
while(target) {
|
|
|
|
|
if(target == btn) return -1; //already exist.
|
|
|
|
|
target = target->next;
|
|
|
|
|
}
|
|
|
|
|
btn->next = head_handle;
|
|
|
|
|
head_handle = btn;
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
@ -158,74 +164,4 @@ void button_ticks()
|
|
|
|
|
button_handler(target);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
|
|
|
|
|
struct Button btn1;
|
|
|
|
|
struct Button btn2;
|
|
|
|
|
struct Button btn3;
|
|
|
|
|
|
|
|
|
|
void main()
|
|
|
|
|
{
|
|
|
|
|
button_init(&btn1, read_K1_pin, 0);
|
|
|
|
|
button_attach(&btn1, CLICK, BTN1_Click_Handler);
|
|
|
|
|
button_attach(&btn1, DOUBLE_CLICK, BTN1_DOUBLE_Click_Handler);
|
|
|
|
|
button_attach(&btn1, LONG_RRESS_START, BTN1_LONG_RRESS_START_Handler);
|
|
|
|
|
button_attach(&btn1, LONG_PRESS_HOLD, BTN1_LONG_PRESS_HOLD_Handler);
|
|
|
|
|
button_attach(&btn1, LONG_PRESS_STOP, BTN1_LONG_PRESS_STOP_Handler);
|
|
|
|
|
button_start(&btn1);
|
|
|
|
|
|
|
|
|
|
button_init(&btn2, read_K2_pin, 0);
|
|
|
|
|
button_attach(&btn2, CLICK, BTN2_Click_Handler);
|
|
|
|
|
button_attach(&btn2, DOUBLE_CLICK, BTN2_DOUBLE_Click_Handler);
|
|
|
|
|
button_attach(&btn2, LONG_RRESS_START, BTN2_LONG_RRESS_START_Handler);
|
|
|
|
|
button_attach(&btn2, LONG_PRESS_HOLD, BTN2_LONG_PRESS_HOLD_Handler);
|
|
|
|
|
button_attach(&btn2, LONG_PRESS_STOP, BTN2_LONG_PRESS_STOP_Handler);
|
|
|
|
|
button_start(&btn2);
|
|
|
|
|
|
|
|
|
|
button_init(&btn3, read_K3_pin, 0);
|
|
|
|
|
button_attach(&btn3, CLICK, BTN3_Click_Handler);
|
|
|
|
|
button_attach(&btn3, DOUBLE_CLICK, BTN3_DOUBLE_Click_Handler);
|
|
|
|
|
button_attach(&btn3, LONG_RRESS_START, BTN3_LONG_RRESS_START_Handler);
|
|
|
|
|
button_attach(&btn3, LONG_PRESS_HOLD, BTN3_LONG_PRESS_HOLD_Handler);
|
|
|
|
|
button_attach(&btn3, LONG_PRESS_STOP, BTN3_LONG_PRESS_STOP_Handler);
|
|
|
|
|
button_start(&btn3);
|
|
|
|
|
|
|
|
|
|
//make the timer invoking the button_ticks() interval 5ms.
|
|
|
|
|
// timer_start(button_ticks, 0, 5);
|
|
|
|
|
|
|
|
|
|
while(1)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
button_stop(&btn1);
|
|
|
|
|
button_stop(&btn2);
|
|
|
|
|
button_stop(&btn3);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|