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.
|
|
#include <stdbool.h>
//
#include "camera.h"
extern "C" { #include "ble_spp_server_demo.h"
#include "light.h"
#include "key.h"
#include "wifi.h"
#include "heating_plate.h"
#include "temp.h"
#include "port.h"
}
#define REACTION_TIME_MS 10 * 60 * 1000
typedef struct { bool reaction_start_flag; uint32_t reaction_start_time;
} reaction_structer_t;
/***********************************************************************************************************************
* *******************************************************light******************************************************* * ***********************************************************************************************************************/ power_state_light_structer_t power_state_light_structer = { .state = ShutDown, .change_flag = false, }; heating_plate_state_light_structer_t heating_plate_state_light_structer = { .state = NoHeat, .change_flag = false, }; reaction_state_light_structer_t reaction_state_light_structer = { .state = NoReaction, .change_flag = false, }; wifi_state_light_structer_t wifi_state_light_structer = { .state = NotConnected, .change_flag = false, };
/***********************************************************************************************************************
* ********************************************************key******************************************************** * ***********************************************************************************************************************/ T_key_structer_t T_key_structer = { .key_before_state = false, .key_now_state = false, };
/***********************************************************************************************************************
* ***************************************************heating_plate*************************************************** * ***********************************************************************************************************************/ heating_plate_structer_t heating_plate_structer = { .heating_plate_preheat_start_flag = false, .heating_plate_preheat_finished_flag = false, };
/***********************************************************************************************************************
* *****************************************************reaction****************************************************** * ***********************************************************************************************************************/ reaction_structer_t reaction_structer = { .reaction_start_flag = false, .reaction_start_time = 0, };
static void T_all_light_init(void) { T_power_light_init(&power_state_light_structer); T_heating_plate_state_light_init(&heating_plate_state_light_structer); T_reaction_state_light_init(&reaction_state_light_structer); T_wifi_state_light_init(&wifi_state_light_structer); }
void process_key_event(void) { if (heating_plate_structer.heating_plate_preheat_finished_flag) { /* 加热完成 */ if (camera_recognition_reaction_plate()) { /* 识别有反应板放入 */ if (!reaction_structer.reaction_start_flag) { /* 未开始反应 */ reaction_structer.reaction_start_flag = true; reaction_structer.reaction_start_time = port_get_ticket(); } } else { /* 识别没有反应板放入 */ } } else { /* 加热未完成 */ T_heating_plate_start(); } }
void T_reaction_schedule(void) { if (reaction_structer.reaction_start_flag) { if ((port_get_ticket() - reaction_structer.reaction_start_time) >= REACTION_TIME_MS) { /* 反应完成 */ reaction_structer.reaction_start_flag = false; } } }
extern "C" void app_main(void) { T_debug_light_init(); T_all_light_init(); ble_spp_server_init(); camera_init(); T_key_init(&T_key_structer); T_wifi_init(); T_temp_init(); T_heating_plate_init(&heating_plate_structer);
T_key_registered_cb(process_key_event); T_wifi_registered_cb(); T_heating_plate_registered_cb(T_temp_get_data);
while (true) { T_debug_light_schedule(); T_key_schedule(); T_heating_plate_schedule(); T_reaction_schedule(); } }
|