Browse Source

update

Finny_test
zwsd 3 years ago
parent
commit
8d42c013b4
  1. 7
      main/app_main.cpp
  2. 24
      main/key.c
  3. 6
      main/key.h

7
main/app_main.cpp

@ -49,6 +49,7 @@ wifi_state_light_structer_t wifi_state_light_structer = {
T_key_structer_t T_key_structer = { T_key_structer_t T_key_structer = {
.key_before_state = false, .key_before_state = false,
.key_now_state = false, .key_now_state = false,
.key_start_time = 0,
}; };
/*********************************************************************************************************************** /***********************************************************************************************************************
@ -102,6 +103,10 @@ void process_key_event(void)
} }
} }
void process_key_long_press_event(void)
{
}
void T_reaction_schedule(void) void T_reaction_schedule(void)
{ {
if (reaction_structer.reaction_start_flag) if (reaction_structer.reaction_start_flag)
@ -127,7 +132,7 @@ extern "C" void app_main(void)
cover_init(); cover_init();
beep_init(); beep_init();
T_key_registered_cb(process_key_event);
T_key_registered_cb(process_key_event, process_key_long_press_event);
T_wifi_registered_cb(); T_wifi_registered_cb();
T_heating_plate_registered_cb(T_temp_get_data); T_heating_plate_registered_cb(T_temp_get_data);

24
main/key.c

@ -10,19 +10,23 @@
*/ */
#include "key.h" #include "key.h"
#include "port.h"
#define key_long_press_time_ms 5000
static T_key_structer_t *T_key_structer_s; static T_key_structer_t *T_key_structer_s;
static key_event_cb event_cb_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) void T_key_init(T_key_structer_t *T_key_structer)
{ {
T_key_structer_s = T_key_structer; T_key_structer_s = T_key_structer;
} }
void T_key_registered_cb(key_event_cb event_cb)
void T_key_registered_cb(key_event_cb short_press_event_cb, key_event_cb long_press_event_cb)
{ {
event_cb_s = 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_on_event(void)
@ -34,8 +38,18 @@ void T_key_schedule(void)
T_key_structer_s->key_now_state = T_key_get_level(); 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)) if ((T_key_structer_s->key_before_state != T_key_structer_s->key_now_state) && (T_key_structer_s->key_now_state == true))
{ {
event_cb_s();
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; T_key_structer_s->key_before_state = T_key_structer_s->key_now_state;
} }

6
main/key.h

@ -1,18 +1,20 @@
#pragma once #pragma once
#include "stdbool.h"
#include <stdbool.h>
#include <stdint.h>
typedef struct typedef struct
{ {
bool key_before_state; bool key_before_state;
bool key_now_state; bool key_now_state;
uint32_t key_start_time;
} T_key_structer_t; } T_key_structer_t;
typedef bool (*key_camera_cb)(void); typedef bool (*key_camera_cb)(void);
typedef void (*key_event_cb)(void); typedef void (*key_event_cb)(void);
void T_key_init(T_key_structer_t *T_key_structer); void T_key_init(T_key_structer_t *T_key_structer);
void T_key_registered_cb(key_event_cb event_cb);
void T_key_registered_cb(key_event_cb short_press_event_cb, key_event_cb long_press_event_cb);
void T_key_on_event(void); void T_key_on_event(void);
void T_key_schedule(void); void T_key_schedule(void);
bool T_key_get_level(void); bool T_key_get_level(void);
Loading…
Cancel
Save