语音唤醒改成你好小宝,添加语音打断功能
This commit is contained in:
parent
066f9766fc
commit
df32087901
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -26,13 +26,12 @@
|
||||
#include "bat_monitor.h"
|
||||
#include "bk_ota_private.h"
|
||||
#define TAG "app_evt"
|
||||
|
||||
#include "spi_led.h"//zhanyu
|
||||
#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;
|
||||
@ -48,12 +47,8 @@ typedef struct
|
||||
extern void lvgl_app_init(void);
|
||||
extern void lvgl_app_deinit(void);
|
||||
|
||||
|
||||
static app_evt_info_t app_evt_info;
|
||||
|
||||
|
||||
|
||||
|
||||
bk_err_t app_event_send_msg(uint32_t event, uint32_t param)
|
||||
{
|
||||
bk_err_t ret;
|
||||
@ -80,103 +75,110 @@ void app_event_asr_evt_callback(media_app_evt_type_t event, uint32_t param)
|
||||
|
||||
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;
|
||||
case MEDIA_APP_EVT_ASR_WAKEUP_IND:
|
||||
|
||||
bk_printf("MEDIA_APP_EVT_ASR_WAKEUP_IND_sent_abort_msg\n");
|
||||
sent_abort_msg();//zhanyu
|
||||
|
||||
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)
|
||||
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;
|
||||
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)
|
||||
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;
|
||||
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;
|
||||
}
|
||||
|
||||
//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_LOW_BATTERY, //LED_SLOW_BLINK_RED
|
||||
}warning_t;
|
||||
#define HIGH_PRIORITY_WARNING_MASK ((1<<WARNING_PROVIOSION_FAIL) | (1<<WARNING_WIFI_FAIL) | (1<<WARNING_RTC_CONNECT_LOST) | (1<<WARNING_AGENT_OFFLINE))
|
||||
#define LOW_PRIORITY_WARNING_MASK ((1<<WARNING_LOW_BATTERY))
|
||||
#define AI_RTC_CONNECT_LOST_FAIL (1<<WARNING_RTC_CONNECT_LOST)
|
||||
#define AI_AGENT_OFFLINE_FAIL (1<<WARNING_AGENT_OFFLINE)
|
||||
//green led, or red/green alternate led
|
||||
enum {
|
||||
INDICATES_WIFI_RECONNECT, //LED_FAST_BLINK_GREEN
|
||||
INDICATES_PROVISIONING, //LED_REG_GREEN_ALTERNATE
|
||||
INDICATES_POWER_ON, //LED_ON_GREEN default at power-on state, so green is always on
|
||||
INDICATES_STANDBY, //LED_SLOW_BLINK_GREEN
|
||||
INDICATES_AGENT_CONNECT, //LED_SLOW_BLINK_GREEN if at standby states, else clear it
|
||||
}indicates_t;
|
||||
// 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_LOW_BATTERY, // LED_SLOW_BLINK_RED
|
||||
} warning_t;
|
||||
#define HIGH_PRIORITY_WARNING_MASK ((1 << WARNING_PROVIOSION_FAIL) | (1 << WARNING_WIFI_FAIL) | (1 << WARNING_RTC_CONNECT_LOST) | (1 << WARNING_AGENT_OFFLINE))
|
||||
#define LOW_PRIORITY_WARNING_MASK ((1 << WARNING_LOW_BATTERY))
|
||||
#define AI_RTC_CONNECT_LOST_FAIL (1 << WARNING_RTC_CONNECT_LOST)
|
||||
#define AI_AGENT_OFFLINE_FAIL (1 << WARNING_AGENT_OFFLINE)
|
||||
// green led, or red/green alternate led
|
||||
enum
|
||||
{
|
||||
INDICATES_WIFI_RECONNECT, // LED_FAST_BLINK_GREEN
|
||||
INDICATES_PROVISIONING, // LED_REG_GREEN_ALTERNATE
|
||||
INDICATES_POWER_ON, // LED_ON_GREEN default at power-on state, so green is always on
|
||||
INDICATES_STANDBY, // LED_SLOW_BLINK_GREEN
|
||||
INDICATES_AGENT_CONNECT, // LED_SLOW_BLINK_GREEN if at standby states, else clear it
|
||||
} indicates_t;
|
||||
|
||||
#define COUNTDOWN_INFINITE 0xFFFFFFFF
|
||||
/* 新增倒计时票源类型,按照优先级排序*/
|
||||
typedef enum {
|
||||
COUNTDOWN_TICKET_PROVISIONING, // 配网倒计时(5分钟), 最高优先级
|
||||
COUNTDOWN_TICKET_NETWORK_ERROR, //网络错误倒计时(5分钟) ,中优先级
|
||||
COUNTDOWN_TICKET_STANDBY, // 待机倒计时(3分钟),低优先级
|
||||
COUNTDOWN_TICKET_OTA, // OTA 事件,特殊逻辑,不参与比较
|
||||
typedef enum
|
||||
{
|
||||
COUNTDOWN_TICKET_PROVISIONING, // 配网倒计时(5分钟), 最高优先级
|
||||
COUNTDOWN_TICKET_NETWORK_ERROR, // 网络错误倒计时(5分钟) ,中优先级
|
||||
COUNTDOWN_TICKET_STANDBY, // 待机倒计时(3分钟),低优先级
|
||||
COUNTDOWN_TICKET_OTA, // OTA 事件,特殊逻辑,不参与比较
|
||||
COUNTDOWN_TICKET_MAX
|
||||
} countdown_ticket_t;
|
||||
|
||||
/* <20><>ƱԴ<C6B1><D4B4>Ӧ<EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD>ʱʱ<CAB1><CAB1>(<28><><EFBFBD><EFBFBD>) */
|
||||
static const uint32_t s_ticket_durations[COUNTDOWN_TICKET_MAX] = {
|
||||
[COUNTDOWN_TICKET_PROVISIONING] = 5 * 60 * 1000, // 5分钟
|
||||
[COUNTDOWN_TICKET_NETWORK_ERROR] = 5 * 60 * 1000, // 5分钟
|
||||
[COUNTDOWN_TICKET_STANDBY] = 3 * 60 * 1000, // 3分钟
|
||||
[COUNTDOWN_TICKET_OTA] = COUNTDOWN_INFINITE, // 暂停倒计时
|
||||
[COUNTDOWN_TICKET_NETWORK_ERROR] = 5 * 60 * 1000, // 5分钟
|
||||
[COUNTDOWN_TICKET_STANDBY] = 3 * 60 * 1000, // 3分钟
|
||||
[COUNTDOWN_TICKET_OTA] = COUNTDOWN_INFINITE, // 暂停倒计时
|
||||
};
|
||||
|
||||
static uint32_t s_active_tickets = 0; // 使用位掩码记录活跃票源
|
||||
static uint32_t s_active_tickets = 0; // 使用位掩码记录活跃票源
|
||||
|
||||
/* 更新倒计时状态 */
|
||||
static void update_countdown()
|
||||
{
|
||||
|
||||
// 检查OTA暂停票(最高优先级)
|
||||
if(s_active_tickets & (1 << COUNTDOWN_TICKET_OTA)) {
|
||||
if (s_active_tickets & (1 << COUNTDOWN_TICKET_OTA))
|
||||
{
|
||||
LOGI("ota event start, stop countdown\r\n");
|
||||
stop_countdown();
|
||||
return;
|
||||
@ -185,12 +187,12 @@ static void update_countdown()
|
||||
static countdown_ticket_t last_selected_ticket = COUNTDOWN_TICKET_MAX;
|
||||
countdown_ticket_t selected_ticket = COUNTDOWN_TICKET_MAX;
|
||||
|
||||
|
||||
for(int i = 0; i < COUNTDOWN_TICKET_MAX; i++) {
|
||||
for (int i = 0; i < COUNTDOWN_TICKET_MAX; i++)
|
||||
{
|
||||
if (i == COUNTDOWN_TICKET_OTA)
|
||||
continue;
|
||||
|
||||
if(s_active_tickets & (1 << i))
|
||||
if (s_active_tickets & (1 << i))
|
||||
{
|
||||
selected_ticket = i;
|
||||
break;
|
||||
@ -198,7 +200,8 @@ static void update_countdown()
|
||||
}
|
||||
|
||||
// 应用倒计时裁决结果
|
||||
if(selected_ticket != COUNTDOWN_TICKET_MAX) {
|
||||
if (selected_ticket != COUNTDOWN_TICKET_MAX)
|
||||
{
|
||||
const uint32_t max_duration = s_ticket_durations[selected_ticket];
|
||||
|
||||
bool is_same_event = (selected_ticket == last_selected_ticket);
|
||||
@ -208,78 +211,89 @@ static void update_countdown()
|
||||
{
|
||||
const uint32_t duration = max_duration;
|
||||
start_countdown(duration);
|
||||
LOGI("selected_ticket is %d, last_selected_ticket is %d,duration is %d\r\n",selected_ticket , last_selected_ticket, duration);
|
||||
LOGI("selected_ticket is %d, last_selected_ticket is %d,duration is %d\r\n", selected_ticket, last_selected_ticket, duration);
|
||||
last_selected_ticket = selected_ticket;
|
||||
}
|
||||
} else {
|
||||
LOGI("selected_ticket is %d, COUNTDOWN_TICKET_MAX is %d\r\n",selected_ticket , COUNTDOWN_TICKET_MAX);
|
||||
}
|
||||
else
|
||||
{
|
||||
LOGI("selected_ticket is %d, COUNTDOWN_TICKET_MAX is %d\r\n", selected_ticket, COUNTDOWN_TICKET_MAX);
|
||||
LOGI("stop countdown\r\n");
|
||||
stop_countdown();
|
||||
last_selected_ticket = COUNTDOWN_TICKET_MAX;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
static void led_blink(uint32_t* warning_state, uint32_t indicates_state)
|
||||
static void led_blink(uint32_t *warning_state, uint32_t indicates_state)
|
||||
{
|
||||
static uint32_t last_warning_state = 0;
|
||||
static uint32_t last_indicates_state = (1<<INDICATES_POWER_ON);
|
||||
static uint32_t last_warning_state = 0;
|
||||
static uint32_t last_indicates_state = (1 << INDICATES_POWER_ON);
|
||||
|
||||
//indicates
|
||||
if(indicates_state & (1<<INDICATES_PROVISIONING))
|
||||
// indicates
|
||||
if (indicates_state & (1 << INDICATES_PROVISIONING))
|
||||
{
|
||||
led_app_set(LED_REG_GREEN_ALTERNATE, LED_LAST_FOREVER);
|
||||
}else if (HIGH_PRIORITY_WARNING_MASK & (*warning_state))
|
||||
}
|
||||
else if (HIGH_PRIORITY_WARNING_MASK & (*warning_state))
|
||||
{
|
||||
led_app_set(LED_OFF_GREEN, 0);
|
||||
}else{
|
||||
if(indicates_state & (1<<INDICATES_WIFI_RECONNECT))
|
||||
{
|
||||
led_app_set(LED_FAST_BLINK_GREEN, LED_LAST_FOREVER);
|
||||
}else if(indicates_state & ((1<<INDICATES_STANDBY) | (1<<INDICATES_AGENT_CONNECT)))
|
||||
{
|
||||
led_app_set(LED_SLOW_BLINK_GREEN, LED_LAST_FOREVER);
|
||||
}else
|
||||
}
|
||||
else
|
||||
{
|
||||
if (indicates_state & (1 << INDICATES_WIFI_RECONNECT))
|
||||
{
|
||||
led_app_set(LED_OFF_GREEN, 0);
|
||||
led_app_set(LED_FAST_BLINK_GREEN, LED_LAST_FOREVER);
|
||||
}
|
||||
else if (indicates_state & ((1 << INDICATES_STANDBY) | (1 << INDICATES_AGENT_CONNECT)))
|
||||
{
|
||||
led_app_set(LED_SLOW_BLINK_GREEN, LED_LAST_FOREVER);
|
||||
}
|
||||
else
|
||||
{
|
||||
led_app_set(LED_OFF_GREEN, 0);
|
||||
}
|
||||
}
|
||||
|
||||
//warning
|
||||
if (indicates_state & (1<<INDICATES_PROVISIONING))
|
||||
// warning
|
||||
if (indicates_state & (1 << INDICATES_PROVISIONING))
|
||||
{
|
||||
;
|
||||
}else if(HIGH_PRIORITY_WARNING_MASK & (*warning_state)){
|
||||
}
|
||||
else if (HIGH_PRIORITY_WARNING_MASK & (*warning_state))
|
||||
{
|
||||
led_app_set(LED_FAST_BLINK_RED, LED_LAST_FOREVER);
|
||||
}else if(LOW_PRIORITY_WARNING_MASK & (*warning_state)){
|
||||
}
|
||||
else if (LOW_PRIORITY_WARNING_MASK & (*warning_state))
|
||||
{
|
||||
led_app_set(LED_SLOW_BLINK_RED, LOW_VOLTAGE_BLINK_TIME);
|
||||
*warning_state = *warning_state & ~(1<<WARNING_LOW_BATTERY);
|
||||
}else{
|
||||
*warning_state = *warning_state & ~(1 << WARNING_LOW_BATTERY);
|
||||
}
|
||||
else
|
||||
{
|
||||
led_app_set(LED_OFF_RED, 0);
|
||||
}
|
||||
|
||||
if(indicates_state != last_indicates_state)
|
||||
{
|
||||
LOGI("indicate=%d,last_indicat=%d,warning_state=%d\r\n", indicates_state, last_indicates_state, *warning_state);
|
||||
last_indicates_state = indicates_state;
|
||||
}
|
||||
|
||||
if(*warning_state != last_warning_state)
|
||||
{
|
||||
LOGI("warning=%d,last_warning=%d,indicate=%d\r\n", *warning_state, last_warning_state, indicates_state);
|
||||
last_warning_state = *warning_state;
|
||||
}
|
||||
if (indicates_state != last_indicates_state)
|
||||
{
|
||||
LOGI("indicate=%d,last_indicat=%d,warning_state=%d\r\n", indicates_state, last_indicates_state, *warning_state);
|
||||
last_indicates_state = indicates_state;
|
||||
}
|
||||
|
||||
if (*warning_state != last_warning_state)
|
||||
{
|
||||
LOGI("warning=%d,last_warning=%d,indicate=%d\r\n", *warning_state, last_warning_state, indicates_state);
|
||||
last_warning_state = *warning_state;
|
||||
}
|
||||
}
|
||||
|
||||
static void app_event_thread(beken_thread_arg_t data)
|
||||
{
|
||||
int ret = BK_OK;
|
||||
int ret = BK_OK;
|
||||
|
||||
uint32_t is_standby = 1;
|
||||
|
||||
uint32_t warning_state = 0;
|
||||
uint32_t indicates_state = (1<<INDICATES_POWER_ON);
|
||||
uint32_t indicates_state = (1 << INDICATES_POWER_ON);
|
||||
|
||||
// uint32_t network_err = 0;
|
||||
uint32_t is_network_provisioning = 0;
|
||||
@ -302,209 +316,209 @@ static void app_event_thread(beken_thread_arg_t data)
|
||||
bool skip_countdown_update = false;
|
||||
switch (msg.event)
|
||||
{
|
||||
case APP_EVT_ASR_WAKEUP: //hi armino
|
||||
is_standby = 0;
|
||||
indicates_state &= ~((1<<INDICATES_STANDBY) | (1<<INDICATES_AGENT_CONNECT));
|
||||
s_active_tickets &= ~(1 << COUNTDOWN_TICKET_STANDBY);
|
||||
LOGI("APP_EVT_ASR_WAKEUP\n");
|
||||
case APP_EVT_ASR_WAKEUP: // hi armino
|
||||
is_standby = 0;
|
||||
indicates_state &= ~((1 << INDICATES_STANDBY) | (1 << INDICATES_AGENT_CONNECT));
|
||||
s_active_tickets &= ~(1 << COUNTDOWN_TICKET_STANDBY);
|
||||
LOGI("APP_EVT_ASR_WAKEUP\n");
|
||||
#if CONFIG_AUD_INTF_SUPPORT_PROMPT_TONE
|
||||
bk_aud_intf_voc_play_prompt_tone(AUD_INTF_VOC_ASR_WAKEUP);
|
||||
bk_aud_intf_voc_play_prompt_tone(AUD_INTF_VOC_ASR_WAKEUP);
|
||||
#endif
|
||||
bk_pm_module_vote_cpu_freq(PM_DEV_ID_AUDIO, PM_CPU_FRQ_480M);
|
||||
bk_wifi_sta_pm_disable();
|
||||
lvgl_app_init();
|
||||
if (!is_network_provisioning){
|
||||
led_app_set(LED_OFF_GREEN,0);
|
||||
}
|
||||
break;
|
||||
case APP_EVT_ASR_STANDBY: //byebye armino
|
||||
is_standby = 1;
|
||||
indicates_state |= (1<<INDICATES_STANDBY);
|
||||
indicates_state &= ~(1<<INDICATES_POWER_ON);
|
||||
s_active_tickets |= (1 << COUNTDOWN_TICKET_STANDBY);
|
||||
LOGI("APP_EVT_ASR_STANDBY\n");
|
||||
bk_pm_module_vote_cpu_freq(PM_DEV_ID_AUDIO, PM_CPU_FRQ_480M);
|
||||
bk_wifi_sta_pm_disable();
|
||||
lvgl_app_init();
|
||||
if (!is_network_provisioning)
|
||||
{
|
||||
led_app_set(LED_OFF_GREEN, 0);
|
||||
}
|
||||
break;
|
||||
case APP_EVT_ASR_STANDBY: // byebye armino
|
||||
is_standby = 1;
|
||||
indicates_state |= (1 << INDICATES_STANDBY);
|
||||
indicates_state &= ~(1 << INDICATES_POWER_ON);
|
||||
s_active_tickets |= (1 << COUNTDOWN_TICKET_STANDBY);
|
||||
LOGI("APP_EVT_ASR_STANDBY\n");
|
||||
#if CONFIG_AUD_INTF_SUPPORT_PROMPT_TONE
|
||||
bk_aud_intf_voc_play_prompt_tone(AUD_INTF_VOC_ASR_STANDBY);
|
||||
bk_aud_intf_voc_play_prompt_tone(AUD_INTF_VOC_ASR_STANDBY);
|
||||
#endif
|
||||
lvgl_app_deinit();
|
||||
bk_wifi_sta_pm_enable();
|
||||
bk_pm_module_vote_cpu_freq(PM_DEV_ID_AUDIO, PM_CPU_FRQ_240M);
|
||||
break;
|
||||
lvgl_app_deinit();
|
||||
bk_wifi_sta_pm_enable();
|
||||
bk_pm_module_vote_cpu_freq(PM_DEV_ID_AUDIO, PM_CPU_FRQ_240M);
|
||||
break;
|
||||
|
||||
//-------------------network event start ------------------------------------------------------------------
|
||||
/*
|
||||
* Network abnormal event:APP_EVT_NETWORK_PROVISIONING_FAIL/APP_EVT_RECONNECT_NETWORK_FAIL/APP_EVT_RTC_CONNECTION_LOST/APP_EVT_AGENT_OFFLINE
|
||||
* Network resotre event:APP_EVT_AGENT_JOINED
|
||||
* If network retore event APP_EVT_AGENT_JOINED comes, it means all of the network abnormal event can be stop
|
||||
*/
|
||||
case APP_EVT_NETWORK_PROVISIONING:
|
||||
LOGI("APP_EVT_NETWORK_PROVISIONING\n");
|
||||
is_network_provisioning = 1;
|
||||
//<EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
s_active_tickets &= ~(1 << COUNTDOWN_TICKET_NETWORK_ERROR);
|
||||
s_active_tickets |= (1 << COUNTDOWN_TICKET_PROVISIONING);
|
||||
indicates_state |= (1<<INDICATES_PROVISIONING);
|
||||
indicates_state &= ~(1<<INDICATES_POWER_ON);
|
||||
warning_state &= ~(1<<WARNING_PROVIOSION_FAIL);
|
||||
//-------------------network event start ------------------------------------------------------------------
|
||||
/*
|
||||
* Network abnormal event:APP_EVT_NETWORK_PROVISIONING_FAIL/APP_EVT_RECONNECT_NETWORK_FAIL/APP_EVT_RTC_CONNECTION_LOST/APP_EVT_AGENT_OFFLINE
|
||||
* Network resotre event:APP_EVT_AGENT_JOINED
|
||||
* If network retore event APP_EVT_AGENT_JOINED comes, it means all of the network abnormal event can be stop
|
||||
*/
|
||||
case APP_EVT_NETWORK_PROVISIONING:
|
||||
LOGI("APP_EVT_NETWORK_PROVISIONING\n");
|
||||
is_network_provisioning = 1;
|
||||
// <EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
s_active_tickets &= ~(1 << COUNTDOWN_TICKET_NETWORK_ERROR);
|
||||
s_active_tickets |= (1 << COUNTDOWN_TICKET_PROVISIONING);
|
||||
indicates_state |= (1 << INDICATES_PROVISIONING);
|
||||
indicates_state &= ~(1 << INDICATES_POWER_ON);
|
||||
warning_state &= ~(1 << WARNING_PROVIOSION_FAIL);
|
||||
#if CONFIG_AUD_INTF_SUPPORT_PROMPT_TONE
|
||||
bk_aud_intf_voc_play_prompt_tone(AUD_INTF_VOC_NETWORK_PROVISION);
|
||||
bk_aud_intf_voc_play_prompt_tone(AUD_INTF_VOC_NETWORK_PROVISION);
|
||||
#endif
|
||||
break;
|
||||
break;
|
||||
|
||||
case APP_EVT_NETWORK_PROVISIONING_SUCCESS:
|
||||
indicates_state &= ~(1<<INDICATES_PROVISIONING);
|
||||
warning_state &= ~(1<<WARNING_PROVIOSION_FAIL);
|
||||
s_active_tickets &= ~(1 << COUNTDOWN_TICKET_PROVISIONING);
|
||||
// s_active_tickets |= (1 << COUNTDOWN_TICKET_STANDBY);
|
||||
LOGI("APP_EVT_NETWORK_PROVISIONING_SUCCESS\n");
|
||||
case APP_EVT_NETWORK_PROVISIONING_SUCCESS:
|
||||
indicates_state &= ~(1 << INDICATES_PROVISIONING);
|
||||
warning_state &= ~(1 << WARNING_PROVIOSION_FAIL);
|
||||
s_active_tickets &= ~(1 << COUNTDOWN_TICKET_PROVISIONING);
|
||||
// s_active_tickets |= (1 << COUNTDOWN_TICKET_STANDBY);
|
||||
LOGI("APP_EVT_NETWORK_PROVISIONING_SUCCESS\n");
|
||||
#if CONFIG_AUD_INTF_SUPPORT_PROMPT_TONE
|
||||
bk_aud_intf_voc_play_prompt_tone(AUD_INTF_VOC_NETWORK_PROVISION_SUCCESS);
|
||||
bk_aud_intf_voc_play_prompt_tone(AUD_INTF_VOC_NETWORK_PROVISION_SUCCESS);
|
||||
#endif
|
||||
break;
|
||||
break;
|
||||
|
||||
case APP_EVT_NETWORK_PROVISIONING_FAIL:
|
||||
LOGI("APP_EVT_NETWORK_PROVISIONING_FAIL\n");
|
||||
// network_err = 1;
|
||||
s_active_tickets &= ~(1 << COUNTDOWN_TICKET_PROVISIONING);
|
||||
s_active_tickets |= (1 << COUNTDOWN_TICKET_NETWORK_ERROR);
|
||||
indicates_state &= ~(1<<INDICATES_PROVISIONING);
|
||||
warning_state |= 1<<WARNING_PROVIOSION_FAIL;
|
||||
case APP_EVT_NETWORK_PROVISIONING_FAIL:
|
||||
LOGI("APP_EVT_NETWORK_PROVISIONING_FAIL\n");
|
||||
// network_err = 1;
|
||||
s_active_tickets &= ~(1 << COUNTDOWN_TICKET_PROVISIONING);
|
||||
s_active_tickets |= (1 << COUNTDOWN_TICKET_NETWORK_ERROR);
|
||||
indicates_state &= ~(1 << INDICATES_PROVISIONING);
|
||||
warning_state |= 1 << WARNING_PROVIOSION_FAIL;
|
||||
|
||||
#if CONFIG_AUD_INTF_SUPPORT_PROMPT_TONE
|
||||
bk_aud_intf_voc_play_prompt_tone(AUD_INTF_VOC_NETWORK_PROVISION_FAIL);
|
||||
bk_aud_intf_voc_play_prompt_tone(AUD_INTF_VOC_NETWORK_PROVISION_FAIL);
|
||||
#endif
|
||||
break;
|
||||
break;
|
||||
|
||||
case APP_EVT_RECONNECT_NETWORK:
|
||||
LOGI("APP_EVT_RECONNECT_NETWORK\n");
|
||||
warning_state &= ~(1<<WARNING_WIFI_FAIL);
|
||||
indicates_state |= (1<<INDICATES_WIFI_RECONNECT);
|
||||
indicates_state &= ~(1<<INDICATES_POWER_ON);
|
||||
case APP_EVT_RECONNECT_NETWORK:
|
||||
LOGI("APP_EVT_RECONNECT_NETWORK\n");
|
||||
warning_state &= ~(1 << WARNING_WIFI_FAIL);
|
||||
indicates_state |= (1 << INDICATES_WIFI_RECONNECT);
|
||||
indicates_state &= ~(1 << INDICATES_POWER_ON);
|
||||
#if CONFIG_AUD_INTF_SUPPORT_PROMPT_TONE
|
||||
bk_aud_intf_voc_play_prompt_tone(AUD_INTF_VOC_RECONNECT_NETWORK);
|
||||
bk_aud_intf_voc_play_prompt_tone(AUD_INTF_VOC_RECONNECT_NETWORK);
|
||||
#endif
|
||||
break;
|
||||
break;
|
||||
|
||||
case APP_EVT_RECONNECT_NETWORK_SUCCESS:
|
||||
s_active_tickets &= ~(1 << COUNTDOWN_TICKET_PROVISIONING);
|
||||
warning_state &= ~(1<<WARNING_WIFI_FAIL);
|
||||
indicates_state &= ~(1<<INDICATES_WIFI_RECONNECT);
|
||||
case APP_EVT_RECONNECT_NETWORK_SUCCESS:
|
||||
s_active_tickets &= ~(1 << COUNTDOWN_TICKET_PROVISIONING);
|
||||
warning_state &= ~(1 << WARNING_WIFI_FAIL);
|
||||
indicates_state &= ~(1 << INDICATES_WIFI_RECONNECT);
|
||||
|
||||
if ((warning_state & AI_RTC_CONNECT_LOST_FAIL) == 0 && (warning_state & AI_AGENT_OFFLINE_FAIL) == 0)
|
||||
if ((warning_state & AI_RTC_CONNECT_LOST_FAIL) == 0 && (warning_state & AI_AGENT_OFFLINE_FAIL) == 0)
|
||||
{
|
||||
if (is_standby)
|
||||
{
|
||||
if (is_standby)
|
||||
{
|
||||
indicates_state |= (1<<INDICATES_STANDBY);
|
||||
}
|
||||
indicates_state |= (1 << INDICATES_STANDBY);
|
||||
}
|
||||
LOGI("APP_EVT_RECONNECT_NETWORK_SUCCESS\n");
|
||||
}
|
||||
LOGI("APP_EVT_RECONNECT_NETWORK_SUCCESS\n");
|
||||
#if CONFIG_AUD_INTF_SUPPORT_PROMPT_TONE
|
||||
bk_aud_intf_voc_play_prompt_tone(AUD_INTF_VOC_RECONNECT_NETWORK_SUCCESS);
|
||||
bk_aud_intf_voc_play_prompt_tone(AUD_INTF_VOC_RECONNECT_NETWORK_SUCCESS);
|
||||
#endif
|
||||
break;
|
||||
break;
|
||||
|
||||
case APP_EVT_RECONNECT_NETWORK_FAIL:
|
||||
s_active_tickets |= (1 << COUNTDOWN_TICKET_NETWORK_ERROR);
|
||||
LOGI("APP_EVT_RECONNECT_NETWORK_FAIL\n");
|
||||
// network_err = 1;
|
||||
warning_state |= 1<<WARNING_WIFI_FAIL;
|
||||
indicates_state &= ~(1<<INDICATES_WIFI_RECONNECT);
|
||||
case APP_EVT_RECONNECT_NETWORK_FAIL:
|
||||
s_active_tickets |= (1 << COUNTDOWN_TICKET_NETWORK_ERROR);
|
||||
LOGI("APP_EVT_RECONNECT_NETWORK_FAIL\n");
|
||||
// network_err = 1;
|
||||
warning_state |= 1 << WARNING_WIFI_FAIL;
|
||||
indicates_state &= ~(1 << INDICATES_WIFI_RECONNECT);
|
||||
#if CONFIG_AUD_INTF_SUPPORT_PROMPT_TONE
|
||||
bk_aud_intf_voc_play_prompt_tone(AUD_INTF_VOC_RECONNECT_NETWORK_FAIL);
|
||||
bk_aud_intf_voc_play_prompt_tone(AUD_INTF_VOC_RECONNECT_NETWORK_FAIL);
|
||||
#endif
|
||||
break;
|
||||
break;
|
||||
|
||||
case APP_EVT_RTC_CONNECTION_LOST:
|
||||
// network_err = 1;
|
||||
LOGI("APP_EVT_RTC_CONNECTION_LOST\n");
|
||||
warning_state |= 1<<WARNING_RTC_CONNECT_LOST;
|
||||
case APP_EVT_RTC_CONNECTION_LOST:
|
||||
// network_err = 1;
|
||||
LOGI("APP_EVT_RTC_CONNECTION_LOST\n");
|
||||
warning_state |= 1 << WARNING_RTC_CONNECT_LOST;
|
||||
#if CONFIG_AUD_INTF_SUPPORT_PROMPT_TONE
|
||||
bk_aud_intf_voc_play_prompt_tone(AUD_INTF_VOC_RTC_CONNECTION_LOST);
|
||||
bk_aud_intf_voc_play_prompt_tone(AUD_INTF_VOC_RTC_CONNECTION_LOST);
|
||||
#endif
|
||||
break;
|
||||
break;
|
||||
|
||||
case APP_EVT_AGENT_JOINED: //doesn't know whether restore from error
|
||||
//indicates_state |= 1<<INDICATES_AGENT_CONNECT;
|
||||
s_active_tickets &= ~(1 << COUNTDOWN_TICKET_NETWORK_ERROR);
|
||||
indicates_state &= ~(1<<INDICATES_POWER_ON);
|
||||
warning_state &= ~((1<<WARNING_RTC_CONNECT_LOST) | (1<<WARNING_AGENT_OFFLINE) | (1<<WARNING_WIFI_FAIL));
|
||||
LOGI("APP_EVT_AGENT_JOINED \n");
|
||||
is_network_provisioning = 0;
|
||||
indicates_state &= ~(1<<INDICATES_PROVISIONING);
|
||||
if(is_standby) //mie
|
||||
{
|
||||
indicates_state |= (1<<INDICATES_STANDBY);
|
||||
}
|
||||
case APP_EVT_AGENT_JOINED: // doesn't know whether restore from error
|
||||
// indicates_state |= 1<<INDICATES_AGENT_CONNECT;
|
||||
s_active_tickets &= ~(1 << COUNTDOWN_TICKET_NETWORK_ERROR);
|
||||
indicates_state &= ~(1 << INDICATES_POWER_ON);
|
||||
warning_state &= ~((1 << WARNING_RTC_CONNECT_LOST) | (1 << WARNING_AGENT_OFFLINE) | (1 << WARNING_WIFI_FAIL));
|
||||
LOGI("APP_EVT_AGENT_JOINED \n");
|
||||
is_network_provisioning = 0;
|
||||
indicates_state &= ~(1 << INDICATES_PROVISIONING);
|
||||
if (is_standby) // mie
|
||||
{
|
||||
indicates_state |= (1 << INDICATES_STANDBY);
|
||||
}
|
||||
#if CONFIG_AUD_INTF_SUPPORT_PROMPT_TONE
|
||||
bk_aud_intf_voc_play_prompt_tone(AUD_INTF_VOC_AGENT_JOINED);
|
||||
bk_aud_intf_voc_play_prompt_tone(AUD_INTF_VOC_AGENT_JOINED);
|
||||
#endif
|
||||
break;
|
||||
case APP_EVT_AGENT_OFFLINE:
|
||||
// network_err = 1;
|
||||
s_active_tickets |= (1 << COUNTDOWN_TICKET_NETWORK_ERROR);
|
||||
LOGI("APP_EVT_AGENT_OFFLINE\n");
|
||||
indicates_state &= ~(1<<INDICATES_AGENT_CONNECT);
|
||||
warning_state |= 1<<WARNING_AGENT_OFFLINE;
|
||||
break;
|
||||
case APP_EVT_AGENT_OFFLINE:
|
||||
// network_err = 1;
|
||||
s_active_tickets |= (1 << COUNTDOWN_TICKET_NETWORK_ERROR);
|
||||
LOGI("APP_EVT_AGENT_OFFLINE\n");
|
||||
indicates_state &= ~(1 << INDICATES_AGENT_CONNECT);
|
||||
warning_state |= 1 << WARNING_AGENT_OFFLINE;
|
||||
#if CONFIG_AUD_INTF_SUPPORT_PROMPT_TONE
|
||||
bk_aud_intf_voc_play_prompt_tone(AUD_INTF_VOC_AGENT_OFFLINE);
|
||||
bk_aud_intf_voc_play_prompt_tone(AUD_INTF_VOC_AGENT_OFFLINE);
|
||||
#endif
|
||||
break;
|
||||
break;
|
||||
|
||||
//-------------------network event end ------------------------------------------------------------------////
|
||||
//-------------------network event end ------------------------------------------------------------------////
|
||||
|
||||
|
||||
case APP_EVT_LOW_VOLTAGE:
|
||||
LOGI("APP_EVT_LOW_VOLTAGE\n");
|
||||
skip_countdown_update = true;
|
||||
warning_state |= 1<<WARNING_LOW_BATTERY;
|
||||
case APP_EVT_LOW_VOLTAGE:
|
||||
LOGI("APP_EVT_LOW_VOLTAGE\n");
|
||||
skip_countdown_update = true;
|
||||
warning_state |= 1 << WARNING_LOW_BATTERY;
|
||||
#if CONFIG_AUD_INTF_SUPPORT_PROMPT_TONE
|
||||
bk_aud_intf_voc_play_prompt_tone(AUD_INTF_VOC_LOW_VOLTAGE);
|
||||
bk_aud_intf_voc_play_prompt_tone(AUD_INTF_VOC_LOW_VOLTAGE);
|
||||
#endif
|
||||
break;
|
||||
break;
|
||||
|
||||
case APP_EVT_CHARGING:
|
||||
LOGI("APP_EVT_CHARGING\n");
|
||||
skip_countdown_update = true;
|
||||
warning_state &= ~(1<<WARNING_LOW_BATTERY);
|
||||
break;
|
||||
case APP_EVT_CHARGING:
|
||||
LOGI("APP_EVT_CHARGING\n");
|
||||
skip_countdown_update = true;
|
||||
warning_state &= ~(1 << WARNING_LOW_BATTERY);
|
||||
break;
|
||||
|
||||
case APP_EVT_SHUTDOWN_LOW_BATTERY:
|
||||
LOGI("APP_EVT_SHUTDOWN_LOW_BATTERY\n");
|
||||
skip_countdown_update = true;
|
||||
bk_config_sync_flash();
|
||||
break;
|
||||
case APP_EVT_SHUTDOWN_LOW_BATTERY:
|
||||
LOGI("APP_EVT_SHUTDOWN_LOW_BATTERY\n");
|
||||
skip_countdown_update = true;
|
||||
bk_config_sync_flash();
|
||||
break;
|
||||
|
||||
case APP_EVT_CLOSE_BLUETOOTH:
|
||||
LOGI("APP_EVT_CLOSE_BLUETOOTH\n");
|
||||
bk_genie_boarding_deinit();
|
||||
bk_bluetooth_deinit();
|
||||
break;
|
||||
case APP_EVT_CLOSE_BLUETOOTH:
|
||||
LOGI("APP_EVT_CLOSE_BLUETOOTH\n");
|
||||
bk_genie_boarding_deinit();
|
||||
bk_bluetooth_deinit();
|
||||
break;
|
||||
|
||||
// OTA相关事件
|
||||
case APP_EVT_OTA_START:
|
||||
LOGI("APP_EVT_OTA_START\n");
|
||||
s_active_tickets |= (1 << COUNTDOWN_TICKET_OTA);
|
||||
break;
|
||||
// OTA相关事件
|
||||
case APP_EVT_OTA_START:
|
||||
LOGI("APP_EVT_OTA_START\n");
|
||||
s_active_tickets |= (1 << COUNTDOWN_TICKET_OTA);
|
||||
break;
|
||||
|
||||
case APP_EVT_OTA_SUCCESS:
|
||||
LOGI("APP_EVT_OTA_SUCCESS\n");
|
||||
s_active_tickets &= ~(1 << COUNTDOWN_TICKET_OTA);
|
||||
break;
|
||||
case APP_EVT_OTA_SUCCESS:
|
||||
LOGI("APP_EVT_OTA_SUCCESS\n");
|
||||
s_active_tickets &= ~(1 << COUNTDOWN_TICKET_OTA);
|
||||
break;
|
||||
|
||||
case APP_EVT_OTA_FAIL:
|
||||
LOGI("APP_EVT_OTA_FAIL\n");
|
||||
s_active_tickets &= ~(1 << COUNTDOWN_TICKET_OTA);
|
||||
break;
|
||||
case APP_EVT_OTA_FAIL:
|
||||
LOGI("APP_EVT_OTA_FAIL\n");
|
||||
s_active_tickets &= ~(1 << COUNTDOWN_TICKET_OTA);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
if(!skip_countdown_update)
|
||||
if (!skip_countdown_update)
|
||||
{
|
||||
update_countdown();
|
||||
}
|
||||
|
||||
//led blink by states
|
||||
// led blink by states
|
||||
led_blink(&warning_state, indicates_state);
|
||||
}
|
||||
}
|
||||
@ -513,8 +527,6 @@ static void app_event_thread(beken_thread_arg_t data)
|
||||
rtos_delete_thread(NULL);
|
||||
}
|
||||
|
||||
|
||||
|
||||
void app_event_init(void)
|
||||
{
|
||||
int ret = BK_FAIL;
|
||||
|
@ -42,32 +42,34 @@ static int wanson_asr_result_notify_handle(wanson_asr_handle_t wanson_asr, char
|
||||
{
|
||||
uint32_t asr_result = 0;
|
||||
|
||||
if (os_strcmp(result, "嗨阿米诺") == 0) //识别出唤醒词 嗨阿米诺
|
||||
bk_printf("AsR_Result:%s\n",result);
|
||||
|
||||
if (os_strcmp(result, "你好小宝") == 0) //识别出唤醒词 嗨阿米诺
|
||||
{
|
||||
LOGI("%s \n", "hi armino, cmd: 0 ");
|
||||
asr_result = 1;
|
||||
}
|
||||
else if (os_strcmp(result, "嘿阿米楼") == 0)
|
||||
else if (os_strcmp(result, "雷好小宝") == 0)
|
||||
{
|
||||
LOGI("%s \n", "hi armino, cmd: 1 ");
|
||||
asr_result = 1;
|
||||
}
|
||||
else if (os_strcmp(result, "嘿儿米楼") == 0)
|
||||
else if (os_strcmp(result, "您好小宝") == 0)
|
||||
{
|
||||
LOGI("%s \n", "hi armino, cmd: 2 ");
|
||||
asr_result = 1;
|
||||
}
|
||||
else if (os_strcmp(result, "嘿鹅迷楼") == 0)
|
||||
else if (os_strcmp(result, "你好笑宝") == 0)
|
||||
{
|
||||
LOGI("%s \n", "hi armino, cmd: 3 ");
|
||||
asr_result = 1;
|
||||
}
|
||||
else if (os_strcmp(result, "拜拜阿米诺") == 0) //识别出 拜拜阿米诺
|
||||
else if (os_strcmp(result, "拜拜小宝") == 0) //识别出 拜拜阿米诺
|
||||
{
|
||||
LOGI("%s \n", "byebye armino, cmd: 0 ");
|
||||
asr_result = 2;
|
||||
}
|
||||
else if (os_strcmp(result, "拜拜阿米楼") == 0)
|
||||
else if (os_strcmp(result, "拜拜小宝") == 0)
|
||||
{
|
||||
LOGI("%s \n", "byebye armino, cmd: 1 ");
|
||||
asr_result = 2;
|
||||
@ -85,6 +87,7 @@ static int wanson_asr_result_notify_handle(wanson_asr_handle_t wanson_asr, char
|
||||
|
||||
#if (CONFIG_SYS_CPU2)
|
||||
send_spi_led_msg();
|
||||
|
||||
asr_to_media_major_msg.event = EVENT_ASR_RESULT_NOTIFY;
|
||||
asr_to_media_major_msg.result = asr_result;
|
||||
msg_send_notify_to_media_minor_mailbox(&asr_to_media_major_msg, MAJOR_MODULE);
|
||||
|
@ -655,11 +655,14 @@ static bool timer_initialized = false; // 定时器初始化标志
|
||||
int first_abort = 0;
|
||||
void sent_abort_msg()
|
||||
{
|
||||
|
||||
bk_printf("MEDIA_APP_EVT_ASR_WAKEUP_IND_sent_abort_msg first_abort = %d\n",first_abort);
|
||||
if (first_abort == 0)
|
||||
{
|
||||
first_abort = 1;
|
||||
return;
|
||||
}
|
||||
、// bk_printf("MEDIA_APP_EVT_ASR_WAKEUP_IND_sent_abort_msg first_abort = %d\n",first_abort);
|
||||
if (client)
|
||||
{
|
||||
bk_printf("rtc_websocket_send_text_BEKEN_RTC_SEND_ABORT_BEKEN_RTC_SEND_STOP_LISTEN_BEKEN_RTC_SEND_START_LISTEN\r\n");
|
||||
@ -736,7 +739,8 @@ static bk_err_t init_check_timer(void)
|
||||
void rtc_websocket_event_handler(void *event_handler_arg, char *event_base, int32_t event_id, void *event_data)
|
||||
{
|
||||
bk_websocket_event_data_t *data = (bk_websocket_event_data_t *)event_data;
|
||||
transport client = (transport)event_handler_arg;
|
||||
//transport client = (transport)event_handler_arg;//zhanyu
|
||||
client = (transport)event_handler_arg;
|
||||
switch (event_id)
|
||||
{
|
||||
case WEBSOCKET_EVENT_CONNECTED:
|
||||
|
Loading…
x
Reference in New Issue
Block a user