From d48493f9f11879196962bb171973bdf2a9a0ec90 Mon Sep 17 00:00:00 2001 From: byndyx Date: Mon, 6 Nov 2023 20:20:41 +0800 Subject: [PATCH 1/5] optimize some code Signed-off-by: byndyx --- common/include/daudio_util.h | 1 + common/src/daudio_util.cpp | 64 +++++++++++++++++++ .../audioclient/micclient/src/dmic_client.cpp | 2 +- .../spkclient/src/dspeaker_client.cpp | 22 +++++-- .../managersink/src/daudio_sink_dev.cpp | 2 +- .../managersink/src/daudio_sink_manager.cpp | 2 +- .../src/daudio_source_manager.cpp | 2 +- .../managersource/src/dmic_dev.cpp | 4 +- .../managersource/src/dspeaker_dev.cpp | 2 +- .../src/av_receiver_engine_transport.cpp | 2 +- 10 files changed, 88 insertions(+), 15 deletions(-) diff --git a/common/include/daudio_util.h b/common/include/daudio_util.h index 8506c9d4..f5e09247 100644 --- a/common/include/daudio_util.h +++ b/common/include/daudio_util.h @@ -54,6 +54,7 @@ bool IsOutDurationRange(int64_t startTime, int64_t endTime, int64_t lastStartTim void SaveFile(std::string fileName, uint8_t *audioData, int32_t size); std::string GetCJsonString(const char *key, const char *value); std::string ParseStringFromArgs(std::string args, const char *key); +std::string GetEventTypeName(const int32_t eventType); template bool GetSysPara(const char *key, T &value); diff --git a/common/src/daudio_util.cpp b/common/src/daudio_util.cpp index 59456263..d95a390c 100644 --- a/common/src/daudio_util.cpp +++ b/common/src/daudio_util.cpp @@ -25,6 +25,7 @@ #include "softbus_bus_center.h" +#include "audio_event.h" #include "daudio_constants.h" #include "daudio_errorcode.h" #include "daudio_log.h" @@ -61,6 +62,69 @@ std::map typeCheckMap = { std::map::value_type(KEY_STREAM_USAGE, &DistributedHardware::IsInt32), }; +std::map eventNameMap = { + std::make_pair(EVENT_UNKNOWN, "EVENT_UNKNOWN"), + std::make_pair(OPEN_CTRL, "OPEN_CTRL"), + std::make_pair(CLOSE_CTRL, "CLOSE_CTRL"), + std::make_pair(CTRL_OPENED, "CTRL_OPENED"), + std::make_pair(CTRL_CLOSED, "CTRL_CLOSED"), + std::make_pair(NOTIFY_OPEN_CTRL_RESULT, "NOTIFY_OPEN_CTRL_RESULT"), + std::make_pair(NOTIFY_CLOSE_CTRL_RESULT, "NOTIFY_CLOSE_CTRL_RESULT"), + std::make_pair(DATA_OPENED, "DATA_OPENED"), + std::make_pair(DATA_CLOSED, "DATA_CLOSED"), + + std::make_pair(OPEN_SPEAKER, "OPEN_SPEAKER"), + std::make_pair(CLOSE_SPEAKER, "CLOSE_SPEAKER"), + std::make_pair(SPEAKER_OPENED, "SPEAKER_OPENED"), + std::make_pair(SPEAKER_CLOSED, "SPEAKER_CLOSED"), + std::make_pair(NOTIFY_OPEN_SPEAKER_RESULT, "NOTIFY_OPEN_SPEAKER_RESULT"), + std::make_pair(NOTIFY_CLOSE_SPEAKER_RESULT, "NOTIFY_CLOSE_SPEAKER_RESULT"), + std::make_pair(NOTIFY_HDF_SPK_DUMP, "NOTIFY_HDF_SPK_DUMP"), + std::make_pair(NOTIFY_HDF_MIC_DUMP, "NOTIFY_HDF_MIC_DUMP"), + + std::make_pair(OPEN_MIC, "OPEN_MIC"), + std::make_pair(CLOSE_MIC, "CLOSE_MIC"), + std::make_pair(MIC_OPENED, "MIC_OPENED"), + std::make_pair(MIC_CLOSED, "MIC_CLOSED"), + std::make_pair(NOTIFY_OPEN_MIC_RESULT, "NOTIFY_OPEN_MIC_RESULT"), + std::make_pair(NOTIFY_CLOSE_MIC_RESULT, "NOTIFY_CLOSE_MIC_RESULT"), + + std::make_pair(VOLUME_SET, "VOLUME_SET"), + std::make_pair(VOLUME_GET, "VOLUME_GET"), + std::make_pair(VOLUME_CHANGE, "VOLUME_CHANGE"), + std::make_pair(VOLUME_MIN_GET, "VOLUME_MIN_GET"), + std::make_pair(VOLUME_MAX_GET, "VOLUME_MAX_GET"), + std::make_pair(VOLUME_MUTE_SET, "VOLUME_MUTE_SET"), + + std::make_pair(AUDIO_FOCUS_CHANGE, "AUDIO_FOCUS_CHANGE"), + std::make_pair(AUDIO_RENDER_STATE_CHANGE, "AUDIO_RENDER_STATE_CHANGE"), + + std::make_pair(SET_PARAM, "SET_PARAM"), + std::make_pair(SEND_PARAM, "SEND_PARAM"), + + std::make_pair(AUDIO_ENCODER_ERR, "AUDIO_ENCODER_ERR"), + std::make_pair(AUDIO_DECODER_ERR, "AUDIO_DECODER_ERR"), + + std::make_pair(CHANGE_PLAY_STATUS, "CHANGE_PLAY_STATUS"), + + std::make_pair(MMAP_SPK_START, "MMAP_SPK_START"), + std::make_pair(MMAP_SPK_STOP, "MMAP_SPK_STOP"), + std::make_pair(MMAP_MIC_START, "MMAP_MIC_START"), + std::make_pair(MMAP_MIC_STOP, "MMAP_MIC_STOP"), + std::make_pair(AUDIO_START, "AUDIO_START"), + std::make_pair(AUDIO_STOP, "AUDIO_STOP") +} + +std::string GetEventTypeName(const int32_t eventType) +{ + auto iter = eventNameMap.find(eventType); + if (iter == eventNameMap.end()) { + DHLOGE("Can't find matched typename"); + return "EVENT_UNKNOWN"; + } + return iter->second; +} + int32_t GetLocalDeviceNetworkId(std::string &networkId) { NodeBasicInfo basicInfo = { { 0 } }; diff --git a/services/audioclient/micclient/src/dmic_client.cpp b/services/audioclient/micclient/src/dmic_client.cpp index 330fb618..90f48cf8 100644 --- a/services/audioclient/micclient/src/dmic_client.cpp +++ b/services/audioclient/micclient/src/dmic_client.cpp @@ -50,11 +50,11 @@ void DMicClient::OnEngineTransEvent(const AVTransEvent &event) void DMicClient::OnEngineTransMessage(const std::shared_ptr &message) { - DHLOGI("On Engine message"); if (message == nullptr) { DHLOGE("The parameter is nullptr"); return; } + DHLOGI("On Engine message, type : %s.", GetEventTypeName(message->type_).c_str()); DAudioSinkManager::GetInstance().HandleDAudioNotify(message->dstDevId_, message->dstDevId_, static_cast(message->type_), message->content_); } diff --git a/services/audioclient/spkclient/src/dspeaker_client.cpp b/services/audioclient/spkclient/src/dspeaker_client.cpp index a2308733..9a8bddca 100644 --- a/services/audioclient/spkclient/src/dspeaker_client.cpp +++ b/services/audioclient/spkclient/src/dspeaker_client.cpp @@ -50,13 +50,14 @@ void DSpeakerClient::OnEngineTransMessage(const std::shared_ptr DHLOGE("The parameter is nullptr"); return; } + DHLOGI("On Engine message, type : %s.", GetEventTypeName(message->type_).c_str()); DAudioSinkManager::GetInstance().HandleDAudioNotify(message->dstDevId_, message->dstDevId_, static_cast(message->type_), message->content_); } void DSpeakerClient::OnEngineTransDataAvailable(const std::shared_ptr &audioData) { - DHLOGE("On Engine Data available"); + DHLOGI("On Engine Data available"); OnDecodeTransDataDone(audioData); } @@ -417,7 +418,7 @@ string DSpeakerClient::GetVolumeLevel() return ""; } cJSON_AddStringToObject(jParam, KEY_DH_ID, std::to_string(dhId_).c_str()); - cJSON_AddStringToObject(jParam, "ChangeType", "FIRST_VOLUME_CHANAGE"); + cJSON_AddStringToObject(jParam, KEY_CHANGE_TYPE, "FIRST_VOLUME_CHANAGE"); cJSON_AddStringToObject(jParam, "AUDIO_STREAM_TYPE", std::to_string(streamType).c_str()); cJSON_AddStringToObject(jParam, "VOLUME_LEVEL", std::to_string(volumeLevel).c_str()); cJSON_AddStringToObject(jParam, "IS_UPDATEUI", std::to_string(isUpdateUi).c_str()); @@ -450,7 +451,7 @@ void DSpeakerClient::OnVolumeKeyEvent(AudioStandard::VolumeEvent volumeEvent) return; } cJSON_AddStringToObject(jParam, KEY_DH_ID, std::to_string(dhId_).c_str()); - cJSON_AddStringToObject(jParam, "ChangeType", "VOLUME_CHANAGE"); + cJSON_AddStringToObject(jParam, KEY_CHANGE_TYPE, "VOLUME_CHANAGE"); cJSON_AddStringToObject(jParam, "AUDIO_STREAM_TYPE", std::to_string(volumeEvent.volumeType).c_str()); cJSON_AddStringToObject(jParam, "VOLUME_LEVEL", std::to_string(volumeEvent.volume).c_str()); cJSON_AddStringToObject(jParam, "IS_UPDATEUI", std::to_string(volumeEvent.updateUi).c_str()); @@ -484,7 +485,7 @@ void DSpeakerClient::OnInterrupt(const AudioStandard::InterruptEvent &interruptE return; } cJSON_AddStringToObject(jParam, KEY_DH_ID, std::to_string(dhId_).c_str()); - cJSON_AddStringToObject(jParam, "ChangeType", "INTERRUPT_EVENT"); + cJSON_AddStringToObject(jParam, KEY_CHANGE_TYPE, "INTERRUPT_EVENT"); cJSON_AddStringToObject(jParam, "EVENT_TYPE", std::to_string(interruptEvent.eventType).c_str()); cJSON_AddStringToObject(jParam, "FORCE_TYPE", std::to_string(interruptEvent.forceType).c_str()); cJSON_AddStringToObject(jParam, "HINT_TYPE", std::to_string(interruptEvent.hintType).c_str()); @@ -518,7 +519,7 @@ void DSpeakerClient::OnStateChange(const AudioStandard::RendererState state, return; } cJSON_AddStringToObject(jParam, KEY_DH_ID, std::to_string(dhId_).c_str()); - cJSON_AddStringToObject(jParam, "ChangeType", "RENDER_STATE_CHANGE_EVENT"); + cJSON_AddStringToObject(jParam, KEY_CHANGE_TYPE, "RENDER_STATE_CHANGE_EVENT"); cJSON_AddStringToObject(jParam, "STATE", std::to_string(state).c_str()); char *jsonData = cJSON_PrintUnformatted(jParam); if (jsonData == nullptr) { @@ -658,9 +659,16 @@ int32_t DSpeakerClient::SendMessage(uint32_t type, std::string content, std::str void DSpeakerClient::PlayStatusChange(const std::string &args) { DHLOGD("Play status change, args: %s.", args.c_str()); - if (args == AUDIO_EVENT_RESTART) { + cJSON *jParam = cJSON_Parse(args.c_str()); + if (jParam == nullptr) { + DHLOGE("Failed to parse JSON: %s", cJSON_GetErrorPtr()); + cJSON_Delete(jParam); + return; + } + auto changetype = ParseStringFromArgs(args, KEY_CHANGE_TYPE); + if (changetype.c_str() == AUDIO_EVENT_RESTART) { ReStart(); - } else if (args == AUDIO_EVENT_PAUSE) { + } else if (changetype.c_str() == AUDIO_EVENT_PAUSE) { Pause(); } else { DHLOGE("Play status error."); diff --git a/services/audiomanager/managersink/src/daudio_sink_dev.cpp b/services/audiomanager/managersink/src/daudio_sink_dev.cpp index 3cb30343..983cbb3b 100644 --- a/services/audiomanager/managersink/src/daudio_sink_dev.cpp +++ b/services/audiomanager/managersink/src/daudio_sink_dev.cpp @@ -104,7 +104,7 @@ void DAudioSinkDev::NotifyEvent(const AudioEvent &audioEvent) int32_t DAudioSinkDev::TaskOpenDSpeaker(const std::string &args) { - DHLOGI("Open speaker device."); + DHLOGI("Open speaker device, args = %s.", args.c_str()); if (args.length() > DAUDIO_MAX_JSON_LEN || args.empty()) { return ERR_DH_AUDIO_SA_PARAM_INVALID; } diff --git a/services/audiomanager/managersink/src/daudio_sink_manager.cpp b/services/audiomanager/managersink/src/daudio_sink_manager.cpp index 20085c0f..7774b728 100644 --- a/services/audiomanager/managersink/src/daudio_sink_manager.cpp +++ b/services/audiomanager/managersink/src/daudio_sink_manager.cpp @@ -293,7 +293,7 @@ int32_t DAudioSinkManager::LoadAVReceiverEngineProvider() return ERR_DH_AUDIO_NULLPTR; } rcvProviderPtr_ = getEngineFactoryFunc(OWNER_NAME_D_SPEAKER); - DHLOGE("LoadAVReceiverEngineProvider success."); + DHLOGI("LoadAVReceiverEngineProvider success."); return DH_SUCCESS; } diff --git a/services/audiomanager/managersource/src/daudio_source_manager.cpp b/services/audiomanager/managersource/src/daudio_source_manager.cpp index bea0b5f0..f09c00b6 100644 --- a/services/audiomanager/managersource/src/daudio_source_manager.cpp +++ b/services/audiomanager/managersource/src/daudio_source_manager.cpp @@ -436,7 +436,7 @@ int32_t DAudioSourceManager::LoadAVReceiverEngineProvider() return ERR_DH_AUDIO_NULLPTR; } rcvProviderPtr_ = getEngineFactoryFunc(OWNER_NAME_D_MIC); - DHLOGE("LoadAVReceiverEngineProvider success"); + DHLOGI("LoadAVReceiverEngineProvider success"); return DH_SUCCESS; } diff --git a/services/audiomanager/managersource/src/dmic_dev.cpp b/services/audiomanager/managersource/src/dmic_dev.cpp index 39fcf443..9bdb61f2 100644 --- a/services/audiomanager/managersource/src/dmic_dev.cpp +++ b/services/audiomanager/managersource/src/dmic_dev.cpp @@ -49,18 +49,18 @@ void DMicDev::OnEngineTransEvent(const AVTransEvent &event) void DMicDev::OnEngineTransMessage(const std::shared_ptr &message) { - DHLOGI("On Engine message"); if (message == nullptr) { DHLOGE("The parameter is nullptr"); return; } + DHLOGI("On Engine message, type : %s.", GetEventTypeName(message->type_).c_str()); DAudioSourceManager::GetInstance().HandleDAudioNotify(message->dstDevId_, message->dstDevId_, message->type_, message->content_); } void DMicDev::OnEngineTransDataAvailable(const std::shared_ptr &audioData) { - DHLOGE("On Engine Data available"); + DHLOGI("On Engine Data available"); OnDecodeTransDataDone(audioData); } diff --git a/services/audiomanager/managersource/src/dspeaker_dev.cpp b/services/audiomanager/managersource/src/dspeaker_dev.cpp index 41a0b98f..3a7d1712 100644 --- a/services/audiomanager/managersource/src/dspeaker_dev.cpp +++ b/services/audiomanager/managersource/src/dspeaker_dev.cpp @@ -105,7 +105,7 @@ void DSpeakerDev::OnEngineTransMessage(const std::shared_ptr &me DHLOGE("The parameter is nullptr"); return; } - DHLOGI("On Engine message, type:%d.", message->type_); + DHLOGI("On Engine message, type : %s.", GetEventTypeName(message->type_).c_str()); DAudioSourceManager::GetInstance().HandleDAudioNotify(message->dstDevId_, message->dstDevId_, message->type_, message->content_); } diff --git a/services/audiotransport/receiverengine/src/av_receiver_engine_transport.cpp b/services/audiotransport/receiverengine/src/av_receiver_engine_transport.cpp index 3c512803..feb40bb6 100644 --- a/services/audiotransport/receiverengine/src/av_receiver_engine_transport.cpp +++ b/services/audiotransport/receiverengine/src/av_receiver_engine_transport.cpp @@ -177,7 +177,7 @@ void AVTransReceiverTransport::OnEngineMessage(const std::shared_ptr &buffer) { - DHLOGE("On Engine Data available"); + DHLOGI("On Engine Data available"); if (buffer == nullptr) { DHLOGE("The parameter is nullptr"); return; -- Gitee From 594a0f392827548f33a8b80a468605f40a2e8456 Mon Sep 17 00:00:00 2001 From: byndyx Date: Mon, 6 Nov 2023 20:47:58 +0800 Subject: [PATCH 2/5] optimize some code Signed-off-by: byndyx --- common/src/daudio_util.cpp | 6 +++--- services/audioclient/spkclient/src/dspeaker_client.cpp | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/common/src/daudio_util.cpp b/common/src/daudio_util.cpp index d95a390c..df861522 100644 --- a/common/src/daudio_util.cpp +++ b/common/src/daudio_util.cpp @@ -113,14 +113,14 @@ std::map eventNameMap = { std::make_pair(MMAP_MIC_STOP, "MMAP_MIC_STOP"), std::make_pair(AUDIO_START, "AUDIO_START"), std::make_pair(AUDIO_STOP, "AUDIO_STOP") -} +}; std::string GetEventTypeName(const int32_t eventType) { auto iter = eventNameMap.find(eventType); if (iter == eventNameMap.end()) { - DHLOGE("Can't find matched typename"); - return "EVENT_UNKNOWN"; + DHLOGE("Can't find matched typename"); + return "EVENT_UNKNOWN"; } return iter->second; } diff --git a/services/audioclient/spkclient/src/dspeaker_client.cpp b/services/audioclient/spkclient/src/dspeaker_client.cpp index 9a8bddca..412a5e0c 100644 --- a/services/audioclient/spkclient/src/dspeaker_client.cpp +++ b/services/audioclient/spkclient/src/dspeaker_client.cpp @@ -658,7 +658,7 @@ int32_t DSpeakerClient::SendMessage(uint32_t type, std::string content, std::str void DSpeakerClient::PlayStatusChange(const std::string &args) { - DHLOGD("Play status change, args: %s.", args.c_str()); + DHLOGI("Play status change, args: %s.", args.c_str()); cJSON *jParam = cJSON_Parse(args.c_str()); if (jParam == nullptr) { DHLOGE("Failed to parse JSON: %s", cJSON_GetErrorPtr()); -- Gitee From 6f5be5762d52529f7d2f31b68f8eb17d3d77384d Mon Sep 17 00:00:00 2001 From: byndyx Date: Tue, 7 Nov 2023 11:59:13 +0800 Subject: [PATCH 3/5] optimize some code Signed-off-by: byndyx --- common/include/daudio_util.h | 2 +- common/src/daudio_util.cpp | 4 ++-- services/audioclient/micclient/src/dmic_client.cpp | 2 +- services/audioclient/spkclient/src/dspeaker_client.cpp | 4 ++-- services/audiomanager/managersource/src/dmic_dev.cpp | 2 +- services/audiomanager/managersource/src/dspeaker_dev.cpp | 2 +- 6 files changed, 8 insertions(+), 8 deletions(-) diff --git a/common/include/daudio_util.h b/common/include/daudio_util.h index f5e09247..e7c3a577 100644 --- a/common/include/daudio_util.h +++ b/common/include/daudio_util.h @@ -54,7 +54,7 @@ bool IsOutDurationRange(int64_t startTime, int64_t endTime, int64_t lastStartTim void SaveFile(std::string fileName, uint8_t *audioData, int32_t size); std::string GetCJsonString(const char *key, const char *value); std::string ParseStringFromArgs(std::string args, const char *key); -std::string GetEventTypeName(const int32_t eventType); +std::string GetEventNameByType(const int32_t eventType); template bool GetSysPara(const char *key, T &value); diff --git a/common/src/daudio_util.cpp b/common/src/daudio_util.cpp index df861522..6a85c159 100644 --- a/common/src/daudio_util.cpp +++ b/common/src/daudio_util.cpp @@ -115,11 +115,11 @@ std::map eventNameMap = { std::make_pair(AUDIO_STOP, "AUDIO_STOP") }; -std::string GetEventTypeName(const int32_t eventType) +std::string GetEventNameByType(const int32_t eventType) { auto iter = eventNameMap.find(eventType); if (iter == eventNameMap.end()) { - DHLOGE("Can't find matched typename"); + DHLOGE("Can't find matched eventname"); return "EVENT_UNKNOWN"; } return iter->second; diff --git a/services/audioclient/micclient/src/dmic_client.cpp b/services/audioclient/micclient/src/dmic_client.cpp index 90f48cf8..f1f9045f 100644 --- a/services/audioclient/micclient/src/dmic_client.cpp +++ b/services/audioclient/micclient/src/dmic_client.cpp @@ -54,7 +54,7 @@ void DMicClient::OnEngineTransMessage(const std::shared_ptr &mes DHLOGE("The parameter is nullptr"); return; } - DHLOGI("On Engine message, type : %s.", GetEventTypeName(message->type_).c_str()); + DHLOGI("On Engine message, type : %s.", GetEventNameByType(message->type_).c_str()); DAudioSinkManager::GetInstance().HandleDAudioNotify(message->dstDevId_, message->dstDevId_, static_cast(message->type_), message->content_); } diff --git a/services/audioclient/spkclient/src/dspeaker_client.cpp b/services/audioclient/spkclient/src/dspeaker_client.cpp index 412a5e0c..63bb0c0a 100644 --- a/services/audioclient/spkclient/src/dspeaker_client.cpp +++ b/services/audioclient/spkclient/src/dspeaker_client.cpp @@ -50,7 +50,7 @@ void DSpeakerClient::OnEngineTransMessage(const std::shared_ptr DHLOGE("The parameter is nullptr"); return; } - DHLOGI("On Engine message, type : %s.", GetEventTypeName(message->type_).c_str()); + DHLOGI("On Engine message, type : %s.", GetEventNameByType(message->type_).c_str()); DAudioSinkManager::GetInstance().HandleDAudioNotify(message->dstDevId_, message->dstDevId_, static_cast(message->type_), message->content_); } @@ -665,7 +665,7 @@ void DSpeakerClient::PlayStatusChange(const std::string &args) cJSON_Delete(jParam); return; } - auto changetype = ParseStringFromArgs(args, KEY_CHANGE_TYPE); + std::string changetype = ParseStringFromArgs(args, KEY_CHANGE_TYPE); if (changetype.c_str() == AUDIO_EVENT_RESTART) { ReStart(); } else if (changetype.c_str() == AUDIO_EVENT_PAUSE) { diff --git a/services/audiomanager/managersource/src/dmic_dev.cpp b/services/audiomanager/managersource/src/dmic_dev.cpp index 9bdb61f2..0cba29df 100644 --- a/services/audiomanager/managersource/src/dmic_dev.cpp +++ b/services/audiomanager/managersource/src/dmic_dev.cpp @@ -53,7 +53,7 @@ void DMicDev::OnEngineTransMessage(const std::shared_ptr &messag DHLOGE("The parameter is nullptr"); return; } - DHLOGI("On Engine message, type : %s.", GetEventTypeName(message->type_).c_str()); + DHLOGI("On Engine message, type : %s.", GetEventNameByType(message->type_).c_str()); DAudioSourceManager::GetInstance().HandleDAudioNotify(message->dstDevId_, message->dstDevId_, message->type_, message->content_); } diff --git a/services/audiomanager/managersource/src/dspeaker_dev.cpp b/services/audiomanager/managersource/src/dspeaker_dev.cpp index 3a7d1712..29e407a1 100644 --- a/services/audiomanager/managersource/src/dspeaker_dev.cpp +++ b/services/audiomanager/managersource/src/dspeaker_dev.cpp @@ -105,7 +105,7 @@ void DSpeakerDev::OnEngineTransMessage(const std::shared_ptr &me DHLOGE("The parameter is nullptr"); return; } - DHLOGI("On Engine message, type : %s.", GetEventTypeName(message->type_).c_str()); + DHLOGI("On Engine message, type : %s.", GetEventNameByType(message->type_).c_str()); DAudioSourceManager::GetInstance().HandleDAudioNotify(message->dstDevId_, message->dstDevId_, message->type_, message->content_); } -- Gitee From 54ceeab5d78b3d64876139f26bf7a2c101965b84 Mon Sep 17 00:00:00 2001 From: byndyx Date: Tue, 7 Nov 2023 15:21:30 +0800 Subject: [PATCH 4/5] optimize some code Signed-off-by: byndyx --- common/include/daudio_constants.h | 14 ++++++++ .../spkclient/src/dspeaker_client.cpp | 34 +++++++++---------- 2 files changed, 31 insertions(+), 17 deletions(-) diff --git a/common/include/daudio_constants.h b/common/include/daudio_constants.h index 728b447e..a3346295 100644 --- a/common/include/daudio_constants.h +++ b/common/include/daudio_constants.h @@ -130,6 +130,20 @@ constexpr const char *KEY_STREAM_USAGE = "streamUsage"; constexpr const char *KEY_RENDER_FLAGS = "renderFlags"; constexpr const char *KEY_CAPTURE_FLAGS = "capturerFlags"; +constexpr const char *AUDIO_STREAM_TYPE = "AUDIO_STREAM_TYPE"; +constexpr const char *IS_UPDATEUI = "IS_UPDATEUI"; +constexpr const char *VOLUME_CHANAGE = "VOLUME_CHANAGE"; +constexpr const char *FIRST_VOLUME_CHANAGE = "FIRST_VOLUME_CHANAGE"; +constexpr const char *INTERRUPT_EVENT = "INTERRUPT_EVENT"; +constexpr const char *FORCE_TYPE = "FORCE_TYPE"; +constexpr const char *HINT_TYPE = "HINT_TYPE"; +constexpr const char *RENDER_STATE_CHANGE_EVENT = "RENDER_STATE_CHANGE_EVENT"; +constexpr const char *KEY_STATE = "STATE"; +constexpr const char *MAX_VOLUME_LEVEL = "MAX_VOLUME_LEVEL"; +constexpr const char *MIN_VOLUME_LEVEL = "MIN_VOLUME_LEVEL"; +constexpr const char *VOLUME_GROUP_ID = "VOLUME_GROUP_ID"; +constexpr const char *VOLUME_EVENT_TYPE = "EVENT_TYPE"; + const std::string DUMP_FILE_PATH = "/data/data/daudio"; const std::string AUDIO_PERMISSION_NAME = "ohos.permission.ENABLE_DISTRIBUTED_HARDWARE"; } // namespace DistributedHardware diff --git a/services/audioclient/spkclient/src/dspeaker_client.cpp b/services/audioclient/spkclient/src/dspeaker_client.cpp index 63bb0c0a..37484f82 100644 --- a/services/audioclient/spkclient/src/dspeaker_client.cpp +++ b/services/audioclient/spkclient/src/dspeaker_client.cpp @@ -418,12 +418,12 @@ string DSpeakerClient::GetVolumeLevel() return ""; } cJSON_AddStringToObject(jParam, KEY_DH_ID, std::to_string(dhId_).c_str()); - cJSON_AddStringToObject(jParam, KEY_CHANGE_TYPE, "FIRST_VOLUME_CHANAGE"); - cJSON_AddStringToObject(jParam, "AUDIO_STREAM_TYPE", std::to_string(streamType).c_str()); - cJSON_AddStringToObject(jParam, "VOLUME_LEVEL", std::to_string(volumeLevel).c_str()); - cJSON_AddStringToObject(jParam, "IS_UPDATEUI", std::to_string(isUpdateUi).c_str()); - cJSON_AddStringToObject(jParam, "MAX_VOLUME_LEVEL", std::to_string(maxVolumeLevel).c_str()); - cJSON_AddStringToObject(jParam, "MIN_VOLUME_LEVEL", std::to_string(minVolumeLevel).c_str()); + cJSON_AddStringToObject(jParam, KEY_CHANGE_TYPE, FIRST_VOLUME_CHANAGE); + cJSON_AddStringToObject(jParam, AUDIO_STREAM_TYPE, std::to_string(streamType).c_str()); + cJSON_AddStringToObject(jParam, VOLUME_LEVEL.c_str(), std::to_string(volumeLevel).c_str()); + cJSON_AddStringToObject(jParam, IS_UPDATEUI, std::to_string(isUpdateUi).c_str()); + cJSON_AddStringToObject(jParam, MAX_VOLUME_LEVEL, std::to_string(maxVolumeLevel).c_str()); + cJSON_AddStringToObject(jParam, MIN_VOLUME_LEVEL, std::to_string(minVolumeLevel).c_str()); char *jsonData = cJSON_PrintUnformatted(jParam); if (jsonData == nullptr) { DHLOGE("Failed to create JSON data."); @@ -451,11 +451,11 @@ void DSpeakerClient::OnVolumeKeyEvent(AudioStandard::VolumeEvent volumeEvent) return; } cJSON_AddStringToObject(jParam, KEY_DH_ID, std::to_string(dhId_).c_str()); - cJSON_AddStringToObject(jParam, KEY_CHANGE_TYPE, "VOLUME_CHANAGE"); - cJSON_AddStringToObject(jParam, "AUDIO_STREAM_TYPE", std::to_string(volumeEvent.volumeType).c_str()); - cJSON_AddStringToObject(jParam, "VOLUME_LEVEL", std::to_string(volumeEvent.volume).c_str()); - cJSON_AddStringToObject(jParam, "IS_UPDATEUI", std::to_string(volumeEvent.updateUi).c_str()); - cJSON_AddStringToObject(jParam, "VOLUME_GROUP_ID", std::to_string(volumeEvent.volumeGroupId).c_str()); + cJSON_AddStringToObject(jParam, KEY_CHANGE_TYPE, VOLUME_CHANAGE); + cJSON_AddStringToObject(jParam, AUDIO_STREAM_TYPE, std::to_string(volumeEvent.volumeType).c_str()); + cJSON_AddStringToObject(jParam, VOLUME_LEVEL.c_str(), std::to_string(volumeEvent.volume).c_str()); + cJSON_AddStringToObject(jParam, IS_UPDATEUI, std::to_string(volumeEvent.updateUi).c_str()); + cJSON_AddStringToObject(jParam, VOLUME_GROUP_ID, std::to_string(volumeEvent.volumeGroupId).c_str()); char *jsonData = cJSON_PrintUnformatted(jParam); if (jsonData == nullptr) { DHLOGE("Failed to create JSON data."); @@ -485,10 +485,10 @@ void DSpeakerClient::OnInterrupt(const AudioStandard::InterruptEvent &interruptE return; } cJSON_AddStringToObject(jParam, KEY_DH_ID, std::to_string(dhId_).c_str()); - cJSON_AddStringToObject(jParam, KEY_CHANGE_TYPE, "INTERRUPT_EVENT"); - cJSON_AddStringToObject(jParam, "EVENT_TYPE", std::to_string(interruptEvent.eventType).c_str()); - cJSON_AddStringToObject(jParam, "FORCE_TYPE", std::to_string(interruptEvent.forceType).c_str()); - cJSON_AddStringToObject(jParam, "HINT_TYPE", std::to_string(interruptEvent.hintType).c_str()); + cJSON_AddStringToObject(jParam, KEY_CHANGE_TYPE, INTERRUPT_EVENT); + cJSON_AddStringToObject(jParam, VOLUME_EVENT_TYPE, std::to_string(interruptEvent.eventType).c_str()); + cJSON_AddStringToObject(jParam, FORCE_TYPE, std::to_string(interruptEvent.forceType).c_str()); + cJSON_AddStringToObject(jParam, HINT_TYPE, std::to_string(interruptEvent.hintType).c_str()); char *jsonData = cJSON_PrintUnformatted(jParam); if (jsonData == nullptr) { DHLOGE("Failed to create JSON data."); @@ -519,8 +519,8 @@ void DSpeakerClient::OnStateChange(const AudioStandard::RendererState state, return; } cJSON_AddStringToObject(jParam, KEY_DH_ID, std::to_string(dhId_).c_str()); - cJSON_AddStringToObject(jParam, KEY_CHANGE_TYPE, "RENDER_STATE_CHANGE_EVENT"); - cJSON_AddStringToObject(jParam, "STATE", std::to_string(state).c_str()); + cJSON_AddStringToObject(jParam, KEY_CHANGE_TYPE, RENDER_STATE_CHANGE_EVENT); + cJSON_AddStringToObject(jParam, KEY_STATE, std::to_string(state).c_str()); char *jsonData = cJSON_PrintUnformatted(jParam); if (jsonData == nullptr) { DHLOGE("Failed to create JSON data."); -- Gitee From a78c766fbf19c6ead98c2bb36e80768731f71706 Mon Sep 17 00:00:00 2001 From: byndyx Date: Thu, 9 Nov 2023 14:45:36 +0800 Subject: [PATCH 5/5] optimize some code Signed-off-by: byndyx --- services/audioclient/micclient/src/dmic_client.cpp | 4 ++-- services/audioclient/spkclient/src/dspeaker_client.cpp | 6 +++--- .../audiomanager/managersource/src/daudio_source_dev.cpp | 7 ++++--- .../managersource/src/daudio_source_manager.cpp | 7 ++++++- 4 files changed, 15 insertions(+), 9 deletions(-) diff --git a/services/audioclient/micclient/src/dmic_client.cpp b/services/audioclient/micclient/src/dmic_client.cpp index f1f9045f..4345956b 100644 --- a/services/audioclient/micclient/src/dmic_client.cpp +++ b/services/audioclient/micclient/src/dmic_client.cpp @@ -349,7 +349,7 @@ int32_t DMicClient::StopCapture() { DHLOGI("Stop capturer."); std::lock_guard lck(devMtx_); - if (clientStatus_ != AudioStatus::STATUS_START || !isCaptureReady_.load()) { + if (clientStatus_ != AudioStatus::STATUS_START) { DHLOGE("Capturee is not start or mic status wrong, status: %d.", (int32_t)clientStatus_); DAudioHisysevent::GetInstance().SysEventWriteFault(DAUDIO_OPT_FAIL, ERR_DH_AUDIO_SA_STATUS_ERR, "daudio capturer is not start or mic status wrong."); @@ -363,7 +363,7 @@ int32_t DMicClient::StopCapture() } isBlocking_.store(false); - if (audioParam_.captureOpts.capturerFlags != MMAP_MODE) { + if (audioParam_.captureOpts.capturerFlags != MMAP_MODE && isCaptureReady_.load()) { isCaptureReady_.store(false); if (captureDataThread_.joinable()) { captureDataThread_.join(); diff --git a/services/audioclient/spkclient/src/dspeaker_client.cpp b/services/audioclient/spkclient/src/dspeaker_client.cpp index 37484f82..537d6172 100644 --- a/services/audioclient/spkclient/src/dspeaker_client.cpp +++ b/services/audioclient/spkclient/src/dspeaker_client.cpp @@ -665,10 +665,10 @@ void DSpeakerClient::PlayStatusChange(const std::string &args) cJSON_Delete(jParam); return; } - std::string changetype = ParseStringFromArgs(args, KEY_CHANGE_TYPE); - if (changetype.c_str() == AUDIO_EVENT_RESTART) { + std::string changeType = ParseStringFromArgs(args, KEY_CHANGE_TYPE); + if (changeType == AUDIO_EVENT_RESTART) { ReStart(); - } else if (changetype.c_str() == AUDIO_EVENT_PAUSE) { + } else if (changeType == AUDIO_EVENT_PAUSE) { Pause(); } else { DHLOGE("Play status error."); diff --git a/services/audiomanager/managersource/src/daudio_source_dev.cpp b/services/audiomanager/managersource/src/daudio_source_dev.cpp index 6550a5ef..61887d22 100644 --- a/services/audiomanager/managersource/src/daudio_source_dev.cpp +++ b/services/audiomanager/managersource/src/daudio_source_dev.cpp @@ -662,6 +662,7 @@ int32_t DAudioSourceDev::TaskDisableDAudio(const std::string &args) DHLOGE("Parse dhId error."); return ERR_DH_AUDIO_NOT_SUPPORT; } + DHLOGI("Parsed dhId = %d", dhId); switch (GetDevTypeByDHId(dhId)) { case AUDIO_DEVICE_TYPE_SPEAKER: return DisableDSpeaker(dhId); @@ -1079,14 +1080,14 @@ int32_t DAudioSourceDev::TaskPlayStatusChange(const std::string &args) DHLOGE("The IO device is invaild."); return ERR_DH_AUDIO_NULLPTR; } - auto changetype = ParseStringFromArgs(args, KEY_CHANGE_TYPE); - if (changetype.c_str() == AUDIO_EVENT_RESTART) { + std::string changeType = ParseStringFromArgs(args, KEY_CHANGE_TYPE); + if (changeType == AUDIO_EVENT_RESTART) { ret = speaker->Restart(); if (ret != DH_SUCCESS) { DHLOGE("Speaker restart failed."); } return ret; - } else if (changetype.c_str() == AUDIO_EVENT_PAUSE) { + } else if (changeType == AUDIO_EVENT_PAUSE) { ret = speaker->Pause(); if (ret != DH_SUCCESS) { DHLOGE("Speaker Pause failed."); diff --git a/services/audiomanager/managersource/src/daudio_source_manager.cpp b/services/audiomanager/managersource/src/daudio_source_manager.cpp index f09c00b6..39e97344 100644 --- a/services/audiomanager/managersource/src/daudio_source_manager.cpp +++ b/services/audiomanager/managersource/src/daudio_source_manager.cpp @@ -306,15 +306,17 @@ int32_t DAudioSourceManager::CreateAudioDevice(const std::string &devId) void DAudioSourceManager::DeleteAudioDevice(const std::string &devId, const std::string &dhId) { - DHLOGI("Delete audio device."); + DHLOGI("Delete audio device, devId = %s, dhId = %s.", devId.c_str(), dhId.c_str()); std::lock_guard lock(devMapMtx_); audioDevMap_[devId].ports.erase(dhId); if (!audioDevMap_[devId].ports.empty()) { + DHLOGI("audioDevMap_[devId].ports is not empty"); return; } if (devClearThread_.joinable()) { devClearThread_.join(); } + DHLOGI("audioDevMap_[devId].ports is empty"); devClearThread_ = std::thread(&DAudioSourceManager::ClearAudioDev, this, devId); if (pthread_setname_np(devClearThread_.native_handle(), DEVCLEAR_THREAD) != DH_SUCCESS) { DHLOGE("Dev clear thread setname failed."); @@ -339,9 +341,12 @@ std::string DAudioSourceManager::GetRequestId(const std::string &devId, const st void DAudioSourceManager::ClearAudioDev(const std::string &devId) { + DHLOGI("ClearAudioDev, devId = %s.", devId.c_str()); std::lock_guard lock(devMapMtx_); if (audioDevMap_[devId].ports.empty()) { + DHLOGI("audioDevMap_[devId].ports is empty."); audioDevMap_[devId].dev->SleepAudioDev(); + DHLOGI("back from SleepAudioDev."); audioDevMap_.erase(devId); } } -- Gitee