#include #include #include #include #include #include #include "bk_private/bk_init.h" #include #include #include #include #include "app_event.h" #include "media_app.h" #include "led_blink.h" #include "countdown.h" #include "components/bluetooth/bk_dm_bluetooth.h" #include "boarding_service.h" #include "bk_factory_config.h" #if CONFIG_AUD_INTF_SUPPORT_PROMPT_TONE #include "aud_intf.h" #include "aud_intf_types.h" #endif #if CONFIG_NETWORK_AUTO_RECONNECT #include "bk_genie_smart_config.h" #endif #include "bat_monitor.h" #include "bk_ota_private.h" #define TAG "app_evt" #define LOGI(...) BK_LOGI(TAG, ##__VA_ARGS__) #define LOGW(...) BK_LOGW(TAG, ##__VA_ARGS__) #define LOGE(...) BK_LOGE(TAG, ##__VA_ARGS__) #define LOGD(...) BK_LOGD(TAG, ##__VA_ARGS__) typedef struct { beken_thread_t thread; beken_queue_t queue; } app_evt_info_t; typedef struct { uint32_t event; uint32_t param; } app_evt_msg_t; extern void lvgl_app_init(void); extern void lvgl_app_deinit(void); extern bk_err_t agora_stop(void); extern bk_err_t video_turn_on(void); extern bk_err_t video_turn_off(void); static app_evt_info_t app_evt_info; //image recognition mode switch #define CONFIG_IR_MODE_SWITCH_TASK_PRIORITY 4 static beken_thread_t config_ir_mode_switch_thread_handle = NULL; uint8_t ir_mode_switching = 0; extern bool agora_runing; extern bool g_agent_offline; extern bool video_started; extern uint8_t lvgl_app_init_flag; bk_err_t app_event_send_msg(uint32_t event, uint32_t param) { bk_err_t ret; app_evt_msg_t msg; msg.event = event; msg.param = param; ret = rtos_push_to_queue(&app_evt_info.queue, &msg, BEKEN_NO_WAIT); if (BK_OK != ret) { LOGE("%s, %d : %d fail \n", __func__, __LINE__, event); return BK_FAIL; } return BK_FAIL; } void app_event_asr_evt_callback(media_app_evt_type_t event, uint32_t param) { LOGD("asr event callback: %x\n", event); /*Do not do anything blocking here */ switch (event) { case MEDIA_APP_EVT_ASR_WAKEUP_IND: app_event_send_msg(APP_EVT_ASR_WAKEUP, 0); break; case MEDIA_APP_EVT_ASR_STANDBY_IND: app_event_send_msg(APP_EVT_ASR_STANDBY, 0); break; } } static uint8_t ota_event_callback(evt_ota event_param) { switch(event_param) { case EVT_OTA_START: app_event_send_msg(APP_EVT_OTA_START, 0); break; case EVT_OTA_FAIL: app_event_send_msg(APP_EVT_OTA_FAIL, 0); break; case EVT_OTA_SUCCESS: app_event_send_msg(APP_EVT_OTA_SUCCESS, 0); break; default : break; } return 0; } static uint8_t battery_event_callback(evt_battery event_param) { switch(event_param) { case EVT_BATTERY_CHARGING: app_event_send_msg(APP_EVT_CHARGING, 0); break; case EVT_BATTERY_LOW_VOLTAGE: app_event_send_msg(APP_EVT_LOW_VOLTAGE, 0); break; case EVT_SHUTDOWN_LOW_BATTERY: app_event_send_msg(APP_EVT_SHUTDOWN_LOW_BATTERY, 0); break; default : break; } return 0; } #if CONFIG_OTA_DISPLAY_PICTURE_DEMO extern bk_err_t audio_turn_on(void); bk_err_t bk_ota_reponse_state_to_audio(int ota_state) { int ret = BK_FAIL; LOGI("%s ota_state :%d\n", __func__,ota_state); if(audio_turn_on() != BK_OK) { LOGE("%s audion turn off :%d\n", __func__); return ret; } switch (ota_state) { case APP_EVT_OTA_SUCCESS : //success #if CONFIG_AUD_INTF_SUPPORT_PROMPT_TONE ret = bk_aud_intf_voc_play_prompt_tone(AUD_INTF_VOC_OTA_UPDATE_SUCCESS); #endif break; case APP_EVT_OTA_FAIL : //fail #if CONFIG_AUD_INTF_SUPPORT_PROMPT_TONE ret = bk_aud_intf_voc_play_prompt_tone(AUD_INTF_VOC_OTA_UPDATE_FAIL); #endif break; default: break; } LOGI("%s complete %x\n", __func__, ret); return ret; } #endif //red:if high priority conflicts with low-priority, should stay at high priority states enum { WARNING_PROVIOSION_FAIL, //LED_FAST_BLINK_RED WARNING_WIFI_FAIL, //LED_FAST_BLINK_RED WARNING_RTC_CONNECT_LOST, //LED_FAST_BLINK_RED WARNING_AGENT_OFFLINE, //LED_FAST_BLINK_RED WARNING_AGENT_AGENT_START_FAIL, //LED_FAST_BLINK_RED WARNING_LOW_BATTERY, //LED_SLOW_BLINK_RED }warning_t; #define HIGH_PRIORITY_WARNING_MASK ((1<