(1)提示音改成数组的方式,格式wav(2)修复使用数组播放时候有bug(3)增加相关提示音数组(4)拜拜时修改添加发送close,在close中stop rtc(5)唤醒词时判断wifi状态,没有连接就提示,有连接才允许打断或者重连(5)连接发送hello,start,iot的注释等级修改成I

This commit is contained in:
dianke3yu 2025-05-27 18:00:54 +08:00
parent 8e28595128
commit 99ee61b8c9
9 changed files with 7063 additions and 342 deletions

View File

@ -1434,6 +1434,7 @@ void websocket_client_task(beken_thread_arg_t *thread_param)
ws_disconnect(client);//zhanyu ws_disconnect(client);//zhanyu
bk_websocket_client_dispatch_event(client, WEBSOCKET_EVENT_CLOSED, NULL, 0, -1);
// int ret = ws_poll_connection_closed(&(client->sockfd), 1000); // int ret = ws_poll_connection_closed(&(client->sockfd), 1000);
// if (ret == 0) { // if (ret == 0) {
// // still waiting // // still waiting

View File

@ -3977,9 +3977,11 @@ static bk_err_t aud_tras_drv_prompt_tone_play_open(url_info_t *prompt_tone)
#else //array #else //array
#if CONFIG_PROMPT_TONE_CODEC_MP3 #if CONFIG_PROMPT_TONE_CODEC_MP3
//TODO //TODO
prompt_tone_play_cfg_t config = DEFAULT_ARRAY_MP3_PROMPT_TONE_PLAY_CONFIG();//zhanyu
#endif #endif
#if CONFIG_PROMPT_TONE_CODEC_WAV #if CONFIG_PROMPT_TONE_CODEC_WAV
//TODO //TODO
prompt_tone_play_cfg_t config = DEFAULT_ARRAY_WAV_PROMPT_TONE_PLAY_CONFIG();//zhanyu
#endif #endif
#if CONFIG_PROMPT_TONE_CODEC_PCM #if CONFIG_PROMPT_TONE_CODEC_PCM
prompt_tone_play_cfg_t config = DEFAULT_ARRAY_PCM_PROMPT_TONE_PLAY_CONFIG(); prompt_tone_play_cfg_t config = DEFAULT_ARRAY_PCM_PROMPT_TONE_PLAY_CONFIG();

File diff suppressed because it is too large Load Diff

View File

@ -62,6 +62,45 @@ struct prompt_tone_play
typedef struct prompt_tone_play *prompt_tone_play_handle_t; typedef struct prompt_tone_play *prompt_tone_play_handle_t;
#define DEFAULT_ARRAY_MP3_PROMPT_TONE_PLAY_CONFIG() { \
.source_type = AUDIO_SOURCE_ARRAY, \
.source_cfg = { \
.url = NULL, \
.frame_size = DEFAULT_FRAME_SIZE, \
.data_handle = NULL, \
.notify = NULL, \
.usr_data = NULL, \
}, \
.codec_type = AUDIO_CODEC_MP3, \
.codec_cfg = { \
.chunk_size = DEFAULT_CHUNK_SIZE, \
.pool_size = DEFAULT_POOL_SIZE, \
.data_handle = NULL, \
.empty_cb = NULL, \
.usr_data = NULL, \
}, \
}
typedef struct prompt_tone_play *prompt_tone_play_handle_t;
#define DEFAULT_ARRAY_WAV_PROMPT_TONE_PLAY_CONFIG() { \
.source_type = AUDIO_SOURCE_ARRAY, \
.source_cfg = { \
.url = NULL, \
.frame_size = DEFAULT_FRAME_SIZE, \
.data_handle = NULL, \
.notify = NULL, \
.usr_data = NULL, \
}, \
.codec_type = AUDIO_CODEC_WAV, \
.codec_cfg = { \
.chunk_size = DEFAULT_CHUNK_SIZE, \
.pool_size = DEFAULT_POOL_SIZE, \
.data_handle = NULL, \
.empty_cb = NULL, \
.usr_data = NULL, \
}, \
}
#define DEFAULT_ARRAY_PCM_PROMPT_TONE_PLAY_CONFIG() { \ #define DEFAULT_ARRAY_PCM_PROMPT_TONE_PLAY_CONFIG() { \
.source_type = AUDIO_SOURCE_ARRAY, \ .source_type = AUDIO_SOURCE_ARRAY, \
.source_cfg = { \ .source_cfg = { \

View File

@ -442,6 +442,10 @@ static int array_source_set_url(audio_source_t *source, url_info_t *url_info)
array_source->config.url = url_info->url; array_source->config.url = url_info->url;
array_source->config.total_size = url_info->total_len; array_source->config.total_size = url_info->total_len;
array_source->array_total_len = url_info->total_len;//fix bug
array_source->array_read_offset = 0;
return BK_OK; return BK_OK;
} }

