You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
59 lines
1.3 KiB
59 lines
1.3 KiB
/**
|
|
* @file key.c
|
|
* @author Finny (tianjialong0106@163.com)
|
|
* @brief
|
|
* @version 0.1
|
|
* @date 2022-09-26
|
|
*
|
|
* @copyright Copyright (c) 2022
|
|
*
|
|
*/
|
|
|
|
#include "key.h"
|
|
#include "port.h"
|
|
|
|
#define key_long_press_time_ms 5000
|
|
|
|
static T_key_structer_t *T_key_structer_s;
|
|
static key_event_cb short_press_event_cb_s;
|
|
static key_event_cb long_press_event_cb_s;
|
|
|
|
void T_key_init(T_key_structer_t *T_key_structer)
|
|
{
|
|
T_key_structer_s = T_key_structer;
|
|
}
|
|
|
|
void T_key_registered_cb(key_event_cb short_press_event_cb, key_event_cb long_press_event_cb)
|
|
{
|
|
short_press_event_cb_s = short_press_event_cb;
|
|
long_press_event_cb_s = long_press_event_cb;
|
|
}
|
|
|
|
void T_key_on_event(void)
|
|
{
|
|
}
|
|
|
|
void T_key_schedule(void)
|
|
{
|
|
T_key_structer_s->key_now_state = T_key_get_level();
|
|
if ((T_key_structer_s->key_before_state != T_key_structer_s->key_now_state) && (T_key_structer_s->key_now_state == true))
|
|
{
|
|
short_press_event_cb_s();
|
|
T_key_structer_s->key_start_time = port_get_ticket();
|
|
}
|
|
|
|
if (T_key_structer_s->key_now_state)
|
|
{
|
|
if (port_get_ticket() - T_key_structer_s->key_start_time > key_long_press_time_ms)
|
|
{
|
|
long_press_event_cb_s();
|
|
}
|
|
}
|
|
|
|
T_key_structer_s->key_before_state = T_key_structer_s->key_now_state;
|
|
}
|
|
|
|
bool T_key_get_level(void)
|
|
{
|
|
return false;
|
|
}
|