#include "CallerLogView.h"
#include "DialingScreenView.h"
#include "CallingView.h"
-#include "ohos_timer.h"
-#include "graphic_timer.h"
+#include "service_id_define.h"
+#include "cmsis_os.h"
#include "samgr_lite.h"
#include "MainCallingPresenter.h"
#include "PlayersModel.h"
#include "graphic_service.h"
+#include "notification_manager.h"
+#include "osal_timer.h"
+#include "cmsis_os2.h"
+#include "custom_utils.h"
+#include "ConfigModel.h"
+#include "vibrator_service.h"
+#include "custom_runtime.h"
+#include "MainCallingView.h"
+
+#ifdef FD230_650
+#include "dial_sos_c.h"
+#endif
+
+#include "cat1_ctl.h"
+#include "cat1_server.h"
+#include "AlarmClockModel.h"
+
+#ifdef SUPPORT_PHONE_SERVICE
+#include "PhoneAGService.h"
+#endif
+
+#include "custom_save_runtime.h"
#ifdef __cplusplus
extern "C" {
static PhoneCallInfo callInfo{};
static int g_retNum{0}; // 电话个数
static int g_volumeLocal{0}; // 错误码返回
-GraphicTimer* g_startCounting = nullptr; // 定时器
-static constexpr uint64_t MS_ONE_SECONDS = 1000;
+osTimerId_t g_startCounting = nullptr; // 定时器
+//
+osTimerId_t g_shake = nullptr; // 循环震动定时器
+
+static constexpr uint64_t MS_ONE_SECONDS = 2000;
static PhoneCallInfo callList[MULTI_CALL_MAX_NUME]{};
// 电话优先级标志位
static int g_firstPriority = NO_NUMBER_STATUS;
// 是否为手表接听状态
static bool g_isWatchCallView = false;
+void g_callTimesclean()
+{
+ g_callTimes=0;
+}
+
+int get_g_callTimes()
+{
+ return g_callTimes;
+}
+void g_callTimesadd()
+{
+ g_callTimes++;
+}
+
+
static void SetPriorityNumber()
{
time_t seconds;
time(&seconds);
+ CallerLogModel::GetInstance()->SetCallSource(CallerLogModel::CallSourcePhone);
+
// 接听和挂起状态需要持续显示通话计时
if (g_firstPriority != NO_NUMBER_STATUS) { // 接听
CallerLogModel::GetInstance()->SetoperateNumber(callList[g_firstPriority].unitCalls.number,
return;
}
+
+static void DisshakeTimer()
+{
+ if (g_shake != nullptr) {
+ osStatus_t ret = osTimerDelete(g_shake);
+ if (ret != osOK) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ScanTimerCallback osTimerDelete failed, ret = %lx!!", ret);
+ return;
+ }
+ g_shake = nullptr;
+ }
+}
+
/* 关闭定时器 */
static void DisableCallingTimer()
-{
+{
if (g_startCounting != nullptr) {
- delete g_startCounting;
+ osStatus_t ret = osTimerDelete(g_startCounting);
+ if (ret != osOK) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ScanTimerCallback osTimerDelete failed, ret = %lx!!", ret);
+ return;
+ }
g_startCounting = nullptr;
g_callTimes = 0;
}
}
+
+void calllognameupdate()
+{
+ if(MainCallingView::GetInstance())
+ {
+ MainCallingView::GetInstance()->updataCallingname();
+ }
+}
+
/* 状态复位 */
-static void StatusReset()
+void StatusReset(void)
{
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "状态复位");
+ uapi_save_runtime_log(RUNTIME_LOG_PHONE_RESET);
+
CallerLogModel::GetInstance()->SetCallStatus(false);
CallerLogModel::GetInstance()->SetWaitingStatus(false);
DisableCallingTimer();
+
+
+
+ CallerLogModel::GetInstance()->Setphonebname("",0);
+ CallerLogModel::GetInstance()->SetCallDial(CallerLogModel::HFP_PHONE_DIAL);
+ CallerLogModel::GetInstance()->set_RejectIncomingCall_falg(0);
+ NotificationManager::GetInstance()->SetWatchCallStatus(false);
+
+ DisshakeTimer();
+ set_call_hungup_flag(0);
+
+ #ifdef FD230_650
+ set_TransCallToMobilePhone_falg(0);
+ #endif
+
+ OHOS::AlarmClockModel::GetInstance()->AlarmPlayerStop();
+
// If the call is handling in the notification, the slice is not switched
- if (!CallerLogModel::GetInstance()->GetNotifyFlag()) {
- NativeAbility::GetInstance().ChangeSlice(VIEW_MAIN);
- } else {
- g_isWatchCallView = false;
+ //if (!CallerLogModel::GetInstance()->GetNotifyFlag())
+
+ #ifdef FD230_650
+ if(CallerLogModel::GetInstance()->GetCallSource()==CallerLogModel::CallSourceCat1)
+ {
+ if(headset_SCO_Is_connect()==false)
+ {
+ #ifdef SUPPORT_CAT1_HFP_AG_SERV
+ do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_CAT_AUDIO_END, nullptr, 0);
+ #endif
+ do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_CAT1_AUDIO_STOP, nullptr, 0);
+ }
+ else
+ {
+ #ifdef SUPPORT_CAT1_HFP_AG_SERV
+ if(headset_Is_connect())
+ {
+ cat1_ag_send_call_event(TOPIC_EVENT_CAT1_CALLENDED,NULL);
+ }
+ #endif
+ }
+ CallerLogModel::GetInstance()->SetCallSource(CallerLogModel::CallSource::CallSourcePhone);
}
+
+
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "xxxxxxxxxxxxx");
+ PhoneServiceScreenCtr(false);
+ if(NativeAbility::GetInstance().GetCurSliceId() == VIEW_INCOMING_CALL)
+ {
+ NativeAbility::GetInstance().Back_CountSlice_make_phone();
+ }
+ else if (!uapi_dev_runtime_get_train_status())// || NativeAbility::GetInstance().GetCurSliceId() == VIEW_BLUETOOTH_EARPHONE )
+ {
+ NativeAbility::GetInstance().ClearSliceIdStack();
+ }
+
+
+ }
+
+ #endif
+ // } else {
+ // g_isWatchCallView = false;
+ // }
return;
}
/* 定时器回调函数 */
-static void CallTimerCallbackProc(void* data)
+static void CallTimerCallbackProc(int data)
{
- g_callTimes++;
-
- if (CallingView::GetInstance() == nullptr) {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[CallTimerCallbackProc] GetInstance is nullptr");
+ if(MainCallingView::GetInstance()==nullptr)
+ {
return;
+ }
+
+
+
+ if(MainCallingView::GetInstance()->GetCallingView())
+ {
+ if (MainCallingView::GetInstance()->GetCallingView()->GetCallingDurationLabel())
+ {
+
+ MainCallingView::GetInstance()->GetCallingView()->GetCallingDurationLabel()->
+ SetText(CallerLogModel::GetInstance()->InitDateHourTime().c_str());
+ MainCallingView::GetInstance()->GetCallingView()->GetCallingDurationLabel()->Invalidate();
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainCallingView::xxx");
+ }
+ }
+
+ if( CallerLogModel::GetInstance()->GetCallSource() == CallerLogModel::CallSourceCat1
+ && NotificationManager::GetInstance()->GetWatchCallStatus()==true)
+ {
+ if(MainCallingView::GetInstance()->GetDisplayGroup())
+ {
+ #ifdef SUPPORT_CAT1_HFP_AG_SERV
+ if(!MainCallingView::GetInstance()->GetDisplayGroup()->IsVisible())
+ {
+
+ if( headset_SCO_Is_connect()==false && volte_voice_state()!=1)
+ {
+ if(volte_voice_state()==2)
+ {
+ do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_CAT1_AUDIO_STOP, nullptr, 0);
+ }
+ do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_CAT1_AUDIO_START, nullptr, 0);
+ }
+ if(headset_SCO_Is_connect()==true && volte_voice_state()!=2)
+ {
+ if(volte_voice_state()==2)
+ {
+ do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_CAT1_AUDIO_STOP, nullptr, 0);
+ }
+ do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_CAT_HFP_SCO_AUDIO_START, nullptr, 0);
+ }
+ }
+ #endif
+
+ }
+
+
+ {
+ if(get_call_hungup_flag()>=2)
+ {
+ cat1_handle_call_disconnected((char *)CallerLogModel::GetInstance()->GetPhoneNumber().c_str());
+ }
+ else if(get_call_hungup_flag())
+ {
+ set_call_hungup_flag(get_call_hungup_flag()+1);
+ }
+ }
+
+ }
+}
+
+
+
+
+static void snakeCallback(int data)
+{
+ if (true != OHOS::ConfigModel::GetInstance()->GetDnotdisturb() && (!uapi_sleep_mode_flag_get()))
+ {
+ ui_api_vibrate_once_func();
}
+}
- if (CallingView::GetInstance()->GetCallingDurationLabel() == nullptr) {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[CallTimerCallbackProc] GetInstance()->GetCallingDurationLabel is nullptr");
+
+static void CallTimerCallback(int data)
+{
+ GraphicService::GetInstance()->PostGraphicEvent(std::bind(CallTimerCallbackProc, data));
+}
+
+static void Call_headset_state_updata_Proc(int data)
+{
+ if(MainCallingView::GetInstance()==nullptr)
+ {
return;
- }
+ }
+
+ MainCallingView::GetInstance()->update_headset_state((uint8_t)data);
- CallingView::GetInstance()->GetCallingDurationLabel()->
- SetText(CallerLogModel::GetInstance()->DisplayCallDuration().c_str());
}
-static void CallTimerCallback(void* data)
+void Call_headset_state_updata(int data)
{
- GraphicService::GetInstance()->PostGraphicEvent(std::bind(CallTimerCallbackProc, data));
+ GraphicService::GetInstance()->PostGraphicEvent(std::bind(Call_headset_state_updata_Proc, data));
}
+
/* 开启定时器 */
-static void InitCallingTimer()
+void InitCallingTimer()
{
if (g_startCounting != nullptr) {
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CallerLogModel::CallerTimer already exists!!");
return;
}
- uint32 tick = GetOSTick(MS_ONE_SECONDS);
- g_startCounting = new GraphicTimer(tick, CallTimerCallback, nullptr, true);
+ g_startCounting = osTimerNew((osTimerFunc_t)CallTimerCallback, osTimerPeriodic, nullptr, nullptr);
if (g_startCounting == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CallerLogModel::CallerTimer new GraphicTimer failed!!");
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CallerLogModel::CallerTimer osTimerNew failed!!");
return;
}
- bool retTimer = g_startCounting->Start();
- if (!retTimer) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CallerLogModel::CallerTimer Start failed, ret = %lx!!", retTimer);
+ int tick = osMs2Tick(MS_ONE_SECONDS);
+ osStatus_t retTimer = osTimerStart(g_startCounting, tick);
+ if (retTimer != osOK) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CallerLogModel::CallerTimer osTimerStart failed, ret = %lx!!", retTimer);
if (g_startCounting != nullptr) {
- delete g_startCounting;
+ retTimer = osTimerDelete(g_startCounting);
+ if (retTimer != osOK) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CallerLogModel::osTimerDelete failed, ret = %lx!!", retTimer);
+ return;
+ }
g_startCounting = nullptr;
}
return;
}
}
+static void InitshakeTimer()
+{
+ if (g_shake != nullptr) {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CallerLogModel::CallerTimer already exists!!");
+ return;
+ }
+ g_shake = osTimerNew((osTimerFunc_t)snakeCallback, osTimerPeriodic, nullptr, nullptr);
+ if (g_shake == nullptr) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CallerLogModel::CallerTimer osTimerNew failed!!");
+ return;
+ }
+ int tick = osMs2Tick(MS_ONE_SECONDS);
+ osStatus_t retTimer = osTimerStart(g_shake, tick);
+ if (retTimer != osOK) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CallerLogModel::CallerTimer osTimerStart failed, ret = %lx!!", retTimer);
+ if (g_shake != nullptr) {
+ retTimer = osTimerDelete(g_shake);
+ if (retTimer != osOK) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CallerLogModel::osTimerDelete failed, ret = %lx!!", retTimer);
+ return;
+ }
+ g_shake = nullptr;
+ }
+ return;
+ }
+}
+
+
+
/* 判断是否有电话,判断优先级 */
bool FindCallListInfoAndSetPriorityNumber()
{
static void ExitMakePhoneSlice(void)
{
- if (NativeAbility::GetInstance().GetCurSliceId() == VIEW_MAEKPHONE_SAMPLE) {
+
+ if( CallerLogModel::GetInstance()->GetCallSource() == CallerLogModel::CallSourceCat1
+ && NotificationManager::GetInstance()->GetWatchCallStatus()==true)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "4G 通话中不能结束");
+ return;
+ }
+
+ if (NativeAbility::GetInstance().GetCurSliceId() == VIEW_INCOMING_CALL) {
WEARABLE_LOGD(HILOG_MODULE_AAFWK, "ExitMakePhoneSlice");
if (GetCurrCallNum() == 0) {
- NativeAbility::GetInstance().ChangeSlice(VIEW_MAIN);
+ //NativeAbility::GetInstance().ChangeSlice(VIEW_MAIN);
CallModelPostGraphicEvent(CallModelResumePlayer);
} else {
- NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST);
+ //NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST);
}
}
- CallerLogModel::GetInstance()->SetCallStatus(false);
- DisableCallingTimer();
- if (CallerLogModel::GetInstance()->GetNotifyFlag()) {
- g_isWatchCallView = false;
+ if(NativeAbility::GetInstance().GetCurSliceId() == VIEW_INCOMING_CALL)
+ {
+ StatusReset();//状态复位
}
+ g_isWatchCallView = false;
}
static void DialingHandle(void)
{
CallerLogModel::GetInstance()->SetDialingStatus("正在拨号");
CallerLogModel::GetInstance()->SetMakePhoneStatus(true);
+ NotificationManager::GetInstance()->SetWatchCallStatus(true);
}
static void AlertingHandle(void)
{
CallerLogModel::GetInstance()->SetDialingStatus("正在响铃");
CallerLogModel::GetInstance()->SetMakePhoneStatus(true);
+ NotificationManager::GetInstance()->SetWatchCallStatus(true);
}
static void IncomingHandle(void)
CallerLogModel::GetInstance()->SetMakePhoneStatus(false);
}
+
// 来电等待界面
static void WaitingOpreate()
{
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[UsingPhoneChangeStatusCallback] is not complete call flow");
return;
}
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[WaitingOpreate] WaitingOpreate");
- CallerLogModel::GetInstance()->SetCallStatus(false);
- CallerLogModel::GetInstance()->SetWaitingStatus(true);
- // If the call is handling in the notification, the slice is not switched
- if (!CallerLogModel::GetInstance()->GetNotifyFlag()) {
- NativeAbility::GetInstance().ChangeSlice(VIEW_MAEKPHONE_SAMPLE, TransitionType::TRANSITION_INVALID,
- PRIORITY_ONE);
- } else {
- g_isWatchCallView = true;
+
+ if(NotificationManager::GetInstance()->GetWatchCallStatus())
+ {
+
+ if(RejectIncomingCall() != 0) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainCallingPresenter::[HintsHandupClick] RejectIncomingCall error");
+ return ;
+ }
+ CustomEventPublish(TOPIC_EVENT_HFP_HINT,NULL,0);
+
}
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[WaitingOpreate] WaitingOpreate");
}
static void WatchActiveHandle(const PhoneCallInfo *phoneCall)
{
- if (NativeAbility::GetInstance().GetCurSliceId() == VIEW_MAEKPHONE_SAMPLE ||
+ if (NativeAbility::GetInstance().GetCurSliceId() == VIEW_INCOMING_CALL ||
NativeAbility::GetInstance().GetCurSliceId() == VIEW_OFFLINEVOICE ||
CallerLogModel::GetInstance()->GetNotifyFlag()) {
time_t seconds;
static void PhoneActiveHandle(void)
{
- if (NativeAbility::GetInstance().GetCurSliceId() == VIEW_MAEKPHONE_SAMPLE ||
+ if (NativeAbility::GetInstance().GetCurSliceId() == VIEW_INCOMING_CALL ||
g_isWatchCallView) {
if (GetCurrCallNum() > 1) {
g_phoneStatus = PHONE_MULTI_STATUS;
TransCallToMobilePhone();
// If the call is handling in the notification, the slice is not switched
if (!CallerLogModel::GetInstance()->GetNotifyFlag()) {
- NativeAbility::GetInstance().ChangeSlice(VIEW_MAIN); // 退出通话界面,回到主表盘应用
+ //NativeAbility::GetInstance().ChangeSlice(VIEW_MAIN); // 退出通话界面,回到主表盘应用
+ StatusReset();
} else {
g_isWatchCallView = false;
}
static void OppoActiveHandle(const PhoneCallInfo *phoneCall)
{
- if (NativeAbility::GetInstance().GetCurSliceId() == VIEW_MAEKPHONE_SAMPLE ||
+ if (NativeAbility::GetInstance().GetCurSliceId() == VIEW_INCOMING_CALL ||
g_isWatchCallView) {
if (GetCurrCallNum() > 1) {
g_phoneStatus = PHONE_MULTI_STATUS;
return false;
}
- CallingView::GetInstance()->GetCallingDisplayLabel()->SetText("正在通话");
+ // CallingView::GetInstance()->GetCallingDisplayLabel()->SetTextId(STR_CALLING);
CallingView::GetInstance()->GetCallingDurationLabel()->SetText("");
return true;
}
static bool MultiplePhonesViewDisplay()
{
if (g_phoneStatus == PHONE_MULTI_STATUS) {
- if (NativeAbility::GetInstance().GetCurSliceId() != VIEW_MAEKPHONE_SAMPLE) {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[MultiplePhonesViewDisplay]GetCurSliceId no VIEW_MAEKPHONE_SAMPLE");
+ if (NativeAbility::GetInstance().GetCurSliceId() != VIEW_INCOMING_CALL) {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[MultiplePhonesViewDisplay]GetCurSliceId no VIEW_INCOMING_CALL");
DisableCallingTimer();
CallerLogModel::GetInstance()->SetMulitplePhoneStatus(true);
CallerLogModel::GetInstance()->SetCallStatus(true);
if (!CallerLogModel::GetInstance()->GetNotifyFlag()) {
- NativeAbility::GetInstance().ChangeSlice(VIEW_MAEKPHONE_SAMPLE, TransitionType::TRANSITION_INVALID,
+ NativeAbility::GetInstance().ChangeSlice(VIEW_INCOMING_CALL, TransitionType::TRANSITION_INVALID,
PRIORITY_ONE);
} else {
g_isWatchCallView = true;
/* 非手表挂断 */
static void NonWatchFinishHandle(int laststatus)
{
- if (NativeAbility::GetInstance().GetCurSliceId() == VIEW_MAEKPHONE_SAMPLE ||
+ if (NativeAbility::GetInstance().GetCurSliceId() == VIEW_INCOMING_CALL ||
CallerLogModel::GetInstance()->GetNotifyFlag()) {
if (GetCurrCallNum() == 0) {
StatusReset();
}
// If the call is handling in the notification, the slice is not switched
if (!CallerLogModel::GetInstance()->GetNotifyFlag()) {
- NativeAbility::GetInstance().ChangeSlice(VIEW_MAEKPHONE_SAMPLE, TransitionType::TRANSITION_INVALID,
+ NativeAbility::GetInstance().ChangeSlice(VIEW_INCOMING_CALL, TransitionType::TRANSITION_INVALID,
PRIORITY_ONE);
} else {
g_isWatchCallView = true;
CallerLogModel::GetInstance()->SetNotifyFlag(false);
}
}
+
+ #ifdef FD230_650
+
if (GetCurrCallNum() == 0) {
g_phoneStatus = PHONE_SINGLE_STATUS;
+ StatusReset();
+ set_TransCallToMobilePhone_falg(0);
+ }
+
+
+
+ if(get_falg_SOS())
+ {
+ sos_falg_add();
}
+
+ #endif
}
static void WatchFinishHandle(void)
{
- if (NativeAbility::GetInstance().GetCurSliceId() == VIEW_MAEKPHONE_SAMPLE ||
- CallerLogModel::GetInstance()->GetNotifyFlag()) {
+
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "WatchFinishHandle");
+
+ if (NativeAbility::GetInstance().GetCurSliceId() == VIEW_INCOMING_CALL ||
+ CallerLogModel::GetInstance()->GetNotifyFlag())
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "WatchFinishHandle");
if (GetCurrCallNum() == 0) {
StatusReset();
CallerLogModel::GetInstance()->SetNotifyFlag(false);
}
}
}
+ else
+ {
+ StatusReset();
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "??????????????????????");
+ }
g_phoneStatus = PHONE_SINGLE_STATUS;
+
+ #ifdef FD230_650
+ sos_falg_clean();
+ #endif
+ }
+
+void CAT1_ChangeStatusScreendisplay(int lastStatus)
+{
+ // If the call is handling in the notification, the slice is not switched
+ if (lastStatus != OPERATE_PHONE_ACTIVE) {
+ NativeAbility::GetInstance().ChangeSlice(VIEW_INCOMING_CALL, TransitionType::TRANSITION_INVALID,
+ PRIORITY_ONE);
+ }
}
static void ChangeStatusScreendisplay(int lastStatus)
{
if (GetScoConnectState() != HFP_SCO_STATE_CONNECTED) {
if (lastStatus == HFP_HF_CALL_STATE_ACTIVE) {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[ChangeStatusScreendisplay] STATE_ACTIVE");
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[ChangeStatusScreendisplay] STATE_ACTIVE");
StatusReset();
return;
} else if (lastStatus == HFP_HF_CALL_STATE_INCOMING) {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[ChangeStatusScreendisplay] STATE_INCOMING");
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[ChangeStatusScreendisplay] STATE_INCOMING");
} else if (GetCurrCallNum() == 1 && (lastStatus == HFP_HF_CALL_STATE_DIALING ||
lastStatus == HFP_HF_CALL_STATE_ALERTING)) {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[ChangeStatusScreendisplay] STATE_ALERTING");
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[ChangeStatusScreendisplay] STATE_ALERTING");
} else if (GetCurrCallNum() > 1) {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[ChangeStatusScreendisplay] GetCurrCallNum MULITE");
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[ChangeStatusScreendisplay] GetCurrCallNum MULITE");
DisableCallingTimer();
return;
}
}
if (!IsCompleteCallFlow()) {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[ChangeStatusScreendisplay] is not complete call flow");
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[ChangeStatusScreendisplay] is not complete call flow");
return;
}
if (MultiplePhonesViewDisplay()) {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[ChangeStatusScreendisplay] MultiplePhonesViewDisplay");
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[ChangeStatusScreendisplay] MultiplePhonesViewDisplay");
return;
}
// If the call is handling in the notification, the slice is not switched
if (g_callOperate != OPERATE_PHONE_ACTIVE && (!CallerLogModel::GetInstance()->GetNotifyFlag())) {
- NativeAbility::GetInstance().ChangeSlice(VIEW_MAEKPHONE_SAMPLE, TransitionType::TRANSITION_INVALID,
+
+ NativeAbility::GetInstance().ChangeSlice(VIEW_INCOMING_CALL, TransitionType::TRANSITION_INVALID,
PRIORITY_ONE);
}
}
void UsingPhoneChangeStatusCallback(const PhoneCallInfo *phoneCall)
{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[UsingPhoneChangeStatusCallback] operate:%d, callNUm:%d, call flow:%d",
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[UsingPhoneChangeStatusCallback] operate:%d, callNUm:%d, call flow:%d",
phoneCall->operate, GetCurrCallNum(), IsCompleteCallFlow());
+ DisshakeTimer();
+
+ #ifdef FD230_650
+ if(phoneCall->operate==OPERATE_INCOMING)
+ {
+ uapi_SetSpeaker_Mute(true);
+ }
+ else
+ {
+ uapi_SetSpeaker_Mute(false);
+ //OHOS::AlarmClockModel::GetInstance()->AlarmPlayerStop();
+ }
+ #endif
+
if (phoneCall->operate == OPERATE_WATCH_FINISH && GetCurrCallNum() == 0) {
g_callOperate = OPERATE_WATCH_FINISH;
WatchFinishHandle();
break;
case OPERATE_INCOMING:
// 显示电话呼入
- IncomingHandle();
+ {
+ InitshakeTimer();
+
+ IncomingHandle();
+
+ }
break;
case OPERATE_WAITING:
// 震动一下,提示有新电话呼入 还未对齐
return;
}
+ if(g_isCall==HFP_HF_CALL_STATE_INCOMING)
+ {
+ #ifdef FD230_650
+ uapi_SetSpeaker_Mute(true);
+ #endif
+ }
+ else
+ {
+ #ifdef FD230_650
+ uapi_SetSpeaker_Mute(false);
+ #endif
+ OHOS::AlarmClockModel::GetInstance()->AlarmPlayerStop();
+ }
+
+
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[ScoConnectHandle] g_isCall = %d", g_isCall);
switch (g_isCall) {
case HFP_HF_CALL_STATE_ACTIVE:
if (g_callOperate == OPERATE_PHONE_ACTIVE) {
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[ScoConnectHandle] OPERATE_PHONE_ACTIVE");
+ TransCallToMobilePhone();
return;
}
CallerLogModel::GetInstance()->SetCallStatus(true);
CallerLogModel::GetInstance()->SetMakePhoneStatus(true);
break;
case HFP_HF_CALL_STATE_DIALING:
+
+ if(OHOS::CallerLogModel::GetInstance()->GetCallDial() == OHOS::CallerLogModel::HFP_PHONE_DIAL)
+ {
+ TransCallToMobilePhone();
+ return;
+ }
CallerLogModel::GetInstance()->SetDialingStatus("正在拨号");
CallerLogModel::GetInstance()->SetMakePhoneStatus(true);
+
+
break;
case HFP_HF_CALL_STATE_INCOMING:
CallerLogModel::GetInstance()->SetMakePhoneStatus(false);
+
break;
case HFP_HF_CALL_STATE_HELD:
CallerLogModel::GetInstance()->SetCallStatus(true);
}
// If the call is handling in the notification, the slice is not switched
if (!CallerLogModel::GetInstance()->GetNotifyFlag()) {
- NativeAbility::GetInstance().ChangeSlice(VIEW_MAEKPHONE_SAMPLE, TransitionType::TRANSITION_INVALID,
+ NativeAbility::GetInstance().ChangeSlice(VIEW_INCOMING_CALL, TransitionType::TRANSITION_INVALID,
PRIORITY_ONE);
} else {
g_isWatchCallView = true;
{
(void)memset_s(&callInfo, sizeof(PhoneCallInfo), 0, sizeof(PhoneCallInfo));
(void)memcpy_s(&callInfo, sizeof(PhoneCallInfo), phoneCall, sizeof(PhoneCallInfo));
+ WEARABLE_LOGE(HILOG_MODULE_AAFWK, "PhoneChangeStatusCallback");
GraphicService::GetInstance()->PostGraphicEvent(std::bind(UsingPhoneChangeStatusCallback, &callInfo));
}
namespace OHOS {
static constexpr int32 NUM_TEN = 10;
+static constexpr int16 ERROR = 0;
+static constexpr int16 SUCCESS = 1;
static constexpr int16 NUM_TIME_MIN = 60;
static constexpr int16 NUM_TIME_HOUR = 3600;
static constexpr int32 NUM_TIME_DAY = 86400;
void CallerLogModel::InitPhoneService()
{
WEARABLE_LOGD(HILOG_MODULE_AAFWK, "CallerLogModel::[InitPhoneService]::Init start");
- PhoneServiceInit();
+
PhoneServiceCb serviceFoution;
serviceFoution.callChanged = PhoneChangeStatusCallback;
void CallerLogModel::SetCallStatus(bool status)
{
callStatus = status;
+ if(status){
+ #ifdef FD230_650
+ sos_falg_clean();
+ #endif
+ }
}
bool CallerLogModel::GetCallStatus()
phoneNumber.append(reinterpret_cast<const char*>(number), number_len);
}
+
+
std::string CallerLogModel::GetPhoneNumber(void)
{
return phoneNumber;
{\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "::CallerLogView::~CallerLogView ");\r
group->RemoveAll();\r
- container->RemoveAll();\r
+ scrollview->RemoveAll();\r
hintsGroup->RemoveAll();\r
\r
delete hintsImageView;\r
dragListener = nullptr;\r
\r
if (num != 0) {\r
- delete[] info;\r
+ delete info;\r
info = nullptr;\r
\r
groupFirst->RemoveAll();\r
delete hintsGroup;\r
hintsGroup = nullptr;\r
\r
- delete container;\r
- container = nullptr;\r
+ delete scrollview;\r
+ scrollview = nullptr;\r
\r
g_pMainView = nullptr;\r
}\r
\r
CallerUIScrollView *CallerLogView::GetContainerView()\r
{\r
- return container;\r
+ return scrollview;\r
}\r
\r
CallerUIScrollView *CallerLogView::GetGroupView()\r
hintsImageView->SetSrc(PNG_BLUETOOTH_HINTS_PATH);\r
hintsGroup->Add(hintsImageView);\r
\r
- AddViewToRootContainer(hintsGroup);\r
+ GetRootContainer()->Add(hintsGroup);\r
hintsGroup->SetVisible(false);\r
return;\r
}\r
groupFirst->SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE);\r
\r
labelLog.SetPosition(0, APP_ITEM_FONT_SIZE, HORIZONTAL_RESOLUTION, ICON_X + NUM_20);\r
- labelLog.SetText("通话记录");\r
+ // labelLog.SetTextId(STR_CALL_LIST);\r
labelLog.SetTextColor(Color::White());\r
labelLog.SetFont(DEFAULT_VECTOR_FONT_FILENAME, HEAD_END_FONT_SIZE);\r
labelLog.SetAlign(TEXT_ALIGNMENT_CENTER);\r
groupFinal->SetOnClickListener(clickLeftListener);\r
\r
labelClear.SetPosition(0, NUM_20, HORIZONTAL_RESOLUTION, APP_ITEM_BUTTON_HEIGHT);\r
- labelClear.SetText("全部清除");\r
+ // labelClear.SetTextId(STR_DELETE_ALL);\r
labelClear.SetTextColor(Color::White());\r
labelClear.SetFont(DEFAULT_VECTOR_FONT_FILENAME, HEAD_END_FONT_SIZE);\r
labelClear.SetAlign(TEXT_ALIGNMENT_CENTER);\r
\r
bool CallerLogView::CreateCallerLogViewGroup()\r
{\r
- container = new CallerUIScrollView();\r
- if (container == nullptr) {\r
+ scrollview = new CallerUIScrollView();\r
+ if (scrollview == nullptr) {\r
return false;\r
}\r
- container->Resize(HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);\r
- container->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);\r
- container->SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE);\r
- container->SetThrowDrag(true);\r
- container->SetDraggable(true);\r
+ scrollview->Resize(HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);\r
+ scrollview->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);\r
+ scrollview->SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE);\r
+ scrollview->SetThrowDrag(true);\r
+ scrollview->SetDraggable(true);\r
return true;\r
}\r
\r
void CallerLogView::OnStart()\r
{\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CallerLogView::OnStart");\r
\r
if (!CreateNoDataCallerLogViewGroup()) {\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CallerLogView::CreateNoDataCallerLogViewGroup error");\r
return;\r
}\r
- AddViewToRootContainer(group);\r
+ GetRootContainer()->Add(group);\r
\r
if (!CreateCallerLogViewGroup()) {\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CallerLogView::CreateCallerLogViewGroup error");\r
return;\r
}\r
\r
+ info = new CallLogInfo[sizeof(CallLogInfo) * CALL_LOG_MAX_NUM];\r
if (GetCallLog(&info, &num) == -1) {\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CallerLogModel::GetInstance()->ListIsEmpty");\r
return;\r
\r
if (num != 0) {\r
ChangeLabelsStytleLog();\r
- container->Add(groupFirst);\r
+ scrollview->Add(groupFirst);\r
\r
currentNumber = 0;\r
for (int i = num; i != 0; i--) {\r
item[currentNumber]->SetItemInfo((info + i - 1), (info + i -1)->telLen);\r
item[currentNumber]->SetViewIndex(currentNumber);\r
item[currentNumber]->SetOnClickListener(clickLeftListener);\r
- container->Add(item[currentNumber]);\r
+ scrollview->Add(item[currentNumber]);\r
currentNumber++;\r
}\r
ChangeLabelsStytleClear((currentNumber + 1)*ITEM_GROUP_HEIGHT, currentNumber);\r
- container->Add(groupFinal);\r
+ scrollview->Add(groupFinal);\r
}\r
\r
dragListener = new CallerListOnDragListener();\r
return;\r
}\r
InitBluetoothHintsGroup();\r
- container->SetOnDragListener(dragListener);\r
+ scrollview->SetOnDragListener(dragListener);\r
group->SetOnDragListener(dragListener);\r
- AddViewToRootContainer(container);\r
+\r
+ if (scrollview == nullptr) {\r
+ return;\r
+ }\r
+\r
+ GetRootContainer()->Add(scrollview);\r
+\r
if (num == 0) {\r
group->SetVisible(true);\r
- container->SetVisible(false);\r
+ scrollview->SetVisible(false);\r
} else {\r
- container->SetVisible(true);\r
+ scrollview->SetVisible(true);\r
group->SetVisible(false);\r
}\r
}\r
{\r
return info;\r
}\r
+\r
}
\ No newline at end of file