#include "ln_api.h"
#include <unistd.h>
#include "vibrator_service.h"
+#include "ai_media.h"
#define JUHEPINGTAI 0
#if JUHEPINGTAI
#include "websocket_server_manager.h"
/*************************OTA升级*************************/
int ThunderBirdModel::ota_update_boot()
{
-
do_ln_http_server_send_data(LN_HTTP_SERVICE_CMD_OTA_GET_TASK, nullptr, 0);//获取是否需要OTA升级
return -1;
}
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdModel::UpdateOtaStatus: %d", status);
m_otaStatus = status;
// 更新状态检查
- if(status == 1 || status == 2 || status == 3)//OTA升级
+ if(status == 1 || status == 2)//OTA升级
{
SetViewModel();
//do_ln_http_server_send_data(LN_HTTP_SERVICE_CMD_WS_ENTER_SLEEP, NULL, 0);
+ AI_ForceInterrupt();
+ ln_ws_send_voice_chat_interrupt("进入OTA");
NativeAbility::GetInstance().ChangeSlice(VIEW_OTA);
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "进入OTA");
}
// 不入队,避免重复显示
} else {
// 非第一个文本,加入队列等待音频开始播放时同步出队
- EnqueueAudioText(textId);
+ std::string textStr(textId);
+ EnqueueAudioText(textStr);
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "文本入队,等待音频开始播放: %s", textId);
}
}
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "检测到夜间更新已启用,切换到OTA slice");
// 切换到OTA slice
//do_ln_http_server_send_data(LN_HTTP_SERVICE_CMD_WS_ENTER_SLEEP, NULL, 0);
+ AI_ForceInterrupt();
+ ln_ws_send_voice_chat_interrupt("切换slice");
NativeAbility::GetInstance().ChangeSlice(VIEW_OTA);
}
}
m_countUpActive = false;
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Count up timer completed: %d/%d", m_countUpValue, m_countUpTarget);
- // æ£\80æ\9f¥æ\98¯å\90¦æ\98¯è\81\86å\90¬ç\95\8cé\9d¢è¶\85æ\97¶ï¼\8cé\9c\80è¦\81è\87ªå\8a¨è·³è½¬å\88°è¯´è¯\9dç\95\8cé\9d¢
+ // æ ¹æ\8d®å½\93å\89\8dç\95\8cé\9d¢è¿\9bè¡\8cä¸\8då\90\8cç\9a\84å¤\84ç\90\86
ThunderBirdMainView *view = ThunderBirdMainView::GetInstance();
if (view) {
int16_t currentView = view->GetCurrentView();
int16_t currentSubView = view->GetCurrentSubView();
+ // 检查是否是聆听界面超时,需要自动跳转到说话界面
if (currentView == THUNDERBIRD_DIALOGUEVIEW &&
currentSubView == ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_LISTENING) {
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "聆听界面超时,自动跳转到说话界面");
view->ChangeView(currentView, THUNDERBIRD_DIALOGUEVIEW, ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_SPEAKING);
ln_ws_end_audio_chat();
}
+ // 检查是否是绑定成功界面,需要跳转到对话界面
+ else if (currentView == THUNDERBIRD_ADJUSTVIEW &&
+ currentSubView == ThunderBirdAdjustView::THUNDERBIRD_ADJUSTVIEW_BIND_SUCCESS) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "绑定成功界面超时,跳转到对话界面");
+ ThunderBirdModel::GetInstance()->ota_update_boot(); // 绑定成功后获取ota升级任务
+ view->ChangeView(currentView, THUNDERBIRD_DIALOGUEVIEW, ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_STATUS_SHOW);
+ }
+ // 检查是否是警告界面,需要返回原任务
+ else if (currentView == THUNDERBIRD_ADJUSTVIEW &&
+ currentSubView == ThunderBirdAdjustView::THUNDERBIRD_ADJUSTVIEW_WARNING) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "警告界面超时,返回原任务");
+ view->GoBackToPreviousView();
+ }
+ // 检查是否是任务提醒界面,需要返回原任务
+ else if (currentView == THUNDERBIRD_REMINDERVIEW &&
+ currentSubView == ThunderBirdReminderView::THUNDERBIRD_REMINDERVIEW_TASK_REMINDER) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "任务提醒界面超时,返回原任务");
+ ThunderBirdModel::GetInstance()->HighFrequence();
+ view->GoBackToPreviousView();
+ }
}
} else {
// 增加计数值
if (ThunderBirdMainView::GetInstance()) {
int currentView = ThunderBirdMainView::GetInstance()->GetCurrentView(); //获取当前视图
ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_LULLABYVIEW, ThunderBirdLullabyView::THUNDERBIRD_LULLABYVIEW_4);
+ //清空文本队列
+ ClearAudioTextQueue();
+ ln_ws_audio_init();//功耗优化
} else {
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdMainView instance is null, cannot start sleep mode");
}
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdModel::HandleSleepModeEnd");
if (ThunderBirdMainView::GetInstance()) {
int currentView = ThunderBirdMainView::GetInstance()->GetCurrentView(); //获取当前视图
+ ln_ws_audio_deinit();//功耗优化
ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_LULLABYVIEW, ThunderBirdLullabyView::THUNDERBIRD_LULLABYVIEW_5);
} else {
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdMainView instance is null, cannot end sleep mode");
{
int currentView = ThunderBirdMainView::GetInstance()->GetCurrentView();
int currentSubView = ThunderBirdMainView::GetInstance()->GetCurrentSubView();
- if(currentSubView != ThunderBirdAdjustView::THUNDERBIRD_ADJUSTVIEW_WARNING && currentSubView != ThunderBirdAdjustView::THUNDERBIRD_ADJUSTVIEW_NETWORK_CONNECTING)
+ if(currentSubView == ThunderBirdAdjustView::THUNDERBIRD_ADJUSTVIEW_WARNING && currentSubView == ThunderBirdAdjustView::THUNDERBIRD_ADJUSTVIEW_NETWORK_CONNECTING)
+ {
+ ThunderBirdAdjustView::GetInstance()->UpdateTaskReminderText(message);
+ }
+ else
{
ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_ADJUSTVIEW, ThunderBirdAdjustView::THUNDERBIRD_ADJUSTVIEW_WARNING);
- if (ThunderBirdAdjustView::GetInstance()) {
- ThunderBirdAdjustView::GetInstance()->UpdateTaskReminderText(message);
- }
+ ThunderBirdAdjustView::GetInstance()->UpdateTaskReminderText(message);
}
}
}
{
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdModel::HandleDownloadFile");
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Download type: %d", type);
-
+ if(ThunderBirdModel::GetOtaStatus() != 0)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdModel::HandleDownloadFile: OTA正在升级,跳过下载");
+ return;
+ }
// 根据下载类型进行不同的处理
switch (type) {
case DOWNLOAD_FILE_TYPE_SCREEN_IMAGE: // 屏保下载
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdModel::HandleDownloadFile: Starting emoji download");
// 这里可以添加表情下载的具体逻辑
+ do_ln_http_server_send_data(LN_HTTP_SERVICE_CMD_DOWNLOAD_SCREEN_IMAGE, NULL, 0);
break;
case DOWNLOAD_FILE_TYPE_EMOJI: // 表情下载
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdModel::HandleDownloadFile: Starting hair download");
// 这里可以添加发型下载的具体逻辑
+ do_ln_http_server_send_data(LN_HTTP_SERVICE_CMD_DOWNLOAD_EMOJI, NULL, 0);
break;
default:
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdModel::HandleDownloadFile: Unknown download type: %d", type);
//跳转到OTA下载界
downloadFileType = type;
//do_ln_http_server_send_data(LN_HTTP_SERVICE_CMD_WS_ENTER_SLEEP, NULL, 0);
+ AI_ForceInterrupt();
+ ln_ws_send_voice_chat_interrupt("开始下载");
NativeAbility::GetInstance().ChangeSlice(VIEW_OTA);
}
//通知界面-关闭通知
case ThunderBirdReminderView::THUNDERBIRD_REMINDERVIEW_TASK_REMINDER://事项提醒界面-关闭通知
//回原界面
+ ThunderBirdModel::GetInstance()->StopCountUpTimer(); // 手动跳转时关闭定时器
ThunderBirdModel::GetInstance()->HighFrequence();
ThunderBirdMainView::GetInstance()->GoBackToPreviousView();
break;
{
switch (currentSubView) {
case ThunderBirdAdjustView::THUNDERBIRD_ADJUSTVIEW_BIND_SUCCESS:
+ ThunderBirdModel::GetInstance()->StopCountUpTimer(); // 手动跳转时关闭定时器
ThunderBirdModel::GetInstance()->ota_update_boot();//绑定成功后获取ota升级任务
ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_DIALOGUEVIEW, ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_STATUS_SHOW);
break;
{
switch (currentSubView) {
case ThunderBirdAdjustView::THUNDERBIRD_ADJUSTVIEW_WARNING://退出返回原任务
+ ThunderBirdModel::GetInstance()->StopCountUpTimer(); // 手动跳转时关闭定时器
ThunderBirdMainView::GetInstance()->GoBackToPreviousView();
break;
}
// 进入对话模式时记录当前表情
ThunderBirdModel::GetInstance()->OnEnterDialogueMode();
ln_ws_start_audio_chat(LN_AUDIO_CHAT_VOICE_CHAT_REQUEST);//开始对话
+ ln_ws_audio_init();//功耗优化
}
else if(currentView == THUNDERBIRD_DIALOGUEVIEW)
{
// ai_media_play_stop();
// WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ThunderBirdDialogueView::AudioPlaybackEnd: Stopped audio playback");
ln_ws_end_audio_chat();//结束对话
+ ln_ws_audio_deinit();//功耗优化
// 退出对话模式时恢复表情
AI_ForceInterrupt();
ln_ws_send_voice_chat_interrupt("退出对话");