语音唤醒改成你好小宝,添加语音打断功能
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 "bat_monitor.h"
|
||||||
#include "bk_ota_private.h"
|
#include "bk_ota_private.h"
|
||||||
#define TAG "app_evt"
|
#define TAG "app_evt"
|
||||||
|
#include "spi_led.h"//zhanyu
|
||||||
#define LOGI(...) BK_LOGI(TAG, ##__VA_ARGS__)
|
#define LOGI(...) BK_LOGI(TAG, ##__VA_ARGS__)
|
||||||
#define LOGW(...) BK_LOGW(TAG, ##__VA_ARGS__)
|
#define LOGW(...) BK_LOGW(TAG, ##__VA_ARGS__)
|
||||||
#define LOGE(...) BK_LOGE(TAG, ##__VA_ARGS__)
|
#define LOGE(...) BK_LOGE(TAG, ##__VA_ARGS__)
|
||||||
#define LOGD(...) BK_LOGD(TAG, ##__VA_ARGS__)
|
#define LOGD(...) BK_LOGD(TAG, ##__VA_ARGS__)
|
||||||
|
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
beken_thread_t thread;
|
beken_thread_t thread;
|
||||||
@ -48,12 +47,8 @@ typedef struct
|
|||||||
extern void lvgl_app_init(void);
|
extern void lvgl_app_init(void);
|
||||||
extern void lvgl_app_deinit(void);
|
extern void lvgl_app_deinit(void);
|
||||||
|
|
||||||
|
|
||||||
static app_evt_info_t app_evt_info;
|
static app_evt_info_t app_evt_info;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
bk_err_t app_event_send_msg(uint32_t event, uint32_t param)
|
bk_err_t app_event_send_msg(uint32_t event, uint32_t param)
|
||||||
{
|
{
|
||||||
bk_err_t ret;
|
bk_err_t ret;
|
||||||
@ -81,6 +76,10 @@ void app_event_asr_evt_callback(media_app_evt_type_t event, uint32_t param)
|
|||||||
switch (event)
|
switch (event)
|
||||||
{
|
{
|
||||||
case MEDIA_APP_EVT_ASR_WAKEUP_IND:
|
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);
|
app_event_send_msg(APP_EVT_ASR_WAKEUP, 0);
|
||||||
break;
|
break;
|
||||||
case MEDIA_APP_EVT_ASR_STANDBY_IND:
|
case MEDIA_APP_EVT_ASR_STANDBY_IND:
|
||||||
@ -129,7 +128,8 @@ static uint8_t battery_event_callback(evt_battery event_param)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// red:if high priority conflicts with low-priority, should stay at high priority states
|
// red:if high priority conflicts with low-priority, should stay at high priority states
|
||||||
enum {
|
enum
|
||||||
|
{
|
||||||
WARNING_PROVIOSION_FAIL, // LED_FAST_BLINK_RED
|
WARNING_PROVIOSION_FAIL, // LED_FAST_BLINK_RED
|
||||||
WARNING_WIFI_FAIL, // LED_FAST_BLINK_RED
|
WARNING_WIFI_FAIL, // LED_FAST_BLINK_RED
|
||||||
WARNING_RTC_CONNECT_LOST, // LED_FAST_BLINK_RED
|
WARNING_RTC_CONNECT_LOST, // LED_FAST_BLINK_RED
|
||||||
@ -142,7 +142,8 @@ enum {
|
|||||||
#define AI_RTC_CONNECT_LOST_FAIL (1 << WARNING_RTC_CONNECT_LOST)
|
#define AI_RTC_CONNECT_LOST_FAIL (1 << WARNING_RTC_CONNECT_LOST)
|
||||||
#define AI_AGENT_OFFLINE_FAIL (1 << WARNING_AGENT_OFFLINE)
|
#define AI_AGENT_OFFLINE_FAIL (1 << WARNING_AGENT_OFFLINE)
|
||||||
// green led, or red/green alternate led
|
// green led, or red/green alternate led
|
||||||
enum {
|
enum
|
||||||
|
{
|
||||||
INDICATES_WIFI_RECONNECT, // LED_FAST_BLINK_GREEN
|
INDICATES_WIFI_RECONNECT, // LED_FAST_BLINK_GREEN
|
||||||
INDICATES_PROVISIONING, // LED_REG_GREEN_ALTERNATE
|
INDICATES_PROVISIONING, // LED_REG_GREEN_ALTERNATE
|
||||||
INDICATES_POWER_ON, // LED_ON_GREEN default at power-on state, so green is always on
|
INDICATES_POWER_ON, // LED_ON_GREEN default at power-on state, so green is always on
|
||||||
@ -150,10 +151,10 @@ enum {
|
|||||||
INDICATES_AGENT_CONNECT, // LED_SLOW_BLINK_GREEN if at standby states, else clear it
|
INDICATES_AGENT_CONNECT, // LED_SLOW_BLINK_GREEN if at standby states, else clear it
|
||||||
} indicates_t;
|
} indicates_t;
|
||||||
|
|
||||||
|
|
||||||
#define COUNTDOWN_INFINITE 0xFFFFFFFF
|
#define COUNTDOWN_INFINITE 0xFFFFFFFF
|
||||||
/* 新增倒计时票源类型,按照优先级排序*/
|
/* 新增倒计时票源类型,按照优先级排序*/
|
||||||
typedef enum {
|
typedef enum
|
||||||
|
{
|
||||||
COUNTDOWN_TICKET_PROVISIONING, // 配网倒计时(5分钟), 最高优先级
|
COUNTDOWN_TICKET_PROVISIONING, // 配网倒计时(5分钟), 最高优先级
|
||||||
COUNTDOWN_TICKET_NETWORK_ERROR, // 网络错误倒计时(5分钟) ,中优先级
|
COUNTDOWN_TICKET_NETWORK_ERROR, // 网络错误倒计时(5分钟) ,中优先级
|
||||||
COUNTDOWN_TICKET_STANDBY, // 待机倒计时(3分钟),低优先级
|
COUNTDOWN_TICKET_STANDBY, // 待机倒计时(3分钟),低优先级
|
||||||
@ -176,7 +177,8 @@ static void update_countdown()
|
|||||||
{
|
{
|
||||||
|
|
||||||
// 检查OTA暂停票(最高优先级)
|
// 检查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");
|
LOGI("ota event start, stop countdown\r\n");
|
||||||
stop_countdown();
|
stop_countdown();
|
||||||
return;
|
return;
|
||||||
@ -185,8 +187,8 @@ static void update_countdown()
|
|||||||
static countdown_ticket_t last_selected_ticket = COUNTDOWN_TICKET_MAX;
|
static countdown_ticket_t last_selected_ticket = COUNTDOWN_TICKET_MAX;
|
||||||
countdown_ticket_t 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)
|
if (i == COUNTDOWN_TICKET_OTA)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
@ -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];
|
const uint32_t max_duration = s_ticket_durations[selected_ticket];
|
||||||
|
|
||||||
bool is_same_event = (selected_ticket == last_selected_ticket);
|
bool is_same_event = (selected_ticket == last_selected_ticket);
|
||||||
@ -211,13 +214,14 @@ static void update_countdown()
|
|||||||
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;
|
last_selected_ticket = selected_ticket;
|
||||||
}
|
}
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
LOGI("selected_ticket is %d, COUNTDOWN_TICKET_MAX is %d\r\n", selected_ticket, COUNTDOWN_TICKET_MAX);
|
LOGI("selected_ticket is %d, COUNTDOWN_TICKET_MAX is %d\r\n", selected_ticket, COUNTDOWN_TICKET_MAX);
|
||||||
LOGI("stop countdown\r\n");
|
LOGI("stop countdown\r\n");
|
||||||
stop_countdown();
|
stop_countdown();
|
||||||
last_selected_ticket = COUNTDOWN_TICKET_MAX;
|
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)
|
||||||
@ -229,17 +233,22 @@ static void led_blink(uint32_t* warning_state, uint32_t indicates_state)
|
|||||||
if (indicates_state & (1 << INDICATES_PROVISIONING))
|
if (indicates_state & (1 << INDICATES_PROVISIONING))
|
||||||
{
|
{
|
||||||
led_app_set(LED_REG_GREEN_ALTERNATE, LED_LAST_FOREVER);
|
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);
|
led_app_set(LED_OFF_GREEN, 0);
|
||||||
}else{
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
if (indicates_state & (1 << INDICATES_WIFI_RECONNECT))
|
if (indicates_state & (1 << INDICATES_WIFI_RECONNECT))
|
||||||
{
|
{
|
||||||
led_app_set(LED_FAST_BLINK_GREEN, LED_LAST_FOREVER);
|
led_app_set(LED_FAST_BLINK_GREEN, LED_LAST_FOREVER);
|
||||||
}else if(indicates_state & ((1<<INDICATES_STANDBY) | (1<<INDICATES_AGENT_CONNECT)))
|
}
|
||||||
|
else if (indicates_state & ((1 << INDICATES_STANDBY) | (1 << INDICATES_AGENT_CONNECT)))
|
||||||
{
|
{
|
||||||
led_app_set(LED_SLOW_BLINK_GREEN, LED_LAST_FOREVER);
|
led_app_set(LED_SLOW_BLINK_GREEN, LED_LAST_FOREVER);
|
||||||
}else
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
led_app_set(LED_OFF_GREEN, 0);
|
led_app_set(LED_OFF_GREEN, 0);
|
||||||
}
|
}
|
||||||
@ -249,12 +258,18 @@ static void led_blink(uint32_t* warning_state, uint32_t indicates_state)
|
|||||||
if (indicates_state & (1 << INDICATES_PROVISIONING))
|
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);
|
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);
|
led_app_set(LED_SLOW_BLINK_RED, LOW_VOLTAGE_BLINK_TIME);
|
||||||
*warning_state = *warning_state & ~(1 << WARNING_LOW_BATTERY);
|
*warning_state = *warning_state & ~(1 << WARNING_LOW_BATTERY);
|
||||||
}else{
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
led_app_set(LED_OFF_RED, 0);
|
led_app_set(LED_OFF_RED, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -269,7 +284,6 @@ static void led_blink(uint32_t* warning_state, uint32_t indicates_state)
|
|||||||
LOGI("warning=%d,last_warning=%d,indicate=%d\r\n", *warning_state, last_warning_state, indicates_state);
|
LOGI("warning=%d,last_warning=%d,indicate=%d\r\n", *warning_state, last_warning_state, indicates_state);
|
||||||
last_warning_state = *warning_state;
|
last_warning_state = *warning_state;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void app_event_thread(beken_thread_arg_t data)
|
static void app_event_thread(beken_thread_arg_t data)
|
||||||
@ -313,7 +327,8 @@ static void app_event_thread(beken_thread_arg_t data)
|
|||||||
bk_pm_module_vote_cpu_freq(PM_DEV_ID_AUDIO, PM_CPU_FRQ_480M);
|
bk_pm_module_vote_cpu_freq(PM_DEV_ID_AUDIO, PM_CPU_FRQ_480M);
|
||||||
bk_wifi_sta_pm_disable();
|
bk_wifi_sta_pm_disable();
|
||||||
lvgl_app_init();
|
lvgl_app_init();
|
||||||
if (!is_network_provisioning){
|
if (!is_network_provisioning)
|
||||||
|
{
|
||||||
led_app_set(LED_OFF_GREEN, 0);
|
led_app_set(LED_OFF_GREEN, 0);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -452,7 +467,6 @@ static void app_event_thread(beken_thread_arg_t data)
|
|||||||
|
|
||||||
//-------------------network event end ------------------------------------------------------------------////
|
//-------------------network event end ------------------------------------------------------------------////
|
||||||
|
|
||||||
|
|
||||||
case APP_EVT_LOW_VOLTAGE:
|
case APP_EVT_LOW_VOLTAGE:
|
||||||
LOGI("APP_EVT_LOW_VOLTAGE\n");
|
LOGI("APP_EVT_LOW_VOLTAGE\n");
|
||||||
skip_countdown_update = true;
|
skip_countdown_update = true;
|
||||||
@ -513,8 +527,6 @@ static void app_event_thread(beken_thread_arg_t data)
|
|||||||
rtos_delete_thread(NULL);
|
rtos_delete_thread(NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void app_event_init(void)
|
void app_event_init(void)
|
||||||
{
|
{
|
||||||
int ret = BK_FAIL;
|
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;
|
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 ");
|
LOGI("%s \n", "hi armino, cmd: 0 ");
|
||||||
asr_result = 1;
|
asr_result = 1;
|
||||||
}
|
}
|
||||||
else if (os_strcmp(result, "嘿阿米楼") == 0)
|
else if (os_strcmp(result, "雷好小宝") == 0)
|
||||||
{
|
{
|
||||||
LOGI("%s \n", "hi armino, cmd: 1 ");
|
LOGI("%s \n", "hi armino, cmd: 1 ");
|
||||||
asr_result = 1;
|
asr_result = 1;
|
||||||
}
|
}
|
||||||
else if (os_strcmp(result, "嘿儿米楼") == 0)
|
else if (os_strcmp(result, "您好小宝") == 0)
|
||||||
{
|
{
|
||||||
LOGI("%s \n", "hi armino, cmd: 2 ");
|
LOGI("%s \n", "hi armino, cmd: 2 ");
|
||||||
asr_result = 1;
|
asr_result = 1;
|
||||||
}
|
}
|
||||||
else if (os_strcmp(result, "嘿鹅迷楼") == 0)
|
else if (os_strcmp(result, "你好笑宝") == 0)
|
||||||
{
|
{
|
||||||
LOGI("%s \n", "hi armino, cmd: 3 ");
|
LOGI("%s \n", "hi armino, cmd: 3 ");
|
||||||
asr_result = 1;
|
asr_result = 1;
|
||||||
}
|
}
|
||||||
else if (os_strcmp(result, "拜拜阿米诺") == 0) //识别出 拜拜阿米诺
|
else if (os_strcmp(result, "拜拜小宝") == 0) //识别出 拜拜阿米诺
|
||||||
{
|
{
|
||||||
LOGI("%s \n", "byebye armino, cmd: 0 ");
|
LOGI("%s \n", "byebye armino, cmd: 0 ");
|
||||||
asr_result = 2;
|
asr_result = 2;
|
||||||
}
|
}
|
||||||
else if (os_strcmp(result, "拜拜阿米楼") == 0)
|
else if (os_strcmp(result, "拜拜小宝") == 0)
|
||||||
{
|
{
|
||||||
LOGI("%s \n", "byebye armino, cmd: 1 ");
|
LOGI("%s \n", "byebye armino, cmd: 1 ");
|
||||||
asr_result = 2;
|
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)
|
#if (CONFIG_SYS_CPU2)
|
||||||
send_spi_led_msg();
|
send_spi_led_msg();
|
||||||
|
|
||||||
asr_to_media_major_msg.event = EVENT_ASR_RESULT_NOTIFY;
|
asr_to_media_major_msg.event = EVENT_ASR_RESULT_NOTIFY;
|
||||||
asr_to_media_major_msg.result = asr_result;
|
asr_to_media_major_msg.result = asr_result;
|
||||||
msg_send_notify_to_media_minor_mailbox(&asr_to_media_major_msg, MAJOR_MODULE);
|
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;
|
int first_abort = 0;
|
||||||
void sent_abort_msg()
|
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)
|
if (first_abort == 0)
|
||||||
{
|
{
|
||||||
first_abort = 1;
|
first_abort = 1;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
、// bk_printf("MEDIA_APP_EVT_ASR_WAKEUP_IND_sent_abort_msg first_abort = %d\n",first_abort);
|
||||||
if (client)
|
if (client)
|
||||||
{
|
{
|
||||||
bk_printf("rtc_websocket_send_text_BEKEN_RTC_SEND_ABORT_BEKEN_RTC_SEND_STOP_LISTEN_BEKEN_RTC_SEND_START_LISTEN\r\n");
|
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)
|
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;
|
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)
|
switch (event_id)
|
||||||
{
|
{
|
||||||
case WEBSOCKET_EVENT_CONNECTED:
|
case WEBSOCKET_EVENT_CONNECTED:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user