LN_WS_INFO("Starting VAD authentication...\n");
// 使用静态变量,避免重复认证
static uint8_t task_dmp_auth = 0;
- static uint8_t task_dmp_auth_retry_count = 0;
- const uint8_t MAX_AUTH_RETRY = 5; // 最多重试1次
- if(task_dmp_auth == 0 && task_dmp_auth_retry_count < MAX_AUTH_RETRY)
+ if(task_dmp_auth == 0)
{
- task_dmp_auth_retry_count++;
-
char dmp_token[64] = {0};
if(dmp_read_dev_token(dmp_token))
{
{
if(dmp_aut_login())
{
- // 登录成功后重新尝试读取token
- if(dmp_read_dev_token(dmp_token))
- {
- struct AuthInfo auth_info;
- memset(&auth_info, 0, sizeof(auth_info));
- strcpy(auth_info.dmp_token, dmp_token);
- int ret = auth_vad(&auth_info);
- LN_WS_INFO("VAD auth result after login: %d, token: %s\n", ret, auth_info.dmp_token);
- task_dmp_auth = 1;
- g_vad_server_auth_success = true;
- return (ret == 1) ? 0 : -1; // auth_vad 返回1表示成功
- }
- else
+ // 登录成功后循环尝试读取token,直到获取成功
+ int retry_count = 0;
+ const int MAX_TOKEN_READ_RETRY = 1000; // 最多重试100次,避免无限循环
+ const int RETRY_INTERVAL_MS = 100; // 每次重试间隔100ms
+
+ while(retry_count < MAX_TOKEN_READ_RETRY)
{
- LN_WS_ERROR("VAD auth failed: failed to read token after login\n");
- task_dmp_auth = 1; // 标记为已尝试,避免重复
- return -1;
+ dmp_aut_login();
+ if(dmp_read_dev_token(dmp_token))
+ {
+ // 成功读取token
+ struct AuthInfo auth_info;
+ memset(&auth_info, 0, sizeof(auth_info));
+ strcpy(auth_info.dmp_token, dmp_token);
+ LN_WS_INFO("VAD auth result after login: %d, token: %s, retry_count=%d\n",
+ ret, auth_info.dmp_token, retry_count);
+ task_dmp_auth = 1;
+ g_vad_server_auth_success = true;
+ return (ret == 1) ? 0 : -1; // auth_vad 返回1表示成功
+ }
+
+ // 读取失败,等待后重试
+ retry_count++;
+ if(retry_count % 10 == 0) // 每10次打印一次日志,减少日志噪音
+ {
+ LN_WS_INFO("Waiting for token after login, retry_count=%d\n", retry_count);
+ }
+ LOS_Msleep(RETRY_INTERVAL_MS);
}
+
+ // 达到最大重试次数仍未成功
+ LN_WS_ERROR("VAD auth failed: failed to read token after login, max retry reached (%d)\n",
+ MAX_TOKEN_READ_RETRY);
+ task_dmp_auth = 1; // 标记为已尝试,避免重复
+ return -1;
}
else
{
- LN_WS_ERROR("VAD auth failed: dmp_aut_login failed, retry_count=%d\n", task_dmp_auth_retry_count);
- // 如果网络失败,也标记为已尝试,避免无限重试
- if(task_dmp_auth_retry_count >= MAX_AUTH_RETRY)
- {
- task_dmp_auth = 1; // 达到最大重试次数,不再尝试
- }
+ LN_WS_ERROR("VAD auth failed: dmp_aut_login failed\n");
+ task_dmp_auth = 1; // 标记为已尝试,避免重复
return -1;
}
}