diff --git a/main/app_main.cpp b/main/app_main.cpp index 3942e02..e189b04 100644 --- a/main/app_main.cpp +++ b/main/app_main.cpp @@ -45,6 +45,18 @@ static void T_all_light_init(void) T_wifi_state_light_init(&wifi_state_light_structer); } +/* 有反应板的处理 */ +void process_camera_identifies_successful_event(void) {} + +/* 没有反应板的处理(加热) */ +void process_camera_identifies_failed_event(void) +{ + if (T_temp_get_data() <= 48.0) + { + T_heating_plate_start(); + } +} + extern "C" void app_main(void) { T_debug_light_init(); @@ -54,8 +66,7 @@ extern "C" void app_main(void) T_key_init(&T_key_structer); T_wifi_init(); T_temp_init(); - - T_key_registered_cb(camera_recognition_reaction_plate); + T_key_registered_cb(camera_recognition_reaction_plate, process_camera_identifies_successful_event, process_camera_identifies_failed_event); T_wifi_registered_cb(); while (true) diff --git a/main/key.c b/main/key.c index 038b18c..a3e7a8b 100644 --- a/main/key.c +++ b/main/key.c @@ -1,27 +1,31 @@ /** * @file key.c * @author Finny (tianjialong0106@163.com) - * @brief + * @brief * @version 0.1 * @date 2022-09-26 - * + * * @copyright Copyright (c) 2022 - * + * */ #include "key.h" static T_key_structer_t *T_key_structer_s; -static key_cb callback_s; +static key_camera_cb camera_callback_s; +static key_event_cb successful_event_cb_s; +static key_event_cb failed_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_cb cb) +void T_key_registered_cb(key_camera_cb camera_cb, key_event_cb successful_event_cb, key_event_cb failed_event_cb) { - callback_s = cb; + camera_callback_s = camera_cb; + successful_event_cb_s = successful_event_cb; + failed_event_cb_s = failed_event_cb; } void T_key_on_event(void) @@ -33,13 +37,13 @@ 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)) { - if (callback_s()) + if (camera_callback_s()) { - /* 有反应板的处理 */ + successful_event_cb_s(); } else { - /* 没有反应板的处理(加热) */ + failed_event_cb_s(); } } T_key_structer_s->key_before_state = T_key_structer_s->key_now_state; diff --git a/main/key.h b/main/key.h index 3950d1d..926c9f6 100644 --- a/main/key.h +++ b/main/key.h @@ -8,10 +8,11 @@ typedef struct bool key_now_state; } T_key_structer_t; -typedef bool (*key_cb)(void); +typedef bool (*key_camera_cb)(void); +typedef void (*key_event_cb)(void); void T_key_init(T_key_structer_t *T_key_structer); -void T_key_registered_cb(key_cb cb); +void T_key_registered_cb(key_camera_cb camera_cb, key_event_cb successful_event_cb, key_event_cb failed_event_cb); void T_key_on_event(void); void T_key_schedule(void); bool T_key_get_level(void); \ No newline at end of file