From 6516cbf53ab2fc6219c264a71bbcfeb86e005b1a Mon Sep 17 00:00:00 2001 From: luozheng <1732036298@qq.com> Date: Wed, 29 May 2024 14:56:29 +0800 Subject: [PATCH] =?utf8?q?phoneservice=20=E6=96=87=E4=BB=B6=E5=A4=B9?= =?utf8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../phoneservice/include/PhoneAudio.h | 3 +- .../phoneservice/include/PhoneService.h | 16 +- .../nativeui/phoneservice/src/PhoneAudio.cpp | 4 +- .../phoneservice/src/PhoneService.cpp | 646 ++++++++---------- 4 files changed, 288 insertions(+), 381 deletions(-) diff --git a/code/sdk/application/wearable/fd230app/nativeui/phoneservice/include/PhoneAudio.h b/code/sdk/application/wearable/fd230app/nativeui/phoneservice/include/PhoneAudio.h index 1666ee0c8..fd0b6c957 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/phoneservice/include/PhoneAudio.h +++ b/code/sdk/application/wearable/fd230app/nativeui/phoneservice/include/PhoneAudio.h @@ -7,8 +7,7 @@ #ifndef PHONE_AUDIO_H #define PHONE_AUDIO_H -#include -#include "stdbool.h" +#include #include "audio_base_type.h" #include "ohos_types.h" diff --git a/code/sdk/application/wearable/fd230app/nativeui/phoneservice/include/PhoneService.h b/code/sdk/application/wearable/fd230app/nativeui/phoneservice/include/PhoneService.h index 05146c715..1e3f0fa1e 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/phoneservice/include/PhoneService.h +++ b/code/sdk/application/wearable/fd230app/nativeui/phoneservice/include/PhoneService.h @@ -7,7 +7,6 @@ #ifndef PHONE_SERVICE_H #define PHONE_SERVICE_H -#include "stdbool.h" #include "bts_br_gap.h" #include "bts_hfp_hf.h" #include "ohos_types.h" @@ -21,7 +20,7 @@ extern "C" { #define CALL_LOG_MAX_NUM 30 // 最多记录30条通话记录,超出后删除最老的记录 #define NAME_SIZE 20 #define MAX_PHONE_NUM 20 -#define CALL_VOLUME_MAX 100 +#define CALL_VOLUME_MAX 15 typedef struct { int operate; @@ -30,8 +29,8 @@ typedef struct { unsigned char nameLen; unsigned char tel[MAX_PHONE_NUM]; unsigned char telLen; - uint32 activeTime; // 首次电话接通时间点 - uint32 creationTime; // 通话创建时间(不是接通时间) + uint64 activeTime; // 首次电话接通时间点 + uint64 creationTime; // 通话创建时间(不是接通时间) hfp_hf_calls_info_t unitCalls; } PhoneCallInfo; @@ -69,7 +68,7 @@ typedef struct { unsigned char tel[MAX_PHONE_NUM]; unsigned char telLen; CallFinishStatus status; - uint64 creationTime; // 通话创建时间(不是接通时间) + uint32 creationTime; // 通话创建时间(不是接通时间) uint64 callDurTime; // 通话持续时间 } CallLogInfo; @@ -86,8 +85,6 @@ typedef struct { PhoneServiceScoStatusCb scoStatusCb; } PhoneServiceCb; - -void AddToCallLog(CallLogInfo *info); /** * @brief 注册电话服务回调函数 * @@ -117,8 +114,6 @@ int DialCall(unsigned char *number, unsigned char len); */ int AcceptIncomingCall(void); -void CallChangeIncomePro(const hfp_hf_calls_info_t *call); - /** * @brief 手表拒接呼入来电 * @@ -258,6 +253,9 @@ void AudioRelease(void); uint32 GetCallCodec(void); +// 添加通话进通话记录文件 +void AddToCallLog(CallLogInfo *info); + #ifdef __cplusplus } #endif diff --git a/code/sdk/application/wearable/fd230app/nativeui/phoneservice/src/PhoneAudio.cpp b/code/sdk/application/wearable/fd230app/nativeui/phoneservice/src/PhoneAudio.cpp index 2d32b2b6a..8b695c89a 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/phoneservice/src/PhoneAudio.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/phoneservice/src/PhoneAudio.cpp @@ -85,7 +85,7 @@ bool PhoneAudioSetSpeakerMute(bool isMute) return true; } - if (isMute == true) { + if (isMute) { ret = g_amInstance.Mute(AUDIO_STREAM_VOICE_CALL_BT_SCO); } else { ret = g_amInstance.UnMute(AUDIO_STREAM_VOICE_CALL_BT_SCO); @@ -166,7 +166,7 @@ int32 PhoneAudioManagerSetDeviceConnState(AudioDeviceType deviceType, AudioDevic } WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[%s] line:%d success, deviceType = 0x%x connectState = %d", - __FUNCTION__, __LINE__, deviceType, connectState); + __FUNCTION__, __LINE__, deviceType, connectState); return AUDIO_SUCCESS; } diff --git a/code/sdk/application/wearable/fd230app/nativeui/phoneservice/src/PhoneService.cpp b/code/sdk/application/wearable/fd230app/nativeui/phoneservice/src/PhoneService.cpp index 5de08d38d..bada5b8de 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/phoneservice/src/PhoneService.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/phoneservice/src/PhoneService.cpp @@ -7,12 +7,12 @@ #include "PhoneService.h" #include "PhoneAudio.h" #include "securec.h" -#include -#include -#include +#include +#include +#include #include "audio_base_type.h" #include "audio_manager.h" -#include "time.h" +#include #include "wearable_log.h" #include "unistd.h" #include "dirent.h" @@ -24,11 +24,9 @@ #include "service_id_define.h" #include "samgr_lite.h" #include "ui_service.h" +#include "msg_center_msg.h" #include "cat1_server_hal.h" -#if defined(SUPPORT_POWER_MANAGER) -#include "power_display_service.h" -#endif #ifdef __cplusplus extern "C" { #endif @@ -77,18 +75,12 @@ void HfpIncomingEventPublish(uint16 topic, hfp_hf_calls_info_t callsInfo); static void PhoneServiceScreenCtr(bool turnOnFlag) { -#if defined(SUPPORT_POWER_MANAGER) - const power_display_svr_api_t *display_api = power_display_svr_get_api(); if (turnOnFlag) { - if (display_api->get_screen_state() != SCREEN_ON) { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[PhoneServiceScreenCtr] turn_on_screen"); - display_api->turn_on_screen(); - } - display_api->set_screen_set_keepon_timeout(-1); + int32_t timeout = -1; + SendMsgToUIService(SCREEN_TURN_ON_TO_UI, 0, &timeout, sizeof(int32_t)); } else { - display_api->set_screen_set_keepon_timeout(0); + SendMsgToUIService(SCREEN_TURN_OFF_TO_UI, 0, nullptr, 0); } -#endif } static void InitMutex(void) @@ -103,7 +95,7 @@ uint32 GetCallCodec(void) int RegisterCallChangedCb(PhoneServiceCb *phoneServiceFun) { - if (phoneServiceFun == NULL) { + if (phoneServiceFun == nullptr) { return OHOS_FAILURE; } @@ -135,18 +127,17 @@ int GetCurrCallState(void) // 初始化媒体 static void AudioInit(void) { - int ret; - ret = PhoneAudioManagerInit(); + int32_t ret = PhoneAudioManagerInit(); if (ret != OHOS_SUCCESS) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioInit] [PhoneAudioManagerInit] failed!"); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioInit] failed!"); } } // 释放音频焦点 static void AudioDeactInterrupt(AudioStreamType type) { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[AudioDeactInterrupt] start type: 0x%x, g_audioState: 0x%x", - type, g_audioState); + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[AudioDeactInterrupt] start type:0x%x, audioState:0x%x", + type, g_audioState); if ((type == AUDIO_STREAM_VOICE_CALL_BT_SCO && g_audioState >= AUDIO_ACT_INTERRUPT_BT_SCO) || (type == AUDIO_STREAM_RING && g_audioState == AUDIO_ACT_INTERRUPT_WATCH_RING)) { @@ -159,12 +150,12 @@ static void AudioActInterrupt(AudioStreamType type) { int ret = OHOS_SUCCESS; - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[AudioActInterrupt] start type: 0x%x, g_audioState: 0x%x", - type, g_audioState); + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[AudioActInterrupt] start type:0x%x, audioState:0x%x", + type, g_audioState); if (type != AUDIO_STREAM_VOICE_CALL_BT_SCO && type != AUDIO_STREAM_RING) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioActInterrupt] failed! type: 0x%x, g_audioState: 0x%x", - type, g_audioState); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioActInterrupt] failed! type:0x%x, audioState:0x%x", + type, g_audioState); return; } @@ -187,8 +178,8 @@ static void AudioActInterrupt(AudioStreamType type) } if (ret != OHOS_SUCCESS) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioActInterrupt] failed! type: 0x%x, g_audioState: 0x%x", - type, g_audioState); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioActInterrupt] failed! type:0x%x, audioState:0x%x", + type, g_audioState); } MUTEX_Unlock(g_audioMutex); @@ -199,8 +190,8 @@ static void AudioConnectScoDevInit(void) { int ret; - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[AudioConnectScoDevInit] start g_scoFlag: 0x%x, g_audioState: 0x%x", - g_scoFlag, g_audioState); + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[AudioConnectScoDevInit] start scoFlag:0x%x, audioState:0x%x", + g_scoFlag, g_audioState); if (g_scoFlag != HFP_SCO_STATE_CONNECTED || g_audioState < AUDIO_ACT_INTERRUPT_BT_SCO) { return; } @@ -211,8 +202,7 @@ static void AudioConnectScoDevInit(void) // 配置媒体连接SCO设配状态(下行),只有在SCO连接后才能设置 ret = PhoneAudioManagerSetDeviceConnState(IN_BLUETOOTH_SCO, AUDIO_DEVICE_CONNECTED); if (ret != OHOS_SUCCESS) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioConnectScoDevInit] [PhoneAudioManagerSetDeviceConnState] \ - IN_BLUETOOTH_SCO failed! ret = %d", ret); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioConnectScoDevInit] sco in ret:%d", ret); MUTEX_Unlock(g_audioMutex); return; } else { @@ -224,8 +214,7 @@ static void AudioConnectScoDevInit(void) // 配置媒体连接SCO设配状态(上行),只有在SCO连接后才能设置 ret = PhoneAudioManagerSetDeviceConnState(OUT_BLUETOOTH_SCO, AUDIO_DEVICE_CONNECTED); if (ret != OHOS_SUCCESS) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioConnectScoDevInit] [PhoneAudioManagerSetDeviceConnState] \ - OUT_BLUETOOTH_SCO failed! ret = %d", ret); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioConnectScoDevInit] sco out ret:%d", ret); MUTEX_Unlock(g_audioMutex); return; } else { @@ -245,8 +234,8 @@ static void AudioConnectScoDevInit(void) g_audioState = AUDIO_STREAM_INIT; } } - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[AudioConnectScoDevInit] end g_audioState: %d, g_hdlUpSco: %d, g_hdlDnSco: %d", - g_audioState, g_hdlUpSco, g_hdlDnSco); + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[AudioConnectScoDevInit] end audioState:%d, hdlUpSco:%d, hdlDnSco:%d", + g_audioState, g_hdlUpSco, g_hdlDnSco); MUTEX_Unlock(g_audioMutex); return; @@ -258,7 +247,7 @@ static void AudioUpStart(void) int ret = OHOS_SUCCESS; uint32 micShmId = 0; - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[AudioUpStart] start g_scoFlag: %d, g_audioState: %d", g_scoFlag, g_audioState); + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[AudioUpStart] start scoFlag:%d, audioState:%d", g_scoFlag, g_audioState); if (g_scoFlag != HFP_SCO_STATE_CONNECTED || g_audioState < AUDIO_STREAM_INIT) { return; @@ -270,15 +259,15 @@ static void AudioUpStart(void) g_hdlUpMic = PhoneAudioStreamInInit(AUDIO_UP_LINK); } - if (g_audioState < AUDIO_STREAM_START_SCO) { + if (g_audioState < AUDIO_STREAM_START_SCO) { ret = PhoneAudioStreamInStart(g_hdlDnSco); if (ret != OHOS_SUCCESS) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioUpStart] [AudioStreamInStart] [dn_sco] error! ret: %d", ret); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioUpStart] dn_sco ret:%d", ret); } ret |= PhoneAudioStreamOutStart(g_hdlUpSco); if (ret != OHOS_SUCCESS) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioUpStart] [AudioStreamOutStart] [up_sco] error ret: %d", ret); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioUpStart] up_sco ret:%d", ret); } if (ret == OHOS_SUCCESS) { g_audioState = AUDIO_STREAM_START_SCO; @@ -287,24 +276,24 @@ static void AudioUpStart(void) ret |= PhoneAudioStreamInStart(g_hdlUpMic); if (ret != OHOS_SUCCESS) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioUpStart] [PhoneAudioStreamInStart] [up_mic] error! ret = %d", ret); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioUpStart] up_mic ret:%d", ret); } ret |= PhoneAudioStreamInGetChannelId(g_hdlUpMic, &micShmId); if (ret != OHOS_SUCCESS) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioUpStart] [AudioStreamInGetChannelId] [up_mic] error ret: %d", ret); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioUpStart] up_mic shm ret:%d", ret); } ret |= PhoneAudioStreamOutAttachFrontend(g_hdlUpSco, micShmId); if (ret != OHOS_SUCCESS) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioUpStart] [AudioStreamOutAttachFrontend] [up_sco] error ret:%d", ret); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioUpStart] up_sco attach ret:%d", ret); } if (ret == OHOS_SUCCESS) { g_audioState = AUDIO_STREAM_START_UP; } } - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[AudioUpStart] end g_audioState:%d, g_hdlUpMic:%d, g_hdlUpSco:%d, micShmId:0x%x", + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[AudioUpStart] end audioState:%d, hdlUpMic:%d, hdlUpSco:%d, micShmId:0x%x", g_audioState, g_hdlUpMic, g_hdlUpSco, micShmId); MUTEX_Unlock(g_audioMutex); return; @@ -316,7 +305,7 @@ static void AudioDnStart(void) int ret = OHOS_SUCCESS; uint32 spkShmId = 0; - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[AudioDnStart] start g_scoFlag: %d, g_audioState: %d", g_scoFlag, g_audioState); + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[AudioDnStart] start scoFlag:%d, audioState:%d", g_scoFlag, g_audioState); if (g_scoFlag != HFP_SCO_STATE_CONNECTED || g_audioState < AUDIO_STREAM_INIT) { return; @@ -331,12 +320,12 @@ static void AudioDnStart(void) if (g_audioState < AUDIO_STREAM_START_SCO) { ret = PhoneAudioStreamOutStart(g_hdlUpSco); if (ret != OHOS_SUCCESS) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioDnStart] [AudioStreamOutStart] [up_sco] error! ret = %d", ret); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioDnStart] up_sco ret:%d", ret); } ret |= PhoneAudioStreamInStart(g_hdlDnSco); if (ret != OHOS_SUCCESS) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioDnStart] [AudioStreamInStart] [dn_sco] error! ret = %d", ret); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioDnStart] dn_sco ret:%d", ret); } if (ret == OHOS_SUCCESS) { @@ -346,24 +335,24 @@ static void AudioDnStart(void) ret |= PhoneAudioStreamOutStart(g_hdlDnSpk); if (ret != OHOS_SUCCESS) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioDnStart] [PhoneAudioStreamOutStart] [dn_spk] error! ret = %d", ret); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioDnStart] dn_spk ret:%d", ret); } ret |= PhoneAudioStreamOutGetChannelId(g_hdlDnSpk, &spkShmId); if (ret != OHOS_SUCCESS) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioDnStart] [AudioStreamOutGetChannelId] [dn_spk] error ret: %d", ret); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioDnStart] dn_spk shm ret:%d", ret); } ret |= PhoneAudioStreamInAttachBackend(g_hdlDnSco, spkShmId); if (ret != OHOS_SUCCESS) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioDnStart] [AudioStreamInAttachBackend] [dn_sco] error ret: %d", ret); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioDnStart] dn_sco attach ret:%d", ret); } if (ret == OHOS_SUCCESS) { g_audioState = AUDIO_STREAM_START_DN; } } - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[AudioDnStart] end g_audioState:%d, g_hdlDnSpk:%d, g_hdlDnSco:%d, spkShmId: 0x%x", + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[AudioDnStart] end audioState:%d, hdlDnSpk:%d, hdlDnSco:%d, spkShmId:0x%x", g_audioState, g_hdlDnSpk, g_hdlDnSco, spkShmId); MUTEX_Unlock(g_audioMutex); @@ -396,8 +385,6 @@ static void PostGraphicEvent(void (*fun)(void)) // 蓝牙通话下行 static void AudioDn(void) { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[AudioDn] start g_audioState: %d", g_audioState); - // 申请蓝牙通话音频焦点 AudioActInterrupt(AUDIO_STREAM_VOICE_CALL_BT_SCO); @@ -408,16 +395,14 @@ static void AudioDn(void) AudioDnStart(); if (g_audioState == AUDIO_STREAM_START_DN) { // 同步音量 - PostGraphicEvent(SyncVolume); + SyncVolume(); } - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[AudioDn] end g_audioState: %d", g_audioState); + WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "[AudioDn] audioState:%d", g_audioState); } // 蓝牙通话上行 static void AudioUp(void) { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[AudioUp] start g_audioState: %d", g_audioState); - // 申请蓝牙通话音频焦点 AudioActInterrupt(AUDIO_STREAM_VOICE_CALL_BT_SCO); @@ -426,8 +411,18 @@ static void AudioUp(void) // 建立音频上行通路 AudioUpStart(); - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[AudioUp] end g_audioState: %d", g_audioState); + WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "[AudioUp] audioState:%d", g_audioState); +} +static void AudioSetup(void) +{ + if (g_audioState < AUDIO_STREAM_START_DN) { + AudioDn(); + } + + if (g_audioState != AUDIO_STREAM_START_UP) { + AudioUp(); + } } static void AudioUpRelease(void) @@ -437,35 +432,34 @@ static void AudioUpRelease(void) if (g_hdlUpSco != INVALID_PHONE_SERVICE_VALUE) { ret = PhoneAudioStreamOutStop(g_hdlUpSco); if (ret != OHOS_SUCCESS) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioUpRelease] [OutStop] g_hdlUpSco error! ret = %d", ret); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioUpRelease] [OutStop] hdlUpSco ret:%d", ret); } ret = PhoneAudioStreamOutDeinit(g_hdlUpSco); if (ret != OHOS_SUCCESS) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioUpRelease] [OutDeinit] g_hdlUpSco error! ret = %d", ret); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioUpRelease] [OutDeinit] hdlUpSco ret:%d", ret); } } if (g_hdlUpMic != INVALID_PHONE_SERVICE_VALUE) { ret = PhoneAudioStreamInStop(g_hdlUpMic); if (ret != OHOS_SUCCESS) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioDnRelease] [InStop] g_hdlUpMic error! ret = %d", ret); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioDnRelease] [InStop] hdlUpMic ret:%d", ret); } ret = PhoneAudioStreamInDeinit(g_hdlUpMic); if (ret != OHOS_SUCCESS) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioDnRelease] [InDeinit] g_hdlUpMic error! ret = %d", ret); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioDnRelease] [InDeinit] hdlUpMic ret:%d", ret); } } if (g_audioState >= AUDIO_CONN_OUT_BT_SCO) { ret = PhoneAudioManagerSetDeviceConnState(OUT_BLUETOOTH_SCO, AUDIO_DEVICE_DISCONNECTED); if (ret != OHOS_SUCCESS) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioDnRelease] OUT_BLUETOOTH_SCO error! ret = %d", ret); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioDnRelease] sco out ret:%d", ret); } } g_hdlUpSco = INVALID_PHONE_SERVICE_VALUE; g_hdlUpMic = INVALID_PHONE_SERVICE_VALUE; - } static void AudioDnRelease(void) @@ -475,29 +469,29 @@ static void AudioDnRelease(void) if (g_hdlDnSco != INVALID_PHONE_SERVICE_VALUE) { ret = PhoneAudioStreamInStop(g_hdlDnSco); if (ret != OHOS_SUCCESS) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioUpRelease] [InStop] g_hdlDnSco error! ret = %d", ret); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioUpRelease] [InStop] hdlDnSco ret:%d", ret); } ret = PhoneAudioStreamInDeinit(g_hdlDnSco); if (ret != OHOS_SUCCESS) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioUpRelease] [InDeinit] g_hdlDnSco error! ret = %d", ret); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioUpRelease] [InDeinit] hdlDnSco ret:%d", ret); } } if (g_hdlDnSpk != INVALID_PHONE_SERVICE_VALUE) { ret = PhoneAudioStreamOutStop(g_hdlDnSpk); if (ret != OHOS_SUCCESS) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioDnRelease] [OutStop] g_hdlDnSpk error! ret = %d", ret); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioDnRelease] [OutStop] hdlDnSpk ret:%d", ret); } ret = PhoneAudioStreamOutDeinit(g_hdlDnSpk); if (ret != OHOS_SUCCESS) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioDnRelease] [OutDeinit] g_hdlDnSpk error! ret = %d", ret); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioDnRelease] [OutDeinit] hdlDnSpk ret:%d", ret); } } if (g_audioState >= AUDIO_CONN_IN_BT_SCO) { ret = PhoneAudioManagerSetDeviceConnState(IN_BLUETOOTH_SCO, AUDIO_DEVICE_DISCONNECTED); if (ret != OHOS_SUCCESS) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioDnRelease] IN_BLUETOOTH_SCO error! ret = %d", ret); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioDnRelease] sco in ret:%d", ret); } } @@ -522,7 +516,7 @@ void AudioRelease(void) AudioDeactInterrupt(AUDIO_STREAM_RING); // 适配某些机型不触发SCO g_audioState = AUDIO_UNKNOW; - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[AudioRelease] end g_audioState: %d,", g_audioState); + WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "[AudioRelease] audioState:%d,", g_audioState); MUTEX_Unlock(g_audioMutex); } @@ -579,8 +573,13 @@ static void BtDisconnectedPro(void) PhoneServiceErrorCallback(ERROR_BT, PROFILE_STATE_DISCONNECTED); CallListInit(); - // 释放媒体资源 - PostGraphicEvent(AudioRelease); + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BtDisconnectedPro callState:%d", g_currCallState); + if (g_currCallState == HFP_HF_CALL_STATE_INCOMING) { + /* 处理呼入阶段,取消手表配对 */ + hfp_hf_calls_info_t call = {0}; + HfpIncomingEventPublish(TOPIC_EVENT_HFP_FINISHED, call); + } + g_currCallState = HFP_HF_CALL_STATE_FINISHED; g_scoFlag = HFP_SCO_STATE_DISCONNECTED; g_completeCallFlag = false; @@ -589,15 +588,9 @@ static void BtDisconnectedPro(void) // 蓝牙状态连接 static void ConnStateChanged(const bd_addr_t *bdAddr, profile_connect_state_t state) { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[ConnStateChanged] state = 0x%X bdAddr: ", state); + WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "[ConnStateChanged] state = 0x%X bdAddr: ", state); CatBdAddr(bdAddr); - if (state == PROFILE_STATE_CONNECTED) { - SendMsgToUIService(BT_CONNECTED_TO_UI, 0, NULL, 0); - } else if (state == PROFILE_STATE_DISCONNECTED) { - SendMsgToUIService(BT_DISCONNECTED_TO_UI, 0, NULL, 0); - } - switch (state) { case PROFILE_STATE_CONNECTING: // 蓝牙正在连接 WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[ConnStateChanged] BT connecting"); @@ -605,6 +598,8 @@ static void ConnStateChanged(const bd_addr_t *bdAddr, profile_connect_state_t st case PROFILE_STATE_CONNECTED: // 蓝牙连接成功 WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[ConnStateChanged] BT connected"); BtConnectedPro(bdAddr); + SendMsgToUIService(BT_CONNECTED_TO_UI, 0, nullptr, 0); + SendMsgToMsgCenterService(BT_CONNECTED_TO_MSGCENTER, 0, nullptr, 0); break; case PROFILE_STATE_DISCONNECTING: // 蓝牙连接断连 WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[ConnStateChanged] BT disconnecting"); @@ -612,6 +607,8 @@ static void ConnStateChanged(const bd_addr_t *bdAddr, profile_connect_state_t st case PROFILE_STATE_DISCONNECTED: // 蓝牙断开连接 WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[ConnStateChanged] BT disconnected"); BtDisconnectedPro(); + SendMsgToUIService(BT_DISCONNECTED_TO_UI, 0, nullptr, 0); + SendMsgToMsgCenterService(BT_DISCONNECTED_TO_MSGCENTER, 0, nullptr, 0); break; default: break; @@ -628,7 +625,7 @@ uint32 GetBtConnectStatus(void) // SCO连接处理 static void ScoConnectPro(void) { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[ScoConnectPro] g_currCallNum = %d, g_scoFlag = %d", g_currCallNum, g_scoFlag); + WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "[ScoConnectPro] CallNum:%d, ScoFlag:%d", g_currCallNum, g_scoFlag); // 通知sco建立连接(或通话转移:手机 -> 手表) ScoStatusCb(HFP_SCO_STATE_CONNECTED); if (g_currCallState == HFP_HF_CALL_STATE_ACTIVE && g_scoFlag == HFP_SCO_STATE_CONNECTED) { @@ -636,49 +633,31 @@ static void ScoConnectPro(void) hfp_hf_calls_info_t call = {0}; HfpIncomingEventPublish(TOPIC_EVENT_HFP_PHONE_TO_WATCH, call); } - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[ScoConnectPro] g_audioState: %d ", g_audioState); - - if (g_audioState < AUDIO_STREAM_START_DN) { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[ScoConnectPro] post AudioDn"); - PostGraphicEvent(AudioDn); - } - - if (g_audioState != AUDIO_STREAM_START_UP) { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[ScoConnectPro] post AudioUp"); - PostGraphicEvent(AudioUp); - } + PostGraphicEvent(AudioSetup); + WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "[ScoConnectPro] audioState:%d", g_audioState); } // SCO断连处理 static void ScoDisconnectPro(void) { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[ScoDisconnectPro] start g_currCallState = %d", g_currCallState); + WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "[ScoDisconnectPro] start CallState:%d", g_currCallState); - // 通知sco断开连接(或通话转移:手表 -> 手机) - if (g_currCallState != HFP_HF_CALL_STATE_INCOMING) { - ScoStatusCb(HFP_SCO_STATE_DISCONNECTED); - } + ScoStatusCb(HFP_SCO_STATE_DISCONNECTED); if (g_currCallState == HFP_HF_CALL_STATE_ACTIVE && g_scoFlag == HFP_SCO_STATE_DISCONNECTED) { // The call is transferred from the watch to the phone. Need to close the call notification view. hfp_hf_calls_info_t call = {0}; HfpIncomingEventPublish(TOPIC_EVENT_HFP_WATCH_TO_PHONE, call); } - - usleep(5000); // 增加延时确保SCO断开后状态复位成功 - - if (g_currCallState == HFP_HF_CALL_STATE_INCOMING) { // 规避某些型号手机在电话呼入时重复断开和连接SCO - return; - } - - PostGraphicEvent(AudioRelease); + AudioRelease(); // 为了保持时序,此处采取同步调用 + usleep(5000); // 增加延时确保SCO断开AUDIO通路释放成功 } // Sco连接状态变化回调函数,音频连接状态 static void ScoStateChanged(const bd_addr_t *bdAddr, hfp_sco_connect_state_t state) { g_scoFlag = state; - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[ScoStateChanged] state = %d, g_scoFlag = %d, g_currCallNum = %d", state, + WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "[ScoStateChanged] hfpState:%d, ScoFlag:%d, CallNum:%d", state, g_scoFlag, g_currCallNum); switch (state) { @@ -714,9 +693,9 @@ static void ScoStateChanged(const bd_addr_t *bdAddr, hfp_sco_connect_state_t sta static void CallLogCreatDir(void) { - DIR *dir = NULL; + DIR *dir = nullptr; dir = opendir(CALL_LOG_DIR); - if (dir == NULL) { + if (dir == nullptr) { mkdir(CALL_LOG_DIR, S_IREAD | S_IWRITE); } else { closedir(dir); @@ -729,8 +708,8 @@ static int GetCallLogFileSize(void) { int len = 0; FILE *fp = fopen(CALL_LOG_PATH, "rb"); - if (fp == NULL) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[GetCallLogFileSize] fopen CALL_LOG_PATH error"); + if (fp == nullptr) { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[GetCallLogFileSize] fopen %s failed", CALL_LOG_PATH); return OHOS_FAILURE; } @@ -739,25 +718,25 @@ static int GetCallLogFileSize(void) fseek(fp, 0, SEEK_SET); fclose(fp); - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[GetCallLogFileSize] len = %d", len); + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[GetCallLogFileSize] len:%d", len); return len; } // 添加通话进通话记录文件 void AddToCallLog(CallLogInfo *info) { - FILE *fp = NULL; + FILE *fp = nullptr; size_t ret; fp = fopen(CALL_LOG_PATH, "ab"); - if (fp == NULL) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AddToCallLog] fopen failed!"); + if (fp == nullptr) { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AddToCallLog] fopen %s failed!", CALL_LOG_PATH); return; } ret = fwrite(info, sizeof(CallLogInfo), 1, fp); if (ret != 1) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AddToCallLog] fwrite failed! ret = %d", ret); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AddToCallLog] fwrite failed! ret:%d", ret); } fclose(fp); @@ -766,13 +745,12 @@ void AddToCallLog(CallLogInfo *info) static int CopyPhoneLogToTmpLog(void) { - FILE *fp = NULL; - FILE *ftp = NULL; - CallLogInfo *info = NULL; + FILE *fp = nullptr; + FILE *ftp = nullptr; + CallLogInfo *info = nullptr; int retLen; int fileSize = GetCallLogFileSize(); - if (fileSize == OHOS_FAILURE || fileSize == 0) { return fileSize; } @@ -782,30 +760,30 @@ static int CopyPhoneLogToTmpLog(void) return ClearCallLogFile(); // 只有一条记录,清空通话记录 } - fp = fopen(CALL_LOG_PATH,"rb"); - if (fp == NULL) { + fp = fopen(CALL_LOG_PATH, "rb"); + if (fp == nullptr) { return OHOS_FAILURE; } ftp = fopen(CALL_TMP_LOG_PATH, "wb+"); - if (ftp == NULL) { + if (ftp == nullptr) { fclose(fp); return OHOS_FAILURE; } info = (CallLogInfo *)malloc(fileSize); - if (info == NULL) { + if (info == nullptr) { fclose(fp); fclose(ftp); return OHOS_FAILURE; } (void)memset_s(info, fileSize, 0, fileSize); - if(fread(info, fileSize, 1, fp) != 1) { + if (fread(info, fileSize, 1, fp) != 1) { retLen = OHOS_FAILURE; goto END; } - if(fwrite((info + 1), retLen, 1, ftp) != 1) { + if (fwrite((info + 1), retLen, 1, ftp) != 1) { retLen = OHOS_FAILURE; goto END; } @@ -814,16 +792,16 @@ END: fclose(fp); fclose(ftp); free(info); - info = NULL; + info = nullptr; return retLen; } // 删除第一条通话记录 int RemoveFirstCallLog(void) { - FILE *fp = NULL; - FILE *ftp = NULL; - CallLogInfo *info = NULL; + FILE *fp = nullptr; + FILE *ftp = nullptr; + CallLogInfo *info = nullptr; int ret = OHOS_SUCCESS; int fileSize = CopyPhoneLogToTmpLog(); @@ -831,29 +809,29 @@ int RemoveFirstCallLog(void) return fileSize; } - fp = fopen(CALL_LOG_PATH,"wb+"); - if (fp == NULL) { + fp = fopen(CALL_LOG_PATH, "wb+"); + if (fp == nullptr) { return OHOS_FAILURE; } ftp = fopen(CALL_TMP_LOG_PATH, "rb"); - if (ftp == NULL) { + if (ftp == nullptr) { fclose(fp); return OHOS_FAILURE; } info = (CallLogInfo *)malloc(fileSize); - if (info == NULL) { + if (info == nullptr) { fclose(fp); fclose(ftp); return OHOS_FAILURE; } (void)memset_s(info, fileSize, 0, fileSize); - if(fread(info, fileSize, 1, ftp) != 1) { + if (fread(info, fileSize, 1, ftp) != 1) { ret = OHOS_FAILURE; goto END; } - if(fwrite(info, fileSize, 1, fp) != 1) { + if (fwrite(info, fileSize, 1, fp) != 1) { ret = OHOS_FAILURE; goto END; } @@ -862,33 +840,31 @@ END: fclose(fp); fclose(ftp); free(info); - info = NULL; + info = nullptr; return ret; } // 添加通话记录 static void AddToCallLogPro(PhoneCallInfo *callInfo) { - int ret, num, fileSize; - CallLogInfo info; - - if (callInfo == NULL) { + if (callInfo == nullptr) { return; } - fileSize = GetCallLogFileSize(); - num = fileSize / sizeof(CallLogInfo); + int fileSize = GetCallLogFileSize(); + int num = fileSize / sizeof(CallLogInfo); if (num >= CALL_LOG_MAX_NUM) { - ret = RemoveFirstCallLog(); + int ret = RemoveFirstCallLog(); if (ret == OHOS_FAILURE) { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AddToCallLogPro] RemoveFirstCallLog error"); return; } } + CallLogInfo info; (void)memset_s(info.name, NAME_SIZE, '\0', NAME_SIZE); (void)memset_s(info.tel, MAX_PHONE_NUM, '\0', MAX_PHONE_NUM); - ret = memcpy_s(info.name, NAME_SIZE, callInfo->name, callInfo->nameLen); + int ret = memcpy_s(info.name, NAME_SIZE, callInfo->name, callInfo->nameLen); if (ret != EOK) { info.nameLen = 0; } else { @@ -905,7 +881,7 @@ static void AddToCallLogPro(PhoneCallInfo *callInfo) info.creationTime = callInfo->creationTime; if (callInfo->lastStatus == HFP_HF_CALL_STATE_ACTIVE || callInfo->lastStatus == HFP_HF_CALL_STATE_HELD || callInfo->lastStatus == HFP_HF_CALL_STATE_RESPONSE_HELD) { - info.callDurTime = time(NULL) - callInfo->activeTime; + info.callDurTime = time(nullptr) - callInfo->activeTime; } else { info.callDurTime = 0; } @@ -924,40 +900,36 @@ static void AddToCallLogPro(PhoneCallInfo *callInfo) // 获取通话记录 int GetCallLog(CallLogInfo **info, int *num) { - FILE *fp = NULL; - int ret, fileSize, number; - CallLogInfo *callInfo = NULL; - - fp = fopen(CALL_LOG_PATH, "rb"); - if (fp == NULL) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AddToCallLog] fopen CALL_LOG_PATH failed!"); + FILE *fp = fopen(CALL_LOG_PATH, "rb"); + if (fp == nullptr) { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AddToCallLog] fopen %s failed!", CALL_LOG_PATH); return OHOS_FAILURE; } - fileSize = GetCallLogFileSize(); + int fileSize = GetCallLogFileSize(); if (fileSize == 0) { - *info = NULL; + *info = nullptr; *num = 0; fclose(fp); return OHOS_SUCCESS; } - number = fileSize / sizeof(CallLogInfo); - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[GetCallLog] fileSize = %d, number = %d", fileSize, number); - callInfo = (CallLogInfo *)malloc(fileSize); - if (callInfo == NULL) { + int number = fileSize / sizeof(CallLogInfo); + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[GetCallLog] fileSize:%d, number:%d", fileSize, number); + CallLogInfo *callInfo = (CallLogInfo *)malloc(fileSize); + if (callInfo == nullptr) { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[GetCallLog] malloc callInfo fail!"); - *info = NULL; + *info = nullptr; *num = 0; fclose(fp); return OHOS_FAILURE; } (void)memset_s(callInfo, fileSize, 0, fileSize); - ret = fread(callInfo, sizeof(CallLogInfo), number, fp); + int ret = fread(callInfo, sizeof(CallLogInfo), number, fp); if (ret != number) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[GetCallLog] fread fp fail ret = %d", ret); - *info = NULL; + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[GetCallLog] fread fp fail ret:%d", ret); + *info = nullptr; *num = 0; fclose(fp); return OHOS_FAILURE; @@ -973,8 +945,8 @@ int GetCallLog(CallLogInfo **info, int *num) int ClearCallLogFile(void) { FILE *fp = fopen(CALL_LOG_PATH, "wb"); - if (fp == NULL) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[ClearCallLogFile] fopen CALL_LOG_PATH failed!"); + if (fp == nullptr) { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[ClearCallLogFile] fopen %s failed!", CALL_LOG_PATH); return OHOS_FAILURE; } @@ -986,11 +958,11 @@ int ClearCallLogFile(void) static PhoneCallInfo *FindCallInfoInCallList(const unsigned char *number, unsigned char numberLen) { int i; - const char *str1 = NULL; - const char *str2 = NULL; + const char *str1 = nullptr; + const char *str2 = nullptr; if (g_currCallNum == 0) { - return NULL; + return nullptr; } for (i = 0; i < MULTI_CALL_MAX_NUME; i++) { @@ -1006,7 +978,7 @@ static PhoneCallInfo *FindCallInfoInCallList(const unsigned char *number, unsign } } - return NULL; + return nullptr; } static void CatPhoneNumber(char *number, unsigned char len) @@ -1024,26 +996,23 @@ static void CatPhoneNumber(char *number, unsigned char len) static void AddCurrCallToCallList(const hfp_hf_calls_info_t *call) { - PhoneCallInfo *phoneCall = NULL; - int tmp, ret; - - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[AddCurrCallToCallList] start, call->state = %d", call->state); - if (call == NULL || g_currCallNum >= MULTI_CALL_MAX_NUME || + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[AddCurrCallToCallList] state:%d", call->state); + if (call == nullptr || g_currCallNum >= MULTI_CALL_MAX_NUME || (call->state != HFP_HF_CALL_STATE_ACTIVE && call->state != HFP_HF_CALL_STATE_HELD && call->state != HFP_HF_CALL_STATE_ALERTING)) { return; } g_currCallNum++; - tmp = g_currCallNum - 1; - phoneCall = &g_callList[tmp]; + int32_t tmp = g_currCallNum - 1; + PhoneCallInfo *phoneCall = &g_callList[tmp]; if (call->state == HFP_HF_CALL_STATE_ACTIVE) { // 正在通话 phoneCall->operate = OPERATE_PHONE_ACTIVE; - phoneCall->activeTime = time(NULL); + phoneCall->activeTime = time(nullptr); } else if (call->state == HFP_HF_CALL_STATE_HELD) { // 挂起 phoneCall->operate = OPERATE_PHONE_HOLD; - phoneCall->activeTime = time(NULL); + phoneCall->activeTime = time(nullptr); } else if (call->state == HFP_HF_CALL_STATE_ALERTING) { // 呼出,对方响铃 phoneCall->operate = OPERATE_ALERTING; } @@ -1051,11 +1020,11 @@ static void AddCurrCallToCallList(const hfp_hf_calls_info_t *call) // 使用通讯录接口获取当前电话对应的备注人名(通讯录待开发) phoneCall->lastStatus = call->state; - phoneCall->creationTime = time(NULL); + phoneCall->creationTime = time(nullptr); - ret = memcpy_s(phoneCall->tel, MAX_PHONE_NUM, call->number, call->number_len); + int32_t ret = memcpy_s(phoneCall->tel, MAX_PHONE_NUM, call->number, call->number_len); if (ret != EOK) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AddCurrCallToCallList] memcpy_s tel fail, ret = %d", ret); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AddCurrCallToCallList] copy tel ret:%d", ret); CatPhoneNumber(call->number, call->number_len); } phoneCall->telLen = call->number_len; @@ -1069,26 +1038,23 @@ static void AddCurrCallToCallList(const hfp_hf_calls_info_t *call) // 通话状态变化--呼出,正在拨号处理 static void CallChangeDialPro(const hfp_hf_calls_info_t *call) { - PhoneCallInfo *phoneCall = NULL; - int tmp, ret; - - if (call == NULL) { + if (call == nullptr) { return; } - g_currCallNum++; - tmp = g_currCallNum - 1; - phoneCall = &g_callList[tmp]; + g_currCallNum++; + int32_t tmp = g_currCallNum - 1; + PhoneCallInfo *phoneCall = &g_callList[tmp]; // 使用通讯录接口获取当前电话对应的备注人名(通讯录待开发) phoneCall->operate = OPERATE_DIALING; phoneCall->lastStatus = call->state; - phoneCall->creationTime = time(NULL); + phoneCall->creationTime = time(nullptr); - ret = memcpy_s(phoneCall->tel, MAX_PHONE_NUM, call->number, call->number_len); + int32_t ret = memcpy_s(phoneCall->tel, MAX_PHONE_NUM, call->number, call->number_len); if (ret != EOK) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[CallChangeDialPro] memcpy_s tel fail, ret = %d", ret); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[CallChangeDialPro] copy tel ret:%d", ret); CatPhoneNumber(call->number, call->number_len); } phoneCall->telLen = call->number_len; @@ -1102,15 +1068,15 @@ static void CallChangeDialPro(const hfp_hf_calls_info_t *call) // 通话状态变化--呼出,对方响铃 static void CallChangeAlertPro(const hfp_hf_calls_info_t *call) { - PhoneCallInfo *phoneCall = NULL; + PhoneCallInfo *phoneCall = nullptr; - if (call == NULL) { + if (call == nullptr) { return; } phoneCall = FindCallInfoInCallList((const unsigned char*)call->number, call->number_len); - if (phoneCall == NULL) { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[CallChangeAlertPro] FindCallInfoInCallList Alert no this call"); + if (phoneCall == nullptr) { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[CallChangeAlertPro] Alert no this call"); AddCurrCallToCallList(call); return; } @@ -1127,22 +1093,22 @@ void HfpIncomingEventPublish(uint16 topic, hfp_hf_calls_info_t callsInfo) { int32 ret; uint32 size = sizeof(hfp_hf_calls_info_t); - Request *request = NULL; - BroadcastApi *broadcastApi = NULL; - IUnknown *api = NULL; + Request *request = nullptr; + BroadcastApi *broadcastApi = nullptr; + IUnknown *api = nullptr; WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "HfpIncomingEventPublish topic=%u!!", topic); /* alloc request */ request = SAMGR_AllocRequestMsg(0, PLATFORM_CORE, BROADCAST_SVR_ID, size); - if (request == NULL) { + if (request == nullptr) { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SAMGR_AllocRequestMsg failed"); return; } request->msgId = topic; ret = memcpy_s(request->data, size, (const void *)&callsInfo, size); if (ret != EOK) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HfpIncomingEventPublish memcpy_s rateDataTmp fail! ret = %d", ret); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HfpIncomingEventPublish memcpy_s rateDataTmp fail! ret:%d", ret); return; } request->len = size; @@ -1150,13 +1116,13 @@ void HfpIncomingEventPublish(uint16 topic, hfp_hf_calls_info_t callsInfo) /* public request */ api = SAMGR_GetInstance()->GetFeatureApi(BROADCAST_SERVICE_NAME, BROADCAST_FEATURE_NAME); - if (api == NULL) { + if (api == nullptr) { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GetFeatureApi failed"); SAMGR_FreeRequestMsg(request); return; } ret = api->QueryInterface(api, DEFAULT_VERSION, (void **)&broadcastApi); - if (ret != 0 || broadcastApi == NULL) { + if (ret != 0 || broadcastApi == nullptr) { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "QueryInterface failed"); SAMGR_FreeRequestMsg(request); return; @@ -1169,23 +1135,19 @@ void HfpIncomingEventPublish(uint16 topic, hfp_hf_calls_info_t callsInfo) } // 通话状态变化--呼入处理 -void CallChangeIncomePro(const hfp_hf_calls_info_t *call) +static void CallChangeIncomePro(const hfp_hf_calls_info_t *call) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[hu] call"); - PhoneCallInfo *phoneCall = NULL; - int tmp, ret; - - if (call == NULL || g_currCallNum >= MULTI_CALL_MAX_NUME || + if (call == nullptr || g_currCallNum >= MULTI_CALL_MAX_NUME || (call->state != HFP_HF_CALL_STATE_INCOMING && call->state != HFP_HF_CALL_STATE_WAITING)) { return; } - phoneCall = FindCallInfoInCallList((const unsigned char*)call->number, call->number_len); - if (phoneCall != NULL) { + PhoneCallInfo *phoneCall = FindCallInfoInCallList((const unsigned char*)call->number, call->number_len); + if (phoneCall != nullptr) { // 通话状态由呼入等待转换成呼入情况 } else { g_currCallNum++; - tmp = g_currCallNum - 1; + int32_t tmp = g_currCallNum - 1; phoneCall = &g_callList[tmp]; } @@ -1197,11 +1159,11 @@ void CallChangeIncomePro(const hfp_hf_calls_info_t *call) phoneCall->operate = OPERATE_WAITING; } phoneCall->lastStatus = call->state; - phoneCall->creationTime = time(NULL); + phoneCall->creationTime = time(nullptr); - ret = memcpy_s(phoneCall->tel, MAX_PHONE_NUM, call->number, call->number_len); + int32_t ret = memcpy_s(phoneCall->tel, MAX_PHONE_NUM, call->number, call->number_len); if (ret != EOK) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[CallChangeIncomePro] memcpy_s tel fail, ret = %d", ret); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[CallChangeIncomePro] copy tel ret:%d", ret); CatPhoneNumber(call->number, call->number_len); } phoneCall->telLen = call->number_len; @@ -1217,22 +1179,23 @@ void CallChangeIncomePro(const hfp_hf_calls_info_t *call) // 通话状态变化--接听流程处理 static void CallChangeActivePro(const hfp_hf_calls_info_t *call) { - PhoneCallInfo *phoneCall = NULL; + PhoneCallInfo *phoneCall = nullptr; - if (call == NULL) { + if (call == nullptr) { return; } phoneCall = FindCallInfoInCallList((const unsigned char*)call->number, call->number_len); - if (phoneCall == NULL) { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[CallChangeActivePro] FindCallInfoInCallList Active no this call"); + if (phoneCall == nullptr) { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[CallChangeActivePro] Active no this call"); AddCurrCallToCallList(call); + TransCallToMobilePhone(); return; } - if (phoneCall->lastStatus == HFP_HF_CALL_STATE_HELD && IsCompleteCallFlow() == true) { // 挂起状态切换到接听状态 + if (phoneCall->lastStatus == HFP_HF_CALL_STATE_HELD && IsCompleteCallFlow()) { // 挂起状态切换到接听状态 phoneCall->operate = OPERATE_WATCH_ACTIVE; - } else if (phoneCall->lastStatus == HFP_HF_CALL_STATE_HELD && IsCompleteCallFlow() == false) { + } else if (phoneCall->lastStatus == HFP_HF_CALL_STATE_HELD && (!IsCompleteCallFlow())) { phoneCall->operate = OPERATE_PHONE_ACTIVE; } else if (phoneCall->operate == OPERATE_WATCH_ACTIVE) { // 手表接听 // 不做操作 @@ -1250,7 +1213,7 @@ static void CallChangeActivePro(const hfp_hf_calls_info_t *call) if (phoneCall->activeTime == 0 && (phoneCall->lastStatus == HFP_HF_CALL_STATE_DIALING || phoneCall->lastStatus == HFP_HF_CALL_STATE_ALERTING || phoneCall->lastStatus == HFP_HF_CALL_STATE_INCOMING || phoneCall->lastStatus == HFP_HF_CALL_STATE_WAITING)) { - phoneCall->activeTime = time(NULL); + phoneCall->activeTime = time(nullptr); } phoneCall->lastStatus = call->state; @@ -1258,7 +1221,7 @@ static void CallChangeActivePro(const hfp_hf_calls_info_t *call) if (phoneCall->operate == OPERATE_PHONE_ACTIVE) { // 发布电话接听事件,手表关闭来电通知 HfpIncomingEventPublish(TOPIC_EVENT_HFP_PHONE_ACTIVE, phoneCall->unitCalls); - } else if (phoneCall->operate == OPERATE_WATCH_ACTIVE) { + } else if (phoneCall->operate == OPERATE_WATCH_ACTIVE && g_scoFlag == HFP_SCO_STATE_CONNECTED) { // 发布手表接听事件,通知切换接听界面 HfpIncomingEventPublish(TOPIC_EVENT_HFP_WATCH_ACTIVE, phoneCall->unitCalls); } @@ -1269,18 +1232,18 @@ static void CallChangeActivePro(const hfp_hf_calls_info_t *call) // 通话状态变化--拒接/结束流程处理 static void CallChangeFinishPro(const hfp_hf_calls_info_t *call) { - PhoneCallInfo *phoneCall = NULL; + PhoneCallInfo *phoneCall = nullptr; PhoneCallInfo tmp; - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[CallChangeFinishPro] start g_scoFlag = %d, g_currCallNum = %d", + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[CallChangeFinishPro] start scoFlag:%d, CallNum:%d", g_scoFlag, g_currCallNum); - if (call == NULL || g_currCallNum == 0) { + if (call == nullptr || g_currCallNum == 0) { return; } phoneCall = FindCallInfoInCallList((const unsigned char*)call->number, call->number_len); - if (phoneCall == NULL) { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[CallChangeFinishPro] FindCallInfoInCallList Finish no this call"); + if (phoneCall == nullptr) { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[CallChangeFinishPro] Finish no this call"); return; } if (g_finishOperate == OPERATE_WATCH_FINISH) { @@ -1308,22 +1271,22 @@ static void CallChangeFinishPro(const hfp_hf_calls_info_t *call) // 通知手表通话结束 CallChangedCb(&tmp); - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[CallChangeFinishPro] end g_scoFlag = %d, g_currCallNum = %d", - g_scoFlag, g_currCallNum); + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[CallChangeFinishPro] end scoFlag:%d, CallNum:%d", + g_scoFlag, g_currCallNum); } // 通话状态变化--挂起通话(当前只有手机挂起触发(并且手表不需感知),手表不支持挂起触发,对方挂起不感知) static void CallChangeHeldPro(const hfp_hf_calls_info_t *call) { - PhoneCallInfo *phoneCall = NULL; + PhoneCallInfo *phoneCall = nullptr; - if (call == NULL) { + if (call == nullptr) { return; } phoneCall = FindCallInfoInCallList((const unsigned char*)call->number, call->number_len); - if (phoneCall == NULL) { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[CallChangeHeldPro] FindCallInfoInCallList Held no this call"); + if (phoneCall == nullptr) { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[CallChangeHeldPro] Held no this call"); AddCurrCallToCallList(call); return; } @@ -1331,7 +1294,7 @@ static void CallChangeHeldPro(const hfp_hf_calls_info_t *call) // 手机挂起通话 phoneCall->operate = OPERATE_PHONE_HOLD; if (phoneCall->lastStatus == HFP_HF_CALL_STATE_INCOMING || phoneCall->lastStatus == HFP_HF_CALL_STATE_WAITING) { - phoneCall->activeTime = time(NULL); + phoneCall->activeTime = time(nullptr); } phoneCall->lastStatus = call->state; (void)memcpy_s(&phoneCall->unitCalls, sizeof(hfp_hf_calls_info_t), call, sizeof(hfp_hf_calls_info_t)); @@ -1343,20 +1306,15 @@ static void CallChangeHeldPro(const hfp_hf_calls_info_t *call) static void PlayWatchRing(void) { WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[PlayWatchRing] start"); - // 申请手表铃声焦点 - // AudioActInterrupt(AUDIO_STREAM_RING); - // 播放手表铃声(播放方案待定) } static void CallAudioHandle(const hfp_hf_calls_info_t *call) { int state = call->state; - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[CallAudioHandle] start g_audioState: %d", g_audioState); - if (state == HFP_HF_CALL_STATE_INCOMING || state == HFP_HF_CALL_STATE_DIALING || state == HFP_HF_CALL_STATE_ALERTING) { // 电话呼入,支持播放手机铃声 - if (call->in_band_ring == true) { + if (call->in_band_ring) { // 播放手机端铃声 PostGraphicEvent(AudioDn); } else { @@ -1368,27 +1326,18 @@ static void CallAudioHandle(const hfp_hf_calls_info_t *call) } else if (state == HFP_HF_CALL_STATE_FINISHED) { return; } else if (g_scoFlag == HFP_SCO_STATE_CONNECTED) { - if (g_audioState < AUDIO_STREAM_START_DN) { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[CallAudioHandle] post AudioDn"); - PostGraphicEvent(AudioDn); - } - if (g_audioState != AUDIO_STREAM_START_UP) { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[CallAudioHandle] post AudioUp"); - PostGraphicEvent(AudioUp); - } + PostGraphicEvent(AudioSetup); } - - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[CallAudioHandle] end g_audioState: %d", g_audioState); } static void CatCallStateChangedInfo(const bd_addr_t *bdAddr, const hfp_hf_calls_info_t *call) { WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "***************************CallStateChanged***************************"); - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "g_scoFlag = %d, g_currCallNum = %d, bdAddr: ", g_scoFlag, g_currCallNum); + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "scoFlag:%d, CallNum:%d, bdAddr: ", g_scoFlag, g_currCallNum); CatBdAddr(bdAddr); - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "id = %d, state = %d", call->id, call->state); + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "id:%d, state:%d", call->id, call->state); CatPhoneNumber(call->number, call->number_len); - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "multi_party = %d, outgoing = %d, in_band_ring = %d, creation_time = %ld", + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "multi_party:%d, outgoing:%d, in_band_ring:%d, creation_time:%ld", call->multi_party, call->outgoing, call->in_band_ring, call->creation_time); WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "***********************************************************************"); } @@ -1415,7 +1364,7 @@ bool IsCompleteCallFlow(void) static void CallStateChanged(const bd_addr_t *bdAddr, const hfp_hf_calls_info_t *call) { CopyBdAddr(bdAddr); - if (call == NULL || g_btConnState != PROFILE_STATE_CONNECTED) { + if (call == nullptr || g_btConnState != PROFILE_STATE_CONNECTED) { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "call is null or BT disconnected connStatus: 0x%X", g_btConnState); return; } @@ -1424,7 +1373,7 @@ static void CallStateChanged(const bd_addr_t *bdAddr, const hfp_hf_calls_info_t CatCallStateChangedInfo(bdAddr, call); CallAudioHandle(call); - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CallStateChanged state = %d", call->state); + WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "CallStateChanged state:%d", call->state); switch (call->state) { case HFP_HF_CALL_STATE_ACTIVE: // 正在通话 CallChangeActivePro(call); @@ -1441,7 +1390,6 @@ static void CallStateChanged(const bd_addr_t *bdAddr, const hfp_hf_calls_info_t CallChangeAlertPro(call); break; case HFP_HF_CALL_STATE_INCOMING: // 呼入 - PhoneServiceScreenCtr(1); CallChangeIncomePro(call); break; @@ -1467,37 +1415,31 @@ static void CallStateChanged(const bd_addr_t *bdAddr, const hfp_hf_calls_info_t } if (g_currCallNum == 0) { - PostGraphicEvent(AudioRelease); g_completeCallFlag = false; } } -static int g_hfpVolumeType; -static unsigned char g_hfpVolume; - -static void BtHfpVolumeChanged(void) +static void BtHfpVolumeChanged(int volumeType, unsigned char hfpVolume) { - int maxVolume, minVolume, tmp; - bool ret; - // mic - if (g_hfpVolumeType == HFP_VOLUME_MIC) { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[BtHfpVolumeChanged] g_hfpVolumeType = %d, g_hfpVolume = %d ", - g_hfpVolumeType, g_hfpVolume); + if (volumeType == HFP_VOLUME_MIC) { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "VolumeChanged Type:%d, hfpVolume:%d", + volumeType, hfpVolume); } // speak - if (g_hfpVolumeType == HFP_VOLUME_SPEAKER) { - minVolume = PhoneAudioGetMinVolume(); - maxVolume = PhoneAudioGetMaxVolume(); - tmp = g_hfpVolume * (maxVolume - minVolume) / CALL_VOLUME_MAX; // 转换 - - ret = PhoneAudioSetVolume(tmp); - if (ret != true) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[BtHfpVolumeChanged] g_hfpVolumeType: %d, ret: %d", g_hfpVolumeType, ret); + if (volumeType == HFP_VOLUME_SPEAKER) { + int32_t minVolume = PhoneAudioGetMinVolume(); + int32_t maxVolume = PhoneAudioGetMaxVolume(); + int32_t volume = hfpVolume * (maxVolume - minVolume) / CALL_VOLUME_MAX; // 转换 + volume = (volume == 0) ? ((maxVolume - minVolume) / CALL_VOLUME_MAX) : volume; + bool ret = PhoneAudioSetVolume(volume); + if (!ret) { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "VolumeChanged Type:%d, ret:%d", + volumeType, ret); } - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[BtHfpVolumeChanged] g_hfpVolumeType: %d, minVolume: %d, maxVolume: %d tmp: %d\ - ret:%d ", g_hfpVolumeType, minVolume, maxVolume, tmp, ret); + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "VolumeChanged Type:%d, min:%d, max:%d volume:%d ret:%d", + volumeType, minVolume, maxVolume, volume, ret); } } @@ -1505,17 +1447,15 @@ static void BtHfpVolumeChanged(void) static void VolumeChanged(const bd_addr_t *bdAddr, hfp_volume_type_t type, unsigned char volume) { UNUSED(bdAddr); - g_hfpVolumeType = type; - g_hfpVolume = volume; - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[VolumeChanged] type = %d volume = %d", type, volume); - PostGraphicEvent(BtHfpVolumeChanged); // 解决SdkMsgThread爆栈问题 + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[VolumeChanged] type:%d volume:%d", type, volume); + GraphicService::GetInstance()->PostGraphicEvent(std::bind(BtHfpVolumeChanged, type, volume)); } // 拨号失败回调 static void DialErrorCode(const bd_addr_t *bdAddr, int code) { UNUSED(bdAddr); - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[DialErrorCode] code = %d", code); + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[DialErrorCode] code:%d", code); PhoneServiceErrorCallback(ERROR_DIAL, code); } @@ -1523,28 +1463,28 @@ static void HfpBatteryChanged(const bd_addr_t *bdAddr, int batteryLevel) { UNUSED(bdAddr); UNUSED(batteryLevel); - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[HfpBatteryChanged] batteryLevel: %d", batteryLevel); + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[HfpBatteryChanged] batteryLevel:%d", batteryLevel); } static void HfpSignalStrengthChanged(const bd_addr_t *bdAddr, int signalStrength) { UNUSED(bdAddr); UNUSED(signalStrength); - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[HfpSignalStrengthChanged] signalStrength: %d", signalStrength); + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[HfpSignalStrengthChanged] signalStrength:%d", signalStrength); } static void HfpRegistStatusChanged(const bd_addr_t *bdAddr, int status) { UNUSED(bdAddr); UNUSED(status); - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[HfpRegistStatusChanged] status: %d", status); + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[HfpRegistStatusChanged] status:%d", status); } static void HfpRoamingStatusChanged(const bd_addr_t *bdAddr, int status) { UNUSED(bdAddr); UNUSED(status); - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[HfpRoamingStatusChanged] status: %d", status); + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[HfpRoamingStatusChanged] status:%d", status); } static void HfpOperatorSelection(const bd_addr_t *bdAddr, unsigned char *name, unsigned int len) @@ -1552,7 +1492,7 @@ static void HfpOperatorSelection(const bd_addr_t *bdAddr, unsigned char *name, u UNUSED(bdAddr); UNUSED(name); UNUSED(len); - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[HfpOperatorSelection] name: %s, len: %d", name, len); + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[HfpOperatorSelection] name: %s, len:%d", name, len); } static void HfpSubscriberNumber(const bd_addr_t *bdAddr, unsigned char *number, unsigned int len) @@ -1560,21 +1500,21 @@ static void HfpSubscriberNumber(const bd_addr_t *bdAddr, unsigned char *number, UNUSED(bdAddr); UNUSED(number); UNUSED(len); - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[HfpSubscriberNumber] number: %s, len: %d", number, len); + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[HfpSubscriberNumber] number: %s, len:%d", number, len); } static void VoiceRecogStatusChanged(const bd_addr_t *bdAddr, int status) { UNUSED(bdAddr); UNUSED(status); - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[VoiceRecogStatusChanged] status: %d", status); + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[VoiceRecogStatusChanged] status:%d", status); } static void InbandRingtoneChanged(const bd_addr_t *bdAddr, int status) { UNUSED(bdAddr); UNUSED(status); - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[InbandRingtoneChanged] status: %d", status); + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[InbandRingtoneChanged] status:%d", status); } static void CodecChanged(const bd_addr_t *bdAddr, int codec) @@ -1585,7 +1525,7 @@ static void CodecChanged(const bd_addr_t *bdAddr, int codec) } else if (codec == HFP_HF_CODEC_ID_MSBC) { g_call_codec = mSBC; } - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[CodecChanged] codec: %d, call_codec: %d", codec, g_call_codec); + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[CodecChanged] codec:%d, call_codec:%d", codec, g_call_codec); } @@ -1612,7 +1552,7 @@ static void RegisterHfpHfCallbacks(void) ret = hfp_hf_register_callbacks(&callbacks); if (ret != 0) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[RegisterHfpHfCallbacks] ret = %d", ret); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[RegisterHfpHfCallbacks] ret:%d", ret); } } @@ -1636,7 +1576,7 @@ void PhoneServiceInit(void) int DialCall(unsigned char *number, unsigned char len) { int ret; - unsigned char *tel = NULL; + unsigned char *tel = nullptr; WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[DialCall] start"); if (g_btConnState != PROFILE_STATE_CONNECTED) { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[DialCall] BT connStatus: 0x%X", g_btConnState); @@ -1644,13 +1584,13 @@ int DialCall(unsigned char *number, unsigned char len) } // 有通话时,不允许拨出电话 - if (g_currCallNum > 0 || len > MAX_PHONE_NUM || number == NULL) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[DialCall] g_currCallNum = %d", g_currCallNum); + if (g_currCallNum > 0 || len > MAX_PHONE_NUM || number == nullptr) { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[DialCall] g_currCallNum:%d", g_currCallNum); return OHOS_FAILURE; } tel = (unsigned char *)malloc(len + 1); - if (tel == NULL) { + if (tel == nullptr) { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[DialCall] malloc tel error"); return OHOS_FAILURE; } @@ -1658,7 +1598,7 @@ int DialCall(unsigned char *number, unsigned char len) *(tel + len) = '\0'; ret = hfp_hf_start_dial(&g_bdAddr, tel, len); if (ret != ERRCODE_BT_SUCCESS) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[DialCall] hfp_hf_start_dial error ret %d", ret); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[DialCall] hfp_hf_start_dial ret %d", ret); free(tel); return OHOS_FAILURE; } @@ -1671,8 +1611,8 @@ int DialCall(unsigned char *number, unsigned char len) int AcceptIncomingCall(void) { WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[AcceptIncomingCall] start"); - int ret, i; - PhoneCallInfo *phoneCall = NULL; + int32_t ret; + PhoneCallInfo *phoneCall = nullptr; PhoneCallInfo *tmp = g_callList; if (g_btConnState != PROFILE_STATE_CONNECTED) { @@ -1680,7 +1620,7 @@ int AcceptIncomingCall(void) return OHOS_FAILURE; } - for (i = 0; i < MULTI_CALL_MAX_NUME; i++) { + for (int32_t i = 0; i < MULTI_CALL_MAX_NUME; i++) { if (tmp->lastStatus == HFP_HF_CALL_STATE_INCOMING || tmp->lastStatus == HFP_HF_CALL_STATE_WAITING) { phoneCall = tmp; break; @@ -1688,7 +1628,7 @@ int AcceptIncomingCall(void) tmp++; } - if (phoneCall == NULL) { + if (phoneCall == nullptr) { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AcceptIncomingCall] no incoming"); return OHOS_FAILURE; } @@ -1701,7 +1641,7 @@ int AcceptIncomingCall(void) ret = hfp_hf_accept_incoming_call(&g_bdAddr, HFP_HF_ACCEPT_CALL_ACTION_NONE); // 无人通话,有人呼入,接听呼入电话 } if (ret != ERRCODE_BT_SUCCESS) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AcceptIncomingCall] hfp_hf_accept_incoming_call error ret = %d", ret); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AcceptIncomingCall] ret:%d", ret); phoneCall->operate = OPERATE_NO_OPE; return OHOS_FAILURE; } @@ -1709,13 +1649,11 @@ int AcceptIncomingCall(void) return OHOS_SUCCESS; } - // 手表拒接呼入来电,成功:0,失败:错误码 int RejectIncomingCall(void) { WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[RejectIncomingCall] start"); - int ret, i; - PhoneCallInfo *phoneCall = NULL; + PhoneCallInfo *phoneCall = nullptr; PhoneCallInfo *tmp = g_callList; if (g_btConnState != PROFILE_STATE_CONNECTED) { @@ -1723,21 +1661,21 @@ int RejectIncomingCall(void) return OHOS_FAILURE; } - for (i = 0; i < MULTI_CALL_MAX_NUME; i++) { + for (int32_t i = 0; i < MULTI_CALL_MAX_NUME; i++) { if (tmp->lastStatus == HFP_HF_CALL_STATE_INCOMING || tmp->lastStatus == HFP_HF_CALL_STATE_WAITING) { phoneCall = tmp; } tmp++; } - if (phoneCall == NULL) { + if (phoneCall == nullptr) { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AcceptIncomingCall] no incoming"); return OHOS_SUCCESS; } - ret = hfp_hf_reject_incoming_call(&g_bdAddr); + int32_t ret = hfp_hf_reject_incoming_call(&g_bdAddr); if (ret != ERRCODE_BT_SUCCESS) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[RejectIncomingCall] hfp_hf_reject_incoming_call error ret = %d", ret); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[RejectIncomingCall] ret:%d", ret); return OHOS_FAILURE; } g_finishOperate = OPERATE_WATCH_REJECT; @@ -1748,19 +1686,17 @@ int RejectIncomingCall(void) // 手表结束通话 int FinishCall(void) { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[FinishCall] start"); - if (g_btConnState != PROFILE_STATE_CONNECTED) { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[FinishCall] BT connStatus: 0x%X", g_btConnState); return OHOS_FAILURE; } int ret = hfp_hf_finish_call(&g_bdAddr); if (ret != ERRCODE_BT_SUCCESS) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[FinishCall] hfp_hf_finish_call error ret = %d", ret); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[FinishCall] ret:%d", ret); return OHOS_FAILURE; } g_finishOperate = OPERATE_WATCH_FINISH; - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[FinishCall] success!"); + WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "FinishCall"); return OHOS_SUCCESS; } @@ -1780,11 +1716,10 @@ int GetCurrCallNum(void) */ int GetCallInfoInCallList(PhoneCallInfo callList[], int listNum, int *retNum) { - int i, len; PhoneCallInfo *tmp = g_callList; PhoneCallInfo *tmp2 = callList; - if (callList == NULL || listNum < MULTI_CALL_MAX_NUME) { + if (callList == nullptr || listNum < MULTI_CALL_MAX_NUME) { *retNum = 0; return OHOS_FAILURE; } @@ -1794,8 +1729,8 @@ int GetCallInfoInCallList(PhoneCallInfo callList[], int listNum, int *retNum) return OHOS_SUCCESS; } - len = sizeof(PhoneCallInfo); - for (i = 0; i < MULTI_CALL_MAX_NUME; i++) { + int32_t len = sizeof(PhoneCallInfo); + for (int32_t i = 0; i < MULTI_CALL_MAX_NUME; i++) { if (tmp->lastStatus == HFP_HF_CALL_STATE_FINISHED) { tmp++; } else { @@ -1809,71 +1744,46 @@ int GetCallInfoInCallList(PhoneCallInfo callList[], int listNum, int *retNum) return OHOS_SUCCESS; } -static unsigned char g_changeSpkVolume; - -static void GetCallCurrVolumeEvent(void) -{ - int volume; - int minVolume; - int maxVolume; - unsigned char tmp; - - volume = PhoneAudioGetVolume(); - minVolume = PhoneAudioGetMinVolume(); - maxVolume = PhoneAudioGetMaxVolume(); - tmp = (unsigned char)((volume * CALL_VOLUME_MAX) / (maxVolume - minVolume)); // 转换 - - if (volume != 0 && tmp == 0) { - tmp = 1; - } - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[GetCallCurrVolumeEvent] volume = %d, minVolume = %d, maxVolume = %d, tmp = %d", - volume, minVolume, maxVolume, tmp); - g_changeSpkVolume = tmp; -} - // 获取当前通话音量大小 (0 - 15) +// hfp音量范围 0-15, media 音量范围 0-100 unsigned char GetCallCurrVolume(void) { - GetCallCurrVolumeEvent(); - return g_changeSpkVolume; + int32_t volume = PhoneAudioGetVolume(); + int32_t minVolume = PhoneAudioGetMinVolume(); + int32_t maxVolume = PhoneAudioGetMaxVolume(); + unsigned char hfpVolume = (unsigned char)((volume * CALL_VOLUME_MAX) / (maxVolume - minVolume)); // 转换 + + if (volume != 0 && hfpVolume == 0) { + hfpVolume = 1; + } + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[GetCallCurrVolume] volume:%d, minVolume:%d, maxVolume:%d, hfpVolume:%d", + volume, minVolume, maxVolume, hfpVolume); + return hfpVolume; } -static void SetSpeakerVolumeEvent(void) +void SetSpeakerVolume(unsigned char hfpVolume) { - int ret, minVolume, maxVolume, tmp; + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[SetSpeakerVolume] start, hfpVolume:%d", hfpVolume); + int32_t minVolume = PhoneAudioGetMinVolume(); + int32_t maxVolume = PhoneAudioGetMaxVolume(); + int32_t volume = hfpVolume * (maxVolume - minVolume) / CALL_VOLUME_MAX; // 转换 + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[SetSpeakerVolume] minVolume:%d, maxVolume:%d, volume:%d", + minVolume, maxVolume, volume); - minVolume = PhoneAudioGetMinVolume(); - maxVolume = PhoneAudioGetMaxVolume(); - tmp = g_changeSpkVolume * (maxVolume - minVolume) / CALL_VOLUME_MAX; // 转换 - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[SetSpeakerVolumeEvent] minVolume = %d, maxVolume = %d, tmp = %d", - minVolume, maxVolume, tmp); - - ret = PhoneAudioSetVolume(tmp); - if (ret != true) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[SetSpeakerVolumeEvent] PhoneAudioSetVolume ret = %d", ret); + int32_t ret = PhoneAudioSetVolume(volume); + if (!ret) { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[SetSpeakerVolume] PhoneAudioSetVolume ret:%d", ret); return; } - ret = hfp_hf_set_volume(&g_bdAddr, HFP_VOLUME_SPEAKER, g_changeSpkVolume); + ret = hfp_hf_set_volume(&g_bdAddr, HFP_VOLUME_SPEAKER, hfpVolume); if (ret != ERRCODE_BT_SUCCESS) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[SetSpeakerVolumeEvent] hfp_hf_set_volume fail ret = %d, g_changeSpkVolume = %d", - ret, g_changeSpkVolume); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[SetSpeakerVolume] set_volume ret:%d, hfpVolume:%d", + ret, hfpVolume); return; } - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[SetSpeakerVolumeEvent] success!"); -} - -// 设置手表通话Speaker音量:0 - 15 -void SetSpeakerVolume(unsigned char volume) -{ - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[SetSpeakerVolume] start, volume = %d", volume); - if (volume > CALL_VOLUME_MAX) { - g_changeSpkVolume = CALL_VOLUME_MAX; - } else { - g_changeSpkVolume = volume; - } + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[SetSpeakerVolume] success!"); - SetSpeakerVolumeEvent(); return; } @@ -1912,7 +1822,7 @@ int TransCallToWatch(void) } else { ret = hfp_hf_connect_sco(&g_bdAddr); if (ret != 0) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[TransCallToWatch] ret = %d", ret); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[TransCallToWatch] ret:%d", ret); } return ret; } @@ -1935,7 +1845,7 @@ int TransCallToMobilePhone(void) } else { ret = hfp_hf_disconnect_sco(&g_bdAddr); if (ret != 0) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[TransCallToMobilePhone] ret = %d", ret); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[TransCallToMobilePhone] ret:%d", ret); } return ret; } -- 2.17.1