View File

@ -42,7 +42,8 @@ CONFIG_AUD_INTF_SUPPORT_PROMPT_TONE=y
CONFIG_AI_ASR_MODE_CPU2=y CONFIG_AI_ASR_MODE_CPU2=y
CONFIG_AEC_VERSION_V2=y CONFIG_AEC_VERSION_V2=y
CONFIG_AEC_ECHO_COLLECT_MODE_HARDWARE=y CONFIG_AEC_ECHO_COLLECT_MODE_HARDWARE=y
CONFIG_PROMPT_TONE_SOURCE_VFS=y #CONFIG_PROMPT_TONE_SOURCE_VFS=y
CONFIG_PROMPT_TONE_SOURCE_ARRAY=y
CONFIG_PROMPT_TONE_CODEC_WAV=y CONFIG_PROMPT_TONE_CODEC_WAV=y
# #

View File

@ -27,6 +27,7 @@
#include "bk_ota_private.h" #include "bk_ota_private.h"
#define TAG "app_evt" #define TAG "app_evt"
#include "spi_led.h" //zhanyu #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__)
@ -72,17 +73,38 @@ extern bk_err_t audio_tras_init(void);
void app_event_asr_evt_callback(media_app_evt_type_t event, uint32_t param) void app_event_asr_evt_callback(media_app_evt_type_t event, uint32_t param)
{ {
LOGD("asr event callback: %x\n", event); LOGD("asr event callback: %x\n", event);
wifi_link_state_t currentWifiState;
wifi_link_status_t link_status = {0};
/*Do not do anything blocking here */ /*Do not do anything blocking here */
switch (event) switch (event)
{ {
case MEDIA_APP_EVT_ASR_WAKEUP_IND: case MEDIA_APP_EVT_ASR_WAKEUP_IND:
ws2812_led_asr_wakeup(); // ws2812_led_asr_wakeup();//zhanyu
bk_printf("MEDIA_APP_EVT_ASR_WAKEUP_IND_sent_abort_msg\n");
os_memset(&link_status, 0x0, sizeof(link_status));
bk_wifi_sta_get_link_status(&link_status);
currentWifiState = link_status.state;
bk_printf("currentWifiState = %d\n", currentWifiState);
if (currentWifiState == WIFI_LINKSTATE_STA_DISCONNECTED)
{
app_event_send_msg(APP_EVT_NETWORK_PROVISIONING_FAIL, 0);
return;
}
if (link_status.state != WIFI_LINKSTATE_STA_GOT_IP)
{
// bk_printf("WiFi在STA模式下已获取IP");
}
if (g_connected_flag) if (g_connected_flag)
{ // zhanyu { // zhanyu
bk_printf("MEDIA_APP_EVT_ASR_WAKEUP_IND_sent_abort_msg\n");
sent_abort_msg(); sent_abort_msg();
} }
else else
@ -333,16 +355,16 @@ static void app_event_thread(beken_thread_arg_t data)
is_standby = 0; is_standby = 0;
indicates_state &= ~((1 << INDICATES_STANDBY) | (1 << INDICATES_AGENT_CONNECT)); indicates_state &= ~((1 << INDICATES_STANDBY) | (1 << INDICATES_AGENT_CONNECT));
s_active_tickets &= ~(1 << COUNTDOWN_TICKET_STANDBY); s_active_tickets &= ~(1 << COUNTDOWN_TICKET_STANDBY);
LOGI("APP_EVT_ASR_WAKEUP\n"); LOGE("APP_EVT_ASR_WAKEUP\n");
#if CONFIG_AUD_INTF_SUPPORT_PROMPT_TONE #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 #endif
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;
case APP_EVT_ASR_STANDBY: // byebye armino case APP_EVT_ASR_STANDBY: // byebye armino
@ -366,7 +388,7 @@ static void app_event_thread(beken_thread_arg_t data)
* If network retore event APP_EVT_AGENT_JOINED comes, it means all of the network abnormal event can be stop * 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: case APP_EVT_NETWORK_PROVISIONING:
LOGI("APP_EVT_NETWORK_PROVISIONING\n"); LOGE("APP_EVT_NETWORK_PROVISIONING\n");
is_network_provisioning = 1; is_network_provisioning = 1;
// <20><><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD> // <20><><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD>
s_active_tickets &= ~(1 << COUNTDOWN_TICKET_NETWORK_ERROR); s_active_tickets &= ~(1 << COUNTDOWN_TICKET_NETWORK_ERROR);
@ -384,14 +406,14 @@ static void app_event_thread(beken_thread_arg_t data)
warning_state &= ~(1 << WARNING_PROVIOSION_FAIL); warning_state &= ~(1 << WARNING_PROVIOSION_FAIL);
s_active_tickets &= ~(1 << COUNTDOWN_TICKET_PROVISIONING); s_active_tickets &= ~(1 << COUNTDOWN_TICKET_PROVISIONING);
// s_active_tickets |= (1 << COUNTDOWN_TICKET_STANDBY); // s_active_tickets |= (1 << COUNTDOWN_TICKET_STANDBY);
LOGI("APP_EVT_NETWORK_PROVISIONING_SUCCESS\n"); LOGE("APP_EVT_NETWORK_PROVISIONING_SUCCESS\n");
#if CONFIG_AUD_INTF_SUPPORT_PROMPT_TONE #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 #endif
break; break;
case APP_EVT_NETWORK_PROVISIONING_FAIL: case APP_EVT_NETWORK_PROVISIONING_FAIL:
LOGI("APP_EVT_NETWORK_PROVISIONING_FAIL\n"); LOGE("APP_EVT_NETWORK_PROVISIONING_FAIL\n");
// network_err = 1; // network_err = 1;
s_active_tickets &= ~(1 << COUNTDOWN_TICKET_PROVISIONING); s_active_tickets &= ~(1 << COUNTDOWN_TICKET_PROVISIONING);
s_active_tickets |= (1 << COUNTDOWN_TICKET_NETWORK_ERROR); s_active_tickets |= (1 << COUNTDOWN_TICKET_NETWORK_ERROR);
@ -425,7 +447,7 @@ static void app_event_thread(beken_thread_arg_t data)
indicates_state |= (1 << INDICATES_STANDBY); indicates_state |= (1 << INDICATES_STANDBY);
} }
} }
LOGI("APP_EVT_RECONNECT_NETWORK_SUCCESS\n"); LOGE("APP_EVT_RECONNECT_NETWORK_SUCCESS\n");
#if CONFIG_AUD_INTF_SUPPORT_PROMPT_TONE #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 #endif
@ -433,7 +455,7 @@ static void app_event_thread(beken_thread_arg_t data)
case APP_EVT_RECONNECT_NETWORK_FAIL: case APP_EVT_RECONNECT_NETWORK_FAIL:
s_active_tickets |= (1 << COUNTDOWN_TICKET_NETWORK_ERROR); s_active_tickets |= (1 << COUNTDOWN_TICKET_NETWORK_ERROR);
LOGI("APP_EVT_RECONNECT_NETWORK_FAIL\n"); LOGE("APP_EVT_RECONNECT_NETWORK_FAIL\n");
// network_err = 1; // network_err = 1;
warning_state |= 1 << WARNING_WIFI_FAIL; warning_state |= 1 << WARNING_WIFI_FAIL;
indicates_state &= ~(1 << INDICATES_WIFI_RECONNECT); indicates_state &= ~(1 << INDICATES_WIFI_RECONNECT);
@ -456,7 +478,7 @@ static void app_event_thread(beken_thread_arg_t data)
s_active_tickets &= ~(1 << COUNTDOWN_TICKET_NETWORK_ERROR); s_active_tickets &= ~(1 << COUNTDOWN_TICKET_NETWORK_ERROR);
indicates_state &= ~(1 << INDICATES_POWER_ON); indicates_state &= ~(1 << INDICATES_POWER_ON);
warning_state &= ~((1 << WARNING_RTC_CONNECT_LOST) | (1 << WARNING_AGENT_OFFLINE) | (1 << WARNING_WIFI_FAIL)); warning_state &= ~((1 << WARNING_RTC_CONNECT_LOST) | (1 << WARNING_AGENT_OFFLINE) | (1 << WARNING_WIFI_FAIL));
LOGI("APP_EVT_AGENT_JOINED \n"); LOGE("APP_EVT_AGENT_JOINED \n");
is_network_provisioning = 0; is_network_provisioning = 0;
indicates_state &= ~(1 << INDICATES_PROVISIONING); indicates_state &= ~(1 << INDICATES_PROVISIONING);
if (is_standby) // mie if (is_standby) // mie
@ -464,13 +486,13 @@ static void app_event_thread(beken_thread_arg_t data)
indicates_state |= (1 << INDICATES_STANDBY); indicates_state |= (1 << INDICATES_STANDBY);
} }
#if CONFIG_AUD_INTF_SUPPORT_PROMPT_TONE #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); zhanyu
#endif #endif
break; break;
case APP_EVT_AGENT_OFFLINE: case APP_EVT_AGENT_OFFLINE:
// network_err = 1; // network_err = 1;
s_active_tickets |= (1 << COUNTDOWN_TICKET_NETWORK_ERROR); s_active_tickets |= (1 << COUNTDOWN_TICKET_NETWORK_ERROR);
LOGI("APP_EVT_AGENT_OFFLINE\n"); LOGE("APP_EVT_AGENT_OFFLINE\n");
indicates_state &= ~(1 << INDICATES_AGENT_CONNECT); indicates_state &= ~(1 << INDICATES_AGENT_CONNECT);
warning_state |= 1 << WARNING_AGENT_OFFLINE; warning_state |= 1 << WARNING_AGENT_OFFLINE;
#if CONFIG_AUD_INTF_SUPPORT_PROMPT_TONE #if CONFIG_AUD_INTF_SUPPORT_PROMPT_TONE

