HAND_UPGRADE_DESCRIPTION_NOTIFY, // 升级描述通知
HAND_STORY_RESPONSE_FINISHED_NOTIFY, // 故事响应finished通知
HAND_DIALOGUE_RESPONSE_FINISHED_NOTIFY, // 对话响应finished通知
+ HAND_VAD_INITIALIZED_NOTIFY, // VAD初始化完成通知
MAX_NUM_HANDLER,
} UiServiceMsgId;
uapi_start_all_websocket_servers(0); // 连接服务器
#endif
- // // VAD 认证初始化(只尝试一次,避免网络失败时重复重试导致死机)
- // static uint8_t dmp_auth = 0;
- // static uint8_t dmp_auth_retry_count = 0;
- // const uint8_t MAX_AUTH_RETRY = 1; // 最多重试1次
-
- // if(dmp_auth == 0 && dmp_auth_retry_count < MAX_AUTH_RETRY)
- // {
- // dmp_auth_retry_count++;
- // char dmp_token[64] = {0};
- // 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);
- // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "VAD auth result: %d, token: %s", ret, auth_info.dmp_token);
- // dmp_auth = 1; // 无论成功失败都标记为已尝试,避免重复
- // }
- // else
- // {
- // // 只有在网络正常时才尝试登录,避免网络失败时阻塞
- // if(HasNetwork() && 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);
- // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "VAD auth result after login: %d, token: %s", ret, auth_info.dmp_token);
- // dmp_auth = 1;
- // }
- // else
- // {
- // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "VAD auth failed: failed to read token after login");
- // dmp_auth = 1; // 标记为已尝试,避免重复
- // }
- // }
- // else
- // {
- // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "VAD auth failed: dmp_aut_login failed or no network, retry_count=%d", dmp_auth_retry_count);
- // // 如果网络失败,也标记为已尝试,避免无限重试
- // // 但允许在下次网络恢复时再试一次(通过 retry_count 控制)
- // if(dmp_auth_retry_count >= MAX_AUTH_RETRY)
- // {
- // dmp_auth = 1; // 达到最大重试次数,不再尝试
- // }
- // }
- // }
- // }
+ do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_VAD_AUTH, NULL, 0);
init_falg = true;
}
}
}
+
+ // VAD初始化完成处理函数
+ void ThunderBirdModel::HandleVadInitialized()
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdModel::HandleVadInitialized: VAD初始化完成");
+ // 隐藏提醒界面,暂不处理,后续有需要再增加
+ // if(ThunderBirdReminderView::GetInstance())
+ // {
+ // ThunderBirdReminderView::GetInstance()->HideAll();
+ // }
+
+ // ThunderBirdPresenter::GetInstance()->vadFirstSuccess = true;
+ }
// 将英文表情映射到英文文件名
std::string ThunderBirdModel::MapEmotionToFileName(const char* emotion)
expressionPath = "/user/res/video/Default/" + emotionFileName + ".mp4";
} else {
// 非默认表情
- if(m_currentExpression == "winking") {
+ if(emotion == "winking") {
// 如果为眨眼表情,则在默认文件目录里面
// expressionPath = "/user/res/video/CloseEyes/" + eyesShape_ + "/" + eyesColor_ + ".mp4";
return;
} else {
// 非眨眼表情,则在下载文件目录里面
- if(m_currentExpression == "sleeping")
+ if(emotion == "sleeping")
{
expressionPath = "/user/res/video/Default/sleeping.mp4";
}
else
{
- expressionPath = "/user/userdata/leiniao/emoji/" + eyesShape_ + "/" + eyesColor_ + "/" + m_currentExpression + ".mp4";
+ expressionPath = "/user/userdata/leiniao/emoji/" + eyesShape_ + "/" + eyesColor_ + "/" + emotion + ".mp4";
}
}
}
#include "TransitionType.h"
#include "thunderbird/include/ThunderBirdModel.h"
+#include "thunderbird/include/ThunderBirdReminderView.h"
+#include "thunderbird/include/ThunderBirdPresenter.h"
+#include "thunderbird/include/ThunderBirdMainView.h"
+#include "thunderbird/include/ThunderBirdDialogueView.h"
#include "ota/include/OtaModel.h"
+#include "ln_api.h"
extern "C" errcode_t uapi_pm_add_sleep_veto(pm_id_t veto_id);
extern "C" errcode_t uapi_pm_remove_sleep_veto(pm_id_t veto_id);
static void HandUpgradeDescriptionNotify(Request *request);
static void HandStoryResponseFinishedNotify(Request *request);
static void HandDialogueResponseFinishedNotify(Request *request);
+static void HandVadInitializedNotify(Request *request);
// 消息处理程序项数组(每个消息类型对应一个处理函数,函数名以 Handle 开头)
MsgHandlerEntry msgHandlers[] = {
{HANDLE_JUMP_OTA_VIEW, HandleJumpOtaView},
{HAND_UPGRADE_DESCRIPTION_NOTIFY,HandUpgradeDescriptionNotify},
{HAND_STORY_RESPONSE_FINISHED_NOTIFY,HandStoryResponseFinishedNotify},
{HAND_DIALOGUE_RESPONSE_FINISHED_NOTIFY,HandDialogueResponseFinishedNotify},
+ {HAND_VAD_INITIALIZED_NOTIFY,HandVadInitializedNotify},
};
/* -------------------------------------------------------------------------- */
void ScreenTurnOn(int32_t timeout)
OHOS::ThunderBirdModel::GetInstance(), finished));
}
}
+
+void HandVadInitializedNotify(Request *request)
+{
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_UI_SERVICE, "HandVadInitializedNotify msg_id = %d", request->msgId);
+ // 隐藏等待语音初始化提醒,并进入对话模式
+ GraphicService::GetInstance()->PostGraphicEvent(
+ std::bind([]() {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_UI_SERVICE, "VAD initialized, hiding reminder and entering dialogue mode");
+ std::bind(&OHOS::ThunderBirdModel::HandleVadInitialized,OHOS::ThunderBirdModel::GetInstance());
+ }));
+}
/* -------------------------------------------------------------------------- */
#ifdef __cplusplus
}
WS_CMD_AUDIO_RECORDING_START, /* 开始录音上传 */
WS_CMD_AUDIO_RECORDING_END, /* 结束录音上传 */
WS_CMD_SENTENCE_PLAYBACK_COMPLETE, /* 单句语音播放完成 */
+ WS_CMD_VAD_INITIALIZED, /* VAD 服务器初始化完成 */
WS_CMD_DEVICE_UPGRADE, /* 设备升级(DeviceUpgrade) */
WS_CMD_MAX /* 最大命令 */
} ws_command_t;
bool ln_ws_is_audio_initialized(void);
+int ln_ws_vad_auth(void);
+
/* WebSocket状态查询接口 */
int ln_ws_get_connection_state(void);
const char* ln_ws_get_connection_state_string(void);
int ln_ws_disable_vad_server(void); /* 禁用 VAD 服务器 */
bool ln_ws_is_vad_server_enabled(void); /* 获取 VAD 服务器启用状态 */
bool ln_ws_is_vad_server_initialized(void); /* 获取 VAD 服务器初始化状态 */
+bool ln_ws_is_vad_server_auth_success(void); /* 获取 VAD 服务器认证成功状态 */
#ifdef __cplusplus
}
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[DIALOGUE_RESPONSE_FINISHED] finished=%d", finished);
SendMsgToUIService(HAND_DIALOGUE_RESPONSE_FINISHED_NOTIFY, 0, &finished, sizeof(finished));
}
+
+//通知VAD初始化完成
+void push_vad_initialized_notification(void)
+{
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[VAD_INITIALIZED] VAD server initialized");
+ SendMsgToUIService(HAND_VAD_INITIALIZED_NOTIFY, 0, NULL, 0);
+}
#ifdef __cplusplus
};
#endif
\ No newline at end of file
void push_story_response_finished_notification(bool finished);
//通知对话响应finished
void push_dialogue_response_finished_notification(bool finished);
+//通知VAD初始化完成
+void push_vad_initialized_notification(void);
#ifdef __cplusplus
}
#endif