lnppp版本vad增加
authorhcj <1224667075@qq.com>
Tue, 11 Nov 2025 10:10:12 +0000 (18:10 +0800)
committerhcj <1224667075@qq.com>
Tue, 11 Nov 2025 10:10:12 +0000 (18:10 +0800)
code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdModel.cpp
code/sdk/build/config/target_config/brandy/config.py
code/sdk/zhihui/dmp/dmp_dev_authentication.c
code/sdk/zhihui/imsl/CMakeLists.txt
code/sdk/zhihui/imsl/src/vad_server.c
code/sdk/zhihui/leiniao/imsl_ln/ln_api_websocket.c

index 151a06a..339eca9 100644 (file)
     // 录音结束处理函数
     void ThunderBirdModel::HandleAudioRecordingEnd()
     {
-        return ;//需要vad的时候在处理
+        // return ;//需要vad的时候在处理
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdModel::HandleAudioRecordingEnd: 录音结束");
         
         // 获取当前视图状态
index ad28455..91fd4e8 100644 (file)
@@ -1533,6 +1533,8 @@ target = {
                         #VAD 相关配置
                         "imsl",
                         "minimp3",
+                        "dmp",
+                        
 
                           "nativeabilityfwk",
                           "custom_utils",
index ec04cc5..c2734ab 100644 (file)
@@ -477,10 +477,17 @@ bool dmp_aut_active(void)//设备激活
     if(ret==200)
     {   
         dmp_read_dev_pass_save(out_buf);
+        cJSON_free(json_string);
+        return true;  
     }
+    else
+    {
+        cJSON_free(json_string);
+        return false;  
 
-    cJSON_free(json_string);
-    return true;  
+    }
+
+   
 
 }
 
@@ -495,16 +502,22 @@ bool dmp_aut_login(void)//登录
      time_t timestamp;
     timestamp = time(NULL);
 
-    if(timestamp - aut_login_time < 60 * 60 )
-    {
-        return true;
-    }
-
     char dev_pass[64]={0};  
     // 若内存中无 data_pass,则尝试从配置中加载
     if (strlen(data_pass) == 0) {
         (void)cm_get_dmp_data_pass(data_pass, sizeof(data_pass));
     }
+    if(strlen(data_pass) == 0)
+    {
+        if(dmp_aut_active())//设备激活
+        {
+            (void)cm_get_dmp_data_pass(data_pass, sizeof(data_pass));
+        }
+        else
+        {
+            return false;
+        }
+    }
     memcpy(dev_pass, data_pass, strlen(data_pass));
     printf("dev_sign_in 2");
     int count = 5;
index 215df74..d5521d3 100644 (file)
@@ -20,7 +20,7 @@ set(PUBLIC_HEADER
 # 公共宏定义(可选)
 set(PUBLIC_DEFINES
     # 例如:IMSL_LN_ENABLE=1
-    ENABLE_VAD_SERVER=0
+    ENABLE_VAD_SERVER=1
 )
 
 # 根据 MINI_MP3 宏添加 MP3 解码支持
index 1b5e272..a9ef0dd 100644 (file)
@@ -127,6 +127,7 @@ static void vad_mp3_pcm_callback(const int16_t *pcm_data, int samples, int chann
 }
 #endif
 
+static uint8_t dmp_auth=0;
 /**
  * @brief 处理 PCM 数据,直接送给 VAD(简化版)
  * @note VAD 库支持可变长度输入(推荐 < 100ms),无需固定切分
@@ -140,6 +141,35 @@ static errcode_t vad_process_pcm_data(const int16_t *pcm_data, size_t sample_cou
     }
     
     pcm_call_count++;
+
+    LOGIN_SUCC:
+
+    if(dmp_auth==0)
+    {
+        char dmp_token[64];
+        if(dmp_read_dev_token(dmp_token))
+        {
+            struct AuthInfo auth_info;
+            strcpy(auth_info.dmp_token, dmp_token);
+            int ret =auth_vad(&auth_info);
+            printf("vad_process_pcm_data %d\r\n",ret);
+            dmp_auth=1;
+        }
+        else
+        {
+            if(dmp_aut_login())
+            {
+                goto LOGIN_SUCC;
+            }
+            else
+            {
+                 return ERRCODE_FAIL;
+            }
+        }  
+    }
+
+
+
     
     /* 检查数据长度是否合理(VAD 推荐 < 100ms)*/
     const size_t MAX_SAMPLES_PER_CALL = 1600;  // 100ms @ 16kHz
index d3d362d..8c51528 100644 (file)
@@ -857,6 +857,7 @@ static void ai_binary_message_handler(const uint8_t *raw_data, uint32_t timestam
     
     // 记录接收数据的时间
     g_last_binary_data_tick = osKernelGetTickCount();
+    g_vad_cooldown_active = false;
     
     if (!is_chat_id_matched() && g_audio_playback_active) {
         LN_WS_WARN("Chat ID not matched\n");