static volatile int g_ws_connected = WS_STATE_DISCONNECTED;
static volatile int g_ws_running = 0;
static volatile unsigned int g_ws_reconnect_count = 0; /* 断线后递增,用于URL reconnect参数 */
-static ws_message_callback_t g_ws_message_callback = NULL; /* 消息处理回调函数 */
+ ws_message_callback_t g_ws_message_callback = NULL; /* 消息处理回调函数 */
static volatile ws_close_status_t g_ws_close_status = WS_CLOSE_NOT_EXECUTED; /* WebSocket关闭状态标志位 */
/* Base64数据缓存相关变量 */
static uint32_t g_audio_cache_pos = 0; // 当前写入位置
static uint32_t g_audio_cache_total = 0; // 总写入数据量
static bool g_audio_cache_wrapped = false; // 是否已循环
-static uint32_t g_audio_playback_start_tick = 0; // 音频播放开始时间tick
+ uint32_t g_audio_playback_start_tick = 0; // 音频播放开始时间tick
// VAD冷却时间相关变量
static uint32_t g_vad_cooldown_start_tick = 0; // VAD冷却开始时间tick
// 更新最后一次音频写入tick
g_last_audio_write_tick = osKernelGetTickCount();
- g_audio_playback_active = true;
+ g_audio_playback_active = true;
+ extern bool a2dp_is_connect;
+ if(ln_get_A2dpSrcPlayingStat()!=1 && a2dp_is_connect)
+ {
+ int ret = a2dp_src_start_playing(ln_bt_get_last_conned_device_Addr()); // 设置耳机的状态为播放
+
+ LN_WS_DEBUG("a2dp_src_start_playing %d \n", ret);
+ }
}
// 发送音频数据到WebSocket
void ln_ws_audio_init(bool is_vad_server_enabled)
{
- // 检查是否已经初始化
+ // 检查是否已经初始化
if (g_audio_initialized) {
LN_WS_WARN("Audio already initialized, skipping duplicate initialization\n");
return;
#include <string.h>
#include <stdlib.h>
#include "wearable_log.h"
+#include "haisi_websocket.h"
#ifdef __cplusplus
extern "C" {
/* 下载服务初始化状态标志 */
static uint8_t g_download_service_initialized = 0;
+extern ws_message_callback_t g_ws_message_callback; /* 消息处理回调函数 */
+
+extern uint32_t g_audio_playback_start_tick ; // 音频播放开始时间tick
+
/* Python服务版本号声明 */
extern uint8_t g_py_ver; /* Python服务版本号 */
}
AI_SendAudioDataToQueue(data, data_len);
+
+ if (!g_audio_playback_active) {
+ g_audio_playback_start_tick = osKernelGetTickCount();
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"Audio playback started at tick: %u\n", g_audio_playback_start_tick);
+
+ // 触发音频播放开始事件
+ if (g_ws_message_callback != NULL) {
+ g_ws_message_callback(NULL, WS_CMD_AUDIO_PLAYBACK_START);
+ }
+
+
+ }
+ extern bool a2dp_is_connect;
+ if(ln_get_A2dpSrcPlayingStat()!=1 && a2dp_is_connect)
+ {
+ int ret = a2dp_src_start_playing(ln_bt_get_last_conned_device_Addr()); // 设置耳机的状态为播放
+
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"a2dp_src_start_playing %d \n", ret);
+ }
+
return 0;
}