123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183 |
- #include "clock.h"
- #include "log.h"
- #include "gpio.h"
- #include "light.h"
- #include "btn.h"
- uint8 task_btn_id;
- #define KEY_DEMO_ONCE_TIMER 0x0001
- #define KEY_DEMO_CYCLE_TIMER 0x0002
- int last_release_btn_ind = -1;
- void evt_press_release(int i){
-
-
- last_release_btn_ind = i;
- osal_stop_timerEx(task_btn_id, BTN_EVT_TIME_CHECK);
- }
- void changeTemp(int i)
- {
- LOG("changeTemp \n");
- int temp = light_data.temp;
- switch (i)
- {
- case 0:
- temp = temp + 50;
- if (temp > 6500){ temp = 6500;}
- break;
- case 1:
- temp = temp - 50;
- if (temp < 2500){ temp = 2500;}
- break;
- default:
-
- break;
- }
- LOG("changeTemp temp=>>> %d\n", temp);
- temp_set(temp);
- }
- void changeLight(int i)
- {
- int light = light_data.light;
- switch (i)
- {
- case 0:
- light = light + 5;
- if (light > 100){ light = 100;}
- break;
- case 1:
- light = light - 5;
- if (light < 0){ light = 0;}
- break;
- default:
-
- break;
- }
- light_set(light);
- }
- static void key_press_evt(uint8_t i,key_evt_t key_evt)
- {
-
- switch(key_evt)
- {
- case HAL_KEY_EVT_PRESS:
-
- osal_start_timerEx(task_btn_id, BTN_EVT_TIME_CHECK, HAL_KEY_LONG_PRESS_TIME + TIME_CHECK_TEMP);
- changeLight(i);
-
- #ifdef HAL_KEY_SUPPORT_LONG_PRESS
- osal_start_timerEx(task_btn_id, KEY_DEMO_LONG_PRESS_EVT, HAL_KEY_LONG_PRESS_TIME);
- #endif
- break;
-
- case HAL_KEY_EVT_RELEASE:
-
- evt_press_release(i);
- break;
- #ifdef HAL_KEY_SUPPORT_LONG_PRESS
- case HAL_KEY_EVT_LONG_RELEASE:
-
- break;
- #endif
-
- default:
- LOG("unexpect\n");
- break;
- }
- }
- int btn_init(task_id){
- LOG("[btn_init]\n");
- task_btn_id = task_id;
-
- for (int i = 0; i < HAL_KEY_NUM; i++)
- {
- hal_gpio_pin_init(btn_pins[i], IE);
- key_state.key[i].pin = btn_pins[i];
- key_state.key[i].state = HAL_KEY_EVT_PRESS;
- key_state.key[i].idle_level = HAL_HIGH_IDLE;
- }
-
- key_state.task_id = task_btn_id;
- key_state.key_callbank = key_press_evt;
- key_init();
- return 1;
- }
- uint16 Key_ProcessEvent( uint8 task_id, uint16 events )
- {
- if(task_id != task_btn_id){
- return 0;
- }
- if( events & KEY_DEMO_ONCE_TIMER){
-
- osal_start_timerEx( task_btn_id, KEY_DEMO_ONCE_TIMER , 5000);
- return (events ^ KEY_DEMO_ONCE_TIMER);
- }
- if( events & KEY_DEMO_CYCLE_TIMER){
-
- return (events ^ KEY_DEMO_CYCLE_TIMER);
- }
-
- if( events & HAL_KEY_EVENT){
-
- for (uint8 i = 0; i < HAL_KEY_NUM; ++i){
- if ((key_state.temp[i].in_enable == TRUE)||
- (key_state.key[i].state == HAL_STATE_KEY_RELEASE_DEBOUNCE)){
- gpio_key_timer_handler(i);
- }
- }
- return (events ^ HAL_KEY_EVENT);
- }
- #ifdef HAL_KEY_SUPPORT_LONG_PRESS
- if( events & KEY_DEMO_LONG_PRESS_EVT){
-
- for (int i = 0; i <= HAL_KEY_NUM; i++){
-
- if(key_state.key[i].state == HAL_STATE_KEY_PRESS)
- {
- LOG("long press --- \n");
- osal_start_timerEx(task_btn_id, KEY_DEMO_LONG_PRESS_EVT, HAL_KEY_LONG_PRESS_TIME);
- }
- }
- return (events ^ KEY_DEMO_LONG_PRESS_EVT);
- }
- #endif
- if( events & BTN_EVT_TIME_CHECK){
-
- if(last_release_btn_ind != -1)
- {
-
- if (
- key_state.key[last_release_btn_ind].state == HAL_STATE_KEY_PRESS
- )
- {
-
- osal_start_timerEx(task_btn_id, BTN_EVT_TIME_CHECK, TIME_CHECK_TEMP);
- changeTemp(last_release_btn_ind);
- }
- }
-
- return (events ^ BTN_EVT_TIME_CHECK);
- }
-
- return 0;
- }
|