#include "CallerLogModel.h"
#include "CallerLogView.h"
#include "DialingScreenView.h"
-#include "MainCallingView.h"
+#include "CallingView.h"
#include "service_id_define.h"
#include "cmsis_os.h"
#include "samgr_lite.h"
static PhoneCallInfo callInfo{};
static int g_retNum{0}; // 电话个数
static int g_volumeLocal{0}; // 错误码返回
-osTimerId_t g_startCounting = NULL; // 定时器
+osTimerId_t g_startCounting = nullptr; // 定时器
static constexpr uint64_t MS_ONE_SECONDS = 1000;
static PhoneCallInfo callList[MULTI_CALL_MAX_NUME]{};
// 电话优先级标志位
static int g_secondPriority = NO_NUMBER_STATUS;
static int g_thirdPriority = NO_NUMBER_STATUS;
static int g_fourthPriority = NO_NUMBER_STATUS;
+// 是否为手表接听状态
+static bool g_isWatchCallView = false;
void g_callTimesclean()
{
/* 关闭定时器 */
static void DisableCallingTimer()
{
- if (g_startCounting != NULL) {
+ if (g_startCounting != nullptr) {
osStatus_t ret = osTimerDelete(g_startCounting);
if (ret != osOK) {
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ScanTimerCallback osTimerDelete failed, ret = %lx!!", ret);
return;
}
- g_startCounting = NULL;
+ g_startCounting = nullptr;
g_callTimes = 0;
}
}
CallerLogModel::GetInstance()->SetWaitingStatus(false);
DisableCallingTimer();
// If the call is handling in the notification, the slice is not switched
- if (CallerLogModel::GetInstance()->GetNotifyFlag() == false) {
+ if (!CallerLogModel::GetInstance()->GetNotifyFlag()) {
NativeAbility::GetInstance().ChangeSlice(VIEW_MAIN);
+ } else {
+ g_isWatchCallView = false;
}
return;
}
g_callTimes++;
if (CallingView::GetInstance() == nullptr) {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[CallTimerCallbackProc] GetInstance is NULL");
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[CallTimerCallbackProc] GetInstance is nullptr");
return;
}
if (CallingView::GetInstance()->GetCallingDurationLabel() == nullptr) {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[CallTimerCallbackProc] GetInstance()->GetCallingDurationLabel is NULL");
- return;
- }
-
- if (CallerLogModel::GetInstance()->DisplayCallDuration() == nullptr) {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[CallTimerCallbackProc] DisplayCallDuration is NULL");
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[CallTimerCallbackProc] GetInstance()->GetCallingDurationLabel is nullptr");
return;
}
CallingView::GetInstance()->GetCallingDurationLabel()->
- SetText(CallerLogModel::GetInstance()->DisplayCallDuration());
+ SetText(CallerLogModel::GetInstance()->DisplayCallDuration().c_str());
}
static void CallTimerCallback(int data)
/* 开启定时器 */
static void InitCallingTimer()
{
- if (g_startCounting != NULL) {
+ if (g_startCounting != nullptr) {
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CallerLogModel::CallerTimer already exists!!");
return;
}
- g_startCounting = osTimerNew((osTimerFunc_t)CallTimerCallback, osTimerPeriodic, NULL, NULL);
- if (g_startCounting == NULL) {
+ g_startCounting = osTimerNew((osTimerFunc_t)CallTimerCallback, osTimerPeriodic, nullptr, nullptr);
+ if (g_startCounting == nullptr) {
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CallerLogModel::CallerTimer osTimerNew failed!!");
return;
}
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 != NULL) {
+ if (g_startCounting != nullptr) {
retTimer = osTimerDelete(g_startCounting);
if (retTimer != osOK) {
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CallerLogModel::osTimerDelete failed, ret = %lx!!", retTimer);
return;
}
- g_startCounting = NULL;
+ g_startCounting = nullptr;
}
return;
}
usleep(5000); // 延时等待通话释放媒体资源
std::shared_ptr<PlayerInterruptListener> PlayerIntrptListener =
OHOS::PlayersModel::GetInstance()->GetPlayerIntrptListener();
- if (PlayerIntrptListener != nullptr && PlayerIntrptListener->IsPaused() == true) {
+ if (PlayerIntrptListener != nullptr && PlayerIntrptListener->IsPaused()) {
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[CallModelResumePlayer] ResumePlayer ");
PlayerIntrptListener->ResumePlayer();
}
}
CallerLogModel::GetInstance()->SetCallStatus(false);
DisableCallingTimer();
+ if (CallerLogModel::GetInstance()->GetNotifyFlag()) {
+ g_isWatchCallView = false;
+ }
}
static void DialingHandle(void)
// 来电等待界面
static void WaitingOpreate()
{
- if (IsCompleteCallFlow() == false) {
+ if (!IsCompleteCallFlow()) {
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[UsingPhoneChangeStatusCallback] is not complete call flow");
return;
}
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() == false) {
- NativeAbility::GetInstance().ChangeSlice(VIEW_INCOMING_CALL, TransitionType::TRANSITION_INVALID, PRIORITY_ONE);
+ if (!CallerLogModel::GetInstance()->GetNotifyFlag()) {
+ NativeAbility::GetInstance().ChangeSlice(VIEW_INCOMING_CALL, TransitionType::TRANSITION_INVALID,
+ PRIORITY_ONE);
+ } else {
+ g_isWatchCallView = true;
}
}
{
if (NativeAbility::GetInstance().GetCurSliceId() == VIEW_INCOMING_CALL ||
NativeAbility::GetInstance().GetCurSliceId() == VIEW_OFFLINEVOICE ||
- CallerLogModel::GetInstance()->GetNotifyFlag() == true) {
+ CallerLogModel::GetInstance()->GetNotifyFlag()) {
time_t seconds;
time(&seconds);
g_callTimes = seconds - phoneCall->activeTime;
InitCallingTimer();
CallerLogModel::GetInstance()->SetCallStatus(true);
}
+ if (CallerLogModel::GetInstance()->GetNotifyFlag()) {
+ g_isWatchCallView = true;
+ }
}
static void PhoneActiveHandle(void)
{
if (NativeAbility::GetInstance().GetCurSliceId() == VIEW_INCOMING_CALL ||
- CallerLogModel::GetInstance()->GetNotifyFlag() == true) {
+ g_isWatchCallView) {
if (GetCurrCallNum() > 1) {
g_phoneStatus = PHONE_MULTI_STATUS;
if (GetScoConnectState() == HFP_SCO_STATE_DISCONNECTED) {
}
TransCallToMobilePhone();
// If the call is handling in the notification, the slice is not switched
- if (CallerLogModel::GetInstance()->GetNotifyFlag() == false) {
+ if (!CallerLogModel::GetInstance()->GetNotifyFlag()) {
NativeAbility::GetInstance().ChangeSlice(VIEW_MAIN); // 退出通话界面,回到主表盘应用
+ } else {
+ g_isWatchCallView = false;
}
CallModelPostGraphicEvent(CallModelResumePlayer);
}
static void OppoActiveHandle(const PhoneCallInfo *phoneCall)
{
if (NativeAbility::GetInstance().GetCurSliceId() == VIEW_INCOMING_CALL ||
- CallerLogModel::GetInstance()->GetNotifyFlag() == true) {
+ g_isWatchCallView) {
if (GetCurrCallNum() > 1) {
g_phoneStatus = PHONE_MULTI_STATUS;
return;
{
DisableCallingTimer();
if (CallingView::GetInstance() == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[MultiplePhonesViewDisplay] GetInstance is NULL");
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[MultiplePhonesViewDisplay] GetInstance is nullptr");
return false;
}
if (CallingView::GetInstance()->GetCallingDurationLabel() == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[MultiplePhonesViewDisplay] GetInstance()->GetCallingDurationLabel is NULL");
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[MultiplePhonesViewDisplay] GetInstance()->GetCallingDurationLabel is nullptr");
return false;
}
if (CallingView::GetInstance()->GetCallingDisplayLabel() == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[MultiplePhonesViewDisplay] GetInstance()->GetCallingDurationLabel is NULL");
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[MultiplePhonesViewDisplay] GetInstance()->GetCallingDurationLabel is nullptr");
return false;
}
if (MainCallingPresenter::GetInstance() == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[MultiplePhonesViewDisplay] GetInstance()->MainCallingPresenter is NULL");
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[MultiplePhonesViewDisplay] GetInstance()->MainCallingPresenter is nullptr");
return false;
}
- if (MainCallingPresenter::GetInstance()->CallingViewDisplay() == false) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[MultiplePhonesViewDisplay] GetInstance()->CallingViewDisplay is NULL");
+ if (!MainCallingPresenter::GetInstance()->CallingViewDisplay()) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[MultiplePhonesViewDisplay] GetInstance()->CallingViewDisplay is nullptr");
return false;
}
DisableCallingTimer();
CallerLogModel::GetInstance()->SetMulitplePhoneStatus(true);
CallerLogModel::GetInstance()->SetCallStatus(true);
- NativeAbility::GetInstance().ChangeSlice(VIEW_INCOMING_CALL, TransitionType::TRANSITION_INVALID, PRIORITY_ONE);
+ if (!CallerLogModel::GetInstance()->GetNotifyFlag()) {
+ NativeAbility::GetInstance().ChangeSlice(VIEW_INCOMING_CALL, TransitionType::TRANSITION_INVALID,
+ PRIORITY_ONE);
+ } else {
+ g_isWatchCallView = true;
+ }
return true;
}
- if (MulitplePhoneTextReplaces() == false) {
+ if (!MulitplePhoneTextReplaces()) {
return false;
}
return true;
static void NonWatchFinishHandle(int laststatus)
{
if (NativeAbility::GetInstance().GetCurSliceId() == VIEW_INCOMING_CALL ||
- CallerLogModel::GetInstance()->GetNotifyFlag() == true) {
+ CallerLogModel::GetInstance()->GetNotifyFlag()) {
if (GetCurrCallNum() == 0) {
StatusReset();
CallModelPostGraphicEvent(CallModelResumePlayer);
g_phoneStatus = PHONE_SINGLE_STATUS;
} else if (g_phoneStatus == PHONE_MULTI_STATUS) {
MultiplePhonesViewDisplay();
- } else if (FindCallListInfoAndSetPriorityNumber() == true) {
+ } else if (FindCallListInfoAndSetPriorityNumber()) {
if (laststatus == HFP_HF_CALL_STATE_ACTIVE || laststatus == HFP_HF_CALL_STATE_HELD) {
CallerLogModel::GetInstance()->SetCallStatus(false);
CallerLogModel::GetInstance()->SetWaitingStatus(false);
CallerLogModel::GetInstance()->SetWaitingStatus(false);
}
// If the call is handling in the notification, the slice is not switched
- if (CallerLogModel::GetInstance()->GetNotifyFlag() == false) {
- NativeAbility::GetInstance().ChangeSlice(VIEW_INCOMING_CALL, TransitionType::TRANSITION_INVALID, PRIORITY_ONE);
+ if (!CallerLogModel::GetInstance()->GetNotifyFlag()) {
+ NativeAbility::GetInstance().ChangeSlice(VIEW_INCOMING_CALL, TransitionType::TRANSITION_INVALID,
+ PRIORITY_ONE);
+ } else {
+ g_isWatchCallView = true;
}
}
- CallerLogModel::GetInstance()->SetNotifyFlag(false);
+ if (GetCurrCallNum() == 0) {
+ CallerLogModel::GetInstance()->SetNotifyFlag(false);
+ }
}
if (GetCurrCallNum() == 0) {
g_phoneStatus = PHONE_SINGLE_STATUS;
static void WatchFinishHandle(void)
{
if (NativeAbility::GetInstance().GetCurSliceId() == VIEW_INCOMING_CALL ||
- CallerLogModel::GetInstance()->GetNotifyFlag() == true) {
+ CallerLogModel::GetInstance()->GetNotifyFlag()) {
if (GetCurrCallNum() == 0) {
StatusReset();
+ CallerLogModel::GetInstance()->SetNotifyFlag(false);
} else {
StatusReset();
for (int i = GetCurrCallNum(); i > 0; i--) {
FinishCall();
}
}
- CallerLogModel::GetInstance()->SetNotifyFlag(false);
}
g_phoneStatus = PHONE_SINGLE_STATUS;
}
static void ChangeStatusScreendisplay(int lastStatus)
{
if (GetScoConnectState() != HFP_SCO_STATE_CONNECTED) {
- if (lastStatus == OPERATE_INCOMING) {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[ChangeStatusScreendisplay] lastStatus OPERATE_INCOMING");
- } else if (GetCurrCallNum() == 1 && (lastStatus == OPERATE_DIALING ||
- lastStatus == OPERATE_ALERTING)) {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[ChangeStatusScreendisplay] lastStatus OPERATE_ALERTING");
+ if (lastStatus == HFP_HF_CALL_STATE_ACTIVE) {
+ WEARABLE_LOGD(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");
+ } 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");
} else if (GetCurrCallNum() > 1) {
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[ChangeStatusScreendisplay] GetCurrCallNum MULITE");
DisableCallingTimer();
return;
}
}
- if (IsCompleteCallFlow() == false) {
+ if (!IsCompleteCallFlow()) {
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[ChangeStatusScreendisplay] is not complete call flow");
return;
}
- if (MultiplePhonesViewDisplay() == true) {
+ if (MultiplePhonesViewDisplay()) {
WEARABLE_LOGD(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() != true) {
- NativeAbility::GetInstance().ChangeSlice(VIEW_INCOMING_CALL, TransitionType::TRANSITION_INVALID, PRIORITY_ONE);
+ if (g_callOperate != OPERATE_PHONE_ACTIVE && (!CallerLogModel::GetInstance()->GetNotifyFlag())) {
+ NativeAbility::GetInstance().ChangeSlice(VIEW_INCOMING_CALL, TransitionType::TRANSITION_INVALID,
+ PRIORITY_ONE);
}
}
return;
}
- if (FindCallListInfoAndSetPriorityNumber() == false) {
+ if (!FindCallListInfoAndSetPriorityNumber()) {
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ScoConnectHandle FindCallListInfoAndSetPriorityNumber false");
return;
}
break;
}
g_isCall = NO_NUMBER_STATUS;
- if (IsCompleteCallFlow() == false) {
+ if (!IsCompleteCallFlow()) {
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[ScoConnectHandle] is not complete call flow");
return;
}
- if (MultiplePhonesViewDisplay() == true) {
+ if (MultiplePhonesViewDisplay()) {
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[ScoConnectHandle] MultiplePhonesViewDisplay");
return;
}
// If the call is handling in the notification, the slice is not switched
- if (CallerLogModel::GetInstance()->GetNotifyFlag() == false) {
- NativeAbility::GetInstance().ChangeSlice(VIEW_INCOMING_CALL, TransitionType::TRANSITION_INVALID, PRIORITY_ONE);
+ if (!CallerLogModel::GetInstance()->GetNotifyFlag()) {
+ NativeAbility::GetInstance().ChangeSlice(VIEW_INCOMING_CALL, TransitionType::TRANSITION_INVALID,
+ PRIORITY_ONE);
+ } else {
+ g_isWatchCallView = true;
}
}
{
WEARABLE_LOGD(HILOG_MODULE_AAFWK, "UsingPhoneScoStatausCallback SOC state: %d", state);
- if (IsCompleteCallFlow() == false) {
+ if (!IsCompleteCallFlow()) {
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[UsingPhoneScoStatausCallback] is not complete call flow");
return;
}
}
/* 表盘底部时间显示 */
-string CallerLogModel::InitDateHourTime(void)
+std::string CallerLogModel::InitDateHourTime(void)
{
struct tm pTM;
time_t seconds;
localtime_r(&seconds, &pTM);
timers.erase();
if (pTM.tm_min < NUM_TEN) {
- string min = "0" + to_string(pTM.tm_min);
- timers = to_string(pTM.tm_hour) + ":" + min;
+ std::string min = "0" + std::to_string(pTM.tm_min);
+ timers = std::to_string(pTM.tm_hour) + ":" + min;
return timers;
}
- timers = to_string(pTM.tm_hour) + ":" + to_string(pTM.tm_min);
+ timers = std::to_string(pTM.tm_hour) + ":" + std::to_string(pTM.tm_min);
return timers;
}
/* 表盘通话时间显示 */
-char *CallerLogModel::DisplayCallDuration()
+std::string& CallerLogModel::DisplayCallDuration()
{
callDuration.erase();
- string hours;
- string minute;
- string seconds;
+ std::string hours;
+ std::string minute;
+ std::string seconds;
if (g_callTimes >= NUM_TIME_DAY) {
g_callTimes = 0;
}
int min = (g_callTimes % NUM_TIME_HOUR) / NUM_TIME_MIN;
int sec = (g_callTimes % NUM_TIME_HOUR) % NUM_TIME_MIN;
if (hour >= 0 && hour < NUM_TEN) {
- hours = "0" + to_string(hour);
+ hours = "0" + std::to_string(hour);
} else {
- hours = to_string(hour);
+ hours = std::to_string(hour);
}
if (min >= 0 && min < NUM_TEN) {
- minute = "0" + to_string(min);
+ minute = "0" + std::to_string(min);
} else {
- minute = to_string(min);
+ minute = std::to_string(min);
}
if (sec >= 0 && sec < NUM_TEN) {
- seconds = "0" + to_string(sec);
+ seconds = "0" + std::to_string(sec);
} else {
- seconds = to_string(sec);
+ seconds = std::to_string(sec);
}
if (hour == 0) {
} else {
callDuration = hours + ":" + minute + ":" + seconds;
}
- return (char *)callDuration.c_str();
+ return callDuration;
}
/* 拨号与响铃状态显示 */
dialingStatus.append(reinterpret_cast<const char*>(text));
}
-string CallerLogModel::GetDialingStatus(void)
+std::string CallerLogModel::GetDialingStatus(void)
{
return dialingStatus;
}
return notifyFlag;
}
+// 电话是否为多路状态
+bool CallerLogModel::IsMulitplePhoneStatus(void)
+{
+ WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "IsMulitplePhoneStatus phoneStatus:%d", g_phoneStatus);
+ return g_phoneStatus == PHONE_MULTI_STATUS;
+}
+
/* 是否为多路通话界面 */
void CallerLogModel::SetMulitplePhoneStatus(bool status)
{
phoneNumber.append(reinterpret_cast<const char*>(number), number_len);
}
-string CallerLogModel::GetPhoneNumber(void)
+std::string CallerLogModel::GetPhoneNumber(void)
{
return phoneNumber;
}