View File

@ -935,7 +935,7 @@ int rtc_websocket_send_text(transport web_socket, void *str, enum MsgType msgtyp
// <20><> cJSON <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD> // <20><> cJSON <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
char *jsonString = cJSON_Print(startMessage); char *jsonString = cJSON_Print(startMessage);
BK_LOGE("WebSocket", "Sending: %s\r\n", jsonString); BK_LOGI("WebSocket", "Sending: %s\r\n", jsonString);
websocket_client_send_text(web_socket, jsonString, strlen(jsonString), 10*1000); websocket_client_send_text(web_socket, jsonString, strlen(jsonString), 10*1000);
// ɾ<><C9BE> cJSON <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ڴ<EFBFBD> // ɾ<><C9BE> cJSON <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ڴ<EFBFBD>
cJSON_Delete(startMessage); cJSON_Delete(startMessage);
@ -975,7 +975,7 @@ int rtc_websocket_send_text(transport web_socket, void *str, enum MsgType msgtyp
// <20><> cJSON <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD> // <20><> cJSON <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
char *jsonString = cJSON_Print(helloMessage); char *jsonString = cJSON_Print(helloMessage);
BK_LOGE("WebSocket", "Sending: %s\r\n", jsonString); BK_LOGI("WebSocket", "Sending: %s\r\n", jsonString);
websocket_client_send_text(web_socket, jsonString, strlen(jsonString), 10*1000); websocket_client_send_text(web_socket, jsonString, strlen(jsonString), 10*1000);
// ɾ<><C9BE> cJSON <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ڴ<EFBFBD> // ɾ<><C9BE> cJSON <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ڴ<EFBFBD>
@ -1000,7 +1000,7 @@ int rtc_websocket_send_text(transport web_socket, void *str, enum MsgType msgtyp
cJSON_Delete(iot_desc); cJSON_Delete(iot_desc);
return -1; return -1;
} }
LOGE("iot -->(len:%d) %s\n",strlen(message),message); LOGI("iot -->(len:%d) %s\n",strlen(message),message);
int ret = websocket_client_send_text(web_socket, message, strlen(message), 10*1000); int ret = websocket_client_send_text(web_socket, message, strlen(message), 10*1000);
LOGE("send iot desc ret:%d \n",ret); LOGE("send iot desc ret:%d \n",ret);
cJSON_Delete(iot_desc); cJSON_Delete(iot_desc);

View File

@ -523,7 +523,7 @@ void rtc_websocket_msg_handle(char *json_text, unsigned int size)
LOGE("Error: Failed to parse JSON text:%s\n", json_text); LOGE("Error: Failed to parse JSON text:%s\n", json_text);
return; return;
} }
//bk_printf("rtc_websocket_msg_handle json_text : %s \n",json_text);
cJSON *type = cJSON_GetObjectItem(root, "type"); cJSON *type = cJSON_GetObjectItem(root, "type");
if (type == NULL) if (type == NULL)
{ {
@ -541,6 +541,9 @@ void rtc_websocket_msg_handle(char *json_text, unsigned int size)
int ret = 200; int ret = 200;
if (ret == 200) if (ret == 200)
{ {
if(g_connected_flag){//zhanyu
return;
}
g_connected_flag = true; g_connected_flag = true;
network_reconnect_stop_timeout_check(); network_reconnect_stop_timeout_check();
app_event_send_msg(APP_EVT_AGENT_JOINED, 0); app_event_send_msg(APP_EVT_AGENT_JOINED, 0);
@ -780,9 +783,17 @@ void rtc_websocket_event_handler(void *event_handler_arg, char *event_base, int3
} }
// beken_rtc_stop();//zhanyu
//audio_tras_deinit();
break;
case WEBSOCKET_EVENT_CLOSED:
bk_printf("WEBSOCKET_EVENT_CLOSED~~~~\n");
beken_rtc_stop();//zhanyu beken_rtc_stop();//zhanyu
//audio_tras_deinit(); //audio_tras_deinit();
break; break;
case WEBSOCKET_EVENT_DATA: case WEBSOCKET_EVENT_DATA:
LOGD("data from WebSocket server, len:%d op:%d\r\n", data->data_len, data->op_code); LOGD("data from WebSocket server, len:%d op:%d\r\n", data->data_len, data->op_code);
if (data->op_code == WS_TRANSPORT_OPCODES_BINARY) if (data->op_code == WS_TRANSPORT_OPCODES_BINARY)