From 5894ea32e2daa9be0358f26b6966f44b40c8d0ba Mon Sep 17 00:00:00 2001 From: w30042960 Date: Mon, 14 Aug 2023 14:09:50 +0800 Subject: [PATCH 01/35] add listening duration Signed-off-by: w30042960 --- services/audioclient/micclient/include/dmic_client.h | 2 ++ services/audioclient/micclient/src/dmic_client.cpp | 10 ++++++++++ .../audioclient/spkclient/include/dspeaker_client.h | 2 ++ .../audioclient/spkclient/src/dspeaker_client.cpp | 11 ++++++++++- 4 files changed, 24 insertions(+), 1 deletion(-) diff --git a/services/audioclient/micclient/include/dmic_client.h b/services/audioclient/micclient/include/dmic_client.h index edd6190f..4b231e95 100644 --- a/services/audioclient/micclient/include/dmic_client.h +++ b/services/audioclient/micclient/include/dmic_client.h @@ -81,6 +81,8 @@ private: std::weak_ptr eventCallback_; std::unique_ptr audioCapturer_ = nullptr; std::shared_ptr micTrans_ = nullptr; + int64_t lastPlayStartTime_ = 0; + int64_t lastTransStartTime_ = 0; }; } // DistributedHardware } // OHOS diff --git a/services/audioclient/micclient/src/dmic_client.cpp b/services/audioclient/micclient/src/dmic_client.cpp index 533fecf2..e4a23451 100644 --- a/services/audioclient/micclient/src/dmic_client.cpp +++ b/services/audioclient/micclient/src/dmic_client.cpp @@ -231,6 +231,7 @@ void DMicClient::CaptureThreadRunning() std::shared_ptr audioData = std::make_shared(audioParam_.comParam.frameSize); size_t bytesRead = 0; bool errorFlag = false; + int64_t startTime = GetNowTimeUs(); while (bytesRead < audioParam_.comParam.frameSize) { int32_t len = audioCapturer_->Read(*(audioData->Data() + bytesRead), audioParam_.comParam.frameSize - bytesRead, isBlocking_.load()); @@ -240,15 +241,24 @@ void DMicClient::CaptureThreadRunning() errorFlag = true; break; } + int64_t endTime = GetNowTimeUs(); + DHLOGE("This time cost: %lld, This time than the last time spent: %lld", endTime - startTime, + startTime - lastPlayStartTime_); + lastPlayStartTime_ = startTime; } if (errorFlag) { DHLOGE("Bytes read failed."); break; } + int64_t startTransTime = GetNowTimeUs(); int32_t ret = micTrans_->FeedAudioData(audioData); if (ret != DH_SUCCESS) { DHLOGE("Failed to send data."); } + int64_t endTransTime = GetNowTimeUs(); + DHLOGE("This time cost: %lld, This time than the last time spent: %lld", endTransTime - startTransTime, + startTransTime - lastTransStartTime_); + lastTransStartTime_ = startTransTime; } } diff --git a/services/audioclient/spkclient/include/dspeaker_client.h b/services/audioclient/spkclient/include/dspeaker_client.h index c213c0ac..b426152e 100644 --- a/services/audioclient/spkclient/include/dspeaker_client.h +++ b/services/audioclient/spkclient/include/dspeaker_client.h @@ -107,6 +107,8 @@ private: std::unique_ptr audioRenderer_ = nullptr; std::shared_ptr speakerTrans_ = nullptr; std::weak_ptr eventCallback_; + int64_t lastPlayStartTime_ = 0; + int64_t lastTransStartTime_ = 0; }; } // DistributedHardware } // OHOS diff --git a/services/audioclient/spkclient/src/dspeaker_client.cpp b/services/audioclient/spkclient/src/dspeaker_client.cpp index 2a2aa376..a6621c76 100644 --- a/services/audioclient/spkclient/src/dspeaker_client.cpp +++ b/services/audioclient/spkclient/src/dspeaker_client.cpp @@ -289,7 +289,7 @@ void DSpeakerClient::PlayThreadRunning() dataQueue_.pop(); DHLOGD("Pop spk data, dataqueue size: %d.", dataQueue_.size()); } - + int64_t startTime = GetNowTimeUs(); int32_t writeOffSet = 0; while (writeOffSet < static_cast(audioData->Capacity())) { int32_t writeLen = audioRenderer_->Write(audioData->Data() + writeOffSet, @@ -301,6 +301,10 @@ void DSpeakerClient::PlayThreadRunning() } writeOffSet += writeLen; } + int64_t endTime = GetNowTimeUs(); + DHLOGE("This time cost: %lld, This time than the last time spent: %lld", endTime - startTime, + startTime - lastPlayStartTime_); + lastPlayStartTime_ = startTime; } } @@ -333,6 +337,7 @@ void DSpeakerClient::FlushJitterQueue() int32_t DSpeakerClient::OnDecodeTransDataDone(const std::shared_ptr &audioData) { DHLOGI("Write stream buffer."); + int64_t startTime = GetNowTimeUs(); if (audioData == nullptr) { DHLOGE("The parameter is empty."); return ERR_DH_AUDIO_CLIENT_PARAM_IS_NULL; @@ -345,6 +350,10 @@ int32_t DSpeakerClient::OnDecodeTransDataDone(const std::shared_ptr & dataQueue_.push(audioData); dataQueueCond_.notify_all(); DHLOGI("Push new spk data, buf len: %d.", dataQueue_.size()); + int64_t endTime = GetNowTimeUs(); + DHLOGE("This time cost: %lld, This time than the last time spent: %lld", endTime - startTime, + startTime - lastTransStartTime_); + lastTransStartTime_ = startTime; return DH_SUCCESS; } -- Gitee From d101cbe469cbfeadfb6f6e12b171b0859270ef77 Mon Sep 17 00:00:00 2001 From: w30042960 Date: Mon, 14 Aug 2023 15:31:51 +0800 Subject: [PATCH 02/35] add listening duration Signed-off-by: w30042960 --- services/audioclient/micclient/src/dmic_client.cpp | 4 ++-- services/audioclient/spkclient/src/dspeaker_client.cpp | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/services/audioclient/micclient/src/dmic_client.cpp b/services/audioclient/micclient/src/dmic_client.cpp index e4a23451..19b193b6 100644 --- a/services/audioclient/micclient/src/dmic_client.cpp +++ b/services/audioclient/micclient/src/dmic_client.cpp @@ -242,7 +242,7 @@ void DMicClient::CaptureThreadRunning() break; } int64_t endTime = GetNowTimeUs(); - DHLOGE("This time cost: %lld, This time than the last time spent: %lld", endTime - startTime, + DHLOGD("This time cost: %lld, This time than the last time spent: %lld", endTime - startTime, startTime - lastPlayStartTime_); lastPlayStartTime_ = startTime; } @@ -256,7 +256,7 @@ void DMicClient::CaptureThreadRunning() DHLOGE("Failed to send data."); } int64_t endTransTime = GetNowTimeUs(); - DHLOGE("This time cost: %lld, This time than the last time spent: %lld", endTransTime - startTransTime, + DHLOGD("This time cost: %lld, This time than the last time spent: %lld", endTransTime - startTransTime, startTransTime - lastTransStartTime_); lastTransStartTime_ = startTransTime; } diff --git a/services/audioclient/spkclient/src/dspeaker_client.cpp b/services/audioclient/spkclient/src/dspeaker_client.cpp index a6621c76..d91c89cf 100644 --- a/services/audioclient/spkclient/src/dspeaker_client.cpp +++ b/services/audioclient/spkclient/src/dspeaker_client.cpp @@ -302,7 +302,7 @@ void DSpeakerClient::PlayThreadRunning() writeOffSet += writeLen; } int64_t endTime = GetNowTimeUs(); - DHLOGE("This time cost: %lld, This time than the last time spent: %lld", endTime - startTime, + DHLOGD("This time cost: %lld, This time than the last time spent: %lld", endTime - startTime, startTime - lastPlayStartTime_); lastPlayStartTime_ = startTime; } @@ -351,7 +351,7 @@ int32_t DSpeakerClient::OnDecodeTransDataDone(const std::shared_ptr & dataQueueCond_.notify_all(); DHLOGI("Push new spk data, buf len: %d.", dataQueue_.size()); int64_t endTime = GetNowTimeUs(); - DHLOGE("This time cost: %lld, This time than the last time spent: %lld", endTime - startTime, + DHLOGD("This time cost: %lld, This time than the last time spent: %lld", endTime - startTime, startTime - lastTransStartTime_); lastTransStartTime_ = startTime; return DH_SUCCESS; -- Gitee From e6bb5ee21555c96b121f6c7977703cb96232c0ba Mon Sep 17 00:00:00 2001 From: w30042960 Date: Tue, 15 Aug 2023 22:32:30 +0800 Subject: [PATCH 03/35] add listening duration Signed-off-by: w30042960 --- .../v1_0/include/audio_capture_interface_impl.h | 1 + .../audio/v1_0/include/audio_render_interface_impl.h | 1 + .../audio/v1_0/src/audio_capture_interface_impl.cpp | 5 +++++ .../audio/v1_0/src/audio_render_interface_impl.cpp | 5 +++++ .../hdi_service/common/utils/include/daudio_utils.h | 3 +++ .../hdi_service/common/utils/src/daudio_utils.cpp | 7 +++++++ services/audioclient/micclient/include/dmic_client.h | 2 +- services/audioclient/micclient/src/dmic_client.cpp | 10 +++++----- .../audioclient/spkclient/include/dspeaker_client.h | 2 +- .../audioclient/spkclient/src/dspeaker_client.cpp | 12 ++++++------ .../audiomanager/managersource/include/dmic_dev.h | 1 + .../managersource/include/dspeaker_dev.h | 1 + services/audiomanager/managersource/src/dmic_dev.cpp | 5 +++++ .../audiomanager/managersource/src/dspeaker_dev.cpp | 5 +++++ 14 files changed, 47 insertions(+), 13 deletions(-) diff --git a/hdf_service/distributed_audio/hdi_service/audio/v1_0/include/audio_capture_interface_impl.h b/hdf_service/distributed_audio/hdi_service/audio/v1_0/include/audio_capture_interface_impl.h index e11c2a8a..9ad7c84b 100644 --- a/hdf_service/distributed_audio/hdi_service/audio/v1_0/include/audio_capture_interface_impl.h +++ b/hdf_service/distributed_audio/hdi_service/audio/v1_0/include/audio_capture_interface_impl.h @@ -85,6 +85,7 @@ private: int64_t frameIndex_ = 0; int64_t framePeriodNs_ = 0; int64_t startTime_ = 0; + int64_t lastCaptureFrameStartTime_ = 0; std::mutex captureMtx_; AudioCaptureStatus captureStatus_ = CAPTURE_STATUS_CLOSE; diff --git a/hdf_service/distributed_audio/hdi_service/audio/v1_0/include/audio_render_interface_impl.h b/hdf_service/distributed_audio/hdi_service/audio/v1_0/include/audio_render_interface_impl.h index 48b282ee..df3ed23f 100644 --- a/hdf_service/distributed_audio/hdi_service/audio/v1_0/include/audio_render_interface_impl.h +++ b/hdf_service/distributed_audio/hdi_service/audio/v1_0/include/audio_render_interface_impl.h @@ -115,6 +115,7 @@ private: uint32_t volMin_ = 0; int64_t frameIndex_ = 0; float renderSpeed_ = 0; + int64_t lastRenderFrameStartTime_ = 0; AudioChannelMode channelMode_ = AUDIO_CHANNEL_NORMAL; AudioRenderStatus renderStatus_ = RENDER_STATUS_CLOSE; sptr audioExtCallback_ = nullptr; diff --git a/hdf_service/distributed_audio/hdi_service/audio/v1_0/src/audio_capture_interface_impl.cpp b/hdf_service/distributed_audio/hdi_service/audio/v1_0/src/audio_capture_interface_impl.cpp index 39b830a3..c9e1cb1a 100644 --- a/hdf_service/distributed_audio/hdi_service/audio/v1_0/src/audio_capture_interface_impl.cpp +++ b/hdf_service/distributed_audio/hdi_service/audio/v1_0/src/audio_capture_interface_impl.cpp @@ -67,6 +67,7 @@ int32_t AudioCaptureInterfaceImpl::CaptureFrame(std::vector &frame, uint int64_t timeOffset = UpdateTimeOffset(frameIndex_, framePeriodNs_, startTime_); DHLOGD("Capture framIndex: %lld, timeOffset: %lld.", frameIndex_, timeOffset); + int64_t startTime = GetNowTimeUs(); std::lock_guard captureLck(captureMtx_); if (captureStatus_ != CAPTURE_STATUS_START) { DHLOGE("Capture status wrong, return false."); @@ -93,6 +94,10 @@ int32_t AudioCaptureInterfaceImpl::CaptureFrame(std::vector &frame, uint ++frameIndex_; AbsoluteSleep(startTime_ + frameIndex_ * framePeriodNs_ - timeOffset); DHLOGD("Capture audio frame success."); + int64_t endTime = GetNowTimeUs(); + DHLOGD("This time capture frame spend: %lld, The interval between this capture frame time and the last time: %lld", + endTime - startTime, startTime - lastCaptureFrameStartTime_); + lastCaptureFrameStartTime_ = startTime; return HDF_SUCCESS; } diff --git a/hdf_service/distributed_audio/hdi_service/audio/v1_0/src/audio_render_interface_impl.cpp b/hdf_service/distributed_audio/hdi_service/audio/v1_0/src/audio_render_interface_impl.cpp index 686196cb..e6f94001 100644 --- a/hdf_service/distributed_audio/hdi_service/audio/v1_0/src/audio_render_interface_impl.cpp +++ b/hdf_service/distributed_audio/hdi_service/audio/v1_0/src/audio_render_interface_impl.cpp @@ -92,6 +92,7 @@ int32_t AudioRenderInterfaceImpl::RenderFrame(const std::vector &frame, devAttrs_.channelCount, devAttrs_.format, devAttrs_.frameSize); DHLOGD("Render frameIndex: %lld.", frameIndex_); + int64_t startTime = GetNowTimeUs(); std::lock_guard renderLck(renderMtx_); if (renderStatus_ != RENDER_STATUS_START) { DHLOGE("Render status wrong, return false."); @@ -113,6 +114,10 @@ int32_t AudioRenderInterfaceImpl::RenderFrame(const std::vector &frame, ++frameIndex_; DHLOGD("Render audio frame success."); + int64_t endTime = GetNowTimeUs(); + DHLOGD("This time render frame spend: %lld, The time interval of render frame this time and the last time: %lld", + endTime - startTime, startTime - lastRenderFrameStartTime_); + lastRenderFrameStartTime_ = startTime; return HDF_SUCCESS; } diff --git a/hdf_service/distributed_audio/hdi_service/common/utils/include/daudio_utils.h b/hdf_service/distributed_audio/hdi_service/common/utils/include/daudio_utils.h index 538b9130..b9b44ba8 100644 --- a/hdf_service/distributed_audio/hdi_service/common/utils/include/daudio_utils.h +++ b/hdf_service/distributed_audio/hdi_service/common/utils/include/daudio_utils.h @@ -17,6 +17,7 @@ #define OHOS_DAUDIO_UTILS_H #include +#include #define AUDIO_MS_PER_SECOND 1000 #define AUDIO_US_PER_SECOND 1000000 @@ -37,6 +38,8 @@ int32_t SetAudioParamStr(std::string ¶ms, const std::string &key, const std: int32_t GetDevTypeByDHId(int32_t dhId); +int64_t GetNowTimeUs(); + uint32_t CalculateFrameSize(uint32_t sampleRate, uint32_t channelCount, int32_t format, uint32_t timeInterval, bool isMMAP); diff --git a/hdf_service/distributed_audio/hdi_service/common/utils/src/daudio_utils.cpp b/hdf_service/distributed_audio/hdi_service/common/utils/src/daudio_utils.cpp index 0ab0bb45..ecc29ab3 100644 --- a/hdf_service/distributed_audio/hdi_service/common/utils/src/daudio_utils.cpp +++ b/hdf_service/distributed_audio/hdi_service/common/utils/src/daudio_utils.cpp @@ -105,6 +105,13 @@ int32_t GetDevTypeByDHId(int32_t dhId) return AUDIO_DEVICE_TYPE_UNKNOWN; } +int64_t GetNowTimeUs() +{ + std::chrono::microseconds nowUs = + std::chrono::duration_cast(std::chrono::system_clock::now().time_since_epoch()); + return nowUs.count(); +} + uint32_t CalculateFrameSize(uint32_t sampleRate, uint32_t channelCount, int32_t format, uint32_t timeInterval, bool isMMAP) { diff --git a/services/audioclient/micclient/include/dmic_client.h b/services/audioclient/micclient/include/dmic_client.h index 4b231e95..d3a0dd0c 100644 --- a/services/audioclient/micclient/include/dmic_client.h +++ b/services/audioclient/micclient/include/dmic_client.h @@ -81,7 +81,7 @@ private: std::weak_ptr eventCallback_; std::unique_ptr audioCapturer_ = nullptr; std::shared_ptr micTrans_ = nullptr; - int64_t lastPlayStartTime_ = 0; + int64_t lastCaptureStartTime_ = 0; int64_t lastTransStartTime_ = 0; }; } // DistributedHardware diff --git a/services/audioclient/micclient/src/dmic_client.cpp b/services/audioclient/micclient/src/dmic_client.cpp index 19b193b6..2b982266 100644 --- a/services/audioclient/micclient/src/dmic_client.cpp +++ b/services/audioclient/micclient/src/dmic_client.cpp @@ -242,9 +242,9 @@ void DMicClient::CaptureThreadRunning() break; } int64_t endTime = GetNowTimeUs(); - DHLOGD("This time cost: %lld, This time than the last time spent: %lld", endTime - startTime, - startTime - lastPlayStartTime_); - lastPlayStartTime_ = startTime; + DHLOGD("This time capture spend: %lld, The time interval of capture this time and the last time: %lld", + endTime - startTime, startTime - lastCaptureStartTime_); + lastCaptureStartTime_ = startTime; } if (errorFlag) { DHLOGE("Bytes read failed."); @@ -256,8 +256,8 @@ void DMicClient::CaptureThreadRunning() DHLOGE("Failed to send data."); } int64_t endTransTime = GetNowTimeUs(); - DHLOGD("This time cost: %lld, This time than the last time spent: %lld", endTransTime - startTransTime, - startTransTime - lastTransStartTime_); + DHLOGD("This time send data spend: %lld, The time interval of send data this time and the last time: %lld", + endTransTime - startTransTime, startTransTime - lastTransStartTime_); lastTransStartTime_ = startTransTime; } } diff --git a/services/audioclient/spkclient/include/dspeaker_client.h b/services/audioclient/spkclient/include/dspeaker_client.h index b426152e..e2f1c68e 100644 --- a/services/audioclient/spkclient/include/dspeaker_client.h +++ b/services/audioclient/spkclient/include/dspeaker_client.h @@ -108,7 +108,7 @@ private: std::shared_ptr speakerTrans_ = nullptr; std::weak_ptr eventCallback_; int64_t lastPlayStartTime_ = 0; - int64_t lastTransStartTime_ = 0; + int64_t lastReceiveDataStartTime_ = 0; }; } // DistributedHardware } // OHOS diff --git a/services/audioclient/spkclient/src/dspeaker_client.cpp b/services/audioclient/spkclient/src/dspeaker_client.cpp index d91c89cf..b4aafcac 100644 --- a/services/audioclient/spkclient/src/dspeaker_client.cpp +++ b/services/audioclient/spkclient/src/dspeaker_client.cpp @@ -277,6 +277,7 @@ void DSpeakerClient::PlayThreadRunning() FillJitterQueue(); while (audioRenderer_ != nullptr && isRenderReady_.load()) { + int64_t startTime = GetNowTimeUs(); std::shared_ptr audioData = nullptr; { std::unique_lock spkLck(dataQueueMtx_); @@ -289,7 +290,6 @@ void DSpeakerClient::PlayThreadRunning() dataQueue_.pop(); DHLOGD("Pop spk data, dataqueue size: %d.", dataQueue_.size()); } - int64_t startTime = GetNowTimeUs(); int32_t writeOffSet = 0; while (writeOffSet < static_cast(audioData->Capacity())) { int32_t writeLen = audioRenderer_->Write(audioData->Data() + writeOffSet, @@ -302,8 +302,8 @@ void DSpeakerClient::PlayThreadRunning() writeOffSet += writeLen; } int64_t endTime = GetNowTimeUs(); - DHLOGD("This time cost: %lld, This time than the last time spent: %lld", endTime - startTime, - startTime - lastPlayStartTime_); + DHLOGD("This time play spend: %lld, The time interval of play this time and the last time: %lld", + endTime - startTime, startTime - lastPlayStartTime_); lastPlayStartTime_ = startTime; } } @@ -351,9 +351,9 @@ int32_t DSpeakerClient::OnDecodeTransDataDone(const std::shared_ptr & dataQueueCond_.notify_all(); DHLOGI("Push new spk data, buf len: %d.", dataQueue_.size()); int64_t endTime = GetNowTimeUs(); - DHLOGD("This time cost: %lld, This time than the last time spent: %lld", endTime - startTime, - startTime - lastTransStartTime_); - lastTransStartTime_ = startTime; + DHLOGD("This time receivce data spend: %lld, The time interval of receivce data this time and the last time: %lld", + endTime - startTime, startTime - lastReceiveDataStartTime_); + lastReceiveDataStartTime_ = startTime; return DH_SUCCESS; } diff --git a/services/audiomanager/managersource/include/dmic_dev.h b/services/audiomanager/managersource/include/dmic_dev.h index de80fdaa..254d1c7a 100644 --- a/services/audiomanager/managersource/include/dmic_dev.h +++ b/services/audiomanager/managersource/include/dmic_dev.h @@ -122,6 +122,7 @@ private: uint64_t writeNum_ = 0; int64_t writeTvSec_ = 0; int64_t writeTvNSec_ = 0; + int64_t lastReadStartTime_ = 0; std::thread enqueueDataThread_; std::mutex writeAshmemMutex_; std::condition_variable dataQueueCond_; diff --git a/services/audiomanager/managersource/include/dspeaker_dev.h b/services/audiomanager/managersource/include/dspeaker_dev.h index ef64da75..2c5472b9 100644 --- a/services/audiomanager/managersource/include/dspeaker_dev.h +++ b/services/audiomanager/managersource/include/dspeaker_dev.h @@ -111,6 +111,7 @@ private: int64_t readTvSec_ = 0; int64_t readTvNSec_ = 0; std::thread enqueueDataThread_; + int64_t lastwriteStartTime_ = 0; }; } // DistributedHardware } // OHOS diff --git a/services/audiomanager/managersource/src/dmic_dev.cpp b/services/audiomanager/managersource/src/dmic_dev.cpp index d7a3f941..a2ac9b1f 100644 --- a/services/audiomanager/managersource/src/dmic_dev.cpp +++ b/services/audiomanager/managersource/src/dmic_dev.cpp @@ -320,6 +320,7 @@ int32_t DMicDev::WriteStreamData(const std::string& devId, const int32_t dhId, s int32_t DMicDev::ReadStreamData(const std::string &devId, const int32_t dhId, std::shared_ptr &data) { + int64_t startTime = GetNowTimeUs(); if (curStatus_ != AudioStatus::STATUS_START) { DHLOGE("Distributed audio is not starting status."); return ERR_DH_AUDIO_FAILED; @@ -340,6 +341,10 @@ int32_t DMicDev::ReadStreamData(const std::string &devId, const int32_t dhId, st data = dataQueue_.front(); dataQueue_.pop(); } + int64_t endTime = GetNowTimeUs(); + DHLOGD("This time read data spend: %lld, The time interval of read data this time and the last time: %lld", + endTime - startTime, startTime - lastReadStartTime_); + lastReadStartTime_ = startTime; return DH_SUCCESS; } diff --git a/services/audiomanager/managersource/src/dspeaker_dev.cpp b/services/audiomanager/managersource/src/dspeaker_dev.cpp index 0d02db95..e085fb9c 100644 --- a/services/audiomanager/managersource/src/dspeaker_dev.cpp +++ b/services/audiomanager/managersource/src/dspeaker_dev.cpp @@ -339,6 +339,7 @@ int32_t DSpeakerDev::ReadStreamData(const std::string &devId, const int32_t dhId int32_t DSpeakerDev::WriteStreamData(const std::string &devId, const int32_t dhId, std::shared_ptr &data) { DHLOGD("Write stream data, dhId:%d", dhId); + int64_t startTime = GetNowTimeUs(); if (speakerTrans_ == nullptr) { DHLOGE("Write stream data, speaker trans is null."); return ERR_DH_AUDIO_SA_SPEAKER_TRANS_NULL; @@ -348,6 +349,10 @@ int32_t DSpeakerDev::WriteStreamData(const std::string &devId, const int32_t dhI DHLOGE("Write stream data failed, ret: %d.", ret); return ret; } + int64_t endTime = GetNowTimeUs(); + DHLOGD("This time write data spend: %lld, The time interval of write data this time and the last time: %lld", + endTime - startTime, startTime - lastwriteStartTime_); + lastwriteStartTime_ = startTime; return DH_SUCCESS; } -- Gitee From 9694ae7c0ae0005238d3c3bab7eb0f51028c15a6 Mon Sep 17 00:00:00 2001 From: w30042960 Date: Tue, 15 Aug 2023 22:54:09 +0800 Subject: [PATCH 04/35] add listening duration Signed-off-by: w30042960 --- .../hdi_service/common/utils/include/daudio_utils.h | 1 - 1 file changed, 1 deletion(-) diff --git a/hdf_service/distributed_audio/hdi_service/common/utils/include/daudio_utils.h b/hdf_service/distributed_audio/hdi_service/common/utils/include/daudio_utils.h index b9b44ba8..7778be8d 100644 --- a/hdf_service/distributed_audio/hdi_service/common/utils/include/daudio_utils.h +++ b/hdf_service/distributed_audio/hdi_service/common/utils/include/daudio_utils.h @@ -17,7 +17,6 @@ #define OHOS_DAUDIO_UTILS_H #include -#include #define AUDIO_MS_PER_SECOND 1000 #define AUDIO_US_PER_SECOND 1000000 -- Gitee From 541c70a0e8b75908ea83a0f4aa8cf858d1157c4b Mon Sep 17 00:00:00 2001 From: w30042960 Date: Wed, 16 Aug 2023 11:47:24 +0800 Subject: [PATCH 05/35] modify interval Signed-off-by: w30042960 --- common/include/daudio_constants.h | 1 + .../v1_0/src/audio_capture_interface_impl.cpp | 8 ++++++-- .../v1_0/src/audio_render_interface_impl.cpp | 7 +++++-- .../common/include/daudio_constants.h | 1 + .../audioclient/micclient/src/dmic_client.cpp | 16 ++++++++++++---- .../spkclient/src/dspeaker_client.cpp | 16 ++++++++++++---- .../audiomanager/managersource/src/dmic_dev.cpp | 8 ++++++-- .../managersource/src/dspeaker_dev.cpp | 8 ++++++-- 8 files changed, 49 insertions(+), 16 deletions(-) diff --git a/common/include/daudio_constants.h b/common/include/daudio_constants.h index 4c06b3d5..0eee4b2f 100644 --- a/common/include/daudio_constants.h +++ b/common/include/daudio_constants.h @@ -68,6 +68,7 @@ constexpr uint32_t DAUDIO_MAX_JSON_LEN = 1024; static constexpr int64_t AUDIO_OFFSET_FRAME_NUM = 10; static constexpr int64_t LOW_LATENCY_INTERVAL_NS = 5000000; static constexpr int64_t LOW_LATENCY_CLIENT_INTERVAL_NS = 20000000; +static constexpr int64_t MAX_TIME_INTERVAL_US = 23000; const std::string DAUDIO_LOG_TITLE_TAG = "DAUDIO"; const std::string DAUDIO_PREFIX = "DISTRIBUTED_AUDIO"; diff --git a/hdf_service/distributed_audio/hdi_service/audio/v1_0/src/audio_capture_interface_impl.cpp b/hdf_service/distributed_audio/hdi_service/audio/v1_0/src/audio_capture_interface_impl.cpp index c9e1cb1a..39b89c50 100644 --- a/hdf_service/distributed_audio/hdi_service/audio/v1_0/src/audio_capture_interface_impl.cpp +++ b/hdf_service/distributed_audio/hdi_service/audio/v1_0/src/audio_capture_interface_impl.cpp @@ -95,8 +95,12 @@ int32_t AudioCaptureInterfaceImpl::CaptureFrame(std::vector &frame, uint AbsoluteSleep(startTime_ + frameIndex_ * framePeriodNs_ - timeOffset); DHLOGD("Capture audio frame success."); int64_t endTime = GetNowTimeUs(); - DHLOGD("This time capture frame spend: %lld, The interval between this capture frame time and the last time: %lld", - endTime - startTime, startTime - lastCaptureFrameStartTime_); + int64_t currentInterval = endTime - startTime; + int64_t twoInterval = startTime - lastCaptureFrameStartTime_; + if (currentInterval > MAX_TIME_INTERVAL_US || twoInterval > MAX_TIME_INTERVAL_US) { + DHLOGD("This time capture frame spend: %lld, The interval of this capture frame time and the last time: %lld", + currentInterval, twoInterval); + } lastCaptureFrameStartTime_ = startTime; return HDF_SUCCESS; } diff --git a/hdf_service/distributed_audio/hdi_service/audio/v1_0/src/audio_render_interface_impl.cpp b/hdf_service/distributed_audio/hdi_service/audio/v1_0/src/audio_render_interface_impl.cpp index e6f94001..2f1b53c9 100644 --- a/hdf_service/distributed_audio/hdi_service/audio/v1_0/src/audio_render_interface_impl.cpp +++ b/hdf_service/distributed_audio/hdi_service/audio/v1_0/src/audio_render_interface_impl.cpp @@ -115,8 +115,11 @@ int32_t AudioRenderInterfaceImpl::RenderFrame(const std::vector &frame, ++frameIndex_; DHLOGD("Render audio frame success."); int64_t endTime = GetNowTimeUs(); - DHLOGD("This time render frame spend: %lld, The time interval of render frame this time and the last time: %lld", - endTime - startTime, startTime - lastRenderFrameStartTime_); + int64_t currentInterval = endTime - startTime; + int64_t twoInterval = startTime - lastRenderFrameStartTime_; + if (currentInterval > MAX_TIME_INTERVAL_US || twoInterval > MAX_TIME_INTERVAL_US) { + DHLOGE("This time render frame spend: %lld, The interval of render frame this time and the last time: %lld", + currentInterval, twoInterval); lastRenderFrameStartTime_ = startTime; return HDF_SUCCESS; } diff --git a/hdf_service/distributed_audio/hdi_service/common/include/daudio_constants.h b/hdf_service/distributed_audio/hdi_service/common/include/daudio_constants.h index 56ef2fb6..4a669ed7 100644 --- a/hdf_service/distributed_audio/hdi_service/common/include/daudio_constants.h +++ b/hdf_service/distributed_audio/hdi_service/common/include/daudio_constants.h @@ -67,6 +67,7 @@ constexpr uint32_t AUDIO_FORMAT_DEFAULT = 16; constexpr int32_t MILLISECOND_PER_SECOND = 1000; constexpr uint32_t DEFAULT_AUDIO_DATA_SIZE = 4096; constexpr int64_t AUDIO_OFFSET_FRAME_NUM = 10; +constexpr int64_t MAX_TIME_INTERVAL_US = 23000; constexpr uint32_t AUDIO_DEFAULT_MAX_VOLUME_LEVEL = 15; constexpr uint32_t AUDIO_DEFAULT_MIN_VOLUME_LEVEL = 0; diff --git a/services/audioclient/micclient/src/dmic_client.cpp b/services/audioclient/micclient/src/dmic_client.cpp index 2b982266..347736d0 100644 --- a/services/audioclient/micclient/src/dmic_client.cpp +++ b/services/audioclient/micclient/src/dmic_client.cpp @@ -242,8 +242,12 @@ void DMicClient::CaptureThreadRunning() break; } int64_t endTime = GetNowTimeUs(); - DHLOGD("This time capture spend: %lld, The time interval of capture this time and the last time: %lld", - endTime - startTime, startTime - lastCaptureStartTime_); + int64_t currentInterval = endTime - startTime; + int64_t twoInterval = startTime - lastCaptureStartTime_; + if (currentInterval > MAX_TIME_INTERVAL_US || twoInterval > MAX_TIME_INTERVAL_US) { + DHLOGE("This time capture spend: %lld, The interval of capture this time and the last time: %lld", + currentInterval, twoInterval); + } lastCaptureStartTime_ = startTime; } if (errorFlag) { @@ -256,8 +260,12 @@ void DMicClient::CaptureThreadRunning() DHLOGE("Failed to send data."); } int64_t endTransTime = GetNowTimeUs(); - DHLOGD("This time send data spend: %lld, The time interval of send data this time and the last time: %lld", - endTransTime - startTransTime, startTransTime - lastTransStartTime_); + int64_t currentInterval = endTransTime - startTransTime; + int64_t twoInterval = startTransTime - lastTransStartTime_; + if (currentInterval > MAX_TIME_INTERVAL_US || twoInterval > MAX_TIME_INTERVAL_US) { + DHLOGE("This time send data spend: %lld, The interval of send data this time and the last time: %lld", + currentInterval, twoInterval); + } lastTransStartTime_ = startTransTime; } } diff --git a/services/audioclient/spkclient/src/dspeaker_client.cpp b/services/audioclient/spkclient/src/dspeaker_client.cpp index b4aafcac..e31fd2f5 100644 --- a/services/audioclient/spkclient/src/dspeaker_client.cpp +++ b/services/audioclient/spkclient/src/dspeaker_client.cpp @@ -302,8 +302,12 @@ void DSpeakerClient::PlayThreadRunning() writeOffSet += writeLen; } int64_t endTime = GetNowTimeUs(); - DHLOGD("This time play spend: %lld, The time interval of play this time and the last time: %lld", - endTime - startTime, startTime - lastPlayStartTime_); + int64_t currentInterval = endTime - startTime; + int64_t twoInterval = startTime - lastPlayStartTime_; + if (currentInterval > MAX_TIME_INTERVAL_US || twoInterval > MAX_TIME_INTERVAL_US) { + DHLOGE("This time play spend: %lld, The interval of play this time and the last time: %lld", + currentInterval, twoInterval); + } lastPlayStartTime_ = startTime; } } @@ -351,8 +355,12 @@ int32_t DSpeakerClient::OnDecodeTransDataDone(const std::shared_ptr & dataQueueCond_.notify_all(); DHLOGI("Push new spk data, buf len: %d.", dataQueue_.size()); int64_t endTime = GetNowTimeUs(); - DHLOGD("This time receivce data spend: %lld, The time interval of receivce data this time and the last time: %lld", - endTime - startTime, startTime - lastReceiveDataStartTime_); + int64_t currentInterval = endTime - startTime; + int64_t twoInterval = startTime - lastReceiveDataStartTime_; + if (currentInterval > MAX_TIME_INTERVAL_US || twoInterval > MAX_TIME_INTERVAL_US) { + DHLOGE("This time receivce data spend: %lld, The interval of receivce data this time and the last time: %lld", + currentInterval, twoInterval); + } lastReceiveDataStartTime_ = startTime; return DH_SUCCESS; } diff --git a/services/audiomanager/managersource/src/dmic_dev.cpp b/services/audiomanager/managersource/src/dmic_dev.cpp index a2ac9b1f..ed440fe8 100644 --- a/services/audiomanager/managersource/src/dmic_dev.cpp +++ b/services/audiomanager/managersource/src/dmic_dev.cpp @@ -342,8 +342,12 @@ int32_t DMicDev::ReadStreamData(const std::string &devId, const int32_t dhId, st dataQueue_.pop(); } int64_t endTime = GetNowTimeUs(); - DHLOGD("This time read data spend: %lld, The time interval of read data this time and the last time: %lld", - endTime - startTime, startTime - lastReadStartTime_); + int64_t currentInterval = endTime - startTime; + int64_t twoInterval = startTime - lastReadStartTime_; + if (currentInterval > MAX_TIME_INTERVAL_US || twoInterval > MAX_TIME_INTERVAL_US) { + DHLOGE("This time read data spend: %lld, The interval of read data this time and the last time: %lld", + currentInterval, twoInterval); + } lastReadStartTime_ = startTime; return DH_SUCCESS; } diff --git a/services/audiomanager/managersource/src/dspeaker_dev.cpp b/services/audiomanager/managersource/src/dspeaker_dev.cpp index e085fb9c..92dd0ddc 100644 --- a/services/audiomanager/managersource/src/dspeaker_dev.cpp +++ b/services/audiomanager/managersource/src/dspeaker_dev.cpp @@ -350,8 +350,12 @@ int32_t DSpeakerDev::WriteStreamData(const std::string &devId, const int32_t dhI return ret; } int64_t endTime = GetNowTimeUs(); - DHLOGD("This time write data spend: %lld, The time interval of write data this time and the last time: %lld", - endTime - startTime, startTime - lastwriteStartTime_); + int64_t currentInterval = endTime - startTime; + int64_t twoInterval = startTime - lastwriteStartTime_; + if (currentInterval > MAX_TIME_INTERVAL_US || twoInterval > MAX_TIME_INTERVAL_US) { + DHLOGE("This time write data spend: %lld, The interval of write data this time and the last time: %lld", + currentInterval, twoInterval); + } lastwriteStartTime_ = startTime; return DH_SUCCESS; } -- Gitee From e0ad120ee3f2dbba01c83d8633f038ddac9b9896 Mon Sep 17 00:00:00 2001 From: w30042960 Date: Wed, 16 Aug 2023 12:28:39 +0800 Subject: [PATCH 06/35] modify interval Signed-off-by: w30042960 --- .../hdi_service/audio/v1_0/src/audio_render_interface_impl.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/hdf_service/distributed_audio/hdi_service/audio/v1_0/src/audio_render_interface_impl.cpp b/hdf_service/distributed_audio/hdi_service/audio/v1_0/src/audio_render_interface_impl.cpp index 2f1b53c9..77bb9d8e 100644 --- a/hdf_service/distributed_audio/hdi_service/audio/v1_0/src/audio_render_interface_impl.cpp +++ b/hdf_service/distributed_audio/hdi_service/audio/v1_0/src/audio_render_interface_impl.cpp @@ -120,6 +120,7 @@ int32_t AudioRenderInterfaceImpl::RenderFrame(const std::vector &frame, if (currentInterval > MAX_TIME_INTERVAL_US || twoInterval > MAX_TIME_INTERVAL_US) { DHLOGE("This time render frame spend: %lld, The interval of render frame this time and the last time: %lld", currentInterval, twoInterval); + } lastRenderFrameStartTime_ = startTime; return HDF_SUCCESS; } -- Gitee From 6b114c5255189d1fc647ee57098b0f007c01ba3b Mon Sep 17 00:00:00 2001 From: w30042960 Date: Wed, 16 Aug 2023 18:39:37 +0800 Subject: [PATCH 07/35] modify interval Signed-off-by: w30042960 --- common/include/daudio_util.h | 1 + common/src/daudio_util.cpp | 10 ++++++++++ .../audio/v1_0/src/audio_capture_interface_impl.cpp | 6 ++---- .../audio/v1_0/src/audio_render_interface_impl.cpp | 6 ++---- .../hdi_service/common/utils/include/daudio_utils.h | 2 ++ .../hdi_service/common/utils/src/daudio_utils.cpp | 10 ++++++++++ services/audioclient/micclient/src/dmic_client.cpp | 12 ++++-------- .../audioclient/spkclient/src/dspeaker_client.cpp | 12 ++++-------- services/audiomanager/managersource/src/dmic_dev.cpp | 6 ++---- .../audiomanager/managersource/src/dspeaker_dev.cpp | 6 ++---- 10 files changed, 39 insertions(+), 32 deletions(-) diff --git a/common/include/daudio_util.h b/common/include/daudio_util.h index aa0b05d5..49054e98 100644 --- a/common/include/daudio_util.h +++ b/common/include/daudio_util.h @@ -47,6 +47,7 @@ int64_t UpdateTimeOffset(const int64_t frameIndex, const int64_t framePeriodNs, void GetCurrentTime(int64_t &tvSec, int64_t &tvNSec); bool CheckIsNum(const std::string &jsonString); bool CheckDevIdIsLegal(const std::string &devId); +bool IsLongInterval(int64_t startTime, int64_t endTime, int64_t lastStartTime); template bool GetSysPara(const char *key, T &value); diff --git a/common/src/daudio_util.cpp b/common/src/daudio_util.cpp index 8536912d..51602596 100644 --- a/common/src/daudio_util.cpp +++ b/common/src/daudio_util.cpp @@ -322,6 +322,16 @@ bool CheckDevIdIsLegal(const std::string &devId) return true; } +bool IsLongInterval(int64_t startTime, int64_t endTime, int64_t lastStartTime) +{ + int64_t currentInterval = endTime - startTime; + int64_t twoInterval = startTime - lastStartTime; + if (currentInterval > MAX_TIME_INTERVAL_US || twoInterval > MAX_TIME_INTERVAL_US) { + return true; + } + return false; +} + template bool GetSysPara(const char *key, T &value) { diff --git a/hdf_service/distributed_audio/hdi_service/audio/v1_0/src/audio_capture_interface_impl.cpp b/hdf_service/distributed_audio/hdi_service/audio/v1_0/src/audio_capture_interface_impl.cpp index 39b89c50..0432fcda 100644 --- a/hdf_service/distributed_audio/hdi_service/audio/v1_0/src/audio_capture_interface_impl.cpp +++ b/hdf_service/distributed_audio/hdi_service/audio/v1_0/src/audio_capture_interface_impl.cpp @@ -95,11 +95,9 @@ int32_t AudioCaptureInterfaceImpl::CaptureFrame(std::vector &frame, uint AbsoluteSleep(startTime_ + frameIndex_ * framePeriodNs_ - timeOffset); DHLOGD("Capture audio frame success."); int64_t endTime = GetNowTimeUs(); - int64_t currentInterval = endTime - startTime; - int64_t twoInterval = startTime - lastCaptureFrameStartTime_; - if (currentInterval > MAX_TIME_INTERVAL_US || twoInterval > MAX_TIME_INTERVAL_US) { + if (IsLongInterval(startTime, endTime, lastCaptureFrameStartTime_)) { DHLOGD("This time capture frame spend: %lld, The interval of this capture frame time and the last time: %lld", - currentInterval, twoInterval); + endTime - startTime, startTime - lastCaptureFrameStartTime_); } lastCaptureFrameStartTime_ = startTime; return HDF_SUCCESS; diff --git a/hdf_service/distributed_audio/hdi_service/audio/v1_0/src/audio_render_interface_impl.cpp b/hdf_service/distributed_audio/hdi_service/audio/v1_0/src/audio_render_interface_impl.cpp index 77bb9d8e..7321cbb5 100644 --- a/hdf_service/distributed_audio/hdi_service/audio/v1_0/src/audio_render_interface_impl.cpp +++ b/hdf_service/distributed_audio/hdi_service/audio/v1_0/src/audio_render_interface_impl.cpp @@ -115,11 +115,9 @@ int32_t AudioRenderInterfaceImpl::RenderFrame(const std::vector &frame, ++frameIndex_; DHLOGD("Render audio frame success."); int64_t endTime = GetNowTimeUs(); - int64_t currentInterval = endTime - startTime; - int64_t twoInterval = startTime - lastRenderFrameStartTime_; - if (currentInterval > MAX_TIME_INTERVAL_US || twoInterval > MAX_TIME_INTERVAL_US) { + if (IsLongInterval(startTime, endTime, lastRenderFrameStartTime_)) { DHLOGE("This time render frame spend: %lld, The interval of render frame this time and the last time: %lld", - currentInterval, twoInterval); + endTime - startTime, startTime - lastRenderFrameStartTime_); } lastRenderFrameStartTime_ = startTime; return HDF_SUCCESS; diff --git a/hdf_service/distributed_audio/hdi_service/common/utils/include/daudio_utils.h b/hdf_service/distributed_audio/hdi_service/common/utils/include/daudio_utils.h index 7778be8d..bc6d6193 100644 --- a/hdf_service/distributed_audio/hdi_service/common/utils/include/daudio_utils.h +++ b/hdf_service/distributed_audio/hdi_service/common/utils/include/daudio_utils.h @@ -51,6 +51,8 @@ int32_t AbsoluteSleep(int64_t nanoTime); int64_t CalculateOffset(const int64_t frameindex, const int64_t framePeriodNs, const int64_t startTime); int64_t UpdateTimeOffset(const int64_t frameIndex, const int64_t framePeriodNs, int64_t &startTime); + +bool IsLongInterval(int64_t startTime, int64_t endTime, int64_t lastStartTime); } // DistributedHardware } // OHOS #endif \ No newline at end of file diff --git a/hdf_service/distributed_audio/hdi_service/common/utils/src/daudio_utils.cpp b/hdf_service/distributed_audio/hdi_service/common/utils/src/daudio_utils.cpp index ecc29ab3..47316458 100644 --- a/hdf_service/distributed_audio/hdi_service/common/utils/src/daudio_utils.cpp +++ b/hdf_service/distributed_audio/hdi_service/common/utils/src/daudio_utils.cpp @@ -168,5 +168,15 @@ int64_t UpdateTimeOffset(const int64_t frameIndex, const int64_t framePeriodNs, } return timeOffset; } + +bool IsLongInterval(int64_t startTime, int64_t endTime, int64_t lastStartTime) +{ + int64_t currentInterval = endTime - startTime; + int64_t twoInterval = startTime - lastStartTime; + if (currentInterval > MAX_TIME_INTERVAL_US || twoInterval > MAX_TIME_INTERVAL_US) { + return true; + } + return false; +} } // namespace DistributedHardware } // namespace OHOS \ No newline at end of file diff --git a/services/audioclient/micclient/src/dmic_client.cpp b/services/audioclient/micclient/src/dmic_client.cpp index 347736d0..218b2361 100644 --- a/services/audioclient/micclient/src/dmic_client.cpp +++ b/services/audioclient/micclient/src/dmic_client.cpp @@ -242,11 +242,9 @@ void DMicClient::CaptureThreadRunning() break; } int64_t endTime = GetNowTimeUs(); - int64_t currentInterval = endTime - startTime; - int64_t twoInterval = startTime - lastCaptureStartTime_; - if (currentInterval > MAX_TIME_INTERVAL_US || twoInterval > MAX_TIME_INTERVAL_US) { + if (IsLongInterval(startTime, endTime, lastCaptureStartTime_)) { DHLOGE("This time capture spend: %lld, The interval of capture this time and the last time: %lld", - currentInterval, twoInterval); + endTime - startTime, startTime - lastCaptureStartTime_); } lastCaptureStartTime_ = startTime; } @@ -260,11 +258,9 @@ void DMicClient::CaptureThreadRunning() DHLOGE("Failed to send data."); } int64_t endTransTime = GetNowTimeUs(); - int64_t currentInterval = endTransTime - startTransTime; - int64_t twoInterval = startTransTime - lastTransStartTime_; - if (currentInterval > MAX_TIME_INTERVAL_US || twoInterval > MAX_TIME_INTERVAL_US) { + if (IsLongInterval(startTransTime, endTransTime, lastTransStartTime_)) { DHLOGE("This time send data spend: %lld, The interval of send data this time and the last time: %lld", - currentInterval, twoInterval); + endTransTime - startTransTime, startTransTime - lastTransStartTime_); } lastTransStartTime_ = startTransTime; } diff --git a/services/audioclient/spkclient/src/dspeaker_client.cpp b/services/audioclient/spkclient/src/dspeaker_client.cpp index e31fd2f5..3886735f 100644 --- a/services/audioclient/spkclient/src/dspeaker_client.cpp +++ b/services/audioclient/spkclient/src/dspeaker_client.cpp @@ -302,11 +302,9 @@ void DSpeakerClient::PlayThreadRunning() writeOffSet += writeLen; } int64_t endTime = GetNowTimeUs(); - int64_t currentInterval = endTime - startTime; - int64_t twoInterval = startTime - lastPlayStartTime_; - if (currentInterval > MAX_TIME_INTERVAL_US || twoInterval > MAX_TIME_INTERVAL_US) { + if (IsLongInterval(startTime, endTime, lastPlayStartTime_)) { DHLOGE("This time play spend: %lld, The interval of play this time and the last time: %lld", - currentInterval, twoInterval); + endTime - startTime, startTime - lastPlayStartTime_); } lastPlayStartTime_ = startTime; } @@ -355,11 +353,9 @@ int32_t DSpeakerClient::OnDecodeTransDataDone(const std::shared_ptr & dataQueueCond_.notify_all(); DHLOGI("Push new spk data, buf len: %d.", dataQueue_.size()); int64_t endTime = GetNowTimeUs(); - int64_t currentInterval = endTime - startTime; - int64_t twoInterval = startTime - lastReceiveDataStartTime_; - if (currentInterval > MAX_TIME_INTERVAL_US || twoInterval > MAX_TIME_INTERVAL_US) { + if (IsLongInterval(startTime, endTime, lastReceiveDataStartTime_)) { DHLOGE("This time receivce data spend: %lld, The interval of receivce data this time and the last time: %lld", - currentInterval, twoInterval); + endTime - startTime, startTime - lastReceiveDataStartTime_); } lastReceiveDataStartTime_ = startTime; return DH_SUCCESS; diff --git a/services/audiomanager/managersource/src/dmic_dev.cpp b/services/audiomanager/managersource/src/dmic_dev.cpp index ed440fe8..89a3248d 100644 --- a/services/audiomanager/managersource/src/dmic_dev.cpp +++ b/services/audiomanager/managersource/src/dmic_dev.cpp @@ -342,11 +342,9 @@ int32_t DMicDev::ReadStreamData(const std::string &devId, const int32_t dhId, st dataQueue_.pop(); } int64_t endTime = GetNowTimeUs(); - int64_t currentInterval = endTime - startTime; - int64_t twoInterval = startTime - lastReadStartTime_; - if (currentInterval > MAX_TIME_INTERVAL_US || twoInterval > MAX_TIME_INTERVAL_US) { + if (IsLongInterval(startTime, endTime, lastReadStartTime_)) { DHLOGE("This time read data spend: %lld, The interval of read data this time and the last time: %lld", - currentInterval, twoInterval); + endTime - startTime, startTime - lastReadStartTime_); } lastReadStartTime_ = startTime; return DH_SUCCESS; diff --git a/services/audiomanager/managersource/src/dspeaker_dev.cpp b/services/audiomanager/managersource/src/dspeaker_dev.cpp index 92dd0ddc..76e73f7b 100644 --- a/services/audiomanager/managersource/src/dspeaker_dev.cpp +++ b/services/audiomanager/managersource/src/dspeaker_dev.cpp @@ -350,11 +350,9 @@ int32_t DSpeakerDev::WriteStreamData(const std::string &devId, const int32_t dhI return ret; } int64_t endTime = GetNowTimeUs(); - int64_t currentInterval = endTime - startTime; - int64_t twoInterval = startTime - lastwriteStartTime_; - if (currentInterval > MAX_TIME_INTERVAL_US || twoInterval > MAX_TIME_INTERVAL_US) { + if (IsLongInterval(startTime, endTime, lastwriteStartTime_)) { DHLOGE("This time write data spend: %lld, The interval of write data this time and the last time: %lld", - currentInterval, twoInterval); + endTime - startTime, startTime - lastwriteStartTime_); } lastwriteStartTime_ = startTime; return DH_SUCCESS; -- Gitee From e9e01931844c6f17d52121c09cfc45ae315e4a79 Mon Sep 17 00:00:00 2001 From: ry521 Date: Thu, 17 Aug 2023 08:56:36 +0000 Subject: [PATCH 08/35] . Signed-off-by: ry521 --- .../src/audio_adapter_interface_impl_test.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hdf_service/distributed_audio/hdi_service/audio/v1_0/test/unittest/audio_adapter_interface/src/audio_adapter_interface_impl_test.cpp b/hdf_service/distributed_audio/hdi_service/audio/v1_0/test/unittest/audio_adapter_interface/src/audio_adapter_interface_impl_test.cpp index c832d206..a1e5d6c1 100644 --- a/hdf_service/distributed_audio/hdi_service/audio/v1_0/test/unittest/audio_adapter_interface/src/audio_adapter_interface_impl_test.cpp +++ b/hdf_service/distributed_audio/hdi_service/audio/v1_0/test/unittest/audio_adapter_interface/src/audio_adapter_interface_impl_test.cpp @@ -593,7 +593,7 @@ HWTEST_F(AudioAdapterInterfaceImpTest, CloseRenderDevice_001, TestSize.Level1) EXPECT_EQ(HDF_SUCCESS, AdapterTest_->CloseRenderDevice(devDesc)); AdapterTest_->spkPinInUse_ = 1; AdapterTest_->extSpkCallback_ = new MockIDAudioCallback(); - EXPECT_EQ(ERR_DH_AUDIO_HDF_WAIT_TIMEOUT, AdapterTest_->CloseRenderDevice(devDesc)); + EXPECT_EQ(HDF_SUCCESS, AdapterTest_->CloseRenderDevice(devDesc)); AdapterTest_->extSpkCallback_ = new MockRevertIDAudioCallback(); EXPECT_EQ(HDF_SUCCESS, AdapterTest_->CloseRenderDevice(devDesc)); } @@ -626,7 +626,7 @@ HWTEST_F(AudioAdapterInterfaceImpTest, CloseCaptureDevice_001, TestSize.Level1) AdapterTest_->extMicCallback_ = new MockIDAudioCallback(); EXPECT_EQ(HDF_SUCCESS, AdapterTest_->CloseCaptureDevice(devDesc)); AdapterTest_->micPinInUse_ = 1; - EXPECT_EQ(ERR_DH_AUDIO_HDF_WAIT_TIMEOUT, AdapterTest_->CloseCaptureDevice(devDesc)); + EXPECT_EQ(HDF_SUCCESS, AdapterTest_->CloseCaptureDevice(devDesc)); } /** -- Gitee From 00a5d5740d88b5d3a05d6e4d8ac93fb146e6728d Mon Sep 17 00:00:00 2001 From: w30042960 Date: Thu, 17 Aug 2023 21:20:14 +0800 Subject: [PATCH 09/35] modify check Signed-off-by: w30042960 --- common/include/daudio_util.h | 2 +- common/src/daudio_util.cpp | 9 +++------ .../audio/v1_0/include/audio_capture_interface_impl.h | 2 +- .../audio/v1_0/include/audio_render_interface_impl.h | 2 +- .../audio/v1_0/src/audio_capture_interface_impl.cpp | 6 +++--- .../audio/v1_0/src/audio_render_interface_impl.cpp | 6 +++--- .../hdi_service/common/utils/include/daudio_utils.h | 2 +- .../hdi_service/common/utils/src/daudio_utils.cpp | 9 +++------ services/audioclient/micclient/src/dmic_client.cpp | 4 ++-- services/audioclient/spkclient/include/dspeaker_client.h | 2 +- services/audioclient/spkclient/src/dspeaker_client.cpp | 8 ++++---- services/audiomanager/managersource/src/dmic_dev.cpp | 2 +- services/audiomanager/managersource/src/dspeaker_dev.cpp | 2 +- 13 files changed, 25 insertions(+), 31 deletions(-) diff --git a/common/include/daudio_util.h b/common/include/daudio_util.h index 49054e98..abb1f60e 100644 --- a/common/include/daudio_util.h +++ b/common/include/daudio_util.h @@ -47,7 +47,7 @@ int64_t UpdateTimeOffset(const int64_t frameIndex, const int64_t framePeriodNs, void GetCurrentTime(int64_t &tvSec, int64_t &tvNSec); bool CheckIsNum(const std::string &jsonString); bool CheckDevIdIsLegal(const std::string &devId); -bool IsLongInterval(int64_t startTime, int64_t endTime, int64_t lastStartTime); +bool IsOutDurationRange(int64_t startTime, int64_t endTime, int64_t lastStartTime); template bool GetSysPara(const char *key, T &value); diff --git a/common/src/daudio_util.cpp b/common/src/daudio_util.cpp index 51602596..471704c8 100644 --- a/common/src/daudio_util.cpp +++ b/common/src/daudio_util.cpp @@ -322,14 +322,11 @@ bool CheckDevIdIsLegal(const std::string &devId) return true; } -bool IsLongInterval(int64_t startTime, int64_t endTime, int64_t lastStartTime) +bool IsOutDurationRange(int64_t startTime, int64_t endTime, int64_t lastStartTime) { int64_t currentInterval = endTime - startTime; - int64_t twoInterval = startTime - lastStartTime; - if (currentInterval > MAX_TIME_INTERVAL_US || twoInterval > MAX_TIME_INTERVAL_US) { - return true; - } - return false; + int64_t twiceInterval = startTime - lastStartTime; + return (currentInterval > MAX_TIME_INTERVAL_US || twiceInterval > MAX_TIME_INTERVAL_US) ? true : false; } template diff --git a/hdf_service/distributed_audio/hdi_service/audio/v1_0/include/audio_capture_interface_impl.h b/hdf_service/distributed_audio/hdi_service/audio/v1_0/include/audio_capture_interface_impl.h index 9ad7c84b..6e087be6 100644 --- a/hdf_service/distributed_audio/hdi_service/audio/v1_0/include/audio_capture_interface_impl.h +++ b/hdf_service/distributed_audio/hdi_service/audio/v1_0/include/audio_capture_interface_impl.h @@ -85,7 +85,7 @@ private: int64_t frameIndex_ = 0; int64_t framePeriodNs_ = 0; int64_t startTime_ = 0; - int64_t lastCaptureFrameStartTime_ = 0; + int64_t lastCaptureStartTime_ = 0; std::mutex captureMtx_; AudioCaptureStatus captureStatus_ = CAPTURE_STATUS_CLOSE; diff --git a/hdf_service/distributed_audio/hdi_service/audio/v1_0/include/audio_render_interface_impl.h b/hdf_service/distributed_audio/hdi_service/audio/v1_0/include/audio_render_interface_impl.h index df3ed23f..3cfa5899 100644 --- a/hdf_service/distributed_audio/hdi_service/audio/v1_0/include/audio_render_interface_impl.h +++ b/hdf_service/distributed_audio/hdi_service/audio/v1_0/include/audio_render_interface_impl.h @@ -115,7 +115,7 @@ private: uint32_t volMin_ = 0; int64_t frameIndex_ = 0; float renderSpeed_ = 0; - int64_t lastRenderFrameStartTime_ = 0; + int64_t lastRenderStartTime_ = 0; AudioChannelMode channelMode_ = AUDIO_CHANNEL_NORMAL; AudioRenderStatus renderStatus_ = RENDER_STATUS_CLOSE; sptr audioExtCallback_ = nullptr; diff --git a/hdf_service/distributed_audio/hdi_service/audio/v1_0/src/audio_capture_interface_impl.cpp b/hdf_service/distributed_audio/hdi_service/audio/v1_0/src/audio_capture_interface_impl.cpp index 0432fcda..8188c279 100644 --- a/hdf_service/distributed_audio/hdi_service/audio/v1_0/src/audio_capture_interface_impl.cpp +++ b/hdf_service/distributed_audio/hdi_service/audio/v1_0/src/audio_capture_interface_impl.cpp @@ -95,11 +95,11 @@ int32_t AudioCaptureInterfaceImpl::CaptureFrame(std::vector &frame, uint AbsoluteSleep(startTime_ + frameIndex_ * framePeriodNs_ - timeOffset); DHLOGD("Capture audio frame success."); int64_t endTime = GetNowTimeUs(); - if (IsLongInterval(startTime, endTime, lastCaptureFrameStartTime_)) { + if (IsOutDurationRange(startTime, endTime, lastCaptureStartTime_)) { DHLOGD("This time capture frame spend: %lld, The interval of this capture frame time and the last time: %lld", - endTime - startTime, startTime - lastCaptureFrameStartTime_); + endTime - startTime, startTime - lastCaptureStartTime_); } - lastCaptureFrameStartTime_ = startTime; + lastCaptureStartTime_ = startTime; return HDF_SUCCESS; } diff --git a/hdf_service/distributed_audio/hdi_service/audio/v1_0/src/audio_render_interface_impl.cpp b/hdf_service/distributed_audio/hdi_service/audio/v1_0/src/audio_render_interface_impl.cpp index 7321cbb5..13f297ae 100644 --- a/hdf_service/distributed_audio/hdi_service/audio/v1_0/src/audio_render_interface_impl.cpp +++ b/hdf_service/distributed_audio/hdi_service/audio/v1_0/src/audio_render_interface_impl.cpp @@ -115,11 +115,11 @@ int32_t AudioRenderInterfaceImpl::RenderFrame(const std::vector &frame, ++frameIndex_; DHLOGD("Render audio frame success."); int64_t endTime = GetNowTimeUs(); - if (IsLongInterval(startTime, endTime, lastRenderFrameStartTime_)) { + if (IsOutDurationRange(startTime, endTime, lastRenderStartTime_)) { DHLOGE("This time render frame spend: %lld, The interval of render frame this time and the last time: %lld", - endTime - startTime, startTime - lastRenderFrameStartTime_); + endTime - startTime, startTime - lastRenderStartTime_); } - lastRenderFrameStartTime_ = startTime; + lastRenderStartTime_ = startTime; return HDF_SUCCESS; } diff --git a/hdf_service/distributed_audio/hdi_service/common/utils/include/daudio_utils.h b/hdf_service/distributed_audio/hdi_service/common/utils/include/daudio_utils.h index bc6d6193..5caefc5d 100644 --- a/hdf_service/distributed_audio/hdi_service/common/utils/include/daudio_utils.h +++ b/hdf_service/distributed_audio/hdi_service/common/utils/include/daudio_utils.h @@ -52,7 +52,7 @@ int64_t CalculateOffset(const int64_t frameindex, const int64_t framePeriodNs, c int64_t UpdateTimeOffset(const int64_t frameIndex, const int64_t framePeriodNs, int64_t &startTime); -bool IsLongInterval(int64_t startTime, int64_t endTime, int64_t lastStartTime); +bool IsOutDurationRange(int64_t startTime, int64_t endTime, int64_t lastStartTime); } // DistributedHardware } // OHOS #endif \ No newline at end of file diff --git a/hdf_service/distributed_audio/hdi_service/common/utils/src/daudio_utils.cpp b/hdf_service/distributed_audio/hdi_service/common/utils/src/daudio_utils.cpp index 47316458..c83a95d6 100644 --- a/hdf_service/distributed_audio/hdi_service/common/utils/src/daudio_utils.cpp +++ b/hdf_service/distributed_audio/hdi_service/common/utils/src/daudio_utils.cpp @@ -169,14 +169,11 @@ int64_t UpdateTimeOffset(const int64_t frameIndex, const int64_t framePeriodNs, return timeOffset; } -bool IsLongInterval(int64_t startTime, int64_t endTime, int64_t lastStartTime) +bool IsOutDurationRange(int64_t startTime, int64_t endTime, int64_t lastStartTime) { int64_t currentInterval = endTime - startTime; - int64_t twoInterval = startTime - lastStartTime; - if (currentInterval > MAX_TIME_INTERVAL_US || twoInterval > MAX_TIME_INTERVAL_US) { - return true; - } - return false; + int64_t twiceInterval = startTime - lastStartTime; + return (currentInterval > MAX_TIME_INTERVAL_US || twiceInterval > MAX_TIME_INTERVAL_US) ? true : false; } } // namespace DistributedHardware } // namespace OHOS \ No newline at end of file diff --git a/services/audioclient/micclient/src/dmic_client.cpp b/services/audioclient/micclient/src/dmic_client.cpp index 218b2361..87bfc54c 100644 --- a/services/audioclient/micclient/src/dmic_client.cpp +++ b/services/audioclient/micclient/src/dmic_client.cpp @@ -242,7 +242,7 @@ void DMicClient::CaptureThreadRunning() break; } int64_t endTime = GetNowTimeUs(); - if (IsLongInterval(startTime, endTime, lastCaptureStartTime_)) { + if (IsOutDurationRange(startTime, endTime, lastCaptureStartTime_)) { DHLOGE("This time capture spend: %lld, The interval of capture this time and the last time: %lld", endTime - startTime, startTime - lastCaptureStartTime_); } @@ -258,7 +258,7 @@ void DMicClient::CaptureThreadRunning() DHLOGE("Failed to send data."); } int64_t endTransTime = GetNowTimeUs(); - if (IsLongInterval(startTransTime, endTransTime, lastTransStartTime_)) { + if (IsOutDurationRange(startTransTime, endTransTime, lastTransStartTime_)) { DHLOGE("This time send data spend: %lld, The interval of send data this time and the last time: %lld", endTransTime - startTransTime, startTransTime - lastTransStartTime_); } diff --git a/services/audioclient/spkclient/include/dspeaker_client.h b/services/audioclient/spkclient/include/dspeaker_client.h index e2f1c68e..1f6efbd0 100644 --- a/services/audioclient/spkclient/include/dspeaker_client.h +++ b/services/audioclient/spkclient/include/dspeaker_client.h @@ -108,7 +108,7 @@ private: std::shared_ptr speakerTrans_ = nullptr; std::weak_ptr eventCallback_; int64_t lastPlayStartTime_ = 0; - int64_t lastReceiveDataStartTime_ = 0; + int64_t lastReceiveStartTime_ = 0; }; } // DistributedHardware } // OHOS diff --git a/services/audioclient/spkclient/src/dspeaker_client.cpp b/services/audioclient/spkclient/src/dspeaker_client.cpp index 3886735f..c6bf978d 100644 --- a/services/audioclient/spkclient/src/dspeaker_client.cpp +++ b/services/audioclient/spkclient/src/dspeaker_client.cpp @@ -302,7 +302,7 @@ void DSpeakerClient::PlayThreadRunning() writeOffSet += writeLen; } int64_t endTime = GetNowTimeUs(); - if (IsLongInterval(startTime, endTime, lastPlayStartTime_)) { + if (IsOutDurationRange(startTime, endTime, lastPlayStartTime_)) { DHLOGE("This time play spend: %lld, The interval of play this time and the last time: %lld", endTime - startTime, startTime - lastPlayStartTime_); } @@ -353,11 +353,11 @@ int32_t DSpeakerClient::OnDecodeTransDataDone(const std::shared_ptr & dataQueueCond_.notify_all(); DHLOGI("Push new spk data, buf len: %d.", dataQueue_.size()); int64_t endTime = GetNowTimeUs(); - if (IsLongInterval(startTime, endTime, lastReceiveDataStartTime_)) { + if (IsOutDurationRange(startTime, endTime, lastReceiveStartTime_)) { DHLOGE("This time receivce data spend: %lld, The interval of receivce data this time and the last time: %lld", - endTime - startTime, startTime - lastReceiveDataStartTime_); + endTime - startTime, startTime - lastReceiveStartTime_); } - lastReceiveDataStartTime_ = startTime; + lastReceiveStartTime_ = startTime; return DH_SUCCESS; } diff --git a/services/audiomanager/managersource/src/dmic_dev.cpp b/services/audiomanager/managersource/src/dmic_dev.cpp index 89a3248d..01fa37e6 100644 --- a/services/audiomanager/managersource/src/dmic_dev.cpp +++ b/services/audiomanager/managersource/src/dmic_dev.cpp @@ -342,7 +342,7 @@ int32_t DMicDev::ReadStreamData(const std::string &devId, const int32_t dhId, st dataQueue_.pop(); } int64_t endTime = GetNowTimeUs(); - if (IsLongInterval(startTime, endTime, lastReadStartTime_)) { + if (IsOutDurationRange(startTime, endTime, lastReadStartTime_)) { DHLOGE("This time read data spend: %lld, The interval of read data this time and the last time: %lld", endTime - startTime, startTime - lastReadStartTime_); } diff --git a/services/audiomanager/managersource/src/dspeaker_dev.cpp b/services/audiomanager/managersource/src/dspeaker_dev.cpp index 76e73f7b..9c540ed2 100644 --- a/services/audiomanager/managersource/src/dspeaker_dev.cpp +++ b/services/audiomanager/managersource/src/dspeaker_dev.cpp @@ -350,7 +350,7 @@ int32_t DSpeakerDev::WriteStreamData(const std::string &devId, const int32_t dhI return ret; } int64_t endTime = GetNowTimeUs(); - if (IsLongInterval(startTime, endTime, lastwriteStartTime_)) { + if (IsOutDurationRange(startTime, endTime, lastwriteStartTime_)) { DHLOGE("This time write data spend: %lld, The interval of write data this time and the last time: %lld", endTime - startTime, startTime - lastwriteStartTime_); } -- Gitee From 75cadc7b68521a55566ee1b4372cccd7cfaf745e Mon Sep 17 00:00:00 2001 From: hwwuhaobo Date: Mon, 21 Aug 2023 21:25:27 +0800 Subject: [PATCH 10/35] modify client pause&restart Signed-off-by: hwwuhaobo --- services/audioclient/spkclient/src/dspeaker_client.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/services/audioclient/spkclient/src/dspeaker_client.cpp b/services/audioclient/spkclient/src/dspeaker_client.cpp index c6bf978d..9ae280e6 100644 --- a/services/audioclient/spkclient/src/dspeaker_client.cpp +++ b/services/audioclient/spkclient/src/dspeaker_client.cpp @@ -550,6 +550,7 @@ void DSpeakerClient::Pause() if (audioRenderer_ != nullptr) { audioRenderer_->Flush(); } + audioRenderer_->Pause(); clientStatus_ = AudioStatus::STATUS_START; isRenderReady_.store(true); } @@ -564,6 +565,7 @@ void DSpeakerClient::ReStart() isRenderReady_.store(true); renderDataThread_ = std::thread(&DSpeakerClient::PlayThreadRunning, this); } + audioRenderer_->Start(); clientStatus_ = AudioStatus::STATUS_START; } -- Gitee From 75d42bded5638f8b22e2383aac2f0f9c9d172a2e Mon Sep 17 00:00:00 2001 From: hwwuhaobo Date: Thu, 24 Aug 2023 22:56:26 +0800 Subject: [PATCH 11/35] modify spk client OnWriteData Signed-off-by: hwwuhaobo --- .../spkclient/src/dspeaker_client.cpp | 18 ++++++++++-------- .../managersource/src/dspeaker_dev.cpp | 4 ++-- .../include/av_sender_engine_adapter.h | 2 -- .../src/av_sender_engine_adapter.cpp | 3 ++- 4 files changed, 14 insertions(+), 13 deletions(-) diff --git a/services/audioclient/spkclient/src/dspeaker_client.cpp b/services/audioclient/spkclient/src/dspeaker_client.cpp index 9ae280e6..50f88c19 100644 --- a/services/audioclient/spkclient/src/dspeaker_client.cpp +++ b/services/audioclient/spkclient/src/dspeaker_client.cpp @@ -124,14 +124,14 @@ void DSpeakerClient::OnWriteData(size_t length) std::shared_ptr audioData = nullptr; { std::unique_lock spkLck(dataQueueMtx_); - dataQueueCond_.wait_for(spkLck, std::chrono::milliseconds(REQUEST_DATA_WAIT), - [this]() { return !dataQueue_.empty(); }); if (dataQueue_.empty()) { - return; + audioData = std::make_shared(bufDesc.bufLength); + DHLOGI("Pop spk data, dataQueue is empty. write empty data."); + } else { + audioData = dataQueue_.front(); + dataQueue_.pop(); + DHLOGI("Pop spk data, dataQueue size: %d.", dataQueue_.size()); } - audioData = dataQueue_.front(); - dataQueue_.pop(); - DHLOGD("Pop spk data, dataQueue size: %d.", dataQueue_.size()); } if (audioData->Capacity() != bufDesc.bufLength) { DHLOGE("Audio data length is not equal to buflength. datalength: %d, bufLength: %d", @@ -549,8 +549,8 @@ void DSpeakerClient::Pause() } if (audioRenderer_ != nullptr) { audioRenderer_->Flush(); + audioRenderer_->Pause(); } - audioRenderer_->Pause(); clientStatus_ = AudioStatus::STATUS_START; isRenderReady_.store(true); } @@ -565,7 +565,9 @@ void DSpeakerClient::ReStart() isRenderReady_.store(true); renderDataThread_ = std::thread(&DSpeakerClient::PlayThreadRunning, this); } - audioRenderer_->Start(); + if (audioRenderer_ != nullptr) { + audioRenderer_->Start(); + } clientStatus_ = AudioStatus::STATUS_START; } diff --git a/services/audiomanager/managersource/src/dspeaker_dev.cpp b/services/audiomanager/managersource/src/dspeaker_dev.cpp index 9c540ed2..27106e7a 100644 --- a/services/audiomanager/managersource/src/dspeaker_dev.cpp +++ b/services/audiomanager/managersource/src/dspeaker_dev.cpp @@ -411,13 +411,13 @@ void DSpeakerDev::EnqueueThread() readIndex_ = 0; readNum_ = 0; frameIndex_ = 0; - DHLOGD("Enqueue thread start, lengthPerRead length: %d.", lengthPerTrans_); + DHLOGI("Enqueue thread start, lengthPerRead length: %d.", lengthPerTrans_); while (ashmem_ != nullptr && isEnqueueRunning_.load()) { int64_t timeOffset = UpdateTimeOffset(frameIndex_, LOW_LATENCY_INTERVAL_NS, startTime_); DHLOGD("Read frameIndex: %lld, timeOffset: %lld.", frameIndex_, timeOffset); auto readData = ashmem_->ReadFromAshmem(lengthPerTrans_, readIndex_); - DHLOGD("Read from ashmem success! read index: %d, readLength: %d.", readIndex_, lengthPerTrans_); + DHLOGI("Read from ashmem success! read index: %d, readLength: %d.", readIndex_, lengthPerTrans_); std::shared_ptr audioData = std::make_shared(lengthPerTrans_); if (readData != nullptr) { const uint8_t *readAudioData = reinterpret_cast(readData); diff --git a/services/audiotransport/senderengine/include/av_sender_engine_adapter.h b/services/audiotransport/senderengine/include/av_sender_engine_adapter.h index a838688e..fff731b6 100644 --- a/services/audiotransport/senderengine/include/av_sender_engine_adapter.h +++ b/services/audiotransport/senderengine/include/av_sender_engine_adapter.h @@ -58,8 +58,6 @@ public: int32_t CreateControlChannel(const std::string &peerDevId); int32_t RegisterAdapterCallback(const std::shared_ptr &back); - void SaveFile(std::string fileName, uint8_t *lastFrame, int32_t size); - int32_t OnSenderEvent(const AVTransEvent &event) override; int32_t OnMessageReceived(const std::shared_ptr &message) override; private: diff --git a/services/audiotransport/senderengine/src/av_sender_engine_adapter.cpp b/services/audiotransport/senderengine/src/av_sender_engine_adapter.cpp index bf1e0ba9..514db33f 100644 --- a/services/audiotransport/senderengine/src/av_sender_engine_adapter.cpp +++ b/services/audiotransport/senderengine/src/av_sender_engine_adapter.cpp @@ -145,9 +145,10 @@ int32_t AVTransSenderAdapter::PushData(std::shared_ptr &audioData) int32_t ret = senderEngine_->PushData(transBuffer); if (ret != DH_SUCCESS) { - DHLOGI("Push data to av transport sender failed"); + DHLOGE("Push data to av transport sender failed"); return ERR_DH_AV_TRANS_FEED_DATA_FAILED; } + DHLOGI("Push data to av sender success. data size: %d.", audioData->Size()); return DH_SUCCESS; } -- Gitee From d15461bfec663cc8ab19af21748825b88cc97f41 Mon Sep 17 00:00:00 2001 From: ry521 Date: Fri, 25 Aug 2023 07:37:23 +0000 Subject: [PATCH 12/35] update services/audiomanager/test/unittest/sourcedevice/src/daudio_source_dev_test.cpp. Signed-off-by: ry521 --- .../unittest/sourcedevice/src/daudio_source_dev_test.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/services/audiomanager/test/unittest/sourcedevice/src/daudio_source_dev_test.cpp b/services/audiomanager/test/unittest/sourcedevice/src/daudio_source_dev_test.cpp index 7a4b63b6..55846fed 100644 --- a/services/audiomanager/test/unittest/sourcedevice/src/daudio_source_dev_test.cpp +++ b/services/audiomanager/test/unittest/sourcedevice/src/daudio_source_dev_test.cpp @@ -155,10 +155,10 @@ HWTEST_F(DAudioSourceDevTest, CreatTasks_003, TestSize.Level1) { sourceDev_->AwakeAudioDev(); AudioEvent event = AudioEvent(OPEN_SPEAKER, ""); - EXPECT_EQ(ERR_DH_AUDIO_SA_OPEN_CTRL_FAILED, sourceDev_->HandleOpenDSpeaker(event)); + EXPECT_NE(ERR_DH_AUDIO_SA_OPEN_CTRL_FAILED, sourceDev_->HandleOpenDSpeaker(event)); event.type = OPEN_MIC; - EXPECT_EQ(ERR_DH_AUDIO_SA_OPEN_CTRL_FAILED, sourceDev_->HandleOpenDMic(event)); + EXPECT_NE(ERR_DH_AUDIO_SA_OPEN_CTRL_FAILED, sourceDev_->HandleOpenDMic(event)); } /** @@ -844,7 +844,7 @@ HWTEST_F(DAudioSourceDevTest, TaskOpenCtrlChannel_001, TestSize.Level1) sourceDev_->rpcResult_ = true; sourceDev_->rpcNotify_ = sourceDev_->EVENT_NOTIFY_OPEN_MIC; jParam = { { KEY_DH_ID, DH_ID_SPK } }; - EXPECT_NE(DH_SUCCESS, sourceDev_->TaskOpenCtrlChannel(jParam.dump())); + EXPECT_EQ(DH_SUCCESS, sourceDev_->TaskOpenCtrlChannel(jParam.dump())); } /** -- Gitee From fcb5b935a80f3ec47fe9d05f74b45b90ea265bcf Mon Sep 17 00:00:00 2001 From: w30042960 Date: Wed, 23 Aug 2023 20:34:20 +0800 Subject: [PATCH 13/35] add hidumper Signed-off-by: w30042960 --- common/dfx_utils/include/daudio_hidumper.h | 4 + common/dfx_utils/src/daudio_hidumper.cpp | 22 +++- common/include/daudio_util.h | 2 + common/src/daudio_util.cpp | 11 ++ .../include/audio_capture_interface_impl.h | 3 + .../audio_capture_interface_impl_base.h | 1 + .../include/audio_render_interface_impl.h | 3 + .../audio_render_interface_impl_base.h | 1 + .../v1_0/src/audio_adapter_interface_impl.cpp | 13 +- .../v1_0/src/audio_capture_interface_impl.cpp | 9 +- .../v1_0/src/audio_render_interface_impl.cpp | 8 ++ .../common/include/daudio_events.h | 2 + .../common/utils/include/daudio_utils.h | 3 + .../common/utils/src/daudio_utils.cpp | 10 ++ .../micclient/include/dmic_client.h | 1 + .../audioclient/micclient/src/dmic_client.cpp | 4 + .../spkclient/include/dspeaker_client.h | 1 + .../spkclient/src/dspeaker_client.cpp | 4 + .../include/daudio_hdi_handler.h | 2 + .../audiohdiproxy/src/daudio_hdi_handler.cpp | 29 ++-- .../managersource/include/dmic_dev.h | 2 + .../managersource/include/dspeaker_dev.h | 2 + .../managersource/src/dmic_dev.cpp | 10 ++ .../managersource/src/dspeaker_dev.cpp | 10 ++ services/audiomanager/servicesink/BUILD.gn | 1 + .../include/daudio_sink_hidumper.h | 52 ++++++++ .../servicesink/include/daudio_sink_service.h | 2 + .../servicesink/src/daudio_sink_hidumper.cpp | 124 ++++++++++++++++++ .../servicesink/src/daudio_sink_service.cpp | 23 ++++ services/common/audioparam/audio_event.h | 4 + 30 files changed, 351 insertions(+), 12 deletions(-) create mode 100644 services/audiomanager/servicesink/include/daudio_sink_hidumper.h create mode 100644 services/audiomanager/servicesink/src/daudio_sink_hidumper.cpp diff --git a/common/dfx_utils/include/daudio_hidumper.h b/common/dfx_utils/include/daudio_hidumper.h index 49236b9d..b10c8df4 100644 --- a/common/dfx_utils/include/daudio_hidumper.h +++ b/common/dfx_utils/include/daudio_hidumper.h @@ -35,12 +35,14 @@ enum class HidumpFlag { GET_SOURCE_DEVID, GET_SINK_INFO, GET_ABILITY, + DUMP_AUDIO_DATA, }; class DaudioHidumper { DECLARE_SINGLE_INSTANCE_BASE(DaudioHidumper); public: bool Dump(const std::vector &args, std::string &result); + bool GetFlagStatus(); DaudioHidumper(); ~DaudioHidumper(); @@ -52,11 +54,13 @@ private: int32_t GetSourceDevId(std::string &result); int32_t GetSinkInfo(std::string &result); int32_t GetAbilityInfo(std::string &result); + int32_t DumpAudioData(std::string &result); private: std::string g_sourceDevId_ = ""; AudioManager *g_manager = nullptr; AudioAdapterDescriptor *g_devices = nullptr; + bool HidumperFlag_ = false; int32_t g_deviceNum = 0; std::string spkDefault = "1"; std::string micDefault = "134217729"; diff --git a/common/dfx_utils/src/daudio_hidumper.cpp b/common/dfx_utils/src/daudio_hidumper.cpp index 424ff9d2..07be7f80 100644 --- a/common/dfx_utils/src/daudio_hidumper.cpp +++ b/common/dfx_utils/src/daudio_hidumper.cpp @@ -31,12 +31,14 @@ const std::string ARGS_HELP = "-h"; const std::string ARGS_SOURCE_DEVID = "--sourceDevId"; const std::string ARGS_SINK_INFO = "--sinkInfo"; const std::string ARGS_ABILITY = "--ability"; +const std::string ARGS_DUMP_AUDIO_DATA = "--dumpAudioData"; const std::map ARGS_MAP = { { ARGS_HELP, HidumpFlag::GET_HELP }, { ARGS_SOURCE_DEVID, HidumpFlag::GET_SOURCE_DEVID }, { ARGS_SINK_INFO, HidumpFlag::GET_SINK_INFO }, { ARGS_ABILITY, HidumpFlag::GET_ABILITY }, + { ARGS_DUMP_AUDIO_DATA, HidumpFlag::DUMP_AUDIO_DATA }, }; } @@ -94,6 +96,9 @@ int32_t DaudioHidumper::ProcessDump(const std::string &args, std::string &result case HidumpFlag::GET_ABILITY: { return GetAbilityInfo(result); } + case HidumpFlag::DUMP_AUDIO_DATA: { + return DumpAudioData(result); + } default: { return ShowIllegalInfomation(result); } @@ -151,6 +156,19 @@ int32_t DaudioHidumper::GetAbilityInfo(std::string &result) return DH_SUCCESS; } +int32_t DaudioHidumper::DumpAudioData(std::string &result) +{ + DHLOGI("Dump audio data."); + result.append("dump..."); + HidumperFlag_ = true; + return DH_SUCCESS; +} + +bool DaudioHidumper::GetFlagStatus() +{ + return HidumperFlag_; +} + void DaudioHidumper::ShowHelp(std::string &result) { DHLOGI("Show help."); @@ -163,7 +181,9 @@ void DaudioHidumper::ShowHelp(std::string &result) .append("--sinkInfo ") .append(": dump sink info in the system\n") .append("--ability ") - .append(": dump current ability of the audio in the system\n"); + .append(": dump current ability of the audio in the system\n") + .append("--dumpAudioData") + .append(": dump audio data in the system\n"); } int32_t DaudioHidumper::ShowIllegalInfomation(std::string &result) diff --git a/common/include/daudio_util.h b/common/include/daudio_util.h index abb1f60e..33d43922 100644 --- a/common/include/daudio_util.h +++ b/common/include/daudio_util.h @@ -17,6 +17,7 @@ #define OHOS_DAUDIO_UTIL_H #include +#include #include #include "nlohmann/json.hpp" @@ -48,6 +49,7 @@ void GetCurrentTime(int64_t &tvSec, int64_t &tvNSec); bool CheckIsNum(const std::string &jsonString); bool CheckDevIdIsLegal(const std::string &devId); bool IsOutDurationRange(int64_t startTime, int64_t endTime, int64_t lastStartTime); +void SaveFile(std::string fileName, uint8_t *audioData, int32_t size); template bool GetSysPara(const char *key, T &value); diff --git a/common/src/daudio_util.cpp b/common/src/daudio_util.cpp index 471704c8..cd89c020 100644 --- a/common/src/daudio_util.cpp +++ b/common/src/daudio_util.cpp @@ -365,5 +365,16 @@ bool IsParamEnabled(const std::string &key, bool &isEnabled) isEnabled = false; return false; } + +void SaveFile(std::string fileName, uint8_t *audioData, int32_t size) +{ + std::ofstream ofs(fileName, std::ios::binary | std::ios::out | std::ios::app); + if (!ofs.is_open()) { + DHLOGE("open file failed"); + return; + } + ofs.write((const char*)(audioData), size); + ofs.close(); +} } // namespace DistributedHardware } // namespace OHOS \ No newline at end of file diff --git a/hdf_service/distributed_audio/hdi_service/audio/v1_0/include/audio_capture_interface_impl.h b/hdf_service/distributed_audio/hdi_service/audio/v1_0/include/audio_capture_interface_impl.h index 6e087be6..cd9e25ba 100644 --- a/hdf_service/distributed_audio/hdi_service/audio/v1_0/include/audio_capture_interface_impl.h +++ b/hdf_service/distributed_audio/hdi_service/audio/v1_0/include/audio_capture_interface_impl.h @@ -75,12 +75,15 @@ public: const AudioDeviceDescriptor &GetCaptureDesc() override; void SetAttrs(const std::string &adpName, const AudioDeviceDescriptor &desc, const AudioSampleAttributes &attrs, const sptr &callback) override; + void SetDumpFlagInner() override; private: static constexpr int64_t AUDIO_OFFSET_FRAME_NUM = 10; + const std::string FILE_NAME = "/data/hdf_captureframe.pcm"; std::string adapterName_; AudioDeviceDescriptor devDesc_; AudioSampleAttributes devAttrs_; + bool dumpFlag_ = false; uint32_t timeInterval_ = 5; int64_t frameIndex_ = 0; int64_t framePeriodNs_ = 0; diff --git a/hdf_service/distributed_audio/hdi_service/audio/v1_0/include/audio_capture_interface_impl_base.h b/hdf_service/distributed_audio/hdi_service/audio/v1_0/include/audio_capture_interface_impl_base.h index 4e3c4912..8cb3cb3c 100644 --- a/hdf_service/distributed_audio/hdi_service/audio/v1_0/include/audio_capture_interface_impl_base.h +++ b/hdf_service/distributed_audio/hdi_service/audio/v1_0/include/audio_capture_interface_impl_base.h @@ -45,6 +45,7 @@ public: virtual const AudioDeviceDescriptor &GetCaptureDesc() = 0; virtual void SetAttrs(const std::string &adpName, const AudioDeviceDescriptor &desc, const AudioSampleAttributes &attrs, const sptr &callback) = 0; + virtual void SetDumpFlagInner() = 0; }; } // V1_0 } // Audio diff --git a/hdf_service/distributed_audio/hdi_service/audio/v1_0/include/audio_render_interface_impl.h b/hdf_service/distributed_audio/hdi_service/audio/v1_0/include/audio_render_interface_impl.h index 3cfa5899..ff2d7743 100644 --- a/hdf_service/distributed_audio/hdi_service/audio/v1_0/include/audio_render_interface_impl.h +++ b/hdf_service/distributed_audio/hdi_service/audio/v1_0/include/audio_render_interface_impl.h @@ -93,6 +93,7 @@ public: uint32_t GetMinVolumeInner() override; void SetAttrs(const std::string &adpName, const AudioDeviceDescriptor &desc, const AudioSampleAttributes &attrs, const sptr &callback) override; + void SetDumpFlagInner() override; private: float GetFadeRate(uint32_t currentIndex, const uint32_t durationIndex); @@ -100,6 +101,7 @@ private: private: static constexpr int64_t AUDIO_OFFSET_FRAME_NUM = 10; + const std::string FILE_NAME = "/data/hdf_renderframe.pcm"; std::string adapterName_; AudioDeviceDescriptor devDesc_; @@ -108,6 +110,7 @@ private: std::mutex renderMtx_; std::mutex volMtx_; bool firstOpenFlag_ = true; + bool dumpFlag_ = false; uint32_t timeInterval_ = 5; uint32_t currentFrame_ = 0; uint32_t vol_ = 0; diff --git a/hdf_service/distributed_audio/hdi_service/audio/v1_0/include/audio_render_interface_impl_base.h b/hdf_service/distributed_audio/hdi_service/audio/v1_0/include/audio_render_interface_impl_base.h index 5929d137..3675951b 100644 --- a/hdf_service/distributed_audio/hdi_service/audio/v1_0/include/audio_render_interface_impl_base.h +++ b/hdf_service/distributed_audio/hdi_service/audio/v1_0/include/audio_render_interface_impl_base.h @@ -53,6 +53,7 @@ public: virtual uint32_t GetMinVolumeInner() = 0; virtual void SetAttrs(const std::string &adpName, const AudioDeviceDescriptor &desc, const AudioSampleAttributes &attrs, const sptr &callback) = 0; + virtual void SetDumpFlagInner() = 0; }; } // V1_0 } // Audio diff --git a/hdf_service/distributed_audio/hdi_service/audio/v1_0/src/audio_adapter_interface_impl.cpp b/hdf_service/distributed_audio/hdi_service/audio/v1_0/src/audio_adapter_interface_impl.cpp index 6fdb2734..e5583255 100644 --- a/hdf_service/distributed_audio/hdi_service/audio/v1_0/src/audio_adapter_interface_impl.cpp +++ b/hdf_service/distributed_audio/hdi_service/audio/v1_0/src/audio_adapter_interface_impl.cpp @@ -47,7 +47,6 @@ AudioAdapterInterfaceImpl::~AudioAdapterInterfaceImpl() DHLOGD("Distributed audio adapter destructed, name(%s).", GetAnonyString(adpDescriptor_.adapterName).c_str()); } - void AudioAdapterInterfaceImpl::SetSpeakerCallback(const sptr &spkCallback) { if (spkCallback == nullptr) { @@ -373,6 +372,8 @@ int32_t AudioAdapterInterfaceImpl::Notify(const uint32_t devId, const DAudioEven case HDF_AUDIO_EVENT_CLOSE_SPK_RESULT: case HDF_AUDIO_EVENT_OPEN_MIC_RESULT: case HDF_AUDIO_EVENT_CLOSE_MIC_RESULT: + case HDF_AUDIO_EVENT_SPK_DUMP: + case HDF_AUDIO_EVENT_MIC_DUMP: return HandleSANotifyEvent(event); case HDF_AUDIO_EVENT_SPK_CLOSED: case HDF_AUDIO_EVENT_MIC_CLOSED: @@ -771,6 +772,16 @@ int32_t AudioAdapterInterfaceImpl::HandleSANotifyEvent(const DAudioEvent &event) micNotifyFlag_ = true; micWaitCond_.notify_all(); break; + case HDF_AUDIO_EVENT_SPK_DUMP: + if (audioRender_ != nullptr) { + audioRender_->SetDumpFlagInner(); + } + break; + case HDF_AUDIO_EVENT_MIC_DUMP: + if (audioCapture_ != nullptr) { + audioCapture_->SetDumpFlagInner(); + } + break; default: DHLOGE("Notify not support event type %d, event content: %s.", event.type, event.content.c_str()); return ERR_DH_AUDIO_HDF_FAIL; diff --git a/hdf_service/distributed_audio/hdi_service/audio/v1_0/src/audio_capture_interface_impl.cpp b/hdf_service/distributed_audio/hdi_service/audio/v1_0/src/audio_capture_interface_impl.cpp index 8188c279..083282ca 100644 --- a/hdf_service/distributed_audio/hdi_service/audio/v1_0/src/audio_capture_interface_impl.cpp +++ b/hdf_service/distributed_audio/hdi_service/audio/v1_0/src/audio_capture_interface_impl.cpp @@ -84,7 +84,9 @@ int32_t AudioCaptureInterfaceImpl::CaptureFrame(std::vector &frame, uint DHLOGE("Read stream data failed."); return HDF_FAILURE; } - + if (dumpFlag_) { + SaveFile(FILE_NAME, reinterpret_cast(audioData.data.data()), audioData.data.size()); + } frame.resize(devAttrs_.frameSize); ret = memcpy_s(frame.data(), frame.size(), audioData.data.data(), audioData.data.size()); if (ret != EOK) { @@ -334,6 +336,11 @@ void AudioCaptureInterfaceImpl::SetAttrs(const std::string &adpName, const Audio DHLOGI("Set attrs, not support yet."); } +void AudioCaptureInterfaceImpl::SetDumpFlagInner() +{ + dumpFlag_ = true; +} + const AudioDeviceDescriptor &AudioCaptureInterfaceImpl::GetCaptureDesc() { return devDesc_; diff --git a/hdf_service/distributed_audio/hdi_service/audio/v1_0/src/audio_render_interface_impl.cpp b/hdf_service/distributed_audio/hdi_service/audio/v1_0/src/audio_render_interface_impl.cpp index 13f297ae..7b1b9f9f 100644 --- a/hdf_service/distributed_audio/hdi_service/audio/v1_0/src/audio_render_interface_impl.cpp +++ b/hdf_service/distributed_audio/hdi_service/audio/v1_0/src/audio_render_interface_impl.cpp @@ -101,6 +101,9 @@ int32_t AudioRenderInterfaceImpl::RenderFrame(const std::vector &frame, AudioParameter param = { devAttrs_.format, devAttrs_.channelCount, devAttrs_.sampleRate, 0, devAttrs_.frameSize}; AudioData data = { param, frame }; + if (dumpFlag_) { + SaveFile(FILE_NAME, reinterpret_cast(data.data.data()), frame.size()); + } FadeInProcess(DURATION_FRAMES, data.data.data(), frame.size()); if (audioExtCallback_ == nullptr) { DHLOGE("Callback is nullptr."); @@ -443,6 +446,11 @@ void AudioRenderInterfaceImpl::SetAttrs(const std::string &adpName, const AudioD { DHLOGI("Set attrs, not support yet."); } + +void AudioRenderInterfaceImpl::SetDumpFlagInner() +{ + dumpFlag_ = true; +} } // V1_0 } // Audio } // Distributedaudio diff --git a/hdf_service/distributed_audio/hdi_service/common/include/daudio_events.h b/hdf_service/distributed_audio/hdi_service/common/include/daudio_events.h index b8ef0121..c4355bfe 100644 --- a/hdf_service/distributed_audio/hdi_service/common/include/daudio_events.h +++ b/hdf_service/distributed_audio/hdi_service/common/include/daudio_events.h @@ -65,6 +65,8 @@ typedef enum AudioExtParamEvent { HDF_AUDIO_EVENT_MMAP_STOP_MIC = 17, HDF_AUDIO_EVENT_START = 18, HDF_AUDIO_EVENT_STOP = 19, + HDF_AUDIO_EVENT_SPK_DUMP = 20, + HDF_AUDIO_EVENT_MIC_DUMP = 21, } EXT_PARAM_EVENT; typedef enum AudioVolumeEvent { diff --git a/hdf_service/distributed_audio/hdi_service/common/utils/include/daudio_utils.h b/hdf_service/distributed_audio/hdi_service/common/utils/include/daudio_utils.h index 5caefc5d..0bde1ba6 100644 --- a/hdf_service/distributed_audio/hdi_service/common/utils/include/daudio_utils.h +++ b/hdf_service/distributed_audio/hdi_service/common/utils/include/daudio_utils.h @@ -16,6 +16,7 @@ #ifndef OHOS_DAUDIO_UTILS_H #define OHOS_DAUDIO_UTILS_H +#include #include #define AUDIO_MS_PER_SECOND 1000 @@ -53,6 +54,8 @@ int64_t CalculateOffset(const int64_t frameindex, const int64_t framePeriodNs, c int64_t UpdateTimeOffset(const int64_t frameIndex, const int64_t framePeriodNs, int64_t &startTime); bool IsOutDurationRange(int64_t startTime, int64_t endTime, int64_t lastStartTime); + +void SaveFile(std::string fileName, uint8_t *audioData, int32_t size); } // DistributedHardware } // OHOS #endif \ No newline at end of file diff --git a/hdf_service/distributed_audio/hdi_service/common/utils/src/daudio_utils.cpp b/hdf_service/distributed_audio/hdi_service/common/utils/src/daudio_utils.cpp index c83a95d6..02211a6b 100644 --- a/hdf_service/distributed_audio/hdi_service/common/utils/src/daudio_utils.cpp +++ b/hdf_service/distributed_audio/hdi_service/common/utils/src/daudio_utils.cpp @@ -175,5 +175,15 @@ bool IsOutDurationRange(int64_t startTime, int64_t endTime, int64_t lastStartTim int64_t twiceInterval = startTime - lastStartTime; return (currentInterval > MAX_TIME_INTERVAL_US || twiceInterval > MAX_TIME_INTERVAL_US) ? true : false; } + +void SaveFile(std::string fileName, uint8_t *audioData, int32_t size) +{ + std::ofstream ofs(fileName, std::ios::binary | std::ios::out | std::ios::app); + if (!ofs.is_open()) { + return; + } + ofs.write((const char*)(audioData), size); + ofs.close(); +} } // namespace DistributedHardware } // namespace OHOS \ No newline at end of file diff --git a/services/audioclient/micclient/include/dmic_client.h b/services/audioclient/micclient/include/dmic_client.h index d3a0dd0c..d205e268 100644 --- a/services/audioclient/micclient/include/dmic_client.h +++ b/services/audioclient/micclient/include/dmic_client.h @@ -69,6 +69,7 @@ private: private: constexpr static uint8_t CHANNEL_WAIT_SECONDS = 5; static constexpr const char* CAPTURETHREAD = "captureThread"; + const std::string FILE_NAME = "/data/sink_mic_send.pcm"; std::string devId_; std::thread captureDataThread_; diff --git a/services/audioclient/micclient/src/dmic_client.cpp b/services/audioclient/micclient/src/dmic_client.cpp index 87bfc54c..bfb86718 100644 --- a/services/audioclient/micclient/src/dmic_client.cpp +++ b/services/audioclient/micclient/src/dmic_client.cpp @@ -19,6 +19,7 @@ #include "daudio_constants.h" #include "daudio_hisysevent.h" +#include "daudio_sink_hidumper.h" #include "daudio_sink_manager.h" #undef DH_LOG_TAG @@ -252,6 +253,9 @@ void DMicClient::CaptureThreadRunning() DHLOGE("Bytes read failed."); break; } + if (DaudioSinkHidumper::GetInstance().GetFlagStatus()) { + SaveFile(FILE_NAME, const_cast(audioData->Data()), audioData->Size()); + } int64_t startTransTime = GetNowTimeUs(); int32_t ret = micTrans_->FeedAudioData(audioData); if (ret != DH_SUCCESS) { diff --git a/services/audioclient/spkclient/include/dspeaker_client.h b/services/audioclient/spkclient/include/dspeaker_client.h index 1f6efbd0..f38be3cb 100644 --- a/services/audioclient/spkclient/include/dspeaker_client.h +++ b/services/audioclient/spkclient/include/dspeaker_client.h @@ -93,6 +93,7 @@ private: constexpr static size_t DATA_QUEUE_SIZE = 8; constexpr static size_t SLEEP_TIME = 5000; static constexpr const char* RENDERTHREAD = "renderThread"; + const std::string FILE_NAME = "/data/sink_spk_recv.pcm"; std::string devId_; std::thread renderDataThread_; diff --git a/services/audioclient/spkclient/src/dspeaker_client.cpp b/services/audioclient/spkclient/src/dspeaker_client.cpp index 9ae280e6..9d7fa5b2 100644 --- a/services/audioclient/spkclient/src/dspeaker_client.cpp +++ b/services/audioclient/spkclient/src/dspeaker_client.cpp @@ -17,6 +17,7 @@ #include "daudio_constants.h" #include "daudio_hisysevent.h" +#include "daudio_sink_hidumper.h" #include "daudio_util.h" #include "daudio_sink_manager.h" @@ -290,6 +291,9 @@ void DSpeakerClient::PlayThreadRunning() dataQueue_.pop(); DHLOGD("Pop spk data, dataqueue size: %d.", dataQueue_.size()); } + if (DaudioSinkHidumper::GetInstance().GetFlagStatus()) { + SaveFile(FILE_NAME, const_cast(audioData->Data()), audioData->Size()); + } int32_t writeOffSet = 0; while (writeOffSet < static_cast(audioData->Capacity())) { int32_t writeLen = audioRenderer_->Write(audioData->Data() + writeOffSet, diff --git a/services/audiohdiproxy/include/daudio_hdi_handler.h b/services/audiohdiproxy/include/daudio_hdi_handler.h index 8a004e60..d5d15ac2 100644 --- a/services/audiohdiproxy/include/daudio_hdi_handler.h +++ b/services/audiohdiproxy/include/daudio_hdi_handler.h @@ -30,6 +30,7 @@ namespace OHOS { namespace DistributedHardware { +using OHOS::HDI::DistributedAudio::Audioext::V1_0::DAudioEvent; using OHOS::HDI::DistributedAudio::Audioext::V1_0::IDAudioCallback; using OHOS::HDI::DistributedAudio::Audioext::V1_0::IDAudioManager; class DAudioHdiHandler { @@ -50,6 +51,7 @@ public: private: DAudioHdiHandler(); ~DAudioHdiHandler(); + void ProcessEventMsg(const AudioEvent &audioEvent, DAudioEvent &newEvent); const std::string HDF_AUDIO_SERVICE_NAME = "daudio_ext_service"; std::mutex devMapMtx_; diff --git a/services/audiohdiproxy/src/daudio_hdi_handler.cpp b/services/audiohdiproxy/src/daudio_hdi_handler.cpp index 8c07edc9..ba5f08d9 100644 --- a/services/audiohdiproxy/src/daudio_hdi_handler.cpp +++ b/services/audiohdiproxy/src/daudio_hdi_handler.cpp @@ -162,16 +162,8 @@ int32_t DAudioHdiHandler::UnRegisterAudioDevice(const std::string &devId, const return DH_SUCCESS; } -int32_t DAudioHdiHandler::NotifyEvent(const std::string &devId, const int32_t dhId, - const AudioEvent &audioEvent) +void DAudioHdiHandler::ProcessEventMsg(const AudioEvent &audioEvent, DAudioEvent &newEvent) { - DHLOGD("Notify event adpname: %s, dhId: %d, event type: %d, event content: %s.", - GetAnonyString(devId).c_str(), dhId, audioEvent.type, audioEvent.content.c_str()); - if (audioSrvHdf_ == nullptr) { - DHLOGE("Audio hdi proxy not init"); - return ERR_DH_AUDIO_HDI_PROXY_NOT_INIT; - } - OHOS::HDI::DistributedAudio::Audioext::V1_0::DAudioEvent newEvent = {AUDIO_EVENT_UNKNOWN, audioEvent.content}; switch (audioEvent.type) { case AudioEventType::NOTIFY_OPEN_SPEAKER_RESULT: newEvent.type = AUDIO_EVENT_OPEN_SPK_RESULT; @@ -200,10 +192,29 @@ int32_t DAudioHdiHandler::NotifyEvent(const std::string &devId, const int32_t dh case AudioEventType::AUDIO_RENDER_STATE_CHANGE: newEvent.type = AUDIO_EVENT_RENDER_STATE_CHANGE; break; + case AudioEventType::NOTIFY_HDF_SPK_DUMP: + newEvent.type = AUDIO_EVENT_SPK_DUMP; + break; + case AudioEventType::NOTIFY_HDF_MIC_DUMP: + newEvent.type = AUDIO_EVENT_MIC_DUMP; + break; default: DHLOGE("Unsupport audio event."); break; } +} + +int32_t DAudioHdiHandler::NotifyEvent(const std::string &devId, const int32_t dhId, + const AudioEvent &audioEvent) +{ + DHLOGD("Notify event adpname: %s, dhId: %d, event type: %d, event content: %s.", + GetAnonyString(devId).c_str(), dhId, audioEvent.type, audioEvent.content.c_str()); + if (audioSrvHdf_ == nullptr) { + DHLOGE("Audio hdi proxy not init"); + return ERR_DH_AUDIO_HDI_PROXY_NOT_INIT; + } + DAudioEvent newEvent = {AUDIO_EVENT_UNKNOWN, audioEvent.content}; + ProcessEventMsg(audioEvent, newEvent); int32_t res = audioSrvHdf_->NotifyEvent(devId, dhId, newEvent); if (res != HDF_SUCCESS) { diff --git a/services/audiomanager/managersource/include/dmic_dev.h b/services/audiomanager/managersource/include/dmic_dev.h index 254d1c7a..68d49948 100644 --- a/services/audiomanager/managersource/include/dmic_dev.h +++ b/services/audiomanager/managersource/include/dmic_dev.h @@ -91,6 +91,7 @@ private: static constexpr size_t LOW_LATENCY_DATA_QUEUE_HALF_SIZE = 10; static constexpr uint32_t MMAP_WAIT_FRAME_US = 5000; static constexpr const char* ENQUEUE_THREAD = "micEnqueueTh"; + const std::string FILE_NAME = "/data/source_mic_read.pcm"; std::string devId_; std::weak_ptr audioEventCallback_; @@ -100,6 +101,7 @@ private: int32_t curPort_ = 0; std::atomic isTransReady_ = false; std::atomic isOpened_ = false; + std::atomic dumpFlag_ = false; std::shared_ptr micTrans_ = nullptr; std::queue> dataQueue_; std::set enabledPorts_; diff --git a/services/audiomanager/managersource/include/dspeaker_dev.h b/services/audiomanager/managersource/include/dspeaker_dev.h index 2c5472b9..0b2f8a5e 100644 --- a/services/audiomanager/managersource/include/dspeaker_dev.h +++ b/services/audiomanager/managersource/include/dspeaker_dev.h @@ -84,6 +84,7 @@ private: private: static constexpr const char* ENQUEUE_THREAD = "spkEnqueueTh"; + const std::string FILE_NAME = "/data/source_spk_write.pcm"; std::string devId_; std::weak_ptr audioEventCallback_; @@ -91,6 +92,7 @@ private: std::condition_variable channelWaitCond_; std::atomic isTransReady_ = false; std::atomic isOpened_ = false; + std::atomic dumpFlag_ = false; int32_t curPort_ = 0; std::shared_ptr speakerTrans_ = nullptr; std::set enabledPorts_; diff --git a/services/audiomanager/managersource/src/dmic_dev.cpp b/services/audiomanager/managersource/src/dmic_dev.cpp index 01fa37e6..2cf8d093 100644 --- a/services/audiomanager/managersource/src/dmic_dev.cpp +++ b/services/audiomanager/managersource/src/dmic_dev.cpp @@ -23,6 +23,7 @@ #include "audio_decode_transport.h" #include "daudio_constants.h" #include "daudio_errorcode.h" +#include "daudio_hidumper.h" #include "daudio_hisysevent.h" #include "daudio_hitrace.h" #include "daudio_log.h" @@ -302,6 +303,7 @@ int32_t DMicDev::Release() DHLOGE("Release mic trans failed, ret: %d.", ret); return ret; } + dumpFlag_.store(false); return DH_SUCCESS; } @@ -341,6 +343,14 @@ int32_t DMicDev::ReadStreamData(const std::string &devId, const int32_t dhId, st data = dataQueue_.front(); dataQueue_.pop(); } + if (DaudioHidumper::GetInstance().GetFlagStatus()) { + if (!dumpFlag_) { + AudioEvent event(NOTIFY_HDF_MIC_DUMP, ""); + NotifyHdfAudioEvent(event); + dumpFlag_.store(true); + } + SaveFile(FILE_NAME, const_cast(data->Data()), data->Size()); + } int64_t endTime = GetNowTimeUs(); if (IsOutDurationRange(startTime, endTime, lastReadStartTime_)) { DHLOGE("This time read data spend: %lld, The interval of read data this time and the last time: %lld", diff --git a/services/audiomanager/managersource/src/dspeaker_dev.cpp b/services/audiomanager/managersource/src/dspeaker_dev.cpp index 9c540ed2..479e5b08 100644 --- a/services/audiomanager/managersource/src/dspeaker_dev.cpp +++ b/services/audiomanager/managersource/src/dspeaker_dev.cpp @@ -25,6 +25,7 @@ #include "audio_encode_transport.h" #include "daudio_constants.h" #include "daudio_errorcode.h" +#include "daudio_hidumper.h" #include "daudio_hisysevent.h" #include "daudio_hitrace.h" #include "daudio_log.h" @@ -285,6 +286,7 @@ int32_t DSpeakerDev::Release() if (ret != DH_SUCCESS) { DHLOGE("Release speaker trans failed, ret: %d.", ret); } + dumpFlag_.store(false); return DH_SUCCESS; } @@ -344,6 +346,14 @@ int32_t DSpeakerDev::WriteStreamData(const std::string &devId, const int32_t dhI DHLOGE("Write stream data, speaker trans is null."); return ERR_DH_AUDIO_SA_SPEAKER_TRANS_NULL; } + if (DaudioHidumper::GetInstance().GetFlagStatus()) { + if (!dumpFlag_) { + AudioEvent event(NOTIFY_HDF_SPK_DUMP, ""); + NotifyHdfAudioEvent(event); + dumpFlag_.store(true); + } + SaveFile(FILE_NAME, const_cast(data->Data()), data->Size()); + } int32_t ret = speakerTrans_->FeedAudioData(data); if (ret != DH_SUCCESS) { DHLOGE("Write stream data failed, ret: %d.", ret); diff --git a/services/audiomanager/servicesink/BUILD.gn b/services/audiomanager/servicesink/BUILD.gn index 2a605183..37fb9543 100755 --- a/services/audiomanager/servicesink/BUILD.gn +++ b/services/audiomanager/servicesink/BUILD.gn @@ -70,6 +70,7 @@ ohos_shared_library("distributed_audio_sink") { "${innerkits_path}/native_cpp/audio_source/src/daudio_source_proxy.cpp", "${services_path}/audiomanager/managersink/src/daudio_sink_dev.cpp", "${services_path}/audiomanager/managersink/src/daudio_sink_manager.cpp", + "src/daudio_sink_hidumper.cpp", "src/daudio_sink_service.cpp", "src/daudio_sink_stub.cpp", ] diff --git a/services/audiomanager/servicesink/include/daudio_sink_hidumper.h b/services/audiomanager/servicesink/include/daudio_sink_hidumper.h new file mode 100644 index 00000000..24cee047 --- /dev/null +++ b/services/audiomanager/servicesink/include/daudio_sink_hidumper.h @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef OHOS_DISTRIBUTED_AUDIO_SINK_HIDUMPER_H +#define OHOS_DISTRIBUTED_AUDIO_SINK_HIDUMPER_H + +#include +#include + +#include "single_instance.h" + +namespace OHOS { +namespace DistributedHardware { +enum class HidumpFlag { + UNKNOWN = 0, + GET_HELP, + DUMP_SINK_AUDIO_DATA, +}; +class DaudioSinkHidumper { + DECLARE_SINGLE_INSTANCE_BASE(DaudioSinkHidumper); + +public: + bool Dump(const std::vector &args, std::string &result); + bool GetFlagStatus(); + DaudioSinkHidumper(); + ~DaudioSinkHidumper(); + +private: + void ShowHelp(std::string &result); + int32_t ShowIllegalInfomation(std::string &result); + int32_t ProcessDump(const std::string &args, std::string &result); + + int32_t DumpAudioData(std::string &result); + +private: + bool HidumperFlag_ = false; +}; +} // namespace DistributedHardware +} // namespace OHOS +#endif // OHOS_DISTRIBUTED_AUDIO_SINK_HIDUMPER_H \ No newline at end of file diff --git a/services/audiomanager/servicesink/include/daudio_sink_service.h b/services/audiomanager/servicesink/include/daudio_sink_service.h index b20cc9a1..633d3934 100644 --- a/services/audiomanager/servicesink/include/daudio_sink_service.h +++ b/services/audiomanager/servicesink/include/daudio_sink_service.h @@ -19,6 +19,7 @@ #include "system_ability.h" #include "ipc_object_stub.h" +#include "daudio_sink_hidumper.h" #include "daudio_sink_stub.h" namespace OHOS { @@ -36,6 +37,7 @@ public: int32_t UnsubscribeLocalHardware(const std::string &dhId) override; void DAudioNotify(const std::string &devId, const std::string &dhId, const int32_t eventType, const std::string &eventContent) override; + int Dump(int32_t fd, const std::vector& args) override; protected: void OnStart() override; diff --git a/services/audiomanager/servicesink/src/daudio_sink_hidumper.cpp b/services/audiomanager/servicesink/src/daudio_sink_hidumper.cpp new file mode 100644 index 00000000..41fdfdee --- /dev/null +++ b/services/audiomanager/servicesink/src/daudio_sink_hidumper.cpp @@ -0,0 +1,124 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "daudio_sink_hidumper.h" + +#include "daudio_errorcode.h" +#include "daudio_log.h" +#include "daudio_util.h" + +#undef DH_LOG_TAG +#define DH_LOG_TAG "DaudioSinkHidumper" + +namespace OHOS { +namespace DistributedHardware { +IMPLEMENT_SINGLE_INSTANCE(DaudioSinkHidumper); + +namespace { +const std::string ARGS_HELP = "-h"; +const std::string ARGS_DUMP_SINK_AUDIO_DATA = "--dumpSinkAudioData"; + +const std::map ARGS_MAP = { + { ARGS_HELP, HidumpFlag::GET_HELP }, + { ARGS_DUMP_SINK_AUDIO_DATA, HidumpFlag::DUMP_SINK_AUDIO_DATA }, +}; +} + +DaudioSinkHidumper::DaudioSinkHidumper() +{ + DHLOGI("Distributed audio hidumper constructed."); +} + +DaudioSinkHidumper::~DaudioSinkHidumper() +{ + DHLOGI("Distributed audio hidumper deconstructed."); +} + +bool DaudioSinkHidumper::Dump(const std::vector &args, std::string &result) +{ + DHLOGI("Distributed audio hidumper dump args.size():%d.", args.size()); + result.clear(); + int32_t argsSize = static_cast(args.size()); + for (int32_t i = 0; i < argsSize; i++) { + DHLOGI("Distributed audio hidumper dump args[%d]: %s.", i, args.at(i).c_str()); + } + + if (args.empty()) { + ShowHelp(result); + return true; + } else if (args.size() > 1) { + ShowIllegalInfomation(result); + return true; + } + + return ProcessDump(args[0], result) == DH_SUCCESS; +} + +int32_t DaudioSinkHidumper::ProcessDump(const std::string &args, std::string &result) +{ + DHLOGI("Process dump."); + HidumpFlag hf = HidumpFlag::UNKNOWN; + auto operatorIter = ARGS_MAP.find(args); + if (operatorIter != ARGS_MAP.end()) { + hf = operatorIter->second; + } + + if (hf == HidumpFlag::GET_HELP) { + ShowHelp(result); + return DH_SUCCESS; + } + result.clear(); + switch (hf) { + case HidumpFlag::DUMP_SINK_AUDIO_DATA: { + return DumpAudioData(result); + } + default: { + return ShowIllegalInfomation(result); + } + } +} + +int32_t DaudioSinkHidumper::DumpAudioData(std::string &result) +{ + DHLOGI("Dump audio data."); + result.append("Dump..."); + HidumperFlag_ = true; + return DH_SUCCESS; +} + +bool DaudioSinkHidumper::GetFlagStatus() +{ + return HidumperFlag_; +} + +void DaudioSinkHidumper::ShowHelp(std::string &result) +{ + DHLOGI("Show help."); + result.append("Usage:dump [options]\n") + .append("Description:\n") + .append("-h ") + .append(": show help\n") + .append("--dumpSinkAudioData ") + .append(": dump sink audio data\n"); +} + +int32_t DaudioSinkHidumper::ShowIllegalInfomation(std::string &result) +{ + DHLOGI("Show illegal information."); + result.append("unknown command, -h for help."); + return DH_SUCCESS; +} +} // namespace DistributedHardware +} // namespace OHOS \ No newline at end of file diff --git a/services/audiomanager/servicesink/src/daudio_sink_service.cpp b/services/audiomanager/servicesink/src/daudio_sink_service.cpp index fe17dae7..dac62574 100644 --- a/services/audiomanager/servicesink/src/daudio_sink_service.cpp +++ b/services/audiomanager/servicesink/src/daudio_sink_service.cpp @@ -116,5 +116,28 @@ void DAudioSinkService::DAudioNotify(const std::string &devId, const std::string dhId.c_str(), eventType); DAudioSinkManager::GetInstance().HandleDAudioNotify(devId, dhId, eventType, eventContent); } + +int DAudioSinkService::Dump(int32_t fd, const std::vector &args) +{ + DHLOGD("Distributed audio sink service dump."); + std::string result; + std::vector argsStr; + + std::transform(args.cbegin(), args.cend(), std::back_inserter(argsStr), + [](const std::u16string& item) { return Str16ToStr8(item); }); + + if (!DaudioSinkHidumper::GetInstance().Dump(argsStr, result)) { + DHLOGE("Hidump error"); + return ERR_DH_AUDIO_BAD_VALUE; + } + + int ret = dprintf(fd, "%s\n", result.c_str()); + if (ret < 0) { + DHLOGE("Dprintf error"); + return ERR_DH_AUDIO_BAD_VALUE; + } + + return DH_SUCCESS; +} } // namespace DistributedHardware } // namespace OHOS \ No newline at end of file diff --git a/services/common/audioparam/audio_event.h b/services/common/audioparam/audio_event.h index 3a6178e8..5660ff40 100644 --- a/services/common/audioparam/audio_event.h +++ b/services/common/audioparam/audio_event.h @@ -37,6 +37,8 @@ typedef enum { SPEAKER_CLOSED = 14, NOTIFY_OPEN_SPEAKER_RESULT = 15, NOTIFY_CLOSE_SPEAKER_RESULT = 16, + NOTIFY_HDF_SPK_DUMP = 17, + NOTIFY_HDF_MIC_DUMP = 18, OPEN_MIC = 21, CLOSE_MIC = 22, @@ -92,6 +94,8 @@ typedef enum { AUDIO_EVENT_MMAP_STOP_MIC = 17, AUDIO_EVENT_START = 18, AUDIO_EVENT_STOP = 19, + AUDIO_EVENT_SPK_DUMP = 20, + AUDIO_EVENT_MIC_DUMP = 21, } AudioEventHDF; class AudioEvent { public: -- Gitee From 20a899e91abbfc44920e91161262192f1072b56a Mon Sep 17 00:00:00 2001 From: hwwuhaobo Date: Fri, 25 Aug 2023 15:51:12 +0800 Subject: [PATCH 14/35] add hdf mic client Signed-off-by: hwwuhaobo --- .../micclient/include/dmic_client.h | 43 ++ .../audioclient/micclient/src/dmic_client.cpp | 438 +++++++++++++++--- .../test/unittest/micclient/BUILD.gn | 1 + 3 files changed, 407 insertions(+), 75 deletions(-) diff --git a/services/audioclient/micclient/include/dmic_client.h b/services/audioclient/micclient/include/dmic_client.h index d3a0dd0c..4eff5770 100644 --- a/services/audioclient/micclient/include/dmic_client.h +++ b/services/audioclient/micclient/include/dmic_client.h @@ -40,6 +40,9 @@ #include "iaudio_event_callback.h" #include "imic_client.h" +#include "v1_0/audio_types.h" +#include "v1_0/iaudio_manager.h" + namespace OHOS { namespace DistributedHardware { class DMicClient : public IAudioDataTransCallback, @@ -62,6 +65,25 @@ public: void SetAttrs(const std::string &devId, const std::shared_ptr &callback) override; int32_t SendMessage(uint32_t type, std::string content, std::string dstDevId) override; + void AdapterDescFree(struct AudioAdapterDescriptor *dataBlock, bool freeSelf); + void ReleaseAdapterDescs(struct AudioAdapterDescriptor **descs, uint32_t descsLen); + int32_t GetAudioManager(); + int32_t GetAdapter(); + int32_t GetPrimaryDesc(struct AudioAdapterDescriptor *descs, struct AudioAdapterDescriptor + **primaryDesc); + void ReleaseHDFAudioDevice(); + int32_t InitHDFAudioDevice(); + void GenerateAttr(const AudioParam ¶m); + int32_t AudioFwkClientSetUp(); + int32_t HdfClientSetUp(); + int32_t TransSetUp(); + int32_t HdfClientRelease(); + int32_t TransRelease(); + int32_t HdfClientStartCapture(); + void HdfCaptureAudioData(uint32_t lengthPerCapture, const uint32_t lengthPerTrans, + const uint32_t len); + void AudioFwkCaptureData(); + void OnReadData(size_t length) override; private: void CaptureThreadRunning(); @@ -83,6 +105,27 @@ private: std::shared_ptr micTrans_ = nullptr; int64_t lastCaptureStartTime_ = 0; int64_t lastTransStartTime_ = 0; + + constexpr static uint8_t PORT_ID = 11; + constexpr static size_t FRAME_PER_SECOND = 50; + constexpr static size_t MAX_AUDIO_ADAPTER_DESC = 5; + constexpr static size_t PATH_LEN = 256; + constexpr static size_t INT_32_MAX = 0x7fffffff; + constexpr static size_t BUFFER_PERIOD_SIZE = 4096; + constexpr static size_t AUDIO_BUFFER_SIZE = 16384; + constexpr static size_t FORMATNUM = 2; + static constexpr const char* ADAPTERNAME = "primary"; + static constexpr const char* DEVNAME = "devName"; + + char adapterName_[PATH_LEN] = {0}; + struct IAudioManager *audioManager_ = nullptr; + struct IAudioAdapter *audioAdapter_ = nullptr; + struct IAudioCapture *hdfCapture_ = nullptr; + uint32_t captureId_ = 0; + int64_t frameIndex_ = 0; + bool micInUse_ = false; + struct AudioDeviceDescriptor captureDesc_; + struct AudioSampleAttributes captureAttr_; }; } // DistributedHardware } // OHOS diff --git a/services/audioclient/micclient/src/dmic_client.cpp b/services/audioclient/micclient/src/dmic_client.cpp index 87bfc54c..a75ee623 100644 --- a/services/audioclient/micclient/src/dmic_client.cpp +++ b/services/audioclient/micclient/src/dmic_client.cpp @@ -20,6 +20,7 @@ #include "daudio_constants.h" #include "daudio_hisysevent.h" #include "daudio_sink_manager.h" +#include "daudio_sink_hidumper.h" #undef DH_LOG_TAG #define DH_LOG_TAG "DMicClient" @@ -78,10 +79,11 @@ int32_t DMicClient::OnStateChange(const AudioEventType type) switch (type) { case AudioEventType::DATA_OPENED: { isBlocking_.store(true); - if (audioParam_.captureOpts.capturerFlags != MMAP_MODE) { - isCaptureReady_.store(true); - captureDataThread_ = std::thread(&DMicClient::CaptureThreadRunning, this); + isCaptureReady_.store(true); + if (audioParam_.captureOpts.capturerFlags == MMAP_MODE) { + frameIndex_ = 0; } + captureDataThread_ = std::thread(&DMicClient::CaptureThreadRunning, this); event.type = AudioEventType::MIC_OPENED; break; } @@ -103,13 +105,165 @@ int32_t DMicClient::OnStateChange(const AudioEventType type) return DH_SUCCESS; } -int32_t DMicClient::SetUp(const AudioParam ¶m) +void DMicClient::AdapterDescFree(struct AudioAdapterDescriptor *dataBlock, bool freeSelf) +{ + if (dataBlock == nullptr) { + return; + } + if (dataBlock->adapterName != nullptr) { + free(dataBlock->adapterName); + dataBlock->adapterName = nullptr; + } + if (dataBlock->ports != nullptr) { + free(dataBlock->ports); + dataBlock->ports = nullptr; + } + if (freeSelf) { + free(dataBlock); + dataBlock = nullptr; + } +} + +void DMicClient::ReleaseAdapterDescs(struct AudioAdapterDescriptor **descs, uint32_t descsLen) +{ + if (descsLen > 0 && descs != nullptr && (*descs) != nullptr) { + for (uint32_t i = 0; i < descsLen; i++) { + AdapterDescFree(&(*descs)[i], false); + } + free(*descs); + *descs = nullptr; + } +} + +int32_t DMicClient::GetAudioManager() +{ + audioManager_ = IAudioManagerGet(false); + if (audioManager_ == nullptr) { + DHLOGE("Get audio manager fail"); + return ERR_DH_AUDIO_FAILED; + } + return DH_SUCCESS; +} + +int32_t DMicClient::GetAdapter() +{ + size_t adapterSize = sizeof(struct AudioAdapterDescriptor) * (MAX_AUDIO_ADAPTER_DESC); + struct AudioAdapterDescriptor *descs = reinterpret_cast(malloc(adapterSize)); + if (descs == nullptr) { + DHLOGE("malloc for descs failed"); + return ERR_DH_AUDIO_FAILED; + } + if (memset_s(descs, adapterSize, 0, adapterSize) != EOK) { + DHLOGE("memset for descs failed"); + ReleaseAdapterDescs(&descs, MAX_AUDIO_ADAPTER_DESC); + return ERR_DH_AUDIO_FAILED; + } + uint32_t size = MAX_AUDIO_ADAPTER_DESC; + if (audioManager_ == nullptr) { + DHLOGE("AudioManager is nullptr"); + ReleaseAdapterDescs(&descs, MAX_AUDIO_ADAPTER_DESC); + return ERR_DH_AUDIO_FAILED; + } + int32_t ret = audioManager_->GetAllAdapters(audioManager_, descs, &size); + if (size == 0 || descs == nullptr || ret != 0) { + DHLOGE("Get audio adapters failed. ret : %d.", ret); + ReleaseAdapterDescs(&descs, MAX_AUDIO_ADAPTER_DESC); + return ERR_DH_AUDIO_FAILED; + } + struct AudioAdapterDescriptor *primaryDesc = nullptr; + if (GetPrimaryDesc(descs, &primaryDesc) != DH_SUCCESS) { + return ERR_DH_AUDIO_FAILED; + } + ret = audioManager_->LoadAdapter(audioManager_, primaryDesc, &audioAdapter_); + if (ret != DH_SUCCESS || audioAdapter_ == nullptr) { + DHLOGE("Load primary adapter failed."); + ReleaseAdapterDescs(&descs, MAX_AUDIO_ADAPTER_DESC); + return ERR_DH_AUDIO_FAILED; + } + ReleaseAdapterDescs(&descs, MAX_AUDIO_ADAPTER_DESC); + (void)audioAdapter_->InitAllPorts(audioAdapter_); + return DH_SUCCESS; +} + +int32_t DMicClient::GetPrimaryDesc(struct AudioAdapterDescriptor *descs, struct AudioAdapterDescriptor + **primaryDesc) +{ + uint32_t size = MAX_AUDIO_ADAPTER_DESC; + for (uint32_t index = 0; index < size; index++) { + auto desc = &descs[index]; + if (desc == nullptr || desc->adapterName == nullptr) { + continue; + } + if (!strcmp(desc->adapterName, ADAPTERNAME)) { + *primaryDesc = desc; + break; + } + } + if (*primaryDesc == nullptr) { + DHLOGE("Find primary adapter failed."); + ReleaseAdapterDescs(&descs, MAX_AUDIO_ADAPTER_DESC); + return ERR_DH_AUDIO_FAILED; + } + if (strcpy_s(adapterName_, PATH_LEN, (*primaryDesc)->adapterName) < 0) { + DHLOGE("Strcpy adapter name failed."); + ReleaseAdapterDescs(&descs, MAX_AUDIO_ADAPTER_DESC); + return ERR_DH_AUDIO_FAILED; + } + return DH_SUCCESS; +} + +void DMicClient::ReleaseHDFAudioDevice() +{ + if (micInUse_) { + return; + } + if (audioManager_ != nullptr && audioManager_->UnloadAdapter != nullptr) { + audioManager_->UnloadAdapter(audioManager_, adapterName_); + IAudioAdapterRelease(audioAdapter_, false); + audioAdapter_ = nullptr; + IAudioManagerRelease(audioManager_, false); + audioManager_ = nullptr; + } +} + +int32_t DMicClient::InitHDFAudioDevice() +{ + if (micInUse_) { + return DH_SUCCESS; + } + if (GetAudioManager() != DH_SUCCESS) { + DHLOGE("Get audio manager failed"); + ReleaseHDFAudioDevice(); + return ERR_DH_AUDIO_FAILED; + } + + if (GetAdapter() != DH_SUCCESS) { + DHLOGE("Get audio adapter failed"); + ReleaseHDFAudioDevice(); + return ERR_DH_AUDIO_FAILED; + } + return DH_SUCCESS; +} + +void DMicClient::GenerateAttr(const AudioParam ¶m) +{ + captureDesc_.portId = PORT_ID; + captureDesc_.pins = AudioPortPin::PIN_IN_MIC; + captureDesc_.desc = strdup(DEVNAME); + captureAttr_.format = AUDIO_FORMAT_TYPE_PCM_16_BIT; + captureAttr_.interleaved = 0; + captureAttr_.type = AUDIO_IN_MEDIA; + captureAttr_.period = BUFFER_PERIOD_SIZE; + captureAttr_.isBigEndian = false; + captureAttr_.isSignedData = true; + captureAttr_.stopThreshold = INT_32_MAX; + captureAttr_.silenceThreshold = AUDIO_BUFFER_SIZE; + captureAttr_.channelCount = param.comParam.channelMask; + captureAttr_.sampleRate = param.comParam.sampleRate; +} + +int32_t DMicClient::AudioFwkClientSetUp() { - DHLOGI("Set up mic client, param: {sampleRate: %d, bitFormat: %d," + - "channelMask: %d, sourceType: %d, capturerFlags: %d, frameSize: %d}.", - param.comParam.sampleRate, param.comParam.bitFormat, param.comParam.channelMask, param.captureOpts.sourceType, - param.captureOpts.capturerFlags, param.comParam.frameSize); - audioParam_ = param; AudioStandard::AudioCapturerOptions capturerOptions = { { static_cast(audioParam_.comParam.sampleRate), @@ -119,7 +273,7 @@ int32_t DMicClient::SetUp(const AudioParam ¶m) }, { static_cast(audioParam_.captureOpts.sourceType), - audioParam_.captureOpts.capturerFlags == MMAP_MODE ? AudioStandard::STREAM_FLAG_FAST : 0, + 0, } }; std::lock_guard lck(devMtx_); @@ -135,7 +289,34 @@ int32_t DMicClient::SetUp(const AudioParam ¶m) return ERR_DH_AUDIO_CLIENT_CREATE_CAPTURER_FAILED; } } + return TransSetUp(); +} + +int32_t DMicClient::HdfClientSetUp() +{ + if (InitHDFAudioDevice() != DH_SUCCESS) { + DHLOGE("Init hdf audio device failed."); + return ERR_DH_AUDIO_FAILED; + } + GenerateAttr(audioParam_); + + if (audioAdapter_ == nullptr) { + DHLOGE("audio adapter is null"); + return ERR_DH_AUDIO_FAILED; + } + int32_t ret = audioAdapter_->CreateCapture(audioAdapter_, &captureDesc_, &captureAttr_, + &hdfCapture_, &captureId_); + if (ret != DH_SUCCESS || hdfCapture_ == nullptr) { + DHLOGE("CreateCapture failed, ret: %d.", ret); + return ERR_DH_AUDIO_FAILED; + } + micInUse_ = true; + DHLOGI("Create hdf audio capture success"); + return TransSetUp(); +} +int32_t DMicClient::TransSetUp() +{ if (micTrans_ == nullptr) { DHLOGE("mic trans in engine should be init by dev."); return ERR_DH_AUDIO_NULLPTR; @@ -149,6 +330,84 @@ int32_t DMicClient::SetUp(const AudioParam ¶m) return DH_SUCCESS; } +int32_t DMicClient::HdfClientRelease() +{ + DHLOGI("Release hdf mic client."); + if (audioAdapter_ != nullptr) { + audioAdapter_->DestroyCapture(audioAdapter_, captureId_); + } + IAudioCaptureRelease(hdfCapture_, false); + hdfCapture_ = nullptr; + micInUse_ = false; + ReleaseHDFAudioDevice(); + DHLOGI("Release hdf audio capture success."); + return TransRelease(); +} + +int32_t DMicClient::TransRelease() +{ + if (micTrans_ == nullptr) { + DHLOGE("Mic trans is nullptr."); + return ERR_DH_AUDIO_FAILED; + } + if (micTrans_->Release() != DH_SUCCESS) { + DHLOGE("Mic trans release failed."); + } + micTrans_ = nullptr; + clientStatus_ = AudioStatus::STATUS_IDLE; + return DH_SUCCESS; +} + +int32_t DMicClient::HdfClientStartCapture() +{ + if (hdfCapture_ == nullptr) { + DHLOGE("Audio capturer is nullptr, can not start."); + return ERR_DH_AUDIO_FAILED; + } + hdfCapture_->Start(hdfCapture_); + DHLOGI("Start hdf capture success."); + return DH_SUCCESS; +} + +void DMicClient::HdfCaptureAudioData(uint32_t lengthPerCapture, const uint32_t lengthPerTrans, + const uint32_t len) +{ + auto audioData = std::make_shared(lengthPerCapture); + uint64_t size = 0; + if (hdfCapture_ == nullptr) { + DHLOGE("hdf capture is nullptr."); + return; + } + hdfCapture_->CaptureFrame(hdfCapture_, reinterpret_cast(audioData->Data()), + &lengthPerCapture, &size); + DHLOGD("CaptureFrame success, framesize: %d", lengthPerCapture); + + for (uint32_t i = 0; i < len; i++) { + std::shared_ptr data = std::make_shared(lengthPerTrans); + if (memcpy_s(data->Data(), lengthPerTrans, audioData->Data() + lengthPerTrans * i, + lengthPerTrans) != EOK) { + DHLOGE("Copy audio data %d failed.", i); + } + int32_t ret = micTrans_->FeedAudioData(data); + if (ret != DH_SUCCESS) { + DHLOGE("Failed to send data %d.", i); + } + } +} + +int32_t DMicClient::SetUp(const AudioParam ¶m) +{ + DHLOGI("Set up mic client, param: {sampleRate: %d, bitFormat: %d," + + "channelMask: %d, sourceType: %d, capturerFlags: %d, frameSize: %d}.", + param.comParam.sampleRate, param.comParam.bitFormat, param.comParam.channelMask, param.captureOpts.sourceType, + param.captureOpts.capturerFlags, param.comParam.frameSize); + audioParam_ = param; + if (audioParam_.captureOpts.capturerFlags == MMAP_MODE) { + return HdfClientSetUp(); + } + return AudioFwkClientSetUp(); +} + int32_t DMicClient::SendMessage(uint32_t type, std::string content, std::string dstDevId) { DHLOGI("Send message to remote."); @@ -174,41 +433,39 @@ int32_t DMicClient::Release() DHLOGE("Mic status is wrong or mic trans is null, %d.", (int32_t)clientStatus_); return ERR_DH_AUDIO_SA_STATUS_ERR; } - bool status = true; - if (!audioCapturer_->Release()) { - DHLOGE("Audio capturer release failed."); - status = false; - } - int32_t ret = micTrans_->Release(); - if (ret != DH_SUCCESS) { - DHLOGE("Mic trans release failed."); - status = false; + if (audioParam_.captureOpts.capturerFlags == MMAP_MODE) { + return HdfClientRelease(); } - micTrans_ = nullptr; - clientStatus_ = AudioStatus::STATUS_IDLE; - if (!status) { - return ERR_DH_AUDIO_FAILED; + if (audioCapturer_ == nullptr || !audioCapturer_->Release()) { + DHLOGE("Audio capturer release failed."); } - return DH_SUCCESS; + return TransRelease(); } int32_t DMicClient::StartCapture() { DHLOGI("Start capturer."); std::lock_guard lck(devMtx_); - if (audioCapturer_ == nullptr || micTrans_ == nullptr || clientStatus_ != AudioStatus::STATUS_READY) { + if (micTrans_ == nullptr || clientStatus_ != AudioStatus::STATUS_READY) { DHLOGE("Audio capturer init failed or mic status wrong, status: %d.", (int32_t)clientStatus_); DAudioHisysevent::GetInstance().SysEventWriteFault(DAUDIO_OPT_FAIL, ERR_DH_AUDIO_SA_STATUS_ERR, "daudio init failed or mic status wrong."); return ERR_DH_AUDIO_SA_STATUS_ERR; } - - if (!audioCapturer_->Start()) { - DHLOGE("Audio capturer start failed."); - audioCapturer_->Release(); - DAudioHisysevent::GetInstance().SysEventWriteFault(DAUDIO_OPT_FAIL, ERR_DH_AUDIO_CLIENT_CAPTURER_START_FAILED, - "daudio capturer start failed."); - return ERR_DH_AUDIO_CLIENT_CAPTURER_START_FAILED; + if (audioParam_.captureOpts.capturerFlags == MMAP_MODE) { + HdfClientStartCapture(); + } else { + if (audioCapturer_ == nullptr) { + DHLOGE("audio capturer is nullptr."); + return ERR_DH_AUDIO_CLIENT_CAPTURER_START_FAILED; + } + if (!audioCapturer_->Start()) { + DHLOGE("Audio capturer start failed."); + audioCapturer_->Release(); + DAudioHisysevent::GetInstance().SysEventWriteFault(DAUDIO_OPT_FAIL, + ERR_DH_AUDIO_CLIENT_CAPTURER_START_FAILED, "daudio capturer start failed."); + return ERR_DH_AUDIO_CLIENT_CAPTURER_START_FAILED; + } } int32_t ret = micTrans_->Start(); if (ret != DH_SUCCESS) { @@ -221,48 +478,75 @@ int32_t DMicClient::StartCapture() return DH_SUCCESS; } +void DMicClient::AudioFwkCaptureData() +{ + std::shared_ptr audioData = std::make_shared(audioParam_.comParam.frameSize); + size_t bytesRead = 0; + bool errorFlag = false; + int64_t startTime = GetNowTimeUs(); + if (audioCapturer_ == nullptr) { + DHLOGE("audio capturer is nullptr"); + return; + } + while (bytesRead < audioParam_.comParam.frameSize) { + int32_t len = audioCapturer_->Read(*(audioData->Data() + bytesRead), + audioParam_.comParam.frameSize - bytesRead, isBlocking_.load()); + if (len >= 0) { + bytesRead += static_cast(len); + } else { + errorFlag = true; + break; + } + int64_t endTime = GetNowTimeUs(); + if (IsOutDurationRange(startTime, endTime, lastCaptureStartTime_)) { + DHLOGE("This time capture spend: %lld, The interval of capture this time and the last time: %lld", + endTime - startTime, startTime - lastCaptureStartTime_); + } + lastCaptureStartTime_ = startTime; + } + if (errorFlag) { + DHLOGE("Bytes read failed."); + return; + } + if (DaudioSinkHidumper::GetInstance().GetFlagStatus()) { + SaveFile(FILE_NAME, const_cast(audioData->Data()), audioData->Size()); + } + int64_t startTransTime = GetNowTimeUs(); + int32_t ret = micTrans_->FeedAudioData(audioData); + if (ret != DH_SUCCESS) { + DHLOGE("Failed to send data."); + } + int64_t endTransTime = GetNowTimeUs(); + if (IsOutDurationRange(startTransTime, endTransTime, lastTransStartTime_)) { + DHLOGE("This time send data spend: %lld, The interval of send data this time and the last time: %lld", + endTransTime - startTransTime, startTransTime - lastTransStartTime_); + } + lastTransStartTime_ = startTransTime; +} + void DMicClient::CaptureThreadRunning() { DHLOGD("Start the capturer thread."); if (pthread_setname_np(pthread_self(), CAPTURETHREAD) != DH_SUCCESS) { DHLOGE("Capture data thread setname failed."); } + uint32_t lengthPerCapture; + uint32_t lengthPerTrans; + uint32_t len; + if (audioParam_.captureOpts.capturerFlags == MMAP_MODE) { + lengthPerCapture = (audioParam_.comParam.sampleRate * audioParam_.comParam.bitFormat * + FORMATNUM * audioParam_.comParam.channelMask) / FRAME_PER_SECOND; + lengthPerTrans = audioParam_.comParam.frameSize; + len = lengthPerCapture / lengthPerTrans; + } while (isCaptureReady_.load()) { - std::shared_ptr audioData = std::make_shared(audioParam_.comParam.frameSize); - size_t bytesRead = 0; - bool errorFlag = false; - int64_t startTime = GetNowTimeUs(); - while (bytesRead < audioParam_.comParam.frameSize) { - int32_t len = audioCapturer_->Read(*(audioData->Data() + bytesRead), - audioParam_.comParam.frameSize - bytesRead, isBlocking_.load()); - if (len >= 0) { - bytesRead += static_cast(len); - } else { - errorFlag = true; - break; - } - int64_t endTime = GetNowTimeUs(); - if (IsOutDurationRange(startTime, endTime, lastCaptureStartTime_)) { - DHLOGE("This time capture spend: %lld, The interval of capture this time and the last time: %lld", - endTime - startTime, startTime - lastCaptureStartTime_); - } - lastCaptureStartTime_ = startTime; + if (audioParam_.captureOpts.capturerFlags == MMAP_MODE) { + DHLOGD("Capture frameIndex: %lld.", frameIndex_); + HdfCaptureAudioData(lengthPerCapture, lengthPerTrans, len); + ++frameIndex_; + } else { + AudioFwkCaptureData(); } - if (errorFlag) { - DHLOGE("Bytes read failed."); - break; - } - int64_t startTransTime = GetNowTimeUs(); - int32_t ret = micTrans_->FeedAudioData(audioData); - if (ret != DH_SUCCESS) { - DHLOGE("Failed to send data."); - } - int64_t endTransTime = GetNowTimeUs(); - if (IsOutDurationRange(startTransTime, endTransTime, lastTransStartTime_)) { - DHLOGE("This time send data spend: %lld, The interval of send data this time and the last time: %lld", - endTransTime - startTransTime, startTransTime - lastTransStartTime_); - } - lastTransStartTime_ = startTransTime; } } @@ -312,7 +596,7 @@ int32_t DMicClient::StopCapture() "daudio capturer is not start or mic status wrong."); return ERR_DH_AUDIO_SA_STATUS_ERR; } - if (audioCapturer_ == nullptr || micTrans_ == nullptr) { + if (micTrans_ == nullptr) { DHLOGE("The capturer or mictrans is not instantiated."); DAudioHisysevent::GetInstance().SysEventWriteFault(DAUDIO_OPT_FAIL, ERR_DH_AUDIO_CLIENT_CAPTURER_OR_MICTRANS_INSTANCE, "daudio capturer or mictrans is not instantiated."); @@ -320,11 +604,9 @@ int32_t DMicClient::StopCapture() } isBlocking_.store(false); - if (audioParam_.captureOpts.capturerFlags != MMAP_MODE) { - isCaptureReady_.store(false); - if (captureDataThread_.joinable()) { - captureDataThread_.join(); - } + isCaptureReady_.store(false); + if (captureDataThread_.joinable()) { + captureDataThread_.join(); } bool status = true; @@ -333,9 +615,15 @@ int32_t DMicClient::StopCapture() DHLOGE("Mic trans stop failed."); status = false; } - if (!audioCapturer_->Stop()) { - DHLOGE("Audio capturer stop failed."); - status = false; + if (audioParam_.captureOpts.capturerFlags == MMAP_MODE) { + if (hdfCapture_ != nullptr) { + hdfCapture_->Stop(hdfCapture_); + } + } else { + if (audioCapturer_ == nullptr || !audioCapturer_->Stop()) { + DHLOGE("Audio capturer stop failed."); + status = false; + } } clientStatus_ = AudioStatus::STATUS_STOP; if (!status) { diff --git a/services/audioclient/test/unittest/micclient/BUILD.gn b/services/audioclient/test/unittest/micclient/BUILD.gn index aeec741c..9d0c2f90 100644 --- a/services/audioclient/test/unittest/micclient/BUILD.gn +++ b/services/audioclient/test/unittest/micclient/BUILD.gn @@ -67,6 +67,7 @@ ohos_unittest("MicClientTest") { "audio_framework:audio_capturer", "distributed_hardware_fwk:distributed_av_receiver", "distributed_hardware_fwk:distributed_av_sender", + "drivers_interface_audio:libaudio_proxy_1.0", ] } -- Gitee From c48de8fe7efbb00a9edc89d1040f121968bfca39 Mon Sep 17 00:00:00 2001 From: w30042960 Date: Mon, 28 Aug 2023 17:47:53 +0800 Subject: [PATCH 15/35] add include Signed-off-by: w30042960 --- services/audiomanager/servicesink/include/daudio_sink_hidumper.h | 1 + 1 file changed, 1 insertion(+) diff --git a/services/audiomanager/servicesink/include/daudio_sink_hidumper.h b/services/audiomanager/servicesink/include/daudio_sink_hidumper.h index 24cee047..fc249dd0 100644 --- a/services/audiomanager/servicesink/include/daudio_sink_hidumper.h +++ b/services/audiomanager/servicesink/include/daudio_sink_hidumper.h @@ -16,6 +16,7 @@ #ifndef OHOS_DISTRIBUTED_AUDIO_SINK_HIDUMPER_H #define OHOS_DISTRIBUTED_AUDIO_SINK_HIDUMPER_H +#include #include #include -- Gitee From 567e23388220ea505f8937f7c780a3aa802ba4f4 Mon Sep 17 00:00:00 2001 From: w30042960 Date: Tue, 29 Aug 2023 11:12:07 +0800 Subject: [PATCH 16/35] tong bu Signed-off-by: w30042960 --- common/src/daudio_util.cpp | 2 +- .../hdi_service/common/utils/src/daudio_utils.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/common/src/daudio_util.cpp b/common/src/daudio_util.cpp index cd89c020..e1a1fc1f 100644 --- a/common/src/daudio_util.cpp +++ b/common/src/daudio_util.cpp @@ -373,7 +373,7 @@ void SaveFile(std::string fileName, uint8_t *audioData, int32_t size) DHLOGE("open file failed"); return; } - ofs.write((const char*)(audioData), size); + ofs.write(reinterpret_cast(audioData), size); ofs.close(); } } // namespace DistributedHardware diff --git a/hdf_service/distributed_audio/hdi_service/common/utils/src/daudio_utils.cpp b/hdf_service/distributed_audio/hdi_service/common/utils/src/daudio_utils.cpp index 02211a6b..0e3c0f61 100644 --- a/hdf_service/distributed_audio/hdi_service/common/utils/src/daudio_utils.cpp +++ b/hdf_service/distributed_audio/hdi_service/common/utils/src/daudio_utils.cpp @@ -182,7 +182,7 @@ void SaveFile(std::string fileName, uint8_t *audioData, int32_t size) if (!ofs.is_open()) { return; } - ofs.write((const char*)(audioData), size); + ofs.write(reinterpret_cast(audioData), size); ofs.close(); } } // namespace DistributedHardware -- Gitee From b28c15aea44c4e7d097c66ae4d630883289a3ed7 Mon Sep 17 00:00:00 2001 From: ry521 Date: Wed, 30 Aug 2023 02:49:32 +0000 Subject: [PATCH 17/35] update services/audioclient/test/unittest/micclient/src/dmic_client_test.cpp. Signed-off-by: ry521 --- .../test/unittest/micclient/src/dmic_client_test.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/audioclient/test/unittest/micclient/src/dmic_client_test.cpp b/services/audioclient/test/unittest/micclient/src/dmic_client_test.cpp index 8010937c..99de9322 100644 --- a/services/audioclient/test/unittest/micclient/src/dmic_client_test.cpp +++ b/services/audioclient/test/unittest/micclient/src/dmic_client_test.cpp @@ -157,7 +157,7 @@ HWTEST_F(DMicClientTest, StopCapture002, TestSize.Level1) micClient_->clientStatus_ = STATUS_START; EXPECT_EQ(ERR_DH_AUDIO_SA_STATUS_ERR, micClient_->StopCapture()); micClient_->isCaptureReady_.store(true); - EXPECT_EQ(ERR_DH_AUDIO_CLIENT_CAPTURER_OR_MICTRANS_INSTANCE, micClient_->StopCapture()); + EXPECT_EQ(ERR_DH_AUDIO_FAILED, micClient_->StopCapture()); micClient_->SetUp(audioParam_); EXPECT_EQ(ERR_DH_AUDIO_SA_STATUS_ERR, micClient_->StopCapture()); } -- Gitee From ec5c8e7f1ddb2dc61ba2603096ce9de206df843e Mon Sep 17 00:00:00 2001 From: ry521 Date: Wed, 30 Aug 2023 02:51:07 +0000 Subject: [PATCH 18/35] update services/audiomanager/test/unittest/managersink/src/daudio_sink_dev_test.cpp. Signed-off-by: ry521 --- .../test/unittest/managersink/src/daudio_sink_dev_test.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/audiomanager/test/unittest/managersink/src/daudio_sink_dev_test.cpp b/services/audiomanager/test/unittest/managersink/src/daudio_sink_dev_test.cpp index c61c680d..08a60b63 100644 --- a/services/audiomanager/test/unittest/managersink/src/daudio_sink_dev_test.cpp +++ b/services/audiomanager/test/unittest/managersink/src/daudio_sink_dev_test.cpp @@ -94,7 +94,7 @@ HWTEST_F(DAudioSinkDevTest, TaskOpenCtrlChannel_001, TestSize.Level1) HWTEST_F(DAudioSinkDevTest, TaskOpenCtrlChannel_002, TestSize.Level1) { std::string args = "args"; - EXPECT_NE(DH_SUCCESS, sinkDev_->TaskOpenCtrlChannel(args)); + EXPECT_EQ(DH_SUCCESS, sinkDev_->TaskOpenCtrlChannel(args)); EXPECT_EQ(DH_SUCCESS, sinkDev_->TaskOpenCtrlChannel(args)); } -- Gitee From 147d1155d41a6ad2507644c95f7193193cf843cf Mon Sep 17 00:00:00 2001 From: ry521 Date: Wed, 30 Aug 2023 02:59:18 +0000 Subject: [PATCH 19/35] update services/audiomanager/test/unittest/managersink/src/daudio_sink_manager_test.cpp. Signed-off-by: ry521 --- .../test/unittest/managersink/src/daudio_sink_manager_test.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/audiomanager/test/unittest/managersink/src/daudio_sink_manager_test.cpp b/services/audiomanager/test/unittest/managersink/src/daudio_sink_manager_test.cpp index 30b2dc90..1ca7c5ed 100644 --- a/services/audiomanager/test/unittest/managersink/src/daudio_sink_manager_test.cpp +++ b/services/audiomanager/test/unittest/managersink/src/daudio_sink_manager_test.cpp @@ -51,7 +51,7 @@ HWTEST_F(DAudioSinkManagerTest, Init_001, TestSize.Level1) HWTEST_F(DAudioSinkManagerTest, CreateAudioDevice_001, TestSize.Level1) { std::string devId = "devId"; - EXPECT_EQ(DH_SUCCESS, daudioSinkManager.CreateAudioDevice(devId)); + EXPECT_EQ(ERR_DH_AUDIO_FAILED, daudioSinkManager.CreateAudioDevice(devId)); daudioSinkManager.channelState_ = ChannelState::SPK_CONTROL_OPENED; daudioSinkManager.rcvProviderPtr_ = std::make_shared().get(); EXPECT_EQ(DH_SUCCESS, daudioSinkManager.CreateAudioDevice(devId)); -- Gitee From 1f5f079b1dc24c7cdaf8318d0031134424c2c646 Mon Sep 17 00:00:00 2001 From: w30042960 Date: Thu, 31 Aug 2023 16:14:14 +0800 Subject: [PATCH 20/35] add define Signed-off-by: w30042960 --- .../audio/v1_0/src/audio_capture_interface_impl.cpp | 3 +++ .../hdi_service/audio/v1_0/src/audio_render_interface_impl.cpp | 3 +++ services/audioclient/micclient/src/dmic_client.cpp | 3 +++ services/audioclient/spkclient/src/dspeaker_client.cpp | 3 +++ services/audiomanager/managersource/src/dmic_dev.cpp | 3 +++ services/audiomanager/managersource/src/dspeaker_dev.cpp | 3 +++ 6 files changed, 18 insertions(+) diff --git a/hdf_service/distributed_audio/hdi_service/audio/v1_0/src/audio_capture_interface_impl.cpp b/hdf_service/distributed_audio/hdi_service/audio/v1_0/src/audio_capture_interface_impl.cpp index 083282ca..87f5da7c 100644 --- a/hdf_service/distributed_audio/hdi_service/audio/v1_0/src/audio_capture_interface_impl.cpp +++ b/hdf_service/distributed_audio/hdi_service/audio/v1_0/src/audio_capture_interface_impl.cpp @@ -27,6 +27,7 @@ #undef DH_LOG_TAG #define DH_LOG_TAG "AudioCaptureInterfaceImpl" +// define DUMP_CAPTURE_FILE for dump file using namespace OHOS::DistributedHardware; namespace OHOS { @@ -84,9 +85,11 @@ int32_t AudioCaptureInterfaceImpl::CaptureFrame(std::vector &frame, uint DHLOGE("Read stream data failed."); return HDF_FAILURE; } +#ifdef DUMP_CAPTURE_FILE if (dumpFlag_) { SaveFile(FILE_NAME, reinterpret_cast(audioData.data.data()), audioData.data.size()); } +#endif frame.resize(devAttrs_.frameSize); ret = memcpy_s(frame.data(), frame.size(), audioData.data.data(), audioData.data.size()); if (ret != EOK) { diff --git a/hdf_service/distributed_audio/hdi_service/audio/v1_0/src/audio_render_interface_impl.cpp b/hdf_service/distributed_audio/hdi_service/audio/v1_0/src/audio_render_interface_impl.cpp index 7b1b9f9f..5da06110 100644 --- a/hdf_service/distributed_audio/hdi_service/audio/v1_0/src/audio_render_interface_impl.cpp +++ b/hdf_service/distributed_audio/hdi_service/audio/v1_0/src/audio_render_interface_impl.cpp @@ -26,6 +26,7 @@ #undef DH_LOG_TAG #define DH_LOG_TAG "AudioRenderInterfaceImpl" +// define DUMP_RENDER_FILE for dump file using namespace OHOS::DistributedHardware; namespace OHOS { @@ -101,9 +102,11 @@ int32_t AudioRenderInterfaceImpl::RenderFrame(const std::vector &frame, AudioParameter param = { devAttrs_.format, devAttrs_.channelCount, devAttrs_.sampleRate, 0, devAttrs_.frameSize}; AudioData data = { param, frame }; +#ifdef DUMP_RENDER_FILE if (dumpFlag_) { SaveFile(FILE_NAME, reinterpret_cast(data.data.data()), frame.size()); } +#endif FadeInProcess(DURATION_FRAMES, data.data.data(), frame.size()); if (audioExtCallback_ == nullptr) { DHLOGE("Callback is nullptr."); diff --git a/services/audioclient/micclient/src/dmic_client.cpp b/services/audioclient/micclient/src/dmic_client.cpp index 13f7c692..7ce19317 100644 --- a/services/audioclient/micclient/src/dmic_client.cpp +++ b/services/audioclient/micclient/src/dmic_client.cpp @@ -24,6 +24,7 @@ #undef DH_LOG_TAG #define DH_LOG_TAG "DMicClient" +// define DUMP_DMICCLIENT_FILE for dump file namespace OHOS { namespace DistributedHardware { @@ -508,9 +509,11 @@ void DMicClient::AudioFwkCaptureData() DHLOGE("Bytes read failed."); return; } +#ifdef DUMP_DMICCLIENT_FILE if (DaudioSinkHidumper::GetInstance().GetFlagStatus()) { SaveFile(FILE_NAME, const_cast(audioData->Data()), audioData->Size()); } +#endif int64_t startTransTime = GetNowTimeUs(); int32_t ret = micTrans_->FeedAudioData(audioData); if (ret != DH_SUCCESS) { diff --git a/services/audioclient/spkclient/src/dspeaker_client.cpp b/services/audioclient/spkclient/src/dspeaker_client.cpp index fb200608..08aaf14e 100644 --- a/services/audioclient/spkclient/src/dspeaker_client.cpp +++ b/services/audioclient/spkclient/src/dspeaker_client.cpp @@ -23,6 +23,7 @@ #undef DH_LOG_TAG #define DH_LOG_TAG "DSpeakerClient" +// define DUMP_DSPEAKERCLIENT_FILE for dump file namespace OHOS { namespace DistributedHardware { @@ -291,9 +292,11 @@ void DSpeakerClient::PlayThreadRunning() dataQueue_.pop(); DHLOGD("Pop spk data, dataqueue size: %d.", dataQueue_.size()); } +#ifdef DUMP_DSPEAKERCLIENT_FILE if (DaudioSinkHidumper::GetInstance().GetFlagStatus()) { SaveFile(FILE_NAME, const_cast(audioData->Data()), audioData->Size()); } +#endif int32_t writeOffSet = 0; while (writeOffSet < static_cast(audioData->Capacity())) { int32_t writeLen = audioRenderer_->Write(audioData->Data() + writeOffSet, diff --git a/services/audiomanager/managersource/src/dmic_dev.cpp b/services/audiomanager/managersource/src/dmic_dev.cpp index 2cf8d093..7c9ee791 100644 --- a/services/audiomanager/managersource/src/dmic_dev.cpp +++ b/services/audiomanager/managersource/src/dmic_dev.cpp @@ -32,6 +32,7 @@ #undef DH_LOG_TAG #define DH_LOG_TAG "DMicDev" +// define DUMP_DMICDEV_FILE for dump file namespace OHOS { namespace DistributedHardware { @@ -343,6 +344,7 @@ int32_t DMicDev::ReadStreamData(const std::string &devId, const int32_t dhId, st data = dataQueue_.front(); dataQueue_.pop(); } +#ifdef DUMP_DMICDEV_FILE if (DaudioHidumper::GetInstance().GetFlagStatus()) { if (!dumpFlag_) { AudioEvent event(NOTIFY_HDF_MIC_DUMP, ""); @@ -351,6 +353,7 @@ int32_t DMicDev::ReadStreamData(const std::string &devId, const int32_t dhId, st } SaveFile(FILE_NAME, const_cast(data->Data()), data->Size()); } +#endif int64_t endTime = GetNowTimeUs(); if (IsOutDurationRange(startTime, endTime, lastReadStartTime_)) { DHLOGE("This time read data spend: %lld, The interval of read data this time and the last time: %lld", diff --git a/services/audiomanager/managersource/src/dspeaker_dev.cpp b/services/audiomanager/managersource/src/dspeaker_dev.cpp index 4b7091b9..65f0ad26 100644 --- a/services/audiomanager/managersource/src/dspeaker_dev.cpp +++ b/services/audiomanager/managersource/src/dspeaker_dev.cpp @@ -34,6 +34,7 @@ #undef DH_LOG_TAG #define DH_LOG_TAG "DSpeakerDev" +// define DUMP_DSPEAKERDEV_FILE for dump file namespace OHOS { namespace DistributedHardware { @@ -346,6 +347,7 @@ int32_t DSpeakerDev::WriteStreamData(const std::string &devId, const int32_t dhI DHLOGE("Write stream data, speaker trans is null."); return ERR_DH_AUDIO_SA_SPEAKER_TRANS_NULL; } +#ifdef DUMP_DSPEAKERDEV_FILE if (DaudioHidumper::GetInstance().GetFlagStatus()) { if (!dumpFlag_) { AudioEvent event(NOTIFY_HDF_SPK_DUMP, ""); @@ -354,6 +356,7 @@ int32_t DSpeakerDev::WriteStreamData(const std::string &devId, const int32_t dhI } SaveFile(FILE_NAME, const_cast(data->Data()), data->Size()); } +#endif int32_t ret = speakerTrans_->FeedAudioData(data); if (ret != DH_SUCCESS) { DHLOGE("Write stream data failed, ret: %d.", ret); -- Gitee From c5b08521e49ea76171e2a82dfd4ec0ddb86bef84 Mon Sep 17 00:00:00 2001 From: Bobie Date: Fri, 25 Aug 2023 17:16:07 +0800 Subject: [PATCH 21/35] unify interface with idl file of audio. Signed-off-by: Bobie --- .../audio/v1_0/AudioTypes.idl | 501 ++++++++++++------ .../audio/v1_0/IAudioAdapter.idl | 23 +- .../audio/v1_0/IAudioCallback.idl | 4 +- .../audio/v1_0/IAudioCapture.idl | 10 +- .../audio/v1_0/IAudioManager.idl | 10 +- .../audio/v1_0/IAudioRender.idl | 9 +- .../include/audio_adapter_interface_impl.h | 20 +- .../include/audio_capture_interface_impl.h | 2 +- .../v1_0/src/audio_adapter_interface_impl.cpp | 319 ++++++++--- .../v1_0/src/audio_capture_interface_impl.cpp | 2 +- .../createcapture_fuzzer.cpp | 5 +- .../createrender_fuzzer.cpp | 5 +- .../destroycapture_fuzzer.cpp | 11 +- .../destroyrender_fuzzer.cpp | 11 +- .../src/audio_adapter_interface_impl_test.cpp | 66 +-- .../audio_test_utils/audio_test_utils.h | 6 +- .../include/daudio_adapter_internal.h | 6 +- .../src/daudio_adapter_internal.cpp | 22 +- .../src/daudio_param_callback_internal.cpp | 6 +- .../src/daudio_render_callback_internal.cpp | 6 +- .../audio_adapter_internal_test.cpp | 2 +- .../audio_adapter_internal_test.h | 10 +- 22 files changed, 727 insertions(+), 329 deletions(-) diff --git a/hdf_interfaces/distributed_audio/audio/v1_0/AudioTypes.idl b/hdf_interfaces/distributed_audio/audio/v1_0/AudioTypes.idl index 38cb481b..830a0c5d 100644 --- a/hdf_interfaces/distributed_audio/audio/v1_0/AudioTypes.idl +++ b/hdf_interfaces/distributed_audio/audio/v1_0/AudioTypes.idl @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 Huawei Device Co., Ltd. + * Copyright (c) 2022-2023 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at @@ -13,13 +13,35 @@ * limitations under the License. */ +/** + * @addtogroup HdiAudio + * @{ + * + * @brief Provides unified APIs for audio services to access audio drivers. + * + * An audio service can obtain an audio driver object or agent and then call APIs provided by this object or agent to + * access different types of audio devices based on the audio IDs, thereby obtaining audio information, + * subscribing to or unsubscribing from audio data, enabling or disabling an audio, + * setting the audio data reporting mode, and setting audio options such as the accuracy and measurement range. + * + * @since 4.0 + * @version 1.0 + */ + package ohos.hdi.distributed_audio.audio.v1_0; +/** + * @brief Enumerates the audio port type. + */ enum AudioPortDirection { PORT_OUT = 1, /**< Output port */ PORT_IN = 2, /**< Input port */ PORT_OUT_IN = 3, /**< Input/output port, supporting both audio input and output */ }; + +/** + * @brief Enumerates the pin of an audio adapter. + */ enum AudioPortPin { PIN_NONE = 0, /**< Invalid pin */ PIN_OUT_SPEAKER = 1 << 0, /**< Speaker output pin */ @@ -30,21 +52,32 @@ enum AudioPortPin { PIN_OUT_USB_EXT = 1 << 5, /**< Extended USB output pin*/ PIN_OUT_EARPIECE = 1 << 5 | 1 << 4, /**< Earpiece output pin */ PIN_OUT_BLUETOOTH_SCO = 1 << 6, /**< Bluetooth SCO output pin */ - PIN_OUT_DAUDIO_DEFAULT = 1 << 7, + PIN_OUT_DAUDIO_DEFAULT = 1 << 7, /**< Daudio default output pin */ + PIN_OUT_HEADPHONE = 1 << 8, /**< Wired headphone output pin*/ + PIN_OUT_USB_HEADSET = 1 << 9, /**< ARM USB out pin */ PIN_IN_MIC = 1 << 27 | 1 << 0, /**< Microphone input pin */ PIN_IN_HS_MIC = 1 << 27 | 1 << 1, /**< Wired headset microphone pin for input */ PIN_IN_LINEIN = 1 << 27 | 1 << 2, /**< Line-in pin */ PIN_IN_USB_EXT = 1 << 27 | 1 << 3, /**< Extended USB input pin*/ PIN_IN_BLUETOOTH_SCO_HEADSET = 1 << 27 | 1 << 4, /**< Bluetooth SCO headset input pin */ - PIN_IN_DAUDIO_DEFAULT = 1 << 27 | 1 << 5, + PIN_IN_DAUDIO_DEFAULT = 1 << 27 | 1 << 5, /**< Daudio default input pin */ + PIN_IN_USB_HEADSET = 1 << 27 | 1 << 6, /**< ARM USB input pin */ }; + +/** + * @brief Enumerates the audio category. + */ enum AudioCategory { - AUDIO_IN_MEDIA = 0, - AUDIO_IN_COMMUNICATION = 1, - AUDIO_IN_RINGTONE = 2, - AUDIO_IN_CALL = 3, - AUDIO_MMAP_NOIRQ = 4, + AUDIO_IN_MEDIA = 0, /**< Media */ + AUDIO_IN_COMMUNICATION = 1, /**< Communications */ + AUDIO_IN_RINGTONE = 2, /**< Ringtone */ + AUDIO_IN_CALL = 3, /**< Call */ + AUDIO_MMAP_NOIRQ = 4, /**< Mmap mode */ }; + +/** + * @brief Enumerates the audio format. + */ enum AudioFormat { AUDIO_FORMAT_TYPE_PCM_8_BIT = 1 << 0, /**< 8-bit PCM */ AUDIO_FORMAT_TYPE_PCM_16_BIT = 1 << 1, /**< 16-bit PCM */ @@ -60,12 +93,22 @@ enum AudioFormat { AUDIO_FORMAT_TYPE_G711U = 1 << 25 | 1 << 1, /**< G711u */ AUDIO_FORMAT_TYPE_G726 = 1 << 25 | 1 << 1 | 1 << 0, /**< G726 */ }; + +/** + * @brief Enumerates the audio channel mask. + * + * A mask describes an audio channel position. + */ enum AudioChannelMask { AUDIO_CHANNEL_FRONT_LEFT = 1, /**< Front left channel */ AUDIO_CHANNEL_FRONT_RIGHT = 2, /**< Front right channel */ AUDIO_CHANNEL_MONO = 1, /**< Mono channel */ AUDIO_CHANNEL_STEREO = 3, /**< Stereo channel, consisting of front left and front right channels */ }; + +/** + * @brief Enumerates masks of audio sampling rates. + */ enum AudioSampleRatesMask { AUDIO_SAMPLE_RATE_MASK_8000 = 1 << 0, /**< 8 kHz */ AUDIO_SAMPLE_RATE_MASK_12000 = 1 << 1, /**< 12 kHz */ @@ -80,206 +123,362 @@ enum AudioSampleRatesMask { AUDIO_SAMPLE_RATE_MASK_96000 = 1 << 10, /**< 96 kHz */ AUDIO_SAMPLE_RATE_MASK_INVALID = 4294967295, /**< Invalid sampling rate */ }; + +/** + * @brief Enumerates the passthrough data transmission mode of an audio port. + */ enum AudioPortPassthroughMode { - PORT_PASSTHROUGH_LPCM = 1, - PORT_PASSTHROUGH_RAW = 2, - PORT_PASSTHROUGH_HBR2LBR = 4, - PORT_PASSTHROUGH_AUTO = 8, + PORT_PASSTHROUGH_LPCM = 1 << 0, /**< Stereo PCM */ + PORT_PASSTHROUGH_RAW = 1 << 1, /**< HDMI passthrough */ + PORT_PASSTHROUGH_HBR2LBR = 1 << 2, /**< Blu-ray next-generation audio output with reduced specifications */ + PORT_PASSTHROUGH_AUTO = 1 << 3, /**< Mode automatically matched based on the HDMI EDID */ }; + +/** + * @brief Defines formats of raw audio samples. + */ enum AudioSampleFormat { - AUDIO_SAMPLE_FORMAT_S8 = 0, - AUDIO_SAMPLE_FORMAT_S8P = 1, - AUDIO_SAMPLE_FORMAT_U8 = 2, - AUDIO_SAMPLE_FORMAT_U8P = 3, - AUDIO_SAMPLE_FORMAT_S16 = 4, - AUDIO_SAMPLE_FORMAT_S16P = 5, - AUDIO_SAMPLE_FORMAT_U16 = 6, - AUDIO_SAMPLE_FORMAT_U16P = 7, - AUDIO_SAMPLE_FORMAT_S24 = 8, - AUDIO_SAMPLE_FORMAT_S24P = 9, - AUDIO_SAMPLE_FORMAT_U24 = 10, - AUDIO_SAMPLE_FORMAT_U24P = 11, - AUDIO_SAMPLE_FORMAT_S32 = 12, - AUDIO_SAMPLE_FORMAT_S32P = 13, - AUDIO_SAMPLE_FORMAT_U32 = 14, - AUDIO_SAMPLE_FORMAT_U32P = 15, - AUDIO_SAMPLE_FORMAT_S64 = 16, - AUDIO_SAMPLE_FORMAT_S64P = 17, - AUDIO_SAMPLE_FORMAT_U64 = 18, - AUDIO_SAMPLE_FORMAT_U64P = 19, - AUDIO_SAMPLE_FORMAT_F32 = 20, - AUDIO_SAMPLE_FORMAT_F32P = 21, - AUDIO_SAMPLE_FORMAT_F64 = 22, - AUDIO_SAMPLE_FORMAT_F64P = 23, + /* 8 bits */ + AUDIO_SAMPLE_FORMAT_S8 = 0, /**< signed 8 bit sample */ + AUDIO_SAMPLE_FORMAT_S8P = 1, /**< signed 8 bit planar sample */ + AUDIO_SAMPLE_FORMAT_U8 = 2, /**< unsigned 8 bit sample */ + AUDIO_SAMPLE_FORMAT_U8P = 3, /**< unsigned 8 bit planar sample */ + /* 16 bits */ + AUDIO_SAMPLE_FORMAT_S16 = 4, /**< signed 16 bit sample */ + AUDIO_SAMPLE_FORMAT_S16P = 5, /**< signed 16 bit planar sample */ + AUDIO_SAMPLE_FORMAT_U16 = 6, /**< unsigned 16 bit sample */ + AUDIO_SAMPLE_FORMAT_U16P = 7, /**< unsigned 16 bit planar sample */ + /* 24 bits */ + AUDIO_SAMPLE_FORMAT_S24 = 8, /**< signed 24 bit sample */ + AUDIO_SAMPLE_FORMAT_S24P = 9, /**< signed 24 bit planar sample */ + AUDIO_SAMPLE_FORMAT_U24 = 10, /**< unsigned 24 bit sample */ + AUDIO_SAMPLE_FORMAT_U24P = 11, /**< unsigned 24 bit planar sample */ + /* 32 bits */ + AUDIO_SAMPLE_FORMAT_S32 = 12, /**< signed 32 bit sample */ + AUDIO_SAMPLE_FORMAT_S32P = 13, /**< signed 32 bit planar sample */ + AUDIO_SAMPLE_FORMAT_U32 = 14, /**< unsigned 32 bit sample */ + AUDIO_SAMPLE_FORMAT_U32P = 15, /**< unsigned 32 bit planar sample */ + /* 64 bits */ + AUDIO_SAMPLE_FORMAT_S64 = 16, /**< signed 64 bit sample */ + AUDIO_SAMPLE_FORMAT_S64P = 17, /**< signed 64 bit planar sample */ + AUDIO_SAMPLE_FORMAT_U64 = 18, /**< unsigned 64 bit sample */ + AUDIO_SAMPLE_FORMAT_U64P = 19, /**< unsigned 64 bit planar sample */ + /* float double */ + AUDIO_SAMPLE_FORMAT_F32 = 20, /**< float 32 bit sample */ + AUDIO_SAMPLE_FORMAT_F32P = 21, /**< float 32 bit planar sample */ + AUDIO_SAMPLE_FORMAT_F64 = 22, /**< double 64 bit sample */ + AUDIO_SAMPLE_FORMAT_F64P = 23, /**< double 64 bit planar sample */ }; + +/** + * @brief Enumerates channel modes for audio rendering. + * + * @attention The following modes are set for rendering dual-channel audios. Others are not supported. + */ enum AudioChannelMode { - AUDIO_CHANNEL_NORMAL = 0, - AUDIO_CHANNEL_BOTH_LEFT = 1, - AUDIO_CHANNEL_BOTH_RIGHT = 2, - AUDIO_CHANNEL_EXCHANGE = 3, - AUDIO_CHANNEL_MIX = 4, - AUDIO_CHANNEL_LEFT_MUTE = 5, - AUDIO_CHANNEL_RIGHT_MUTE = 6, - AUDIO_CHANNEL_BOTH_MUTE = 7, + AUDIO_CHANNEL_NORMAL = 0, /**< Normal mode. No processing is required. */ + AUDIO_CHANNEL_BOTH_LEFT = 1, /**< Two left channels */ + AUDIO_CHANNEL_BOTH_RIGHT = 2, /**< Two right channels */ + AUDIO_CHANNEL_EXCHANGE = 3, /**< Data exchange between the left and right channels. The left channel takes the audio + * stream of the right channel, and the right channel takes that of the left channel. + */ + AUDIO_CHANNEL_MIX = 4, /**< Mix of streams of the left and right channels */ + AUDIO_CHANNEL_LEFT_MUTE = 5, /**< Left channel muted. The stream of the right channel is output. */ + AUDIO_CHANNEL_RIGHT_MUTE = 6, /**< Right channel muted. The stream of the left channel is output. */ + AUDIO_CHANNEL_BOTH_MUTE = 7, /**< Both left and right channels are muted */ }; + +/** + * @brief Enumerates the execution types of the DrainBuffer function. + */ enum AudioDrainNotifyType { - AUDIO_DRAIN_NORMAL_MODE = 0, - AUDIO_DRAIN_EARLY_MODE = 1, + AUDIO_DRAIN_NORMAL_MODE = 0, /**< The DrainBuffer function returns after all data finishes playback. */ + AUDIO_DRAIN_EARLY_MODE = 1, /**< The DrainBuffer function returns before all the data of the current track + * finishes playback to reserve time for a smooth track switch by the audio service. + */ + }; + +/** + * @brief Enumerates callback notification events. + */ enum AudioCallbackType { - AUDIO_NONBLOCK_WRITE_COMPELETED = 0, - AUDIO_DRAIN_COMPELETED = 1, - AUDIO_FLUSH_COMPLETED = 2, - AUDIO_RENDER_FULL = 3, - AUDIO_ERROR_OCCUR = 4, + AUDIO_NONBLOCK_WRITE_COMPLETED = 0, /**< The non-block write is complete. */ + AUDIO_DRAIN_COMPLETED = 1, /**< The draining is complete. */ + AUDIO_FLUSH_COMPLETED = 2, /**< The flush is complete. */ + AUDIO_RENDER_FULL = 3, /**< The render buffer is full.*/ + AUDIO_ERROR_OCCUR = 4, /**< An error occurs.*/ }; + +/** + * @brief Describes AudioPortRole. + */ enum AudioPortRole { - AUDIO_PORT_UNASSIGNED_ROLE = 0, - AUDIO_PORT_SOURCE_ROLE = 1, - AUDIO_PORT_SINK_ROLE = 2, + AUDIO_PORT_UNASSIGNED_ROLE = 0, /**< Unassigned port role */ + AUDIO_PORT_SOURCE_ROLE = 1, /**< Assigned source role */ + AUDIO_PORT_SINK_ROLE = 2, /**< Assigned sink role */ }; + +/** + * @brief Describes AudioPortType. + */ enum AudioPortType { - AUDIO_PORT_UNASSIGNED_TYPE = 0, - AUDIO_PORT_DEVICE_TYPE = 1, - AUDIO_PORT_MIX_TYPE = 2, - AUDIO_PORT_SESSION_TYPE = 3, + AUDIO_PORT_UNASSIGNED_TYPE = 0, /**< Unassigned port type */ + AUDIO_PORT_DEVICE_TYPE = 1, /**< Assigned device type */ + AUDIO_PORT_MIX_TYPE = 2, /**< Assigned mix type */ + AUDIO_PORT_SESSION_TYPE = 3, /**< Assigned session type */ }; + +/** + * @brief Describes AudioSessionType. + */ enum AudioSessionType { - AUDIO_OUTPUT_STAGE_SESSION = 0, - AUDIO_OUTPUT_MIX_SESSION = 1, - AUDIO_ALLOCATE_SESSION = 2, - AUDIO_INVALID_SESSION = 3, + AUDIO_OUTPUT_STAGE_SESSION = 0, /**< Assigned output stage session */ + AUDIO_OUTPUT_MIX_SESSION = 1, /**< Assigned output mix session */ + AUDIO_ALLOCATE_SESSION = 2, /**< Assigned allocate session */ + AUDIO_INVALID_SESSION = 3, /**< Assigned invalid session */ }; + +/** + * @brief Describes AudioDeviceType. + */ enum AudioDeviceType { - AUDIO_LINEOUT = 1 << 0, - AUDIO_HEADPHONE = 1 << 1, - AUDIO_HEADSET = 1 << 2, - AUDIO_USB_HEADSET = 1 << 3, - AUDIO_USB_HEADPHONE = 1 << 4, - AUDIO_USBA_HEADSET = 1 << 5, - AUDIO_USBA_HEADPHONE = 1 << 6, - AUDIO_PRIMARY_DEVICE = 1 << 7, - AUDIO_USB_DEVICE = 1 << 8, - AUDIO_A2DP_DEVICE = 1 << 9, - AUDIO_DEVICE_UNKNOWN, + AUDIO_LINEOUT = 1 << 0, /**< Assigned lineout device type */ + AUDIO_HEADPHONE = 1 << 1, /**< Assigned headphone device type */ + AUDIO_HEADSET = 1 << 2, /**< Assigned headset device type */ + AUDIO_USB_HEADSET = 1 << 3, /**< Assigned usb headset device type */ + AUDIO_USB_HEADPHONE = 1 << 4, /**< Assigned usb headphone device type */ + AUDIO_USBA_HEADSET = 1 << 5, /**< Assigned usba headset device type */ + AUDIO_USBA_HEADPHONE = 1 << 6, /**< Assigned usba headphone device type */ + AUDIO_PRIMARY_DEVICE = 1 << 7, /**< Assigned primary device type */ + AUDIO_USB_DEVICE = 1 << 8, /**< Assigned usb device type */ + AUDIO_A2DP_DEVICE = 1 << 9, /**< Assigned a2dp device type */ + AUDIO_HDMI_DEVICE = 1 << 10, /**< Assigned hdmi device type */ + AUDIO_ADAPTER_DEVICE = 1 << 11, /**< Assigned adapter device type */ + AUDIO_DEVICE_UNKNOWN, /**< Assigned unknown device type */ }; + +/** + * @brief Describes AudioEventType. + */ enum AudioEventType { - AUDIO_DEVICE_ADD = 1, - AUDIO_DEVICE_REMOVE = 2, - AUDIO_LOAD_SUCCESS = 3, - AUDIO_LOAD_FAILURE = 4, - AUDIO_UNLOAD = 5, - AUDIO_SERVICE_VALID = 7, - AUDIO_SERVICE_INVALID = 8, - AUDIO_CAPTURE_THRESHOLD = 9, - AUDIO_EVENT_UNKNOWN = 10, + AUDIO_DEVICE_ADD = 1, /**< Assigned add device event type */ + AUDIO_DEVICE_REMOVE = 2, /**< Assigned remove device event type */ + AUDIO_LOAD_SUCCESS = 3, /**< Assigned load sucess event type */ + AUDIO_LOAD_FAILURE = 4, /**< Assigned load failure event type */ + AUDIO_UNLOAD = 5, /**< Assigned unload event type */ + AUDIO_SERVICE_VALID = 7, /**< Assigned valid service event type */ + AUDIO_SERVICE_INVALID = 8, /**< Assigned invalid service event type */ + AUDIO_CAPTURE_THRESHOLD = 9, /**< Assigned threshold capture event type */ + AUDIO_EVENT_UNKNOWN = 10, /**< Assigned unknown event type */ }; + +/** + * @brief Enumerates the restricted key type of the parameters + */ enum AudioExtParamKey { - AUDIO_EXT_PARAM_KEY_NONE = 0, /**< Distributed audio extra param key none */ - AUDIO_EXT_PARAM_KEY_VOLUME = 1, /**< Distributed audio extra param key volume event */ - AUDIO_EXT_PARAM_KEY_FOCUS = 2, /**< Distributed audio extra param key focus event */ - AUDIO_EXT_PARAM_KEY_BUTTON = 3, /**< Distributed audio extra param key media button event */ - AUDIO_EXT_PARAM_KEY_EFFECT = 4, /**< Distributed audio extra param key audio effect event */ - AUDIO_EXT_PARAM_KEY_STATUS = 5, /**< Distributed audio extra param key device status event */ + AUDIO_EXT_PARAM_KEY_NONE = 0, /**< Distributed audio extra param key none */ + AUDIO_EXT_PARAM_KEY_VOLUME = 1, /**< Distributed audio extra param key volume event */ + AUDIO_EXT_PARAM_KEY_FOCUS = 2, /**< Distributed audio extra param key focus event */ + AUDIO_EXT_PARAM_KEY_BUTTON = 3, /**< Distributed audio extra param key media button event */ + AUDIO_EXT_PARAM_KEY_EFFECT = 4, /**< Distributed audio extra param key audio effect event */ + AUDIO_EXT_PARAM_KEY_STATUS = 5, /**< Distributed audio extra param key device status event */ + AUDIO_EXT_PARAM_KEY_USB_DEVICE = 101, /**< Check USB device type ARM or HIFI */ AUDIO_EXT_PARAM_KEY_LOWPOWER = 1000, /**< Low power event type */ }; + +/** + * @brief Describes status of audio deivce.@link enum AudioDeviceType + */ struct AudioDeviceStatus { - unsigned int pnpStatus; + unsigned int pnpStatus; /**< Audio pnp status */ }; + +/** + * @brief Describes the audio scene. + */ union SceneDesc { - unsigned int id; + unsigned int id; /**< Audio scene ID */ }; + +/** + * @brief Defines the audio port. + */ struct AudioPort { - enum AudioPortDirection dir; - unsigned int portId; - String portName; + enum AudioPortDirection dir; /**< Audio port type. For details, see {@link AudioPortDirection} */ + unsigned int portId; /**< Audio port ID */ + String portName; /**< Audio port name */ }; + +/** + * @brief Defines the audio adapter descriptor. + * + * An audio adapter is a set of port drivers for a sound card, including the output and input ports. + * One port corresponds to multiple pins, and each pin belongs to a physical component (such as a + * speaker or a wired headset). + */ struct AudioAdapterDescriptor { - String adapterName; - struct AudioPort[] ports; + String adapterName; /**< Name of the audio adapter */ + struct AudioPort[] ports; /**< List of ports supported by an audio adapter */ }; + +/** + * @brief Defines the audio device descriptor. + */ struct AudioDeviceDescriptor { - unsigned int portId; - enum AudioPortPin pins; - String desc; + unsigned int portId; /**< Audio port ID */ + enum AudioPortPin pins; /**< Pins of audio ports (input and output). For details, see {@link AudioPortPin}. */ + String desc; /**< Audio device name */ }; + +/** + * @brief Defines the audio scene descriptor. + */ struct AudioSceneDescriptor { - union SceneDesc scene; - struct AudioDeviceDescriptor desc; + union SceneDesc scene; /**< Describes the audio scene */ + struct AudioDeviceDescriptor desc; /**< Audio device descriptor */ +}; + +/** + * @brief Defines audio input type. + */ +enum AudioInputType { + AUDIO_INPUT_DEFAULT_TYPE = 0, /**< Assigned default input type */ + AUDIO_INPUT_MIC_TYPE = 1 << 0, /**< Assigned mic input type */ + AUDIO_INPUT_SPEECH_WAKEUP_TYPE = 1 << 1, /**< Assigned speech wakeup input type */ + AUDIO_INPUT_VOICE_COMMUNICATION_TYPE = 1 << 2, /**< Assigned voice communication input type */ + AUDIO_INPUT_VOICE_RECOGNITION_TYPE = 1 << 3, /**< Assigned voice recognition input type */ }; + +/** + * @brief Defines audio sampling attributes. + */ struct AudioSampleAttributes { - enum AudioCategory type; - boolean interleaved; - enum AudioFormat format; - unsigned int sampleRate; - unsigned int channelCount; - unsigned int period; - unsigned int frameSize; - boolean isBigEndian; - boolean isSignedData; - unsigned int startThreshold; - unsigned int stopThreshold; - unsigned int silenceThreshold; - int streamId; + enum AudioCategory type; /**< Audio type. For details, see {@link AudioCategory} */ + boolean interleaved; /**< Interleaving flag of audio data */ + enum AudioFormat format; /**< Audio data format. For details, see {@link AudioFormat}. */ + unsigned int sampleRate; /**< Audio sampling rate */ + unsigned int channelCount; /**< Number of audio channels. For example, for the mono channel, the value is 1, + * and for the stereo channel, the value is 2. + */ + unsigned int period; /**< Audio sampling period */ + unsigned int frameSize; /**< Frame size of the audio data */ + boolean isBigEndian; /**< Big endian flag of audio data */ + boolean isSignedData; /**< Signed or unsigned flag of audio data */ + unsigned int startThreshold; /**< Audio render start threshold. */ + unsigned int stopThreshold; /**< Audio render stop threshold. */ + unsigned int silenceThreshold; /**< Audio capture buffer threshold. */ + int streamId; /**< Audio Identifier of render or capture */ + int sourceType; /**< Audio sourceType of render or capture */ }; + +/** + * @brief Defines the audio timestamp, which is a substitute for POSIX timespec. + */ struct AudioTimeStamp { - long tvSec; - long tvNSec; + long tvSec; /**< Seconds */ + long tvNSec; /**< Nanoseconds */ }; + +/** + * @brief Defines the sub-port capability. + */ struct AudioSubPortCapability { - unsigned int portId; - String desc; - enum AudioPortPassthroughMode mask; + unsigned int portId; /**< Sub-port ID */ + String desc; /**< Sub-port name */ + enum AudioPortPassthroughMode mask; /**< Passthrough mode of data transmission. For details, + * see {@link AudioPortPassthroughMode}. + */ }; + +/** + * @brief Defines the audio port capability. + */ struct AudioPortCapability { - unsigned int deviceType; - unsigned int deviceId; - boolean hardwareMode; - unsigned int formatNum; - enum AudioFormat[] formats; - unsigned int sampleRateMasks; - enum AudioChannelMask channelMasks; - unsigned int channelCount; - struct AudioSubPortCapability[] subPorts; - enum AudioSampleFormat[] supportSampleFormats; + unsigned int deviceType; /**< Device type (output or input) */ + unsigned int deviceId; /**< Device ID used for device binding */ + boolean hardwareMode; /**< Whether to support device binding */ + unsigned int formatNum; /**< Number of the supported audio formats */ + enum AudioFormat[] formats; /**< Supported audio formats. For details, see {@link AudioFormat}. */ + unsigned int sampleRateMasks; /**< Supported audio sampling rates (8 kHz, 16 kHz, 32 kHz, and 48 kHz) */ + enum AudioChannelMask channelMasks; /**< Audio channel layout mask of the device. For details, + * see {@link AudioChannelMask}. + */ + unsigned int channelCount; /**< Supported maximum number of audio channels */ + struct AudioSubPortCapability[] subPorts; /**< List of supported sub-ports */ + enum AudioSampleFormat[] supportSampleFormats; /**< Supported audio sample formats. For details, + * see {@link AudioSampleFormat}. + */ }; + +/** + * @brief Describes a mmap buffer. + */ struct AudioMmapBufferDescriptor { - byte[] memoryAddress; - FileDescriptor memoryFd; - int totalBufferFrames; - int transferFrameSize; - int isShareable; - unsigned int offset; - String filePath; + byte[] memoryAddress; /**< Pointer to the mmap buffer */ + FileDescriptor memoryFd; /**< File descriptor of the mmap buffer */ + int totalBufferFrames; /**< Total size of the mmap buffer (unit: frame )*/ + int transferFrameSize; /**< Transfer size (unit: frame) */ + int isShareable; /**< Whether the mmap buffer can be shared among processes */ + unsigned int offset; /**< off set */ + String filePath; /**< file path */ }; + +/** + * @brief Describes AudioDevExtInfo. + */ struct AudioDevExtInfo { - int moduleId; - enum AudioPortPin type; - String desc; + int moduleId; /**< Identifier of the module stream is attached to */ + enum AudioPortPin type; /**< Device type For details, see {@link AudioPortPin}. */ + String desc; /**< Address */ }; + +/** + * @brief Describes AudioMixInfo. + */ struct AudioMixExtInfo { - int moduleId; - int streamId; + int moduleId; /**< Identifier of the module stream is attached to */ + int streamId; /**< Identifier of the capture or render passed by caller */ }; + +/** + * @brief Describes AudioSessionExtInfo. + */ struct AudioSessionExtInfo { - enum AudioSessionType sessionType; + enum AudioSessionType sessionType; /**< Audio session type */ }; + +/** + * @brief Describes AudioInfo. + */ struct AudioInfo { - struct AudioDevExtInfo device; - struct AudioMixExtInfo mix; - struct AudioSessionExtInfo session; + struct AudioDevExtInfo device; /* Specific Device Ext info */ + struct AudioMixExtInfo mix; /* Specific mix info */ + struct AudioSessionExtInfo session; /* session specific info */ }; + +/** + * @brief Describes AudioRouteNode. + */ struct AudioRouteNode { - int portId; - enum AudioPortRole role; - enum AudioPortType type; - struct AudioInfo ext; + int portId; /**< Audio port ID */ + enum AudioPortRole role; /**< Audio port as a sink or a source */ + enum AudioPortType type; /**< device, mix ... */ + struct AudioInfo ext; /**< The ext object */ }; + +/** + * @brief Describes AudioRoute. + */ struct AudioRoute { - struct AudioRouteNode[] sources; - struct AudioRouteNode[] sinks; + struct AudioRouteNode[] sources; /**< List of sources */ + struct AudioRouteNode[] sinks; /**< List of sinks */ }; + +/** + * @brief Describes AudioEvent. + */ struct AudioEvent { - unsigned int eventType; /**< @link enum AudioEventType */ + unsigned int eventType; /**< @link enum AudioEventType */ unsigned int deviceType; /**< @link enum AudioDeviceType */ }; diff --git a/hdf_interfaces/distributed_audio/audio/v1_0/IAudioAdapter.idl b/hdf_interfaces/distributed_audio/audio/v1_0/IAudioAdapter.idl index 39f5ff59..739a4fa3 100644 --- a/hdf_interfaces/distributed_audio/audio/v1_0/IAudioAdapter.idl +++ b/hdf_interfaces/distributed_audio/audio/v1_0/IAudioAdapter.idl @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 Huawei Device Co., Ltd. + * Copyright (c) 2022-2023 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at @@ -20,12 +20,23 @@ import ohos.hdi.distributed_audio.audio.v1_0.IAudioCapture; import ohos.hdi.distributed_audio.audio.v1_0.IAudioRender; import ohos.hdi.distributed_audio.audio.v1_0.IAudioCallback; +/** + * @brief Provides audio adapter capabilities, including initializing ports, creating rendering and capturing tasks, + * and obtaining the port capability set. + * + * @see IAudioRender + * @see IAudioCapture + * @since 4.0 + * @version 1.0 + */ interface IAudioAdapter { InitAllPorts(); - CreateRender([in] struct AudioDeviceDescriptor desc, [in] struct AudioSampleAttributes attrs, [out] IAudioRender render); - DestroyRender([in] struct AudioDeviceDescriptor desc); - CreateCapture([in] struct AudioDeviceDescriptor desc, [in] struct AudioSampleAttributes attrs, [out] IAudioCapture capture); - DestroyCapture([in] struct AudioDeviceDescriptor desc); + CreateRender([in] struct AudioDeviceDescriptor desc, [in] struct AudioSampleAttributes attrs, + [out] IAudioRender render, [out] unsigned int renderId); + DestroyRender([in] unsigned int renderId); + CreateCapture([in] struct AudioDeviceDescriptor desc, [in] struct AudioSampleAttributes attrs, + [out] IAudioCapture capture, [out] unsigned int captureId); + DestroyCapture([in] unsigned int captureId); GetPortCapability([in] struct AudioPort port, [out] struct AudioPortCapability capability); SetPassthroughMode([in] struct AudioPort port, [in] enum AudioPortPassthroughMode mode); GetPassthroughMode([in] struct AudioPort port, [out] enum AudioPortPassthroughMode mode); @@ -38,4 +49,4 @@ interface IAudioAdapter { SetExtraParams([in] enum AudioExtParamKey key, [in] String condition, [in] String value); GetExtraParams([in] enum AudioExtParamKey key, [in] String condition, [out] String value); RegExtraParamObserver([in] IAudioCallback audioCallback, [in] byte cookie); -} +} \ No newline at end of file diff --git a/hdf_interfaces/distributed_audio/audio/v1_0/IAudioCallback.idl b/hdf_interfaces/distributed_audio/audio/v1_0/IAudioCallback.idl index f73ff31b..7e29d458 100644 --- a/hdf_interfaces/distributed_audio/audio/v1_0/IAudioCallback.idl +++ b/hdf_interfaces/distributed_audio/audio/v1_0/IAudioCallback.idl @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 Huawei Device Co., Ltd. + * Copyright (c) 2022-2023 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at @@ -42,5 +42,5 @@ import ohos.hdi.distributed_audio.audio.v1_0.AudioTypes; */ [callback] interface IAudioCallback { RenderCallback([in] enum AudioCallbackType type, [out] byte reserved, [out] byte cookie); - ParamCallback([in] enum AudioExtParamKey key, [in] String condition, [in] String value, [out] byte reserved, [out] byte cookie); + ParamCallback([in] enum AudioExtParamKey key, [in] String condition, [in] String value, [out] byte reserved, [in] byte cookie); } diff --git a/hdf_interfaces/distributed_audio/audio/v1_0/IAudioCapture.idl b/hdf_interfaces/distributed_audio/audio/v1_0/IAudioCapture.idl index c93ae011..51b6f0d3 100644 --- a/hdf_interfaces/distributed_audio/audio/v1_0/IAudioCapture.idl +++ b/hdf_interfaces/distributed_audio/audio/v1_0/IAudioCapture.idl @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 Huawei Device Co., Ltd. + * Copyright (c) 2022-2023 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at @@ -17,8 +17,14 @@ package ohos.hdi.distributed_audio.audio.v1_0; import ohos.hdi.distributed_audio.audio.v1_0.AudioTypes; +/** + * @brief Provides capabilities for audio capturing, including controlling the capturing, setting audio attributes, + * scenes, and volume, and capturing audio frames. + * @since 4.0 + * @version 1.0 + */ interface IAudioCapture { - CaptureFrame([out] byte[] frame, [in] unsigned long requestBytes); + CaptureFrame([out] byte[] frame, [out] unsigned long replyBytes); GetCapturePosition([out] unsigned long frames, [out] struct AudioTimeStamp time); CheckSceneCapability([in] struct AudioSceneDescriptor scene, [out] boolean supported); SelectScene([in] struct AudioSceneDescriptor scene); diff --git a/hdf_interfaces/distributed_audio/audio/v1_0/IAudioManager.idl b/hdf_interfaces/distributed_audio/audio/v1_0/IAudioManager.idl index beef5caf..16061bf1 100644 --- a/hdf_interfaces/distributed_audio/audio/v1_0/IAudioManager.idl +++ b/hdf_interfaces/distributed_audio/audio/v1_0/IAudioManager.idl @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 Huawei Device Co., Ltd. + * Copyright (c) 2022-2023 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at @@ -18,6 +18,14 @@ package ohos.hdi.distributed_audio.audio.v1_0; import ohos.hdi.distributed_audio.audio.v1_0.AudioTypes; import ohos.hdi.distributed_audio.audio.v1_0.IAudioAdapter; +/** + * @brief Manages audio adapters through a specific adapter driver program loaded based on the given audio + * adapter descriptor. + * + * @see IAudioAdapter + * @since 4.0 + * @version 1.0 + */ interface IAudioManager { GetAllAdapters([out] struct AudioAdapterDescriptor[] descs); LoadAdapter([in] struct AudioAdapterDescriptor desc, [out] IAudioAdapter adapter); diff --git a/hdf_interfaces/distributed_audio/audio/v1_0/IAudioRender.idl b/hdf_interfaces/distributed_audio/audio/v1_0/IAudioRender.idl index 4e24e431..c4a898bf 100644 --- a/hdf_interfaces/distributed_audio/audio/v1_0/IAudioRender.idl +++ b/hdf_interfaces/distributed_audio/audio/v1_0/IAudioRender.idl @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 Huawei Device Co., Ltd. + * Copyright (c) 2022-2023 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at @@ -18,6 +18,13 @@ package ohos.hdi.distributed_audio.audio.v1_0; import ohos.hdi.distributed_audio.audio.v1_0.AudioTypes; import ohos.hdi.distributed_audio.audio.v1_0.IAudioCallback; +/** + * @brief Provides capabilities for audio rendering, including controlling the rendering, setting audio attributes, + * scenes, and volume, obtaining hardware latency, and rendering audio frames. + * + * @since 4.0 + * @version 1.0 + */ interface IAudioRender { GetLatency([out] unsigned int ms); RenderFrame([in] byte[] frame, [out] unsigned long replyBytes); diff --git a/hdf_service/distributed_audio/hdi_service/audio/v1_0/include/audio_adapter_interface_impl.h b/hdf_service/distributed_audio/hdi_service/audio/v1_0/include/audio_adapter_interface_impl.h index cee31f40..7a6018df 100644 --- a/hdf_service/distributed_audio/hdi_service/audio/v1_0/include/audio_adapter_interface_impl.h +++ b/hdf_service/distributed_audio/hdi_service/audio/v1_0/include/audio_adapter_interface_impl.h @@ -73,11 +73,11 @@ public: int32_t InitAllPorts() override; int32_t CreateRender(const AudioDeviceDescriptor &desc, const AudioSampleAttributes &attrs, - sptr &render) override; - int32_t DestroyRender(const AudioDeviceDescriptor &desc) override; + sptr &render, uint32_t &renderId) override; + int32_t DestroyRender(uint32_t renderId) override; int32_t CreateCapture(const AudioDeviceDescriptor &desc, const AudioSampleAttributes &attrs, - sptr &capture) override; - int32_t DestroyCapture(const AudioDeviceDescriptor &desc) override; + sptr &capture, uint32_t &captureId) override; + int32_t DestroyCapture(uint32_t captureId) override; int32_t GetPortCapability(const AudioPort &port, AudioPortCapability &capability) override; int32_t SetPassthroughMode(const AudioPort &port, AudioPortPassthroughMode mode) override; int32_t GetPassthroughMode(const AudioPort &port, AudioPortPassthroughMode &mode) override; @@ -119,6 +119,12 @@ private: int32_t WaitForSANotify(const AudioDeviceEvent &event); int32_t HandleDeviceClosed(const DAudioEvent &event); int32_t getEventTypeFromCondition(const std::string& condition); + int32_t InsertRenderImpl(const sptr &audioRender, uint32_t &renderId); + int32_t InsertCapImpl(const sptr &audioCapture, uint32_t &captureId); + inline bool IsIdValid(const uint32_t id); + bool CheckRendersValid(); + bool CheckCapsValid(); + void SetDumpFlag(bool isRender); private: static constexpr uint8_t WAIT_SECONDS = 10; @@ -129,9 +135,11 @@ private: sptr extSpkCallback_ = nullptr; sptr extMicCallback_ = nullptr; sptr paramCallback_ = nullptr; - sptr audioRender_ = nullptr; + std::mutex renderDevMtx_; + std::vector> renderDevs_; AudioParameter renderParam_; - sptr audioCapture_ = nullptr; + std::mutex capDevMtx_; + std::vector> captureDevs_; AudioParameter captureParam_; std::mutex devMapMtx_; diff --git a/hdf_service/distributed_audio/hdi_service/audio/v1_0/include/audio_capture_interface_impl.h b/hdf_service/distributed_audio/hdi_service/audio/v1_0/include/audio_capture_interface_impl.h index cd9e25ba..7056d9b3 100644 --- a/hdf_service/distributed_audio/hdi_service/audio/v1_0/include/audio_capture_interface_impl.h +++ b/hdf_service/distributed_audio/hdi_service/audio/v1_0/include/audio_capture_interface_impl.h @@ -41,7 +41,7 @@ public: const AudioSampleAttributes &attrs, const sptr &callback); ~AudioCaptureInterfaceImpl() override; - int32_t CaptureFrame(std::vector &frame, uint64_t requestBytes) override; + int32_t CaptureFrame(std::vector &frame, uint64_t &replyBytes) override; int32_t GetCapturePosition(uint64_t &frames, AudioTimeStamp &time) override; int32_t CheckSceneCapability(const AudioSceneDescriptor &scene, bool &supported) override; int32_t SelectScene(const AudioSceneDescriptor &scene) override; diff --git a/hdf_service/distributed_audio/hdi_service/audio/v1_0/src/audio_adapter_interface_impl.cpp b/hdf_service/distributed_audio/hdi_service/audio/v1_0/src/audio_adapter_interface_impl.cpp index e5583255..1be35bac 100644 --- a/hdf_service/distributed_audio/hdi_service/audio/v1_0/src/audio_adapter_interface_impl.cpp +++ b/hdf_service/distributed_audio/hdi_service/audio/v1_0/src/audio_adapter_interface_impl.cpp @@ -34,11 +34,18 @@ namespace HDI { namespace DistributedAudio { namespace Audio { namespace V1_0 { +static constexpr uint32_t MAX_AUDIO_STREAM_NUM = 10; + AudioAdapterInterfaceImpl::AudioAdapterInterfaceImpl(const AudioAdapterDescriptor &desc) : adpDescriptor_(desc) { + renderDevs_ = std::vector>( + MAX_AUDIO_STREAM_NUM, sptr(nullptr)); + captureDevs_ = std::vector>( + MAX_AUDIO_STREAM_NUM, sptr(nullptr)); renderParam_ = { 0, 0, 0, 0, 0, 0 }; captureParam_ = { 0, 0, 0, 0, 0, 0 }; + DHLOGD("Distributed audio adapter constructed, name(%s).", GetAnonyString(desc.adapterName).c_str()); } @@ -72,11 +79,12 @@ int32_t AudioAdapterInterfaceImpl::InitAllPorts() } int32_t AudioAdapterInterfaceImpl::CreateRender(const AudioDeviceDescriptor &desc, - const AudioSampleAttributes &attrs, sptr &render) + const AudioSampleAttributes &attrs, sptr &render, uint32_t &renderId) { DHLOGI("Create distributed audio render, {pin: %zu, sampleRate: %zu, channel: %zu, formats: %zu, type: %d}.", desc.pins, attrs.sampleRate, attrs.channelCount, attrs.format, static_cast(attrs.type)); render = nullptr; + sptr audioRender = nullptr; { std::lock_guard devLck(devMapMtx_); if (mapAudioDevice_.find(desc.pins) == mapAudioDevice_.end()) { @@ -84,64 +92,100 @@ int32_t AudioAdapterInterfaceImpl::CreateRender(const AudioDeviceDescriptor &des return HDF_FAILURE; } } + #ifdef DAUDIO_SUPPORT_EXTENSION if (attrs.type == AUDIO_MMAP_NOIRQ) { DHLOGI("Try to mmap mode."); renderFlags_ = Audioext::V1_0::MMAP_MODE; - audioRender_ = new AudioRenderExtImpl(); - audioRender_->SetAttrs(adpDescriptor_.adapterName, desc, attrs, extSpkCallback_); + audioRender = new AudioRenderExtImpl(); + audioRender->SetAttrs(adpDescriptor_.adapterName, desc, attrs, extSpkCallback_); } else { DHLOGI("Try to normal mode."); renderFlags_ = Audioext::V1_0::NORMAL_MODE; - audioRender_ = new AudioRenderInterfaceImpl(adpDescriptor_.adapterName, desc, attrs, extSpkCallback_); + audioRender = new AudioRenderInterfaceImpl(adpDescriptor_.adapterName, desc, attrs, extSpkCallback_); } #else renderFlags_ = Audioext::V1_0::NORMAL_MODE; - audioRender_ = new AudioRenderInterfaceImpl(adpDescriptor_.adapterName, desc, attrs, extSpkCallback_); + audioRender = new AudioRenderInterfaceImpl(adpDescriptor_.adapterName, desc, attrs, extSpkCallback_); #endif - if (audioRender_ == nullptr) { + if (audioRender == nullptr) { DHLOGE("Create render failed."); return HDF_FAILURE; } - int32_t ret = OpenRenderDevice(desc, attrs); if (ret != DH_SUCCESS) { DHLOGE("Open render device failed."); - audioRender_ = nullptr; + audioRender = nullptr; return ret == ERR_DH_AUDIO_HDF_WAIT_TIMEOUT ? HDF_ERR_TIMEOUT : HDF_FAILURE; } - render = audioRender_; - DHLOGI("Create render success."); + render = audioRender; + if (InsertRenderImpl(audioRender, renderId) != HDF_SUCCESS) { + DHLOGE("Generrate render ID and insert render failed."); + return HDF_FAILURE; + } + DHLOGI("Create render success, render ID is %u.", renderId); return HDF_SUCCESS; } -int32_t AudioAdapterInterfaceImpl::DestroyRender(const AudioDeviceDescriptor &desc) +int32_t AudioAdapterInterfaceImpl::InsertRenderImpl(const sptr &audioRender, + uint32_t &renderId) { - DHLOGI("Destroy distributed audio render, {pin: %zu}.", desc.pins); - if (audioRender_ == nullptr) { - DHLOGD("Render has not been created, do not need destroy."); - return HDF_SUCCESS; + std::lock_guard devLck(renderDevMtx_); + if (renderDevs_.size() != MAX_AUDIO_STREAM_NUM) { + DHLOGE("Render device contain check error."); + return HDF_FAILURE; + } + renderId = MAX_AUDIO_STREAM_NUM; + for (uint32_t i = 0; i < MAX_AUDIO_STREAM_NUM; i++) { + if (renderDevs_[i] == nullptr) { + renderId = i; + break; + } } - if (desc.pins != audioRender_->GetRenderDesc().pins) { - DHLOGE("Render pin is wrong, destroy render failed."); + if (renderId == MAX_AUDIO_STREAM_NUM) { + DHLOGE("The device is busy, can't create render anymore."); return HDF_FAILURE; } + renderDevs_[renderId] = audioRender; + return HDF_SUCCESS; +} + +int32_t AudioAdapterInterfaceImpl::DestroyRender(uint32_t renderId) +{ + DHLOGI("Destroy distributed audio render, ID: %u.", renderId); + if (!IsIdValid(renderId)) { + DHLOGE("The input render ID is invalid."); + return HDF_FAILURE; + } + sptr audioRender(nullptr); + { + std::lock_guard devLck(renderDevMtx_); + audioRender = renderDevs_[renderId]; + } + if (audioRender == nullptr) { + DHLOGD("Render has not been created, do not need destroy."); + return HDF_SUCCESS; + } - int32_t ret = CloseRenderDevice(desc); + int32_t ret = CloseRenderDevice(audioRender->GetRenderDesc()); if (ret != DH_SUCCESS) { DHLOGE("Close render device failed."); return HDF_FAILURE; } - audioRender_ = nullptr; + { + std::lock_guard devLck(renderDevMtx_); + renderDevs_[renderId] = nullptr; + } return HDF_SUCCESS; } int32_t AudioAdapterInterfaceImpl::CreateCapture(const AudioDeviceDescriptor &desc, - const AudioSampleAttributes &attrs, sptr &capture) + const AudioSampleAttributes &attrs, sptr &capture, uint32_t &captureId) { DHLOGI("Create distributed audio capture, {pin: %zu, sampleRate: %zu, channel: %zu, formats: %zu}.", desc.pins, attrs.sampleRate, attrs.channelCount, attrs.format); capture = nullptr; + sptr audioCapture(nullptr); { std::lock_guard devLck(devMapMtx_); if (mapAudioDevice_.find(desc.pins) == mapAudioDevice_.end()) { @@ -149,55 +193,90 @@ int32_t AudioAdapterInterfaceImpl::CreateCapture(const AudioDeviceDescriptor &de return HDF_FAILURE; } } + #ifdef DAUDIO_SUPPORT_EXTENSION if (attrs.type == AUDIO_MMAP_NOIRQ) { DHLOGI("Try to mmap mode."); capturerFlags_ = Audioext::V1_0::MMAP_MODE; - audioCapture_ = new AudioCaptureExtImpl(); - audioCapture_->SetAttrs(adpDescriptor_.adapterName, desc, attrs, extMicCallback_); + audioCapture = new AudioCaptureExtImpl(); + audioCapture->SetAttrs(adpDescriptor_.adapterName, desc, attrs, extMicCallback_); } else { DHLOGI("Try to normal mode."); capturerFlags_ = Audioext::V1_0::NORMAL_MODE; - audioCapture_ = new AudioCaptureInterfaceImpl(adpDescriptor_.adapterName, desc, attrs, extMicCallback_); + audioCapture = new AudioCaptureInterfaceImpl(adpDescriptor_.adapterName, desc, attrs, extMicCallback_); } #else capturerFlags_ = Audioext::V1_0::NORMAL_MODE; - audioCapture_ = new AudioCaptureInterfaceImpl(adpDescriptor_.adapterName, desc, attrs, extMicCallback_); + audioCapture = new AudioCaptureInterfaceImpl(adpDescriptor_.adapterName, desc, attrs, extMicCallback_); #endif - if (audioCapture_ == nullptr) { + if (audioCapture == nullptr) { DHLOGE("Create capture failed."); return HDF_FAILURE; } - int32_t ret = OpenCaptureDevice(desc, attrs); if (ret != DH_SUCCESS) { DHLOGE("Open capture device failed."); - audioCapture_ = nullptr; + audioCapture = nullptr; return ret == ERR_DH_AUDIO_HDF_WAIT_TIMEOUT ? HDF_ERR_TIMEOUT : HDF_FAILURE; } - capture = audioCapture_; - DHLOGI("Create capture success."); + capture = audioCapture; + if (InsertCapImpl(audioCapture, captureId) != HDF_SUCCESS) { + DHLOGE("Generrate capture ID and insert capture failed."); + return HDF_FAILURE; + } + DHLOGI("Create capture success, capture ID is %u.", captureId); return HDF_SUCCESS; } -int32_t AudioAdapterInterfaceImpl::DestroyCapture(const AudioDeviceDescriptor &desc) +int32_t AudioAdapterInterfaceImpl::InsertCapImpl(const sptr &audioCapture, + uint32_t &captureId) { - DHLOGI("Destroy distributed audio capture, {pin: %zu}.", desc.pins); - if (audioCapture_ == nullptr) { - DHLOGD("Capture has not been created, do not need destroy."); - return HDF_SUCCESS; + std::lock_guard devLck(capDevMtx_); + if (captureDevs_.size() != MAX_AUDIO_STREAM_NUM) { + DHLOGE("Capture device's size check error."); + return HDF_FAILURE; + } + captureId = MAX_AUDIO_STREAM_NUM; + for (uint32_t i = 0; i < MAX_AUDIO_STREAM_NUM; i++) { + if (captureDevs_[i] == nullptr) { + captureId = i; + break; + } + } + if (captureId == MAX_AUDIO_STREAM_NUM) { + DHLOGE("The device is busy, can't create capture anymore."); + return HDF_FAILURE; } - if (desc.pins != audioCapture_->GetCaptureDesc().pins) { - DHLOGE("Capture pin is wrong, destroy capture failed."); + captureDevs_[captureId] = audioCapture; + return HDF_SUCCESS; +} + +int32_t AudioAdapterInterfaceImpl::DestroyCapture(uint32_t captureId) +{ + DHLOGI("Destroy distributed audio capture, ID: %u.", captureId); + if (!IsIdValid(captureId)) { + DHLOGE("The input capture ID is invalid."); return HDF_FAILURE; } + sptr audioCapture(nullptr); + { + std::lock_guard devLck(capDevMtx_); + audioCapture = captureDevs_[captureId]; + } + if (audioCapture == nullptr) { + DHLOGD("Capture has not been created, do not need destroy."); + return HDF_SUCCESS; + } - int32_t ret = CloseCaptureDevice(desc); + int32_t ret = CloseCaptureDevice(audioCapture->GetCaptureDesc()); if (ret != DH_SUCCESS) { DHLOGE("Close capture device failed."); return HDF_FAILURE; } - audioCapture_ = nullptr; + { + std::lock_guard devLck(capDevMtx_); + captureDevs_[captureId] = nullptr; + } return HDF_SUCCESS; } @@ -348,7 +427,7 @@ int32_t AudioAdapterInterfaceImpl::AdapterLoad() int32_t AudioAdapterInterfaceImpl::AdapterUnload() { - if (audioRender_ != nullptr || audioCapture_ != nullptr) { + if (CheckRendersValid() || CheckCapsValid()) { DHLOGE("Adapter is busy, audio render or capture is not null."); return HDF_ERR_DEVICE_BUSY; } @@ -410,14 +489,15 @@ int32_t AudioAdapterInterfaceImpl::RemoveAudioDevice(const uint32_t devId) } mapAudioDevice_.erase(devId); } - AudioDeviceDescriptor dec; if (devId == spkPinInUse_) { - dec.pins = static_cast(spkPinInUse_); - DestroyRender(dec); + for (uint32_t i = 0; i < MAX_AUDIO_STREAM_NUM; i++) { + DestroyRender(i); + } } if (devId == micPinInUse_) { - dec.pins = static_cast(micPinInUse_); - DestroyCapture(dec); + for (uint32_t capId = 0; capId < MAX_AUDIO_STREAM_NUM; capId++) { + DestroyCapture(capId); + } } DHLOGI("Remove audio device success."); @@ -590,10 +670,6 @@ int32_t AudioAdapterInterfaceImpl::SetAudioVolume(const std::string& condition, DHLOGE("Callback is nullptr."); return ERR_DH_AUDIO_HDF_NULLPTR; } - if (audioRender_ == nullptr) { - DHLOGE("Render has not been created."); - return ERR_DH_AUDIO_HDF_NULLPTR; - } std::string content = condition; int32_t type = getEventTypeFromCondition(content); EXT_PARAM_EVENT eventType; @@ -615,18 +691,32 @@ int32_t AudioAdapterInterfaceImpl::SetAudioVolume(const std::string& condition, SetAudioParamStr(content, VOLUME_LEVEL, param); } DAudioEvent event = { eventType, content }; - int32_t ret = - extSpkCallback_->NotifyEvent(adpDescriptor_.adapterName, audioRender_->GetRenderDesc().pins, event); - if (ret != HDF_SUCCESS) { - DHLOGE("NotifyEvent failed."); - return ERR_DH_AUDIO_HDF_FAIL; + + { + std::lock_guard devLck(renderDevMtx_); + for (auto render : renderDevs_) { + if (render == nullptr) { + continue; + } + if (extSpkCallback_->NotifyEvent(adpDescriptor_.adapterName, + render->GetRenderDesc().pins, event) != HDF_SUCCESS) { + DHLOGE("NotifyEvent failed."); + return ERR_DH_AUDIO_HDF_FAIL; + } + } } return DH_SUCCESS; } int32_t AudioAdapterInterfaceImpl::GetAudioVolume(const std::string& condition, std::string ¶m) { - if (audioRender_ == nullptr) { + int renderId = 0; // fromaudio framwork + sptr audioRender(nullptr); + { + std::lock_guard devLck(renderDevMtx_); + audioRender = renderDevs_[renderId]; + } + if (audioRender == nullptr) { DHLOGE("Render has not been created."); return ERR_DH_AUDIO_HDF_NULLPTR; } @@ -634,13 +724,13 @@ int32_t AudioAdapterInterfaceImpl::GetAudioVolume(const std::string& condition, uint32_t vol; switch (type) { case VolumeEventType::EVENT_GET_VOLUME: - vol = audioRender_->GetVolumeInner(); + vol = audioRender->GetVolumeInner(); break; case VolumeEventType::EVENT_GET_MAX_VOLUME: - vol = audioRender_->GetMaxVolumeInner(); + vol = audioRender->GetMaxVolumeInner(); break; case VolumeEventType::EVENT_GET_MIN_VOLUME: - vol = audioRender_->GetMinVolumeInner(); + vol = audioRender->GetMinVolumeInner(); break; case VolumeEventType::EVENT_IS_STREAM_MUTE: vol = streamMuteStatus_; @@ -663,7 +753,13 @@ int32_t AudioAdapterInterfaceImpl::getEventTypeFromCondition(const std::string & int32_t AudioAdapterInterfaceImpl::HandleVolumeChangeEvent(const DAudioEvent &event) { DHLOGI("Vol change (%s).", event.content.c_str()); - if (audioRender_ == nullptr) { + int renderId = 0; // daudio SA + sptr audioRender(nullptr); + { + std::lock_guard devLck(renderDevMtx_); + audioRender = renderDevs_[renderId]; + } + if (audioRender == nullptr) { DHLOGE("Render has not been created."); return ERR_DH_AUDIO_HDF_NULLPTR; } @@ -685,18 +781,18 @@ int32_t AudioAdapterInterfaceImpl::HandleVolumeChangeEvent(const DAudioEvent &ev if (ret != DH_SUCCESS) { DHLOGE("Get min volume value failed, use defult min volume."); } - audioRender_->SetVolumeInner(vol); - audioRender_->SetVolumeRangeInner(maxVol, minVol); + audioRender->SetVolumeInner(vol); + audioRender->SetVolumeRangeInner(maxVol, minVol); return DH_SUCCESS; } - audioRender_->SetVolumeInner(vol); + audioRender->SetVolumeInner(vol); if (paramCallback_ == nullptr) { DHLOGE("Audio param observer is null."); return ERR_DH_AUDIO_HDF_NULLPTR; } - int8_t reserved; - int8_t cookie; + int8_t reserved = 0; + int8_t cookie = 0; ret = paramCallback_->ParamCallback(AUDIO_EXT_PARAM_KEY_VOLUME, event.content, std::to_string(vol), reserved, cookie); if (ret != DH_SUCCESS) { @@ -713,8 +809,8 @@ int32_t AudioAdapterInterfaceImpl::HandleFocusChangeEvent(const DAudioEvent &eve DHLOGE("Audio param observer is null."); return ERR_DH_AUDIO_HDF_NULLPTR; } - int8_t reserved; - int8_t cookie; + int8_t reserved = 0; + int8_t cookie = 0; int32_t ret = paramCallback_->ParamCallback(AUDIO_EXT_PARAM_KEY_FOCUS, event.content, "", reserved, cookie); if (ret != DH_SUCCESS) { DHLOGE("Notify Focus failed."); @@ -730,8 +826,8 @@ int32_t AudioAdapterInterfaceImpl::HandleRenderStateChangeEvent(const DAudioEven DHLOGE("Audio param observer is null."); return ERR_DH_AUDIO_HDF_NULLPTR; } - int8_t reserved; - int8_t cookie; + int8_t reserved = 0; + int8_t cookie = 0; int32_t ret = paramCallback_->ParamCallback(AUDIO_EXT_PARAM_KEY_STATUS, event.content, "", reserved, cookie); if (ret != DH_SUCCESS) { DHLOGE("Notify render state failed."); @@ -773,14 +869,10 @@ int32_t AudioAdapterInterfaceImpl::HandleSANotifyEvent(const DAudioEvent &event) micWaitCond_.notify_all(); break; case HDF_AUDIO_EVENT_SPK_DUMP: - if (audioRender_ != nullptr) { - audioRender_->SetDumpFlagInner(); - } + SetDumpFlag(true); break; case HDF_AUDIO_EVENT_MIC_DUMP: - if (audioCapture_ != nullptr) { - audioCapture_->SetDumpFlagInner(); - } + SetDumpFlag(false); break; default: DHLOGE("Notify not support event type %d, event content: %s.", event.type, event.content.c_str()); @@ -842,8 +934,8 @@ int32_t AudioAdapterInterfaceImpl::HandleDeviceClosed(const DAudioEvent &event) std::stringstream ss; ss << "ERR_EVENT;DEVICE_TYPE=" << (event.type == HDF_AUDIO_EVENT_SPK_CLOSED ? AUDIO_DEVICE_TYPE_SPEAKER : AUDIO_DEVICE_TYPE_MIC) << ";"; - int8_t reserved; - int8_t cookie; + int8_t reserved = 0; + int8_t cookie = 0; int32_t ret = paramCallback_->ParamCallback(AUDIO_EXT_PARAM_KEY_STATUS, ss.str(), std::to_string(EVENT_DEV_CLOSED), reserved, cookie); if (ret != DH_SUCCESS) { @@ -851,15 +943,24 @@ int32_t AudioAdapterInterfaceImpl::HandleDeviceClosed(const DAudioEvent &event) } } - AudioDeviceDescriptor dec; if (isSpkOpened_ && event.type == HDF_AUDIO_EVENT_SPK_CLOSED) { DHLOGE("Render device status error, close render."); - dec.pins = static_cast(spkPinInUse_); - return DestroyRender(dec); + bool destroyStatus = true; + for (uint32_t i = 0; i < MAX_AUDIO_STREAM_NUM; i++) { + if (DestroyRender(i) != DH_SUCCESS) { + destroyStatus = false; + } + } + return destroyStatus ? DH_SUCCESS : ERR_DH_AUDIO_HDF_FAIL; } else if (isMicOpened_ && event.type == HDF_AUDIO_EVENT_MIC_CLOSED) { DHLOGE("Capture device status error, close capture."); - dec.pins = static_cast(micPinInUse_); - return DestroyCapture(dec); + bool capCloseStatus = true; + for (uint32_t i = 0; i < MAX_AUDIO_STREAM_NUM; i++) { + if (DestroyCapture(i) != DH_SUCCESS) { + capCloseStatus = false; + } + } + return capCloseStatus ? DH_SUCCESS : ERR_DH_AUDIO_HDF_FAIL; } DHLOGI("Handle device closed success."); return DH_SUCCESS; @@ -870,6 +971,64 @@ bool AudioAdapterInterfaceImpl::IsPortsNoReg() std::lock_guard devLck(devMapMtx_); return mapAudioDevice_.empty(); } + +inline bool AudioAdapterInterfaceImpl::IsIdValid(const uint32_t id) +{ + if (id >= MAX_AUDIO_STREAM_NUM) { + DHLOGE("Current id:%u is not supported.", id); + return false; + } + return true; +} + +bool AudioAdapterInterfaceImpl::CheckRendersValid() +{ + { + std::lock_guard devLck(renderDevMtx_); + for (uint32_t i = 0; i < MAX_AUDIO_STREAM_NUM; i++) { + if (renderDevs_[i] != nullptr) { + DHLOGI("Containing active render."); + return true; + } + } + } + return false; +} + +bool AudioAdapterInterfaceImpl::CheckCapsValid() +{ + { + std::lock_guard devLck(capDevMtx_); + for (uint32_t i = 0; i < MAX_AUDIO_STREAM_NUM; i++) { + if (captureDevs_[i] != nullptr) { + DHLOGI("Containing active capture."); + return true; + } + } + } + return false; +} + +void AudioAdapterInterfaceImpl::SetDumpFlag(bool isRender) +{ + if (isRender) { + std::lock_guard renderLck(renderDevMtx_); + for (auto render : renderDevs_) { + if (render == nullptr) { + continue; + } + render->SetDumpFlagInner(); + } + } else { + std::lock_guard capLck(capDevMtx_); + for (auto capture : captureDevs_) { + if (capture == nullptr) { + continue; + } + capture->SetDumpFlagInner(); + } + } +} } // V1_0 } // Audio } // Distributedaudio diff --git a/hdf_service/distributed_audio/hdi_service/audio/v1_0/src/audio_capture_interface_impl.cpp b/hdf_service/distributed_audio/hdi_service/audio/v1_0/src/audio_capture_interface_impl.cpp index 083282ca..a3722366 100644 --- a/hdf_service/distributed_audio/hdi_service/audio/v1_0/src/audio_capture_interface_impl.cpp +++ b/hdf_service/distributed_audio/hdi_service/audio/v1_0/src/audio_capture_interface_impl.cpp @@ -60,7 +60,7 @@ int32_t AudioCaptureInterfaceImpl::GetCapturePosition(uint64_t &frames, AudioTim return HDF_SUCCESS; } -int32_t AudioCaptureInterfaceImpl::CaptureFrame(std::vector &frame, uint64_t requestBytes) +int32_t AudioCaptureInterfaceImpl::CaptureFrame(std::vector &frame, uint64_t &replyBytes) { DHLOGD("Capture frame[sampleRate: %d, channelCount: %d, format: %d, frameSize: %d].", devAttrs_.sampleRate, devAttrs_.channelCount, devAttrs_.format, devAttrs_.frameSize); diff --git a/hdf_service/distributed_audio/hdi_service/audio/v1_0/test/fuzztest/createcapture_fuzzer/createcapture_fuzzer.cpp b/hdf_service/distributed_audio/hdi_service/audio/v1_0/test/fuzztest/createcapture_fuzzer/createcapture_fuzzer.cpp index 87f0fe8a..d49cd09a 100644 --- a/hdf_service/distributed_audio/hdi_service/audio/v1_0/test/fuzztest/createcapture_fuzzer/createcapture_fuzzer.cpp +++ b/hdf_service/distributed_audio/hdi_service/audio/v1_0/test/fuzztest/createcapture_fuzzer/createcapture_fuzzer.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 Huawei Device Co., Ltd. + * Copyright (c) 2022-2023 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at @@ -59,7 +59,8 @@ void CreateCaptureFuzzTest(const uint8_t* data, size_t size) }; sptr capture; - audioAdapter->CreateCapture(deviceDes, sampleAttr, capture); + uint32_t capId; + audioAdapter->CreateCapture(deviceDes, sampleAttr, capture, capId); } } // V1_0 } // Audio diff --git a/hdf_service/distributed_audio/hdi_service/audio/v1_0/test/fuzztest/createrender_fuzzer/createrender_fuzzer.cpp b/hdf_service/distributed_audio/hdi_service/audio/v1_0/test/fuzztest/createrender_fuzzer/createrender_fuzzer.cpp index d3ba28c7..9b0289cd 100644 --- a/hdf_service/distributed_audio/hdi_service/audio/v1_0/test/fuzztest/createrender_fuzzer/createrender_fuzzer.cpp +++ b/hdf_service/distributed_audio/hdi_service/audio/v1_0/test/fuzztest/createrender_fuzzer/createrender_fuzzer.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 Huawei Device Co., Ltd. + * Copyright (c) 2022-2023 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at @@ -59,7 +59,8 @@ void CreateRenderFuzzTest(const uint8_t* data, size_t size) }; sptr render; - audioAdapter->CreateRender(deviceDes, sampleAttr, render); + uint32_t renderId; + audioAdapter->CreateRender(deviceDes, sampleAttr, render, renderId); } } // V1_0 } // Audio diff --git a/hdf_service/distributed_audio/hdi_service/audio/v1_0/test/fuzztest/destroycapture_fuzzer/destroycapture_fuzzer.cpp b/hdf_service/distributed_audio/hdi_service/audio/v1_0/test/fuzztest/destroycapture_fuzzer/destroycapture_fuzzer.cpp index fcf2144b..3cd06868 100644 --- a/hdf_service/distributed_audio/hdi_service/audio/v1_0/test/fuzztest/destroycapture_fuzzer/destroycapture_fuzzer.cpp +++ b/hdf_service/distributed_audio/hdi_service/audio/v1_0/test/fuzztest/destroycapture_fuzzer/destroycapture_fuzzer.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 Huawei Device Co., Ltd. + * Copyright (c) 2022-2023 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at @@ -36,13 +36,8 @@ void DestroyCaptureFuzzTest(const uint8_t* data, size_t size) AudioAdapterDescriptor desc; auto audioAdapter = std::make_shared(desc); - AudioDeviceDescriptor deviceDes = { - .portId = *(reinterpret_cast(data)), - .pins = *(reinterpret_cast(data)), - .desc = std::string(reinterpret_cast(data), size), - }; - - audioAdapter->DestroyCapture(deviceDes); + uint32_t capId = *(reinterpret_cast(data)); + audioAdapter->DestroyCapture(capId); } } // V1_0 } // Audio diff --git a/hdf_service/distributed_audio/hdi_service/audio/v1_0/test/fuzztest/destroyrender_fuzzer/destroyrender_fuzzer.cpp b/hdf_service/distributed_audio/hdi_service/audio/v1_0/test/fuzztest/destroyrender_fuzzer/destroyrender_fuzzer.cpp index c4c39172..1ca043aa 100644 --- a/hdf_service/distributed_audio/hdi_service/audio/v1_0/test/fuzztest/destroyrender_fuzzer/destroyrender_fuzzer.cpp +++ b/hdf_service/distributed_audio/hdi_service/audio/v1_0/test/fuzztest/destroyrender_fuzzer/destroyrender_fuzzer.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 Huawei Device Co., Ltd. + * Copyright (c) 2022-2023 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at @@ -36,13 +36,8 @@ void DestroyRenderFuzzTest(const uint8_t* data, size_t size) AudioAdapterDescriptor desc; auto audioAdapter = std::make_shared(desc); - AudioDeviceDescriptor deviceDes = { - .portId = *(reinterpret_cast(data)), - .pins = *(reinterpret_cast(data)), - .desc = std::string(reinterpret_cast(data), size), - }; - - audioAdapter->DestroyRender(deviceDes); + uint32_t renderId = *(reinterpret_cast(data)); + audioAdapter->DestroyRender(renderId); } } // V1_0 } // Audio diff --git a/hdf_service/distributed_audio/hdi_service/audio/v1_0/test/unittest/audio_adapter_interface/src/audio_adapter_interface_impl_test.cpp b/hdf_service/distributed_audio/hdi_service/audio/v1_0/test/unittest/audio_adapter_interface/src/audio_adapter_interface_impl_test.cpp index a1e5d6c1..c9554175 100644 --- a/hdf_service/distributed_audio/hdi_service/audio/v1_0/test/unittest/audio_adapter_interface/src/audio_adapter_interface_impl_test.cpp +++ b/hdf_service/distributed_audio/hdi_service/audio/v1_0/test/unittest/audio_adapter_interface/src/audio_adapter_interface_impl_test.cpp @@ -73,14 +73,15 @@ HWTEST_F(AudioAdapterInterfaceImpTest, CreateRender_001, TestSize.Level1) AudioDeviceDescriptor devDesc; AudioSampleAttributes attrs; sptr render = nullptr; + uint32_t renderId = 10; AdapterTest_->extSpkCallback_ = new MockIDAudioCallback(); - EXPECT_NE(HDF_SUCCESS, AdapterTest_->CreateRender(devDesc, attrs, render)); - EXPECT_EQ(HDF_SUCCESS, AdapterTest_->DestroyRender(devDesc)); + EXPECT_NE(HDF_SUCCESS, AdapterTest_->CreateRender(devDesc, attrs, render, renderId)); + EXPECT_EQ(HDF_SUCCESS, AdapterTest_->DestroyRender(renderId)); AdapterTest_->mapAudioDevice_.insert(std::make_pair(PIN_OUT_DAUDIO_DEFAULT, "hello")); devDesc.pins = PIN_OUT_DAUDIO_DEFAULT; - EXPECT_NE(HDF_SUCCESS, AdapterTest_->CreateRender(devDesc, attrs, render)); - EXPECT_EQ(HDF_SUCCESS, AdapterTest_->DestroyRender(devDesc)); + EXPECT_NE(HDF_SUCCESS, AdapterTest_->CreateRender(devDesc, attrs, render, renderId)); + EXPECT_EQ(HDF_SUCCESS, AdapterTest_->DestroyRender(renderId)); } /** @@ -98,12 +99,13 @@ HWTEST_F(AudioAdapterInterfaceImpTest, DestroyRender_001, TestSize.Level1) AdapterTest_->extSpkCallback_ = new MockRevertIDAudioCallback(); devDesc.pins = PIN_OUT_DAUDIO_DEFAULT; - AdapterTest_->audioRender_ = new AudioRenderInterfaceImpl(adpterName, devDesc, attrs, callback); + uint32_t renderId = 0; + AdapterTest_->renderDevs_[renderId] = new AudioRenderInterfaceImpl(adpterName, devDesc, attrs, callback); AdapterTest_->spkPinInUse_ = 0; - EXPECT_EQ(HDF_SUCCESS, AdapterTest_->DestroyRender(devDesc)); - AdapterTest_->spkPinInUse_ = 1; - EXPECT_NE(HDF_FAILURE, AdapterTest_->DestroyRender(devDesc)); + EXPECT_EQ(HDF_SUCCESS, AdapterTest_->DestroyRender(renderId)); + renderId = 10; + EXPECT_NE(HDF_FAILURE, AdapterTest_->DestroyRender(renderId)); } /** @@ -117,14 +119,15 @@ HWTEST_F(AudioAdapterInterfaceImpTest, CreateCapture_001, TestSize.Level1) AudioDeviceDescriptor devDesc; AudioSampleAttributes attrs; sptr capture = nullptr; + uint32_t capId = 10; AdapterTest_->extMicCallback_ = new MockIDAudioCallback(); - EXPECT_NE(HDF_SUCCESS, AdapterTest_->CreateCapture(devDesc, attrs, capture)); - EXPECT_EQ(HDF_SUCCESS, AdapterTest_->DestroyCapture(devDesc)); + EXPECT_NE(HDF_SUCCESS, AdapterTest_->CreateCapture(devDesc, attrs, capture, capId)); + EXPECT_EQ(HDF_SUCCESS, AdapterTest_->DestroyCapture(capId)); AdapterTest_->mapAudioDevice_.insert(std::make_pair(PIN_OUT_DAUDIO_DEFAULT, "hello")); devDesc.pins = PIN_OUT_DAUDIO_DEFAULT; - EXPECT_NE(HDF_SUCCESS, AdapterTest_->CreateCapture(devDesc, attrs, capture)); - EXPECT_EQ(HDF_SUCCESS, AdapterTest_->DestroyCapture(devDesc)); + EXPECT_NE(HDF_SUCCESS, AdapterTest_->CreateCapture(devDesc, attrs, capture, capId)); + EXPECT_EQ(HDF_SUCCESS, AdapterTest_->DestroyCapture(capId)); } /** @@ -142,11 +145,12 @@ HWTEST_F(AudioAdapterInterfaceImpTest, DestroyCapture_001, TestSize.Level1) AdapterTest_->extMicCallback_ = new MockRevertIDAudioCallback(); devDesc.pins = PIN_OUT_DAUDIO_DEFAULT; - AdapterTest_->audioCapture_ = new AudioCaptureInterfaceImpl(adpterName, devDesc, attrs, callback); + uint32_t capId = 0; + AdapterTest_->captureDevs_[capId] = new AudioCaptureInterfaceImpl(adpterName, devDesc, attrs, callback); - EXPECT_EQ(HDF_SUCCESS, AdapterTest_->DestroyCapture(devDesc)); - AdapterTest_->micPinInUse_ = 1; - EXPECT_NE(HDF_FAILURE, AdapterTest_->DestroyCapture(devDesc)); + EXPECT_EQ(HDF_SUCCESS, AdapterTest_->DestroyCapture(capId)); + capId = 10; + EXPECT_NE(HDF_FAILURE, AdapterTest_->DestroyCapture(capId)); } /** @@ -423,19 +427,19 @@ HWTEST_F(AudioAdapterInterfaceImpTest, AdapterUnload_001, TestSize.Level1) AudioDeviceDescriptor descSpk; AudioSampleAttributes attrsSpk; sptr callbackSpk = new MockIDAudioCallback(); - AdapterTest_->audioRender_ = new AudioRenderInterfaceImpl(adpterName, descSpk, attrsSpk, callbackSpk); + AdapterTest_->renderDevs_[0] = new AudioRenderInterfaceImpl(adpterName, descSpk, attrsSpk, callbackSpk); EXPECT_EQ(HDF_ERR_DEVICE_BUSY, AdapterTest_->AdapterUnload()); AudioDeviceDescriptor devDescMic; AudioSampleAttributes attrsMic; sptr callbackMic = new MockIDAudioCallback(); - AdapterTest_->audioCapture_ = new AudioCaptureInterfaceImpl(adpterName, devDescMic, attrsMic, callbackMic); + AdapterTest_->captureDevs_[0] = new AudioCaptureInterfaceImpl(adpterName, devDescMic, attrsMic, callbackMic); EXPECT_EQ(HDF_ERR_DEVICE_BUSY, AdapterTest_->AdapterUnload()); - AdapterTest_->audioRender_ = nullptr; + AdapterTest_->renderDevs_[0] = nullptr; EXPECT_EQ(HDF_ERR_DEVICE_BUSY, AdapterTest_->AdapterUnload()); - AdapterTest_->audioCapture_ = nullptr; + AdapterTest_->captureDevs_[0] = nullptr; EXPECT_EQ(HDF_SUCCESS, AdapterTest_->AdapterUnload()); } @@ -675,7 +679,7 @@ HWTEST_F(AudioAdapterInterfaceImpTest, SetAudioVolume_001, TestSize.Level1) AudioSampleAttributes attrs; sptr callback = new MockIDAudioCallback(); - AdapterTest_->audioRender_ = new AudioRenderInterfaceImpl(adpterName, desc, attrs, callback); + AdapterTest_->renderDevs_[0] = new AudioRenderInterfaceImpl(adpterName, desc, attrs, callback); EXPECT_EQ(HDF_SUCCESS, AdapterTest_->SetAudioVolume(condition, param)); param = "0"; EXPECT_EQ(HDF_SUCCESS, AdapterTest_->SetAudioVolume(condition, param)); @@ -698,7 +702,7 @@ HWTEST_F(AudioAdapterInterfaceImpTest, GetAudioVolume_001, TestSize.Level1) AudioSampleAttributes attrs; sptr callback = new MockIDAudioCallback(); - AdapterTest_->audioRender_ = new AudioRenderInterfaceImpl(adpterName, desc, attrs, callback); + AdapterTest_->renderDevs_[0] = new AudioRenderInterfaceImpl(adpterName, desc, attrs, callback); std::string condition = "EVENT_TYPE=1;VOLUME_GROUP_ID=2;AUDIO_VOLUME_TYPE=1;"; std::string param = "1"; @@ -718,7 +722,7 @@ HWTEST_F(AudioAdapterInterfaceImpTest, GetAudioVolume_002, TestSize.Level1) AudioSampleAttributes attrs; sptr callback = new MockIDAudioCallback(); - AdapterTest_->audioRender_ = new AudioRenderInterfaceImpl(adpterName, desc, attrs, callback); + AdapterTest_->renderDevs_[0] = new AudioRenderInterfaceImpl(adpterName, desc, attrs, callback); std::string condition = "EVENT_TYPE=3;VOLUME_GROUP_ID=2;AUDIO_VOLUME_TYPE=1;"; std::string param = "1"; @@ -738,7 +742,7 @@ HWTEST_F(AudioAdapterInterfaceImpTest, GetAudioVolume_003, TestSize.Level1) AudioSampleAttributes attrs; sptr callback = new MockIDAudioCallback(); - AdapterTest_->audioRender_ = new AudioRenderInterfaceImpl(adpterName, desc, attrs, callback); + AdapterTest_->renderDevs_[0] = new AudioRenderInterfaceImpl(adpterName, desc, attrs, callback); std::string condition = "EVENT_TYPE=2;VOLUME_GROUP_ID=2;AUDIO_VOLUME_TYPE=1;"; std::string param = "1"; @@ -758,7 +762,7 @@ HWTEST_F(AudioAdapterInterfaceImpTest, GetAudioVolume_004, TestSize.Level1) AudioSampleAttributes attrs; sptr callback = new MockIDAudioCallback(); - AdapterTest_->audioRender_ = new AudioRenderInterfaceImpl(adpterName, desc, attrs, callback); + AdapterTest_->renderDevs_[0] = new AudioRenderInterfaceImpl(adpterName, desc, attrs, callback); std::string condition = "EVENT_TYPE=4;VOLUME_GROUP_ID=2;AUDIO_VOLUME_TYPE=1;"; std::string param = "1"; @@ -779,7 +783,7 @@ HWTEST_F(AudioAdapterInterfaceImpTest, GetAudioVolume_005, TestSize.Level1) AudioSampleAttributes attrs; sptr callback = new MockIDAudioCallback(); - AdapterTest_->audioRender_ = new AudioRenderInterfaceImpl(adpterName, desc, attrs, callback); + AdapterTest_->renderDevs_[0] = new AudioRenderInterfaceImpl(adpterName, desc, attrs, callback); std::string condition = "EVENT_TYPE=66;VOLUME_GROUP_ID=2;AUDIO_VOLUME_TYPE=1;"; std::string param = "1"; @@ -795,7 +799,7 @@ HWTEST_F(AudioAdapterInterfaceImpTest, GetAudioVolume_005, TestSize.Level1) */ HWTEST_F(AudioAdapterInterfaceImpTest, GetAudioVolume_006, TestSize.Level1) { - AdapterTest_->audioRender_ = nullptr; + AdapterTest_->renderDevs_[0] = nullptr; std::string condition = "EVENT_TYPE=1;VOLUME_GROUP_ID=2;AUDIO_VOLUME_TYPE=1;"; std::string param = "1"; @@ -844,10 +848,10 @@ HWTEST_F(AudioAdapterInterfaceImpTest, HandleVolumeChangeEvent_001, TestSize.Lev AudioSampleAttributes attrs; sptr callback = new MockIDAudioCallback(); - AdapterTest_->audioRender_ = nullptr; + AdapterTest_->renderDevs_[0] = nullptr; EXPECT_NE(HDF_SUCCESS, AdapterTest_->HandleVolumeChangeEvent(event)); - AdapterTest_->audioRender_ = new AudioRenderInterfaceImpl(adpterName, desc, attrs, callback); + AdapterTest_->renderDevs_[0] = new AudioRenderInterfaceImpl(adpterName, desc, attrs, callback); EXPECT_NE(HDF_SUCCESS, AdapterTest_->HandleVolumeChangeEvent(event)); AdapterTest_->paramCallback_ = new MockIAudioParamCallback(); EXPECT_EQ(HDF_SUCCESS, AdapterTest_->HandleVolumeChangeEvent(event)); @@ -867,7 +871,7 @@ HWTEST_F(AudioAdapterInterfaceImpTest, HandleVolumeChangeEvent_002, TestSize.Lev AudioSampleAttributes attrs; sptr callback = new MockIDAudioCallback(); - AdapterTest_->audioRender_ = new AudioRenderInterfaceImpl(adpterName, desc, attrs, callback); + AdapterTest_->renderDevs_[0] = new AudioRenderInterfaceImpl(adpterName, desc, attrs, callback); EXPECT_NE(HDF_SUCCESS, AdapterTest_->HandleVolumeChangeEvent(event)); } @@ -885,7 +889,7 @@ HWTEST_F(AudioAdapterInterfaceImpTest, HandleVolumeChangeEvent_003, TestSize.Lev AudioSampleAttributes attrs; sptr callback = new MockIDAudioCallback(); - AdapterTest_->audioRender_ = new AudioRenderInterfaceImpl(adpterName, desc, attrs, callback); + AdapterTest_->renderDevs_[0] = new AudioRenderInterfaceImpl(adpterName, desc, attrs, callback); EXPECT_NE(HDF_SUCCESS, AdapterTest_->HandleVolumeChangeEvent(event)); } diff --git a/hdf_service/distributed_audio/hdi_service/audio/v1_0/test/unittest/audio_test_utils/audio_test_utils.h b/hdf_service/distributed_audio/hdi_service/audio/v1_0/test/unittest/audio_test_utils/audio_test_utils.h index bc57b7db..c67d9582 100644 --- a/hdf_service/distributed_audio/hdi_service/audio/v1_0/test/unittest/audio_test_utils/audio_test_utils.h +++ b/hdf_service/distributed_audio/hdi_service/audio/v1_0/test/unittest/audio_test_utils/audio_test_utils.h @@ -291,7 +291,7 @@ public: MockIAudioCapture() {} ~MockIAudioCapture() {} - int32_t CaptureFrame(std::vector &frame, uint64_t requestBytes) override + int32_t CaptureFrame(std::vector &frame, uint64_t &replyBytes) override { return DistributedHardware::DH_SUCCESS; } @@ -458,7 +458,7 @@ public: } int32_t ParamCallback(AudioExtParamKey key, const std::string& condition, const std::string& value, - int8_t &reserved, int8_t &cookie) override + int8_t &reserved, int8_t cookie) override { return DistributedHardware::DH_SUCCESS; } @@ -475,7 +475,7 @@ public: } int32_t ParamCallback(AudioExtParamKey key, const std::string& condition, const std::string& value, - int8_t &reserved, int8_t &cookie) override + int8_t &reserved, int8_t cookie) override { return DistributedHardware::ERR_DH_AUDIO_HDF_FAIL; } diff --git a/services/hdfaudioclient/include/daudio_adapter_internal.h b/services/hdfaudioclient/include/daudio_adapter_internal.h index 0f5eaebb..78d0ebdf 100644 --- a/services/hdfaudioclient/include/daudio_adapter_internal.h +++ b/services/hdfaudioclient/include/daudio_adapter_internal.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 Huawei Device Co., Ltd. + * Copyright (c) 2022-2023 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at @@ -45,8 +45,8 @@ struct AudioAdapterContext { std::unique_ptr callbackInternal_ = nullptr; ParamCallback callback_ = nullptr; - std::vector> captures_; - std::vector> renders_; + std::vector>> captures_; + std::vector>> renders_; std::map> caps_; }; } // namespace DistributedHardware diff --git a/services/hdfaudioclient/src/daudio_adapter_internal.cpp b/services/hdfaudioclient/src/daudio_adapter_internal.cpp index 030daea2..1258b84d 100644 --- a/services/hdfaudioclient/src/daudio_adapter_internal.cpp +++ b/services/hdfaudioclient/src/daudio_adapter_internal.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 Huawei Device Co., Ltd. + * Copyright (c) 2022-2023 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at @@ -87,7 +87,8 @@ static int32_t CreateRenderInternal(struct AudioAdapter *adapter, const struct : AudioSampleAttributes attrsHal; SetAudioSampleAttributesHAL(attrs, attrsHal); sptr renderProxy = nullptr; - int32_t ret = context->proxy_->CreateRender(descHal, attrsHal, renderProxy); + uint32_t renderId; + int32_t ret = context->proxy_->CreateRender(descHal, attrsHal, renderProxy, renderId); if (ret != DH_SUCCESS) { *render = nullptr; return ret; @@ -96,9 +97,10 @@ static int32_t CreateRenderInternal(struct AudioAdapter *adapter, const struct : *render = &renderContext->instance_; renderContext->proxy_ = renderProxy; renderContext->descHal_ = descHal; + DHLOGI("The render ID: %u.", renderId); { std::lock_guard lock(context->mtx_); - context->renders_.push_back(std::move(renderContext)); + context->renders_.push_back(std::make_pair(renderId, std::move(renderContext))); } return DH_SUCCESS; } @@ -120,8 +122,8 @@ static int32_t DestroyRenderInternal(struct AudioAdapter *adapter, struct AudioR std::lock_guard lock(adapterContext->mtx_); for (auto it = adapterContext->renders_.begin(); it != adapterContext->renders_.end(); ++it) { - if ((*it).get() == renderContext) { - int32_t ret = adapterContext->proxy_->DestroyRender(renderContext->descHal_); + if ((it->second).get() == renderContext) { + int32_t ret = adapterContext->proxy_->DestroyRender(it->first); if (ret != DH_SUCCESS) { return ret; } @@ -154,7 +156,8 @@ static int32_t CreateCaptureInternal(struct AudioAdapter *adapter, const struct AudioSampleAttributes attrsHal; SetAudioSampleAttributesHAL(attrs, attrsHal); sptr captureProxy = nullptr; - int32_t ret = context->proxy_->CreateCapture(descHal, attrsHal, captureProxy); + uint32_t captureId; + int32_t ret = context->proxy_->CreateCapture(descHal, attrsHal, captureProxy, captureId); if (ret != DH_SUCCESS) { *capture = nullptr; return ret; @@ -164,9 +167,10 @@ static int32_t CreateCaptureInternal(struct AudioAdapter *adapter, const struct *capture = &captureContext->instance_; captureContext->proxy_ = captureProxy; captureContext->descHal_ = descHal; + DHLOGI("The capture ID: %u.", captureId); { std::lock_guard lock(context->mtx_); - context->captures_.push_back(std::move(captureContext)); + context->captures_.push_back(std::make_pair(captureId, std::move(captureContext))); } return DH_SUCCESS; } @@ -188,8 +192,8 @@ static int32_t DestroyCaptureInternal(struct AudioAdapter *adapter, struct Audio std::lock_guard lock(adapterContext->mtx_); for (auto it = adapterContext->captures_.begin(); it != adapterContext->captures_.end(); ++it) { - if ((*it).get() == captureContext) { - int32_t ret = adapterContext->proxy_->DestroyCapture(captureContext->descHal_); + if ((it->second).get() == captureContext) { + int32_t ret = adapterContext->proxy_->DestroyCapture(it->first); if (ret != DH_SUCCESS) { return ret; } diff --git a/services/hdfaudioclient/src/daudio_param_callback_internal.cpp b/services/hdfaudioclient/src/daudio_param_callback_internal.cpp index ea11fa67..cb89b82c 100644 --- a/services/hdfaudioclient/src/daudio_param_callback_internal.cpp +++ b/services/hdfaudioclient/src/daudio_param_callback_internal.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 Huawei Device Co., Ltd. + * Copyright (c) 2022-2023 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at @@ -36,7 +36,7 @@ public: int32_t RenderCallback(AudioCallbackType type, int8_t &reserved, int8_t &cookie) override; int32_t ParamCallback(AudioExtParamKey key, const std::string& condition, const std::string& value, - int8_t &reserved, int8_t &cookie) override; + int8_t &reserved, int8_t cookie) override; private: ::ParamCallback callback_ = nullptr; void *cookie_ = nullptr; @@ -55,7 +55,7 @@ int32_t AudioParamCallbackImpl::RenderCallback(AudioCallbackType type, int8_t &r } int32_t AudioParamCallbackImpl::ParamCallback(AudioExtParamKey key, const std::string& condition, - const std::string& value, int8_t &reserved, int8_t &cookie) + const std::string& value, int8_t &reserved, int8_t cookie) { (void) cookie; if (callback_ != nullptr) { diff --git a/services/hdfaudioclient/src/daudio_render_callback_internal.cpp b/services/hdfaudioclient/src/daudio_render_callback_internal.cpp index 0e103915..9facc92b 100644 --- a/services/hdfaudioclient/src/daudio_render_callback_internal.cpp +++ b/services/hdfaudioclient/src/daudio_render_callback_internal.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 Huawei Device Co., Ltd. + * Copyright (c) 2022-2023 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at @@ -32,7 +32,7 @@ public: int32_t RenderCallback(AudioCallbackType type, int8_t &reserved, int8_t &cookie) override; int32_t ParamCallback(AudioExtParamKey key, const std::string& condition, const std::string& value, - int8_t &reserved, int8_t &cookie) override; + int8_t &reserved, int8_t cookie) override; private: ::RenderCallback callback_ = nullptr; @@ -57,7 +57,7 @@ int32_t AudioRenderCallbackImpl::RenderCallback(AudioCallbackType type, int8_t & } int32_t AudioRenderCallbackImpl::ParamCallback(AudioExtParamKey key, const std::string& condition, - const std::string& value, int8_t &reserved, int8_t &cookie) + const std::string& value, int8_t &reserved, int8_t cookie) { (void) reserved; (void) cookie; diff --git a/services/hdfaudioclient/test/unittest/audio_adapter_internal/audio_adapter_internal_test.cpp b/services/hdfaudioclient/test/unittest/audio_adapter_internal/audio_adapter_internal_test.cpp index a1f167a0..a0f22c09 100644 --- a/services/hdfaudioclient/test/unittest/audio_adapter_internal/audio_adapter_internal_test.cpp +++ b/services/hdfaudioclient/test/unittest/audio_adapter_internal/audio_adapter_internal_test.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023 Huawei Device Co., Ltd. + * Copyright (c) 2022-2023 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at diff --git a/services/hdfaudioclient/test/unittest/audio_adapter_internal/audio_adapter_internal_test.h b/services/hdfaudioclient/test/unittest/audio_adapter_internal/audio_adapter_internal_test.h index 03567108..e083a165 100644 --- a/services/hdfaudioclient/test/unittest/audio_adapter_internal/audio_adapter_internal_test.h +++ b/services/hdfaudioclient/test/unittest/audio_adapter_internal/audio_adapter_internal_test.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 Huawei Device Co., Ltd. + * Copyright (c) 2022-2023 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at @@ -54,23 +54,23 @@ public: } int32_t CreateRender(const AudioDeviceDescriptor& desc, const AudioSampleAttributes& attrs, - sptr& render) override + sptr& render, uint32_t &renderId) override { return DH_SUCCESS; } - int32_t DestroyRender(const AudioDeviceDescriptor& desc) override + int32_t DestroyRender(uint32_t renderId) override { return DH_SUCCESS; } int32_t CreateCapture(const AudioDeviceDescriptor& desc, const AudioSampleAttributes& attrs, - sptr& capture) override + sptr& capture, uint32_t &captureId) override { return DH_SUCCESS; } - int32_t DestroyCapture(const AudioDeviceDescriptor& desc) override + int32_t DestroyCapture(uint32_t captureId) override { return DH_SUCCESS; } -- Gitee From 90674a82baf957b2cb85acd37fca90387dc1e128 Mon Sep 17 00:00:00 2001 From: c30051536 Date: Fri, 1 Sep 2023 17:59:57 +0800 Subject: [PATCH 22/35] Modify the SPK opening timeout Signed-off-by: c30051536 --- .../audio/v1_0/include/audio_adapter_interface_impl.h | 2 +- services/audioclient/micclient/src/dmic_client.cpp | 1 + services/audiomanager/managersource/include/daudio_source_dev.h | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/hdf_service/distributed_audio/hdi_service/audio/v1_0/include/audio_adapter_interface_impl.h b/hdf_service/distributed_audio/hdi_service/audio/v1_0/include/audio_adapter_interface_impl.h index 7a6018df..7f02f25f 100644 --- a/hdf_service/distributed_audio/hdi_service/audio/v1_0/include/audio_adapter_interface_impl.h +++ b/hdf_service/distributed_audio/hdi_service/audio/v1_0/include/audio_adapter_interface_impl.h @@ -127,7 +127,7 @@ private: void SetDumpFlag(bool isRender); private: - static constexpr uint8_t WAIT_SECONDS = 10; + static constexpr uint8_t WAIT_SECONDS = 20; static constexpr int32_t TYPE_CONDITION = 11; AudioAdapterDescriptor adpDescriptor_; AudioAdapterStatus status_ = STATUS_OFFLINE; diff --git a/services/audioclient/micclient/src/dmic_client.cpp b/services/audioclient/micclient/src/dmic_client.cpp index 13f7c692..5932838e 100644 --- a/services/audioclient/micclient/src/dmic_client.cpp +++ b/services/audioclient/micclient/src/dmic_client.cpp @@ -260,6 +260,7 @@ void DMicClient::GenerateAttr(const AudioParam ¶m) captureAttr_.silenceThreshold = AUDIO_BUFFER_SIZE; captureAttr_.channelCount = param.comParam.channelMask; captureAttr_.sampleRate = param.comParam.sampleRate; + captureAttr_.sourceType = 1; } int32_t DMicClient::AudioFwkClientSetUp() diff --git a/services/audiomanager/managersource/include/daudio_source_dev.h b/services/audiomanager/managersource/include/daudio_source_dev.h index b8a35fab..7e95e466 100644 --- a/services/audiomanager/managersource/include/daudio_source_dev.h +++ b/services/audiomanager/managersource/include/daudio_source_dev.h @@ -113,7 +113,7 @@ private: int32_t CloseMicNew(const std::string &args); private: - static constexpr uint8_t RPC_WAIT_SECONDS = 2; + static constexpr uint8_t RPC_WAIT_SECONDS = 10; static constexpr uint8_t TASK_QUEUE_CAPACITY = 20; static constexpr uint8_t EVENT_NOTIFY_OPEN_SPK = 0x01; static constexpr uint8_t EVENT_NOTIFY_CLOSE_SPK = 0x02; -- Gitee From 686bd11635508274ec65a9f3abe42c286b1b1703 Mon Sep 17 00:00:00 2001 From: ljh54_space Date: Mon, 28 Aug 2023 10:39:31 +0800 Subject: [PATCH 23/35] =?UTF-8?q?cJSON=E6=95=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: ljh54_space --- audiohandler/BUILD.gn | 7 +- audiohandler/include/daudio_handler.h | 3 + audiohandler/src/daudio_handler.cpp | 56 ++- audiohandler/test/unittest/BUILD.gn | 3 +- bundle.json | 2 +- common/dfx_utils/test/unittest/BUILD.gn | 4 +- common/include/daudio_util.h | 12 +- common/src/daudio_util.cpp | 67 ++- common/test/unittest/BUILD.gn | 3 +- .../test/unittest/src/daudio_utils_test.cpp | 9 +- .../inner_kits/native_cpp/audio_sink/BUILD.gn | 11 +- .../native_cpp/audio_source/BUILD.gn | 11 +- .../test/unittest/audiosinktest/BUILD.gn | 1 - .../test/unittest/audiosourcetest/BUILD.gn | 1 - .../test/unittest/spkclient/BUILD.gn | 1 - .../unittest/daudio_manager_callback/BUILD.gn | 5 +- .../managersink/include/daudio_sink_dev.h | 9 +- .../managersink/src/daudio_sink_dev.cpp | 154 ++++-- .../managersink/src/daudio_sink_manager.cpp | 12 +- .../managersource/include/daudio_source_dev.h | 14 +- .../managersource/include/dmic_dev.h | 4 +- .../managersource/include/dspeaker_dev.h | 4 +- .../managersource/src/daudio_source_dev.cpp | 450 ++++++++++++++---- .../src/daudio_source_manager.cpp | 12 +- .../managersource/src/dmic_dev.cpp | 42 +- .../managersource/src/dspeaker_dev.cpp | 40 +- services/audiomanager/servicesink/BUILD.gn | 3 +- services/audiomanager/servicesource/BUILD.gn | 3 +- .../BUILD.gn | 7 +- .../sourceservicedaudionotify_fuzzer/BUILD.gn | 7 +- .../sourceserviceinitsource_fuzzer/BUILD.gn | 2 + .../BUILD.gn | 7 +- .../BUILD.gn | 7 +- .../BUILD.gn | 7 +- .../test/unittest/managersink/BUILD.gn | 3 +- .../managersink/src/daudio_sink_dev_test.cpp | 3 +- .../test/unittest/servicesink/BUILD.gn | 1 - .../test/unittest/servicesource/BUILD.gn | 3 +- .../test/unittest/sourcedevice/BUILD.gn | 3 +- .../src/daudio_source_dev_test.cpp | 203 +++++--- .../test/unittest/sourcemanager/BUILD.gn | 3 +- .../unittest/common/decodeprocessor/BUILD.gn | 4 +- .../unittest/common/encodeprocessor/BUILD.gn | 3 +- .../include/audio_ctrl_channel.h | 6 +- .../src/audio_ctrl_channel.cpp | 61 ++- .../audiochannel/audiodatachannel/BUILD.gn | 7 +- .../audioctrltransport/BUILD.gn | 3 +- .../audiotransportstatus/BUILD.gn | 1 - .../audiotransport/decodetransport/BUILD.gn | 3 +- .../audiotransport/encodetransport/BUILD.gn | 3 +- .../test/unittest/audioctrlchannel/BUILD.gn | 3 +- .../src/audio_ctrl_channel_test.cpp | 3 +- .../test/unittest/audioctrltransport/BUILD.gn | 1 - .../test/unittest/audiodatachannel/BUILD.gn | 3 +- .../unittest/audiotransportstatus/BUILD.gn | 3 +- .../test/unittest/decodetransport/BUILD.gn | 7 +- .../test/unittest/encodetransport/BUILD.gn | 7 +- .../test/unittest/receiverengine/BUILD.gn | 3 +- .../test/unittest/senderengine/BUILD.gn | 3 +- services/common/BUILD.gn | 4 +- .../test/unittest/task_queue/BUILD.gn | 2 +- .../common/test/unittest/audiodata/BUILD.gn | 1 - services/softbusadapter/BUILD.gn | 11 +- .../softbusonbytesreceived_fuzzer/BUILD.gn | 3 +- .../softbusonsessionclosed_fuzzer/BUILD.gn | 3 +- .../softbusonsessionopened_fuzzer/BUILD.gn | 3 +- .../softbusonstreamreceived_fuzzer/BUILD.gn | 3 +- .../softbusadapter/test/unittest/BUILD.gn | 3 +- 68 files changed, 1019 insertions(+), 337 deletions(-) diff --git a/audiohandler/BUILD.gn b/audiohandler/BUILD.gn index f95694e6..07a32861 100644 --- a/audiohandler/BUILD.gn +++ b/audiohandler/BUILD.gn @@ -17,7 +17,7 @@ import("../distributedaudio.gni") ohos_shared_library("distributed_audio_handler") { include_dirs = [ - "//third_party/json/include", + "//third_party/cJSON", "${fwk_common_path}/utils/include", "${fwk_utils_path}/include", "${mediastandardfwk_path}/audiomanager/include", @@ -33,7 +33,10 @@ ohos_shared_library("distributed_audio_handler") { sources = [ "src/daudio_handler.cpp" ] - deps = [ "${services_path}/common:distributed_audio_utils" ] + deps = [ + "${services_path}/common:distributed_audio_utils", + "//third_party/cJSON:cjson", + ] external_deps = [ "audio_framework:audio_capturer", diff --git a/audiohandler/include/daudio_handler.h b/audiohandler/include/daudio_handler.h index 4b79ea82..2a352363 100644 --- a/audiohandler/include/daudio_handler.h +++ b/audiohandler/include/daudio_handler.h @@ -18,6 +18,8 @@ #include +#include "cJSON.h" + #include "ihardware_handler.h" #include "single_instance.h" #include "audio_param.h" @@ -57,6 +59,7 @@ private: ~DAudioHandler(); int32_t QueryCodecInfo(); int32_t QueryAudioInfo(); + void AddItemsToObject(cJSON* infoJson, const int32_t &dhId); void GetSupportAudioInfo(AudioInfo &audioInfos, CoderInfo &encoderInfos, CoderInfo &decoderInfos); private: diff --git a/audiohandler/src/daudio_handler.cpp b/audiohandler/src/daudio_handler.cpp index 06e57b69..45b3bf7c 100644 --- a/audiohandler/src/daudio_handler.cpp +++ b/audiohandler/src/daudio_handler.cpp @@ -19,7 +19,6 @@ #include "audio_system_manager.h" #include "avcodec_list.h" -#include "nlohmann/json.hpp" #include "string_ex.h" #include "histreamer_query_tool.h" @@ -31,8 +30,6 @@ #undef DH_LOG_TAG #define DH_LOG_TAG "DAudioHandler" -using json = nlohmann::json; - namespace OHOS { namespace DistributedHardware { IMPLEMENT_SINGLE_INSTANCE(DAudioHandler); @@ -82,40 +79,61 @@ std::vector DAudioHandler::Query() for (auto dev : audioDevices) { auto dhId = audioSrv->GetPinValueFromType(dev->deviceType_, dev->deviceRole_); - json infoJson; - int32_t deviceType = GetDevTypeByDHId(dhId); - if (deviceType == AUDIO_DEVICE_TYPE_MIC) { - infoJson["SampleRates"] = micInfos_.sampleRates; - infoJson["ChannelMasks"] = micInfos_.channels; - infoJson["Formats"] = micInfos_.formats; - } else if (deviceType == AUDIO_DEVICE_TYPE_SPEAKER) { - infoJson["SampleRates"] = spkInfos_.sampleRates; - infoJson["ChannelMasks"] = spkInfos_.channels; - infoJson["Formats"] = spkInfos_.formats; + cJSON* infoJson = cJSON_CreateObject(); + if (infoJson == nullptr) { + DHLOGE("Failed to create cJSON object."); + return dhItemVec; } - infoJson["INTERRUPT_GROUP_ID"] = dev->interruptGroupId_; - infoJson["VOLUME_GROUP_ID"] = dev->volumeGroupId_; + + AddItemsToObject(infoJson, dhId); + cJSON_AddNumberToObject(infoJson, "INTERRUPT_GROUP_ID", dev->interruptGroupId_); + cJSON_AddNumberToObject(infoJson, "VOLUME_GROUP_ID", dev->volumeGroupId_); std::string audioEncoders = HiStreamerQueryTool::GetInstance().QueryHiStreamerPluginInfo(HISTREAM_PLUGIN_TYPE::AUDIO_ENCODER); DHLOGI("DScreen QueryAudioEncoderAbility info: %s", audioEncoders.c_str()); - infoJson[KEY_HISTREAMER_AUDIO_ENCODER] = audioEncoders; + cJSON_AddStringToObject(infoJson, KEY_HISTREAMER_AUDIO_ENCODER.c_str(), audioEncoders.c_str()); std::string audioDecoders = HiStreamerQueryTool::GetInstance().QueryHiStreamerPluginInfo(HISTREAM_PLUGIN_TYPE::AUDIO_DECODER); DHLOGI("DScreen QueryAudioDecoderAbility info: %s", audioDecoders.c_str()); - infoJson[KEY_HISTREAMER_AUDIO_DECODER] = audioDecoders; + cJSON_AddStringToObject(infoJson, KEY_HISTREAMER_AUDIO_DECODER.c_str(), audioDecoders.c_str()); DHItem dhItem; dhItem.dhId = std::to_string(dhId); - dhItem.attrs = infoJson.dump(); + char *jsonStr = cJSON_Print(infoJson); + dhItem.attrs = jsonStr; dhItemVec.push_back(dhItem); - DHLOGD("Query result: dhId: %d, attrs: %s.", dhId, infoJson.dump().c_str()); + DHLOGD("Query result: dhId: %d, attrs: %s.", dhId, jsonStr); + + cJSON_Delete(infoJson); + cJSON_free(jsonStr); } ablityForDumpVec_ = dhItemVec; return dhItemVec; } +void DAudioHandler::AddItemsToObject(cJSON* infoJson, const int32_t &dhId) +{ + DHLOGD("Get dhId and then add other items into json object"); + int32_t deviceType = GetDevTypeByDHId(dhId); + if (deviceType == AUDIO_DEVICE_TYPE_MIC) { + cJSON_AddItemToObject(infoJson, "SampleRates", + cJSON_CreateIntArray(micInfos_.sampleRates.data(), micInfos_.sampleRates.size())); + cJSON_AddItemToObject(infoJson, "ChannelMasks", + cJSON_CreateIntArray(micInfos_.channels.data(), micInfos_.channels.size())); + cJSON_AddItemToObject(infoJson, "Formats", + cJSON_CreateIntArray(micInfos_.formats.data(), micInfos_.formats.size())); + } else if (deviceType == AUDIO_DEVICE_TYPE_SPEAKER) { + cJSON_AddItemToObject(infoJson, "SampleRates", + cJSON_CreateIntArray(spkInfos_.sampleRates.data(), spkInfos_.sampleRates.size())); + cJSON_AddItemToObject(infoJson, "ChannelMasks", + cJSON_CreateIntArray(spkInfos_.channels.data(), spkInfos_.channels.size())); + cJSON_AddItemToObject(infoJson, "Formats", + cJSON_CreateIntArray(spkInfos_.formats.data(), spkInfos_.formats.size())); + } +} + std::vector DAudioHandler::ablityForDump() { DHLOGD("Get audio ablity for dump."); diff --git a/audiohandler/test/unittest/BUILD.gn b/audiohandler/test/unittest/BUILD.gn index c250a8da..2660eaf8 100644 --- a/audiohandler/test/unittest/BUILD.gn +++ b/audiohandler/test/unittest/BUILD.gn @@ -20,7 +20,7 @@ config("module_private_config") { visibility = [ ":*" ] include_dirs = [ - "//third_party/json/include", + "//third_party/cJSON", "${fwk_common_path}/utils/include", "${mediastandard_path}/interfaces/inner_api/native", "${mediastandard_path}/services/utils/include", @@ -47,6 +47,7 @@ ohos_unittest("AudioHandlerTest") { deps = [ "${distributedaudio_path}/audiohandler:distributed_audio_handler", + "//third_party/cJSON:cjson", "//third_party/googletest:gtest_main", ] diff --git a/bundle.json b/bundle.json index e963b311..1936ba25 100755 --- a/bundle.json +++ b/bundle.json @@ -45,7 +45,7 @@ "samgr" ], "third_party": [ - "json" + "cJSON" ] }, "build": { diff --git a/common/dfx_utils/test/unittest/BUILD.gn b/common/dfx_utils/test/unittest/BUILD.gn index 3a863e45..b8b8f360 100644 --- a/common/dfx_utils/test/unittest/BUILD.gn +++ b/common/dfx_utils/test/unittest/BUILD.gn @@ -55,13 +55,14 @@ config("module_private_config") { "${services_path}/common/audioeventcallback", "${services_path}/audiomanager/managersource/include", "${softbusadapter_path}/include", - "//third_party/json/include", "${fwk_common_path}/utils/include", "${mediastandardfwk_path}/audiocapturer/include", "${mediastandardfwk_path}/audiocommon/include", "${mediastandardfwk_path}/audiorenderer/include", "${mediastandardfwk_path}/audiomanager/include", ] + + include_dirs += [ "//third_party/cJSON" ] } ## UnitTest daudio_dfx_test @@ -76,6 +77,7 @@ ohos_unittest("DAudioDfxTest") { deps = [ "${services_path}/audiomanager/servicesource:distributed_audio_source", "${services_path}/common:distributed_audio_utils", + "//third_party/cJSON:cjson", "//third_party/googletest:gmock", "//third_party/googletest:gtest_main", ] diff --git a/common/include/daudio_util.h b/common/include/daudio_util.h index 33d43922..69341c40 100644 --- a/common/include/daudio_util.h +++ b/common/include/daudio_util.h @@ -19,9 +19,7 @@ #include #include #include -#include "nlohmann/json.hpp" - -using json = nlohmann::json; +#include "cJSON.h" #define AUDIO_MS_PER_SECOND 1000 #define AUDIO_US_PER_SECOND 1000000 @@ -36,10 +34,10 @@ int64_t GetNowTimeUs(); int32_t GetAudioParamStr(const std::string ¶ms, const std::string &key, std::string &value); int32_t GetAudioParamBool(const std::string ¶ms, const std::string &key, bool &value); int32_t GetAudioParamInt(const std::string ¶ms, const std::string &key, int32_t &value); -bool JsonParamCheck(const json &jsonObj, const std::initializer_list &key); -bool IsString(const json &jsonObj, const std::string &key); -bool IsInt32(const json &jsonObj, const std::string &key); -bool IsAudioParam(const json &jsonObj, const std::string &key); +bool JsonParamCheck(const cJSON *jsonObj, const std::initializer_list &keys); +bool IsString(const cJSON *jsonObj, const std::string &key); +bool IsInt32(const cJSON *jsonObj, const std::string &key); +bool IsAudioParam(const cJSON *jsonObj, const std::string &key); int32_t CalculateSampleNum(uint32_t sampleRate, uint32_t timems); int64_t GetCurNano(); int32_t AbsoluteSleep(int64_t nanoTime); diff --git a/common/src/daudio_util.cpp b/common/src/daudio_util.cpp index e1a1fc1f..ed19a99e 100644 --- a/common/src/daudio_util.cpp +++ b/common/src/daudio_util.cpp @@ -35,7 +35,7 @@ namespace OHOS { namespace DistributedHardware { -using JsonTypeCheckFunc = bool (*)(const json &jsonObj, const std::string &key); +using JsonTypeCheckFunc = bool (*)(const cJSON *jsonObj, const std::string &key); constexpr int32_t WORD_WIDTH_8 = 8; constexpr int32_t WORD_WIDTH_4 = 4; constexpr size_t INT32_SHORT_ID_LENGTH = 20; @@ -193,16 +193,17 @@ int32_t GetAudioParamInt(const std::string ¶ms, const std::string &key, int3 return DH_SUCCESS; } -bool JsonParamCheck(const json &jsonObj, const std::initializer_list &keys) +bool JsonParamCheck(const cJSON *jsonObj, const std::initializer_list &keys) { - if (jsonObj.is_discarded()) { - DHLOGE("Json parameter is invalid."); + if (jsonObj == nullptr || !cJSON_IsObject(jsonObj)) { + DHLOGE("JSON parameter is invalid."); return false; } for (auto it = keys.begin(); it != keys.end(); it++) { - if (!jsonObj.contains(*it)) { - DHLOGE("Json parameter not contain param(%s).", (*it).c_str()); + cJSON *paramValue = cJSON_GetObjectItemCaseSensitive(jsonObj, (*it).c_str()); + if (paramValue == nullptr) { + DHLOGE("JSON parameter does not contain key: %s", (*it).c_str()); return false; } @@ -211,29 +212,69 @@ bool JsonParamCheck(const json &jsonObj, const std::initializer_listsecond; bool res = (*func)(jsonObj, *it); if (!res) { - DHLOGE("The key %s value format in json is illegal.", (*it).c_str()); + DHLOGE("The key %s value format in JSON is illegal.", (*it).c_str()); return false; } } return true; } -bool IsString(const json &jsonObj, const std::string &key) +bool IsString(const cJSON *jsonObj, const std::string &key) { - return jsonObj[key].is_string(); + if (jsonObj == nullptr || !cJSON_IsObject(jsonObj)) { + DHLOGE("JSON parameter is invalid."); + return false; + } + cJSON *paramValue = cJSON_GetObjectItemCaseSensitive(jsonObj, key.c_str()); + if (paramValue == nullptr) { + DHLOGE("paramValue is null"); + return false; + } + + if (cJSON_IsString(paramValue)) { + return true; + } + return false; } -bool IsInt32(const json &jsonObj, const std::string &key) +bool IsInt32(const cJSON *jsonObj, const std::string &key) { - return jsonObj[key].is_number_integer() && INT32_MIN <= jsonObj[key] && jsonObj[key] <= INT32_MAX; + if (jsonObj == nullptr || !cJSON_IsObject(jsonObj)) { + DHLOGE("JSON parameter is invalid."); + return false; + } + cJSON *paramValue = cJSON_GetObjectItemCaseSensitive(jsonObj, key.c_str()); + if (paramValue == nullptr) { + DHLOGE("paramValue is null"); + return false; + } + + if (cJSON_IsNumber(paramValue)) { + int value = paramValue->valueint; + if (INT32_MIN <= value && value <= INT32_MAX) { + return true; + } + } + return false; } -bool IsAudioParam(const json &jsonObj, const std::string &key) +bool IsAudioParam(const cJSON *jsonObj, const std::string &key) { - return JsonParamCheck(jsonObj[key], + if (jsonObj == nullptr || !cJSON_IsObject(jsonObj)) { + DHLOGE("JSON parameter is invalid."); + return false; + } + cJSON *paramValue = cJSON_GetObjectItemCaseSensitive(jsonObj, key.c_str()); + if (paramValue == nullptr || !cJSON_IsObject(paramValue)) { + DHLOGE("paramValue is null or is not object"); + return false; + } + + return JsonParamCheck(paramValue, { KEY_SAMPLING_RATE, KEY_CHANNELS, KEY_FORMAT, KEY_SOURCE_TYPE, KEY_CONTENT_TYPE, KEY_STREAM_USAGE }); } diff --git a/common/test/unittest/BUILD.gn b/common/test/unittest/BUILD.gn index b6231b5d..e1de2daf 100644 --- a/common/test/unittest/BUILD.gn +++ b/common/test/unittest/BUILD.gn @@ -23,7 +23,7 @@ config("module_private_config") { include_dirs = [ "${fwk_common_path}/utils/include", - "//third_party/json/include", + "//third_party/cJSON", ] include_dirs += [ @@ -41,6 +41,7 @@ ohos_unittest("DaudioUtilsTest") { deps = [ "${services_path}/common:distributed_audio_utils", + "//third_party/cJSON:cjson", "//third_party/googletest:gtest_main", ] diff --git a/common/test/unittest/src/daudio_utils_test.cpp b/common/test/unittest/src/daudio_utils_test.cpp index 49b070b5..10e03931 100644 --- a/common/test/unittest/src/daudio_utils_test.cpp +++ b/common/test/unittest/src/daudio_utils_test.cpp @@ -265,13 +265,18 @@ HWTEST_F(DAudioUtilsTest, DAudioUtilTest_005, TestSize.Level1) HWTEST_F(DAudioUtilsTest, DAudioUtilTest_006, TestSize.Level1) { std::string tempKey = "TestParam"; - json jParam = { { KEY_DEV_ID, "TEST_DEV_ID" }, {KEY_AUDIO_PARAM, "TEST_PARAM" }, {KEY_FORMAT, "TEST_8000" }, - { tempKey, "TEST_TEMP_KEY" } }; + cJSON *jParam = cJSON_CreateObject(); + cJSON_AddItemToObject(jParam, KEY_DEV_ID, cJSON_CreateString("TEST_DEV_ID")); + cJSON_AddItemToObject(jParam, KEY_AUDIO_PARAM, cJSON_CreateString("TEST_PARAM")); + cJSON_AddItemToObject(jParam, KEY_FORMAT, cJSON_CreateString("TEST_8000")); + cJSON_AddItemToObject(jParam, tempKey.c_str(), cJSON_CreateString("TEST_TEMP_KEY")); + EXPECT_EQ(false, JsonParamCheck(jParam, { KEY_ATTRS })); EXPECT_EQ(false, JsonParamCheck(jParam, { KEY_AUDIO_PARAM })); EXPECT_EQ(false, JsonParamCheck(jParam, { KEY_FORMAT })); EXPECT_EQ(false, JsonParamCheck(jParam, { tempKey })); EXPECT_EQ(true, JsonParamCheck(jParam, { KEY_DEV_ID })); + cJSON_Delete(jParam); } /** diff --git a/interfaces/inner_kits/native_cpp/audio_sink/BUILD.gn b/interfaces/inner_kits/native_cpp/audio_sink/BUILD.gn index 423af490..3997a2e1 100755 --- a/interfaces/inner_kits/native_cpp/audio_sink/BUILD.gn +++ b/interfaces/inner_kits/native_cpp/audio_sink/BUILD.gn @@ -16,15 +16,13 @@ import("//build/ohos_var.gni") import("../../../../distributedaudio.gni") ohos_shared_library("distributed_audio_sink_sdk") { - include_dirs = [ - "${fwk_common_path}/utils/include", - "//third_party/json/include", - ] + include_dirs = [ "${fwk_common_path}/utils/include" ] include_dirs += [ "include", "${common_path}/include", "${common_path}/dfx_utils/include", + "//third_party/cJSON", ] sources = [ @@ -33,7 +31,10 @@ ohos_shared_library("distributed_audio_sink_sdk") { "src/daudio_sink_proxy.cpp", ] - deps = [ "${services_path}/common:distributed_audio_utils" ] + deps = [ + "${services_path}/common:distributed_audio_utils", + "//third_party/cJSON:cjson", + ] external_deps = [ "c_utils:utils", diff --git a/interfaces/inner_kits/native_cpp/audio_source/BUILD.gn b/interfaces/inner_kits/native_cpp/audio_source/BUILD.gn index bf65d534..e97ea79f 100755 --- a/interfaces/inner_kits/native_cpp/audio_source/BUILD.gn +++ b/interfaces/inner_kits/native_cpp/audio_source/BUILD.gn @@ -16,15 +16,13 @@ import("//build/ohos_var.gni") import("../../../../distributedaudio.gni") ohos_shared_library("distributed_audio_source_sdk") { - include_dirs = [ - "${fwk_common_path}/utils/include", - "//third_party/json/include", - ] + include_dirs = [ "${fwk_common_path}/utils/include" ] include_dirs += [ "include", "${common_path}/include", "${common_path}/dfx_utils/include", + "//third_party/cJSON", ] sources = [ @@ -35,7 +33,10 @@ ohos_shared_library("distributed_audio_source_sdk") { "src/daudio_source_proxy.cpp", ] - deps = [ "${services_path}/common:distributed_audio_utils" ] + deps = [ + "${services_path}/common:distributed_audio_utils", + "//third_party/cJSON:cjson", + ] external_deps = [ "c_utils:utils", diff --git a/interfaces/inner_kits/native_cpp/test/unittest/audiosinktest/BUILD.gn b/interfaces/inner_kits/native_cpp/test/unittest/audiosinktest/BUILD.gn index 7e1afd53..88d30e02 100755 --- a/interfaces/inner_kits/native_cpp/test/unittest/audiosinktest/BUILD.gn +++ b/interfaces/inner_kits/native_cpp/test/unittest/audiosinktest/BUILD.gn @@ -20,7 +20,6 @@ config("module_private_config") { visibility = [ ":*" ] include_dirs = [ - "//third_party/json/include", "${fwk_common_path}/utils/include", "${fwk_utils_path}/include", ] diff --git a/interfaces/inner_kits/native_cpp/test/unittest/audiosourcetest/BUILD.gn b/interfaces/inner_kits/native_cpp/test/unittest/audiosourcetest/BUILD.gn index 4b921210..0c1d9cd7 100755 --- a/interfaces/inner_kits/native_cpp/test/unittest/audiosourcetest/BUILD.gn +++ b/interfaces/inner_kits/native_cpp/test/unittest/audiosourcetest/BUILD.gn @@ -20,7 +20,6 @@ config("module_private_config") { visibility = [ ":*" ] include_dirs = [ - "//third_party/json/include", "${fwk_common_path}/utils/include", "${fwk_utils_path}/include", "${fwk_utils_path}/include/log", diff --git a/services/audioclient/test/unittest/spkclient/BUILD.gn b/services/audioclient/test/unittest/spkclient/BUILD.gn index 190b39ce..ee7f5efa 100644 --- a/services/audioclient/test/unittest/spkclient/BUILD.gn +++ b/services/audioclient/test/unittest/spkclient/BUILD.gn @@ -25,7 +25,6 @@ config("module_private_config") { "${mediastandardfwk_path}/audiocommon/include", "${mediastandardfwk_path}/audiomanager/include", "${mediastandardfwk_path}/audiorenderer/include", - "//third_party/json/include", ] include_dirs += [ diff --git a/services/audiohdiproxy/test/unittest/daudio_manager_callback/BUILD.gn b/services/audiohdiproxy/test/unittest/daudio_manager_callback/BUILD.gn index 64312074..17cebd41 100644 --- a/services/audiohdiproxy/test/unittest/daudio_manager_callback/BUILD.gn +++ b/services/audiohdiproxy/test/unittest/daudio_manager_callback/BUILD.gn @@ -22,10 +22,7 @@ module_out_path = config("module_private_config") { visibility = [ ":*" ] - include_dirs = [ - "${fwk_common_path}/utils/include", - "//third_party/json/include", - ] + include_dirs = [ "${fwk_common_path}/utils/include" ] include_dirs += [ "include", diff --git a/services/audiomanager/managersink/include/daudio_sink_dev.h b/services/audiomanager/managersink/include/daudio_sink_dev.h index 905a7b0b..cdbe97aa 100644 --- a/services/audiomanager/managersink/include/daudio_sink_dev.h +++ b/services/audiomanager/managersink/include/daudio_sink_dev.h @@ -22,7 +22,7 @@ #include #include "event_handler.h" -#include "nlohmann/json.hpp" +#include "cJSON.h" #include "daudio_sink_dev_ctrl_manager.h" #include "dmic_client.h" @@ -38,8 +38,6 @@ #include "direct_dspeaker_client.h" #endif -using json = nlohmann::json; - namespace OHOS { namespace DistributedHardware { enum class ChannelState { @@ -75,11 +73,14 @@ private: int32_t TaskPlayStatusChange(const std::string &args); void NotifySourceDev(const AudioEventType type, const std::string dhId, const int32_t result); - int32_t from_json(const json &j, AudioParam &audioParam); + int32_t from_json(const cJSON *jsonObj, AudioParam &audioParam); int32_t HandleEngineMessage(uint32_t type, std::string content, std::string devId); int32_t SendAudioEventToRemote(const AudioEvent &event); void JudgeDeviceStatus(); + int32_t GetCJsonObjectItems(const cJSON *jsonObj, AudioParam &audioParam); + int32_t GetParamValue(const cJSON *jsonObj, const char* key, int32_t& value); + private: std::mutex rpcWaitMutex_; std::condition_variable rpcWaitCond_; diff --git a/services/audiomanager/managersink/src/daudio_sink_dev.cpp b/services/audiomanager/managersink/src/daudio_sink_dev.cpp index 053b88db..908b945f 100644 --- a/services/audiomanager/managersink/src/daudio_sink_dev.cpp +++ b/services/audiomanager/managersink/src/daudio_sink_dev.cpp @@ -116,31 +116,44 @@ int32_t DAudioSinkDev::TaskOpenDSpeaker(const std::string &args) if (args.length() > DAUDIO_MAX_JSON_LEN || args.empty()) { return ERR_DH_AUDIO_SA_PARAM_INVALID; } - json jParam = json::parse(args, nullptr, false); + + cJSON *jParam = cJSON_Parse(args.c_str()); + if (jParam == nullptr) { + DHLOGE("Failed to parse JSON parameter."); + cJSON_Delete(jParam); + return ERR_DH_AUDIO_FAILED; + } if (!JsonParamCheck(jParam, { KEY_DH_ID, KEY_AUDIO_PARAM })) { + cJSON_Delete(jParam); + DHLOGE("Not found the keys."); return ERR_DH_AUDIO_FAILED; } - spkDhId_ = jParam[KEY_DH_ID]; + spkDhId_ = std::string(cJSON_GetObjectItemCaseSensitive(jParam, KEY_DH_ID)->valuestring); + cJSON *audioParamJson = cJSON_GetObjectItemCaseSensitive(jParam, KEY_AUDIO_PARAM); AudioParam audioParam; - int32_t ret = from_json(jParam[KEY_AUDIO_PARAM], audioParam); + int32_t ret = from_json(audioParamJson, audioParam); if (ret != DH_SUCCESS) { DHLOGE("Get audio param from json failed, error code %d.", ret); + cJSON_Delete(jParam); return ret; } if (speakerClient_ == nullptr) { DHLOGE("speaker client should be init by dev."); + cJSON_Delete(jParam); return ERR_DH_AUDIO_NULLPTR; } - DHLOGI("Open speaker device."); + ret = speakerClient_->SetUp(audioParam); if (ret != DH_SUCCESS) { DHLOGE("Setup speaker failed, ret: %d.", ret); NotifySourceDev(NOTIFY_OPEN_SPEAKER_RESULT, spkDhId_, ERR_DH_AUDIO_FAILED); + cJSON_Delete(jParam); return ERR_DH_AUDIO_FAILED; } - NotifySourceDev(NOTIFY_OPEN_SPEAKER_RESULT, spkDhId_, ret); + cJSON_Delete(jParam); + DHLOGI("Open speaker device task end, notify source ret %d.", ret); isSpkInUse_.store(true); return ret; @@ -191,21 +204,34 @@ int32_t DAudioSinkDev::TaskOpenDMic(const std::string &args) if (args.length() > DAUDIO_MAX_JSON_LEN || args.empty()) { return ERR_DH_AUDIO_SA_PARAM_INVALID; } - json jParam = json::parse(args, nullptr, false); + + cJSON *jParam = cJSON_Parse(args.c_str()); + if (jParam == nullptr) { + DHLOGE("Failed to parse JSON parameter."); + cJSON_Delete(jParam); + return ERR_DH_AUDIO_FAILED; + } if (!JsonParamCheck(jParam, { KEY_DH_ID, KEY_AUDIO_PARAM })) { + DHLOGE("Not found the keys."); + cJSON_Delete(jParam); return ERR_DH_AUDIO_FAILED; } - micDhId_ = jParam[KEY_DH_ID]; + micDhId_ = std::string(cJSON_GetObjectItemCaseSensitive(jParam, KEY_DH_ID)->valuestring); + cJSON *audioParamJson = cJSON_GetObjectItemCaseSensitive(jParam, KEY_AUDIO_PARAM); AudioParam audioParam; - int32_t ret = from_json(jParam[KEY_AUDIO_PARAM], audioParam); + int32_t ret = from_json(audioParamJson, audioParam); if (ret != DH_SUCCESS) { DHLOGE("Get audio param from json failed, error code %d.", ret); + cJSON_Delete(jParam); return ret; } + if (micClient_ == nullptr) { DHLOGE("Mic client should be init by dev."); + cJSON_Delete(jParam); return ERR_DH_AUDIO_NULLPTR; } + do { ret = micClient_->SetUp(audioParam); if (ret != DH_SUCCESS) { @@ -218,7 +244,10 @@ int32_t DAudioSinkDev::TaskOpenDMic(const std::string &args) break; } } while (false); + NotifySourceDev(NOTIFY_OPEN_MIC_RESULT, micDhId_, ret); + cJSON_Delete(jParam); + DHLOGI("Open mic device task end, notify source ret %d.", ret); isMicInUse_.store(true); return ret; @@ -358,40 +387,107 @@ void DAudioSinkDev::NotifySourceDev(const AudioEventType type, const std::string { std::random_device rd; const uint32_t randomTaskCode = rd(); - json jEvent; - jEvent[KEY_DH_ID] = dhId; - jEvent[KEY_RESULT] = result; - jEvent[KEY_EVENT_TYPE] = type; - jEvent[KEY_RANDOM_TASK_CODE] = std::to_string(randomTaskCode); - - DHLOGD("Notify source dev, new engine, random task code:%s", std::to_string(randomTaskCode).c_str()); + + cJSON *jEvent = cJSON_CreateObject(); + if (jEvent == nullptr) { + DHLOGE("Failed to create JSON data."); + return; + } + cJSON_AddStringToObject(jEvent, KEY_DH_ID, dhId.c_str()); + cJSON_AddNumberToObject(jEvent, KEY_RESULT, result); + cJSON_AddNumberToObject(jEvent, KEY_EVENT_TYPE, static_cast(type)); + cJSON_AddNumberToObject(jEvent, KEY_RANDOM_TASK_CODE, randomTaskCode); + + DHLOGD("Notify source dev, new engine, random task code:%u", randomTaskCode); if (type == NOTIFY_OPEN_CTRL_RESULT || type == NOTIFY_CLOSE_CTRL_RESULT) { DHLOGE("In new engine mode, ctrl is not allowed."); + cJSON_Delete(jEvent); + return; + } + char *message = cJSON_PrintUnformatted(jEvent); + if (message == nullptr) { + DHLOGE("Failed to create JSON data."); + cJSON_Delete(jEvent); return; } + std::string messageStr(message); + if (speakerClient_ != nullptr) { - speakerClient_->SendMessage(static_cast(type), jEvent.dump(), devId_); + speakerClient_->SendMessage(static_cast(type), messageStr, devId_); } if (micClient_ != nullptr) { - micClient_->SendMessage(static_cast(type), jEvent.dump(), devId_); + micClient_->SendMessage(static_cast(type), messageStr, devId_); } + cJSON_Delete(jEvent); + cJSON_free(message); } -int32_t DAudioSinkDev::from_json(const json &j, AudioParam &audioParam) +int32_t DAudioSinkDev::GetParamValue(const cJSON *jsonObj, const char* key, int32_t& value) { - if (!JsonParamCheck(j, - { KEY_SAMPLING_RATE, KEY_CHANNELS, KEY_FORMAT, KEY_SOURCE_TYPE, KEY_CONTENT_TYPE, KEY_STREAM_USAGE })) { + cJSON *paramValue = cJSON_GetObjectItemCaseSensitive(jsonObj, key); + if (paramValue == nullptr || !cJSON_IsNumber(paramValue)) { + return ERR_DH_AUDIO_FAILED; + } + value = paramValue->valueint; + return DH_SUCCESS; +} + +int32_t DAudioSinkDev::GetCJsonObjectItems(const cJSON *jsonObj, AudioParam &audioParam) +{ + int32_t result = 0; + result = GetParamValue(jsonObj, KEY_SAMPLING_RATE, reinterpret_cast(audioParam.comParam.sampleRate)); + if (result != DH_SUCCESS) { + return result; + } + result = GetParamValue(jsonObj, KEY_CHANNELS, reinterpret_cast(audioParam.comParam.channelMask)); + if (result != DH_SUCCESS) { + return result; + } + result = GetParamValue(jsonObj, KEY_FORMAT, reinterpret_cast(audioParam.comParam.bitFormat)); + if (result != DH_SUCCESS) { + return result; + } + result = GetParamValue(jsonObj, KEY_FRAMESIZE, reinterpret_cast(audioParam.comParam.frameSize)); + if (result != DH_SUCCESS) { + return result; + } + result = GetParamValue(jsonObj, KEY_SOURCE_TYPE, reinterpret_cast(audioParam.captureOpts.sourceType)); + if (result != DH_SUCCESS) { + return result; + } + result = GetParamValue(jsonObj, KEY_CONTENT_TYPE, reinterpret_cast(audioParam.renderOpts.contentType)); + if (result != DH_SUCCESS) { + return result; + } + result = GetParamValue(jsonObj, KEY_STREAM_USAGE, reinterpret_cast(audioParam.renderOpts.streamUsage)); + if (result != DH_SUCCESS) { + return result; + } + result = GetParamValue(jsonObj, KEY_RENDER_FLAGS, reinterpret_cast(audioParam.renderOpts.renderFlags)); + if (result != DH_SUCCESS) { + return result; + } + result = GetParamValue(jsonObj, KEY_CAPTURE_FLAGS, + reinterpret_cast(audioParam.captureOpts.capturerFlags)); + if (result != DH_SUCCESS) { + return result; + } + return DH_SUCCESS; +} + +int32_t DAudioSinkDev::from_json(const cJSON *jsonObj, AudioParam &audioParam) +{ + if (!JsonParamCheck(jsonObj, + { KEY_SAMPLING_RATE, KEY_CHANNELS, KEY_FORMAT, KEY_SOURCE_TYPE, KEY_CONTENT_TYPE, KEY_STREAM_USAGE, + KEY_RENDER_FLAGS, KEY_CAPTURE_FLAGS, KEY_FRAMESIZE })) { + DHLOGE("Not found the keys."); + return ERR_DH_AUDIO_FAILED; + } + + int ret = GetCJsonObjectItems(jsonObj, audioParam); + if (ret != DH_SUCCESS) { return ERR_DH_AUDIO_FAILED; } - j.at(KEY_SAMPLING_RATE).get_to(audioParam.comParam.sampleRate); - j.at(KEY_CHANNELS).get_to(audioParam.comParam.channelMask); - j.at(KEY_FORMAT).get_to(audioParam.comParam.bitFormat); - j.at(KEY_FRAMESIZE).get_to(audioParam.comParam.frameSize); - j.at(KEY_SOURCE_TYPE).get_to(audioParam.captureOpts.sourceType); - j.at(KEY_CONTENT_TYPE).get_to(audioParam.renderOpts.contentType); - j.at(KEY_STREAM_USAGE).get_to(audioParam.renderOpts.streamUsage); - j.at(KEY_RENDER_FLAGS).get_to(audioParam.renderOpts.renderFlags); - j.at(KEY_CAPTURE_FLAGS).get_to(audioParam.captureOpts.capturerFlags); return DH_SUCCESS; } diff --git a/services/audiomanager/managersink/src/daudio_sink_manager.cpp b/services/audiomanager/managersink/src/daudio_sink_manager.cpp index 87b79f77..11508f3c 100644 --- a/services/audiomanager/managersink/src/daudio_sink_manager.cpp +++ b/services/audiomanager/managersink/src/daudio_sink_manager.cpp @@ -143,10 +143,15 @@ int32_t DAudioSinkManager::HandleDAudioNotify(const std::string &devId, const st } // now ctrl channel is also goto here, please sure here not crash. - json jParam = json::parse(eventContent, nullptr, false); + cJSON *jParam = cJSON_Parse(eventContent.c_str()); + if (jParam == nullptr) { + DHLOGE("Failed to parse JSON parameter."); + cJSON_Delete(jParam); + return ERR_DH_AUDIO_FAILED; + } if (JsonParamCheck(jParam, { KEY_RANDOM_TASK_CODE })) { DHLOGD("Receive audio notify from source, random task code: %s", - ((std::string)jParam[KEY_RANDOM_TASK_CODE]).c_str()); + cJSON_GetObjectItemCaseSensitive(jParam, KEY_RANDOM_TASK_CODE)->valuestring); } bool isDevExisted = false; { @@ -154,9 +159,12 @@ int32_t DAudioSinkManager::HandleDAudioNotify(const std::string &devId, const st isDevExisted = audioDevMap_.find(devId) != audioDevMap_.end(); } if (!isDevExisted && CreateAudioDevice(devId) != DH_SUCCESS) { + cJSON_Delete(jParam); return ERR_DH_AUDIO_FAILED; } + NotifyEvent(devId, eventType, eventContent); + cJSON_Delete(jParam); return DH_SUCCESS; } diff --git a/services/audiomanager/managersource/include/daudio_source_dev.h b/services/audiomanager/managersource/include/daudio_source_dev.h index 7e95e466..1be525e1 100644 --- a/services/audiomanager/managersource/include/daudio_source_dev.h +++ b/services/audiomanager/managersource/include/daudio_source_dev.h @@ -18,7 +18,7 @@ #include #include -#include "nlohmann/json.hpp" +#include "cJSON.h" #include "event_handler.h" @@ -33,8 +33,6 @@ #include "idaudio_ipc_callback.h" #include "idaudio_hdi_callback.h" -using json = nlohmann::json; - namespace OHOS { namespace DistributedHardware { class DAudioSourceDev : public IAudioEventCallback, public std::enable_shared_from_this { @@ -52,6 +50,7 @@ public: private: int32_t EnableDSpeaker(const int32_t dhId, const std::string &attrs); int32_t EnableDMic(const int32_t dhId, const std::string &attrs); + int32_t DisableDAudioInner(const std::string &dhId); int32_t DisableDSpeaker(const int32_t dhId); int32_t DisableDMic(const int32_t dhId); @@ -60,6 +59,7 @@ private: int32_t TaskOpenCtrlChannel(const std::string &args); int32_t TaskCloseCtrlChannel(const std::string &args); int32_t TaskOpenDSpeaker(const std::string &args); + int32_t OpenDSpeakerInner(); int32_t TaskCloseDSpeaker(const std::string &args); int32_t TaskOpenDMic(const std::string &args); int32_t TaskCloseDMic(const std::string &args); @@ -73,6 +73,10 @@ private: int32_t TaskMicMmapStart(const std::string &args); int32_t TaskMicMmapStop(const std::string &args); + int32_t NotifySinkDevOpenMic(cJSON *jParam); + int32_t OpenDMicInner(); + void CleanupJson(cJSON *jParamCopy, cJSON *jParam, char *content); + void OnDisableTaskResult(int32_t resultCode, const std::string &result, const std::string &funcName); void OnEnableTaskResult(int32_t resultCode, const std::string &result, const std::string &funcName); void OnTaskResult(int32_t resultCode, const std::string &result, const std::string &funcName); @@ -100,12 +104,12 @@ private: int32_t HandleMicMmapStart(const AudioEvent &event); int32_t HandleMicMmapStop(const AudioEvent &event); - int32_t NotifySinkDev(const AudioEventType type, const json Param, const std::string dhId); + int32_t NotifySinkDev(const AudioEventType type, const cJSON *param, const std::string dhId); int32_t NotifyHDF(const AudioEventType type, const std::string result); int32_t OpenCtrlTrans(const AudioEvent &event); int32_t CloseCtrlTrans(const AudioEvent &event, bool isSpk); AudioEventType getEventTypeFromArgs(const std::string &args); - void to_json(json &j, const AudioParam ¶m); + void to_json(cJSON **j, const AudioParam ¶m); int32_t SendAudioEventToRemote(const AudioEvent &event); int32_t CloseSpkOld(const std::string &args); int32_t CloseSpkNew(const std::string &args); diff --git a/services/audiomanager/managersource/include/dmic_dev.h b/services/audiomanager/managersource/include/dmic_dev.h index 68d49948..751f91ca 100644 --- a/services/audiomanager/managersource/include/dmic_dev.h +++ b/services/audiomanager/managersource/include/dmic_dev.h @@ -19,7 +19,7 @@ #include #include #include -#include "nlohmann/json.hpp" +#include "cJSON.h" #include "audio_param.h" #include "audio_status.h" @@ -31,8 +31,6 @@ #include "iaudio_event_callback.h" #include "idaudio_hdi_callback.h" -using json = nlohmann::json; - namespace OHOS { namespace DistributedHardware { class DMicDev : public IDAudioHdiCallback, diff --git a/services/audiomanager/managersource/include/dspeaker_dev.h b/services/audiomanager/managersource/include/dspeaker_dev.h index 0b2f8a5e..397a15fb 100644 --- a/services/audiomanager/managersource/include/dspeaker_dev.h +++ b/services/audiomanager/managersource/include/dspeaker_dev.h @@ -19,7 +19,7 @@ #include #include #include -#include "nlohmann/json.hpp" +#include "cJSON.h" #include "audio_param.h" #include "ashmem.h" @@ -30,8 +30,6 @@ #include "iaudio_datatrans_callback.h" #include "idaudio_hdi_callback.h" -using json = nlohmann::json; - namespace OHOS { namespace DistributedHardware { class DSpeakerDev : public IDAudioHdiCallback, diff --git a/services/audiomanager/managersource/src/daudio_source_dev.cpp b/services/audiomanager/managersource/src/daudio_source_dev.cpp index 1ae4cbc0..915668b4 100644 --- a/services/audiomanager/managersource/src/daudio_source_dev.cpp +++ b/services/audiomanager/managersource/src/daudio_source_dev.cpp @@ -15,6 +15,7 @@ #include "daudio_source_dev.h" +#include #include #include "daudio_constants.h" @@ -117,32 +118,42 @@ int32_t DAudioSourceDev::EnableDAudio(const std::string &dhId, const std::string DHLOGE("Event handler is null."); return ERR_DH_AUDIO_NULLPTR; } - json jParam = { { KEY_DEV_ID, devId_ }, { KEY_DH_ID, dhId }, { KEY_ATTRS, attrs } }; - auto eventParam = std::make_shared(jParam); + + cJSON *jParam = cJSON_CreateObject(); + if (jParam == nullptr) { + DHLOGE("Failed to create JSON object."); + return ERR_DH_AUDIO_NULLPTR; + } + cJSON_AddStringToObject(jParam, KEY_DEV_ID, devId_.c_str()); + cJSON_AddStringToObject(jParam, KEY_DH_ID, dhId.c_str()); + cJSON_AddStringToObject(jParam, KEY_ATTRS, attrs.c_str()); + auto eventParam = std::shared_ptr(jParam, cJSON_Delete); auto msgEvent = AppExecFwk::InnerEvent::Get(EVENT_DAUDIO_ENABLE, eventParam, 0); if (!handler_->SendEvent(msgEvent, 0, AppExecFwk::EventQueue::Priority::IMMEDIATE)) { DHLOGE("Send event failed."); return ERR_DH_AUDIO_FAILED; } - DHLOGD("Enable audio task generate successfully."); + DHLOGD("Enable audio task generated successfully."); return DH_SUCCESS; } -int32_t DAudioSourceDev::DisableDAudio(const std::string &dhId) +int32_t DAudioSourceDev::DisableDAudioInner(const std::string &dhId) { - DHLOGI("Disable audio device, dhId: %s.", dhId.c_str()); - isRpcOpen_.store(false); - if (handler_ == nullptr) { - DHLOGE("Event handler is null."); + cJSON *jParamClose = cJSON_CreateObject(); + if (jParamClose == nullptr) { + DHLOGE("Failed to create JSON object."); return ERR_DH_AUDIO_NULLPTR; } - - if (!CheckIsNum(dhId)) { - DHLOGE("Disable audio device dhId param error."); - return ERR_DH_AUDIO_SA_DISABLE_PARAM_INVALID; + cJSON_AddStringToObject(jParamClose, KEY_DH_ID, dhId.c_str()); + char *closeArg = cJSON_PrintUnformatted(jParamClose); + if (closeArg == nullptr) { + DHLOGE("Failed to create JSON data."); + cJSON_Delete(jParamClose); + return ERR_DH_AUDIO_NULLPTR; } - json jParamClose = { { KEY_DH_ID, dhId } }; - AudioEvent event(AudioEventType::EVENT_UNKNOWN, jParamClose.dump()); + std::string closeStr(closeArg); + AudioEvent event(AudioEventType::EVENT_UNKNOWN, std::string(closeStr)); + int32_t dhIdNum = std::stoi(dhId); switch (GetDevTypeByDHId(dhIdNum)) { case AUDIO_DEVICE_TYPE_SPEAKER: @@ -154,18 +165,49 @@ int32_t DAudioSourceDev::DisableDAudio(const std::string &dhId) HandleCloseDMic(event); break; default: + cJSON_Delete(jParamClose); + cJSON_free(closeArg); DHLOGE("Unknown audio device."); return ERR_DH_AUDIO_NOT_SUPPORT; } + cJSON_Delete(jParamClose); + cJSON_free(closeArg); + return DH_SUCCESS; +} + +int32_t DAudioSourceDev::DisableDAudio(const std::string &dhId) +{ + DHLOGI("Disable audio device, dhId: %s.", dhId.c_str()); + isRpcOpen_.store(false); + if (handler_ == nullptr) { + DHLOGE("Event handler is null."); + return ERR_DH_AUDIO_NULLPTR; + } + if (!CheckIsNum(dhId)) { + DHLOGE("Disable audio device dhId param error."); + return ERR_DH_AUDIO_SA_DISABLE_PARAM_INVALID; + } + int32_t ret = DisableDAudioInner(dhId); + if (ret != DH_SUCCESS) { + DHLOGE("Failed to disable audio,result is: %d", ret); + return ret; + } + + cJSON *jParam = cJSON_CreateObject(); + if (jParam == nullptr) { + DHLOGE("Failed to create JSON object."); + return ERR_DH_AUDIO_NULLPTR; + } + cJSON_AddStringToObject(jParam, KEY_DEV_ID, devId_.c_str()); + cJSON_AddStringToObject(jParam, KEY_DH_ID, dhId.c_str()); - json jParam = { { KEY_DEV_ID, devId_ }, { KEY_DH_ID, dhId } }; - auto eventParam = std::make_shared(jParam); + auto eventParam = std::shared_ptr(jParam, cJSON_Delete); auto msgEvent = AppExecFwk::InnerEvent::Get(EVENT_DAUDIO_DISABLE, eventParam, 0); if (!handler_->SendEvent(msgEvent, 0, AppExecFwk::EventQueue::Priority::IMMEDIATE)) { DHLOGE("Send event failed."); return ERR_DH_AUDIO_FAILED; } - DHLOGD("Disable audio task generate successfully."); + DHLOGD("Disable audio task generated successfully."); return DH_SUCCESS; } @@ -362,20 +404,29 @@ int32_t DAudioSourceDev::HandleNotifyRPC(const AudioEvent &event) if (event.content.length() > DAUDIO_MAX_JSON_LEN || event.content.empty()) { return ERR_DH_AUDIO_SA_PARAM_INVALID; } - json jParam = json::parse(event.content, nullptr, false); + cJSON *jParam = cJSON_Parse(event.content.c_str()); + if (jParam == nullptr) { + DHLOGE("Failed to parse JSON data"); + cJSON_Delete(jParam); + return ERR_DH_AUDIO_FAILED; + } if (!JsonParamCheck(jParam, { KEY_RESULT })) { + DHLOGE("Not found the keys."); + cJSON_Delete(jParam); return ERR_DH_AUDIO_FAILED; } - rpcResult_ = (jParam[KEY_RESULT] == DH_SUCCESS) ? true : false; + rpcResult_ = (cJSON_IsTrue(cJSON_GetObjectItem(jParam, KEY_RESULT)) == 1) ? true : false; DHLOGD("Notify RPC event: %d, result: %d.", event.type, rpcResult_); std::map::iterator iter = eventNotifyMap_.find(event.type); if (iter == eventNotifyMap_.end()) { + cJSON_Delete(jParam); DHLOGE("Invalid eventType."); return ERR_DH_AUDIO_NOT_FOUND_KEY; } rpcNotify_ = iter->second; rpcWaitCond_.notify_all(); + cJSON_Delete(jParam); return DH_SUCCESS; } @@ -583,22 +634,44 @@ int32_t DAudioSourceDev::TaskEnableDAudio(const std::string &args) if (args.length() > DAUDIO_MAX_JSON_LEN || args.empty()) { return ERR_DH_AUDIO_SA_PARAM_INVALID; } - json jParam = json::parse(args, nullptr, false); - if (!JsonParamCheck(jParam, { KEY_DH_ID, KEY_ATTRS }) || !CheckIsNum((std::string)jParam[KEY_DH_ID])) { + + cJSON *jParam = cJSON_Parse(args.c_str()); + if (jParam == nullptr) { + DHLOGE("Failed to parse JSON parameter."); + cJSON_Delete(jParam); + return ERR_DH_AUDIO_FAILED; + } + if (!JsonParamCheck(jParam, { KEY_DH_ID, KEY_ATTRS }) || + !CheckIsNum(std::string(cJSON_GetObjectItemCaseSensitive(jParam, KEY_DH_ID)->valuestring))) { + cJSON_Delete(jParam); DHLOGE("The keys or values is invalid."); return ERR_DH_AUDIO_SA_ENABLE_PARAM_INVALID; } - int32_t dhId = std::stoi((std::string)jParam[KEY_DH_ID]); - + cJSON *jsonDhId = cJSON_GetObjectItemCaseSensitive(jParam, KEY_DH_ID); + if (jsonDhId == nullptr) { + DHLOGE("Failed to get object item."); + cJSON_Delete(jParam); + return ERR_DH_AUDIO_NULLPTR; + } + int32_t dhId = std::atoi(jsonDhId->valuestring); + char *attrs = cJSON_PrintUnformatted(cJSON_GetObjectItem(jParam, KEY_ATTRS)); + std::string attrsStr(attrs); + int32_t result = 0; switch (GetDevTypeByDHId(dhId)) { case AUDIO_DEVICE_TYPE_SPEAKER: - return EnableDSpeaker(dhId, jParam[KEY_ATTRS]); + result = EnableDSpeaker(dhId, attrsStr); + break; case AUDIO_DEVICE_TYPE_MIC: - return EnableDMic(dhId, jParam[KEY_ATTRS]); + result = EnableDMic(dhId, attrsStr); + break; default: DHLOGE("Unknown audio device."); - return ERR_DH_AUDIO_NOT_SUPPORT; + result = ERR_DH_AUDIO_NOT_SUPPORT; + break; } + cJSON_Delete(jParam); + cJSON_free(attrs); + return result; } int32_t DAudioSourceDev::EnableDSpeaker(const int32_t dhId, const std::string &attrs) @@ -633,12 +706,29 @@ void DAudioSourceDev::OnEnableTaskResult(int32_t resultCode, const std::string & if (result.length() > DAUDIO_MAX_JSON_LEN || result.empty()) { return; } - json jParam = json::parse(result, nullptr, false); + cJSON *jParam = cJSON_Parse(result.c_str()); + if (jParam == nullptr) { + DHLOGE("Failed to parse JSON parameter."); + cJSON_Delete(jParam); + return; + } if (!JsonParamCheck(jParam, { KEY_DEV_ID, KEY_DH_ID })) { DHLOGE("Not found the keys."); + cJSON_Delete(jParam); return; } - mgrCallback_->OnEnableAudioResult(jParam[KEY_DEV_ID], jParam[KEY_DH_ID], resultCode); + char *devId = cJSON_PrintUnformatted(cJSON_GetObjectItem(jParam, KEY_DEV_ID)); + std::string devIdStr(devId); + char *dhId = cJSON_PrintUnformatted(cJSON_GetObjectItem(jParam, KEY_DH_ID)); + std::string dhIdStr(dhId); + mgrCallback_->OnEnableAudioResult(devIdStr, dhIdStr, resultCode); + cJSON_Delete(jParam); + if (devId != nullptr) { + cJSON_free(devId); + } + if (dhId != nullptr) { + cJSON_free(dhId); + } } int32_t DAudioSourceDev::TaskDisableDAudio(const std::string &args) @@ -647,20 +737,39 @@ int32_t DAudioSourceDev::TaskDisableDAudio(const std::string &args) if (args.length() > DAUDIO_MAX_JSON_LEN || args.empty()) { return ERR_DH_AUDIO_SA_PARAM_INVALID; } - json jParam = json::parse(args, nullptr, false); - if (!JsonParamCheck(jParam, { KEY_DH_ID }) || !CheckIsNum((std::string)jParam[KEY_DH_ID])) { + cJSON *jParam = cJSON_Parse(args.c_str()); + if (jParam == nullptr) { + DHLOGE("Failed to parse JSON parameter."); + cJSON_Delete(jParam); + return ERR_DH_AUDIO_FAILED; + } + if (!JsonParamCheck(jParam, { KEY_DH_ID }) || + !CheckIsNum(std::string(cJSON_GetObjectItem(jParam, KEY_DH_ID)->valuestring))) { + cJSON_Delete(jParam); + DHLOGE("Not found the keys."); return ERR_DH_AUDIO_SA_DISABLE_PARAM_INVALID; } - int32_t dhId = std::stoi((std::string)jParam[KEY_DH_ID]); + cJSON *jsonDhId = cJSON_GetObjectItemCaseSensitive(jParam, KEY_DH_ID); + if (jsonDhId == nullptr) { + DHLOGE("Failed to get object item."); + return ERR_DH_AUDIO_NULLPTR; + } + int32_t dhId = std::atoi(jsonDhId->valuestring); + int32_t result = 0; switch (GetDevTypeByDHId(dhId)) { case AUDIO_DEVICE_TYPE_SPEAKER: - return DisableDSpeaker(dhId); + result = DisableDSpeaker(dhId); + break; case AUDIO_DEVICE_TYPE_MIC: - return DisableDMic(dhId); + result = DisableDMic(dhId); + break; default: DHLOGE("Unknown audio device."); - return ERR_DH_AUDIO_NOT_SUPPORT; + result = ERR_DH_AUDIO_NOT_SUPPORT; + break; } + cJSON_Delete(jParam); + return result; } int32_t DAudioSourceDev::DisableDSpeaker(const int32_t dhId) @@ -695,12 +804,29 @@ void DAudioSourceDev::OnDisableTaskResult(int32_t resultCode, const std::string if (result.length() > DAUDIO_MAX_JSON_LEN || result.empty()) { return; } - json jParam = json::parse(result, nullptr, false); + cJSON *jParam = cJSON_Parse(result.c_str()); + if (jParam == nullptr) { + DHLOGE("Failed to parse JSON parameter."); + cJSON_Delete(jParam); + return; + } if (!JsonParamCheck(jParam, { KEY_DEV_ID, KEY_DH_ID })) { DHLOGE("Not found the keys."); + cJSON_Delete(jParam); return; } - mgrCallback_->OnDisableAudioResult(jParam[KEY_DEV_ID], jParam[KEY_DH_ID], resultCode); + char *devId = cJSON_PrintUnformatted(cJSON_GetObjectItem(jParam, KEY_DEV_ID)); + std::string devIdStr(devId); + char *dhId = cJSON_PrintUnformatted(cJSON_GetObjectItem(jParam, KEY_DH_ID)); + std::string dhIdStr(dhId); + mgrCallback_->OnDisableAudioResult(devIdStr, dhIdStr, resultCode); + cJSON_Delete(jParam); + if (devId != nullptr) { + cJSON_free(devId); + } + if (dhId != nullptr) { + cJSON_free(dhId); + } } int32_t DAudioSourceDev::TaskOpenDSpeaker(const std::string &args) @@ -713,26 +839,51 @@ int32_t DAudioSourceDev::TaskOpenDSpeaker(const std::string &args) if (args.length() > DAUDIO_MAX_JSON_LEN || args.empty()) { return ERR_DH_AUDIO_SA_PARAM_INVALID; } - json jParam = json::parse(args, nullptr, false); + cJSON *jParam = cJSON_Parse(args.c_str()); + if (jParam == nullptr) { + DHLOGE("Failed to parse JSON: %s", cJSON_GetErrorPtr()); + cJSON_Delete(jParam); + return ERR_DH_AUDIO_NULLPTR; + } if (!JsonParamCheck(jParam, { KEY_DH_ID })) { + DHLOGE("Not found the keys."); + cJSON_Delete(jParam); return ERR_DH_AUDIO_FAILED; } - int32_t ret = speaker_->InitSenderEngine(DAudioSourceManager::GetInstance().getSenderProvider()); if (ret != DH_SUCCESS) { DHLOGE("Speaker init sender Engine, error code %d.", ret); + cJSON_Delete(jParam); return ret; } - - json jAudioParam; - to_json(jAudioParam, speaker_->GetAudioParam()); - ret = NotifySinkDev(OPEN_SPEAKER, jAudioParam, jParam[KEY_DH_ID]); + cJSON *jAudioParam = cJSON_CreateObject(); + if (jAudioParam == nullptr) { + DHLOGE("Failed to parse JSON: %s", cJSON_GetErrorPtr()); + return ERR_DH_AUDIO_NULLPTR; + } + to_json(&jAudioParam, speaker_->GetAudioParam()); + ret = NotifySinkDev(OPEN_SPEAKER, jAudioParam, std::string(cJSON_GetObjectItem(jParam, KEY_DH_ID)->valuestring)); if (ret != DH_SUCCESS) { DHLOGE("Notify sink open speaker failed, error code %d.", ret); + cJSON_Delete(jParam); + cJSON_Delete(jAudioParam); + return ret; + } + ret = OpenDSpeakerInner(); + if (ret != DH_SUCCESS) { + DHLOGE("Task Open DSpeaker Execute failed, error code %d.", ret); + cJSON_Delete(jParam); + cJSON_Delete(jAudioParam); return ret; } + cJSON_Delete(jParam); + cJSON_Delete(jAudioParam); + return DH_SUCCESS; +} - ret = speaker_->SetUp(); +int32_t DAudioSourceDev::OpenDSpeakerInner() +{ + int32_t ret = speaker_->SetUp(); if (ret != DH_SUCCESS) { DHLOGE("Speaker setup failed, error code %d.", ret); return ret; @@ -763,12 +914,26 @@ int32_t DAudioSourceDev::CloseSpkOld(const std::string &args) closeStatus = false; } if (!speaker_->IsOpened()) { - json jAudioParam; - json jParam = json::parse(args, nullptr, false); + cJSON *jAudioParam = cJSON_CreateObject(); + if (jAudioParam == nullptr) { + DHLOGE("Failed to create JSON object."); + return ERR_DH_AUDIO_NULLPTR; + } + cJSON *jParam = cJSON_Parse(args.c_str()); + if (jParam == nullptr) { + DHLOGE("Failed to parse JSON parameter."); + cJSON_Delete(jParam); + return ERR_DH_AUDIO_NULLPTR; + } if (!JsonParamCheck(jParam, { KEY_DH_ID })) { + DHLOGE("Not found the keys."); + cJSON_Delete(jParam); + cJSON_Delete(jAudioParam); return ERR_DH_AUDIO_FAILED; } - NotifySinkDev(CLOSE_SPEAKER, jAudioParam, jParam[KEY_DH_ID]); + NotifySinkDev(CLOSE_SPEAKER, jAudioParam, std::string(cJSON_GetObjectItem(jParam, KEY_DH_ID)->valuestring)); + cJSON_Delete(jParam); + cJSON_Delete(jAudioParam); } if (!closeStatus) { return ERR_DH_AUDIO_FAILED; @@ -779,13 +944,24 @@ int32_t DAudioSourceDev::CloseSpkOld(const std::string &args) int32_t DAudioSourceDev::CloseSpkNew(const std::string &args) { DHLOGI("Close speaker new"); - json jAudioParam; - json jParam = json::parse(args, nullptr, false); + cJSON *jAudioParam = cJSON_CreateObject(); + if (jAudioParam == nullptr) { + DHLOGE("Failed to create JSON object."); + return ERR_DH_AUDIO_NULLPTR; + } + cJSON *jParam = cJSON_Parse(args.c_str()); + if (jParam == nullptr) { + DHLOGE("Failed to parse JSON parameter."); + cJSON_Delete(jParam); + return ERR_DH_AUDIO_NULLPTR; + } if (!JsonParamCheck(jParam, { KEY_DH_ID })) { - DHLOGE("Task close speaker, json param check failed."); + DHLOGE("Task close speaker new, json param check failed."); + cJSON_Delete(jParam); + cJSON_Delete(jAudioParam); return ERR_DH_AUDIO_FAILED; } - NotifySinkDev(CLOSE_SPEAKER, jAudioParam, jParam[KEY_DH_ID]); + NotifySinkDev(CLOSE_SPEAKER, jAudioParam, std::string(cJSON_GetObjectItem(jParam, KEY_DH_ID)->valuestring)); bool closeStatus = true; int32_t ret = speaker_->Stop(); if (ret != DH_SUCCESS) { @@ -798,8 +974,12 @@ int32_t DAudioSourceDev::CloseSpkNew(const std::string &args) closeStatus = false; } if (!closeStatus) { + cJSON_Delete(jParam); + cJSON_Delete(jAudioParam); return ERR_DH_AUDIO_FAILED; } + cJSON_Delete(jParam); + cJSON_Delete(jAudioParam); return DH_SUCCESS; } @@ -845,20 +1025,54 @@ int32_t DAudioSourceDev::TaskOpenDMic(const std::string &args) return ret; } - json jAudioParam; - json jParam = json::parse(args, nullptr, false); + cJSON *jParam = cJSON_Parse(args.c_str()); + if (jParam == nullptr) { + DHLOGE("Failed to parse JSON: %s", cJSON_GetErrorPtr()); + cJSON_Delete(jParam); + mic_->Release(); + return ERR_DH_AUDIO_FAILED; + } if (!JsonParamCheck(jParam, { KEY_DH_ID })) { + cJSON_Delete(jParam); return ERR_DH_AUDIO_FAILED; } - to_json(jAudioParam, mic_->GetAudioParam()); - ret = NotifySinkDev(OPEN_MIC, jAudioParam, jParam[KEY_DH_ID]); + + ret = NotifySinkDevOpenMic(jParam); + if (ret != DH_SUCCESS) { + cJSON_Delete(jParam); + return ret; + } + + ret = OpenDMicInner(); + if (ret != DH_SUCCESS) { + cJSON_Delete(jParam); + return ret; + } + cJSON_Delete(jParam); + return DH_SUCCESS; +} + +int32_t DAudioSourceDev::NotifySinkDevOpenMic(cJSON *jParam) +{ + cJSON *jAudioParam = cJSON_CreateObject(); + if (jAudioParam == nullptr) { + return ERR_DH_AUDIO_NULLPTR; + } + to_json(&jAudioParam, mic_->GetAudioParam()); + int32_t ret = NotifySinkDev(OPEN_MIC, jAudioParam, cJSON_GetObjectItem(jParam, KEY_DH_ID)->valuestring); if (ret != DH_SUCCESS) { DHLOGE("Notify sink open mic failed, error code %d.", ret); mic_->Release(); + cJSON_Delete(jAudioParam); return ret; } + cJSON_Delete(jAudioParam); + return DH_SUCCESS; +} - ret = mic_->Start(); +int32_t DAudioSourceDev::OpenDMicInner() +{ + int32_t ret = mic_->Start(); if (ret != DH_SUCCESS) { DHLOGE("Mic start failed, error code %d.", ret); mic_->Stop(); @@ -884,13 +1098,26 @@ int32_t DAudioSourceDev::CloseMicOld(const std::string &args) closeStatus = false; } if (!mic_->IsOpened()) { - json jAudioParam; - json jParam = json::parse(args, nullptr, false); + cJSON *jAudioParam = cJSON_CreateObject(); + if (jAudioParam == nullptr) { + DHLOGE("Failed to create JSON object."); + return ERR_DH_AUDIO_NULLPTR; + } + cJSON *jParam = cJSON_Parse(args.c_str()); + if (jParam == nullptr) { + DHLOGE("Failed to parse JSON parameter."); + cJSON_Delete(jParam); + return ERR_DH_AUDIO_NULLPTR; + } if (!JsonParamCheck(jParam, { KEY_DH_ID })) { DHLOGE("Task close mic, json param check failed."); + cJSON_Delete(jAudioParam); + cJSON_Delete(jParam); return ERR_DH_AUDIO_FAILED; } - NotifySinkDev(CLOSE_MIC, jAudioParam, jParam[KEY_DH_ID]); + NotifySinkDev(CLOSE_MIC, jAudioParam, std::string(cJSON_GetObjectItem(jParam, KEY_DH_ID)->valuestring)); + cJSON_Delete(jAudioParam); + cJSON_Delete(jParam); } if (!closeStatus) { return ERR_DH_AUDIO_FAILED; @@ -901,13 +1128,24 @@ int32_t DAudioSourceDev::CloseMicOld(const std::string &args) int32_t DAudioSourceDev::CloseMicNew(const std::string &args) { DHLOGI("Close mic new."); - json jAudioParam; - json jParam = json::parse(args, nullptr, false); + cJSON *jAudioParam = cJSON_CreateObject(); + if (jAudioParam == nullptr) { + DHLOGE("Failed to create JSON object."); + return ERR_DH_AUDIO_NULLPTR; + } + cJSON *jParam = cJSON_Parse(args.c_str()); + if (jParam == nullptr) { + DHLOGE("Failed to parse JSON parameter."); + cJSON_Delete(jParam); + return ERR_DH_AUDIO_NULLPTR; + } if (!JsonParamCheck(jParam, { KEY_DH_ID })) { DHLOGE("Task close mic, json param check failed."); + cJSON_Delete(jAudioParam); + cJSON_Delete(jParam); return ERR_DH_AUDIO_FAILED; } - NotifySinkDev(CLOSE_MIC, jAudioParam, jParam[KEY_DH_ID]); + NotifySinkDev(CLOSE_MIC, jAudioParam, std::string(cJSON_GetObjectItem(jParam, KEY_DH_ID)->valuestring)); bool closeStatus = true; int32_t ret = mic_->Stop(); @@ -921,8 +1159,12 @@ int32_t DAudioSourceDev::CloseMicNew(const std::string &args) closeStatus = false; } if (!closeStatus) { + cJSON_Delete(jAudioParam); + cJSON_Delete(jParam); return ERR_DH_AUDIO_FAILED; } + cJSON_Delete(jAudioParam); + cJSON_Delete(jParam); return DH_SUCCESS; } @@ -1088,35 +1330,60 @@ void DAudioSourceDev::OnTaskResult(int32_t resultCode, const std::string &result funcName.c_str()); } -int32_t DAudioSourceDev::NotifySinkDev(const AudioEventType type, const json Param, const std::string dhId) +void DAudioSourceDev::CleanupJson(cJSON *jParamCopy, cJSON *jParam, char *content) +{ + cJSON_Delete(jParamCopy); + cJSON_Delete(jParam); + cJSON_free(content); +} + +int32_t DAudioSourceDev::NotifySinkDev(const AudioEventType type, const cJSON *param, const std::string dhId) { if (!isRpcOpen_.load()) { DHLOGE("Network connection failure, rpc is not open!"); return ERR_DH_AUDIO_FAILED; } + cJSON *jParam = cJSON_CreateObject(); + if (jParam == nullptr) { + DHLOGE("Failed to create JSON object."); + return ERR_DH_AUDIO_NULLPTR; + } + cJSON_AddStringToObject(jParam, KEY_DH_ID, dhId.c_str()); + cJSON_AddNumberToObject(jParam, KEY_EVENT_TYPE, static_cast(type)); + cJSON *jParamCopy = cJSON_Duplicate(param, 1); + cJSON_AddItemToObject(jParam, KEY_AUDIO_PARAM, jParamCopy); std::random_device rd; const uint32_t randomTaskCode = rd(); constexpr uint32_t eventOffset = 4; - json jParam = { { KEY_DH_ID, dhId }, - { KEY_EVENT_TYPE, type }, - { KEY_AUDIO_PARAM, Param }, - { KEY_RANDOM_TASK_CODE, std::to_string(randomTaskCode) } }; + cJSON_AddStringToObject(jParam, KEY_RANDOM_TASK_CODE, std::to_string(randomTaskCode).c_str()); + DHLOGD("Notify sink dev, new engine, random task code:%s", std::to_string(randomTaskCode).c_str()); + if (speaker_ == nullptr || mic_ == nullptr) { + cJSON_Delete(jParamCopy); + cJSON_Delete(jParam); DHLOGE("speaker or mic dev is null."); return ERR_DH_AUDIO_NULLPTR; } + if (type == OPEN_CTRL || type == CLOSE_CTRL) { + cJSON_Delete(jParamCopy); + cJSON_Delete(jParam); DHLOGE("In new engine mode, ctrl is not allowed."); return ERR_DH_AUDIO_NULLPTR; } - speaker_->SendMessage(static_cast(type), jParam.dump(), devId_); - mic_->SendMessage(static_cast(type), jParam.dump(), devId_); + char *content = cJSON_PrintUnformatted(jParam); + std::string contentStr(content); + speaker_->SendMessage(static_cast(type), contentStr, devId_); + mic_->SendMessage(static_cast(type), contentStr, devId_); + if (type == CLOSE_SPEAKER || type == CLOSE_MIC) { // Close spk || Close mic do not need to wait RPC + CleanupJson(jParamCopy, jParam, content); return DH_SUCCESS; } + CleanupJson(jParamCopy, jParam, content); return WaitForRPC(static_cast(static_cast(type) + eventOffset)); } @@ -1157,15 +1424,22 @@ AudioEventType DAudioSourceDev::getEventTypeFromArgs(const std::string &args) return AudioEventType::VOLUME_SET; } -void DAudioSourceDev::to_json(json &j, const AudioParam ¶m) +void DAudioSourceDev::to_json(cJSON **j, const AudioParam ¶m) { - j = json { - { KEY_SAMPLING_RATE, param.comParam.sampleRate }, { KEY_FORMAT, param.comParam.bitFormat }, - { KEY_CHANNELS, param.comParam.channelMask }, { KEY_FRAMESIZE, param.comParam.frameSize }, - { KEY_CONTENT_TYPE, param.renderOpts.contentType }, { KEY_STREAM_USAGE, param.renderOpts.streamUsage }, - { KEY_RENDER_FLAGS, param.renderOpts.renderFlags }, { KEY_CAPTURE_FLAGS, param.captureOpts.capturerFlags }, - { KEY_SOURCE_TYPE, param.captureOpts.sourceType }, - }; + *j = cJSON_CreateObject(); + if (*j == nullptr) { + DHLOGE("Failed to create JSON object."); + return; + } + cJSON_AddNumberToObject(*j, KEY_SAMPLING_RATE, param.comParam.sampleRate); + cJSON_AddNumberToObject(*j, KEY_FORMAT, param.comParam.bitFormat); + cJSON_AddNumberToObject(*j, KEY_CHANNELS, param.comParam.channelMask); + cJSON_AddNumberToObject(*j, KEY_FRAMESIZE, param.comParam.frameSize); + cJSON_AddNumberToObject(*j, KEY_CONTENT_TYPE, param.renderOpts.contentType); + cJSON_AddNumberToObject(*j, KEY_STREAM_USAGE, param.renderOpts.streamUsage); + cJSON_AddNumberToObject(*j, KEY_RENDER_FLAGS, param.renderOpts.renderFlags); + cJSON_AddNumberToObject(*j, KEY_CAPTURE_FLAGS, param.captureOpts.capturerFlags); + cJSON_AddNumberToObject(*j, KEY_SOURCE_TYPE, param.captureOpts.sourceType); } DAudioSourceDev::SourceEventHandler::SourceEventHandler(const std::shared_ptr &runner, @@ -1210,7 +1484,7 @@ void DAudioSourceDev::SourceEventHandler::EnableDAudioCallback(const AppExecFwk: DHLOGE("The input event is null."); return; } - std::shared_ptr jParam = event->GetSharedObject(); + cJSON *jParam = event->GetSharedObject().get(); if (jParam == nullptr) { DHLOGE("The json parameter is null."); return; @@ -1220,11 +1494,17 @@ void DAudioSourceDev::SourceEventHandler::EnableDAudioCallback(const AppExecFwk: DHLOGE("Source dev is invalid."); return; } - int32_t ret = sourceDevObj->TaskEnableDAudio(jParam->dump()); + char* jsonString = cJSON_PrintUnformatted(jParam); + std::string jParamStr(jsonString, jsonString + strlen(jsonString)); + if (jsonString != nullptr) { + cJSON_free(jsonString); + } + DHLOGI("EnableDAudioCallback jParamStr is: %s", jParamStr.c_str()); + int32_t ret = sourceDevObj->TaskEnableDAudio(jParamStr); if (ret != DH_SUCCESS) { DHLOGE("Open ctrl channel failed."); } - sourceDevObj->OnEnableTaskResult(ret, jParam->dump(), ""); + sourceDevObj->OnEnableTaskResult(ret, jParamStr, ""); } void DAudioSourceDev::SourceEventHandler::DisableDAudioCallback(const AppExecFwk::InnerEvent::Pointer &event) @@ -1233,7 +1513,7 @@ void DAudioSourceDev::SourceEventHandler::DisableDAudioCallback(const AppExecFwk DHLOGE("The input event is null."); return; } - std::shared_ptr jParam = event->GetSharedObject(); + cJSON *jParam = event->GetSharedObject().get(); if (jParam == nullptr) { DHLOGE("The json parameter is null."); return; @@ -1243,11 +1523,17 @@ void DAudioSourceDev::SourceEventHandler::DisableDAudioCallback(const AppExecFwk DHLOGE("Source dev is invalid."); return; } - int32_t ret = sourceDevObj->TaskDisableDAudio(jParam->dump()); + char* jsonString = cJSON_PrintUnformatted(jParam); + std::string jParamStr(jsonString, jsonString + strlen(jsonString)); + if (jsonString != nullptr) { + cJSON_free(jsonString); + } + DHLOGI("DisableDAudioCallback jParamStr is: %s", jParamStr.c_str()); + int32_t ret = sourceDevObj->TaskDisableDAudio(jParamStr); if (ret != DH_SUCCESS) { DHLOGE("Disable distributed audio failed."); } - sourceDevObj->OnDisableTaskResult(ret, jParam->dump(), ""); + sourceDevObj->OnDisableTaskResult(ret, jParamStr, ""); } void DAudioSourceDev::SourceEventHandler::OpenDSpeakerCallback(const AppExecFwk::InnerEvent::Pointer &event) diff --git a/services/audiomanager/managersource/src/daudio_source_manager.cpp b/services/audiomanager/managersource/src/daudio_source_manager.cpp index 85923dc1..8612977e 100644 --- a/services/audiomanager/managersource/src/daudio_source_manager.cpp +++ b/services/audiomanager/managersource/src/daudio_source_manager.cpp @@ -180,21 +180,29 @@ int32_t DAudioSourceManager::HandleDAudioNotify(const std::string &devId, const } // now ctrl channel is also goto here, please sure here not crash. - json jParam = json::parse(eventContent, nullptr, false); + cJSON *jParam = cJSON_Parse(eventContent.c_str()); + if (jParam == nullptr) { + DHLOGE("Failed to parse JSON parameter."); + cJSON_Delete(jParam); + return ERR_DH_AUDIO_FAILED; + } if (JsonParamCheck(jParam, { KEY_RANDOM_TASK_CODE })) { DHLOGD("Receive audio notify from sink, random task code: %s", - ((std::string)jParam[KEY_RANDOM_TASK_CODE]).c_str()); + cJSON_GetObjectItemCaseSensitive(jParam, KEY_RANDOM_TASK_CODE)->valuestring); } std::lock_guard lock(devMapMtx_); auto dev = audioDevMap_.find(devId); if (dev == audioDevMap_.end()) { + cJSON_Delete(jParam); DHLOGE("Audio device not exist."); return ERR_DH_AUDIO_SA_DEVICE_NOT_EXIST; } AudioEvent audioEvent(eventType, eventContent); audioDevMap_[devId].dev->NotifyEvent(audioEvent); + + cJSON_Delete(jParam); return DH_SUCCESS; } diff --git a/services/audiomanager/managersource/src/dmic_dev.cpp b/services/audiomanager/managersource/src/dmic_dev.cpp index e2f15d0c..5f2a04f4 100644 --- a/services/audiomanager/managersource/src/dmic_dev.cpp +++ b/services/audiomanager/managersource/src/dmic_dev.cpp @@ -159,11 +159,28 @@ int32_t DMicDev::OpenDevice(const std::string &devId, const int32_t dhId) DHLOGE("Event callback is null"); return ERR_DH_AUDIO_SA_MICCALLBACK_NULL; } - json jParam = { { KEY_DH_ID, std::to_string(dhId) } }; - AudioEvent event(AudioEventType::OPEN_MIC, jParam.dump()); + + cJSON *jParam = cJSON_CreateObject(); + if (jParam == nullptr) { + DHLOGE("Failed to create cJSON object."); + return ERR_DH_AUDIO_TRANS_NULL_VALUE; + } + cJSON_AddStringToObject(jParam, KEY_DH_ID, std::to_string(dhId).c_str()); + + char *jsonData = cJSON_PrintUnformatted(jParam); + if (jsonData == nullptr) { + cJSON_Delete(jParam); + DHLOGE("Failed to create JSON data."); + return ERR_DH_AUDIO_TRANS_NULL_VALUE; + } + + std::string jsonDataStr(jsonData); + AudioEvent event(AudioEventType::OPEN_MIC, jsonDataStr); cbObj->NotifyEvent(event); DAudioHisysevent::GetInstance().SysEventWriteBehavior(DAUDIO_OPEN, devId, std::to_string(dhId), "daudio mic device open success."); + cJSON_Delete(jParam); + cJSON_free(jsonData); return DH_SUCCESS; } @@ -175,11 +192,28 @@ int32_t DMicDev::CloseDevice(const std::string &devId, const int32_t dhId) DHLOGE("Event callback is null"); return ERR_DH_AUDIO_SA_MICCALLBACK_NULL; } - json jParam = { { KEY_DH_ID, std::to_string(dhId) } }; - AudioEvent event(AudioEventType::CLOSE_MIC, jParam.dump()); + + cJSON *jParam = cJSON_CreateObject(); + if (jParam == nullptr) { + DHLOGE("Failed to create cJSON object."); + return ERR_DH_AUDIO_TRANS_NULL_VALUE; + } + cJSON_AddStringToObject(jParam, KEY_DH_ID, std::to_string(dhId).c_str()); + + char *jsonData = cJSON_PrintUnformatted(jParam); + if (jsonData == nullptr) { + cJSON_Delete(jParam); + DHLOGE("Failed to create JSON data."); + return ERR_DH_AUDIO_TRANS_NULL_VALUE; + } + + std::string jsonDataStr(jsonData); + AudioEvent event(AudioEventType::CLOSE_MIC, jsonDataStr); cbObj->NotifyEvent(event); DAudioHisysevent::GetInstance().SysEventWriteBehavior(DAUDIO_CLOSE, devId, std::to_string(dhId), "daudio mic device close success."); + cJSON_Delete(jParam); + cJSON_free(jsonData); curPort_ = 0; return DH_SUCCESS; } diff --git a/services/audiomanager/managersource/src/dspeaker_dev.cpp b/services/audiomanager/managersource/src/dspeaker_dev.cpp index bc4bda05..9ada4b8e 100644 --- a/services/audiomanager/managersource/src/dspeaker_dev.cpp +++ b/services/audiomanager/managersource/src/dspeaker_dev.cpp @@ -152,11 +152,27 @@ int32_t DSpeakerDev::OpenDevice(const std::string &devId, const int32_t dhId) return ERR_DH_AUDIO_SA_EVENT_CALLBACK_NULL; } - json jParam = { { KEY_DH_ID, std::to_string(dhId) } }; - AudioEvent event(AudioEventType::OPEN_SPEAKER, jParam.dump()); + cJSON *jParam = cJSON_CreateObject(); + if (jParam == nullptr) { + DHLOGE("Failed to create cJSON object."); + return ERR_DH_AUDIO_TRANS_NULL_VALUE; + } + cJSON_AddStringToObject(jParam, KEY_DH_ID, std::to_string(dhId).c_str()); + char *jsonData = cJSON_PrintUnformatted(jParam); + if (jsonData == nullptr) { + DHLOGE("Failed to create JSON data."); + return ERR_DH_AUDIO_TRANS_NULL_VALUE; + } + + std::string jsonDataStr(jsonData); + AudioEvent event(AudioEventType::OPEN_SPEAKER, jsonDataStr); cbObj->NotifyEvent(event); DAudioHisysevent::GetInstance().SysEventWriteBehavior(DAUDIO_OPEN, devId, std::to_string(dhId), "daudio spk device open success."); + + cJSON_Delete(jParam); + cJSON_free(jsonData); + return DH_SUCCESS; } @@ -169,11 +185,27 @@ int32_t DSpeakerDev::CloseDevice(const std::string &devId, const int32_t dhId) return ERR_DH_AUDIO_SA_EVENT_CALLBACK_NULL; } - json jParam = { { KEY_DH_ID, std::to_string(dhId) } }; - AudioEvent event(AudioEventType::CLOSE_SPEAKER, jParam.dump()); + cJSON *jParam = cJSON_CreateObject(); + if (jParam == nullptr) { + DHLOGE("Failed to create cJSON object."); + return ERR_DH_AUDIO_TRANS_NULL_VALUE; + } + cJSON_AddStringToObject(jParam, KEY_DH_ID, std::to_string(dhId).c_str()); + char *jsonData = cJSON_PrintUnformatted(jParam); + if (jsonData == nullptr) { + DHLOGE("Failed to create JSON data."); + return ERR_DH_AUDIO_TRANS_NULL_VALUE; + } + + std::string jsonDataStr(jsonData); + AudioEvent event(AudioEventType::CLOSE_SPEAKER, jsonDataStr); cbObj->NotifyEvent(event); DAudioHisysevent::GetInstance().SysEventWriteBehavior(DAUDIO_CLOSE, devId, std::to_string(dhId), "daudio spk device close success."); + + cJSON_Delete(jParam); + cJSON_free(jsonData); + curPort_ = 0; return DH_SUCCESS; } diff --git a/services/audiomanager/servicesink/BUILD.gn b/services/audiomanager/servicesink/BUILD.gn index d7ce250d..f6017f36 100755 --- a/services/audiomanager/servicesink/BUILD.gn +++ b/services/audiomanager/servicesink/BUILD.gn @@ -17,7 +17,7 @@ import("../../../distributedaudio.gni") ohos_shared_library("distributed_audio_sink") { include_dirs = [ - "//third_party/json/include", + "//third_party/cJSON", "${fwk_common_path}/utils/include", ] @@ -87,6 +87,7 @@ ohos_shared_library("distributed_audio_sink") { "${audio_transport_path}/decodetransport:distributed_audio_decode_transport", "${audio_transport_path}/encodetransport:distributed_audio_encode_transport", "${services_path}/common:distributed_audio_utils", + "//third_party/cJSON:cjson", ] external_deps = [ diff --git a/services/audiomanager/servicesource/BUILD.gn b/services/audiomanager/servicesource/BUILD.gn index d0a6f69d..ca27245d 100755 --- a/services/audiomanager/servicesource/BUILD.gn +++ b/services/audiomanager/servicesource/BUILD.gn @@ -17,7 +17,7 @@ import("../../../distributedaudio.gni") ohos_shared_library("distributed_audio_source") { include_dirs = [ - "//third_party/json/include", + "//third_party/cJSON", "${driver_audio_path}/include", "${fwk_common_path}/utils/include", "${mediastandardfwk_path}/audiocapturer/include", @@ -89,6 +89,7 @@ ohos_shared_library("distributed_audio_source") { "${hdf_interfaces_path}/audioext/v1_0:libdaudioext_proxy_1.0", "${services_path}/common:distributed_audio_utils", "${services_path}/hdfaudioclient:daudio_client", + "//third_party/cJSON:cjson", ] external_deps = [ diff --git a/services/audiomanager/test/fuzztest/sourceserviceconfigdistributedhardware_fuzzer/BUILD.gn b/services/audiomanager/test/fuzztest/sourceserviceconfigdistributedhardware_fuzzer/BUILD.gn index 7179b7e0..ca83b774 100644 --- a/services/audiomanager/test/fuzztest/sourceserviceconfigdistributedhardware_fuzzer/BUILD.gn +++ b/services/audiomanager/test/fuzztest/sourceserviceconfigdistributedhardware_fuzzer/BUILD.gn @@ -49,10 +49,13 @@ ohos_fuzztest("SourceServiceConfigDistributedHardwareFuzzTest") { "${innerkits_path}/native_cpp/audio_source/include", "${distributedaudio_path}/audiohandler/include", "${services_path}/audiomanager/servicesource/include", + "//third_party/cJSON", ] - deps = - [ "${services_path}/audiomanager/servicesource:distributed_audio_source" ] + deps = [ + "${services_path}/audiomanager/servicesource:distributed_audio_source", + "//third_party/cJSON:cjson", + ] defines = [ "HI_LOG_ENABLE", diff --git a/services/audiomanager/test/fuzztest/sourceservicedaudionotify_fuzzer/BUILD.gn b/services/audiomanager/test/fuzztest/sourceservicedaudionotify_fuzzer/BUILD.gn index 4e97920a..7025331c 100644 --- a/services/audiomanager/test/fuzztest/sourceservicedaudionotify_fuzzer/BUILD.gn +++ b/services/audiomanager/test/fuzztest/sourceservicedaudionotify_fuzzer/BUILD.gn @@ -48,10 +48,13 @@ ohos_fuzztest("SourceServiceDAudioNotifyFuzzTest") { "${innerkits_path}/native_cpp/audio_source/include", "${distributedaudio_path}/audiohandler/include", "${services_path}/audiomanager/servicesource/include", + "//third_party/cJSON", ] - deps = - [ "${services_path}/audiomanager/servicesource:distributed_audio_source" ] + deps = [ + "${services_path}/audiomanager/servicesource:distributed_audio_source", + "//third_party/cJSON:cjson", + ] defines = [ "HI_LOG_ENABLE", diff --git a/services/audiomanager/test/fuzztest/sourceserviceinitsource_fuzzer/BUILD.gn b/services/audiomanager/test/fuzztest/sourceserviceinitsource_fuzzer/BUILD.gn index 4843d04e..c5c3c9c7 100644 --- a/services/audiomanager/test/fuzztest/sourceserviceinitsource_fuzzer/BUILD.gn +++ b/services/audiomanager/test/fuzztest/sourceserviceinitsource_fuzzer/BUILD.gn @@ -48,11 +48,13 @@ ohos_fuzztest("SourceServiceInitSourceFuzzTest") { "${innerkits_path}/native_cpp/audio_source/include", "${distributedaudio_path}/audiohandler/include", "${services_path}/audiomanager/servicesource/include", + "//third_party/cJSON", ] deps = [ "${innerkits_path}/native_cpp/audio_source:distributed_audio_source_sdk", "${services_path}/audiomanager/servicesource:distributed_audio_source", + "//third_party/cJSON:cjson", ] defines = [ diff --git a/services/audiomanager/test/fuzztest/sourceserviceregisterdistributedhardware_fuzzer/BUILD.gn b/services/audiomanager/test/fuzztest/sourceserviceregisterdistributedhardware_fuzzer/BUILD.gn index c6932884..0c6124ba 100644 --- a/services/audiomanager/test/fuzztest/sourceserviceregisterdistributedhardware_fuzzer/BUILD.gn +++ b/services/audiomanager/test/fuzztest/sourceserviceregisterdistributedhardware_fuzzer/BUILD.gn @@ -49,10 +49,13 @@ ohos_fuzztest("SourceServiceRegisterDistributedHardwareFuzzTest") { "${innerkits_path}/native_cpp/audio_source/include", "${distributedaudio_path}/audiohandler/include", "${services_path}/audiomanager/servicesource/include", + "//third_party/cJSON", ] - deps = - [ "${services_path}/audiomanager/servicesource:distributed_audio_source" ] + deps = [ + "${services_path}/audiomanager/servicesource:distributed_audio_source", + "//third_party/cJSON:cjson", + ] defines = [ "HI_LOG_ENABLE", diff --git a/services/audiomanager/test/fuzztest/sourceservicereleasesource_fuzzer/BUILD.gn b/services/audiomanager/test/fuzztest/sourceservicereleasesource_fuzzer/BUILD.gn index 289fe9af..aa95099b 100644 --- a/services/audiomanager/test/fuzztest/sourceservicereleasesource_fuzzer/BUILD.gn +++ b/services/audiomanager/test/fuzztest/sourceservicereleasesource_fuzzer/BUILD.gn @@ -48,10 +48,13 @@ ohos_fuzztest("SourceServiceReleaseSourceFuzzTest") { "${innerkits_path}/native_cpp/audio_source/include", "${distributedaudio_path}/audiohandler/include", "${services_path}/audiomanager/servicesource/include", + "//third_party/cJSON", ] - deps = - [ "${services_path}/audiomanager/servicesource:distributed_audio_source" ] + deps = [ + "${services_path}/audiomanager/servicesource:distributed_audio_source", + "//third_party/cJSON:cjson", + ] defines = [ "HI_LOG_ENABLE", diff --git a/services/audiomanager/test/fuzztest/sourceserviceunregisterdistributedhardware_fuzzer/BUILD.gn b/services/audiomanager/test/fuzztest/sourceserviceunregisterdistributedhardware_fuzzer/BUILD.gn index eaa6556f..64945e81 100644 --- a/services/audiomanager/test/fuzztest/sourceserviceunregisterdistributedhardware_fuzzer/BUILD.gn +++ b/services/audiomanager/test/fuzztest/sourceserviceunregisterdistributedhardware_fuzzer/BUILD.gn @@ -49,10 +49,13 @@ ohos_fuzztest("SourceServiceUnregisterDistributedHardwareFuzzTest") { "${innerkits_path}/native_cpp/audio_source/include", "${distributedaudio_path}/audiohandler/include", "${services_path}/audiomanager/servicesource/include", + "//third_party/cJSON", ] - deps = - [ "${services_path}/audiomanager/servicesource:distributed_audio_source" ] + deps = [ + "${services_path}/audiomanager/servicesource:distributed_audio_source", + "//third_party/cJSON:cjson", + ] defines = [ "HI_LOG_ENABLE", diff --git a/services/audiomanager/test/unittest/managersink/BUILD.gn b/services/audiomanager/test/unittest/managersink/BUILD.gn index 6e4d28ec..5da82c9f 100644 --- a/services/audiomanager/test/unittest/managersink/BUILD.gn +++ b/services/audiomanager/test/unittest/managersink/BUILD.gn @@ -22,7 +22,7 @@ config("module_private_config") { visibility = [ ":*" ] include_dirs = [ - "//third_party/json/include", + "//third_party/cJSON", "${audio_framework_path}/audiopolicy/include", "${mediastandardfwk_path}/audiocapturer/include", "${mediastandardfwk_path}/audiocommon/include", @@ -73,6 +73,7 @@ ohos_unittest("DaudioSinkDevTest") { deps = [ "${services_path}/audiomanager/servicesink:distributed_audio_sink", + "//third_party/cJSON:cjson", "//third_party/googletest:gmock", "//third_party/googletest:gtest_main", ] diff --git a/services/audiomanager/test/unittest/managersink/src/daudio_sink_dev_test.cpp b/services/audiomanager/test/unittest/managersink/src/daudio_sink_dev_test.cpp index 08a60b63..faec8977 100644 --- a/services/audiomanager/test/unittest/managersink/src/daudio_sink_dev_test.cpp +++ b/services/audiomanager/test/unittest/managersink/src/daudio_sink_dev_test.cpp @@ -399,11 +399,12 @@ HWTEST_F(DAudioSinkDevTest, TaskRenderStateChange_002, TestSize.Level1) { std::string args; std::string devId = "devId"; - json j; + cJSON *j = cJSON_CreateObject(); AudioParam audioParam; sinkDev_->audioCtrlMgr_ = std::make_shared(devId, sinkDev_); EXPECT_NE(DH_SUCCESS, sinkDev_->TaskRenderStateChange(args)); EXPECT_EQ(ERR_DH_AUDIO_FAILED, sinkDev_->from_json(j, audioParam)); + cJSON_Delete(j); } /** diff --git a/services/audiomanager/test/unittest/servicesink/BUILD.gn b/services/audiomanager/test/unittest/servicesink/BUILD.gn index 22218c46..464a1e08 100644 --- a/services/audiomanager/test/unittest/servicesink/BUILD.gn +++ b/services/audiomanager/test/unittest/servicesink/BUILD.gn @@ -23,7 +23,6 @@ config("module_private_config") { include_dirs = [ "${audio_framework_path}/audiopolicy/include", - "//third_party/json/include", "${fwk_common_path}/utils/include", "${mediastandardfwk_path}/audiocapturer/include", "${mediastandardfwk_path}/audiocommon/include", diff --git a/services/audiomanager/test/unittest/servicesource/BUILD.gn b/services/audiomanager/test/unittest/servicesource/BUILD.gn index 92f83870..be274d12 100644 --- a/services/audiomanager/test/unittest/servicesource/BUILD.gn +++ b/services/audiomanager/test/unittest/servicesource/BUILD.gn @@ -22,7 +22,6 @@ config("module_private_config") { visibility = [ ":*" ] include_dirs = [ - "//third_party/json/include", "${audio_framework_path}/audiopolicy/include", "${driver_audio_path}/include", "${fwk_common_path}/utils/include", @@ -72,6 +71,7 @@ config("module_private_config") { "${services_path}/common/taskProcessor/include", "${services_path}/hdfaudioclient/include", "${softbusadapter_path}/include", + "//third_party/cJSON", ] } @@ -85,6 +85,7 @@ ohos_unittest("DaudioSourceServiceTest") { deps = [ "${services_path}/audiomanager/servicesource:distributed_audio_source", + "//third_party/cJSON:cjson", "//third_party/googletest:gmock", "//third_party/googletest:gtest_main", ] diff --git a/services/audiomanager/test/unittest/sourcedevice/BUILD.gn b/services/audiomanager/test/unittest/sourcedevice/BUILD.gn index 0caca862..fbad425b 100644 --- a/services/audiomanager/test/unittest/sourcedevice/BUILD.gn +++ b/services/audiomanager/test/unittest/sourcedevice/BUILD.gn @@ -20,7 +20,7 @@ config("module_private_config") { visibility = [ ":*" ] include_dirs = [ - "//third_party/json/include", + "//third_party/cJSON", "${driver_audio_path}/include", "${fwk_common_path}/utils/include", "${mediastandardfwk_path}/audiocapturer/include", @@ -75,6 +75,7 @@ ohos_unittest("DaudioSourceDevTest") { "${hdf_interfaces_path}/audioext/v1_0:libdaudioext_proxy_1.0", "${services_path}/audiomanager/servicesource:distributed_audio_source", "${services_path}/common:distributed_audio_utils", + "//third_party/cJSON:cjson", "//third_party/googletest:gmock", "//third_party/googletest:gtest_main", ] diff --git a/services/audiomanager/test/unittest/sourcedevice/src/daudio_source_dev_test.cpp b/services/audiomanager/test/unittest/sourcedevice/src/daudio_source_dev_test.cpp index 55846fed..8328aa1b 100644 --- a/services/audiomanager/test/unittest/sourcedevice/src/daudio_source_dev_test.cpp +++ b/services/audiomanager/test/unittest/sourcedevice/src/daudio_source_dev_test.cpp @@ -436,9 +436,11 @@ HWTEST_F(DAudioSourceDevTest, HandleNotifyRPC_002, TestSize.Level1) */ HWTEST_F(DAudioSourceDevTest, HandleNotifyRPC_003, TestSize.Level1) { - json jParam = { { KEY_RESULT, DH_SUCCESS } }; - AudioEvent event(CHANGE_PLAY_STATUS, jParam.dump()); + cJSON *jParam = cJSON_CreateObject(); + EXPECT_NE(NULL, cJSON_AddNumberToObject(jParam, KEY_RESULT, DH_SUCCESS)); + AudioEvent event(CHANGE_PLAY_STATUS, std::string(cJSON_PrintUnformatted(jParam))); EXPECT_EQ(ERR_DH_AUDIO_NOT_FOUND_KEY, sourceDev_->HandleNotifyRPC(event)); + cJSON_Delete(jParam); event.type = NOTIFY_OPEN_SPEAKER_RESULT; EXPECT_EQ(DH_SUCCESS, sourceDev_->HandleNotifyRPC(event)); @@ -517,20 +519,44 @@ HWTEST_F(DAudioSourceDevTest, TaskEnableDAudio_001, TestSize.Level1) std::string tempLongStr(DAUDIO_MAX_JSON_LEN + 1, 'a'); EXPECT_EQ(ERR_DH_AUDIO_SA_PARAM_INVALID, sourceDev_->TaskEnableDAudio(tempLongStr)); - json jParam = { { KEY_DEV_ID, DEV_ID }, { KEY_RESULT, "test_result" } }; - EXPECT_EQ(ERR_DH_AUDIO_SA_ENABLE_PARAM_INVALID, sourceDev_->TaskEnableDAudio(jParam.dump())); - - jParam = { { KEY_DEV_ID, DEV_ID }, { KEY_DH_ID, "testDhId" }, { KEY_ATTRS, "" } }; - EXPECT_EQ(ERR_DH_AUDIO_SA_ENABLE_PARAM_INVALID, sourceDev_->TaskEnableDAudio(jParam.dump())); - - jParam = { { KEY_DEV_ID, DEV_ID }, { KEY_DH_ID, DH_ID_UNKNOWN }, { KEY_ATTRS, "" } }; - EXPECT_EQ(ERR_DH_AUDIO_NOT_SUPPORT, sourceDev_->TaskEnableDAudio(jParam.dump())); - - json jParam_spk = { { KEY_DEV_ID, DEV_ID }, { KEY_DH_ID, DH_ID_SPK }, { KEY_ATTRS, "" } }; - EXPECT_NE(DH_SUCCESS, sourceDev_->TaskEnableDAudio(jParam_spk.dump())); - - json jParam_mic = { { KEY_DEV_ID, DEV_ID }, { KEY_DH_ID, DH_ID_MIC }, { KEY_ATTRS, "" } }; - EXPECT_NE(DH_SUCCESS, sourceDev_->TaskEnableDAudio(jParam_mic.dump())); + cJSON *jParam1 = cJSON_CreateObject(); + cJSON_AddStringToObject(jParam1, KEY_DEV_ID, DEV_ID.c_str()); + cJSON_AddStringToObject(jParam1, KEY_RESULT, "test_result"); + EXPECT_EQ(ERR_DH_AUDIO_SA_ENABLE_PARAM_INVALID, + sourceDev_->TaskEnableDAudio(std::string(cJSON_PrintUnformatted(jParam1)))); + cJSON_Delete(jParam1); + + cJSON *jParam2 = cJSON_CreateObject(); + cJSON_AddStringToObject(jParam2, KEY_DEV_ID, DEV_ID.c_str()); + cJSON_AddStringToObject(jParam2, KEY_DH_ID, "testDhId"); + cJSON_AddStringToObject(jParam2, KEY_ATTRS, ""); + EXPECT_EQ(ERR_DH_AUDIO_SA_ENABLE_PARAM_INVALID, + sourceDev_->TaskEnableDAudio(std::string(cJSON_PrintUnformatted(jParam2)))); + cJSON_Delete(jParam2); + + cJSON *jParam3 = cJSON_CreateObject(); + cJSON_AddStringToObject(jParam3, KEY_DEV_ID, DEV_ID.c_str()); + cJSON_AddStringToObject(jParam3, KEY_DH_ID, DH_ID_UNKNOWN.c_str()); + cJSON_AddStringToObject(jParam3, KEY_ATTRS, ""); + EXPECT_EQ(ERR_DH_AUDIO_NOT_SUPPORT, + sourceDev_->TaskEnableDAudio(std::string(cJSON_PrintUnformatted(jParam3)))); + cJSON_Delete(jParam3); + + cJSON *jParamSpk = cJSON_CreateObject(); + cJSON_AddStringToObject(jParamSpk, KEY_DEV_ID, DEV_ID.c_str()); + cJSON_AddStringToObject(jParamSpk, KEY_DH_ID, DH_ID_SPK.c_str()); + cJSON_AddStringToObject(jParamSpk, KEY_ATTRS, ""); + EXPECT_EQ(ERR_DH_AUDIO_FAILED, + sourceDev_->TaskEnableDAudio(std::string(cJSON_PrintUnformatted(jParamSpk)))); + cJSON_Delete(jParamSpk); + + cJSON *jParamMic = cJSON_CreateObject(); + cJSON_AddStringToObject(jParamMic, KEY_DEV_ID, DEV_ID.c_str()); + cJSON_AddStringToObject(jParamMic, KEY_DH_ID, DH_ID_MIC.c_str()); + cJSON_AddStringToObject(jParamMic, KEY_ATTRS, ""); + EXPECT_EQ(ERR_DH_AUDIO_FAILED, + sourceDev_->TaskEnableDAudio(std::string(cJSON_PrintUnformatted(jParamMic)))); + cJSON_Delete(jParamMic); } /** @@ -546,20 +572,40 @@ HWTEST_F(DAudioSourceDevTest, TaskDisableDAudio_001, TestSize.Level1) std::string tempLongStr(DAUDIO_MAX_JSON_LEN + 1, 'a'); EXPECT_EQ(ERR_DH_AUDIO_SA_PARAM_INVALID, sourceDev_->TaskDisableDAudio(tempLongStr)); - json jParam = { { KEY_DEV_ID, DEV_ID }, { KEY_RESULT, "test_result" } }; - EXPECT_EQ(ERR_DH_AUDIO_SA_DISABLE_PARAM_INVALID, sourceDev_->TaskDisableDAudio(jParam.dump())); - - jParam = { { KEY_DEV_ID, DEV_ID }, { KEY_DH_ID, "testDhId" } }; - EXPECT_EQ(ERR_DH_AUDIO_SA_DISABLE_PARAM_INVALID, sourceDev_->TaskDisableDAudio(jParam.dump())); - - jParam = { { KEY_DEV_ID, DEV_ID }, { KEY_DH_ID, DH_ID_UNKNOWN } }; - EXPECT_EQ(ERR_DH_AUDIO_NOT_SUPPORT, sourceDev_->TaskDisableDAudio(jParam.dump())); - - json jParam_spk = { { KEY_DEV_ID, DEV_ID }, { KEY_DH_ID, DH_ID_SPK } }; - EXPECT_NE(DH_SUCCESS, sourceDev_->TaskDisableDAudio(jParam_spk.dump())); - - json jParam_mic = { { KEY_DEV_ID, DEV_ID }, { KEY_DH_ID, DH_ID_MIC } }; - EXPECT_NE(DH_SUCCESS, sourceDev_->TaskDisableDAudio(jParam_mic.dump())); + cJSON *jParam1 = cJSON_CreateObject(); + cJSON_AddStringToObject(jParam1, KEY_DEV_ID, DEV_ID.c_str()); + cJSON_AddStringToObject(jParam1, KEY_RESULT, "test_result"); + EXPECT_EQ(ERR_DH_AUDIO_SA_DISABLE_PARAM_INVALID, + sourceDev_->TaskDisableDAudio(std::string(cJSON_PrintUnformatted(jParam1)))); + cJSON_Delete(jParam1); + + cJSON *jParam2 = cJSON_CreateObject(); + cJSON_AddStringToObject(jParam2, KEY_DEV_ID, DEV_ID.c_str()); + cJSON_AddStringToObject(jParam2, KEY_DH_ID, "testDhId"); + EXPECT_EQ(ERR_DH_AUDIO_SA_DISABLE_PARAM_INVALID, + sourceDev_->TaskDisableDAudio(std::string(cJSON_PrintUnformatted(jParam2)))); + cJSON_Delete(jParam2); + + cJSON *jParam3 = cJSON_CreateObject(); + cJSON_AddStringToObject(jParam3, KEY_DEV_ID, DEV_ID.c_str()); + cJSON_AddStringToObject(jParam3, KEY_DH_ID, DH_ID_UNKNOWN.c_str()); + EXPECT_EQ(ERR_DH_AUDIO_NOT_SUPPORT, + sourceDev_->TaskDisableDAudio(std::string(cJSON_PrintUnformatted(jParam3)))); + cJSON_Delete(jParam3); + + cJSON *jParamSpk = cJSON_CreateObject(); + cJSON_AddStringToObject(jParamSpk, KEY_DEV_ID, DEV_ID.c_str()); + cJSON_AddStringToObject(jParamSpk, KEY_DH_ID, DH_ID_SPK.c_str()); + EXPECT_EQ(ERR_DH_AUDIO_NULLPTR, + sourceDev_->TaskDisableDAudio(std::string(cJSON_PrintUnformatted(jParamSpk)))); + cJSON_Delete(jParamSpk); + + cJSON *jParamMic = cJSON_CreateObject(); + cJSON_AddStringToObject(jParamMic, KEY_DEV_ID, DEV_ID.c_str()); + cJSON_AddStringToObject(jParamMic, KEY_DH_ID, DH_ID_MIC.c_str()); + EXPECT_EQ(ERR_DH_AUDIO_NULLPTR, + sourceDev_->TaskDisableDAudio(std::string(cJSON_PrintUnformatted(jParamMic)))); + cJSON_Delete(jParamMic); } /** @@ -575,15 +621,21 @@ HWTEST_F(DAudioSourceDevTest, OnEnableTaskResult_001, TestSize.Level1) std::string tempLongStr(DAUDIO_MAX_JSON_LEN + 1, 'a'); sourceDev_->OnEnableTaskResult(DH_SUCCESS, tempLongStr, FUNC_NAME); - json jParam = { { KEY_DEV_ID, DEV_ID }, { KEY_RESULT, "test_result" } }; - sourceDev_->OnEnableTaskResult(DH_SUCCESS, jParam.dump(), FUNC_NAME); + cJSON *jParam1 = cJSON_CreateObject(); + cJSON_AddStringToObject(jParam1, KEY_DEV_ID, DEV_ID.c_str()); + cJSON_AddStringToObject(jParam1, KEY_RESULT, "test_result"); + sourceDev_->OnEnableTaskResult(DH_SUCCESS, std::string(cJSON_PrintUnformatted(jParam1)), FUNC_NAME); + cJSON_Delete(jParam1); - jParam = { { KEY_DEV_ID, DEV_ID }, { KEY_DH_ID, DH_ID_SPK } }; - sourceDev_->OnEnableTaskResult(DH_SUCCESS, jParam.dump(), FUNC_NAME); - sourceDev_->OnEnableTaskResult(ERR_DH_AUDIO_NULLPTR, jParam.dump(), FUNC_NAME); + cJSON *jParam2 = cJSON_CreateObject(); + cJSON_AddStringToObject(jParam2, KEY_DEV_ID, DEV_ID.c_str()); + cJSON_AddStringToObject(jParam2, KEY_DH_ID, DH_ID_SPK.c_str()); + sourceDev_->OnEnableTaskResult(DH_SUCCESS, std::string(cJSON_PrintUnformatted(jParam2)), FUNC_NAME); + sourceDev_->OnEnableTaskResult(ERR_DH_AUDIO_NULLPTR, std::string(cJSON_PrintUnformatted(jParam2)), FUNC_NAME); sourceDev_->mgrCallback_ = nullptr; - sourceDev_->OnEnableTaskResult(DH_SUCCESS, jParam.dump(), FUNC_NAME); + sourceDev_->OnEnableTaskResult(DH_SUCCESS, std::string(cJSON_PrintUnformatted(jParam2)), FUNC_NAME); + cJSON_Delete(jParam2); auto mgrCb = std::make_shared(); EXPECT_NE(DH_SUCCESS, mgrCb->OnEnableAudioResult(DEV_ID, DH_ID_SPK, DH_SUCCESS)); @@ -602,15 +654,19 @@ HWTEST_F(DAudioSourceDevTest, OnDisableTaskResult_001, TestSize.Level1) std::string tempLongStr(DAUDIO_MAX_JSON_LEN + 1, 'a'); sourceDev_->OnDisableTaskResult(DH_SUCCESS, tempLongStr, FUNC_NAME); - json jParam = { { KEY_DEV_ID, DEV_ID }, { KEY_RESULT, "test_result" } }; - sourceDev_->OnDisableTaskResult(DH_SUCCESS, jParam.dump(), FUNC_NAME); + cJSON *jParam = cJSON_CreateObject(); + cJSON_AddStringToObject(jParam, KEY_DEV_ID, DEV_ID.c_str()); + cJSON_AddStringToObject(jParam, KEY_RESULT, "test_result"); + sourceDev_->OnDisableTaskResult(DH_SUCCESS, std::string(cJSON_PrintUnformatted(jParam)), FUNC_NAME); - jParam = { { KEY_DEV_ID, DEV_ID }, { KEY_DH_ID, DH_ID_SPK } }; - sourceDev_->OnDisableTaskResult(DH_SUCCESS, jParam.dump(), FUNC_NAME); - sourceDev_->OnDisableTaskResult(ERR_DH_AUDIO_NULLPTR, jParam.dump(), FUNC_NAME); + cJSON_AddStringToObject(jParam, KEY_DEV_ID, DEV_ID.c_str()); + cJSON_AddStringToObject(jParam, KEY_DH_ID, DH_ID_SPK.c_str()); + sourceDev_->OnDisableTaskResult(DH_SUCCESS, std::string(cJSON_PrintUnformatted(jParam)), FUNC_NAME); + sourceDev_->OnDisableTaskResult(ERR_DH_AUDIO_NULLPTR, std::string(cJSON_PrintUnformatted(jParam)), FUNC_NAME); sourceDev_->mgrCallback_ = nullptr; - sourceDev_->OnDisableTaskResult(DH_SUCCESS, jParam.dump(), FUNC_NAME); + sourceDev_->OnDisableTaskResult(DH_SUCCESS, std::string(cJSON_PrintUnformatted(jParam)), FUNC_NAME); + cJSON_Delete(jParam); auto mgrCb = std::make_shared(); EXPECT_NE(DH_SUCCESS, mgrCb->OnDisableAudioResult(DEV_ID, DH_ID_SPK, DH_SUCCESS)); @@ -698,16 +754,20 @@ HWTEST_F(DAudioSourceDevTest, TaskOpenDSpeaker_001, TestSize.Level1) EXPECT_EQ(ERR_DH_AUDIO_FAILED, sourceDev_->TaskOpenDSpeaker(ARGS)); - json jParam_spk = { { KEY_DH_ID, DH_ID_SPK } }; + cJSON *jParamSpk = cJSON_CreateObject(); + cJSON_AddStringToObject(jParamSpk, KEY_DH_ID, DH_ID_SPK.c_str()); sourceDev_->isRpcOpen_.store(false); - EXPECT_EQ(ERR_DH_AUDIO_TRANS_NULL_VALUE, sourceDev_->TaskOpenDSpeaker(jParam_spk.dump())); + EXPECT_EQ(ERR_DH_AUDIO_TRANS_NULL_VALUE, + sourceDev_->TaskOpenDSpeaker(std::string(cJSON_PrintUnformatted(jParamSpk)))); sourceDev_->isRpcOpen_.store(true); - EXPECT_EQ(ERR_DH_AUDIO_TRANS_NULL_VALUE, sourceDev_->TaskOpenDSpeaker(jParam_spk.dump())); + EXPECT_EQ(ERR_DH_AUDIO_TRANS_NULL_VALUE, + sourceDev_->TaskOpenDSpeaker(std::string(cJSON_PrintUnformatted(jParamSpk)))); sourceDev_->rpcResult_ = true; sourceDev_->rpcNotify_ = sourceDev_->EVENT_NOTIFY_OPEN_SPK; - EXPECT_NE(DH_SUCCESS, sourceDev_->TaskOpenDSpeaker(jParam_spk.dump())); + EXPECT_NE(DH_SUCCESS, sourceDev_->TaskOpenDSpeaker(std::string(cJSON_PrintUnformatted(jParamSpk)))); + cJSON_Delete(jParamSpk); } /** @@ -732,8 +792,10 @@ HWTEST_F(DAudioSourceDevTest, TaskCloseDSpeaker_001, TestSize.Level1) sourceDev_->speaker_->isOpened_ = false; EXPECT_EQ(ERR_DH_AUDIO_FAILED, sourceDev_->TaskCloseDSpeaker(ARGS)); - json jParam_spk = { { KEY_DH_ID, DH_ID_SPK } }; - EXPECT_EQ(DH_SUCCESS, sourceDev_->TaskCloseDSpeaker(jParam_spk.dump())); + cJSON *jParamSpk = cJSON_CreateObject(); + cJSON_AddStringToObject(jParamSpk, KEY_DH_ID, DH_ID_SPK.c_str()); + EXPECT_EQ(DH_SUCCESS, sourceDev_->TaskCloseDSpeaker(std::string(cJSON_PrintUnformatted(jParamSpk)))); + cJSON_Delete(jParamSpk); } /** @@ -747,8 +809,10 @@ HWTEST_F(DAudioSourceDevTest, TaskCloseDSpeaker_002, TestSize.Level1) sourceDev_->speaker_ = std::make_shared(DEV_ID, sourceDev_); sourceDev_->speaker_->speakerTrans_ = std::make_shared(DEV_ID); - json jParam_spk = { { KEY_DH_ID, DH_ID_SPK } }; - EXPECT_EQ(ERR_DH_AUDIO_FAILED, sourceDev_->TaskCloseDSpeaker(jParam_spk.dump())); + cJSON *jParamSpk = cJSON_CreateObject(); + cJSON_AddStringToObject(jParamSpk, KEY_DH_ID, DH_ID_SPK.c_str()); + EXPECT_EQ(ERR_DH_AUDIO_FAILED, sourceDev_->TaskCloseDSpeaker(std::string(cJSON_PrintUnformatted(jParamSpk)))); + cJSON_Delete(jParamSpk); } /** @@ -771,8 +835,10 @@ HWTEST_F(DAudioSourceDevTest, TaskOpenDMic_001, TestSize.Level1) EXPECT_EQ(ERR_DH_AUDIO_TRANS_NULL_VALUE, sourceDev_->TaskOpenDMic(ARGS)); - json jParam_mic = { { KEY_DH_ID, DH_ID_MIC } }; - EXPECT_EQ(ERR_DH_AUDIO_TRANS_NULL_VALUE, sourceDev_->TaskOpenDMic(jParam_mic.dump())); + cJSON *jParamMic = cJSON_CreateObject(); + cJSON_AddStringToObject(jParamMic, KEY_DH_ID, DH_ID_MIC.c_str()); + EXPECT_EQ(ERR_DH_AUDIO_TRANS_NULL_VALUE, sourceDev_->TaskOpenDMic(std::string(cJSON_PrintUnformatted(jParamMic)))); + cJSON_Delete(jParamMic); } /** @@ -797,8 +863,10 @@ HWTEST_F(DAudioSourceDevTest, TaskCloseDMic_001, TestSize.Level1) sourceDev_->mic_->isOpened_ = false; EXPECT_EQ(ERR_DH_AUDIO_FAILED, sourceDev_->TaskCloseDMic(ARGS)); - json jParam_mic = { { KEY_DH_ID, DH_ID_MIC } }; - EXPECT_EQ(DH_SUCCESS, sourceDev_->TaskCloseDMic(jParam_mic.dump())); + cJSON *jParamMic = cJSON_CreateObject(); + cJSON_AddStringToObject(jParamMic, KEY_DH_ID, DH_ID_MIC.c_str()); + EXPECT_EQ(DH_SUCCESS, sourceDev_->TaskCloseDMic(std::string(cJSON_PrintUnformatted(jParamMic)))); + cJSON_Delete(jParamMic); } /** @@ -812,8 +880,10 @@ HWTEST_F(DAudioSourceDevTest, TaskCloseDMic_002, TestSize.Level1) sourceDev_->mic_ = std::make_shared(DEV_ID, sourceDev_); sourceDev_->mic_->micTrans_ = std::make_shared(DEV_ID); - json jParam_mic = { { KEY_DH_ID, DH_ID_MIC } }; - EXPECT_EQ(DH_SUCCESS, sourceDev_->TaskCloseDMic(jParam_mic.dump())); + cJSON *jParamMic = cJSON_CreateObject(); + cJSON_AddStringToObject(jParamMic, KEY_DH_ID, DH_ID_MIC.c_str()); + EXPECT_EQ(DH_SUCCESS, sourceDev_->TaskCloseDMic(std::string(cJSON_PrintUnformatted(jParamMic)))); + cJSON_Delete(jParamMic); } /** @@ -834,17 +904,19 @@ HWTEST_F(DAudioSourceDevTest, TaskOpenCtrlChannel_001, TestSize.Level1) EXPECT_EQ(DH_SUCCESS, sourceDev_->TaskOpenCtrlChannel(ARGS)); - json jParam = { { KEY_DH_ID, DH_ID_SPK } }; + cJSON *jParam = cJSON_CreateObject(); + cJSON_AddStringToObject(jParam, KEY_DH_ID, DH_ID_SPK.c_str()); sourceDev_->isRpcOpen_.store(false); - EXPECT_EQ(DH_SUCCESS, sourceDev_->TaskOpenCtrlChannel(jParam.dump())); + EXPECT_EQ(DH_SUCCESS, sourceDev_->TaskOpenCtrlChannel(std::string(cJSON_PrintUnformatted(jParam)))); sourceDev_->isRpcOpen_.store(true); - EXPECT_EQ(DH_SUCCESS, sourceDev_->TaskOpenCtrlChannel(jParam.dump())); + EXPECT_EQ(DH_SUCCESS, sourceDev_->TaskOpenCtrlChannel(std::string(cJSON_PrintUnformatted(jParam)))); sourceDev_->rpcResult_ = true; sourceDev_->rpcNotify_ = sourceDev_->EVENT_NOTIFY_OPEN_MIC; - jParam = { { KEY_DH_ID, DH_ID_SPK } }; - EXPECT_EQ(DH_SUCCESS, sourceDev_->TaskOpenCtrlChannel(jParam.dump())); + cJSON_AddStringToObject(jParam, KEY_DH_ID, DH_ID_SPK.c_str()); + EXPECT_EQ(DH_SUCCESS, sourceDev_->TaskOpenCtrlChannel(std::string(cJSON_PrintUnformatted(jParam)))); + cJSON_Delete(jParam); } /** @@ -895,8 +967,10 @@ HWTEST_F(DAudioSourceDevTest, TaskSetVolume_002, TestSize.Level1) sourceDev_->audioCtrlMgr_ = std::make_shared(DEV_ID, sourceDev_); EXPECT_NE(DH_SUCCESS, sourceDev_->TaskSetVolume(ARGS)); - json jParam = { { STREAM_MUTE_STATUS, 1 } }; - EXPECT_NE(DH_SUCCESS, sourceDev_->TaskSetVolume(jParam.dump())); + cJSON *jParam = cJSON_CreateObject(); + cJSON_AddStringToObject(jParam, STREAM_MUTE_STATUS.c_str(), std::to_string(1).c_str()); + EXPECT_NE(DH_SUCCESS, sourceDev_->TaskSetVolume(std::string(cJSON_PrintUnformatted(jParam)))); + cJSON_Delete(jParam); sourceDev_->OnTaskResult(ERR_DH_AUDIO_NULLPTR, "", FUNC_NAME); } @@ -1066,7 +1140,8 @@ HWTEST_F(DAudioSourceDevTest, NotifyHDF_003, TestSize.Level1) */ HWTEST_F(DAudioSourceDevTest, NotifySinkDev_001, TestSize.Level1) { - json jAudioParam; + cJSON *jAudioParam = cJSON_CreateObject(); + sourceDev_->isRpcOpen_.store(false); EXPECT_EQ(ERR_DH_AUDIO_FAILED, sourceDev_->NotifySinkDev(CLOSE_MIC, jAudioParam, DH_ID_SPK)); diff --git a/services/audiomanager/test/unittest/sourcemanager/BUILD.gn b/services/audiomanager/test/unittest/sourcemanager/BUILD.gn index fe5139cf..7aa05f34 100644 --- a/services/audiomanager/test/unittest/sourcemanager/BUILD.gn +++ b/services/audiomanager/test/unittest/sourcemanager/BUILD.gn @@ -20,7 +20,6 @@ config("module_private_config") { visibility = [ ":*" ] include_dirs = [ - "//third_party/json/include", "${driver_audio_path}/include", "${fwk_common_path}/utils/include", "${mediastandardfwk_path}/audiocapturer/include", @@ -55,6 +54,7 @@ config("module_private_config") { "${services_path}/common/taskProcessor/include", "${services_path}/hdfaudioclient/include", "${softbusadapter_path}/include", + "//third_party/cJSON", ] } @@ -71,6 +71,7 @@ ohos_unittest("DaudioSourceMgrTest") { "${innerkits_path}/native_cpp/audio_source:distributed_audio_source_sdk", "${services_path}/audiomanager/servicesource:distributed_audio_source", "${services_path}/common:distributed_audio_utils", + "//third_party/cJSON:cjson", "//third_party/googletest:gmock", "//third_party/googletest:gtest_main", ] diff --git a/services/audioprocessor/test/unittest/common/decodeprocessor/BUILD.gn b/services/audioprocessor/test/unittest/common/decodeprocessor/BUILD.gn index f68c7fa5..b409bb61 100644 --- a/services/audioprocessor/test/unittest/common/decodeprocessor/BUILD.gn +++ b/services/audioprocessor/test/unittest/common/decodeprocessor/BUILD.gn @@ -26,7 +26,6 @@ config("module_private_config") { "${mediastandard_path}/interfaces/innerkits/native/media/include", "${mediastandardfwk_path}/audiocommon/include", "${fwk_common_path}/utils/include", - "//third_party/json/include", ] include_dirs += [ @@ -38,6 +37,7 @@ config("module_private_config") { "${audio_processor_path}/directprocessor/include", "${audio_processor_path}/interface", "${audio_processor_path}/test/unittest/common", + "//third_party/cJSON", ] } @@ -54,6 +54,7 @@ ohos_unittest("DecodeProcessTest") { deps = [ "${audio_transport_path}/decodetransport:distributed_audio_decode_transport", "${services_path}/common:distributed_audio_utils", + "//third_party/cJSON:cjson", "//third_party/googletest:gtest_main", ] @@ -79,6 +80,7 @@ ohos_unittest("DirectProcessorTest") { deps = [ "${audio_transport_path}/decodetransport:distributed_audio_decode_transport", "${services_path}/common:distributed_audio_utils", + "//third_party/cJSON:cjson", "//third_party/googletest:gtest_main", ] diff --git a/services/audioprocessor/test/unittest/common/encodeprocessor/BUILD.gn b/services/audioprocessor/test/unittest/common/encodeprocessor/BUILD.gn index 83c58e0a..81d835a6 100644 --- a/services/audioprocessor/test/unittest/common/encodeprocessor/BUILD.gn +++ b/services/audioprocessor/test/unittest/common/encodeprocessor/BUILD.gn @@ -26,7 +26,6 @@ config("module_private_config") { "${mediastandard_path}/interfaces/innerkits/native/media/include", "${mediastandardfwk_path}/audiocommon/include", "${fwk_common_path}/utils/include", - "//third_party/json/include", ] include_dirs += [ @@ -37,6 +36,7 @@ config("module_private_config") { "${audio_processor_path}/encoder/include", "${audio_processor_path}/interface", "${audio_processor_path}/test/unittest/common", + "//third_party/cJSON", ] } @@ -53,6 +53,7 @@ ohos_unittest("EncodeProcessTest") { deps = [ "${audio_transport_path}/encodetransport:distributed_audio_encode_transport", "${services_path}/common:distributed_audio_utils", + "//third_party/cJSON:cjson", "//third_party/googletest:gtest_main", ] diff --git a/services/audiotransport/audiochannel/audioctrlchannel/include/audio_ctrl_channel.h b/services/audiotransport/audiochannel/audioctrlchannel/include/audio_ctrl_channel.h index 7e959e62..6d95275c 100644 --- a/services/audiotransport/audiochannel/audioctrlchannel/include/audio_ctrl_channel.h +++ b/services/audiotransport/audiochannel/audioctrlchannel/include/audio_ctrl_channel.h @@ -16,14 +16,12 @@ #ifndef OHOS_AUDIO_CTRL_CHANNEL_H #define OHOS_AUDIO_CTRL_CHANNEL_H -#include "nlohmann/json.hpp" +#include "cJSON.h" #include "iaudio_channel_listener.h" #include "iaudio_channel.h" #include "softbus_adapter.h" -using json = nlohmann::json; - namespace OHOS { namespace DistributedHardware { class AudioCtrlChannel : public IAudioChannel, @@ -56,7 +54,7 @@ private: std::weak_ptr channelListener_; }; -int32_t from_audioEventJson(const json &j, AudioEvent &audioEvent); +int from_audioEventJson(const cJSON *jsonObj, AudioEvent &audioEvent); } // namespace DistributedHardware } // namespace OHOS #endif // OHOS_AUDIO_CTRL_CHANNEL_H diff --git a/services/audiotransport/audiochannel/audioctrlchannel/src/audio_ctrl_channel.cpp b/services/audiotransport/audiochannel/audioctrlchannel/src/audio_ctrl_channel.cpp index 501576c6..03de9de6 100644 --- a/services/audiotransport/audiochannel/audioctrlchannel/src/audio_ctrl_channel.cpp +++ b/services/audiotransport/audiochannel/audioctrlchannel/src/audio_ctrl_channel.cpp @@ -135,15 +135,33 @@ int32_t AudioCtrlChannel::SendData(const std::shared_ptr &data) int32_t AudioCtrlChannel::SendEvent(const AudioEvent &audioEvent) { DHLOGD("Send event, sessionId: %d.", sessionId_); - json jAudioEvent; - jAudioEvent[KEY_TYPE] = audioEvent.type; - jAudioEvent[KEY_EVENT_CONTENT] = audioEvent.content; - std::string message = jAudioEvent.dump(); + + cJSON *jAudioEvent = cJSON_CreateObject(); + if (jAudioEvent == nullptr) { + DHLOGE("Failed to create cJSON object."); + return ERR_DH_AUDIO_TRANS_NULL_VALUE; + } + + cJSON_AddNumberToObject(jAudioEvent, KEY_TYPE, static_cast(audioEvent.type)); + cJSON_AddStringToObject(jAudioEvent, KEY_EVENT_CONTENT, audioEvent.content.c_str()); + + char *jsonData = cJSON_PrintUnformatted(jAudioEvent); + if (jsonData == nullptr) { + cJSON_Delete(jAudioEvent); + DHLOGE("Failed to create JSON message."); + return ERR_DH_AUDIO_TRANS_NULL_VALUE; + } + std::string message(jsonData); + int ret = SendMsg(message); if (ret != DH_SUCCESS) { DHLOGE("Send audio event failed ret: %d.", ret); + cJSON_Delete(jAudioEvent); + cJSON_free(jsonData); return ret; } + cJSON_Delete(jAudioEvent); + cJSON_free(jsonData); return DH_SUCCESS; } @@ -229,13 +247,21 @@ void AudioCtrlChannel::OnBytesReceived(int32_t sessionId, const void *data, uint std::string message(buf, buf + dataLen); DHLOGI("On bytes received message: %s.", message.c_str()); + cJSON *jParam = cJSON_Parse(message.c_str()); + if (jParam == nullptr) { + DHLOGE("Failed to parse JSON message."); + cJSON_Delete(jParam); + free(buf); + return; + } AudioEvent audioEvent; - json jParam = json::parse(message, nullptr, false); if (from_audioEventJson(jParam, audioEvent) != DH_SUCCESS) { - DHLOGE("Get audioEvent from json failed."); + DHLOGE("Get audioEvent from JSON failed."); + cJSON_Delete(jParam); free(buf); return; } + cJSON_Delete(jParam); free(buf); DHLOGI("On bytes received end"); @@ -253,15 +279,28 @@ void AudioCtrlChannel::OnStreamReceived(int32_t sessionId, const StreamData *dat DHLOGI("Ctrl channel not support yet."); } -int from_audioEventJson(const json &j, AudioEvent &audioEvent) +int from_audioEventJson(const cJSON *jsonObj, AudioEvent &audioEvent) { - if (!JsonParamCheck(j, {KEY_TYPE, KEY_EVENT_CONTENT})) { - DHLOGE("Json data is illegal."); + if (!JsonParamCheck(jsonObj, {KEY_TYPE, KEY_EVENT_CONTENT})) { + DHLOGE("JSON data is illegal."); + return ERR_DH_AUDIO_TRANS_NULL_VALUE; + } + + cJSON *typeValue = cJSON_GetObjectItemCaseSensitive(jsonObj, KEY_TYPE); + cJSON *contentValue = cJSON_GetObjectItemCaseSensitive(jsonObj, KEY_EVENT_CONTENT); + if (typeValue == nullptr || !cJSON_IsNumber(typeValue) || + contentValue == nullptr || !cJSON_IsString(contentValue)) { + DHLOGE("Failed to retrieve values from JSON."); + return ERR_DH_AUDIO_TRANS_NULL_VALUE; + } + int32_t typeInt = typeValue->valueint; + if (typeInt < EVENT_UNKNOWN || typeInt >= AUDIO_STOP) { + DHLOGE("Invalid AudioEventType value."); return ERR_DH_AUDIO_TRANS_NULL_VALUE; } + audioEvent.type = static_cast(typeInt); + audioEvent.content = contentValue->valuestring; - j.at(KEY_TYPE).get_to(audioEvent.type); - j.at(KEY_EVENT_CONTENT).get_to(audioEvent.content); return DH_SUCCESS; } } // namespace DistributedHardware diff --git a/services/audiotransport/audiochannel/audiodatachannel/BUILD.gn b/services/audiotransport/audiochannel/audiodatachannel/BUILD.gn index 35ccab5c..f550e0c0 100644 --- a/services/audiotransport/audiochannel/audiodatachannel/BUILD.gn +++ b/services/audiotransport/audiochannel/audiodatachannel/BUILD.gn @@ -16,10 +16,7 @@ import("//build/ohos_var.gni") import("../../../../distributedaudio.gni") ohos_shared_library("distributed_audio_data_channel") { - include_dirs = [ - "${fwk_common_path}/utils/include", - "//third_party/json/include", - ] + include_dirs = [ "${fwk_common_path}/utils/include" ] include_dirs += [ "include", @@ -29,6 +26,7 @@ ohos_shared_library("distributed_audio_data_channel") { "${services_path}/common/audiodata/include", "${audio_transport_path}/audiochannel/interface", "${softbusadapter_path}/include", + "//third_party/cJSON", ] sources = [ "src/audio_data_channel.cpp" ] @@ -36,6 +34,7 @@ ohos_shared_library("distributed_audio_data_channel") { deps = [ "${services_path}/common:distributed_audio_utils", "${softbusadapter_path}:distributed_audio_softbus_adapter", + "//third_party/cJSON:cjson", ] external_deps = [ diff --git a/services/audiotransport/audioctrltransport/BUILD.gn b/services/audiotransport/audioctrltransport/BUILD.gn index 619795b3..ed6fe638 100644 --- a/services/audiotransport/audioctrltransport/BUILD.gn +++ b/services/audiotransport/audioctrltransport/BUILD.gn @@ -17,7 +17,7 @@ import("../../../distributedaudio.gni") ohos_shared_library("distributed_audio_control") { include_dirs = [ - "//third_party/json/include", + "//third_party/cJSON", "${fwk_common_path}/utils/include", ] @@ -41,6 +41,7 @@ ohos_shared_library("distributed_audio_control") { deps = [ "${services_path}/common:distributed_audio_utils", "${softbusadapter_path}:distributed_audio_softbus_adapter", + "//third_party/cJSON:cjson", ] external_deps = [ diff --git a/services/audiotransport/audiotransportstatus/BUILD.gn b/services/audiotransport/audiotransportstatus/BUILD.gn index 965f6244..798bc721 100644 --- a/services/audiotransport/audiotransportstatus/BUILD.gn +++ b/services/audiotransport/audiotransportstatus/BUILD.gn @@ -20,7 +20,6 @@ ohos_shared_library("distributed_audio_transport_status") { "${fwk_common_path}/utils/include", "${mediastandard_path}/interfaces/innerkits/native/media/include", "${mediastandardfwk_path}/audiocommon/include", - "//third_party/json/include", ] include_dirs += [ diff --git a/services/audiotransport/decodetransport/BUILD.gn b/services/audiotransport/decodetransport/BUILD.gn index bc26bcfe..a8db6935 100644 --- a/services/audiotransport/decodetransport/BUILD.gn +++ b/services/audiotransport/decodetransport/BUILD.gn @@ -31,7 +31,6 @@ ohos_shared_library("distributed_audio_decode_transport") { include_dirs = [ "${mediastandard_path}/interfaces/innerkits/native/media/include", "${mediastandardfwk_path}/audiocommon/include", - "//third_party/json/include", ] include_dirs += [ @@ -51,6 +50,7 @@ ohos_shared_library("distributed_audio_decode_transport") { "${services_path}/common/audiodata/include", "${services_path}/common/audioparam", "${softbusadapter_path}/include", + "//third_party/cJSON", ] public_configs = [ ":decode_transport_pub_config" ] @@ -70,6 +70,7 @@ ohos_shared_library("distributed_audio_decode_transport") { "${audio_transport_path}/audiochannel/audiodatachannel:distributed_audio_data_channel", "${audio_transport_path}/audiotransportstatus:distributed_audio_transport_status", "${services_path}/common:distributed_audio_utils", + "//third_party/cJSON:cjson", ] external_deps = [ diff --git a/services/audiotransport/encodetransport/BUILD.gn b/services/audiotransport/encodetransport/BUILD.gn index bc75f76f..308b3de3 100644 --- a/services/audiotransport/encodetransport/BUILD.gn +++ b/services/audiotransport/encodetransport/BUILD.gn @@ -31,7 +31,6 @@ ohos_shared_library("distributed_audio_encode_transport") { include_dirs = [ "${mediastandard_path}/interfaces/innerkits/native/media/include", "${mediastandardfwk_path}/audiocommon/include", - "//third_party/json/include", ] include_dirs += [ @@ -51,6 +50,7 @@ ohos_shared_library("distributed_audio_encode_transport") { "${services_path}/common/audiodata/include", "${services_path}/common/audioparam", "${softbusadapter_path}/include", + "//third_party/cJSON", ] public_configs = [ ":encode_transport_pub_config" ] @@ -70,6 +70,7 @@ ohos_shared_library("distributed_audio_encode_transport") { "${audio_transport_path}/audiochannel/audiodatachannel:distributed_audio_data_channel", "${audio_transport_path}/audiotransportstatus:distributed_audio_transport_status", "${services_path}/common:distributed_audio_utils", + "//third_party/cJSON:cjson", ] external_deps = [ diff --git a/services/audiotransport/test/unittest/audioctrlchannel/BUILD.gn b/services/audiotransport/test/unittest/audioctrlchannel/BUILD.gn index 998230c2..bd82882b 100644 --- a/services/audiotransport/test/unittest/audioctrlchannel/BUILD.gn +++ b/services/audiotransport/test/unittest/audioctrlchannel/BUILD.gn @@ -21,7 +21,7 @@ config("module_private_config") { visibility = [ ":*" ] include_dirs = [ - "//third_party/json/include", + "//third_party/cJSON", "${fwk_common_path}/utils/include", "${fwk_utils_path}/include/", ] @@ -50,6 +50,7 @@ ohos_unittest("AudioCtrlChannelTest") { deps = [ "${audio_transport_path}/audioctrltransport:distributed_audio_control", "${services_path}/common:distributed_audio_utils", + "//third_party/cJSON:cjson", "//third_party/googletest:gmock", "//third_party/googletest:gtest_main", ] diff --git a/services/audiotransport/test/unittest/audioctrlchannel/src/audio_ctrl_channel_test.cpp b/services/audiotransport/test/unittest/audioctrlchannel/src/audio_ctrl_channel_test.cpp index 5d6f27ae..c53f7728 100644 --- a/services/audiotransport/test/unittest/audioctrlchannel/src/audio_ctrl_channel_test.cpp +++ b/services/audiotransport/test/unittest/audioctrlchannel/src/audio_ctrl_channel_test.cpp @@ -175,8 +175,9 @@ HWTEST_F(AudioCtrlChannelTest, SendMsg_001, TestSize.Level1) HWTEST_F(AudioCtrlChannelTest, from_audioEventJson_001, TestSize.Level1) { AudioEvent event; - json j; + cJSON *j = cJSON_CreateObject(); EXPECT_NE(DH_SUCCESS, from_audioEventJson(j, event)); + cJSON_Delete(j); } } // namespace DistributedHardware } // namespace OHOS diff --git a/services/audiotransport/test/unittest/audioctrltransport/BUILD.gn b/services/audiotransport/test/unittest/audioctrltransport/BUILD.gn index 7696159c..b42a604f 100644 --- a/services/audiotransport/test/unittest/audioctrltransport/BUILD.gn +++ b/services/audiotransport/test/unittest/audioctrltransport/BUILD.gn @@ -21,7 +21,6 @@ config("module_private_config") { visibility = [ ":*" ] include_dirs = [ - "//third_party/json/include", "${fwk_common_path}/utils/include", "${fwk_utils_path}/include/", ] diff --git a/services/audiotransport/test/unittest/audiodatachannel/BUILD.gn b/services/audiotransport/test/unittest/audiodatachannel/BUILD.gn index f4b60682..7635979f 100644 --- a/services/audiotransport/test/unittest/audiodatachannel/BUILD.gn +++ b/services/audiotransport/test/unittest/audiodatachannel/BUILD.gn @@ -21,7 +21,6 @@ config("module_private_config") { visibility = [ ":*" ] include_dirs = [ - "//third_party/json/include", "${fwk_common_path}/utils/include", "${fwk_utils_path}/include/", ] @@ -36,6 +35,7 @@ config("module_private_config") { "${audio_transport_path}/audiochannel/audiodatachannel/include", "${audio_transport_path}/audioctrltransport/interface", "${audio_transport_path}/test/unittest/audiotranstestutils/include", + "//third_party/cJSON", ] } @@ -50,6 +50,7 @@ ohos_unittest("AudioDataChannelTest") { deps = [ "${audio_transport_path}/audiochannel/audiodatachannel:distributed_audio_data_channel", "${softbusadapter_path}:distributed_audio_softbus_adapter", + "//third_party/cJSON:cjson", "//third_party/googletest:gmock", "//third_party/googletest:gtest_main", ] diff --git a/services/audiotransport/test/unittest/audiotransportstatus/BUILD.gn b/services/audiotransport/test/unittest/audiotransportstatus/BUILD.gn index 8eed1d60..1bc9ea82 100644 --- a/services/audiotransport/test/unittest/audiotransportstatus/BUILD.gn +++ b/services/audiotransport/test/unittest/audiotransportstatus/BUILD.gn @@ -26,7 +26,6 @@ config("module_private_config") { "${fwk_common_path}/utils/include", "${mediastandard_path}/interfaces/innerkits/native/media/include", "${mediastandardfwk_path}/audiocommon/include", - "//third_party/json/include", ] include_dirs += [ @@ -42,6 +41,7 @@ config("module_private_config") { "${audio_transport_path}/test/unittest/audiotranstestutils/include", "${services_path}/common/audioparam", "${services_path}/common/audiodata/include", + "//third_party/cJSON", ] } @@ -61,6 +61,7 @@ ohos_unittest("TransportStatusTest") { "${audio_transport_path}/audiochannel/audiodatachannel:distributed_audio_data_channel", "${audio_transport_path}/audiotransportstatus:distributed_audio_transport_status", "${services_path}/common:distributed_audio_utils", + "//third_party/cJSON:cjson", "//third_party/googletest:gtest_main", ] diff --git a/services/audiotransport/test/unittest/decodetransport/BUILD.gn b/services/audiotransport/test/unittest/decodetransport/BUILD.gn index 75cefc1b..8aab728d 100644 --- a/services/audiotransport/test/unittest/decodetransport/BUILD.gn +++ b/services/audiotransport/test/unittest/decodetransport/BUILD.gn @@ -22,10 +22,7 @@ module_output_path = config("module_private_config") { visibility = [ ":*" ] - include_dirs = [ - "${fwk_common_path}/utils/include", - "//third_party/json/include", - ] + include_dirs = [ "${fwk_common_path}/utils/include" ] include_dirs += [ "include", @@ -44,6 +41,7 @@ config("module_private_config") { "${services_path}/common/audiodata/include", "${services_path}/common/audioparam", "${softbusadapter_path}/include", + "//third_party/cJSON", ] } @@ -57,6 +55,7 @@ ohos_unittest("DecodeTransportTest") { deps = [ "${audio_transport_path}/decodetransport:distributed_audio_decode_transport", "${services_path}/common:distributed_audio_utils", + "//third_party/cJSON:cjson", "//third_party/googletest:gtest_main", ] diff --git a/services/audiotransport/test/unittest/encodetransport/BUILD.gn b/services/audiotransport/test/unittest/encodetransport/BUILD.gn index 22e4b574..43902d34 100644 --- a/services/audiotransport/test/unittest/encodetransport/BUILD.gn +++ b/services/audiotransport/test/unittest/encodetransport/BUILD.gn @@ -22,10 +22,7 @@ module_output_path = config("module_private_config") { visibility = [ ":*" ] - include_dirs = [ - "${fwk_common_path}/utils/include", - "//third_party/json/include", - ] + include_dirs = [ "${fwk_common_path}/utils/include" ] include_dirs += [ "include", @@ -44,6 +41,7 @@ config("module_private_config") { "${services_path}/common/audiodata/include", "${services_path}/common/audioparam", "${softbusadapter_path}/include", + "//third_party/cJSON", ] } @@ -58,6 +56,7 @@ ohos_unittest("EncodeTransportTest") { "${audio_transport_path}/audiotransportstatus:distributed_audio_transport_status", "${audio_transport_path}/encodetransport:distributed_audio_encode_transport", "${services_path}/common:distributed_audio_utils", + "//third_party/cJSON:cjson", "//third_party/googletest:gtest_main", ] diff --git a/services/audiotransport/test/unittest/receiverengine/BUILD.gn b/services/audiotransport/test/unittest/receiverengine/BUILD.gn index 814d3dce..d34d4fcb 100644 --- a/services/audiotransport/test/unittest/receiverengine/BUILD.gn +++ b/services/audiotransport/test/unittest/receiverengine/BUILD.gn @@ -23,7 +23,6 @@ config("module_private_config") { include_dirs = [ "${mediastandard_path}/interfaces/innerkits/native/media/include", "${mediastandardfwk_path}/audiocommon/include", - "//third_party/json/include", ] include_dirs += [ @@ -36,6 +35,7 @@ config("module_private_config") { "${services_path}/common/audiodata/include", "${services_path}/common/audioparam", "${softbusadapter_path}/include", + "//third_party/cJSON", ] } @@ -53,6 +53,7 @@ ohos_unittest("AVTransReceiverAdapterTest") { deps = [ "${audio_transport_path}/decodetransport:distributed_audio_decode_transport", "${services_path}/common:distributed_audio_utils", + "//third_party/cJSON:cjson", "//third_party/googletest:gmock", "//third_party/googletest:gtest_main", ] diff --git a/services/audiotransport/test/unittest/senderengine/BUILD.gn b/services/audiotransport/test/unittest/senderengine/BUILD.gn index cded03c1..225af6c4 100644 --- a/services/audiotransport/test/unittest/senderengine/BUILD.gn +++ b/services/audiotransport/test/unittest/senderengine/BUILD.gn @@ -22,7 +22,6 @@ config("module_private_config") { include_dirs = [ "${mediastandard_path}/interfaces/innerkits/native/media/include", "${mediastandardfwk_path}/audiocommon/include", - "//third_party/json/include", ] include_dirs += [ @@ -35,6 +34,7 @@ config("module_private_config") { "${services_path}/common/audiodata/include", "${services_path}/common/audioparam", "${softbusadapter_path}/include", + "//third_party/cJSON", ] } @@ -52,6 +52,7 @@ ohos_unittest("AVTransSenderAdapterTest") { deps = [ "${audio_transport_path}/encodetransport:distributed_audio_encode_transport", "${services_path}/common:distributed_audio_utils", + "//third_party/cJSON:cjson", "//third_party/googletest:gmock", "//third_party/googletest:gtest_main", ] diff --git a/services/common/BUILD.gn b/services/common/BUILD.gn index bf4f8493..b2ec3ca9 100644 --- a/services/common/BUILD.gn +++ b/services/common/BUILD.gn @@ -26,7 +26,7 @@ config("daudio_common_pub_config") { } config("daudio_common_private_config") { - include_dirs = [ "//third_party/json/include" ] + include_dirs = [ "//third_party/cJSON" ] include_dirs += [ "taskProcessor/include", @@ -51,6 +51,8 @@ ohos_shared_library("distributed_audio_utils") { "taskProcessor/src/task_queue.cpp", ] + deps = [ "//third_party/cJSON:cjson" ] + external_deps = [ "c_utils:utils", "dsoftbus:softbus_client", diff --git a/services/common/taskProcessor/test/unittest/task_queue/BUILD.gn b/services/common/taskProcessor/test/unittest/task_queue/BUILD.gn index c2049f5b..220acfae 100644 --- a/services/common/taskProcessor/test/unittest/task_queue/BUILD.gn +++ b/services/common/taskProcessor/test/unittest/task_queue/BUILD.gn @@ -21,7 +21,7 @@ module_out_path = "distributed_audio/services/common/taskProcessor/test" config("module_private_config") { visibility = [ ":*" ] - include_dirs = [ "//third_party/json/include" ] + include_dirs = [] include_dirs += [ "${common_path}/include", diff --git a/services/common/test/unittest/audiodata/BUILD.gn b/services/common/test/unittest/audiodata/BUILD.gn index 4637f731..4ade4027 100644 --- a/services/common/test/unittest/audiodata/BUILD.gn +++ b/services/common/test/unittest/audiodata/BUILD.gn @@ -21,7 +21,6 @@ config("module_private_config") { include_dirs = [ "./include", - "//third_party/json/include", "${services_path}/common/audiodata/include", "${common_path}/include", ] diff --git a/services/softbusadapter/BUILD.gn b/services/softbusadapter/BUILD.gn index d460346c..b8fb17c2 100644 --- a/services/softbusadapter/BUILD.gn +++ b/services/softbusadapter/BUILD.gn @@ -16,16 +16,14 @@ import("//build/ohos_var.gni") import("../../distributedaudio.gni") ohos_shared_library("distributed_audio_softbus_adapter") { - include_dirs = [ - "${fwk_common_path}/utils/include", - "//third_party/json/include", - ] + include_dirs = [ "${fwk_common_path}/utils/include" ] include_dirs += [ "${common_path}/include", "${services_path}/common/audioparam", "${services_path}/common/audiodata/include", "${softbusadapter_path}/include", + "//third_party/cJSON", ] sources = [ @@ -33,7 +31,10 @@ ohos_shared_library("distributed_audio_softbus_adapter") { "src/softbus_adapter.cpp", ] - deps = [ "${services_path}/common:distributed_audio_utils" ] + deps = [ + "${services_path}/common:distributed_audio_utils", + "//third_party/cJSON:cjson", + ] external_deps = [ "c_utils:utils", diff --git a/services/softbusadapter/test/fuzztest/softbusonbytesreceived_fuzzer/BUILD.gn b/services/softbusadapter/test/fuzztest/softbusonbytesreceived_fuzzer/BUILD.gn index b2690de1..bcb830cd 100644 --- a/services/softbusadapter/test/fuzztest/softbusonbytesreceived_fuzzer/BUILD.gn +++ b/services/softbusadapter/test/fuzztest/softbusonbytesreceived_fuzzer/BUILD.gn @@ -37,18 +37,19 @@ ohos_fuzztest("SoftbusOnBytesReceivedFuzzTest") { "${fwk_common_path}/log/include", "${fwk_common_path}/utils/include", "${softbusadapter_path}/include", - "//third_party/json/include", ] include_dirs += [ "include", "${common_path}/include", "${audio_transport_path}/audiochannel/audiodatachannel/include", + "//third_party/cJSON", ] deps = [ "${audio_transport_path}/audiochannel/audiodatachannel:distributed_audio_data_channel", "${services_path}/common:distributed_audio_utils", + "//third_party/cJSON:cjson", ] external_deps = [ diff --git a/services/softbusadapter/test/fuzztest/softbusonsessionclosed_fuzzer/BUILD.gn b/services/softbusadapter/test/fuzztest/softbusonsessionclosed_fuzzer/BUILD.gn index c8ae1144..63460d29 100644 --- a/services/softbusadapter/test/fuzztest/softbusonsessionclosed_fuzzer/BUILD.gn +++ b/services/softbusadapter/test/fuzztest/softbusonsessionclosed_fuzzer/BUILD.gn @@ -37,18 +37,19 @@ ohos_fuzztest("SoftbusOnSessionClosedFuzzTest") { "${fwk_common_path}/log/include", "${fwk_common_path}/utils/include", "${softbusadapter_path}/include", - "//third_party/json/include", ] include_dirs += [ "include", "${common_path}/include", "${audio_transport_path}/audiochannel/audiodatachannel/include", + "//third_party/cJSON", ] deps = [ "${audio_transport_path}/audiochannel/audiodatachannel:distributed_audio_data_channel", "${services_path}/common:distributed_audio_utils", + "//third_party/cJSON:cjson", ] external_deps = [ diff --git a/services/softbusadapter/test/fuzztest/softbusonsessionopened_fuzzer/BUILD.gn b/services/softbusadapter/test/fuzztest/softbusonsessionopened_fuzzer/BUILD.gn index d8e08c9c..257a441a 100644 --- a/services/softbusadapter/test/fuzztest/softbusonsessionopened_fuzzer/BUILD.gn +++ b/services/softbusadapter/test/fuzztest/softbusonsessionopened_fuzzer/BUILD.gn @@ -37,18 +37,19 @@ ohos_fuzztest("SoftbusOnSessionOpenedFuzzTest") { "${fwk_common_path}/log/include", "${fwk_common_path}/utils/include", "${softbusadapter_path}/include", - "//third_party/json/include", ] include_dirs += [ "include", "${common_path}/include", "${audio_transport_path}/audiochannel/audiodatachannel/include", + "//third_party/cJSON", ] deps = [ "${audio_transport_path}/audiochannel/audiodatachannel:distributed_audio_data_channel", "${services_path}/common:distributed_audio_utils", + "//third_party/cJSON:cjson", ] external_deps = [ diff --git a/services/softbusadapter/test/fuzztest/softbusonstreamreceived_fuzzer/BUILD.gn b/services/softbusadapter/test/fuzztest/softbusonstreamreceived_fuzzer/BUILD.gn index f8a875b6..e8a06525 100644 --- a/services/softbusadapter/test/fuzztest/softbusonstreamreceived_fuzzer/BUILD.gn +++ b/services/softbusadapter/test/fuzztest/softbusonstreamreceived_fuzzer/BUILD.gn @@ -37,18 +37,19 @@ ohos_fuzztest("SoftbusOnStreamReceivedFuzzTest") { "${fwk_common_path}/log/include", "${fwk_common_path}/utils/include", "${softbusadapter_path}/include", - "//third_party/json/include", ] include_dirs += [ "include", "${common_path}/include", "${audio_transport_path}/audiochannel/audiodatachannel/include", + "//third_party/cJSON", ] deps = [ "${audio_transport_path}/audiochannel/audiodatachannel:distributed_audio_data_channel", "${services_path}/common:distributed_audio_utils", + "//third_party/cJSON:cjson", ] external_deps = [ diff --git a/services/softbusadapter/test/unittest/BUILD.gn b/services/softbusadapter/test/unittest/BUILD.gn index 189137bd..6ea77f59 100644 --- a/services/softbusadapter/test/unittest/BUILD.gn +++ b/services/softbusadapter/test/unittest/BUILD.gn @@ -20,7 +20,6 @@ config("module_private_config") { visibility = [ ":*" ] include_dirs = [ - "//third_party/json/include", "${fwk_common_path}/utils/include", "${fwk_utils_path}/include/", ] @@ -31,6 +30,7 @@ config("module_private_config") { "${services_path}/common/audioparam", "${services_path}/common/audiodata/include", "${softbusadapter_path}/include", + "//third_party/cJSON", ] } @@ -44,6 +44,7 @@ ohos_unittest("SoftBusAdapterTest") { deps = [ "${softbusadapter_path}:distributed_audio_softbus_adapter", + "//third_party/cJSON:cjson", "//third_party/googletest:gmock", "//third_party/googletest:gtest_main", ] -- Gitee From b1fb62cb9d90020e3f0e9c5bd68b43a3d84b3ce8 Mon Sep 17 00:00:00 2001 From: Bobie Date: Mon, 4 Sep 2023 21:22:32 +0800 Subject: [PATCH 24/35] fix UT of daudio adapter. Signed-off-by: Bobie --- .../src/audio_adapter_interface_impl_test.cpp | 14 +++++++++----- .../hdfaudioclient/src/daudio_capture_internal.cpp | 2 +- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/hdf_service/distributed_audio/hdi_service/audio/v1_0/test/unittest/audio_adapter_interface/src/audio_adapter_interface_impl_test.cpp b/hdf_service/distributed_audio/hdi_service/audio/v1_0/test/unittest/audio_adapter_interface/src/audio_adapter_interface_impl_test.cpp index c9554175..c5b38b4e 100644 --- a/hdf_service/distributed_audio/hdi_service/audio/v1_0/test/unittest/audio_adapter_interface/src/audio_adapter_interface_impl_test.cpp +++ b/hdf_service/distributed_audio/hdi_service/audio/v1_0/test/unittest/audio_adapter_interface/src/audio_adapter_interface_impl_test.cpp @@ -73,7 +73,7 @@ HWTEST_F(AudioAdapterInterfaceImpTest, CreateRender_001, TestSize.Level1) AudioDeviceDescriptor devDesc; AudioSampleAttributes attrs; sptr render = nullptr; - uint32_t renderId = 10; + uint32_t renderId = 0; AdapterTest_->extSpkCallback_ = new MockIDAudioCallback(); EXPECT_NE(HDF_SUCCESS, AdapterTest_->CreateRender(devDesc, attrs, render, renderId)); EXPECT_EQ(HDF_SUCCESS, AdapterTest_->DestroyRender(renderId)); @@ -105,7 +105,9 @@ HWTEST_F(AudioAdapterInterfaceImpTest, DestroyRender_001, TestSize.Level1) EXPECT_EQ(HDF_SUCCESS, AdapterTest_->DestroyRender(renderId)); renderId = 10; - EXPECT_NE(HDF_FAILURE, AdapterTest_->DestroyRender(renderId)); + EXPECT_EQ(HDF_FAILURE, AdapterTest_->DestroyRender(renderId)); + renderId = 1; + EXPECT_EQ(HDF_SUCCESS, AdapterTest_->DestroyRender(renderId)); } /** @@ -119,7 +121,7 @@ HWTEST_F(AudioAdapterInterfaceImpTest, CreateCapture_001, TestSize.Level1) AudioDeviceDescriptor devDesc; AudioSampleAttributes attrs; sptr capture = nullptr; - uint32_t capId = 10; + uint32_t capId = 0; AdapterTest_->extMicCallback_ = new MockIDAudioCallback(); EXPECT_NE(HDF_SUCCESS, AdapterTest_->CreateCapture(devDesc, attrs, capture, capId)); EXPECT_EQ(HDF_SUCCESS, AdapterTest_->DestroyCapture(capId)); @@ -150,7 +152,9 @@ HWTEST_F(AudioAdapterInterfaceImpTest, DestroyCapture_001, TestSize.Level1) EXPECT_EQ(HDF_SUCCESS, AdapterTest_->DestroyCapture(capId)); capId = 10; - EXPECT_NE(HDF_FAILURE, AdapterTest_->DestroyCapture(capId)); + EXPECT_EQ(HDF_FAILURE, AdapterTest_->DestroyCapture(capId)); + capId = 1; + EXPECT_EQ(HDF_SUCCESS, AdapterTest_->DestroyCapture(capId)); } /** @@ -673,7 +677,7 @@ HWTEST_F(AudioAdapterInterfaceImpTest, SetAudioVolume_001, TestSize.Level1) std::string param = "1"; EXPECT_NE(HDF_SUCCESS, AdapterTest_->SetAudioVolume(condition, param)); AdapterTest_->extSpkCallback_ = new MockIDAudioCallback(); - EXPECT_NE(HDF_SUCCESS, AdapterTest_->SetAudioVolume(condition, param)); + EXPECT_EQ(HDF_SUCCESS, AdapterTest_->SetAudioVolume(condition, param)); std::string adpterName = "adbcef"; AudioDeviceDescriptor desc; AudioSampleAttributes attrs; diff --git a/services/hdfaudioclient/src/daudio_capture_internal.cpp b/services/hdfaudioclient/src/daudio_capture_internal.cpp index 13ccf4f1..3aaafa63 100644 --- a/services/hdfaudioclient/src/daudio_capture_internal.cpp +++ b/services/hdfaudioclient/src/daudio_capture_internal.cpp @@ -70,7 +70,7 @@ static int32_t CaptureFrameInternal(struct AudioCapture *capture, void *frame, u } int8_t *uframe = reinterpret_cast(frame); std::vector frameHal; - int32_t ret = context->proxy_->CaptureFrame(frameHal, requestBytes); + int32_t ret = context->proxy_->CaptureFrame(frameHal, *replyBytes); if (ret != DH_SUCCESS) { DHLOGE("Failed to capture frames."); return ret; -- Gitee From bbe458d7064becebc72acd808eb71b85c2a664f2 Mon Sep 17 00:00:00 2001 From: ry521 Date: Tue, 5 Sep 2023 06:31:36 +0000 Subject: [PATCH 25/35] update services/audiomanager/test/unittest/managersink/src/daudio_sink_manager_test.cpp. Signed-off-by: ry521 --- .../unittest/managersink/src/daudio_sink_manager_test.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/services/audiomanager/test/unittest/managersink/src/daudio_sink_manager_test.cpp b/services/audiomanager/test/unittest/managersink/src/daudio_sink_manager_test.cpp index 1ca7c5ed..7ab5e28e 100644 --- a/services/audiomanager/test/unittest/managersink/src/daudio_sink_manager_test.cpp +++ b/services/audiomanager/test/unittest/managersink/src/daudio_sink_manager_test.cpp @@ -53,10 +53,10 @@ HWTEST_F(DAudioSinkManagerTest, CreateAudioDevice_001, TestSize.Level1) std::string devId = "devId"; EXPECT_EQ(ERR_DH_AUDIO_FAILED, daudioSinkManager.CreateAudioDevice(devId)); daudioSinkManager.channelState_ = ChannelState::SPK_CONTROL_OPENED; - daudioSinkManager.rcvProviderPtr_ = std::make_shared().get(); + daudioSinkManager.LoadAVReceiverEngineProvider; EXPECT_EQ(DH_SUCCESS, daudioSinkManager.CreateAudioDevice(devId)); daudioSinkManager.channelState_ = ChannelState::MIC_CONTROL_OPENED; - daudioSinkManager.sendProviderPtr_ = std::make_shared().get(); + daudioSinkManager.LoadAVReceiverEngineProvider; EXPECT_EQ(DH_SUCCESS, daudioSinkManager.CreateAudioDevice(devId)); auto dev = std::make_shared(devId); daudioSinkManager.audioDevMap_.emplace(devId, dev); -- Gitee From e2c13097275b9821008cfa3ec18f1a21bcd9f447 Mon Sep 17 00:00:00 2001 From: ry521 Date: Tue, 5 Sep 2023 07:16:03 +0000 Subject: [PATCH 26/35] update services/audiomanager/test/unittest/managersink/src/daudio_sink_manager_test.cpp. Signed-off-by: ry521 --- .../unittest/managersink/src/daudio_sink_manager_test.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/services/audiomanager/test/unittest/managersink/src/daudio_sink_manager_test.cpp b/services/audiomanager/test/unittest/managersink/src/daudio_sink_manager_test.cpp index 7ab5e28e..bad59dca 100644 --- a/services/audiomanager/test/unittest/managersink/src/daudio_sink_manager_test.cpp +++ b/services/audiomanager/test/unittest/managersink/src/daudio_sink_manager_test.cpp @@ -53,10 +53,10 @@ HWTEST_F(DAudioSinkManagerTest, CreateAudioDevice_001, TestSize.Level1) std::string devId = "devId"; EXPECT_EQ(ERR_DH_AUDIO_FAILED, daudioSinkManager.CreateAudioDevice(devId)); daudioSinkManager.channelState_ = ChannelState::SPK_CONTROL_OPENED; - daudioSinkManager.LoadAVReceiverEngineProvider; + daudioSinkManager.LoadAVReceiverEngineProvider(); EXPECT_EQ(DH_SUCCESS, daudioSinkManager.CreateAudioDevice(devId)); daudioSinkManager.channelState_ = ChannelState::MIC_CONTROL_OPENED; - daudioSinkManager.LoadAVReceiverEngineProvider; + daudioSinkManager.LoadAVReceiverEngineProvider(); EXPECT_EQ(DH_SUCCESS, daudioSinkManager.CreateAudioDevice(devId)); auto dev = std::make_shared(devId); daudioSinkManager.audioDevMap_.emplace(devId, dev); -- Gitee From c78eaf68fc5b962127cff48b8a379b1b66f824b7 Mon Sep 17 00:00:00 2001 From: Bobie Date: Tue, 5 Sep 2023 21:10:28 +0800 Subject: [PATCH 27/35] add condition of switch Signed-off-by: Bobie --- .../receiverengine/src/av_receiver_engine_adapter.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/services/audiotransport/receiverengine/src/av_receiver_engine_adapter.cpp b/services/audiotransport/receiverengine/src/av_receiver_engine_adapter.cpp index 4c00302b..035b3cf6 100644 --- a/services/audiotransport/receiverengine/src/av_receiver_engine_adapter.cpp +++ b/services/audiotransport/receiverengine/src/av_receiver_engine_adapter.cpp @@ -168,12 +168,14 @@ int32_t AVTransReceiverAdapter::OnReceiverEvent(const AVTransEvent &event) { DHLOGI("On Receiver event, type: %d", event.type); switch (event.type) { + case EventType::EVENT_CHANNEL_OPEN_FAIL: case EventType::EVENT_CHANNEL_OPENED: { chnCreateSuccess_ = (event.type == EventType::EVENT_CHANNEL_OPENED); chnCreatedCondVar_.notify_one(); break; } case EventType::EVENT_CHANNEL_CLOSED: + case EventType::EVENT_START_FAIL: case EventType::EVENT_START_SUCCESS: case EventType::EVENT_STOP_SUCCESS: case EventType::EVENT_ENGINE_ERROR: -- Gitee From 8d06a0f4725269e137797a69adb7de705fac1679 Mon Sep 17 00:00:00 2001 From: ljh54_space Date: Thu, 7 Sep 2023 13:56:58 +0800 Subject: [PATCH 28/35] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=94=A8=E4=BE=8B?= =?UTF-8?q?=E6=B2=A1=E6=9C=89=E6=96=AD=E8=A8=80=E5=91=8A=E8=AD=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: ljh54_space --- common/test/unittest/src/daudio_utils_test.cpp | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/common/test/unittest/src/daudio_utils_test.cpp b/common/test/unittest/src/daudio_utils_test.cpp index 10e03931..42344968 100644 --- a/common/test/unittest/src/daudio_utils_test.cpp +++ b/common/test/unittest/src/daudio_utils_test.cpp @@ -129,30 +129,22 @@ HWTEST_F(DAudioUtilsTest, DAudioLatencyTest_003, TestSize.Level1) /** * @tc.name: DAudioLogTest_001 - * @tc.desc: Verify the DHLOG definition and DHLog function. + * @tc.desc: Verify the GetCurrentTime function and DHLOG definition and DHLog function. * @tc.type: FUNC * @tc.require: AR000H0E5U */ -HWTEST_F(DAudioUtilsTest, DAudioLogTest_001, TestSize.Level1) +HWTEST_F(DAudioUtilsTest, DAudioUtilTest_001, TestSize.Level1) { DHLOGD("DAudio TDD test DHLOGD print."); DHLOGI("DAudio TDD test DHLOGI print."); DHLOGW("DAudio TDD test DHLOGW print."); DHLOGE("DAudio TDD test DHLOGE print."); DHLog(DHLogLevel::DH_LOG_ERROR, ""); -} - -/** - * @tc.name: DAudioLogTest_001 - * @tc.desc: Verify the GetCurrentTime function. - * @tc.type: FUNC - * @tc.require: AR000H0E5U - */ -HWTEST_F(DAudioUtilsTest, DAudioUtilTest_001, TestSize.Level1) -{ int64_t tvSec; int64_t tvNSec; GetCurrentTime(tvSec, tvNSec); + EXPECT_GE(tvSec, 0); + EXPECT_GE(tvNSec, 0); } /** -- Gitee From 4d0a892b75e20ea54c324b8e4ecf0abba6162c1f Mon Sep 17 00:00:00 2001 From: ljh54_space Date: Tue, 12 Sep 2023 10:24:59 +0800 Subject: [PATCH 29/35] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=A4=B1=E8=B4=A5?= =?UTF-8?q?=E7=94=A8=E4=BE=8B=E4=BB=A5=E5=8F=8A=E4=B8=80=E5=A4=84=E5=86=85?= =?UTF-8?q?=E5=AD=98=E6=B3=84=E6=BC=8F=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: ljh54_space --- .../managersource/include/daudio_source_dev.h | 2 +- .../managersource/src/daudio_source_dev.cpp | 10 +++------- .../managersink/src/daudio_sink_manager_test.cpp | 4 +++- .../sourcedevice/src/daudio_source_dev_test.cpp | 13 ++++++------- .../sourcemanager/src/daudio_source_mgr_test.cpp | 4 ++-- 5 files changed, 15 insertions(+), 18 deletions(-) diff --git a/services/audiomanager/managersource/include/daudio_source_dev.h b/services/audiomanager/managersource/include/daudio_source_dev.h index 1be525e1..5db9200e 100644 --- a/services/audiomanager/managersource/include/daudio_source_dev.h +++ b/services/audiomanager/managersource/include/daudio_source_dev.h @@ -75,7 +75,7 @@ private: int32_t NotifySinkDevOpenMic(cJSON *jParam); int32_t OpenDMicInner(); - void CleanupJson(cJSON *jParamCopy, cJSON *jParam, char *content); + void CleanupJson(cJSON *jParamCopy, char *content); void OnDisableTaskResult(int32_t resultCode, const std::string &result, const std::string &funcName); void OnEnableTaskResult(int32_t resultCode, const std::string &result, const std::string &funcName); diff --git a/services/audiomanager/managersource/src/daudio_source_dev.cpp b/services/audiomanager/managersource/src/daudio_source_dev.cpp index 915668b4..c3a16f4d 100644 --- a/services/audiomanager/managersource/src/daudio_source_dev.cpp +++ b/services/audiomanager/managersource/src/daudio_source_dev.cpp @@ -1330,10 +1330,9 @@ void DAudioSourceDev::OnTaskResult(int32_t resultCode, const std::string &result funcName.c_str()); } -void DAudioSourceDev::CleanupJson(cJSON *jParamCopy, cJSON *jParam, char *content) +void DAudioSourceDev::CleanupJson(cJSON *jParamCopy, char *content) { cJSON_Delete(jParamCopy); - cJSON_Delete(jParam); cJSON_free(content); } @@ -1357,19 +1356,16 @@ int32_t DAudioSourceDev::NotifySinkDev(const AudioEventType type, const cJSON *p const uint32_t randomTaskCode = rd(); constexpr uint32_t eventOffset = 4; cJSON_AddStringToObject(jParam, KEY_RANDOM_TASK_CODE, std::to_string(randomTaskCode).c_str()); - DHLOGD("Notify sink dev, new engine, random task code:%s", std::to_string(randomTaskCode).c_str()); if (speaker_ == nullptr || mic_ == nullptr) { cJSON_Delete(jParamCopy); - cJSON_Delete(jParam); DHLOGE("speaker or mic dev is null."); return ERR_DH_AUDIO_NULLPTR; } if (type == OPEN_CTRL || type == CLOSE_CTRL) { cJSON_Delete(jParamCopy); - cJSON_Delete(jParam); DHLOGE("In new engine mode, ctrl is not allowed."); return ERR_DH_AUDIO_NULLPTR; } @@ -1380,10 +1376,10 @@ int32_t DAudioSourceDev::NotifySinkDev(const AudioEventType type, const cJSON *p if (type == CLOSE_SPEAKER || type == CLOSE_MIC) { // Close spk || Close mic do not need to wait RPC - CleanupJson(jParamCopy, jParam, content); + CleanupJson(jParamCopy, content); return DH_SUCCESS; } - CleanupJson(jParamCopy, jParam, content); + CleanupJson(jParamCopy, content); return WaitForRPC(static_cast(static_cast(type) + eventOffset)); } diff --git a/services/audiomanager/test/unittest/managersink/src/daudio_sink_manager_test.cpp b/services/audiomanager/test/unittest/managersink/src/daudio_sink_manager_test.cpp index bad59dca..570d01d4 100644 --- a/services/audiomanager/test/unittest/managersink/src/daudio_sink_manager_test.cpp +++ b/services/audiomanager/test/unittest/managersink/src/daudio_sink_manager_test.cpp @@ -56,10 +56,12 @@ HWTEST_F(DAudioSinkManagerTest, CreateAudioDevice_001, TestSize.Level1) daudioSinkManager.LoadAVReceiverEngineProvider(); EXPECT_EQ(DH_SUCCESS, daudioSinkManager.CreateAudioDevice(devId)); daudioSinkManager.channelState_ = ChannelState::MIC_CONTROL_OPENED; - daudioSinkManager.LoadAVReceiverEngineProvider(); + daudioSinkManager.LoadAVSenderEngineProvider(); EXPECT_EQ(DH_SUCCESS, daudioSinkManager.CreateAudioDevice(devId)); auto dev = std::make_shared(devId); daudioSinkManager.audioDevMap_.emplace(devId, dev); + daudioSinkManager.channelState_ = ChannelState::MIC_CONTROL_OPENED; + daudioSinkManager.LoadAVSenderEngineProvider(); EXPECT_EQ(DH_SUCCESS, daudioSinkManager.CreateAudioDevice(devId)); daudioSinkManager.channelState_ = ChannelState::MIC_CONTROL_OPENED; daudioSinkManager.sendProviderPtr_ = nullptr; diff --git a/services/audiomanager/test/unittest/sourcedevice/src/daudio_source_dev_test.cpp b/services/audiomanager/test/unittest/sourcedevice/src/daudio_source_dev_test.cpp index 8328aa1b..24423e0d 100644 --- a/services/audiomanager/test/unittest/sourcedevice/src/daudio_source_dev_test.cpp +++ b/services/audiomanager/test/unittest/sourcedevice/src/daudio_source_dev_test.cpp @@ -752,7 +752,7 @@ HWTEST_F(DAudioSourceDevTest, TaskOpenDSpeaker_001, TestSize.Level1) std::string tempLongStr(DAUDIO_MAX_JSON_LEN + 1, 'a'); EXPECT_EQ(ERR_DH_AUDIO_SA_PARAM_INVALID, sourceDev_->TaskOpenDSpeaker(tempLongStr)); - EXPECT_EQ(ERR_DH_AUDIO_FAILED, sourceDev_->TaskOpenDSpeaker(ARGS)); + EXPECT_EQ(ERR_DH_AUDIO_NULLPTR, sourceDev_->TaskOpenDSpeaker(ARGS)); cJSON *jParamSpk = cJSON_CreateObject(); cJSON_AddStringToObject(jParamSpk, KEY_DH_ID, DH_ID_SPK.c_str()); @@ -787,10 +787,10 @@ HWTEST_F(DAudioSourceDevTest, TaskCloseDSpeaker_001, TestSize.Level1) EXPECT_EQ(ERR_DH_AUDIO_SA_PARAM_INVALID, sourceDev_->TaskCloseDSpeaker(tempLongStr)); sourceDev_->speaker_->isOpened_ = true; - EXPECT_EQ(ERR_DH_AUDIO_FAILED, sourceDev_->TaskCloseDSpeaker(ARGS)); + EXPECT_EQ(ERR_DH_AUDIO_NULLPTR, sourceDev_->TaskCloseDSpeaker(ARGS)); sourceDev_->speaker_->isOpened_ = false; - EXPECT_EQ(ERR_DH_AUDIO_FAILED, sourceDev_->TaskCloseDSpeaker(ARGS)); + EXPECT_EQ(ERR_DH_AUDIO_NULLPTR, sourceDev_->TaskCloseDSpeaker(ARGS)); cJSON *jParamSpk = cJSON_CreateObject(); cJSON_AddStringToObject(jParamSpk, KEY_DH_ID, DH_ID_SPK.c_str()); @@ -858,10 +858,10 @@ HWTEST_F(DAudioSourceDevTest, TaskCloseDMic_001, TestSize.Level1) EXPECT_EQ(ERR_DH_AUDIO_SA_PARAM_INVALID, sourceDev_->TaskCloseDMic(tempLongStr)); sourceDev_->mic_->isOpened_ = true; - EXPECT_EQ(ERR_DH_AUDIO_FAILED, sourceDev_->TaskCloseDMic(ARGS)); + EXPECT_EQ(ERR_DH_AUDIO_NULLPTR, sourceDev_->TaskCloseDMic(ARGS)); sourceDev_->mic_->isOpened_ = false; - EXPECT_EQ(ERR_DH_AUDIO_FAILED, sourceDev_->TaskCloseDMic(ARGS)); + EXPECT_EQ(ERR_DH_AUDIO_NULLPTR, sourceDev_->TaskCloseDMic(ARGS)); cJSON *jParamMic = cJSON_CreateObject(); cJSON_AddStringToObject(jParamMic, KEY_DH_ID, DH_ID_MIC.c_str()); @@ -1141,15 +1141,14 @@ HWTEST_F(DAudioSourceDevTest, NotifyHDF_003, TestSize.Level1) HWTEST_F(DAudioSourceDevTest, NotifySinkDev_001, TestSize.Level1) { cJSON *jAudioParam = cJSON_CreateObject(); - sourceDev_->isRpcOpen_.store(false); EXPECT_EQ(ERR_DH_AUDIO_FAILED, sourceDev_->NotifySinkDev(CLOSE_MIC, jAudioParam, DH_ID_SPK)); - sourceDev_->isRpcOpen_.store(true); EXPECT_EQ(ERR_DH_AUDIO_NULLPTR, sourceDev_->NotifySinkDev(CLOSE_MIC, jAudioParam, DH_ID_SPK)); sourceDev_->mic_ = std::make_shared(DEV_ID, sourceDev_); sourceDev_->speaker_ = std::make_shared(DEV_ID, sourceDev_); EXPECT_EQ(DH_SUCCESS, sourceDev_->NotifySinkDev(CLOSE_MIC, jAudioParam, DH_ID_SPK)); + cJSON_Delete(jAudioParam); } /** diff --git a/services/audiomanager/test/unittest/sourcemanager/src/daudio_source_mgr_test.cpp b/services/audiomanager/test/unittest/sourcemanager/src/daudio_source_mgr_test.cpp index 6bc3da9c..ab9600b1 100644 --- a/services/audiomanager/test/unittest/sourcemanager/src/daudio_source_mgr_test.cpp +++ b/services/audiomanager/test/unittest/sourcemanager/src/daudio_source_mgr_test.cpp @@ -182,12 +182,12 @@ HWTEST_F(DAudioSourceMgrTest, DisableDAudio_001, TestSize.Level1) */ HWTEST_F(DAudioSourceMgrTest, HandleDAudioNotify_001, TestSize.Level1) { - EXPECT_EQ(ERR_DH_AUDIO_SA_DEVICE_NOT_EXIST, + EXPECT_EQ(ERR_DH_AUDIO_FAILED, sourceMgr.HandleDAudioNotify(DEV_ID, DH_ID_SPK, OPEN_SPEAKER, "openspk")); std::string reqId = GetRandomID(); EXPECT_EQ(DH_SUCCESS, sourceMgr.EnableDAudio(DEV_ID, DH_ID_SPK, "", ATTRS, reqId)); - EXPECT_EQ(DH_SUCCESS, sourceMgr.HandleDAudioNotify(DEV_ID, DH_ID_SPK, OPEN_SPEAKER, "openspk")); + EXPECT_EQ(ERR_DH_AUDIO_FAILED, sourceMgr.HandleDAudioNotify(DEV_ID, DH_ID_SPK, OPEN_SPEAKER, "openspk")); EXPECT_EQ(DH_SUCCESS, sourceMgr.DisableDAudio(DEV_ID, DH_ID_SPK, reqId)); EXPECT_EQ(ERR_DH_AUDIO_FAILED, sourceMgr.HandleDAudioNotify(DEV_ID + "1", DH_ID_SPK, CLOSE_CTRL, "")); -- Gitee From 8f1ad054cf59ef30986bb1a92d569539ca52a99f Mon Sep 17 00:00:00 2001 From: zhonglufu Date: Wed, 13 Sep 2023 09:46:28 +0800 Subject: [PATCH 30/35] add UT Signed-off-by: zhonglufu --- .../micclient/src/dmic_client_test.cpp | 92 +++++++++++++++++++ 1 file changed, 92 insertions(+) diff --git a/services/audioclient/test/unittest/micclient/src/dmic_client_test.cpp b/services/audioclient/test/unittest/micclient/src/dmic_client_test.cpp index 99de9322..f844ca24 100644 --- a/services/audioclient/test/unittest/micclient/src/dmic_client_test.cpp +++ b/services/audioclient/test/unittest/micclient/src/dmic_client_test.cpp @@ -209,5 +209,97 @@ HWTEST_F(DMicClientTest, SendMessage_001, TestSize.Level1) micClient_->micTrans_ = nullptr; EXPECT_EQ(ERR_DH_AUDIO_NULLPTR, micClient_->SendMessage(NOTIFY_OPEN_MIC_RESULT, content, dstDevId)); } + +/** + * @tc.name: GetAdapter_001 + * @tc.desc: Verify the GetAdapter function. + * @tc.type: FUNC + * @tc.require: AR000H0E6G + */ +HWTEST_F(DMicClientTest, GetAdapter_001, TestSize.Level1) +{ + struct IAudioManager *audioManager_; + audioManager_ = nullptr; + int32_t actual = micClient_->GetAdapter(); + EXPECT_EQ(ERR_DH_AUDIO_FAILED, actual); +} + +/** + * @tc.name: InitHDFAudioDevice_001 + * @tc.desc: Verify the InitHDFAudioDevice function. + * @tc.type: FUNC + * @tc.require: AR000H0E6G + */ +HWTEST_F(DMicClientTest, InitHDFAudioDevice_001, TestSize.Level1) +{ + bool micInUse_ = true; + int32_t actual = micClient_->InitHDFAudioDevice(); + EXPECT_EQ(DH_SUCCESS, actual); + micInUse_ = false; + actual = micClient_->InitHDFAudioDevice(); + EXPECT_EQ(DH_SUCCESS, actual); +} + +/** + * @tc.name: AudioFwkClientSetUp_001 + * @tc.desc: Verify the AudioFwkClientSetUp function. + * @tc.type: FUNC + * @tc.require: AR000H0E6G + */ +HWTEST_F(DMicClientTest, AudioFwkClientSetUp_001, TestSize.Level1) +{ + audioParam_.captureOpts.capturerFlags = MMAP_MODE; + int32_t actual = micClient_->AudioFwkClientSetUp(); + EXPECT_EQ(ERR_DH_AUDIO_CLIENT_CREATE_CAPTURER_FAILED, actual); + audioParam_.captureOpts.capturerFlags = NORMAL_MODE; + actual = micClient_->AudioFwkClientSetUp(); + EXPECT_NE(DH_SUCCESS, actual); +} + +/** + * @tc.name: HdfClientSetUp_001 + * @tc.desc: Verify the HdfClientSetUp function. + * @tc.type: FUNC + * @tc.require: AR000H0E6G + */ +HWTEST_F(DMicClientTest, HdfClientSetUp_001, TestSize.Level1) +{ + bool micInUse_; + micInUse_ = true; + int32_t actual = micClient_->HdfClientSetUp(); + EXPECT_EQ(DH_SUCCESS, actual); + micInUse_ = false; + micClient_->micTrans_ = nullptr; + actual = micClient_->HdfClientSetUp(); + EXPECT_EQ(ERR_DH_AUDIO_NULLPTR, actual); +} + +/** + * @tc.name: TransSetUp_001 + * @tc.desc: Verify the TransSetUp function. + * @tc.type: FUNC + * @tc.require: AR000H0E6G + */ +HWTEST_F(DMicClientTest, TransSetUp_001, TestSize.Level1) +{ + int32_t actual = micClient_->TransSetUp(); + EXPECT_EQ(DH_SUCCESS, actual); + micClient_->micTrans_ = nullptr; + actual = micClient_->TransSetUp(); + EXPECT_EQ(ERR_DH_AUDIO_NULLPTR, actual); +} + +/** + * @tc.name: HdfClientRelease_001 + * @tc.desc: Verify the HdfClientRelease function. + * @tc.type: FUNC + * @tc.require: AR000H0E6G + */ +HWTEST_F(DMicClientTest, HdfClientRelease_001, TestSize.Level1) +{ + std::shared_ptr audioAdapter_ = std::make_shared(); + int32_t actual = micClient_->HdfClientRelease(); + EXPECT_EQ(DH_SUCCESS, actual); +} } // DistributedHardware } // OHOS -- Gitee From d8111b5af0a768bde00f9fb74496bcfdee555bf9 Mon Sep 17 00:00:00 2001 From: Bobie Date: Fri, 15 Sep 2023 14:35:36 +0800 Subject: [PATCH 31/35] fix the output path Signed-off-by: Bobie --- distributedaudio.gni | 2 ++ .../audio/v1_0/test/fuzztest/captureframe_fuzzer/BUILD.gn | 2 +- .../audio/v1_0/test/fuzztest/createcapture_fuzzer/BUILD.gn | 2 +- .../audio/v1_0/test/fuzztest/createrender_fuzzer/BUILD.gn | 2 +- .../audio/v1_0/test/fuzztest/destroycapture_fuzzer/BUILD.gn | 2 +- .../audio/v1_0/test/fuzztest/destroyrender_fuzzer/BUILD.gn | 2 +- .../audio/v1_0/test/fuzztest/getalladapters_fuzzer/BUILD.gn | 2 +- .../audio/v1_0/test/fuzztest/getextraparams_fuzzer/BUILD.gn | 2 +- .../audio/v1_0/test/fuzztest/loadadapter_fuzzer/BUILD.gn | 2 +- .../audio/v1_0/test/fuzztest/renderframe_fuzzer/BUILD.gn | 2 +- .../audio/v1_0/test/fuzztest/setextraparams_fuzzer/BUILD.gn | 2 +- .../audio/v1_0/test/fuzztest/unloadadapter_fuzzer/BUILD.gn | 2 +- .../audio_ext/v1_0/test/fuzztest/notifyevent_fuzzer/BUILD.gn | 2 +- .../v1_0/test/fuzztest/registeraudiodevice_fuzzer/BUILD.gn | 2 +- .../v1_0/test/fuzztest/unregisteraudiodevice_fuzzer/BUILD.gn | 2 +- .../test/fuzztest/onremotesinksvrdied_fuzzer/BUILD.gn | 2 +- .../test/fuzztest/onremotesourcesvrdied_fuzzer/BUILD.gn | 2 +- .../test/fuzztest/sinkhandlerfinishstartsa_fuzzer/BUILD.gn | 2 +- .../test/fuzztest/sinkhandlerinitsink_fuzzer/BUILD.gn | 2 +- .../fuzztest/sinkhandlersubscribelocalhardware_fuzzer/BUILD.gn | 3 ++- .../sinkhandlerunsubscribelocalhardware_fuzzer/BUILD.gn | 3 ++- .../test/fuzztest/sinkonloadsystemabilityfail_fuzzer/BUILD.gn | 2 +- .../fuzztest/sinkonloadsystemabilitysuccess_fuzzer/BUILD.gn | 3 ++- .../test/fuzztest/sinkproxydaudionotify_fuzzer/BUILD.gn | 2 +- .../native_cpp/test/fuzztest/sinkproxyinitsink_fuzzer/BUILD.gn | 2 +- .../fuzztest/sinkproxysubscribelocalhardware_fuzzer/BUILD.gn | 3 ++- .../fuzztest/sinkproxyunsubscribelocalhardware_fuzzer/BUILD.gn | 3 ++- .../sourcehandlerconfigdistributedhardware_fuzzer/BUILD.gn | 3 ++- .../test/fuzztest/sourcehandlerfinishstartsa_fuzzer/BUILD.gn | 2 +- .../test/fuzztest/sourcehandlerinitsource_fuzzer/BUILD.gn | 2 +- .../sourcehandlerregisterdistributedhardware_fuzzer/BUILD.gn | 3 ++- .../sourcehandlerunregisterdistributedhardware_fuzzer/BUILD.gn | 2 +- .../sourceipccallbackonnotifyregresult_fuzzer/BUILD.gn | 3 ++- .../sourceipccallbackonnotifyunregresult_fuzzer/BUILD.gn | 3 ++- .../fuzztest/sourceonloadsystemabilityfail_fuzzer/BUILD.gn | 3 ++- .../fuzztest/sourceonloadsystemabilitysuccess_fuzzer/BUILD.gn | 3 ++- .../sourceproxyconfigdistributedhardware_fuzzer/BUILD.gn | 3 ++- .../test/fuzztest/sourceproxydaudionotify_fuzzer/BUILD.gn | 2 +- .../test/fuzztest/sourceproxyinitsource_fuzzer/BUILD.gn | 2 +- .../sourceproxyregisterdistributedhardware_fuzzer/BUILD.gn | 3 ++- .../sourceproxyunregisterdistributedhardware_fuzzer/BUILD.gn | 3 ++- .../test/fuzztest/sinkservicedaudionotify_fuzzer/BUILD.gn | 3 ++- .../test/fuzztest/sinkserviceinitsink_fuzzer/BUILD.gn | 2 +- .../test/fuzztest/sinkservicereleasesink_fuzzer/BUILD.gn | 3 ++- .../fuzztest/sinkservicesubscribelocalhardware_fuzzer/BUILD.gn | 3 ++- .../sinkserviceunsubscribelocalhardware_fuzzer/BUILD.gn | 2 +- .../test/fuzztest/sourceservicedaudionotify_fuzzer/BUILD.gn | 3 ++- .../test/fuzztest/sourceserviceinitsource_fuzzer/BUILD.gn | 3 ++- .../sourceserviceregisterdistributedhardware_fuzzer/BUILD.gn | 3 +-- .../test/fuzztest/sourceservicereleasesource_fuzzer/BUILD.gn | 3 ++- .../sourceserviceunregisterdistributedhardware_fuzzer/BUILD.gn | 3 +-- .../test/fuzztest/decoderonerror_fuzzer/BUILD.gn | 2 +- .../test/fuzztest/decoderoninputavailable_fuzzer/BUILD.gn | 2 +- .../test/fuzztest/decoderonoutputavailable_fuzzer/BUILD.gn | 2 +- .../test/fuzztest/decoderonoutputchanged_fuzzer/BUILD.gn | 2 +- .../test/fuzztest/encoderonerror_fuzzer/BUILD.gn | 2 +- .../test/fuzztest/encoderoninputavailable_fuzzer/BUILD.gn | 2 +- .../test/fuzztest/encoderonoutputavailable_fuzzer/BUILD.gn | 2 +- .../test/fuzztest/encoderonoutputchanged_fuzzer/BUILD.gn | 2 +- .../common/test/fuzztest/audiodatasetinit64_fuzzer/BUILD.gn | 2 +- .../test/fuzztest/softbusonbytesreceived_fuzzer/BUILD.gn | 2 +- .../test/fuzztest/softbusonsessionclosed_fuzzer/BUILD.gn | 2 +- .../test/fuzztest/softbusonsessionopened_fuzzer/BUILD.gn | 2 +- .../test/fuzztest/softbusonstreamreceived_fuzzer/BUILD.gn | 2 +- 64 files changed, 85 insertions(+), 65 deletions(-) diff --git a/distributedaudio.gni b/distributedaudio.gni index 9ce5fe6a..0b988058 100644 --- a/distributedaudio.gni +++ b/distributedaudio.gni @@ -43,6 +43,8 @@ fwk_common_path = "${distributedhardwarefwk_path}/common" fwk_services_path = "${distributedhardwarefwk_path}/services" innerkits_path = "${distributedaudio_path}/interfaces/inner_kits" +distributedaudio_fuzz_path = "distributed_audio/distributed_audio" + build_flags = [ "-Werror" ] declare_args() { diff --git a/hdf_service/distributed_audio/hdi_service/audio/v1_0/test/fuzztest/captureframe_fuzzer/BUILD.gn b/hdf_service/distributed_audio/hdi_service/audio/v1_0/test/fuzztest/captureframe_fuzzer/BUILD.gn index e268f723..718f13d9 100644 --- a/hdf_service/distributed_audio/hdi_service/audio/v1_0/test/fuzztest/captureframe_fuzzer/BUILD.gn +++ b/hdf_service/distributed_audio/hdi_service/audio/v1_0/test/fuzztest/captureframe_fuzzer/BUILD.gn @@ -18,7 +18,7 @@ import("../../../../../../../../distributedaudio.gni") ##############################fuzztest########################################## ohos_fuzztest("CaptureFrameFuzzTest") { - module_out_path = "distributed_audio/captureframe_fuzzer" + module_out_path = "${distributedaudio_fuzz_path}/captureframe_fuzzer" fuzz_config_file = "${hdf_ser_aud_path}/test/fuzztest/captureframe_fuzzer" cflags = [ diff --git a/hdf_service/distributed_audio/hdi_service/audio/v1_0/test/fuzztest/createcapture_fuzzer/BUILD.gn b/hdf_service/distributed_audio/hdi_service/audio/v1_0/test/fuzztest/createcapture_fuzzer/BUILD.gn index bb6d543f..8a447c48 100644 --- a/hdf_service/distributed_audio/hdi_service/audio/v1_0/test/fuzztest/createcapture_fuzzer/BUILD.gn +++ b/hdf_service/distributed_audio/hdi_service/audio/v1_0/test/fuzztest/createcapture_fuzzer/BUILD.gn @@ -18,7 +18,7 @@ import("../../../../../../../../distributedaudio.gni") ##############################fuzztest########################################## ohos_fuzztest("CreateCaptureFuzzTest") { - module_out_path = "distributed_audio/createcapture_fuzzer" + module_out_path = "${distributedaudio_fuzz_path}/createcapture_fuzzer" fuzz_config_file = "${hdf_ser_aud_path}/test/fuzztest/createcapture_fuzzer" cflags = [ diff --git a/hdf_service/distributed_audio/hdi_service/audio/v1_0/test/fuzztest/createrender_fuzzer/BUILD.gn b/hdf_service/distributed_audio/hdi_service/audio/v1_0/test/fuzztest/createrender_fuzzer/BUILD.gn index 7638ff96..a80b2dd3 100644 --- a/hdf_service/distributed_audio/hdi_service/audio/v1_0/test/fuzztest/createrender_fuzzer/BUILD.gn +++ b/hdf_service/distributed_audio/hdi_service/audio/v1_0/test/fuzztest/createrender_fuzzer/BUILD.gn @@ -18,7 +18,7 @@ import("../../../../../../../../distributedaudio.gni") ##############################fuzztest########################################## ohos_fuzztest("CreateRenderFuzzTest") { - module_out_path = "distributed_audio/createrender_fuzzer" + module_out_path = "${distributedaudio_fuzz_path}/createrender_fuzzer" fuzz_config_file = "${hdf_ser_aud_path}/test/fuzztest/createrender_fuzzer" cflags = [ diff --git a/hdf_service/distributed_audio/hdi_service/audio/v1_0/test/fuzztest/destroycapture_fuzzer/BUILD.gn b/hdf_service/distributed_audio/hdi_service/audio/v1_0/test/fuzztest/destroycapture_fuzzer/BUILD.gn index 1c7bb928..a36e3ca6 100644 --- a/hdf_service/distributed_audio/hdi_service/audio/v1_0/test/fuzztest/destroycapture_fuzzer/BUILD.gn +++ b/hdf_service/distributed_audio/hdi_service/audio/v1_0/test/fuzztest/destroycapture_fuzzer/BUILD.gn @@ -18,7 +18,7 @@ import("../../../../../../../../distributedaudio.gni") ##############################fuzztest########################################## ohos_fuzztest("DestroyCaptureFuzzTest") { - module_out_path = "distributed_audio/destroycapture_fuzzer" + module_out_path = "${distributedaudio_fuzz_path}/destroycapture_fuzzer" fuzz_config_file = "${hdf_ser_aud_path}/test/fuzztest/destroycapture_fuzzer" cflags = [ diff --git a/hdf_service/distributed_audio/hdi_service/audio/v1_0/test/fuzztest/destroyrender_fuzzer/BUILD.gn b/hdf_service/distributed_audio/hdi_service/audio/v1_0/test/fuzztest/destroyrender_fuzzer/BUILD.gn index 7b56240f..d89604b0 100644 --- a/hdf_service/distributed_audio/hdi_service/audio/v1_0/test/fuzztest/destroyrender_fuzzer/BUILD.gn +++ b/hdf_service/distributed_audio/hdi_service/audio/v1_0/test/fuzztest/destroyrender_fuzzer/BUILD.gn @@ -18,7 +18,7 @@ import("../../../../../../../../distributedaudio.gni") ##############################fuzztest########################################## ohos_fuzztest("DestroyRenderFuzzTest") { - module_out_path = "distributed_audio/destroyrender_fuzzer" + module_out_path = "${distributedaudio_fuzz_path}/destroyrender_fuzzer" fuzz_config_file = "${hdf_ser_aud_path}/test/fuzztest/destroyrender_fuzzer" cflags = [ diff --git a/hdf_service/distributed_audio/hdi_service/audio/v1_0/test/fuzztest/getalladapters_fuzzer/BUILD.gn b/hdf_service/distributed_audio/hdi_service/audio/v1_0/test/fuzztest/getalladapters_fuzzer/BUILD.gn index 41db6f19..7452483e 100644 --- a/hdf_service/distributed_audio/hdi_service/audio/v1_0/test/fuzztest/getalladapters_fuzzer/BUILD.gn +++ b/hdf_service/distributed_audio/hdi_service/audio/v1_0/test/fuzztest/getalladapters_fuzzer/BUILD.gn @@ -18,7 +18,7 @@ import("../../../../../../../../distributedaudio.gni") ##############################fuzztest########################################## ohos_fuzztest("GetAllAdaptersFuzzTest") { - module_out_path = "distributed_audio/getalladapters_fuzzer" + module_out_path = "${distributedaudio_fuzz_path}/getalladapters_fuzzer" fuzz_config_file = "${hdf_ser_aud_path}/test/fuzztest/getalladapters_fuzzer" cflags = [ diff --git a/hdf_service/distributed_audio/hdi_service/audio/v1_0/test/fuzztest/getextraparams_fuzzer/BUILD.gn b/hdf_service/distributed_audio/hdi_service/audio/v1_0/test/fuzztest/getextraparams_fuzzer/BUILD.gn index f458e4e5..36ce96df 100644 --- a/hdf_service/distributed_audio/hdi_service/audio/v1_0/test/fuzztest/getextraparams_fuzzer/BUILD.gn +++ b/hdf_service/distributed_audio/hdi_service/audio/v1_0/test/fuzztest/getextraparams_fuzzer/BUILD.gn @@ -18,7 +18,7 @@ import("../../../../../../../../distributedaudio.gni") ##############################fuzztest########################################## ohos_fuzztest("GetExtraParamsFuzzTest") { - module_out_path = "distributed_audio/getextraparams_fuzzer" + module_out_path = "${distributedaudio_fuzz_path}/getextraparams_fuzzer" fuzz_config_file = "${hdf_ser_aud_path}/test/fuzztest/getextraparams_fuzzer" cflags = [ diff --git a/hdf_service/distributed_audio/hdi_service/audio/v1_0/test/fuzztest/loadadapter_fuzzer/BUILD.gn b/hdf_service/distributed_audio/hdi_service/audio/v1_0/test/fuzztest/loadadapter_fuzzer/BUILD.gn index 4200c0b2..1ae5fd52 100644 --- a/hdf_service/distributed_audio/hdi_service/audio/v1_0/test/fuzztest/loadadapter_fuzzer/BUILD.gn +++ b/hdf_service/distributed_audio/hdi_service/audio/v1_0/test/fuzztest/loadadapter_fuzzer/BUILD.gn @@ -18,7 +18,7 @@ import("../../../../../../../../distributedaudio.gni") ##############################fuzztest########################################## ohos_fuzztest("LoadAdapterFuzzTest") { - module_out_path = "distributed_audio/loadadapter_fuzzer" + module_out_path = "${distributedaudio_fuzz_path}/loadadapter_fuzzer" fuzz_config_file = "${hdf_ser_aud_path}/test/fuzztest/loadadapter_fuzzer" cflags = [ diff --git a/hdf_service/distributed_audio/hdi_service/audio/v1_0/test/fuzztest/renderframe_fuzzer/BUILD.gn b/hdf_service/distributed_audio/hdi_service/audio/v1_0/test/fuzztest/renderframe_fuzzer/BUILD.gn index 4c63ad9e..6931d768 100644 --- a/hdf_service/distributed_audio/hdi_service/audio/v1_0/test/fuzztest/renderframe_fuzzer/BUILD.gn +++ b/hdf_service/distributed_audio/hdi_service/audio/v1_0/test/fuzztest/renderframe_fuzzer/BUILD.gn @@ -18,7 +18,7 @@ import("../../../../../../../../distributedaudio.gni") ##############################fuzztest########################################## ohos_fuzztest("RenderFrameFuzzTest") { - module_out_path = "distributed_audio/renderframe_fuzzer" + module_out_path = "${distributedaudio_fuzz_path}/renderframe_fuzzer" fuzz_config_file = "${hdf_ser_aud_path}/test/fuzztest/renderframe_fuzzer" cflags = [ diff --git a/hdf_service/distributed_audio/hdi_service/audio/v1_0/test/fuzztest/setextraparams_fuzzer/BUILD.gn b/hdf_service/distributed_audio/hdi_service/audio/v1_0/test/fuzztest/setextraparams_fuzzer/BUILD.gn index ce3e5249..e9f951d5 100644 --- a/hdf_service/distributed_audio/hdi_service/audio/v1_0/test/fuzztest/setextraparams_fuzzer/BUILD.gn +++ b/hdf_service/distributed_audio/hdi_service/audio/v1_0/test/fuzztest/setextraparams_fuzzer/BUILD.gn @@ -18,7 +18,7 @@ import("../../../../../../../../distributedaudio.gni") ##############################fuzztest########################################## ohos_fuzztest("SetExtraParamsFuzzTest") { - module_out_path = "distributed_audio/setextraparams_fuzzer" + module_out_path = "${distributedaudio_fuzz_path}/setextraparams_fuzzer" fuzz_config_file = "${hdf_ser_aud_path}/test/fuzztest/setextraparams_fuzzer" cflags = [ diff --git a/hdf_service/distributed_audio/hdi_service/audio/v1_0/test/fuzztest/unloadadapter_fuzzer/BUILD.gn b/hdf_service/distributed_audio/hdi_service/audio/v1_0/test/fuzztest/unloadadapter_fuzzer/BUILD.gn index 4086a58c..cb86345a 100644 --- a/hdf_service/distributed_audio/hdi_service/audio/v1_0/test/fuzztest/unloadadapter_fuzzer/BUILD.gn +++ b/hdf_service/distributed_audio/hdi_service/audio/v1_0/test/fuzztest/unloadadapter_fuzzer/BUILD.gn @@ -18,7 +18,7 @@ import("../../../../../../../../distributedaudio.gni") ##############################fuzztest########################################## ohos_fuzztest("UnloadAdapterFuzzTest") { - module_out_path = "distributed_audio/unloadadapter_fuzzer" + module_out_path = "${distributedaudio_fuzz_path}/unloadadapter_fuzzer" fuzz_config_file = "${hdf_ser_aud_path}/test/fuzztest/unloadadapter_fuzzer" cflags = [ diff --git a/hdf_service/distributed_audio/hdi_service/audio_ext/v1_0/test/fuzztest/notifyevent_fuzzer/BUILD.gn b/hdf_service/distributed_audio/hdi_service/audio_ext/v1_0/test/fuzztest/notifyevent_fuzzer/BUILD.gn index 65a49d17..d790b565 100644 --- a/hdf_service/distributed_audio/hdi_service/audio_ext/v1_0/test/fuzztest/notifyevent_fuzzer/BUILD.gn +++ b/hdf_service/distributed_audio/hdi_service/audio_ext/v1_0/test/fuzztest/notifyevent_fuzzer/BUILD.gn @@ -18,7 +18,7 @@ import("../../../../../../../../distributedaudio.gni") ##############################fuzztest########################################## ohos_fuzztest("NotifyEventFuzzTest") { - module_out_path = "distributed_audio/notifyevent_fuzzer" + module_out_path = "${distributedaudio_fuzz_path}/notifyevent_fuzzer" fuzz_config_file = "${hdf_ser_aud_ext_path}/test/fuzztest/notifyevent_fuzzer" cflags = [ diff --git a/hdf_service/distributed_audio/hdi_service/audio_ext/v1_0/test/fuzztest/registeraudiodevice_fuzzer/BUILD.gn b/hdf_service/distributed_audio/hdi_service/audio_ext/v1_0/test/fuzztest/registeraudiodevice_fuzzer/BUILD.gn index 1c19630c..8d0f4724 100644 --- a/hdf_service/distributed_audio/hdi_service/audio_ext/v1_0/test/fuzztest/registeraudiodevice_fuzzer/BUILD.gn +++ b/hdf_service/distributed_audio/hdi_service/audio_ext/v1_0/test/fuzztest/registeraudiodevice_fuzzer/BUILD.gn @@ -18,7 +18,7 @@ import("../../../../../../../../distributedaudio.gni") ##############################fuzztest########################################## ohos_fuzztest("RegisterAudioDeviceFuzzTest") { - module_out_path = "distributed_audio/registeraudiodevice_fuzzer" + module_out_path = "${distributedaudio_fuzz_path}/registeraudiodevice_fuzzer" fuzz_config_file = "${hdf_ser_aud_ext_path}/test/fuzztest/registeraudiodevice_fuzzer" diff --git a/hdf_service/distributed_audio/hdi_service/audio_ext/v1_0/test/fuzztest/unregisteraudiodevice_fuzzer/BUILD.gn b/hdf_service/distributed_audio/hdi_service/audio_ext/v1_0/test/fuzztest/unregisteraudiodevice_fuzzer/BUILD.gn index 429c90ed..0cb4c330 100644 --- a/hdf_service/distributed_audio/hdi_service/audio_ext/v1_0/test/fuzztest/unregisteraudiodevice_fuzzer/BUILD.gn +++ b/hdf_service/distributed_audio/hdi_service/audio_ext/v1_0/test/fuzztest/unregisteraudiodevice_fuzzer/BUILD.gn @@ -18,7 +18,7 @@ import("../../../../../../../../distributedaudio.gni") ##############################fuzztest########################################## ohos_fuzztest("UnRegisterAudioDeviceFuzzTest") { - module_out_path = "distributed_audio/unregisteraudiodevice_fuzzer" + module_out_path = "${distributedaudio_fuzz_path}/unregisteraudiodevice_fuzzer" fuzz_config_file = "${hdf_ser_aud_ext_path}/test/fuzztest/unregisteraudiodevice_fuzzer" diff --git a/interfaces/inner_kits/native_cpp/test/fuzztest/onremotesinksvrdied_fuzzer/BUILD.gn b/interfaces/inner_kits/native_cpp/test/fuzztest/onremotesinksvrdied_fuzzer/BUILD.gn index 4d3a0fe4..ad55ca60 100755 --- a/interfaces/inner_kits/native_cpp/test/fuzztest/onremotesinksvrdied_fuzzer/BUILD.gn +++ b/interfaces/inner_kits/native_cpp/test/fuzztest/onremotesinksvrdied_fuzzer/BUILD.gn @@ -18,7 +18,7 @@ import("../../../../../../distributedaudio.gni") ##############################fuzztest########################################## ohos_fuzztest("OnRemoteSinkSvrDiedFuzzTest") { - module_out_path = "distributed_audio/onremotesinksvrdied" + module_out_path = "${distributedaudio_fuzz_path}/onremotesinksvrdied" fuzz_config_file = "${innerkits_path}/native_cpp/test/fuzztest/onremotesinksvrdied_fuzzer" diff --git a/interfaces/inner_kits/native_cpp/test/fuzztest/onremotesourcesvrdied_fuzzer/BUILD.gn b/interfaces/inner_kits/native_cpp/test/fuzztest/onremotesourcesvrdied_fuzzer/BUILD.gn index 5b811441..8dbdf65f 100755 --- a/interfaces/inner_kits/native_cpp/test/fuzztest/onremotesourcesvrdied_fuzzer/BUILD.gn +++ b/interfaces/inner_kits/native_cpp/test/fuzztest/onremotesourcesvrdied_fuzzer/BUILD.gn @@ -18,7 +18,7 @@ import("../../../../../../distributedaudio.gni") ##############################fuzztest########################################## ohos_fuzztest("OnRemoteSourceSvrDiedFuzzTest") { - module_out_path = "distributed_audio/onremotesourcesvrdied" + module_out_path = "${distributedaudio_fuzz_path}/onremotesourcesvrdied" fuzz_config_file = "${innerkits_path}/native_cpp/test/fuzztest/onremotesourcesvrdied_fuzzer" diff --git a/interfaces/inner_kits/native_cpp/test/fuzztest/sinkhandlerfinishstartsa_fuzzer/BUILD.gn b/interfaces/inner_kits/native_cpp/test/fuzztest/sinkhandlerfinishstartsa_fuzzer/BUILD.gn index 37e33567..adcebb67 100755 --- a/interfaces/inner_kits/native_cpp/test/fuzztest/sinkhandlerfinishstartsa_fuzzer/BUILD.gn +++ b/interfaces/inner_kits/native_cpp/test/fuzztest/sinkhandlerfinishstartsa_fuzzer/BUILD.gn @@ -18,7 +18,7 @@ import("../../../../../../distributedaudio.gni") ##############################fuzztest########################################## ohos_fuzztest("SinkHandlerFinishStartSAFuzzTest") { - module_out_path = "distributed_audio/sinkhandlerfinishstartsa" + module_out_path = "${distributedaudio_fuzz_path}/sinkhandlerfinishstartsa" fuzz_config_file = "${innerkits_path}/native_cpp/test/fuzztest/sinkhandlerfinishstartsa_fuzzer" cflags = [ diff --git a/interfaces/inner_kits/native_cpp/test/fuzztest/sinkhandlerinitsink_fuzzer/BUILD.gn b/interfaces/inner_kits/native_cpp/test/fuzztest/sinkhandlerinitsink_fuzzer/BUILD.gn index 408b773f..bf05e340 100755 --- a/interfaces/inner_kits/native_cpp/test/fuzztest/sinkhandlerinitsink_fuzzer/BUILD.gn +++ b/interfaces/inner_kits/native_cpp/test/fuzztest/sinkhandlerinitsink_fuzzer/BUILD.gn @@ -18,7 +18,7 @@ import("../../../../../../distributedaudio.gni") ##############################fuzztest########################################## ohos_fuzztest("SinkHandlerInitSinkFuzzTest") { - module_out_path = "distributed_audio/sinkhandlerinitsink" + module_out_path = "${distributedaudio_fuzz_path}/sinkhandlerinitsink" fuzz_config_file = "${innerkits_path}/native_cpp/test/fuzztest/sinkhandlerinitsink_fuzzer" diff --git a/interfaces/inner_kits/native_cpp/test/fuzztest/sinkhandlersubscribelocalhardware_fuzzer/BUILD.gn b/interfaces/inner_kits/native_cpp/test/fuzztest/sinkhandlersubscribelocalhardware_fuzzer/BUILD.gn index 929a4d0b..2b6dc2b6 100755 --- a/interfaces/inner_kits/native_cpp/test/fuzztest/sinkhandlersubscribelocalhardware_fuzzer/BUILD.gn +++ b/interfaces/inner_kits/native_cpp/test/fuzztest/sinkhandlersubscribelocalhardware_fuzzer/BUILD.gn @@ -18,7 +18,8 @@ import("../../../../../../distributedaudio.gni") ##############################fuzztest########################################## ohos_fuzztest("SinkHandlerSubscribeLocalHardwareFuzzTest") { - module_out_path = "distributed_audio/sinkhandlersubscribelocalhardware" + module_out_path = + "${distributedaudio_fuzz_path}/sinkhandlersubscribelocalhardware" fuzz_config_file = "${innerkits_path}/native_cpp/test/fuzztest/sinkhandlersubscribelocalhardware_fuzzer" cflags = [ diff --git a/interfaces/inner_kits/native_cpp/test/fuzztest/sinkhandlerunsubscribelocalhardware_fuzzer/BUILD.gn b/interfaces/inner_kits/native_cpp/test/fuzztest/sinkhandlerunsubscribelocalhardware_fuzzer/BUILD.gn index 39cf7a4c..ff36b408 100755 --- a/interfaces/inner_kits/native_cpp/test/fuzztest/sinkhandlerunsubscribelocalhardware_fuzzer/BUILD.gn +++ b/interfaces/inner_kits/native_cpp/test/fuzztest/sinkhandlerunsubscribelocalhardware_fuzzer/BUILD.gn @@ -18,7 +18,8 @@ import("../../../../../../distributedaudio.gni") ##############################fuzztest########################################## ohos_fuzztest("SinkHandlerUnsubscribeLocalHardwareFuzzTest") { - module_out_path = "distributed_audio/sinkhandlerunsubscribelocalhardware" + module_out_path = + "${distributedaudio_fuzz_path}/sinkhandlerunsubscribelocalhardware" fuzz_config_file = "${innerkits_path}/native_cpp/test/fuzztest/sinkhandlerunsubscribelocalhardware_fuzzer" cflags = [ diff --git a/interfaces/inner_kits/native_cpp/test/fuzztest/sinkonloadsystemabilityfail_fuzzer/BUILD.gn b/interfaces/inner_kits/native_cpp/test/fuzztest/sinkonloadsystemabilityfail_fuzzer/BUILD.gn index b9ef3e3d..dcdf3f88 100755 --- a/interfaces/inner_kits/native_cpp/test/fuzztest/sinkonloadsystemabilityfail_fuzzer/BUILD.gn +++ b/interfaces/inner_kits/native_cpp/test/fuzztest/sinkonloadsystemabilityfail_fuzzer/BUILD.gn @@ -18,7 +18,7 @@ import("../../../../../../distributedaudio.gni") ##############################fuzztest########################################## ohos_fuzztest("SinkOnLoadSystemAbilityFailFuzzTest") { - module_out_path = "distributed_audio/sinkonloadsystemabilityfail" + module_out_path = "${distributedaudio_fuzz_path}/sinkonloadsystemabilityfail" fuzz_config_file = "${innerkits_path}/native_cpp/test/fuzztest/sinkonloadsystemabilityfail_fuzzer" cflags = [ diff --git a/interfaces/inner_kits/native_cpp/test/fuzztest/sinkonloadsystemabilitysuccess_fuzzer/BUILD.gn b/interfaces/inner_kits/native_cpp/test/fuzztest/sinkonloadsystemabilitysuccess_fuzzer/BUILD.gn index f28ada6f..2fa40a62 100755 --- a/interfaces/inner_kits/native_cpp/test/fuzztest/sinkonloadsystemabilitysuccess_fuzzer/BUILD.gn +++ b/interfaces/inner_kits/native_cpp/test/fuzztest/sinkonloadsystemabilitysuccess_fuzzer/BUILD.gn @@ -18,7 +18,8 @@ import("../../../../../../distributedaudio.gni") ##############################fuzztest########################################## ohos_fuzztest("SinkOnLoadSystemAbilitySuccessFuzzTest") { - module_out_path = "distributed_audio/sinkonloadsystemabilitysuccess" + module_out_path = + "${distributedaudio_fuzz_path}/sinkonloadsystemabilitysuccess" fuzz_config_file = "${innerkits_path}/native_cpp/test/fuzztest/sinkonloadsystemabilitysuccess_fuzzer" cflags = [ diff --git a/interfaces/inner_kits/native_cpp/test/fuzztest/sinkproxydaudionotify_fuzzer/BUILD.gn b/interfaces/inner_kits/native_cpp/test/fuzztest/sinkproxydaudionotify_fuzzer/BUILD.gn index a185325c..aad75dab 100755 --- a/interfaces/inner_kits/native_cpp/test/fuzztest/sinkproxydaudionotify_fuzzer/BUILD.gn +++ b/interfaces/inner_kits/native_cpp/test/fuzztest/sinkproxydaudionotify_fuzzer/BUILD.gn @@ -18,7 +18,7 @@ import("../../../../../../distributedaudio.gni") ##############################fuzztest########################################## ohos_fuzztest("SinkProxyDAudioNotifyFuzzTest") { - module_out_path = "distributed_audio/sinkproxydaudionotify" + module_out_path = "${distributedaudio_fuzz_path}/sinkproxydaudionotify" fuzz_config_file = "${innerkits_path}/native_cpp/test/fuzztest/sinkproxydaudionotify_fuzzer" diff --git a/interfaces/inner_kits/native_cpp/test/fuzztest/sinkproxyinitsink_fuzzer/BUILD.gn b/interfaces/inner_kits/native_cpp/test/fuzztest/sinkproxyinitsink_fuzzer/BUILD.gn index 4a8b1298..a45b3f12 100755 --- a/interfaces/inner_kits/native_cpp/test/fuzztest/sinkproxyinitsink_fuzzer/BUILD.gn +++ b/interfaces/inner_kits/native_cpp/test/fuzztest/sinkproxyinitsink_fuzzer/BUILD.gn @@ -18,7 +18,7 @@ import("../../../../../../distributedaudio.gni") ##############################fuzztest########################################## ohos_fuzztest("SinkProxyInitSinkFuzzTest") { - module_out_path = "distributed_audio/sinkproxyinitsink" + module_out_path = "${distributedaudio_fuzz_path}/sinkproxyinitsink" fuzz_config_file = "${innerkits_path}/native_cpp/test/fuzztest/sinkproxyinitsink_fuzzer" diff --git a/interfaces/inner_kits/native_cpp/test/fuzztest/sinkproxysubscribelocalhardware_fuzzer/BUILD.gn b/interfaces/inner_kits/native_cpp/test/fuzztest/sinkproxysubscribelocalhardware_fuzzer/BUILD.gn index 1bb9fbcb..58299f32 100755 --- a/interfaces/inner_kits/native_cpp/test/fuzztest/sinkproxysubscribelocalhardware_fuzzer/BUILD.gn +++ b/interfaces/inner_kits/native_cpp/test/fuzztest/sinkproxysubscribelocalhardware_fuzzer/BUILD.gn @@ -18,7 +18,8 @@ import("../../../../../../distributedaudio.gni") ##############################fuzztest########################################## ohos_fuzztest("SinkProxySubscribeLocalHardwareFuzzTest") { - module_out_path = "distributed_audio/sinkproxysubscribelocalhardware" + module_out_path = + "${distributedaudio_fuzz_path}/sinkproxysubscribelocalhardware" fuzz_config_file = "${innerkits_path}/native_cpp/test/fuzztest/sinkproxysubscribelocalhardware_fuzzer" cflags = [ diff --git a/interfaces/inner_kits/native_cpp/test/fuzztest/sinkproxyunsubscribelocalhardware_fuzzer/BUILD.gn b/interfaces/inner_kits/native_cpp/test/fuzztest/sinkproxyunsubscribelocalhardware_fuzzer/BUILD.gn index 474b0f86..215f659d 100755 --- a/interfaces/inner_kits/native_cpp/test/fuzztest/sinkproxyunsubscribelocalhardware_fuzzer/BUILD.gn +++ b/interfaces/inner_kits/native_cpp/test/fuzztest/sinkproxyunsubscribelocalhardware_fuzzer/BUILD.gn @@ -18,7 +18,8 @@ import("../../../../../../distributedaudio.gni") ##############################fuzztest########################################## ohos_fuzztest("SinkProxyUnsubscribeLocalHardwareFuzzTest") { - module_out_path = "distributed_audio/sinkproxyunsubscribelocalhardware" + module_out_path = + "${distributedaudio_fuzz_path}/sinkproxyunsubscribelocalhardware" fuzz_config_file = "${innerkits_path}/native_cpp/test/fuzztest/sinkproxyunsubscribelocalhardware_fuzzer" cflags = [ diff --git a/interfaces/inner_kits/native_cpp/test/fuzztest/sourcehandlerconfigdistributedhardware_fuzzer/BUILD.gn b/interfaces/inner_kits/native_cpp/test/fuzztest/sourcehandlerconfigdistributedhardware_fuzzer/BUILD.gn index 8871b186..85ab060a 100755 --- a/interfaces/inner_kits/native_cpp/test/fuzztest/sourcehandlerconfigdistributedhardware_fuzzer/BUILD.gn +++ b/interfaces/inner_kits/native_cpp/test/fuzztest/sourcehandlerconfigdistributedhardware_fuzzer/BUILD.gn @@ -18,7 +18,8 @@ import("../../../../../../distributedaudio.gni") ##############################fuzztest########################################## ohos_fuzztest("SourceHandlerConfigDistributedHardwareFuzzTest") { - module_out_path = "distributed_audio/sourcehandlerconfigdistributedhardware" + module_out_path = + "${distributedaudio_fuzz_path}/sourcehandlerconfigdistributedhardware" fuzz_config_file = "${innerkits_path}/native_cpp/test/fuzztest/sourcehandlerconfigdistributedhardware_fuzzer" cflags = [ diff --git a/interfaces/inner_kits/native_cpp/test/fuzztest/sourcehandlerfinishstartsa_fuzzer/BUILD.gn b/interfaces/inner_kits/native_cpp/test/fuzztest/sourcehandlerfinishstartsa_fuzzer/BUILD.gn index 44efd046..bc7b3b00 100755 --- a/interfaces/inner_kits/native_cpp/test/fuzztest/sourcehandlerfinishstartsa_fuzzer/BUILD.gn +++ b/interfaces/inner_kits/native_cpp/test/fuzztest/sourcehandlerfinishstartsa_fuzzer/BUILD.gn @@ -18,7 +18,7 @@ import("../../../../../../distributedaudio.gni") ##############################fuzztest########################################## ohos_fuzztest("SourceHandlerFinishStartSAFuzzTest") { - module_out_path = "distributed_audio/sourcehandlerfinishstartsa" + module_out_path = "${distributedaudio_fuzz_path}/sourcehandlerfinishstartsa" fuzz_config_file = "${innerkits_path}/native_cpp/test/fuzztest/sourcehandlerfinishstartsa_fuzzer" cflags = [ diff --git a/interfaces/inner_kits/native_cpp/test/fuzztest/sourcehandlerinitsource_fuzzer/BUILD.gn b/interfaces/inner_kits/native_cpp/test/fuzztest/sourcehandlerinitsource_fuzzer/BUILD.gn index 34200f70..e6ef4e17 100755 --- a/interfaces/inner_kits/native_cpp/test/fuzztest/sourcehandlerinitsource_fuzzer/BUILD.gn +++ b/interfaces/inner_kits/native_cpp/test/fuzztest/sourcehandlerinitsource_fuzzer/BUILD.gn @@ -18,7 +18,7 @@ import("../../../../../../distributedaudio.gni") ##############################fuzztest########################################## ohos_fuzztest("SourceHandlerInitSourceFuzzTest") { - module_out_path = "distributed_audio/sourcehandlerinitsource" + module_out_path = "${distributedaudio_fuzz_path}/sourcehandlerinitsource" fuzz_config_file = "${innerkits_path}/native_cpp/test/fuzztest/sourcehandlerinitsource_fuzzer" cflags = [ diff --git a/interfaces/inner_kits/native_cpp/test/fuzztest/sourcehandlerregisterdistributedhardware_fuzzer/BUILD.gn b/interfaces/inner_kits/native_cpp/test/fuzztest/sourcehandlerregisterdistributedhardware_fuzzer/BUILD.gn index 073c3393..ad7dbe68 100755 --- a/interfaces/inner_kits/native_cpp/test/fuzztest/sourcehandlerregisterdistributedhardware_fuzzer/BUILD.gn +++ b/interfaces/inner_kits/native_cpp/test/fuzztest/sourcehandlerregisterdistributedhardware_fuzzer/BUILD.gn @@ -18,7 +18,8 @@ import("../../../../../../distributedaudio.gni") ##############################fuzztest########################################## ohos_fuzztest("SourceHandlerRegisterDistributedHardwareFuzzTest") { - module_out_path = "distributed_audio/sourcehandlerregisterdistributedhardware" + module_out_path = + "${distributedaudio_fuzz_path}/sourcehandlerregisterdistributedhardware" fuzz_config_file = "${innerkits_path}/native_cpp/test/fuzztest/sourcehandlerregisterdistributedhardware_fuzzer" cflags = [ diff --git a/interfaces/inner_kits/native_cpp/test/fuzztest/sourcehandlerunregisterdistributedhardware_fuzzer/BUILD.gn b/interfaces/inner_kits/native_cpp/test/fuzztest/sourcehandlerunregisterdistributedhardware_fuzzer/BUILD.gn index 9e16e368..648c5812 100755 --- a/interfaces/inner_kits/native_cpp/test/fuzztest/sourcehandlerunregisterdistributedhardware_fuzzer/BUILD.gn +++ b/interfaces/inner_kits/native_cpp/test/fuzztest/sourcehandlerunregisterdistributedhardware_fuzzer/BUILD.gn @@ -19,7 +19,7 @@ import("../../../../../../distributedaudio.gni") ##############################fuzztest########################################## ohos_fuzztest("SourceHandlerUnregisterDistributedHardwareFuzzTest") { module_out_path = - "distributed_audio/sourcehandlerunregisterdistributedhardware" + "${distributedaudio_fuzz_path}/sourcehandlerunregisterdistributedhardware" fuzz_config_file = "${innerkits_path}/native_cpp/test/fuzztest/sourcehandlerunregisterdistributedhardware_fuzzer" cflags = [ diff --git a/interfaces/inner_kits/native_cpp/test/fuzztest/sourceipccallbackonnotifyregresult_fuzzer/BUILD.gn b/interfaces/inner_kits/native_cpp/test/fuzztest/sourceipccallbackonnotifyregresult_fuzzer/BUILD.gn index fdd640b3..7662fb74 100755 --- a/interfaces/inner_kits/native_cpp/test/fuzztest/sourceipccallbackonnotifyregresult_fuzzer/BUILD.gn +++ b/interfaces/inner_kits/native_cpp/test/fuzztest/sourceipccallbackonnotifyregresult_fuzzer/BUILD.gn @@ -18,7 +18,8 @@ import("../../../../../../distributedaudio.gni") ##############################fuzztest########################################## ohos_fuzztest("SourceIpcCallbackOnNotifyRegResultFuzzTest") { - module_out_path = "distributed_audio/sourceipccallbackonnotifyregresult" + module_out_path = + "${distributedaudio_fuzz_path}/sourceipccallbackonnotifyregresult" fuzz_config_file = "${innerkits_path}/native_cpp/test/fuzztest/sourceipccallbackonnotifyregresult_fuzzer" cflags = [ diff --git a/interfaces/inner_kits/native_cpp/test/fuzztest/sourceipccallbackonnotifyunregresult_fuzzer/BUILD.gn b/interfaces/inner_kits/native_cpp/test/fuzztest/sourceipccallbackonnotifyunregresult_fuzzer/BUILD.gn index 36266829..f2809b12 100755 --- a/interfaces/inner_kits/native_cpp/test/fuzztest/sourceipccallbackonnotifyunregresult_fuzzer/BUILD.gn +++ b/interfaces/inner_kits/native_cpp/test/fuzztest/sourceipccallbackonnotifyunregresult_fuzzer/BUILD.gn @@ -18,7 +18,8 @@ import("../../../../../../distributedaudio.gni") ##############################fuzztest########################################## ohos_fuzztest("SourceIpcCallbackOnNotifyUnregResultFuzzTest") { - module_out_path = "distributed_audio/sourceipccallbackonnotifyunregresult" + module_out_path = + "${distributedaudio_fuzz_path}/sourceipccallbackonnotifyunregresult" fuzz_config_file = "${innerkits_path}/native_cpp/test/fuzztest/sourceipccallbackonnotifyunregresult_fuzzer" cflags = [ diff --git a/interfaces/inner_kits/native_cpp/test/fuzztest/sourceonloadsystemabilityfail_fuzzer/BUILD.gn b/interfaces/inner_kits/native_cpp/test/fuzztest/sourceonloadsystemabilityfail_fuzzer/BUILD.gn index c65e84ba..6774d3f8 100755 --- a/interfaces/inner_kits/native_cpp/test/fuzztest/sourceonloadsystemabilityfail_fuzzer/BUILD.gn +++ b/interfaces/inner_kits/native_cpp/test/fuzztest/sourceonloadsystemabilityfail_fuzzer/BUILD.gn @@ -18,7 +18,8 @@ import("../../../../../../distributedaudio.gni") ##############################fuzztest########################################## ohos_fuzztest("SourceOnLoadSystemAbilityFailFuzzTest") { - module_out_path = "distributed_audio/sourceonloadsystemabilityfail" + module_out_path = + "${distributedaudio_fuzz_path}/sourceonloadsystemabilityfail" fuzz_config_file = "${innerkits_path}/native_cpp/test/fuzztest/sourceonloadsystemabilityfail_fuzzer" cflags = [ diff --git a/interfaces/inner_kits/native_cpp/test/fuzztest/sourceonloadsystemabilitysuccess_fuzzer/BUILD.gn b/interfaces/inner_kits/native_cpp/test/fuzztest/sourceonloadsystemabilitysuccess_fuzzer/BUILD.gn index feea7683..36165a23 100755 --- a/interfaces/inner_kits/native_cpp/test/fuzztest/sourceonloadsystemabilitysuccess_fuzzer/BUILD.gn +++ b/interfaces/inner_kits/native_cpp/test/fuzztest/sourceonloadsystemabilitysuccess_fuzzer/BUILD.gn @@ -18,7 +18,8 @@ import("../../../../../../distributedaudio.gni") ##############################fuzztest########################################## ohos_fuzztest("SourceOnLoadSystemAbilitySuccessFuzzTest") { - module_out_path = "distributed_audio/sourceonloadsystemabilitysuccess" + module_out_path = + "${distributedaudio_fuzz_path}/sourceonloadsystemabilitysuccess" fuzz_config_file = "${innerkits_path}/native_cpp/test/fuzztest/sourceonloadsystemabilitysuccess_fuzzer" cflags = [ diff --git a/interfaces/inner_kits/native_cpp/test/fuzztest/sourceproxyconfigdistributedhardware_fuzzer/BUILD.gn b/interfaces/inner_kits/native_cpp/test/fuzztest/sourceproxyconfigdistributedhardware_fuzzer/BUILD.gn index 2270ad20..b76999fb 100755 --- a/interfaces/inner_kits/native_cpp/test/fuzztest/sourceproxyconfigdistributedhardware_fuzzer/BUILD.gn +++ b/interfaces/inner_kits/native_cpp/test/fuzztest/sourceproxyconfigdistributedhardware_fuzzer/BUILD.gn @@ -18,7 +18,8 @@ import("../../../../../../distributedaudio.gni") ##############################fuzztest########################################## ohos_fuzztest("SourceProxyConfigDistributedHardwareFuzzTest") { - module_out_path = "distributed_audio/sourceproxyconfigdistributedhardware" + module_out_path = + "${distributedaudio_fuzz_path}/sourceproxyconfigdistributedhardware" fuzz_config_file = "${innerkits_path}/native_cpp/test/fuzztest/sourceproxyconfigdistributedhardware_fuzzer" cflags = [ diff --git a/interfaces/inner_kits/native_cpp/test/fuzztest/sourceproxydaudionotify_fuzzer/BUILD.gn b/interfaces/inner_kits/native_cpp/test/fuzztest/sourceproxydaudionotify_fuzzer/BUILD.gn index 8f4c0eed..bca45d2b 100755 --- a/interfaces/inner_kits/native_cpp/test/fuzztest/sourceproxydaudionotify_fuzzer/BUILD.gn +++ b/interfaces/inner_kits/native_cpp/test/fuzztest/sourceproxydaudionotify_fuzzer/BUILD.gn @@ -18,7 +18,7 @@ import("../../../../../../distributedaudio.gni") ##############################fuzztest########################################## ohos_fuzztest("SourceProxyDAudioNotifyFuzzTest") { - module_out_path = "distributed_audio/sourceproxydaudionotify" + module_out_path = "${distributedaudio_fuzz_path}/sourceproxydaudionotify" fuzz_config_file = "${innerkits_path}/native_cpp/test/fuzztest/sourceproxydaudionotify_fuzzer" cflags = [ diff --git a/interfaces/inner_kits/native_cpp/test/fuzztest/sourceproxyinitsource_fuzzer/BUILD.gn b/interfaces/inner_kits/native_cpp/test/fuzztest/sourceproxyinitsource_fuzzer/BUILD.gn index 15b61b40..c5ecc8d6 100755 --- a/interfaces/inner_kits/native_cpp/test/fuzztest/sourceproxyinitsource_fuzzer/BUILD.gn +++ b/interfaces/inner_kits/native_cpp/test/fuzztest/sourceproxyinitsource_fuzzer/BUILD.gn @@ -18,7 +18,7 @@ import("../../../../../../distributedaudio.gni") ##############################fuzztest########################################## ohos_fuzztest("SourceProxyInitSourceFuzzTest") { - module_out_path = "distributed_audio/sourceproxyinitsource" + module_out_path = "${distributedaudio_fuzz_path}/sourceproxyinitsource" fuzz_config_file = "${innerkits_path}/native_cpp/test/fuzztest/sourceproxyinitsource_fuzzer" diff --git a/interfaces/inner_kits/native_cpp/test/fuzztest/sourceproxyregisterdistributedhardware_fuzzer/BUILD.gn b/interfaces/inner_kits/native_cpp/test/fuzztest/sourceproxyregisterdistributedhardware_fuzzer/BUILD.gn index 78671f57..3f7d8fb2 100755 --- a/interfaces/inner_kits/native_cpp/test/fuzztest/sourceproxyregisterdistributedhardware_fuzzer/BUILD.gn +++ b/interfaces/inner_kits/native_cpp/test/fuzztest/sourceproxyregisterdistributedhardware_fuzzer/BUILD.gn @@ -18,7 +18,8 @@ import("../../../../../../distributedaudio.gni") ##############################fuzztest########################################## ohos_fuzztest("SourceProxyRegisterDistributedHardwareFuzzTest") { - module_out_path = "distributed_audio/sourceproxyregisterdistributedhardware" + module_out_path = + "${distributedaudio_fuzz_path}/sourceproxyregisterdistributedhardware" fuzz_config_file = "${innerkits_path}/native_cpp/test/fuzztest/sourceproxyregisterdistributedhardware_fuzzer" cflags = [ diff --git a/interfaces/inner_kits/native_cpp/test/fuzztest/sourceproxyunregisterdistributedhardware_fuzzer/BUILD.gn b/interfaces/inner_kits/native_cpp/test/fuzztest/sourceproxyunregisterdistributedhardware_fuzzer/BUILD.gn index 9fb1a545..cdcb888c 100755 --- a/interfaces/inner_kits/native_cpp/test/fuzztest/sourceproxyunregisterdistributedhardware_fuzzer/BUILD.gn +++ b/interfaces/inner_kits/native_cpp/test/fuzztest/sourceproxyunregisterdistributedhardware_fuzzer/BUILD.gn @@ -18,7 +18,8 @@ import("../../../../../../distributedaudio.gni") ##############################fuzztest########################################## ohos_fuzztest("SourceProxyUnregisterDistributedHardwareFuzzTest") { - module_out_path = "distributed_audio/sourceproxyunregisterdistributedhardware" + module_out_path = + "${distributedaudio_fuzz_path}/sourceproxyunregisterdistributedhardware" fuzz_config_file = "${innerkits_path}/native_cpp/test/fuzztest/sourceproxyunregisterdistributedhardware_fuzzer" cflags = [ diff --git a/services/audiomanager/test/fuzztest/sinkservicedaudionotify_fuzzer/BUILD.gn b/services/audiomanager/test/fuzztest/sinkservicedaudionotify_fuzzer/BUILD.gn index a5633fc7..e732427e 100644 --- a/services/audiomanager/test/fuzztest/sinkservicedaudionotify_fuzzer/BUILD.gn +++ b/services/audiomanager/test/fuzztest/sinkservicedaudionotify_fuzzer/BUILD.gn @@ -18,7 +18,8 @@ import("../../../../../distributedaudio.gni") ##############################fuzztest########################################## ohos_fuzztest("SinkServiceDAudioNotifyFuzzTest") { - module_out_path = "distributed_audio/sinkservicedaudionotify_fuzzer" + module_out_path = + "${distributedaudio_fuzz_path}/sinkservicedaudionotify_fuzzer" fuzz_config_file = "${services_path}/audiomanager/test/fuzztest/sinkservicedaudionotify_fuzzer" cflags = [ diff --git a/services/audiomanager/test/fuzztest/sinkserviceinitsink_fuzzer/BUILD.gn b/services/audiomanager/test/fuzztest/sinkserviceinitsink_fuzzer/BUILD.gn index 752c69d7..a8a8ff45 100644 --- a/services/audiomanager/test/fuzztest/sinkserviceinitsink_fuzzer/BUILD.gn +++ b/services/audiomanager/test/fuzztest/sinkserviceinitsink_fuzzer/BUILD.gn @@ -18,7 +18,7 @@ import("../../../../../distributedaudio.gni") ##############################fuzztest########################################## ohos_fuzztest("SinkServiceInitSinkFuzzTest") { - module_out_path = "distributed_audio/sinkserviceinitsink_fuzzer" + module_out_path = "${distributedaudio_fuzz_path}/sinkserviceinitsink_fuzzer" fuzz_config_file = "${services_path}/audiomanager/test/fuzztest/sinkserviceinitsink_fuzzer" diff --git a/services/audiomanager/test/fuzztest/sinkservicereleasesink_fuzzer/BUILD.gn b/services/audiomanager/test/fuzztest/sinkservicereleasesink_fuzzer/BUILD.gn index ef1cfd28..885f6902 100644 --- a/services/audiomanager/test/fuzztest/sinkservicereleasesink_fuzzer/BUILD.gn +++ b/services/audiomanager/test/fuzztest/sinkservicereleasesink_fuzzer/BUILD.gn @@ -18,7 +18,8 @@ import("../../../../../distributedaudio.gni") ##############################fuzztest########################################## ohos_fuzztest("SinkServiceReleaseSinkFuzzTest") { - module_out_path = "distributed_audio/sinkservicereleasesink_fuzzer" + module_out_path = + "${distributedaudio_fuzz_path}/sinkservicereleasesink_fuzzer" fuzz_config_file = "${services_path}/audiomanager/test/fuzztest/sinkservicereleasesink_fuzzer" cflags = [ diff --git a/services/audiomanager/test/fuzztest/sinkservicesubscribelocalhardware_fuzzer/BUILD.gn b/services/audiomanager/test/fuzztest/sinkservicesubscribelocalhardware_fuzzer/BUILD.gn index c1e4053f..79a9e4ef 100644 --- a/services/audiomanager/test/fuzztest/sinkservicesubscribelocalhardware_fuzzer/BUILD.gn +++ b/services/audiomanager/test/fuzztest/sinkservicesubscribelocalhardware_fuzzer/BUILD.gn @@ -18,7 +18,8 @@ import("../../../../../distributedaudio.gni") ##############################fuzztest########################################## ohos_fuzztest("SinkServiceSubscribeLocalHardwareFuzzTest") { - module_out_path = "distributed_audio/sinkservicesubscribelocalhardware_fuzzer" + module_out_path = + "${distributedaudio_fuzz_path}/sinkservicesubscribelocalhardware_fuzzer" fuzz_config_file = "${services_path}/audiomanager/test/fuzztest/sinkservicesubscribelocalhardware_fuzzer" cflags = [ diff --git a/services/audiomanager/test/fuzztest/sinkserviceunsubscribelocalhardware_fuzzer/BUILD.gn b/services/audiomanager/test/fuzztest/sinkserviceunsubscribelocalhardware_fuzzer/BUILD.gn index 6df43eab..9b806431 100644 --- a/services/audiomanager/test/fuzztest/sinkserviceunsubscribelocalhardware_fuzzer/BUILD.gn +++ b/services/audiomanager/test/fuzztest/sinkserviceunsubscribelocalhardware_fuzzer/BUILD.gn @@ -19,7 +19,7 @@ import("../../../../../distributedaudio.gni") ##############################fuzztest########################################## ohos_fuzztest("SinkServiceUnSubscribeLocalHardwareFuzzTest") { module_out_path = - "distributed_audio/sinkserviceunsubscribelocalhardware_fuzzer" + "${distributedaudio_fuzz_path}/sinkserviceunsubscribelocalhardware_fuzzer" fuzz_config_file = "${services_path}/audiomanager/test/fuzztest/sinkserviceunsubscribelocalhardware_fuzzer" cflags = [ diff --git a/services/audiomanager/test/fuzztest/sourceservicedaudionotify_fuzzer/BUILD.gn b/services/audiomanager/test/fuzztest/sourceservicedaudionotify_fuzzer/BUILD.gn index 7025331c..33f09616 100644 --- a/services/audiomanager/test/fuzztest/sourceservicedaudionotify_fuzzer/BUILD.gn +++ b/services/audiomanager/test/fuzztest/sourceservicedaudionotify_fuzzer/BUILD.gn @@ -18,7 +18,8 @@ import("../../../../../distributedaudio.gni") ##############################fuzztest########################################## ohos_fuzztest("SourceServiceDAudioNotifyFuzzTest") { - module_out_path = "distributed_audio/sourceservicedaudionotify_fuzzer" + module_out_path = + "${distributedaudio_fuzz_path}/sourceservicedaudionotify_fuzzer" fuzz_config_file = "${services_path}/audiomanager/test/fuzztest/sourceservicedaudionotify_fuzzer" cflags = [ diff --git a/services/audiomanager/test/fuzztest/sourceserviceinitsource_fuzzer/BUILD.gn b/services/audiomanager/test/fuzztest/sourceserviceinitsource_fuzzer/BUILD.gn index c5c3c9c7..8aaa7d14 100644 --- a/services/audiomanager/test/fuzztest/sourceserviceinitsource_fuzzer/BUILD.gn +++ b/services/audiomanager/test/fuzztest/sourceserviceinitsource_fuzzer/BUILD.gn @@ -18,7 +18,8 @@ import("../../../../../distributedaudio.gni") ##############################fuzztest########################################## ohos_fuzztest("SourceServiceInitSourceFuzzTest") { - module_out_path = "distributed_audio/sourceserviceinitsource_fuzzer" + module_out_path = + "${distributedaudio_fuzz_path}/sourceserviceinitsource_fuzzer" fuzz_config_file = "${services_path}/audiomanager/test/fuzztest/sourceserviceinitsource_fuzzer" cflags = [ diff --git a/services/audiomanager/test/fuzztest/sourceserviceregisterdistributedhardware_fuzzer/BUILD.gn b/services/audiomanager/test/fuzztest/sourceserviceregisterdistributedhardware_fuzzer/BUILD.gn index 0c6124ba..d06f9777 100644 --- a/services/audiomanager/test/fuzztest/sourceserviceregisterdistributedhardware_fuzzer/BUILD.gn +++ b/services/audiomanager/test/fuzztest/sourceserviceregisterdistributedhardware_fuzzer/BUILD.gn @@ -18,8 +18,7 @@ import("../../../../../distributedaudio.gni") ##############################fuzztest########################################## ohos_fuzztest("SourceServiceRegisterDistributedHardwareFuzzTest") { - module_out_path = - "distributed_audio/sourceserviceregisterdistributedhardware_fuzzer" + module_out_path = "${distributedaudio_fuzz_path}/sourceserviceregisterdistributedhardware_fuzzer" fuzz_config_file = "${services_path}/audiomanager/test/fuzztest/sourceserviceregisterdistributedhardware_fuzzer" cflags = [ diff --git a/services/audiomanager/test/fuzztest/sourceservicereleasesource_fuzzer/BUILD.gn b/services/audiomanager/test/fuzztest/sourceservicereleasesource_fuzzer/BUILD.gn index aa95099b..0e5788b5 100644 --- a/services/audiomanager/test/fuzztest/sourceservicereleasesource_fuzzer/BUILD.gn +++ b/services/audiomanager/test/fuzztest/sourceservicereleasesource_fuzzer/BUILD.gn @@ -18,7 +18,8 @@ import("../../../../../distributedaudio.gni") ##############################fuzztest########################################## ohos_fuzztest("SourceServiceReleaseSourceFuzzTest") { - module_out_path = "distributed_audio/sourceservicereleasesource_fuzzer" + module_out_path = + "${distributedaudio_fuzz_path}/sourceservicereleasesource_fuzzer" fuzz_config_file = "${services_path}/audiomanager/test/fuzztest/sourceservicereleasesource_fuzzer" cflags = [ diff --git a/services/audiomanager/test/fuzztest/sourceserviceunregisterdistributedhardware_fuzzer/BUILD.gn b/services/audiomanager/test/fuzztest/sourceserviceunregisterdistributedhardware_fuzzer/BUILD.gn index 64945e81..f3e3f75f 100644 --- a/services/audiomanager/test/fuzztest/sourceserviceunregisterdistributedhardware_fuzzer/BUILD.gn +++ b/services/audiomanager/test/fuzztest/sourceserviceunregisterdistributedhardware_fuzzer/BUILD.gn @@ -18,8 +18,7 @@ import("../../../../../distributedaudio.gni") ##############################fuzztest########################################## ohos_fuzztest("SourceServiceUnregisterDistributedHardwareFuzzTest") { - module_out_path = - "distributed_audio/sourceserviceunregisterdistributedhardware_fuzzer" + module_out_path = "${distributedaudio_fuzz_path}/sourceserviceunregisterdistributedhardware_fuzzer" fuzz_config_file = "${services_path}/audiomanager/test/fuzztest/sourceserviceunregisterdistributedhardware_fuzzer" cflags = [ diff --git a/services/audioprocessor/test/fuzztest/decoderonerror_fuzzer/BUILD.gn b/services/audioprocessor/test/fuzztest/decoderonerror_fuzzer/BUILD.gn index 05742698..1975ae8e 100644 --- a/services/audioprocessor/test/fuzztest/decoderonerror_fuzzer/BUILD.gn +++ b/services/audioprocessor/test/fuzztest/decoderonerror_fuzzer/BUILD.gn @@ -18,7 +18,7 @@ import("../../../../../distributedaudio.gni") ##############################fuzztest########################################## ohos_fuzztest("DecoderOnErrorFuzzTest") { - module_out_path = "distributed_audio/decoderonerror" + module_out_path = "${distributedaudio_fuzz_path}/decoderonerror" fuzz_config_file = "${audio_processor_path}/test/fuzztest/decoderonerror_fuzzer" diff --git a/services/audioprocessor/test/fuzztest/decoderoninputavailable_fuzzer/BUILD.gn b/services/audioprocessor/test/fuzztest/decoderoninputavailable_fuzzer/BUILD.gn index 888ca204..d8f6b6be 100644 --- a/services/audioprocessor/test/fuzztest/decoderoninputavailable_fuzzer/BUILD.gn +++ b/services/audioprocessor/test/fuzztest/decoderoninputavailable_fuzzer/BUILD.gn @@ -18,7 +18,7 @@ import("../../../../../distributedaudio.gni") ##############################fuzztest########################################## ohos_fuzztest("DecoderOnInputAvailableFuzzTest") { - module_out_path = "distributed_audio/decoderoninputavailable" + module_out_path = "${distributedaudio_fuzz_path}/decoderoninputavailable" fuzz_config_file = "${audio_processor_path}/test/fuzztest/decoderoninputavailable_fuzzer" diff --git a/services/audioprocessor/test/fuzztest/decoderonoutputavailable_fuzzer/BUILD.gn b/services/audioprocessor/test/fuzztest/decoderonoutputavailable_fuzzer/BUILD.gn index 6b620a85..b9bec389 100644 --- a/services/audioprocessor/test/fuzztest/decoderonoutputavailable_fuzzer/BUILD.gn +++ b/services/audioprocessor/test/fuzztest/decoderonoutputavailable_fuzzer/BUILD.gn @@ -18,7 +18,7 @@ import("../../../../../distributedaudio.gni") ##############################fuzztest########################################## ohos_fuzztest("DecoderOnOutputAvailableFuzzTest") { - module_out_path = "distributed_audio/decoderonoutputavailable" + module_out_path = "${distributedaudio_fuzz_path}/decoderonoutputavailable" fuzz_config_file = "${audio_processor_path}/test/fuzztest/decoderonoutputavailable_fuzzer" diff --git a/services/audioprocessor/test/fuzztest/decoderonoutputchanged_fuzzer/BUILD.gn b/services/audioprocessor/test/fuzztest/decoderonoutputchanged_fuzzer/BUILD.gn index e6a835d7..03ccc2a2 100644 --- a/services/audioprocessor/test/fuzztest/decoderonoutputchanged_fuzzer/BUILD.gn +++ b/services/audioprocessor/test/fuzztest/decoderonoutputchanged_fuzzer/BUILD.gn @@ -18,7 +18,7 @@ import("../../../../../distributedaudio.gni") ##############################fuzztest########################################## ohos_fuzztest("DecoderOnOutputChangedFuzzTest") { - module_out_path = "distributed_audio/decoderonoutputchanged" + module_out_path = "${distributedaudio_fuzz_path}/decoderonoutputchanged" fuzz_config_file = "${audio_processor_path}/test/fuzztest/decoderonoutputchanged_fuzzer" diff --git a/services/audioprocessor/test/fuzztest/encoderonerror_fuzzer/BUILD.gn b/services/audioprocessor/test/fuzztest/encoderonerror_fuzzer/BUILD.gn index 4b1886a8..c57b1000 100644 --- a/services/audioprocessor/test/fuzztest/encoderonerror_fuzzer/BUILD.gn +++ b/services/audioprocessor/test/fuzztest/encoderonerror_fuzzer/BUILD.gn @@ -18,7 +18,7 @@ import("../../../../../distributedaudio.gni") ##############################fuzztest########################################## ohos_fuzztest("EncoderOnErrorFuzzTest") { - module_out_path = "distributed_audio/encoderonerror" + module_out_path = "${distributedaudio_fuzz_path}/encoderonerror" fuzz_config_file = "${audio_processor_path}/test/fuzztest/encoderonerror_fuzzer" diff --git a/services/audioprocessor/test/fuzztest/encoderoninputavailable_fuzzer/BUILD.gn b/services/audioprocessor/test/fuzztest/encoderoninputavailable_fuzzer/BUILD.gn index 318b77e6..5926982e 100644 --- a/services/audioprocessor/test/fuzztest/encoderoninputavailable_fuzzer/BUILD.gn +++ b/services/audioprocessor/test/fuzztest/encoderoninputavailable_fuzzer/BUILD.gn @@ -18,7 +18,7 @@ import("../../../../../distributedaudio.gni") ##############################fuzztest########################################## ohos_fuzztest("EncoderOnInputAvailableFuzzTest") { - module_out_path = "distributed_audio/encoderoninputavailable" + module_out_path = "${distributedaudio_fuzz_path}/encoderoninputavailable" fuzz_config_file = "${audio_processor_path}/test/fuzztest/encoderoninputavailable_fuzzer" diff --git a/services/audioprocessor/test/fuzztest/encoderonoutputavailable_fuzzer/BUILD.gn b/services/audioprocessor/test/fuzztest/encoderonoutputavailable_fuzzer/BUILD.gn index 2ed507fc..3e8a8790 100644 --- a/services/audioprocessor/test/fuzztest/encoderonoutputavailable_fuzzer/BUILD.gn +++ b/services/audioprocessor/test/fuzztest/encoderonoutputavailable_fuzzer/BUILD.gn @@ -18,7 +18,7 @@ import("../../../../../distributedaudio.gni") ##############################fuzztest########################################## ohos_fuzztest("EncoderOnOutputAvailableFuzzTest") { - module_out_path = "distributed_audio/encoderonoutputavailable" + module_out_path = "${distributedaudio_fuzz_path}/encoderonoutputavailable" fuzz_config_file = "${audio_processor_path}/test/fuzztest/encoderonoutputavailable_fuzzer" diff --git a/services/audioprocessor/test/fuzztest/encoderonoutputchanged_fuzzer/BUILD.gn b/services/audioprocessor/test/fuzztest/encoderonoutputchanged_fuzzer/BUILD.gn index b80cacb8..cdc20d10 100644 --- a/services/audioprocessor/test/fuzztest/encoderonoutputchanged_fuzzer/BUILD.gn +++ b/services/audioprocessor/test/fuzztest/encoderonoutputchanged_fuzzer/BUILD.gn @@ -18,7 +18,7 @@ import("../../../../../distributedaudio.gni") ##############################fuzztest########################################## ohos_fuzztest("EncoderOnOutputChangedFuzzTest") { - module_out_path = "distributed_audio/encoderonoutputchanged" + module_out_path = "${distributedaudio_fuzz_path}/encoderonoutputchanged" fuzz_config_file = "${audio_processor_path}/test/fuzztest/encoderonoutputchanged_fuzzer" diff --git a/services/common/test/fuzztest/audiodatasetinit64_fuzzer/BUILD.gn b/services/common/test/fuzztest/audiodatasetinit64_fuzzer/BUILD.gn index c46552a2..1330a291 100644 --- a/services/common/test/fuzztest/audiodatasetinit64_fuzzer/BUILD.gn +++ b/services/common/test/fuzztest/audiodatasetinit64_fuzzer/BUILD.gn @@ -18,7 +18,7 @@ import("../../../../../distributedaudio.gni") ##############################fuzztest########################################## ohos_fuzztest("AudioDataSetInit64FuzzTest") { - module_out_path = "distributed_audio/audiodatasetinit64_fuzzer" + module_out_path = "${distributedaudio_fuzz_path}/audiodatasetinit64_fuzzer" fuzz_config_file = "${services_path}/common/test/fuzztest/audiodatasetinit64_fuzzer" diff --git a/services/softbusadapter/test/fuzztest/softbusonbytesreceived_fuzzer/BUILD.gn b/services/softbusadapter/test/fuzztest/softbusonbytesreceived_fuzzer/BUILD.gn index bcb830cd..8053d3f5 100644 --- a/services/softbusadapter/test/fuzztest/softbusonbytesreceived_fuzzer/BUILD.gn +++ b/services/softbusadapter/test/fuzztest/softbusonbytesreceived_fuzzer/BUILD.gn @@ -18,7 +18,7 @@ import("../../../../../distributedaudio.gni") ##############################fuzztest########################################## ohos_fuzztest("SoftbusOnBytesReceivedFuzzTest") { - module_out_path = "distributed_audio/softbusonbytesreceived" + module_out_path = "${distributedaudio_fuzz_path}/softbusonbytesreceived" fuzz_config_file = "${softbusadapter_path}/test/fuzztest/softbusonbytesreceived_fuzzer" diff --git a/services/softbusadapter/test/fuzztest/softbusonsessionclosed_fuzzer/BUILD.gn b/services/softbusadapter/test/fuzztest/softbusonsessionclosed_fuzzer/BUILD.gn index 63460d29..04c60496 100644 --- a/services/softbusadapter/test/fuzztest/softbusonsessionclosed_fuzzer/BUILD.gn +++ b/services/softbusadapter/test/fuzztest/softbusonsessionclosed_fuzzer/BUILD.gn @@ -18,7 +18,7 @@ import("../../../../../distributedaudio.gni") ##############################fuzztest########################################## ohos_fuzztest("SoftbusOnSessionClosedFuzzTest") { - module_out_path = "distributed_audio/softbusonsessionclosed" + module_out_path = "${distributedaudio_fuzz_path}/softbusonsessionclosed" fuzz_config_file = "${softbusadapter_path}/test/fuzztest/softbusonsessionclosed_fuzzer" diff --git a/services/softbusadapter/test/fuzztest/softbusonsessionopened_fuzzer/BUILD.gn b/services/softbusadapter/test/fuzztest/softbusonsessionopened_fuzzer/BUILD.gn index 257a441a..a0e44753 100644 --- a/services/softbusadapter/test/fuzztest/softbusonsessionopened_fuzzer/BUILD.gn +++ b/services/softbusadapter/test/fuzztest/softbusonsessionopened_fuzzer/BUILD.gn @@ -18,7 +18,7 @@ import("../../../../../distributedaudio.gni") ##############################fuzztest########################################## ohos_fuzztest("SoftbusOnSessionOpenedFuzzTest") { - module_out_path = "distributed_audio/softbusonsessionopened" + module_out_path = "${distributedaudio_fuzz_path}/softbusonsessionopened" fuzz_config_file = "${softbusadapter_path}/test/fuzztest/softbusonsessionopened_fuzzer" diff --git a/services/softbusadapter/test/fuzztest/softbusonstreamreceived_fuzzer/BUILD.gn b/services/softbusadapter/test/fuzztest/softbusonstreamreceived_fuzzer/BUILD.gn index e8a06525..627a0643 100644 --- a/services/softbusadapter/test/fuzztest/softbusonstreamreceived_fuzzer/BUILD.gn +++ b/services/softbusadapter/test/fuzztest/softbusonstreamreceived_fuzzer/BUILD.gn @@ -18,7 +18,7 @@ import("../../../../../distributedaudio.gni") ##############################fuzztest########################################## ohos_fuzztest("SoftbusOnStreamReceivedFuzzTest") { - module_out_path = "distributed_audio/softbusonstreamreceived" + module_out_path = "${distributedaudio_fuzz_path}/softbusonstreamreceived" fuzz_config_file = "${softbusadapter_path}/test/fuzztest/softbusonstreamreceived_fuzzer" -- Gitee From b635a90fd70d0033b12edf7b2a25e59def7c19e3 Mon Sep 17 00:00:00 2001 From: Bobie Date: Sat, 16 Sep 2023 18:37:19 +0800 Subject: [PATCH 32/35] =?UTF-8?q?Revert=20"=E4=BF=AE=E6=94=B9=E5=A4=B1?= =?UTF-8?q?=E8=B4=A5=E7=94=A8=E4=BE=8B=E4=BB=A5=E5=8F=8A=E4=B8=80=E5=A4=84?= =?UTF-8?q?=E5=86=85=E5=AD=98=E6=B3=84=E6=BC=8F=E9=97=AE=E9=A2=98"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 4d0a892b75e20ea54c324b8e4ecf0abba6162c1f. Signed-off-by: Bobie --- .../managersource/include/daudio_source_dev.h | 2 +- .../managersource/src/daudio_source_dev.cpp | 10 +++++++--- .../managersink/src/daudio_sink_manager_test.cpp | 4 +--- .../sourcedevice/src/daudio_source_dev_test.cpp | 13 +++++++------ .../sourcemanager/src/daudio_source_mgr_test.cpp | 4 ++-- 5 files changed, 18 insertions(+), 15 deletions(-) diff --git a/services/audiomanager/managersource/include/daudio_source_dev.h b/services/audiomanager/managersource/include/daudio_source_dev.h index 5db9200e..1be525e1 100644 --- a/services/audiomanager/managersource/include/daudio_source_dev.h +++ b/services/audiomanager/managersource/include/daudio_source_dev.h @@ -75,7 +75,7 @@ private: int32_t NotifySinkDevOpenMic(cJSON *jParam); int32_t OpenDMicInner(); - void CleanupJson(cJSON *jParamCopy, char *content); + void CleanupJson(cJSON *jParamCopy, cJSON *jParam, char *content); void OnDisableTaskResult(int32_t resultCode, const std::string &result, const std::string &funcName); void OnEnableTaskResult(int32_t resultCode, const std::string &result, const std::string &funcName); diff --git a/services/audiomanager/managersource/src/daudio_source_dev.cpp b/services/audiomanager/managersource/src/daudio_source_dev.cpp index c3a16f4d..915668b4 100644 --- a/services/audiomanager/managersource/src/daudio_source_dev.cpp +++ b/services/audiomanager/managersource/src/daudio_source_dev.cpp @@ -1330,9 +1330,10 @@ void DAudioSourceDev::OnTaskResult(int32_t resultCode, const std::string &result funcName.c_str()); } -void DAudioSourceDev::CleanupJson(cJSON *jParamCopy, char *content) +void DAudioSourceDev::CleanupJson(cJSON *jParamCopy, cJSON *jParam, char *content) { cJSON_Delete(jParamCopy); + cJSON_Delete(jParam); cJSON_free(content); } @@ -1356,16 +1357,19 @@ int32_t DAudioSourceDev::NotifySinkDev(const AudioEventType type, const cJSON *p const uint32_t randomTaskCode = rd(); constexpr uint32_t eventOffset = 4; cJSON_AddStringToObject(jParam, KEY_RANDOM_TASK_CODE, std::to_string(randomTaskCode).c_str()); + DHLOGD("Notify sink dev, new engine, random task code:%s", std::to_string(randomTaskCode).c_str()); if (speaker_ == nullptr || mic_ == nullptr) { cJSON_Delete(jParamCopy); + cJSON_Delete(jParam); DHLOGE("speaker or mic dev is null."); return ERR_DH_AUDIO_NULLPTR; } if (type == OPEN_CTRL || type == CLOSE_CTRL) { cJSON_Delete(jParamCopy); + cJSON_Delete(jParam); DHLOGE("In new engine mode, ctrl is not allowed."); return ERR_DH_AUDIO_NULLPTR; } @@ -1376,10 +1380,10 @@ int32_t DAudioSourceDev::NotifySinkDev(const AudioEventType type, const cJSON *p if (type == CLOSE_SPEAKER || type == CLOSE_MIC) { // Close spk || Close mic do not need to wait RPC - CleanupJson(jParamCopy, content); + CleanupJson(jParamCopy, jParam, content); return DH_SUCCESS; } - CleanupJson(jParamCopy, content); + CleanupJson(jParamCopy, jParam, content); return WaitForRPC(static_cast(static_cast(type) + eventOffset)); } diff --git a/services/audiomanager/test/unittest/managersink/src/daudio_sink_manager_test.cpp b/services/audiomanager/test/unittest/managersink/src/daudio_sink_manager_test.cpp index 570d01d4..bad59dca 100644 --- a/services/audiomanager/test/unittest/managersink/src/daudio_sink_manager_test.cpp +++ b/services/audiomanager/test/unittest/managersink/src/daudio_sink_manager_test.cpp @@ -56,12 +56,10 @@ HWTEST_F(DAudioSinkManagerTest, CreateAudioDevice_001, TestSize.Level1) daudioSinkManager.LoadAVReceiverEngineProvider(); EXPECT_EQ(DH_SUCCESS, daudioSinkManager.CreateAudioDevice(devId)); daudioSinkManager.channelState_ = ChannelState::MIC_CONTROL_OPENED; - daudioSinkManager.LoadAVSenderEngineProvider(); + daudioSinkManager.LoadAVReceiverEngineProvider(); EXPECT_EQ(DH_SUCCESS, daudioSinkManager.CreateAudioDevice(devId)); auto dev = std::make_shared(devId); daudioSinkManager.audioDevMap_.emplace(devId, dev); - daudioSinkManager.channelState_ = ChannelState::MIC_CONTROL_OPENED; - daudioSinkManager.LoadAVSenderEngineProvider(); EXPECT_EQ(DH_SUCCESS, daudioSinkManager.CreateAudioDevice(devId)); daudioSinkManager.channelState_ = ChannelState::MIC_CONTROL_OPENED; daudioSinkManager.sendProviderPtr_ = nullptr; diff --git a/services/audiomanager/test/unittest/sourcedevice/src/daudio_source_dev_test.cpp b/services/audiomanager/test/unittest/sourcedevice/src/daudio_source_dev_test.cpp index 24423e0d..8328aa1b 100644 --- a/services/audiomanager/test/unittest/sourcedevice/src/daudio_source_dev_test.cpp +++ b/services/audiomanager/test/unittest/sourcedevice/src/daudio_source_dev_test.cpp @@ -752,7 +752,7 @@ HWTEST_F(DAudioSourceDevTest, TaskOpenDSpeaker_001, TestSize.Level1) std::string tempLongStr(DAUDIO_MAX_JSON_LEN + 1, 'a'); EXPECT_EQ(ERR_DH_AUDIO_SA_PARAM_INVALID, sourceDev_->TaskOpenDSpeaker(tempLongStr)); - EXPECT_EQ(ERR_DH_AUDIO_NULLPTR, sourceDev_->TaskOpenDSpeaker(ARGS)); + EXPECT_EQ(ERR_DH_AUDIO_FAILED, sourceDev_->TaskOpenDSpeaker(ARGS)); cJSON *jParamSpk = cJSON_CreateObject(); cJSON_AddStringToObject(jParamSpk, KEY_DH_ID, DH_ID_SPK.c_str()); @@ -787,10 +787,10 @@ HWTEST_F(DAudioSourceDevTest, TaskCloseDSpeaker_001, TestSize.Level1) EXPECT_EQ(ERR_DH_AUDIO_SA_PARAM_INVALID, sourceDev_->TaskCloseDSpeaker(tempLongStr)); sourceDev_->speaker_->isOpened_ = true; - EXPECT_EQ(ERR_DH_AUDIO_NULLPTR, sourceDev_->TaskCloseDSpeaker(ARGS)); + EXPECT_EQ(ERR_DH_AUDIO_FAILED, sourceDev_->TaskCloseDSpeaker(ARGS)); sourceDev_->speaker_->isOpened_ = false; - EXPECT_EQ(ERR_DH_AUDIO_NULLPTR, sourceDev_->TaskCloseDSpeaker(ARGS)); + EXPECT_EQ(ERR_DH_AUDIO_FAILED, sourceDev_->TaskCloseDSpeaker(ARGS)); cJSON *jParamSpk = cJSON_CreateObject(); cJSON_AddStringToObject(jParamSpk, KEY_DH_ID, DH_ID_SPK.c_str()); @@ -858,10 +858,10 @@ HWTEST_F(DAudioSourceDevTest, TaskCloseDMic_001, TestSize.Level1) EXPECT_EQ(ERR_DH_AUDIO_SA_PARAM_INVALID, sourceDev_->TaskCloseDMic(tempLongStr)); sourceDev_->mic_->isOpened_ = true; - EXPECT_EQ(ERR_DH_AUDIO_NULLPTR, sourceDev_->TaskCloseDMic(ARGS)); + EXPECT_EQ(ERR_DH_AUDIO_FAILED, sourceDev_->TaskCloseDMic(ARGS)); sourceDev_->mic_->isOpened_ = false; - EXPECT_EQ(ERR_DH_AUDIO_NULLPTR, sourceDev_->TaskCloseDMic(ARGS)); + EXPECT_EQ(ERR_DH_AUDIO_FAILED, sourceDev_->TaskCloseDMic(ARGS)); cJSON *jParamMic = cJSON_CreateObject(); cJSON_AddStringToObject(jParamMic, KEY_DH_ID, DH_ID_MIC.c_str()); @@ -1141,14 +1141,15 @@ HWTEST_F(DAudioSourceDevTest, NotifyHDF_003, TestSize.Level1) HWTEST_F(DAudioSourceDevTest, NotifySinkDev_001, TestSize.Level1) { cJSON *jAudioParam = cJSON_CreateObject(); + sourceDev_->isRpcOpen_.store(false); EXPECT_EQ(ERR_DH_AUDIO_FAILED, sourceDev_->NotifySinkDev(CLOSE_MIC, jAudioParam, DH_ID_SPK)); + sourceDev_->isRpcOpen_.store(true); EXPECT_EQ(ERR_DH_AUDIO_NULLPTR, sourceDev_->NotifySinkDev(CLOSE_MIC, jAudioParam, DH_ID_SPK)); sourceDev_->mic_ = std::make_shared(DEV_ID, sourceDev_); sourceDev_->speaker_ = std::make_shared(DEV_ID, sourceDev_); EXPECT_EQ(DH_SUCCESS, sourceDev_->NotifySinkDev(CLOSE_MIC, jAudioParam, DH_ID_SPK)); - cJSON_Delete(jAudioParam); } /** diff --git a/services/audiomanager/test/unittest/sourcemanager/src/daudio_source_mgr_test.cpp b/services/audiomanager/test/unittest/sourcemanager/src/daudio_source_mgr_test.cpp index ab9600b1..6bc3da9c 100644 --- a/services/audiomanager/test/unittest/sourcemanager/src/daudio_source_mgr_test.cpp +++ b/services/audiomanager/test/unittest/sourcemanager/src/daudio_source_mgr_test.cpp @@ -182,12 +182,12 @@ HWTEST_F(DAudioSourceMgrTest, DisableDAudio_001, TestSize.Level1) */ HWTEST_F(DAudioSourceMgrTest, HandleDAudioNotify_001, TestSize.Level1) { - EXPECT_EQ(ERR_DH_AUDIO_FAILED, + EXPECT_EQ(ERR_DH_AUDIO_SA_DEVICE_NOT_EXIST, sourceMgr.HandleDAudioNotify(DEV_ID, DH_ID_SPK, OPEN_SPEAKER, "openspk")); std::string reqId = GetRandomID(); EXPECT_EQ(DH_SUCCESS, sourceMgr.EnableDAudio(DEV_ID, DH_ID_SPK, "", ATTRS, reqId)); - EXPECT_EQ(ERR_DH_AUDIO_FAILED, sourceMgr.HandleDAudioNotify(DEV_ID, DH_ID_SPK, OPEN_SPEAKER, "openspk")); + EXPECT_EQ(DH_SUCCESS, sourceMgr.HandleDAudioNotify(DEV_ID, DH_ID_SPK, OPEN_SPEAKER, "openspk")); EXPECT_EQ(DH_SUCCESS, sourceMgr.DisableDAudio(DEV_ID, DH_ID_SPK, reqId)); EXPECT_EQ(ERR_DH_AUDIO_FAILED, sourceMgr.HandleDAudioNotify(DEV_ID + "1", DH_ID_SPK, CLOSE_CTRL, "")); -- Gitee From dd641bbc44a9426cb0c47c6202ba937c8aabbf5c Mon Sep 17 00:00:00 2001 From: Bobie Date: Sat, 16 Sep 2023 18:39:08 +0800 Subject: [PATCH 33/35] =?UTF-8?q?Revert=20"cJSON=E6=95=B4=E6=94=B9"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 686bd11635508274ec65a9f3abe42c286b1b1703. Signed-off-by: Bobie --- audiohandler/BUILD.gn | 7 +- audiohandler/include/daudio_handler.h | 3 - audiohandler/src/daudio_handler.cpp | 56 +-- audiohandler/test/unittest/BUILD.gn | 3 +- bundle.json | 2 +- common/dfx_utils/test/unittest/BUILD.gn | 4 +- common/include/daudio_util.h | 12 +- common/src/daudio_util.cpp | 67 +-- common/test/unittest/BUILD.gn | 3 +- .../test/unittest/src/daudio_utils_test.cpp | 9 +- .../inner_kits/native_cpp/audio_sink/BUILD.gn | 11 +- .../native_cpp/audio_source/BUILD.gn | 11 +- .../test/unittest/audiosinktest/BUILD.gn | 1 + .../test/unittest/audiosourcetest/BUILD.gn | 1 + .../test/unittest/spkclient/BUILD.gn | 1 + .../unittest/daudio_manager_callback/BUILD.gn | 5 +- .../managersink/include/daudio_sink_dev.h | 9 +- .../managersink/src/daudio_sink_dev.cpp | 154 ++---- .../managersink/src/daudio_sink_manager.cpp | 12 +- .../managersource/include/daudio_source_dev.h | 14 +- .../managersource/include/dmic_dev.h | 4 +- .../managersource/include/dspeaker_dev.h | 4 +- .../managersource/src/daudio_source_dev.cpp | 450 ++++-------------- .../src/daudio_source_manager.cpp | 12 +- .../managersource/src/dmic_dev.cpp | 42 +- .../managersource/src/dspeaker_dev.cpp | 40 +- services/audiomanager/servicesink/BUILD.gn | 3 +- services/audiomanager/servicesource/BUILD.gn | 3 +- .../BUILD.gn | 7 +- .../sourceservicedaudionotify_fuzzer/BUILD.gn | 7 +- .../sourceserviceinitsource_fuzzer/BUILD.gn | 2 - .../BUILD.gn | 7 +- .../BUILD.gn | 7 +- .../BUILD.gn | 7 +- .../test/unittest/managersink/BUILD.gn | 3 +- .../managersink/src/daudio_sink_dev_test.cpp | 3 +- .../test/unittest/servicesink/BUILD.gn | 1 + .../test/unittest/servicesource/BUILD.gn | 3 +- .../test/unittest/sourcedevice/BUILD.gn | 3 +- .../src/daudio_source_dev_test.cpp | 203 +++----- .../test/unittest/sourcemanager/BUILD.gn | 3 +- .../unittest/common/decodeprocessor/BUILD.gn | 4 +- .../unittest/common/encodeprocessor/BUILD.gn | 3 +- .../include/audio_ctrl_channel.h | 6 +- .../src/audio_ctrl_channel.cpp | 61 +-- .../audiochannel/audiodatachannel/BUILD.gn | 7 +- .../audioctrltransport/BUILD.gn | 3 +- .../audiotransportstatus/BUILD.gn | 1 + .../audiotransport/decodetransport/BUILD.gn | 3 +- .../audiotransport/encodetransport/BUILD.gn | 3 +- .../test/unittest/audioctrlchannel/BUILD.gn | 3 +- .../src/audio_ctrl_channel_test.cpp | 3 +- .../test/unittest/audioctrltransport/BUILD.gn | 1 + .../test/unittest/audiodatachannel/BUILD.gn | 3 +- .../unittest/audiotransportstatus/BUILD.gn | 3 +- .../test/unittest/decodetransport/BUILD.gn | 7 +- .../test/unittest/encodetransport/BUILD.gn | 7 +- .../test/unittest/receiverengine/BUILD.gn | 3 +- .../test/unittest/senderengine/BUILD.gn | 3 +- services/common/BUILD.gn | 4 +- .../test/unittest/task_queue/BUILD.gn | 2 +- .../common/test/unittest/audiodata/BUILD.gn | 1 + services/softbusadapter/BUILD.gn | 11 +- .../softbusonbytesreceived_fuzzer/BUILD.gn | 3 +- .../softbusonsessionclosed_fuzzer/BUILD.gn | 3 +- .../softbusonsessionopened_fuzzer/BUILD.gn | 3 +- .../softbusonstreamreceived_fuzzer/BUILD.gn | 3 +- .../softbusadapter/test/unittest/BUILD.gn | 3 +- 68 files changed, 337 insertions(+), 1019 deletions(-) diff --git a/audiohandler/BUILD.gn b/audiohandler/BUILD.gn index 07a32861..f95694e6 100644 --- a/audiohandler/BUILD.gn +++ b/audiohandler/BUILD.gn @@ -17,7 +17,7 @@ import("../distributedaudio.gni") ohos_shared_library("distributed_audio_handler") { include_dirs = [ - "//third_party/cJSON", + "//third_party/json/include", "${fwk_common_path}/utils/include", "${fwk_utils_path}/include", "${mediastandardfwk_path}/audiomanager/include", @@ -33,10 +33,7 @@ ohos_shared_library("distributed_audio_handler") { sources = [ "src/daudio_handler.cpp" ] - deps = [ - "${services_path}/common:distributed_audio_utils", - "//third_party/cJSON:cjson", - ] + deps = [ "${services_path}/common:distributed_audio_utils" ] external_deps = [ "audio_framework:audio_capturer", diff --git a/audiohandler/include/daudio_handler.h b/audiohandler/include/daudio_handler.h index 2a352363..4b79ea82 100644 --- a/audiohandler/include/daudio_handler.h +++ b/audiohandler/include/daudio_handler.h @@ -18,8 +18,6 @@ #include -#include "cJSON.h" - #include "ihardware_handler.h" #include "single_instance.h" #include "audio_param.h" @@ -59,7 +57,6 @@ private: ~DAudioHandler(); int32_t QueryCodecInfo(); int32_t QueryAudioInfo(); - void AddItemsToObject(cJSON* infoJson, const int32_t &dhId); void GetSupportAudioInfo(AudioInfo &audioInfos, CoderInfo &encoderInfos, CoderInfo &decoderInfos); private: diff --git a/audiohandler/src/daudio_handler.cpp b/audiohandler/src/daudio_handler.cpp index 45b3bf7c..06e57b69 100644 --- a/audiohandler/src/daudio_handler.cpp +++ b/audiohandler/src/daudio_handler.cpp @@ -19,6 +19,7 @@ #include "audio_system_manager.h" #include "avcodec_list.h" +#include "nlohmann/json.hpp" #include "string_ex.h" #include "histreamer_query_tool.h" @@ -30,6 +31,8 @@ #undef DH_LOG_TAG #define DH_LOG_TAG "DAudioHandler" +using json = nlohmann::json; + namespace OHOS { namespace DistributedHardware { IMPLEMENT_SINGLE_INSTANCE(DAudioHandler); @@ -79,61 +82,40 @@ std::vector DAudioHandler::Query() for (auto dev : audioDevices) { auto dhId = audioSrv->GetPinValueFromType(dev->deviceType_, dev->deviceRole_); - cJSON* infoJson = cJSON_CreateObject(); - if (infoJson == nullptr) { - DHLOGE("Failed to create cJSON object."); - return dhItemVec; + json infoJson; + int32_t deviceType = GetDevTypeByDHId(dhId); + if (deviceType == AUDIO_DEVICE_TYPE_MIC) { + infoJson["SampleRates"] = micInfos_.sampleRates; + infoJson["ChannelMasks"] = micInfos_.channels; + infoJson["Formats"] = micInfos_.formats; + } else if (deviceType == AUDIO_DEVICE_TYPE_SPEAKER) { + infoJson["SampleRates"] = spkInfos_.sampleRates; + infoJson["ChannelMasks"] = spkInfos_.channels; + infoJson["Formats"] = spkInfos_.formats; } - - AddItemsToObject(infoJson, dhId); - cJSON_AddNumberToObject(infoJson, "INTERRUPT_GROUP_ID", dev->interruptGroupId_); - cJSON_AddNumberToObject(infoJson, "VOLUME_GROUP_ID", dev->volumeGroupId_); + infoJson["INTERRUPT_GROUP_ID"] = dev->interruptGroupId_; + infoJson["VOLUME_GROUP_ID"] = dev->volumeGroupId_; std::string audioEncoders = HiStreamerQueryTool::GetInstance().QueryHiStreamerPluginInfo(HISTREAM_PLUGIN_TYPE::AUDIO_ENCODER); DHLOGI("DScreen QueryAudioEncoderAbility info: %s", audioEncoders.c_str()); - cJSON_AddStringToObject(infoJson, KEY_HISTREAMER_AUDIO_ENCODER.c_str(), audioEncoders.c_str()); + infoJson[KEY_HISTREAMER_AUDIO_ENCODER] = audioEncoders; std::string audioDecoders = HiStreamerQueryTool::GetInstance().QueryHiStreamerPluginInfo(HISTREAM_PLUGIN_TYPE::AUDIO_DECODER); DHLOGI("DScreen QueryAudioDecoderAbility info: %s", audioDecoders.c_str()); - cJSON_AddStringToObject(infoJson, KEY_HISTREAMER_AUDIO_DECODER.c_str(), audioDecoders.c_str()); + infoJson[KEY_HISTREAMER_AUDIO_DECODER] = audioDecoders; DHItem dhItem; dhItem.dhId = std::to_string(dhId); - char *jsonStr = cJSON_Print(infoJson); - dhItem.attrs = jsonStr; + dhItem.attrs = infoJson.dump(); dhItemVec.push_back(dhItem); - DHLOGD("Query result: dhId: %d, attrs: %s.", dhId, jsonStr); - - cJSON_Delete(infoJson); - cJSON_free(jsonStr); + DHLOGD("Query result: dhId: %d, attrs: %s.", dhId, infoJson.dump().c_str()); } ablityForDumpVec_ = dhItemVec; return dhItemVec; } -void DAudioHandler::AddItemsToObject(cJSON* infoJson, const int32_t &dhId) -{ - DHLOGD("Get dhId and then add other items into json object"); - int32_t deviceType = GetDevTypeByDHId(dhId); - if (deviceType == AUDIO_DEVICE_TYPE_MIC) { - cJSON_AddItemToObject(infoJson, "SampleRates", - cJSON_CreateIntArray(micInfos_.sampleRates.data(), micInfos_.sampleRates.size())); - cJSON_AddItemToObject(infoJson, "ChannelMasks", - cJSON_CreateIntArray(micInfos_.channels.data(), micInfos_.channels.size())); - cJSON_AddItemToObject(infoJson, "Formats", - cJSON_CreateIntArray(micInfos_.formats.data(), micInfos_.formats.size())); - } else if (deviceType == AUDIO_DEVICE_TYPE_SPEAKER) { - cJSON_AddItemToObject(infoJson, "SampleRates", - cJSON_CreateIntArray(spkInfos_.sampleRates.data(), spkInfos_.sampleRates.size())); - cJSON_AddItemToObject(infoJson, "ChannelMasks", - cJSON_CreateIntArray(spkInfos_.channels.data(), spkInfos_.channels.size())); - cJSON_AddItemToObject(infoJson, "Formats", - cJSON_CreateIntArray(spkInfos_.formats.data(), spkInfos_.formats.size())); - } -} - std::vector DAudioHandler::ablityForDump() { DHLOGD("Get audio ablity for dump."); diff --git a/audiohandler/test/unittest/BUILD.gn b/audiohandler/test/unittest/BUILD.gn index 2660eaf8..c250a8da 100644 --- a/audiohandler/test/unittest/BUILD.gn +++ b/audiohandler/test/unittest/BUILD.gn @@ -20,7 +20,7 @@ config("module_private_config") { visibility = [ ":*" ] include_dirs = [ - "//third_party/cJSON", + "//third_party/json/include", "${fwk_common_path}/utils/include", "${mediastandard_path}/interfaces/inner_api/native", "${mediastandard_path}/services/utils/include", @@ -47,7 +47,6 @@ ohos_unittest("AudioHandlerTest") { deps = [ "${distributedaudio_path}/audiohandler:distributed_audio_handler", - "//third_party/cJSON:cjson", "//third_party/googletest:gtest_main", ] diff --git a/bundle.json b/bundle.json index 1936ba25..e963b311 100755 --- a/bundle.json +++ b/bundle.json @@ -45,7 +45,7 @@ "samgr" ], "third_party": [ - "cJSON" + "json" ] }, "build": { diff --git a/common/dfx_utils/test/unittest/BUILD.gn b/common/dfx_utils/test/unittest/BUILD.gn index b8b8f360..3a863e45 100644 --- a/common/dfx_utils/test/unittest/BUILD.gn +++ b/common/dfx_utils/test/unittest/BUILD.gn @@ -55,14 +55,13 @@ config("module_private_config") { "${services_path}/common/audioeventcallback", "${services_path}/audiomanager/managersource/include", "${softbusadapter_path}/include", + "//third_party/json/include", "${fwk_common_path}/utils/include", "${mediastandardfwk_path}/audiocapturer/include", "${mediastandardfwk_path}/audiocommon/include", "${mediastandardfwk_path}/audiorenderer/include", "${mediastandardfwk_path}/audiomanager/include", ] - - include_dirs += [ "//third_party/cJSON" ] } ## UnitTest daudio_dfx_test @@ -77,7 +76,6 @@ ohos_unittest("DAudioDfxTest") { deps = [ "${services_path}/audiomanager/servicesource:distributed_audio_source", "${services_path}/common:distributed_audio_utils", - "//third_party/cJSON:cjson", "//third_party/googletest:gmock", "//third_party/googletest:gtest_main", ] diff --git a/common/include/daudio_util.h b/common/include/daudio_util.h index 69341c40..33d43922 100644 --- a/common/include/daudio_util.h +++ b/common/include/daudio_util.h @@ -19,7 +19,9 @@ #include #include #include -#include "cJSON.h" +#include "nlohmann/json.hpp" + +using json = nlohmann::json; #define AUDIO_MS_PER_SECOND 1000 #define AUDIO_US_PER_SECOND 1000000 @@ -34,10 +36,10 @@ int64_t GetNowTimeUs(); int32_t GetAudioParamStr(const std::string ¶ms, const std::string &key, std::string &value); int32_t GetAudioParamBool(const std::string ¶ms, const std::string &key, bool &value); int32_t GetAudioParamInt(const std::string ¶ms, const std::string &key, int32_t &value); -bool JsonParamCheck(const cJSON *jsonObj, const std::initializer_list &keys); -bool IsString(const cJSON *jsonObj, const std::string &key); -bool IsInt32(const cJSON *jsonObj, const std::string &key); -bool IsAudioParam(const cJSON *jsonObj, const std::string &key); +bool JsonParamCheck(const json &jsonObj, const std::initializer_list &key); +bool IsString(const json &jsonObj, const std::string &key); +bool IsInt32(const json &jsonObj, const std::string &key); +bool IsAudioParam(const json &jsonObj, const std::string &key); int32_t CalculateSampleNum(uint32_t sampleRate, uint32_t timems); int64_t GetCurNano(); int32_t AbsoluteSleep(int64_t nanoTime); diff --git a/common/src/daudio_util.cpp b/common/src/daudio_util.cpp index ed19a99e..e1a1fc1f 100644 --- a/common/src/daudio_util.cpp +++ b/common/src/daudio_util.cpp @@ -35,7 +35,7 @@ namespace OHOS { namespace DistributedHardware { -using JsonTypeCheckFunc = bool (*)(const cJSON *jsonObj, const std::string &key); +using JsonTypeCheckFunc = bool (*)(const json &jsonObj, const std::string &key); constexpr int32_t WORD_WIDTH_8 = 8; constexpr int32_t WORD_WIDTH_4 = 4; constexpr size_t INT32_SHORT_ID_LENGTH = 20; @@ -193,17 +193,16 @@ int32_t GetAudioParamInt(const std::string ¶ms, const std::string &key, int3 return DH_SUCCESS; } -bool JsonParamCheck(const cJSON *jsonObj, const std::initializer_list &keys) +bool JsonParamCheck(const json &jsonObj, const std::initializer_list &keys) { - if (jsonObj == nullptr || !cJSON_IsObject(jsonObj)) { - DHLOGE("JSON parameter is invalid."); + if (jsonObj.is_discarded()) { + DHLOGE("Json parameter is invalid."); return false; } for (auto it = keys.begin(); it != keys.end(); it++) { - cJSON *paramValue = cJSON_GetObjectItemCaseSensitive(jsonObj, (*it).c_str()); - if (paramValue == nullptr) { - DHLOGE("JSON parameter does not contain key: %s", (*it).c_str()); + if (!jsonObj.contains(*it)) { + DHLOGE("Json parameter not contain param(%s).", (*it).c_str()); return false; } @@ -212,69 +211,29 @@ bool JsonParamCheck(const cJSON *jsonObj, const std::initializer_listsecond; bool res = (*func)(jsonObj, *it); if (!res) { - DHLOGE("The key %s value format in JSON is illegal.", (*it).c_str()); + DHLOGE("The key %s value format in json is illegal.", (*it).c_str()); return false; } } return true; } -bool IsString(const cJSON *jsonObj, const std::string &key) +bool IsString(const json &jsonObj, const std::string &key) { - if (jsonObj == nullptr || !cJSON_IsObject(jsonObj)) { - DHLOGE("JSON parameter is invalid."); - return false; - } - cJSON *paramValue = cJSON_GetObjectItemCaseSensitive(jsonObj, key.c_str()); - if (paramValue == nullptr) { - DHLOGE("paramValue is null"); - return false; - } - - if (cJSON_IsString(paramValue)) { - return true; - } - return false; + return jsonObj[key].is_string(); } -bool IsInt32(const cJSON *jsonObj, const std::string &key) +bool IsInt32(const json &jsonObj, const std::string &key) { - if (jsonObj == nullptr || !cJSON_IsObject(jsonObj)) { - DHLOGE("JSON parameter is invalid."); - return false; - } - cJSON *paramValue = cJSON_GetObjectItemCaseSensitive(jsonObj, key.c_str()); - if (paramValue == nullptr) { - DHLOGE("paramValue is null"); - return false; - } - - if (cJSON_IsNumber(paramValue)) { - int value = paramValue->valueint; - if (INT32_MIN <= value && value <= INT32_MAX) { - return true; - } - } - return false; + return jsonObj[key].is_number_integer() && INT32_MIN <= jsonObj[key] && jsonObj[key] <= INT32_MAX; } -bool IsAudioParam(const cJSON *jsonObj, const std::string &key) +bool IsAudioParam(const json &jsonObj, const std::string &key) { - if (jsonObj == nullptr || !cJSON_IsObject(jsonObj)) { - DHLOGE("JSON parameter is invalid."); - return false; - } - cJSON *paramValue = cJSON_GetObjectItemCaseSensitive(jsonObj, key.c_str()); - if (paramValue == nullptr || !cJSON_IsObject(paramValue)) { - DHLOGE("paramValue is null or is not object"); - return false; - } - - return JsonParamCheck(paramValue, + return JsonParamCheck(jsonObj[key], { KEY_SAMPLING_RATE, KEY_CHANNELS, KEY_FORMAT, KEY_SOURCE_TYPE, KEY_CONTENT_TYPE, KEY_STREAM_USAGE }); } diff --git a/common/test/unittest/BUILD.gn b/common/test/unittest/BUILD.gn index e1de2daf..b6231b5d 100644 --- a/common/test/unittest/BUILD.gn +++ b/common/test/unittest/BUILD.gn @@ -23,7 +23,7 @@ config("module_private_config") { include_dirs = [ "${fwk_common_path}/utils/include", - "//third_party/cJSON", + "//third_party/json/include", ] include_dirs += [ @@ -41,7 +41,6 @@ ohos_unittest("DaudioUtilsTest") { deps = [ "${services_path}/common:distributed_audio_utils", - "//third_party/cJSON:cjson", "//third_party/googletest:gtest_main", ] diff --git a/common/test/unittest/src/daudio_utils_test.cpp b/common/test/unittest/src/daudio_utils_test.cpp index 42344968..88131841 100644 --- a/common/test/unittest/src/daudio_utils_test.cpp +++ b/common/test/unittest/src/daudio_utils_test.cpp @@ -257,18 +257,13 @@ HWTEST_F(DAudioUtilsTest, DAudioUtilTest_005, TestSize.Level1) HWTEST_F(DAudioUtilsTest, DAudioUtilTest_006, TestSize.Level1) { std::string tempKey = "TestParam"; - cJSON *jParam = cJSON_CreateObject(); - cJSON_AddItemToObject(jParam, KEY_DEV_ID, cJSON_CreateString("TEST_DEV_ID")); - cJSON_AddItemToObject(jParam, KEY_AUDIO_PARAM, cJSON_CreateString("TEST_PARAM")); - cJSON_AddItemToObject(jParam, KEY_FORMAT, cJSON_CreateString("TEST_8000")); - cJSON_AddItemToObject(jParam, tempKey.c_str(), cJSON_CreateString("TEST_TEMP_KEY")); - + json jParam = { { KEY_DEV_ID, "TEST_DEV_ID" }, {KEY_AUDIO_PARAM, "TEST_PARAM" }, {KEY_FORMAT, "TEST_8000" }, + { tempKey, "TEST_TEMP_KEY" } }; EXPECT_EQ(false, JsonParamCheck(jParam, { KEY_ATTRS })); EXPECT_EQ(false, JsonParamCheck(jParam, { KEY_AUDIO_PARAM })); EXPECT_EQ(false, JsonParamCheck(jParam, { KEY_FORMAT })); EXPECT_EQ(false, JsonParamCheck(jParam, { tempKey })); EXPECT_EQ(true, JsonParamCheck(jParam, { KEY_DEV_ID })); - cJSON_Delete(jParam); } /** diff --git a/interfaces/inner_kits/native_cpp/audio_sink/BUILD.gn b/interfaces/inner_kits/native_cpp/audio_sink/BUILD.gn index 3997a2e1..423af490 100755 --- a/interfaces/inner_kits/native_cpp/audio_sink/BUILD.gn +++ b/interfaces/inner_kits/native_cpp/audio_sink/BUILD.gn @@ -16,13 +16,15 @@ import("//build/ohos_var.gni") import("../../../../distributedaudio.gni") ohos_shared_library("distributed_audio_sink_sdk") { - include_dirs = [ "${fwk_common_path}/utils/include" ] + include_dirs = [ + "${fwk_common_path}/utils/include", + "//third_party/json/include", + ] include_dirs += [ "include", "${common_path}/include", "${common_path}/dfx_utils/include", - "//third_party/cJSON", ] sources = [ @@ -31,10 +33,7 @@ ohos_shared_library("distributed_audio_sink_sdk") { "src/daudio_sink_proxy.cpp", ] - deps = [ - "${services_path}/common:distributed_audio_utils", - "//third_party/cJSON:cjson", - ] + deps = [ "${services_path}/common:distributed_audio_utils" ] external_deps = [ "c_utils:utils", diff --git a/interfaces/inner_kits/native_cpp/audio_source/BUILD.gn b/interfaces/inner_kits/native_cpp/audio_source/BUILD.gn index e97ea79f..bf65d534 100755 --- a/interfaces/inner_kits/native_cpp/audio_source/BUILD.gn +++ b/interfaces/inner_kits/native_cpp/audio_source/BUILD.gn @@ -16,13 +16,15 @@ import("//build/ohos_var.gni") import("../../../../distributedaudio.gni") ohos_shared_library("distributed_audio_source_sdk") { - include_dirs = [ "${fwk_common_path}/utils/include" ] + include_dirs = [ + "${fwk_common_path}/utils/include", + "//third_party/json/include", + ] include_dirs += [ "include", "${common_path}/include", "${common_path}/dfx_utils/include", - "//third_party/cJSON", ] sources = [ @@ -33,10 +35,7 @@ ohos_shared_library("distributed_audio_source_sdk") { "src/daudio_source_proxy.cpp", ] - deps = [ - "${services_path}/common:distributed_audio_utils", - "//third_party/cJSON:cjson", - ] + deps = [ "${services_path}/common:distributed_audio_utils" ] external_deps = [ "c_utils:utils", diff --git a/interfaces/inner_kits/native_cpp/test/unittest/audiosinktest/BUILD.gn b/interfaces/inner_kits/native_cpp/test/unittest/audiosinktest/BUILD.gn index 88d30e02..7e1afd53 100755 --- a/interfaces/inner_kits/native_cpp/test/unittest/audiosinktest/BUILD.gn +++ b/interfaces/inner_kits/native_cpp/test/unittest/audiosinktest/BUILD.gn @@ -20,6 +20,7 @@ config("module_private_config") { visibility = [ ":*" ] include_dirs = [ + "//third_party/json/include", "${fwk_common_path}/utils/include", "${fwk_utils_path}/include", ] diff --git a/interfaces/inner_kits/native_cpp/test/unittest/audiosourcetest/BUILD.gn b/interfaces/inner_kits/native_cpp/test/unittest/audiosourcetest/BUILD.gn index 0c1d9cd7..4b921210 100755 --- a/interfaces/inner_kits/native_cpp/test/unittest/audiosourcetest/BUILD.gn +++ b/interfaces/inner_kits/native_cpp/test/unittest/audiosourcetest/BUILD.gn @@ -20,6 +20,7 @@ config("module_private_config") { visibility = [ ":*" ] include_dirs = [ + "//third_party/json/include", "${fwk_common_path}/utils/include", "${fwk_utils_path}/include", "${fwk_utils_path}/include/log", diff --git a/services/audioclient/test/unittest/spkclient/BUILD.gn b/services/audioclient/test/unittest/spkclient/BUILD.gn index ee7f5efa..190b39ce 100644 --- a/services/audioclient/test/unittest/spkclient/BUILD.gn +++ b/services/audioclient/test/unittest/spkclient/BUILD.gn @@ -25,6 +25,7 @@ config("module_private_config") { "${mediastandardfwk_path}/audiocommon/include", "${mediastandardfwk_path}/audiomanager/include", "${mediastandardfwk_path}/audiorenderer/include", + "//third_party/json/include", ] include_dirs += [ diff --git a/services/audiohdiproxy/test/unittest/daudio_manager_callback/BUILD.gn b/services/audiohdiproxy/test/unittest/daudio_manager_callback/BUILD.gn index 17cebd41..64312074 100644 --- a/services/audiohdiproxy/test/unittest/daudio_manager_callback/BUILD.gn +++ b/services/audiohdiproxy/test/unittest/daudio_manager_callback/BUILD.gn @@ -22,7 +22,10 @@ module_out_path = config("module_private_config") { visibility = [ ":*" ] - include_dirs = [ "${fwk_common_path}/utils/include" ] + include_dirs = [ + "${fwk_common_path}/utils/include", + "//third_party/json/include", + ] include_dirs += [ "include", diff --git a/services/audiomanager/managersink/include/daudio_sink_dev.h b/services/audiomanager/managersink/include/daudio_sink_dev.h index cdbe97aa..905a7b0b 100644 --- a/services/audiomanager/managersink/include/daudio_sink_dev.h +++ b/services/audiomanager/managersink/include/daudio_sink_dev.h @@ -22,7 +22,7 @@ #include #include "event_handler.h" -#include "cJSON.h" +#include "nlohmann/json.hpp" #include "daudio_sink_dev_ctrl_manager.h" #include "dmic_client.h" @@ -38,6 +38,8 @@ #include "direct_dspeaker_client.h" #endif +using json = nlohmann::json; + namespace OHOS { namespace DistributedHardware { enum class ChannelState { @@ -73,14 +75,11 @@ private: int32_t TaskPlayStatusChange(const std::string &args); void NotifySourceDev(const AudioEventType type, const std::string dhId, const int32_t result); - int32_t from_json(const cJSON *jsonObj, AudioParam &audioParam); + int32_t from_json(const json &j, AudioParam &audioParam); int32_t HandleEngineMessage(uint32_t type, std::string content, std::string devId); int32_t SendAudioEventToRemote(const AudioEvent &event); void JudgeDeviceStatus(); - int32_t GetCJsonObjectItems(const cJSON *jsonObj, AudioParam &audioParam); - int32_t GetParamValue(const cJSON *jsonObj, const char* key, int32_t& value); - private: std::mutex rpcWaitMutex_; std::condition_variable rpcWaitCond_; diff --git a/services/audiomanager/managersink/src/daudio_sink_dev.cpp b/services/audiomanager/managersink/src/daudio_sink_dev.cpp index 908b945f..053b88db 100644 --- a/services/audiomanager/managersink/src/daudio_sink_dev.cpp +++ b/services/audiomanager/managersink/src/daudio_sink_dev.cpp @@ -116,44 +116,31 @@ int32_t DAudioSinkDev::TaskOpenDSpeaker(const std::string &args) if (args.length() > DAUDIO_MAX_JSON_LEN || args.empty()) { return ERR_DH_AUDIO_SA_PARAM_INVALID; } - - cJSON *jParam = cJSON_Parse(args.c_str()); - if (jParam == nullptr) { - DHLOGE("Failed to parse JSON parameter."); - cJSON_Delete(jParam); - return ERR_DH_AUDIO_FAILED; - } + json jParam = json::parse(args, nullptr, false); if (!JsonParamCheck(jParam, { KEY_DH_ID, KEY_AUDIO_PARAM })) { - cJSON_Delete(jParam); - DHLOGE("Not found the keys."); return ERR_DH_AUDIO_FAILED; } - spkDhId_ = std::string(cJSON_GetObjectItemCaseSensitive(jParam, KEY_DH_ID)->valuestring); - cJSON *audioParamJson = cJSON_GetObjectItemCaseSensitive(jParam, KEY_AUDIO_PARAM); + spkDhId_ = jParam[KEY_DH_ID]; AudioParam audioParam; - int32_t ret = from_json(audioParamJson, audioParam); + int32_t ret = from_json(jParam[KEY_AUDIO_PARAM], audioParam); if (ret != DH_SUCCESS) { DHLOGE("Get audio param from json failed, error code %d.", ret); - cJSON_Delete(jParam); return ret; } if (speakerClient_ == nullptr) { DHLOGE("speaker client should be init by dev."); - cJSON_Delete(jParam); return ERR_DH_AUDIO_NULLPTR; } - + DHLOGI("Open speaker device."); ret = speakerClient_->SetUp(audioParam); if (ret != DH_SUCCESS) { DHLOGE("Setup speaker failed, ret: %d.", ret); NotifySourceDev(NOTIFY_OPEN_SPEAKER_RESULT, spkDhId_, ERR_DH_AUDIO_FAILED); - cJSON_Delete(jParam); return ERR_DH_AUDIO_FAILED; } - NotifySourceDev(NOTIFY_OPEN_SPEAKER_RESULT, spkDhId_, ret); - cJSON_Delete(jParam); + NotifySourceDev(NOTIFY_OPEN_SPEAKER_RESULT, spkDhId_, ret); DHLOGI("Open speaker device task end, notify source ret %d.", ret); isSpkInUse_.store(true); return ret; @@ -204,34 +191,21 @@ int32_t DAudioSinkDev::TaskOpenDMic(const std::string &args) if (args.length() > DAUDIO_MAX_JSON_LEN || args.empty()) { return ERR_DH_AUDIO_SA_PARAM_INVALID; } - - cJSON *jParam = cJSON_Parse(args.c_str()); - if (jParam == nullptr) { - DHLOGE("Failed to parse JSON parameter."); - cJSON_Delete(jParam); - return ERR_DH_AUDIO_FAILED; - } + json jParam = json::parse(args, nullptr, false); if (!JsonParamCheck(jParam, { KEY_DH_ID, KEY_AUDIO_PARAM })) { - DHLOGE("Not found the keys."); - cJSON_Delete(jParam); return ERR_DH_AUDIO_FAILED; } - micDhId_ = std::string(cJSON_GetObjectItemCaseSensitive(jParam, KEY_DH_ID)->valuestring); - cJSON *audioParamJson = cJSON_GetObjectItemCaseSensitive(jParam, KEY_AUDIO_PARAM); + micDhId_ = jParam[KEY_DH_ID]; AudioParam audioParam; - int32_t ret = from_json(audioParamJson, audioParam); + int32_t ret = from_json(jParam[KEY_AUDIO_PARAM], audioParam); if (ret != DH_SUCCESS) { DHLOGE("Get audio param from json failed, error code %d.", ret); - cJSON_Delete(jParam); return ret; } - if (micClient_ == nullptr) { DHLOGE("Mic client should be init by dev."); - cJSON_Delete(jParam); return ERR_DH_AUDIO_NULLPTR; } - do { ret = micClient_->SetUp(audioParam); if (ret != DH_SUCCESS) { @@ -244,10 +218,7 @@ int32_t DAudioSinkDev::TaskOpenDMic(const std::string &args) break; } } while (false); - NotifySourceDev(NOTIFY_OPEN_MIC_RESULT, micDhId_, ret); - cJSON_Delete(jParam); - DHLOGI("Open mic device task end, notify source ret %d.", ret); isMicInUse_.store(true); return ret; @@ -387,107 +358,40 @@ void DAudioSinkDev::NotifySourceDev(const AudioEventType type, const std::string { std::random_device rd; const uint32_t randomTaskCode = rd(); - - cJSON *jEvent = cJSON_CreateObject(); - if (jEvent == nullptr) { - DHLOGE("Failed to create JSON data."); - return; - } - cJSON_AddStringToObject(jEvent, KEY_DH_ID, dhId.c_str()); - cJSON_AddNumberToObject(jEvent, KEY_RESULT, result); - cJSON_AddNumberToObject(jEvent, KEY_EVENT_TYPE, static_cast(type)); - cJSON_AddNumberToObject(jEvent, KEY_RANDOM_TASK_CODE, randomTaskCode); - - DHLOGD("Notify source dev, new engine, random task code:%u", randomTaskCode); + json jEvent; + jEvent[KEY_DH_ID] = dhId; + jEvent[KEY_RESULT] = result; + jEvent[KEY_EVENT_TYPE] = type; + jEvent[KEY_RANDOM_TASK_CODE] = std::to_string(randomTaskCode); + + DHLOGD("Notify source dev, new engine, random task code:%s", std::to_string(randomTaskCode).c_str()); if (type == NOTIFY_OPEN_CTRL_RESULT || type == NOTIFY_CLOSE_CTRL_RESULT) { DHLOGE("In new engine mode, ctrl is not allowed."); - cJSON_Delete(jEvent); - return; - } - char *message = cJSON_PrintUnformatted(jEvent); - if (message == nullptr) { - DHLOGE("Failed to create JSON data."); - cJSON_Delete(jEvent); return; } - std::string messageStr(message); - if (speakerClient_ != nullptr) { - speakerClient_->SendMessage(static_cast(type), messageStr, devId_); + speakerClient_->SendMessage(static_cast(type), jEvent.dump(), devId_); } if (micClient_ != nullptr) { - micClient_->SendMessage(static_cast(type), messageStr, devId_); + micClient_->SendMessage(static_cast(type), jEvent.dump(), devId_); } - cJSON_Delete(jEvent); - cJSON_free(message); } -int32_t DAudioSinkDev::GetParamValue(const cJSON *jsonObj, const char* key, int32_t& value) +int32_t DAudioSinkDev::from_json(const json &j, AudioParam &audioParam) { - cJSON *paramValue = cJSON_GetObjectItemCaseSensitive(jsonObj, key); - if (paramValue == nullptr || !cJSON_IsNumber(paramValue)) { - return ERR_DH_AUDIO_FAILED; - } - value = paramValue->valueint; - return DH_SUCCESS; -} - -int32_t DAudioSinkDev::GetCJsonObjectItems(const cJSON *jsonObj, AudioParam &audioParam) -{ - int32_t result = 0; - result = GetParamValue(jsonObj, KEY_SAMPLING_RATE, reinterpret_cast(audioParam.comParam.sampleRate)); - if (result != DH_SUCCESS) { - return result; - } - result = GetParamValue(jsonObj, KEY_CHANNELS, reinterpret_cast(audioParam.comParam.channelMask)); - if (result != DH_SUCCESS) { - return result; - } - result = GetParamValue(jsonObj, KEY_FORMAT, reinterpret_cast(audioParam.comParam.bitFormat)); - if (result != DH_SUCCESS) { - return result; - } - result = GetParamValue(jsonObj, KEY_FRAMESIZE, reinterpret_cast(audioParam.comParam.frameSize)); - if (result != DH_SUCCESS) { - return result; - } - result = GetParamValue(jsonObj, KEY_SOURCE_TYPE, reinterpret_cast(audioParam.captureOpts.sourceType)); - if (result != DH_SUCCESS) { - return result; - } - result = GetParamValue(jsonObj, KEY_CONTENT_TYPE, reinterpret_cast(audioParam.renderOpts.contentType)); - if (result != DH_SUCCESS) { - return result; - } - result = GetParamValue(jsonObj, KEY_STREAM_USAGE, reinterpret_cast(audioParam.renderOpts.streamUsage)); - if (result != DH_SUCCESS) { - return result; - } - result = GetParamValue(jsonObj, KEY_RENDER_FLAGS, reinterpret_cast(audioParam.renderOpts.renderFlags)); - if (result != DH_SUCCESS) { - return result; - } - result = GetParamValue(jsonObj, KEY_CAPTURE_FLAGS, - reinterpret_cast(audioParam.captureOpts.capturerFlags)); - if (result != DH_SUCCESS) { - return result; - } - return DH_SUCCESS; -} - -int32_t DAudioSinkDev::from_json(const cJSON *jsonObj, AudioParam &audioParam) -{ - if (!JsonParamCheck(jsonObj, - { KEY_SAMPLING_RATE, KEY_CHANNELS, KEY_FORMAT, KEY_SOURCE_TYPE, KEY_CONTENT_TYPE, KEY_STREAM_USAGE, - KEY_RENDER_FLAGS, KEY_CAPTURE_FLAGS, KEY_FRAMESIZE })) { - DHLOGE("Not found the keys."); - return ERR_DH_AUDIO_FAILED; - } - - int ret = GetCJsonObjectItems(jsonObj, audioParam); - if (ret != DH_SUCCESS) { + if (!JsonParamCheck(j, + { KEY_SAMPLING_RATE, KEY_CHANNELS, KEY_FORMAT, KEY_SOURCE_TYPE, KEY_CONTENT_TYPE, KEY_STREAM_USAGE })) { return ERR_DH_AUDIO_FAILED; } + j.at(KEY_SAMPLING_RATE).get_to(audioParam.comParam.sampleRate); + j.at(KEY_CHANNELS).get_to(audioParam.comParam.channelMask); + j.at(KEY_FORMAT).get_to(audioParam.comParam.bitFormat); + j.at(KEY_FRAMESIZE).get_to(audioParam.comParam.frameSize); + j.at(KEY_SOURCE_TYPE).get_to(audioParam.captureOpts.sourceType); + j.at(KEY_CONTENT_TYPE).get_to(audioParam.renderOpts.contentType); + j.at(KEY_STREAM_USAGE).get_to(audioParam.renderOpts.streamUsage); + j.at(KEY_RENDER_FLAGS).get_to(audioParam.renderOpts.renderFlags); + j.at(KEY_CAPTURE_FLAGS).get_to(audioParam.captureOpts.capturerFlags); return DH_SUCCESS; } diff --git a/services/audiomanager/managersink/src/daudio_sink_manager.cpp b/services/audiomanager/managersink/src/daudio_sink_manager.cpp index 11508f3c..87b79f77 100644 --- a/services/audiomanager/managersink/src/daudio_sink_manager.cpp +++ b/services/audiomanager/managersink/src/daudio_sink_manager.cpp @@ -143,15 +143,10 @@ int32_t DAudioSinkManager::HandleDAudioNotify(const std::string &devId, const st } // now ctrl channel is also goto here, please sure here not crash. - cJSON *jParam = cJSON_Parse(eventContent.c_str()); - if (jParam == nullptr) { - DHLOGE("Failed to parse JSON parameter."); - cJSON_Delete(jParam); - return ERR_DH_AUDIO_FAILED; - } + json jParam = json::parse(eventContent, nullptr, false); if (JsonParamCheck(jParam, { KEY_RANDOM_TASK_CODE })) { DHLOGD("Receive audio notify from source, random task code: %s", - cJSON_GetObjectItemCaseSensitive(jParam, KEY_RANDOM_TASK_CODE)->valuestring); + ((std::string)jParam[KEY_RANDOM_TASK_CODE]).c_str()); } bool isDevExisted = false; { @@ -159,12 +154,9 @@ int32_t DAudioSinkManager::HandleDAudioNotify(const std::string &devId, const st isDevExisted = audioDevMap_.find(devId) != audioDevMap_.end(); } if (!isDevExisted && CreateAudioDevice(devId) != DH_SUCCESS) { - cJSON_Delete(jParam); return ERR_DH_AUDIO_FAILED; } - NotifyEvent(devId, eventType, eventContent); - cJSON_Delete(jParam); return DH_SUCCESS; } diff --git a/services/audiomanager/managersource/include/daudio_source_dev.h b/services/audiomanager/managersource/include/daudio_source_dev.h index 1be525e1..7e95e466 100644 --- a/services/audiomanager/managersource/include/daudio_source_dev.h +++ b/services/audiomanager/managersource/include/daudio_source_dev.h @@ -18,7 +18,7 @@ #include #include -#include "cJSON.h" +#include "nlohmann/json.hpp" #include "event_handler.h" @@ -33,6 +33,8 @@ #include "idaudio_ipc_callback.h" #include "idaudio_hdi_callback.h" +using json = nlohmann::json; + namespace OHOS { namespace DistributedHardware { class DAudioSourceDev : public IAudioEventCallback, public std::enable_shared_from_this { @@ -50,7 +52,6 @@ public: private: int32_t EnableDSpeaker(const int32_t dhId, const std::string &attrs); int32_t EnableDMic(const int32_t dhId, const std::string &attrs); - int32_t DisableDAudioInner(const std::string &dhId); int32_t DisableDSpeaker(const int32_t dhId); int32_t DisableDMic(const int32_t dhId); @@ -59,7 +60,6 @@ private: int32_t TaskOpenCtrlChannel(const std::string &args); int32_t TaskCloseCtrlChannel(const std::string &args); int32_t TaskOpenDSpeaker(const std::string &args); - int32_t OpenDSpeakerInner(); int32_t TaskCloseDSpeaker(const std::string &args); int32_t TaskOpenDMic(const std::string &args); int32_t TaskCloseDMic(const std::string &args); @@ -73,10 +73,6 @@ private: int32_t TaskMicMmapStart(const std::string &args); int32_t TaskMicMmapStop(const std::string &args); - int32_t NotifySinkDevOpenMic(cJSON *jParam); - int32_t OpenDMicInner(); - void CleanupJson(cJSON *jParamCopy, cJSON *jParam, char *content); - void OnDisableTaskResult(int32_t resultCode, const std::string &result, const std::string &funcName); void OnEnableTaskResult(int32_t resultCode, const std::string &result, const std::string &funcName); void OnTaskResult(int32_t resultCode, const std::string &result, const std::string &funcName); @@ -104,12 +100,12 @@ private: int32_t HandleMicMmapStart(const AudioEvent &event); int32_t HandleMicMmapStop(const AudioEvent &event); - int32_t NotifySinkDev(const AudioEventType type, const cJSON *param, const std::string dhId); + int32_t NotifySinkDev(const AudioEventType type, const json Param, const std::string dhId); int32_t NotifyHDF(const AudioEventType type, const std::string result); int32_t OpenCtrlTrans(const AudioEvent &event); int32_t CloseCtrlTrans(const AudioEvent &event, bool isSpk); AudioEventType getEventTypeFromArgs(const std::string &args); - void to_json(cJSON **j, const AudioParam ¶m); + void to_json(json &j, const AudioParam ¶m); int32_t SendAudioEventToRemote(const AudioEvent &event); int32_t CloseSpkOld(const std::string &args); int32_t CloseSpkNew(const std::string &args); diff --git a/services/audiomanager/managersource/include/dmic_dev.h b/services/audiomanager/managersource/include/dmic_dev.h index 751f91ca..68d49948 100644 --- a/services/audiomanager/managersource/include/dmic_dev.h +++ b/services/audiomanager/managersource/include/dmic_dev.h @@ -19,7 +19,7 @@ #include #include #include -#include "cJSON.h" +#include "nlohmann/json.hpp" #include "audio_param.h" #include "audio_status.h" @@ -31,6 +31,8 @@ #include "iaudio_event_callback.h" #include "idaudio_hdi_callback.h" +using json = nlohmann::json; + namespace OHOS { namespace DistributedHardware { class DMicDev : public IDAudioHdiCallback, diff --git a/services/audiomanager/managersource/include/dspeaker_dev.h b/services/audiomanager/managersource/include/dspeaker_dev.h index 397a15fb..0b2f8a5e 100644 --- a/services/audiomanager/managersource/include/dspeaker_dev.h +++ b/services/audiomanager/managersource/include/dspeaker_dev.h @@ -19,7 +19,7 @@ #include #include #include -#include "cJSON.h" +#include "nlohmann/json.hpp" #include "audio_param.h" #include "ashmem.h" @@ -30,6 +30,8 @@ #include "iaudio_datatrans_callback.h" #include "idaudio_hdi_callback.h" +using json = nlohmann::json; + namespace OHOS { namespace DistributedHardware { class DSpeakerDev : public IDAudioHdiCallback, diff --git a/services/audiomanager/managersource/src/daudio_source_dev.cpp b/services/audiomanager/managersource/src/daudio_source_dev.cpp index 915668b4..1ae4cbc0 100644 --- a/services/audiomanager/managersource/src/daudio_source_dev.cpp +++ b/services/audiomanager/managersource/src/daudio_source_dev.cpp @@ -15,7 +15,6 @@ #include "daudio_source_dev.h" -#include #include #include "daudio_constants.h" @@ -118,42 +117,32 @@ int32_t DAudioSourceDev::EnableDAudio(const std::string &dhId, const std::string DHLOGE("Event handler is null."); return ERR_DH_AUDIO_NULLPTR; } - - cJSON *jParam = cJSON_CreateObject(); - if (jParam == nullptr) { - DHLOGE("Failed to create JSON object."); - return ERR_DH_AUDIO_NULLPTR; - } - cJSON_AddStringToObject(jParam, KEY_DEV_ID, devId_.c_str()); - cJSON_AddStringToObject(jParam, KEY_DH_ID, dhId.c_str()); - cJSON_AddStringToObject(jParam, KEY_ATTRS, attrs.c_str()); - auto eventParam = std::shared_ptr(jParam, cJSON_Delete); + json jParam = { { KEY_DEV_ID, devId_ }, { KEY_DH_ID, dhId }, { KEY_ATTRS, attrs } }; + auto eventParam = std::make_shared(jParam); auto msgEvent = AppExecFwk::InnerEvent::Get(EVENT_DAUDIO_ENABLE, eventParam, 0); if (!handler_->SendEvent(msgEvent, 0, AppExecFwk::EventQueue::Priority::IMMEDIATE)) { DHLOGE("Send event failed."); return ERR_DH_AUDIO_FAILED; } - DHLOGD("Enable audio task generated successfully."); + DHLOGD("Enable audio task generate successfully."); return DH_SUCCESS; } -int32_t DAudioSourceDev::DisableDAudioInner(const std::string &dhId) +int32_t DAudioSourceDev::DisableDAudio(const std::string &dhId) { - cJSON *jParamClose = cJSON_CreateObject(); - if (jParamClose == nullptr) { - DHLOGE("Failed to create JSON object."); - return ERR_DH_AUDIO_NULLPTR; - } - cJSON_AddStringToObject(jParamClose, KEY_DH_ID, dhId.c_str()); - char *closeArg = cJSON_PrintUnformatted(jParamClose); - if (closeArg == nullptr) { - DHLOGE("Failed to create JSON data."); - cJSON_Delete(jParamClose); + DHLOGI("Disable audio device, dhId: %s.", dhId.c_str()); + isRpcOpen_.store(false); + if (handler_ == nullptr) { + DHLOGE("Event handler is null."); return ERR_DH_AUDIO_NULLPTR; } - std::string closeStr(closeArg); - AudioEvent event(AudioEventType::EVENT_UNKNOWN, std::string(closeStr)); + if (!CheckIsNum(dhId)) { + DHLOGE("Disable audio device dhId param error."); + return ERR_DH_AUDIO_SA_DISABLE_PARAM_INVALID; + } + json jParamClose = { { KEY_DH_ID, dhId } }; + AudioEvent event(AudioEventType::EVENT_UNKNOWN, jParamClose.dump()); int32_t dhIdNum = std::stoi(dhId); switch (GetDevTypeByDHId(dhIdNum)) { case AUDIO_DEVICE_TYPE_SPEAKER: @@ -165,49 +154,18 @@ int32_t DAudioSourceDev::DisableDAudioInner(const std::string &dhId) HandleCloseDMic(event); break; default: - cJSON_Delete(jParamClose); - cJSON_free(closeArg); DHLOGE("Unknown audio device."); return ERR_DH_AUDIO_NOT_SUPPORT; } - cJSON_Delete(jParamClose); - cJSON_free(closeArg); - return DH_SUCCESS; -} - -int32_t DAudioSourceDev::DisableDAudio(const std::string &dhId) -{ - DHLOGI("Disable audio device, dhId: %s.", dhId.c_str()); - isRpcOpen_.store(false); - if (handler_ == nullptr) { - DHLOGE("Event handler is null."); - return ERR_DH_AUDIO_NULLPTR; - } - if (!CheckIsNum(dhId)) { - DHLOGE("Disable audio device dhId param error."); - return ERR_DH_AUDIO_SA_DISABLE_PARAM_INVALID; - } - int32_t ret = DisableDAudioInner(dhId); - if (ret != DH_SUCCESS) { - DHLOGE("Failed to disable audio,result is: %d", ret); - return ret; - } - - cJSON *jParam = cJSON_CreateObject(); - if (jParam == nullptr) { - DHLOGE("Failed to create JSON object."); - return ERR_DH_AUDIO_NULLPTR; - } - cJSON_AddStringToObject(jParam, KEY_DEV_ID, devId_.c_str()); - cJSON_AddStringToObject(jParam, KEY_DH_ID, dhId.c_str()); - auto eventParam = std::shared_ptr(jParam, cJSON_Delete); + json jParam = { { KEY_DEV_ID, devId_ }, { KEY_DH_ID, dhId } }; + auto eventParam = std::make_shared(jParam); auto msgEvent = AppExecFwk::InnerEvent::Get(EVENT_DAUDIO_DISABLE, eventParam, 0); if (!handler_->SendEvent(msgEvent, 0, AppExecFwk::EventQueue::Priority::IMMEDIATE)) { DHLOGE("Send event failed."); return ERR_DH_AUDIO_FAILED; } - DHLOGD("Disable audio task generated successfully."); + DHLOGD("Disable audio task generate successfully."); return DH_SUCCESS; } @@ -404,29 +362,20 @@ int32_t DAudioSourceDev::HandleNotifyRPC(const AudioEvent &event) if (event.content.length() > DAUDIO_MAX_JSON_LEN || event.content.empty()) { return ERR_DH_AUDIO_SA_PARAM_INVALID; } - cJSON *jParam = cJSON_Parse(event.content.c_str()); - if (jParam == nullptr) { - DHLOGE("Failed to parse JSON data"); - cJSON_Delete(jParam); - return ERR_DH_AUDIO_FAILED; - } + json jParam = json::parse(event.content, nullptr, false); if (!JsonParamCheck(jParam, { KEY_RESULT })) { - DHLOGE("Not found the keys."); - cJSON_Delete(jParam); return ERR_DH_AUDIO_FAILED; } - rpcResult_ = (cJSON_IsTrue(cJSON_GetObjectItem(jParam, KEY_RESULT)) == 1) ? true : false; + rpcResult_ = (jParam[KEY_RESULT] == DH_SUCCESS) ? true : false; DHLOGD("Notify RPC event: %d, result: %d.", event.type, rpcResult_); std::map::iterator iter = eventNotifyMap_.find(event.type); if (iter == eventNotifyMap_.end()) { - cJSON_Delete(jParam); DHLOGE("Invalid eventType."); return ERR_DH_AUDIO_NOT_FOUND_KEY; } rpcNotify_ = iter->second; rpcWaitCond_.notify_all(); - cJSON_Delete(jParam); return DH_SUCCESS; } @@ -634,44 +583,22 @@ int32_t DAudioSourceDev::TaskEnableDAudio(const std::string &args) if (args.length() > DAUDIO_MAX_JSON_LEN || args.empty()) { return ERR_DH_AUDIO_SA_PARAM_INVALID; } - - cJSON *jParam = cJSON_Parse(args.c_str()); - if (jParam == nullptr) { - DHLOGE("Failed to parse JSON parameter."); - cJSON_Delete(jParam); - return ERR_DH_AUDIO_FAILED; - } - if (!JsonParamCheck(jParam, { KEY_DH_ID, KEY_ATTRS }) || - !CheckIsNum(std::string(cJSON_GetObjectItemCaseSensitive(jParam, KEY_DH_ID)->valuestring))) { - cJSON_Delete(jParam); + json jParam = json::parse(args, nullptr, false); + if (!JsonParamCheck(jParam, { KEY_DH_ID, KEY_ATTRS }) || !CheckIsNum((std::string)jParam[KEY_DH_ID])) { DHLOGE("The keys or values is invalid."); return ERR_DH_AUDIO_SA_ENABLE_PARAM_INVALID; } - cJSON *jsonDhId = cJSON_GetObjectItemCaseSensitive(jParam, KEY_DH_ID); - if (jsonDhId == nullptr) { - DHLOGE("Failed to get object item."); - cJSON_Delete(jParam); - return ERR_DH_AUDIO_NULLPTR; - } - int32_t dhId = std::atoi(jsonDhId->valuestring); - char *attrs = cJSON_PrintUnformatted(cJSON_GetObjectItem(jParam, KEY_ATTRS)); - std::string attrsStr(attrs); - int32_t result = 0; + int32_t dhId = std::stoi((std::string)jParam[KEY_DH_ID]); + switch (GetDevTypeByDHId(dhId)) { case AUDIO_DEVICE_TYPE_SPEAKER: - result = EnableDSpeaker(dhId, attrsStr); - break; + return EnableDSpeaker(dhId, jParam[KEY_ATTRS]); case AUDIO_DEVICE_TYPE_MIC: - result = EnableDMic(dhId, attrsStr); - break; + return EnableDMic(dhId, jParam[KEY_ATTRS]); default: DHLOGE("Unknown audio device."); - result = ERR_DH_AUDIO_NOT_SUPPORT; - break; + return ERR_DH_AUDIO_NOT_SUPPORT; } - cJSON_Delete(jParam); - cJSON_free(attrs); - return result; } int32_t DAudioSourceDev::EnableDSpeaker(const int32_t dhId, const std::string &attrs) @@ -706,29 +633,12 @@ void DAudioSourceDev::OnEnableTaskResult(int32_t resultCode, const std::string & if (result.length() > DAUDIO_MAX_JSON_LEN || result.empty()) { return; } - cJSON *jParam = cJSON_Parse(result.c_str()); - if (jParam == nullptr) { - DHLOGE("Failed to parse JSON parameter."); - cJSON_Delete(jParam); - return; - } + json jParam = json::parse(result, nullptr, false); if (!JsonParamCheck(jParam, { KEY_DEV_ID, KEY_DH_ID })) { DHLOGE("Not found the keys."); - cJSON_Delete(jParam); return; } - char *devId = cJSON_PrintUnformatted(cJSON_GetObjectItem(jParam, KEY_DEV_ID)); - std::string devIdStr(devId); - char *dhId = cJSON_PrintUnformatted(cJSON_GetObjectItem(jParam, KEY_DH_ID)); - std::string dhIdStr(dhId); - mgrCallback_->OnEnableAudioResult(devIdStr, dhIdStr, resultCode); - cJSON_Delete(jParam); - if (devId != nullptr) { - cJSON_free(devId); - } - if (dhId != nullptr) { - cJSON_free(dhId); - } + mgrCallback_->OnEnableAudioResult(jParam[KEY_DEV_ID], jParam[KEY_DH_ID], resultCode); } int32_t DAudioSourceDev::TaskDisableDAudio(const std::string &args) @@ -737,39 +647,20 @@ int32_t DAudioSourceDev::TaskDisableDAudio(const std::string &args) if (args.length() > DAUDIO_MAX_JSON_LEN || args.empty()) { return ERR_DH_AUDIO_SA_PARAM_INVALID; } - cJSON *jParam = cJSON_Parse(args.c_str()); - if (jParam == nullptr) { - DHLOGE("Failed to parse JSON parameter."); - cJSON_Delete(jParam); - return ERR_DH_AUDIO_FAILED; - } - if (!JsonParamCheck(jParam, { KEY_DH_ID }) || - !CheckIsNum(std::string(cJSON_GetObjectItem(jParam, KEY_DH_ID)->valuestring))) { - cJSON_Delete(jParam); - DHLOGE("Not found the keys."); + json jParam = json::parse(args, nullptr, false); + if (!JsonParamCheck(jParam, { KEY_DH_ID }) || !CheckIsNum((std::string)jParam[KEY_DH_ID])) { return ERR_DH_AUDIO_SA_DISABLE_PARAM_INVALID; } - cJSON *jsonDhId = cJSON_GetObjectItemCaseSensitive(jParam, KEY_DH_ID); - if (jsonDhId == nullptr) { - DHLOGE("Failed to get object item."); - return ERR_DH_AUDIO_NULLPTR; - } - int32_t dhId = std::atoi(jsonDhId->valuestring); - int32_t result = 0; + int32_t dhId = std::stoi((std::string)jParam[KEY_DH_ID]); switch (GetDevTypeByDHId(dhId)) { case AUDIO_DEVICE_TYPE_SPEAKER: - result = DisableDSpeaker(dhId); - break; + return DisableDSpeaker(dhId); case AUDIO_DEVICE_TYPE_MIC: - result = DisableDMic(dhId); - break; + return DisableDMic(dhId); default: DHLOGE("Unknown audio device."); - result = ERR_DH_AUDIO_NOT_SUPPORT; - break; + return ERR_DH_AUDIO_NOT_SUPPORT; } - cJSON_Delete(jParam); - return result; } int32_t DAudioSourceDev::DisableDSpeaker(const int32_t dhId) @@ -804,29 +695,12 @@ void DAudioSourceDev::OnDisableTaskResult(int32_t resultCode, const std::string if (result.length() > DAUDIO_MAX_JSON_LEN || result.empty()) { return; } - cJSON *jParam = cJSON_Parse(result.c_str()); - if (jParam == nullptr) { - DHLOGE("Failed to parse JSON parameter."); - cJSON_Delete(jParam); - return; - } + json jParam = json::parse(result, nullptr, false); if (!JsonParamCheck(jParam, { KEY_DEV_ID, KEY_DH_ID })) { DHLOGE("Not found the keys."); - cJSON_Delete(jParam); return; } - char *devId = cJSON_PrintUnformatted(cJSON_GetObjectItem(jParam, KEY_DEV_ID)); - std::string devIdStr(devId); - char *dhId = cJSON_PrintUnformatted(cJSON_GetObjectItem(jParam, KEY_DH_ID)); - std::string dhIdStr(dhId); - mgrCallback_->OnDisableAudioResult(devIdStr, dhIdStr, resultCode); - cJSON_Delete(jParam); - if (devId != nullptr) { - cJSON_free(devId); - } - if (dhId != nullptr) { - cJSON_free(dhId); - } + mgrCallback_->OnDisableAudioResult(jParam[KEY_DEV_ID], jParam[KEY_DH_ID], resultCode); } int32_t DAudioSourceDev::TaskOpenDSpeaker(const std::string &args) @@ -839,51 +713,26 @@ int32_t DAudioSourceDev::TaskOpenDSpeaker(const std::string &args) if (args.length() > DAUDIO_MAX_JSON_LEN || args.empty()) { return ERR_DH_AUDIO_SA_PARAM_INVALID; } - cJSON *jParam = cJSON_Parse(args.c_str()); - if (jParam == nullptr) { - DHLOGE("Failed to parse JSON: %s", cJSON_GetErrorPtr()); - cJSON_Delete(jParam); - return ERR_DH_AUDIO_NULLPTR; - } + json jParam = json::parse(args, nullptr, false); if (!JsonParamCheck(jParam, { KEY_DH_ID })) { - DHLOGE("Not found the keys."); - cJSON_Delete(jParam); return ERR_DH_AUDIO_FAILED; } + int32_t ret = speaker_->InitSenderEngine(DAudioSourceManager::GetInstance().getSenderProvider()); if (ret != DH_SUCCESS) { DHLOGE("Speaker init sender Engine, error code %d.", ret); - cJSON_Delete(jParam); return ret; } - cJSON *jAudioParam = cJSON_CreateObject(); - if (jAudioParam == nullptr) { - DHLOGE("Failed to parse JSON: %s", cJSON_GetErrorPtr()); - return ERR_DH_AUDIO_NULLPTR; - } - to_json(&jAudioParam, speaker_->GetAudioParam()); - ret = NotifySinkDev(OPEN_SPEAKER, jAudioParam, std::string(cJSON_GetObjectItem(jParam, KEY_DH_ID)->valuestring)); + + json jAudioParam; + to_json(jAudioParam, speaker_->GetAudioParam()); + ret = NotifySinkDev(OPEN_SPEAKER, jAudioParam, jParam[KEY_DH_ID]); if (ret != DH_SUCCESS) { DHLOGE("Notify sink open speaker failed, error code %d.", ret); - cJSON_Delete(jParam); - cJSON_Delete(jAudioParam); - return ret; - } - ret = OpenDSpeakerInner(); - if (ret != DH_SUCCESS) { - DHLOGE("Task Open DSpeaker Execute failed, error code %d.", ret); - cJSON_Delete(jParam); - cJSON_Delete(jAudioParam); return ret; } - cJSON_Delete(jParam); - cJSON_Delete(jAudioParam); - return DH_SUCCESS; -} -int32_t DAudioSourceDev::OpenDSpeakerInner() -{ - int32_t ret = speaker_->SetUp(); + ret = speaker_->SetUp(); if (ret != DH_SUCCESS) { DHLOGE("Speaker setup failed, error code %d.", ret); return ret; @@ -914,26 +763,12 @@ int32_t DAudioSourceDev::CloseSpkOld(const std::string &args) closeStatus = false; } if (!speaker_->IsOpened()) { - cJSON *jAudioParam = cJSON_CreateObject(); - if (jAudioParam == nullptr) { - DHLOGE("Failed to create JSON object."); - return ERR_DH_AUDIO_NULLPTR; - } - cJSON *jParam = cJSON_Parse(args.c_str()); - if (jParam == nullptr) { - DHLOGE("Failed to parse JSON parameter."); - cJSON_Delete(jParam); - return ERR_DH_AUDIO_NULLPTR; - } + json jAudioParam; + json jParam = json::parse(args, nullptr, false); if (!JsonParamCheck(jParam, { KEY_DH_ID })) { - DHLOGE("Not found the keys."); - cJSON_Delete(jParam); - cJSON_Delete(jAudioParam); return ERR_DH_AUDIO_FAILED; } - NotifySinkDev(CLOSE_SPEAKER, jAudioParam, std::string(cJSON_GetObjectItem(jParam, KEY_DH_ID)->valuestring)); - cJSON_Delete(jParam); - cJSON_Delete(jAudioParam); + NotifySinkDev(CLOSE_SPEAKER, jAudioParam, jParam[KEY_DH_ID]); } if (!closeStatus) { return ERR_DH_AUDIO_FAILED; @@ -944,24 +779,13 @@ int32_t DAudioSourceDev::CloseSpkOld(const std::string &args) int32_t DAudioSourceDev::CloseSpkNew(const std::string &args) { DHLOGI("Close speaker new"); - cJSON *jAudioParam = cJSON_CreateObject(); - if (jAudioParam == nullptr) { - DHLOGE("Failed to create JSON object."); - return ERR_DH_AUDIO_NULLPTR; - } - cJSON *jParam = cJSON_Parse(args.c_str()); - if (jParam == nullptr) { - DHLOGE("Failed to parse JSON parameter."); - cJSON_Delete(jParam); - return ERR_DH_AUDIO_NULLPTR; - } + json jAudioParam; + json jParam = json::parse(args, nullptr, false); if (!JsonParamCheck(jParam, { KEY_DH_ID })) { - DHLOGE("Task close speaker new, json param check failed."); - cJSON_Delete(jParam); - cJSON_Delete(jAudioParam); + DHLOGE("Task close speaker, json param check failed."); return ERR_DH_AUDIO_FAILED; } - NotifySinkDev(CLOSE_SPEAKER, jAudioParam, std::string(cJSON_GetObjectItem(jParam, KEY_DH_ID)->valuestring)); + NotifySinkDev(CLOSE_SPEAKER, jAudioParam, jParam[KEY_DH_ID]); bool closeStatus = true; int32_t ret = speaker_->Stop(); if (ret != DH_SUCCESS) { @@ -974,12 +798,8 @@ int32_t DAudioSourceDev::CloseSpkNew(const std::string &args) closeStatus = false; } if (!closeStatus) { - cJSON_Delete(jParam); - cJSON_Delete(jAudioParam); return ERR_DH_AUDIO_FAILED; } - cJSON_Delete(jParam); - cJSON_Delete(jAudioParam); return DH_SUCCESS; } @@ -1025,54 +845,20 @@ int32_t DAudioSourceDev::TaskOpenDMic(const std::string &args) return ret; } - cJSON *jParam = cJSON_Parse(args.c_str()); - if (jParam == nullptr) { - DHLOGE("Failed to parse JSON: %s", cJSON_GetErrorPtr()); - cJSON_Delete(jParam); - mic_->Release(); - return ERR_DH_AUDIO_FAILED; - } + json jAudioParam; + json jParam = json::parse(args, nullptr, false); if (!JsonParamCheck(jParam, { KEY_DH_ID })) { - cJSON_Delete(jParam); return ERR_DH_AUDIO_FAILED; } - - ret = NotifySinkDevOpenMic(jParam); - if (ret != DH_SUCCESS) { - cJSON_Delete(jParam); - return ret; - } - - ret = OpenDMicInner(); - if (ret != DH_SUCCESS) { - cJSON_Delete(jParam); - return ret; - } - cJSON_Delete(jParam); - return DH_SUCCESS; -} - -int32_t DAudioSourceDev::NotifySinkDevOpenMic(cJSON *jParam) -{ - cJSON *jAudioParam = cJSON_CreateObject(); - if (jAudioParam == nullptr) { - return ERR_DH_AUDIO_NULLPTR; - } - to_json(&jAudioParam, mic_->GetAudioParam()); - int32_t ret = NotifySinkDev(OPEN_MIC, jAudioParam, cJSON_GetObjectItem(jParam, KEY_DH_ID)->valuestring); + to_json(jAudioParam, mic_->GetAudioParam()); + ret = NotifySinkDev(OPEN_MIC, jAudioParam, jParam[KEY_DH_ID]); if (ret != DH_SUCCESS) { DHLOGE("Notify sink open mic failed, error code %d.", ret); mic_->Release(); - cJSON_Delete(jAudioParam); return ret; } - cJSON_Delete(jAudioParam); - return DH_SUCCESS; -} -int32_t DAudioSourceDev::OpenDMicInner() -{ - int32_t ret = mic_->Start(); + ret = mic_->Start(); if (ret != DH_SUCCESS) { DHLOGE("Mic start failed, error code %d.", ret); mic_->Stop(); @@ -1098,26 +884,13 @@ int32_t DAudioSourceDev::CloseMicOld(const std::string &args) closeStatus = false; } if (!mic_->IsOpened()) { - cJSON *jAudioParam = cJSON_CreateObject(); - if (jAudioParam == nullptr) { - DHLOGE("Failed to create JSON object."); - return ERR_DH_AUDIO_NULLPTR; - } - cJSON *jParam = cJSON_Parse(args.c_str()); - if (jParam == nullptr) { - DHLOGE("Failed to parse JSON parameter."); - cJSON_Delete(jParam); - return ERR_DH_AUDIO_NULLPTR; - } + json jAudioParam; + json jParam = json::parse(args, nullptr, false); if (!JsonParamCheck(jParam, { KEY_DH_ID })) { DHLOGE("Task close mic, json param check failed."); - cJSON_Delete(jAudioParam); - cJSON_Delete(jParam); return ERR_DH_AUDIO_FAILED; } - NotifySinkDev(CLOSE_MIC, jAudioParam, std::string(cJSON_GetObjectItem(jParam, KEY_DH_ID)->valuestring)); - cJSON_Delete(jAudioParam); - cJSON_Delete(jParam); + NotifySinkDev(CLOSE_MIC, jAudioParam, jParam[KEY_DH_ID]); } if (!closeStatus) { return ERR_DH_AUDIO_FAILED; @@ -1128,24 +901,13 @@ int32_t DAudioSourceDev::CloseMicOld(const std::string &args) int32_t DAudioSourceDev::CloseMicNew(const std::string &args) { DHLOGI("Close mic new."); - cJSON *jAudioParam = cJSON_CreateObject(); - if (jAudioParam == nullptr) { - DHLOGE("Failed to create JSON object."); - return ERR_DH_AUDIO_NULLPTR; - } - cJSON *jParam = cJSON_Parse(args.c_str()); - if (jParam == nullptr) { - DHLOGE("Failed to parse JSON parameter."); - cJSON_Delete(jParam); - return ERR_DH_AUDIO_NULLPTR; - } + json jAudioParam; + json jParam = json::parse(args, nullptr, false); if (!JsonParamCheck(jParam, { KEY_DH_ID })) { DHLOGE("Task close mic, json param check failed."); - cJSON_Delete(jAudioParam); - cJSON_Delete(jParam); return ERR_DH_AUDIO_FAILED; } - NotifySinkDev(CLOSE_MIC, jAudioParam, std::string(cJSON_GetObjectItem(jParam, KEY_DH_ID)->valuestring)); + NotifySinkDev(CLOSE_MIC, jAudioParam, jParam[KEY_DH_ID]); bool closeStatus = true; int32_t ret = mic_->Stop(); @@ -1159,12 +921,8 @@ int32_t DAudioSourceDev::CloseMicNew(const std::string &args) closeStatus = false; } if (!closeStatus) { - cJSON_Delete(jAudioParam); - cJSON_Delete(jParam); return ERR_DH_AUDIO_FAILED; } - cJSON_Delete(jAudioParam); - cJSON_Delete(jParam); return DH_SUCCESS; } @@ -1330,60 +1088,35 @@ void DAudioSourceDev::OnTaskResult(int32_t resultCode, const std::string &result funcName.c_str()); } -void DAudioSourceDev::CleanupJson(cJSON *jParamCopy, cJSON *jParam, char *content) -{ - cJSON_Delete(jParamCopy); - cJSON_Delete(jParam); - cJSON_free(content); -} - -int32_t DAudioSourceDev::NotifySinkDev(const AudioEventType type, const cJSON *param, const std::string dhId) +int32_t DAudioSourceDev::NotifySinkDev(const AudioEventType type, const json Param, const std::string dhId) { if (!isRpcOpen_.load()) { DHLOGE("Network connection failure, rpc is not open!"); return ERR_DH_AUDIO_FAILED; } - cJSON *jParam = cJSON_CreateObject(); - if (jParam == nullptr) { - DHLOGE("Failed to create JSON object."); - return ERR_DH_AUDIO_NULLPTR; - } - cJSON_AddStringToObject(jParam, KEY_DH_ID, dhId.c_str()); - cJSON_AddNumberToObject(jParam, KEY_EVENT_TYPE, static_cast(type)); - cJSON *jParamCopy = cJSON_Duplicate(param, 1); - cJSON_AddItemToObject(jParam, KEY_AUDIO_PARAM, jParamCopy); std::random_device rd; const uint32_t randomTaskCode = rd(); constexpr uint32_t eventOffset = 4; - cJSON_AddStringToObject(jParam, KEY_RANDOM_TASK_CODE, std::to_string(randomTaskCode).c_str()); - + json jParam = { { KEY_DH_ID, dhId }, + { KEY_EVENT_TYPE, type }, + { KEY_AUDIO_PARAM, Param }, + { KEY_RANDOM_TASK_CODE, std::to_string(randomTaskCode) } }; DHLOGD("Notify sink dev, new engine, random task code:%s", std::to_string(randomTaskCode).c_str()); - if (speaker_ == nullptr || mic_ == nullptr) { - cJSON_Delete(jParamCopy); - cJSON_Delete(jParam); DHLOGE("speaker or mic dev is null."); return ERR_DH_AUDIO_NULLPTR; } - if (type == OPEN_CTRL || type == CLOSE_CTRL) { - cJSON_Delete(jParamCopy); - cJSON_Delete(jParam); DHLOGE("In new engine mode, ctrl is not allowed."); return ERR_DH_AUDIO_NULLPTR; } - char *content = cJSON_PrintUnformatted(jParam); - std::string contentStr(content); - speaker_->SendMessage(static_cast(type), contentStr, devId_); - mic_->SendMessage(static_cast(type), contentStr, devId_); - + speaker_->SendMessage(static_cast(type), jParam.dump(), devId_); + mic_->SendMessage(static_cast(type), jParam.dump(), devId_); if (type == CLOSE_SPEAKER || type == CLOSE_MIC) { // Close spk || Close mic do not need to wait RPC - CleanupJson(jParamCopy, jParam, content); return DH_SUCCESS; } - CleanupJson(jParamCopy, jParam, content); return WaitForRPC(static_cast(static_cast(type) + eventOffset)); } @@ -1424,22 +1157,15 @@ AudioEventType DAudioSourceDev::getEventTypeFromArgs(const std::string &args) return AudioEventType::VOLUME_SET; } -void DAudioSourceDev::to_json(cJSON **j, const AudioParam ¶m) +void DAudioSourceDev::to_json(json &j, const AudioParam ¶m) { - *j = cJSON_CreateObject(); - if (*j == nullptr) { - DHLOGE("Failed to create JSON object."); - return; - } - cJSON_AddNumberToObject(*j, KEY_SAMPLING_RATE, param.comParam.sampleRate); - cJSON_AddNumberToObject(*j, KEY_FORMAT, param.comParam.bitFormat); - cJSON_AddNumberToObject(*j, KEY_CHANNELS, param.comParam.channelMask); - cJSON_AddNumberToObject(*j, KEY_FRAMESIZE, param.comParam.frameSize); - cJSON_AddNumberToObject(*j, KEY_CONTENT_TYPE, param.renderOpts.contentType); - cJSON_AddNumberToObject(*j, KEY_STREAM_USAGE, param.renderOpts.streamUsage); - cJSON_AddNumberToObject(*j, KEY_RENDER_FLAGS, param.renderOpts.renderFlags); - cJSON_AddNumberToObject(*j, KEY_CAPTURE_FLAGS, param.captureOpts.capturerFlags); - cJSON_AddNumberToObject(*j, KEY_SOURCE_TYPE, param.captureOpts.sourceType); + j = json { + { KEY_SAMPLING_RATE, param.comParam.sampleRate }, { KEY_FORMAT, param.comParam.bitFormat }, + { KEY_CHANNELS, param.comParam.channelMask }, { KEY_FRAMESIZE, param.comParam.frameSize }, + { KEY_CONTENT_TYPE, param.renderOpts.contentType }, { KEY_STREAM_USAGE, param.renderOpts.streamUsage }, + { KEY_RENDER_FLAGS, param.renderOpts.renderFlags }, { KEY_CAPTURE_FLAGS, param.captureOpts.capturerFlags }, + { KEY_SOURCE_TYPE, param.captureOpts.sourceType }, + }; } DAudioSourceDev::SourceEventHandler::SourceEventHandler(const std::shared_ptr &runner, @@ -1484,7 +1210,7 @@ void DAudioSourceDev::SourceEventHandler::EnableDAudioCallback(const AppExecFwk: DHLOGE("The input event is null."); return; } - cJSON *jParam = event->GetSharedObject().get(); + std::shared_ptr jParam = event->GetSharedObject(); if (jParam == nullptr) { DHLOGE("The json parameter is null."); return; @@ -1494,17 +1220,11 @@ void DAudioSourceDev::SourceEventHandler::EnableDAudioCallback(const AppExecFwk: DHLOGE("Source dev is invalid."); return; } - char* jsonString = cJSON_PrintUnformatted(jParam); - std::string jParamStr(jsonString, jsonString + strlen(jsonString)); - if (jsonString != nullptr) { - cJSON_free(jsonString); - } - DHLOGI("EnableDAudioCallback jParamStr is: %s", jParamStr.c_str()); - int32_t ret = sourceDevObj->TaskEnableDAudio(jParamStr); + int32_t ret = sourceDevObj->TaskEnableDAudio(jParam->dump()); if (ret != DH_SUCCESS) { DHLOGE("Open ctrl channel failed."); } - sourceDevObj->OnEnableTaskResult(ret, jParamStr, ""); + sourceDevObj->OnEnableTaskResult(ret, jParam->dump(), ""); } void DAudioSourceDev::SourceEventHandler::DisableDAudioCallback(const AppExecFwk::InnerEvent::Pointer &event) @@ -1513,7 +1233,7 @@ void DAudioSourceDev::SourceEventHandler::DisableDAudioCallback(const AppExecFwk DHLOGE("The input event is null."); return; } - cJSON *jParam = event->GetSharedObject().get(); + std::shared_ptr jParam = event->GetSharedObject(); if (jParam == nullptr) { DHLOGE("The json parameter is null."); return; @@ -1523,17 +1243,11 @@ void DAudioSourceDev::SourceEventHandler::DisableDAudioCallback(const AppExecFwk DHLOGE("Source dev is invalid."); return; } - char* jsonString = cJSON_PrintUnformatted(jParam); - std::string jParamStr(jsonString, jsonString + strlen(jsonString)); - if (jsonString != nullptr) { - cJSON_free(jsonString); - } - DHLOGI("DisableDAudioCallback jParamStr is: %s", jParamStr.c_str()); - int32_t ret = sourceDevObj->TaskDisableDAudio(jParamStr); + int32_t ret = sourceDevObj->TaskDisableDAudio(jParam->dump()); if (ret != DH_SUCCESS) { DHLOGE("Disable distributed audio failed."); } - sourceDevObj->OnDisableTaskResult(ret, jParamStr, ""); + sourceDevObj->OnDisableTaskResult(ret, jParam->dump(), ""); } void DAudioSourceDev::SourceEventHandler::OpenDSpeakerCallback(const AppExecFwk::InnerEvent::Pointer &event) diff --git a/services/audiomanager/managersource/src/daudio_source_manager.cpp b/services/audiomanager/managersource/src/daudio_source_manager.cpp index 8612977e..85923dc1 100644 --- a/services/audiomanager/managersource/src/daudio_source_manager.cpp +++ b/services/audiomanager/managersource/src/daudio_source_manager.cpp @@ -180,29 +180,21 @@ int32_t DAudioSourceManager::HandleDAudioNotify(const std::string &devId, const } // now ctrl channel is also goto here, please sure here not crash. - cJSON *jParam = cJSON_Parse(eventContent.c_str()); - if (jParam == nullptr) { - DHLOGE("Failed to parse JSON parameter."); - cJSON_Delete(jParam); - return ERR_DH_AUDIO_FAILED; - } + json jParam = json::parse(eventContent, nullptr, false); if (JsonParamCheck(jParam, { KEY_RANDOM_TASK_CODE })) { DHLOGD("Receive audio notify from sink, random task code: %s", - cJSON_GetObjectItemCaseSensitive(jParam, KEY_RANDOM_TASK_CODE)->valuestring); + ((std::string)jParam[KEY_RANDOM_TASK_CODE]).c_str()); } std::lock_guard lock(devMapMtx_); auto dev = audioDevMap_.find(devId); if (dev == audioDevMap_.end()) { - cJSON_Delete(jParam); DHLOGE("Audio device not exist."); return ERR_DH_AUDIO_SA_DEVICE_NOT_EXIST; } AudioEvent audioEvent(eventType, eventContent); audioDevMap_[devId].dev->NotifyEvent(audioEvent); - - cJSON_Delete(jParam); return DH_SUCCESS; } diff --git a/services/audiomanager/managersource/src/dmic_dev.cpp b/services/audiomanager/managersource/src/dmic_dev.cpp index 5f2a04f4..e2f15d0c 100644 --- a/services/audiomanager/managersource/src/dmic_dev.cpp +++ b/services/audiomanager/managersource/src/dmic_dev.cpp @@ -159,28 +159,11 @@ int32_t DMicDev::OpenDevice(const std::string &devId, const int32_t dhId) DHLOGE("Event callback is null"); return ERR_DH_AUDIO_SA_MICCALLBACK_NULL; } - - cJSON *jParam = cJSON_CreateObject(); - if (jParam == nullptr) { - DHLOGE("Failed to create cJSON object."); - return ERR_DH_AUDIO_TRANS_NULL_VALUE; - } - cJSON_AddStringToObject(jParam, KEY_DH_ID, std::to_string(dhId).c_str()); - - char *jsonData = cJSON_PrintUnformatted(jParam); - if (jsonData == nullptr) { - cJSON_Delete(jParam); - DHLOGE("Failed to create JSON data."); - return ERR_DH_AUDIO_TRANS_NULL_VALUE; - } - - std::string jsonDataStr(jsonData); - AudioEvent event(AudioEventType::OPEN_MIC, jsonDataStr); + json jParam = { { KEY_DH_ID, std::to_string(dhId) } }; + AudioEvent event(AudioEventType::OPEN_MIC, jParam.dump()); cbObj->NotifyEvent(event); DAudioHisysevent::GetInstance().SysEventWriteBehavior(DAUDIO_OPEN, devId, std::to_string(dhId), "daudio mic device open success."); - cJSON_Delete(jParam); - cJSON_free(jsonData); return DH_SUCCESS; } @@ -192,28 +175,11 @@ int32_t DMicDev::CloseDevice(const std::string &devId, const int32_t dhId) DHLOGE("Event callback is null"); return ERR_DH_AUDIO_SA_MICCALLBACK_NULL; } - - cJSON *jParam = cJSON_CreateObject(); - if (jParam == nullptr) { - DHLOGE("Failed to create cJSON object."); - return ERR_DH_AUDIO_TRANS_NULL_VALUE; - } - cJSON_AddStringToObject(jParam, KEY_DH_ID, std::to_string(dhId).c_str()); - - char *jsonData = cJSON_PrintUnformatted(jParam); - if (jsonData == nullptr) { - cJSON_Delete(jParam); - DHLOGE("Failed to create JSON data."); - return ERR_DH_AUDIO_TRANS_NULL_VALUE; - } - - std::string jsonDataStr(jsonData); - AudioEvent event(AudioEventType::CLOSE_MIC, jsonDataStr); + json jParam = { { KEY_DH_ID, std::to_string(dhId) } }; + AudioEvent event(AudioEventType::CLOSE_MIC, jParam.dump()); cbObj->NotifyEvent(event); DAudioHisysevent::GetInstance().SysEventWriteBehavior(DAUDIO_CLOSE, devId, std::to_string(dhId), "daudio mic device close success."); - cJSON_Delete(jParam); - cJSON_free(jsonData); curPort_ = 0; return DH_SUCCESS; } diff --git a/services/audiomanager/managersource/src/dspeaker_dev.cpp b/services/audiomanager/managersource/src/dspeaker_dev.cpp index 9ada4b8e..bc4bda05 100644 --- a/services/audiomanager/managersource/src/dspeaker_dev.cpp +++ b/services/audiomanager/managersource/src/dspeaker_dev.cpp @@ -152,27 +152,11 @@ int32_t DSpeakerDev::OpenDevice(const std::string &devId, const int32_t dhId) return ERR_DH_AUDIO_SA_EVENT_CALLBACK_NULL; } - cJSON *jParam = cJSON_CreateObject(); - if (jParam == nullptr) { - DHLOGE("Failed to create cJSON object."); - return ERR_DH_AUDIO_TRANS_NULL_VALUE; - } - cJSON_AddStringToObject(jParam, KEY_DH_ID, std::to_string(dhId).c_str()); - char *jsonData = cJSON_PrintUnformatted(jParam); - if (jsonData == nullptr) { - DHLOGE("Failed to create JSON data."); - return ERR_DH_AUDIO_TRANS_NULL_VALUE; - } - - std::string jsonDataStr(jsonData); - AudioEvent event(AudioEventType::OPEN_SPEAKER, jsonDataStr); + json jParam = { { KEY_DH_ID, std::to_string(dhId) } }; + AudioEvent event(AudioEventType::OPEN_SPEAKER, jParam.dump()); cbObj->NotifyEvent(event); DAudioHisysevent::GetInstance().SysEventWriteBehavior(DAUDIO_OPEN, devId, std::to_string(dhId), "daudio spk device open success."); - - cJSON_Delete(jParam); - cJSON_free(jsonData); - return DH_SUCCESS; } @@ -185,27 +169,11 @@ int32_t DSpeakerDev::CloseDevice(const std::string &devId, const int32_t dhId) return ERR_DH_AUDIO_SA_EVENT_CALLBACK_NULL; } - cJSON *jParam = cJSON_CreateObject(); - if (jParam == nullptr) { - DHLOGE("Failed to create cJSON object."); - return ERR_DH_AUDIO_TRANS_NULL_VALUE; - } - cJSON_AddStringToObject(jParam, KEY_DH_ID, std::to_string(dhId).c_str()); - char *jsonData = cJSON_PrintUnformatted(jParam); - if (jsonData == nullptr) { - DHLOGE("Failed to create JSON data."); - return ERR_DH_AUDIO_TRANS_NULL_VALUE; - } - - std::string jsonDataStr(jsonData); - AudioEvent event(AudioEventType::CLOSE_SPEAKER, jsonDataStr); + json jParam = { { KEY_DH_ID, std::to_string(dhId) } }; + AudioEvent event(AudioEventType::CLOSE_SPEAKER, jParam.dump()); cbObj->NotifyEvent(event); DAudioHisysevent::GetInstance().SysEventWriteBehavior(DAUDIO_CLOSE, devId, std::to_string(dhId), "daudio spk device close success."); - - cJSON_Delete(jParam); - cJSON_free(jsonData); - curPort_ = 0; return DH_SUCCESS; } diff --git a/services/audiomanager/servicesink/BUILD.gn b/services/audiomanager/servicesink/BUILD.gn index f6017f36..d7ce250d 100755 --- a/services/audiomanager/servicesink/BUILD.gn +++ b/services/audiomanager/servicesink/BUILD.gn @@ -17,7 +17,7 @@ import("../../../distributedaudio.gni") ohos_shared_library("distributed_audio_sink") { include_dirs = [ - "//third_party/cJSON", + "//third_party/json/include", "${fwk_common_path}/utils/include", ] @@ -87,7 +87,6 @@ ohos_shared_library("distributed_audio_sink") { "${audio_transport_path}/decodetransport:distributed_audio_decode_transport", "${audio_transport_path}/encodetransport:distributed_audio_encode_transport", "${services_path}/common:distributed_audio_utils", - "//third_party/cJSON:cjson", ] external_deps = [ diff --git a/services/audiomanager/servicesource/BUILD.gn b/services/audiomanager/servicesource/BUILD.gn index ca27245d..d0a6f69d 100755 --- a/services/audiomanager/servicesource/BUILD.gn +++ b/services/audiomanager/servicesource/BUILD.gn @@ -17,7 +17,7 @@ import("../../../distributedaudio.gni") ohos_shared_library("distributed_audio_source") { include_dirs = [ - "//third_party/cJSON", + "//third_party/json/include", "${driver_audio_path}/include", "${fwk_common_path}/utils/include", "${mediastandardfwk_path}/audiocapturer/include", @@ -89,7 +89,6 @@ ohos_shared_library("distributed_audio_source") { "${hdf_interfaces_path}/audioext/v1_0:libdaudioext_proxy_1.0", "${services_path}/common:distributed_audio_utils", "${services_path}/hdfaudioclient:daudio_client", - "//third_party/cJSON:cjson", ] external_deps = [ diff --git a/services/audiomanager/test/fuzztest/sourceserviceconfigdistributedhardware_fuzzer/BUILD.gn b/services/audiomanager/test/fuzztest/sourceserviceconfigdistributedhardware_fuzzer/BUILD.gn index ca83b774..7179b7e0 100644 --- a/services/audiomanager/test/fuzztest/sourceserviceconfigdistributedhardware_fuzzer/BUILD.gn +++ b/services/audiomanager/test/fuzztest/sourceserviceconfigdistributedhardware_fuzzer/BUILD.gn @@ -49,13 +49,10 @@ ohos_fuzztest("SourceServiceConfigDistributedHardwareFuzzTest") { "${innerkits_path}/native_cpp/audio_source/include", "${distributedaudio_path}/audiohandler/include", "${services_path}/audiomanager/servicesource/include", - "//third_party/cJSON", ] - deps = [ - "${services_path}/audiomanager/servicesource:distributed_audio_source", - "//third_party/cJSON:cjson", - ] + deps = + [ "${services_path}/audiomanager/servicesource:distributed_audio_source" ] defines = [ "HI_LOG_ENABLE", diff --git a/services/audiomanager/test/fuzztest/sourceservicedaudionotify_fuzzer/BUILD.gn b/services/audiomanager/test/fuzztest/sourceservicedaudionotify_fuzzer/BUILD.gn index 33f09616..16a24e8a 100644 --- a/services/audiomanager/test/fuzztest/sourceservicedaudionotify_fuzzer/BUILD.gn +++ b/services/audiomanager/test/fuzztest/sourceservicedaudionotify_fuzzer/BUILD.gn @@ -49,13 +49,10 @@ ohos_fuzztest("SourceServiceDAudioNotifyFuzzTest") { "${innerkits_path}/native_cpp/audio_source/include", "${distributedaudio_path}/audiohandler/include", "${services_path}/audiomanager/servicesource/include", - "//third_party/cJSON", ] - deps = [ - "${services_path}/audiomanager/servicesource:distributed_audio_source", - "//third_party/cJSON:cjson", - ] + deps = + [ "${services_path}/audiomanager/servicesource:distributed_audio_source" ] defines = [ "HI_LOG_ENABLE", diff --git a/services/audiomanager/test/fuzztest/sourceserviceinitsource_fuzzer/BUILD.gn b/services/audiomanager/test/fuzztest/sourceserviceinitsource_fuzzer/BUILD.gn index 8aaa7d14..f8f85525 100644 --- a/services/audiomanager/test/fuzztest/sourceserviceinitsource_fuzzer/BUILD.gn +++ b/services/audiomanager/test/fuzztest/sourceserviceinitsource_fuzzer/BUILD.gn @@ -49,13 +49,11 @@ ohos_fuzztest("SourceServiceInitSourceFuzzTest") { "${innerkits_path}/native_cpp/audio_source/include", "${distributedaudio_path}/audiohandler/include", "${services_path}/audiomanager/servicesource/include", - "//third_party/cJSON", ] deps = [ "${innerkits_path}/native_cpp/audio_source:distributed_audio_source_sdk", "${services_path}/audiomanager/servicesource:distributed_audio_source", - "//third_party/cJSON:cjson", ] defines = [ diff --git a/services/audiomanager/test/fuzztest/sourceserviceregisterdistributedhardware_fuzzer/BUILD.gn b/services/audiomanager/test/fuzztest/sourceserviceregisterdistributedhardware_fuzzer/BUILD.gn index d06f9777..6f550758 100644 --- a/services/audiomanager/test/fuzztest/sourceserviceregisterdistributedhardware_fuzzer/BUILD.gn +++ b/services/audiomanager/test/fuzztest/sourceserviceregisterdistributedhardware_fuzzer/BUILD.gn @@ -48,13 +48,10 @@ ohos_fuzztest("SourceServiceRegisterDistributedHardwareFuzzTest") { "${innerkits_path}/native_cpp/audio_source/include", "${distributedaudio_path}/audiohandler/include", "${services_path}/audiomanager/servicesource/include", - "//third_party/cJSON", ] - deps = [ - "${services_path}/audiomanager/servicesource:distributed_audio_source", - "//third_party/cJSON:cjson", - ] + deps = + [ "${services_path}/audiomanager/servicesource:distributed_audio_source" ] defines = [ "HI_LOG_ENABLE", diff --git a/services/audiomanager/test/fuzztest/sourceservicereleasesource_fuzzer/BUILD.gn b/services/audiomanager/test/fuzztest/sourceservicereleasesource_fuzzer/BUILD.gn index 0e5788b5..c1c309ed 100644 --- a/services/audiomanager/test/fuzztest/sourceservicereleasesource_fuzzer/BUILD.gn +++ b/services/audiomanager/test/fuzztest/sourceservicereleasesource_fuzzer/BUILD.gn @@ -49,13 +49,10 @@ ohos_fuzztest("SourceServiceReleaseSourceFuzzTest") { "${innerkits_path}/native_cpp/audio_source/include", "${distributedaudio_path}/audiohandler/include", "${services_path}/audiomanager/servicesource/include", - "//third_party/cJSON", ] - deps = [ - "${services_path}/audiomanager/servicesource:distributed_audio_source", - "//third_party/cJSON:cjson", - ] + deps = + [ "${services_path}/audiomanager/servicesource:distributed_audio_source" ] defines = [ "HI_LOG_ENABLE", diff --git a/services/audiomanager/test/fuzztest/sourceserviceunregisterdistributedhardware_fuzzer/BUILD.gn b/services/audiomanager/test/fuzztest/sourceserviceunregisterdistributedhardware_fuzzer/BUILD.gn index f3e3f75f..a07af4d0 100644 --- a/services/audiomanager/test/fuzztest/sourceserviceunregisterdistributedhardware_fuzzer/BUILD.gn +++ b/services/audiomanager/test/fuzztest/sourceserviceunregisterdistributedhardware_fuzzer/BUILD.gn @@ -48,13 +48,10 @@ ohos_fuzztest("SourceServiceUnregisterDistributedHardwareFuzzTest") { "${innerkits_path}/native_cpp/audio_source/include", "${distributedaudio_path}/audiohandler/include", "${services_path}/audiomanager/servicesource/include", - "//third_party/cJSON", ] - deps = [ - "${services_path}/audiomanager/servicesource:distributed_audio_source", - "//third_party/cJSON:cjson", - ] + deps = + [ "${services_path}/audiomanager/servicesource:distributed_audio_source" ] defines = [ "HI_LOG_ENABLE", diff --git a/services/audiomanager/test/unittest/managersink/BUILD.gn b/services/audiomanager/test/unittest/managersink/BUILD.gn index 5da82c9f..6e4d28ec 100644 --- a/services/audiomanager/test/unittest/managersink/BUILD.gn +++ b/services/audiomanager/test/unittest/managersink/BUILD.gn @@ -22,7 +22,7 @@ config("module_private_config") { visibility = [ ":*" ] include_dirs = [ - "//third_party/cJSON", + "//third_party/json/include", "${audio_framework_path}/audiopolicy/include", "${mediastandardfwk_path}/audiocapturer/include", "${mediastandardfwk_path}/audiocommon/include", @@ -73,7 +73,6 @@ ohos_unittest("DaudioSinkDevTest") { deps = [ "${services_path}/audiomanager/servicesink:distributed_audio_sink", - "//third_party/cJSON:cjson", "//third_party/googletest:gmock", "//third_party/googletest:gtest_main", ] diff --git a/services/audiomanager/test/unittest/managersink/src/daudio_sink_dev_test.cpp b/services/audiomanager/test/unittest/managersink/src/daudio_sink_dev_test.cpp index faec8977..08a60b63 100644 --- a/services/audiomanager/test/unittest/managersink/src/daudio_sink_dev_test.cpp +++ b/services/audiomanager/test/unittest/managersink/src/daudio_sink_dev_test.cpp @@ -399,12 +399,11 @@ HWTEST_F(DAudioSinkDevTest, TaskRenderStateChange_002, TestSize.Level1) { std::string args; std::string devId = "devId"; - cJSON *j = cJSON_CreateObject(); + json j; AudioParam audioParam; sinkDev_->audioCtrlMgr_ = std::make_shared(devId, sinkDev_); EXPECT_NE(DH_SUCCESS, sinkDev_->TaskRenderStateChange(args)); EXPECT_EQ(ERR_DH_AUDIO_FAILED, sinkDev_->from_json(j, audioParam)); - cJSON_Delete(j); } /** diff --git a/services/audiomanager/test/unittest/servicesink/BUILD.gn b/services/audiomanager/test/unittest/servicesink/BUILD.gn index 464a1e08..22218c46 100644 --- a/services/audiomanager/test/unittest/servicesink/BUILD.gn +++ b/services/audiomanager/test/unittest/servicesink/BUILD.gn @@ -23,6 +23,7 @@ config("module_private_config") { include_dirs = [ "${audio_framework_path}/audiopolicy/include", + "//third_party/json/include", "${fwk_common_path}/utils/include", "${mediastandardfwk_path}/audiocapturer/include", "${mediastandardfwk_path}/audiocommon/include", diff --git a/services/audiomanager/test/unittest/servicesource/BUILD.gn b/services/audiomanager/test/unittest/servicesource/BUILD.gn index be274d12..92f83870 100644 --- a/services/audiomanager/test/unittest/servicesource/BUILD.gn +++ b/services/audiomanager/test/unittest/servicesource/BUILD.gn @@ -22,6 +22,7 @@ config("module_private_config") { visibility = [ ":*" ] include_dirs = [ + "//third_party/json/include", "${audio_framework_path}/audiopolicy/include", "${driver_audio_path}/include", "${fwk_common_path}/utils/include", @@ -71,7 +72,6 @@ config("module_private_config") { "${services_path}/common/taskProcessor/include", "${services_path}/hdfaudioclient/include", "${softbusadapter_path}/include", - "//third_party/cJSON", ] } @@ -85,7 +85,6 @@ ohos_unittest("DaudioSourceServiceTest") { deps = [ "${services_path}/audiomanager/servicesource:distributed_audio_source", - "//third_party/cJSON:cjson", "//third_party/googletest:gmock", "//third_party/googletest:gtest_main", ] diff --git a/services/audiomanager/test/unittest/sourcedevice/BUILD.gn b/services/audiomanager/test/unittest/sourcedevice/BUILD.gn index fbad425b..0caca862 100644 --- a/services/audiomanager/test/unittest/sourcedevice/BUILD.gn +++ b/services/audiomanager/test/unittest/sourcedevice/BUILD.gn @@ -20,7 +20,7 @@ config("module_private_config") { visibility = [ ":*" ] include_dirs = [ - "//third_party/cJSON", + "//third_party/json/include", "${driver_audio_path}/include", "${fwk_common_path}/utils/include", "${mediastandardfwk_path}/audiocapturer/include", @@ -75,7 +75,6 @@ ohos_unittest("DaudioSourceDevTest") { "${hdf_interfaces_path}/audioext/v1_0:libdaudioext_proxy_1.0", "${services_path}/audiomanager/servicesource:distributed_audio_source", "${services_path}/common:distributed_audio_utils", - "//third_party/cJSON:cjson", "//third_party/googletest:gmock", "//third_party/googletest:gtest_main", ] diff --git a/services/audiomanager/test/unittest/sourcedevice/src/daudio_source_dev_test.cpp b/services/audiomanager/test/unittest/sourcedevice/src/daudio_source_dev_test.cpp index 8328aa1b..55846fed 100644 --- a/services/audiomanager/test/unittest/sourcedevice/src/daudio_source_dev_test.cpp +++ b/services/audiomanager/test/unittest/sourcedevice/src/daudio_source_dev_test.cpp @@ -436,11 +436,9 @@ HWTEST_F(DAudioSourceDevTest, HandleNotifyRPC_002, TestSize.Level1) */ HWTEST_F(DAudioSourceDevTest, HandleNotifyRPC_003, TestSize.Level1) { - cJSON *jParam = cJSON_CreateObject(); - EXPECT_NE(NULL, cJSON_AddNumberToObject(jParam, KEY_RESULT, DH_SUCCESS)); - AudioEvent event(CHANGE_PLAY_STATUS, std::string(cJSON_PrintUnformatted(jParam))); + json jParam = { { KEY_RESULT, DH_SUCCESS } }; + AudioEvent event(CHANGE_PLAY_STATUS, jParam.dump()); EXPECT_EQ(ERR_DH_AUDIO_NOT_FOUND_KEY, sourceDev_->HandleNotifyRPC(event)); - cJSON_Delete(jParam); event.type = NOTIFY_OPEN_SPEAKER_RESULT; EXPECT_EQ(DH_SUCCESS, sourceDev_->HandleNotifyRPC(event)); @@ -519,44 +517,20 @@ HWTEST_F(DAudioSourceDevTest, TaskEnableDAudio_001, TestSize.Level1) std::string tempLongStr(DAUDIO_MAX_JSON_LEN + 1, 'a'); EXPECT_EQ(ERR_DH_AUDIO_SA_PARAM_INVALID, sourceDev_->TaskEnableDAudio(tempLongStr)); - cJSON *jParam1 = cJSON_CreateObject(); - cJSON_AddStringToObject(jParam1, KEY_DEV_ID, DEV_ID.c_str()); - cJSON_AddStringToObject(jParam1, KEY_RESULT, "test_result"); - EXPECT_EQ(ERR_DH_AUDIO_SA_ENABLE_PARAM_INVALID, - sourceDev_->TaskEnableDAudio(std::string(cJSON_PrintUnformatted(jParam1)))); - cJSON_Delete(jParam1); - - cJSON *jParam2 = cJSON_CreateObject(); - cJSON_AddStringToObject(jParam2, KEY_DEV_ID, DEV_ID.c_str()); - cJSON_AddStringToObject(jParam2, KEY_DH_ID, "testDhId"); - cJSON_AddStringToObject(jParam2, KEY_ATTRS, ""); - EXPECT_EQ(ERR_DH_AUDIO_SA_ENABLE_PARAM_INVALID, - sourceDev_->TaskEnableDAudio(std::string(cJSON_PrintUnformatted(jParam2)))); - cJSON_Delete(jParam2); - - cJSON *jParam3 = cJSON_CreateObject(); - cJSON_AddStringToObject(jParam3, KEY_DEV_ID, DEV_ID.c_str()); - cJSON_AddStringToObject(jParam3, KEY_DH_ID, DH_ID_UNKNOWN.c_str()); - cJSON_AddStringToObject(jParam3, KEY_ATTRS, ""); - EXPECT_EQ(ERR_DH_AUDIO_NOT_SUPPORT, - sourceDev_->TaskEnableDAudio(std::string(cJSON_PrintUnformatted(jParam3)))); - cJSON_Delete(jParam3); - - cJSON *jParamSpk = cJSON_CreateObject(); - cJSON_AddStringToObject(jParamSpk, KEY_DEV_ID, DEV_ID.c_str()); - cJSON_AddStringToObject(jParamSpk, KEY_DH_ID, DH_ID_SPK.c_str()); - cJSON_AddStringToObject(jParamSpk, KEY_ATTRS, ""); - EXPECT_EQ(ERR_DH_AUDIO_FAILED, - sourceDev_->TaskEnableDAudio(std::string(cJSON_PrintUnformatted(jParamSpk)))); - cJSON_Delete(jParamSpk); - - cJSON *jParamMic = cJSON_CreateObject(); - cJSON_AddStringToObject(jParamMic, KEY_DEV_ID, DEV_ID.c_str()); - cJSON_AddStringToObject(jParamMic, KEY_DH_ID, DH_ID_MIC.c_str()); - cJSON_AddStringToObject(jParamMic, KEY_ATTRS, ""); - EXPECT_EQ(ERR_DH_AUDIO_FAILED, - sourceDev_->TaskEnableDAudio(std::string(cJSON_PrintUnformatted(jParamMic)))); - cJSON_Delete(jParamMic); + json jParam = { { KEY_DEV_ID, DEV_ID }, { KEY_RESULT, "test_result" } }; + EXPECT_EQ(ERR_DH_AUDIO_SA_ENABLE_PARAM_INVALID, sourceDev_->TaskEnableDAudio(jParam.dump())); + + jParam = { { KEY_DEV_ID, DEV_ID }, { KEY_DH_ID, "testDhId" }, { KEY_ATTRS, "" } }; + EXPECT_EQ(ERR_DH_AUDIO_SA_ENABLE_PARAM_INVALID, sourceDev_->TaskEnableDAudio(jParam.dump())); + + jParam = { { KEY_DEV_ID, DEV_ID }, { KEY_DH_ID, DH_ID_UNKNOWN }, { KEY_ATTRS, "" } }; + EXPECT_EQ(ERR_DH_AUDIO_NOT_SUPPORT, sourceDev_->TaskEnableDAudio(jParam.dump())); + + json jParam_spk = { { KEY_DEV_ID, DEV_ID }, { KEY_DH_ID, DH_ID_SPK }, { KEY_ATTRS, "" } }; + EXPECT_NE(DH_SUCCESS, sourceDev_->TaskEnableDAudio(jParam_spk.dump())); + + json jParam_mic = { { KEY_DEV_ID, DEV_ID }, { KEY_DH_ID, DH_ID_MIC }, { KEY_ATTRS, "" } }; + EXPECT_NE(DH_SUCCESS, sourceDev_->TaskEnableDAudio(jParam_mic.dump())); } /** @@ -572,40 +546,20 @@ HWTEST_F(DAudioSourceDevTest, TaskDisableDAudio_001, TestSize.Level1) std::string tempLongStr(DAUDIO_MAX_JSON_LEN + 1, 'a'); EXPECT_EQ(ERR_DH_AUDIO_SA_PARAM_INVALID, sourceDev_->TaskDisableDAudio(tempLongStr)); - cJSON *jParam1 = cJSON_CreateObject(); - cJSON_AddStringToObject(jParam1, KEY_DEV_ID, DEV_ID.c_str()); - cJSON_AddStringToObject(jParam1, KEY_RESULT, "test_result"); - EXPECT_EQ(ERR_DH_AUDIO_SA_DISABLE_PARAM_INVALID, - sourceDev_->TaskDisableDAudio(std::string(cJSON_PrintUnformatted(jParam1)))); - cJSON_Delete(jParam1); - - cJSON *jParam2 = cJSON_CreateObject(); - cJSON_AddStringToObject(jParam2, KEY_DEV_ID, DEV_ID.c_str()); - cJSON_AddStringToObject(jParam2, KEY_DH_ID, "testDhId"); - EXPECT_EQ(ERR_DH_AUDIO_SA_DISABLE_PARAM_INVALID, - sourceDev_->TaskDisableDAudio(std::string(cJSON_PrintUnformatted(jParam2)))); - cJSON_Delete(jParam2); - - cJSON *jParam3 = cJSON_CreateObject(); - cJSON_AddStringToObject(jParam3, KEY_DEV_ID, DEV_ID.c_str()); - cJSON_AddStringToObject(jParam3, KEY_DH_ID, DH_ID_UNKNOWN.c_str()); - EXPECT_EQ(ERR_DH_AUDIO_NOT_SUPPORT, - sourceDev_->TaskDisableDAudio(std::string(cJSON_PrintUnformatted(jParam3)))); - cJSON_Delete(jParam3); - - cJSON *jParamSpk = cJSON_CreateObject(); - cJSON_AddStringToObject(jParamSpk, KEY_DEV_ID, DEV_ID.c_str()); - cJSON_AddStringToObject(jParamSpk, KEY_DH_ID, DH_ID_SPK.c_str()); - EXPECT_EQ(ERR_DH_AUDIO_NULLPTR, - sourceDev_->TaskDisableDAudio(std::string(cJSON_PrintUnformatted(jParamSpk)))); - cJSON_Delete(jParamSpk); - - cJSON *jParamMic = cJSON_CreateObject(); - cJSON_AddStringToObject(jParamMic, KEY_DEV_ID, DEV_ID.c_str()); - cJSON_AddStringToObject(jParamMic, KEY_DH_ID, DH_ID_MIC.c_str()); - EXPECT_EQ(ERR_DH_AUDIO_NULLPTR, - sourceDev_->TaskDisableDAudio(std::string(cJSON_PrintUnformatted(jParamMic)))); - cJSON_Delete(jParamMic); + json jParam = { { KEY_DEV_ID, DEV_ID }, { KEY_RESULT, "test_result" } }; + EXPECT_EQ(ERR_DH_AUDIO_SA_DISABLE_PARAM_INVALID, sourceDev_->TaskDisableDAudio(jParam.dump())); + + jParam = { { KEY_DEV_ID, DEV_ID }, { KEY_DH_ID, "testDhId" } }; + EXPECT_EQ(ERR_DH_AUDIO_SA_DISABLE_PARAM_INVALID, sourceDev_->TaskDisableDAudio(jParam.dump())); + + jParam = { { KEY_DEV_ID, DEV_ID }, { KEY_DH_ID, DH_ID_UNKNOWN } }; + EXPECT_EQ(ERR_DH_AUDIO_NOT_SUPPORT, sourceDev_->TaskDisableDAudio(jParam.dump())); + + json jParam_spk = { { KEY_DEV_ID, DEV_ID }, { KEY_DH_ID, DH_ID_SPK } }; + EXPECT_NE(DH_SUCCESS, sourceDev_->TaskDisableDAudio(jParam_spk.dump())); + + json jParam_mic = { { KEY_DEV_ID, DEV_ID }, { KEY_DH_ID, DH_ID_MIC } }; + EXPECT_NE(DH_SUCCESS, sourceDev_->TaskDisableDAudio(jParam_mic.dump())); } /** @@ -621,21 +575,15 @@ HWTEST_F(DAudioSourceDevTest, OnEnableTaskResult_001, TestSize.Level1) std::string tempLongStr(DAUDIO_MAX_JSON_LEN + 1, 'a'); sourceDev_->OnEnableTaskResult(DH_SUCCESS, tempLongStr, FUNC_NAME); - cJSON *jParam1 = cJSON_CreateObject(); - cJSON_AddStringToObject(jParam1, KEY_DEV_ID, DEV_ID.c_str()); - cJSON_AddStringToObject(jParam1, KEY_RESULT, "test_result"); - sourceDev_->OnEnableTaskResult(DH_SUCCESS, std::string(cJSON_PrintUnformatted(jParam1)), FUNC_NAME); - cJSON_Delete(jParam1); + json jParam = { { KEY_DEV_ID, DEV_ID }, { KEY_RESULT, "test_result" } }; + sourceDev_->OnEnableTaskResult(DH_SUCCESS, jParam.dump(), FUNC_NAME); - cJSON *jParam2 = cJSON_CreateObject(); - cJSON_AddStringToObject(jParam2, KEY_DEV_ID, DEV_ID.c_str()); - cJSON_AddStringToObject(jParam2, KEY_DH_ID, DH_ID_SPK.c_str()); - sourceDev_->OnEnableTaskResult(DH_SUCCESS, std::string(cJSON_PrintUnformatted(jParam2)), FUNC_NAME); - sourceDev_->OnEnableTaskResult(ERR_DH_AUDIO_NULLPTR, std::string(cJSON_PrintUnformatted(jParam2)), FUNC_NAME); + jParam = { { KEY_DEV_ID, DEV_ID }, { KEY_DH_ID, DH_ID_SPK } }; + sourceDev_->OnEnableTaskResult(DH_SUCCESS, jParam.dump(), FUNC_NAME); + sourceDev_->OnEnableTaskResult(ERR_DH_AUDIO_NULLPTR, jParam.dump(), FUNC_NAME); sourceDev_->mgrCallback_ = nullptr; - sourceDev_->OnEnableTaskResult(DH_SUCCESS, std::string(cJSON_PrintUnformatted(jParam2)), FUNC_NAME); - cJSON_Delete(jParam2); + sourceDev_->OnEnableTaskResult(DH_SUCCESS, jParam.dump(), FUNC_NAME); auto mgrCb = std::make_shared(); EXPECT_NE(DH_SUCCESS, mgrCb->OnEnableAudioResult(DEV_ID, DH_ID_SPK, DH_SUCCESS)); @@ -654,19 +602,15 @@ HWTEST_F(DAudioSourceDevTest, OnDisableTaskResult_001, TestSize.Level1) std::string tempLongStr(DAUDIO_MAX_JSON_LEN + 1, 'a'); sourceDev_->OnDisableTaskResult(DH_SUCCESS, tempLongStr, FUNC_NAME); - cJSON *jParam = cJSON_CreateObject(); - cJSON_AddStringToObject(jParam, KEY_DEV_ID, DEV_ID.c_str()); - cJSON_AddStringToObject(jParam, KEY_RESULT, "test_result"); - sourceDev_->OnDisableTaskResult(DH_SUCCESS, std::string(cJSON_PrintUnformatted(jParam)), FUNC_NAME); + json jParam = { { KEY_DEV_ID, DEV_ID }, { KEY_RESULT, "test_result" } }; + sourceDev_->OnDisableTaskResult(DH_SUCCESS, jParam.dump(), FUNC_NAME); - cJSON_AddStringToObject(jParam, KEY_DEV_ID, DEV_ID.c_str()); - cJSON_AddStringToObject(jParam, KEY_DH_ID, DH_ID_SPK.c_str()); - sourceDev_->OnDisableTaskResult(DH_SUCCESS, std::string(cJSON_PrintUnformatted(jParam)), FUNC_NAME); - sourceDev_->OnDisableTaskResult(ERR_DH_AUDIO_NULLPTR, std::string(cJSON_PrintUnformatted(jParam)), FUNC_NAME); + jParam = { { KEY_DEV_ID, DEV_ID }, { KEY_DH_ID, DH_ID_SPK } }; + sourceDev_->OnDisableTaskResult(DH_SUCCESS, jParam.dump(), FUNC_NAME); + sourceDev_->OnDisableTaskResult(ERR_DH_AUDIO_NULLPTR, jParam.dump(), FUNC_NAME); sourceDev_->mgrCallback_ = nullptr; - sourceDev_->OnDisableTaskResult(DH_SUCCESS, std::string(cJSON_PrintUnformatted(jParam)), FUNC_NAME); - cJSON_Delete(jParam); + sourceDev_->OnDisableTaskResult(DH_SUCCESS, jParam.dump(), FUNC_NAME); auto mgrCb = std::make_shared(); EXPECT_NE(DH_SUCCESS, mgrCb->OnDisableAudioResult(DEV_ID, DH_ID_SPK, DH_SUCCESS)); @@ -754,20 +698,16 @@ HWTEST_F(DAudioSourceDevTest, TaskOpenDSpeaker_001, TestSize.Level1) EXPECT_EQ(ERR_DH_AUDIO_FAILED, sourceDev_->TaskOpenDSpeaker(ARGS)); - cJSON *jParamSpk = cJSON_CreateObject(); - cJSON_AddStringToObject(jParamSpk, KEY_DH_ID, DH_ID_SPK.c_str()); + json jParam_spk = { { KEY_DH_ID, DH_ID_SPK } }; sourceDev_->isRpcOpen_.store(false); - EXPECT_EQ(ERR_DH_AUDIO_TRANS_NULL_VALUE, - sourceDev_->TaskOpenDSpeaker(std::string(cJSON_PrintUnformatted(jParamSpk)))); + EXPECT_EQ(ERR_DH_AUDIO_TRANS_NULL_VALUE, sourceDev_->TaskOpenDSpeaker(jParam_spk.dump())); sourceDev_->isRpcOpen_.store(true); - EXPECT_EQ(ERR_DH_AUDIO_TRANS_NULL_VALUE, - sourceDev_->TaskOpenDSpeaker(std::string(cJSON_PrintUnformatted(jParamSpk)))); + EXPECT_EQ(ERR_DH_AUDIO_TRANS_NULL_VALUE, sourceDev_->TaskOpenDSpeaker(jParam_spk.dump())); sourceDev_->rpcResult_ = true; sourceDev_->rpcNotify_ = sourceDev_->EVENT_NOTIFY_OPEN_SPK; - EXPECT_NE(DH_SUCCESS, sourceDev_->TaskOpenDSpeaker(std::string(cJSON_PrintUnformatted(jParamSpk)))); - cJSON_Delete(jParamSpk); + EXPECT_NE(DH_SUCCESS, sourceDev_->TaskOpenDSpeaker(jParam_spk.dump())); } /** @@ -792,10 +732,8 @@ HWTEST_F(DAudioSourceDevTest, TaskCloseDSpeaker_001, TestSize.Level1) sourceDev_->speaker_->isOpened_ = false; EXPECT_EQ(ERR_DH_AUDIO_FAILED, sourceDev_->TaskCloseDSpeaker(ARGS)); - cJSON *jParamSpk = cJSON_CreateObject(); - cJSON_AddStringToObject(jParamSpk, KEY_DH_ID, DH_ID_SPK.c_str()); - EXPECT_EQ(DH_SUCCESS, sourceDev_->TaskCloseDSpeaker(std::string(cJSON_PrintUnformatted(jParamSpk)))); - cJSON_Delete(jParamSpk); + json jParam_spk = { { KEY_DH_ID, DH_ID_SPK } }; + EXPECT_EQ(DH_SUCCESS, sourceDev_->TaskCloseDSpeaker(jParam_spk.dump())); } /** @@ -809,10 +747,8 @@ HWTEST_F(DAudioSourceDevTest, TaskCloseDSpeaker_002, TestSize.Level1) sourceDev_->speaker_ = std::make_shared(DEV_ID, sourceDev_); sourceDev_->speaker_->speakerTrans_ = std::make_shared(DEV_ID); - cJSON *jParamSpk = cJSON_CreateObject(); - cJSON_AddStringToObject(jParamSpk, KEY_DH_ID, DH_ID_SPK.c_str()); - EXPECT_EQ(ERR_DH_AUDIO_FAILED, sourceDev_->TaskCloseDSpeaker(std::string(cJSON_PrintUnformatted(jParamSpk)))); - cJSON_Delete(jParamSpk); + json jParam_spk = { { KEY_DH_ID, DH_ID_SPK } }; + EXPECT_EQ(ERR_DH_AUDIO_FAILED, sourceDev_->TaskCloseDSpeaker(jParam_spk.dump())); } /** @@ -835,10 +771,8 @@ HWTEST_F(DAudioSourceDevTest, TaskOpenDMic_001, TestSize.Level1) EXPECT_EQ(ERR_DH_AUDIO_TRANS_NULL_VALUE, sourceDev_->TaskOpenDMic(ARGS)); - cJSON *jParamMic = cJSON_CreateObject(); - cJSON_AddStringToObject(jParamMic, KEY_DH_ID, DH_ID_MIC.c_str()); - EXPECT_EQ(ERR_DH_AUDIO_TRANS_NULL_VALUE, sourceDev_->TaskOpenDMic(std::string(cJSON_PrintUnformatted(jParamMic)))); - cJSON_Delete(jParamMic); + json jParam_mic = { { KEY_DH_ID, DH_ID_MIC } }; + EXPECT_EQ(ERR_DH_AUDIO_TRANS_NULL_VALUE, sourceDev_->TaskOpenDMic(jParam_mic.dump())); } /** @@ -863,10 +797,8 @@ HWTEST_F(DAudioSourceDevTest, TaskCloseDMic_001, TestSize.Level1) sourceDev_->mic_->isOpened_ = false; EXPECT_EQ(ERR_DH_AUDIO_FAILED, sourceDev_->TaskCloseDMic(ARGS)); - cJSON *jParamMic = cJSON_CreateObject(); - cJSON_AddStringToObject(jParamMic, KEY_DH_ID, DH_ID_MIC.c_str()); - EXPECT_EQ(DH_SUCCESS, sourceDev_->TaskCloseDMic(std::string(cJSON_PrintUnformatted(jParamMic)))); - cJSON_Delete(jParamMic); + json jParam_mic = { { KEY_DH_ID, DH_ID_MIC } }; + EXPECT_EQ(DH_SUCCESS, sourceDev_->TaskCloseDMic(jParam_mic.dump())); } /** @@ -880,10 +812,8 @@ HWTEST_F(DAudioSourceDevTest, TaskCloseDMic_002, TestSize.Level1) sourceDev_->mic_ = std::make_shared(DEV_ID, sourceDev_); sourceDev_->mic_->micTrans_ = std::make_shared(DEV_ID); - cJSON *jParamMic = cJSON_CreateObject(); - cJSON_AddStringToObject(jParamMic, KEY_DH_ID, DH_ID_MIC.c_str()); - EXPECT_EQ(DH_SUCCESS, sourceDev_->TaskCloseDMic(std::string(cJSON_PrintUnformatted(jParamMic)))); - cJSON_Delete(jParamMic); + json jParam_mic = { { KEY_DH_ID, DH_ID_MIC } }; + EXPECT_EQ(DH_SUCCESS, sourceDev_->TaskCloseDMic(jParam_mic.dump())); } /** @@ -904,19 +834,17 @@ HWTEST_F(DAudioSourceDevTest, TaskOpenCtrlChannel_001, TestSize.Level1) EXPECT_EQ(DH_SUCCESS, sourceDev_->TaskOpenCtrlChannel(ARGS)); - cJSON *jParam = cJSON_CreateObject(); - cJSON_AddStringToObject(jParam, KEY_DH_ID, DH_ID_SPK.c_str()); + json jParam = { { KEY_DH_ID, DH_ID_SPK } }; sourceDev_->isRpcOpen_.store(false); - EXPECT_EQ(DH_SUCCESS, sourceDev_->TaskOpenCtrlChannel(std::string(cJSON_PrintUnformatted(jParam)))); + EXPECT_EQ(DH_SUCCESS, sourceDev_->TaskOpenCtrlChannel(jParam.dump())); sourceDev_->isRpcOpen_.store(true); - EXPECT_EQ(DH_SUCCESS, sourceDev_->TaskOpenCtrlChannel(std::string(cJSON_PrintUnformatted(jParam)))); + EXPECT_EQ(DH_SUCCESS, sourceDev_->TaskOpenCtrlChannel(jParam.dump())); sourceDev_->rpcResult_ = true; sourceDev_->rpcNotify_ = sourceDev_->EVENT_NOTIFY_OPEN_MIC; - cJSON_AddStringToObject(jParam, KEY_DH_ID, DH_ID_SPK.c_str()); - EXPECT_EQ(DH_SUCCESS, sourceDev_->TaskOpenCtrlChannel(std::string(cJSON_PrintUnformatted(jParam)))); - cJSON_Delete(jParam); + jParam = { { KEY_DH_ID, DH_ID_SPK } }; + EXPECT_EQ(DH_SUCCESS, sourceDev_->TaskOpenCtrlChannel(jParam.dump())); } /** @@ -967,10 +895,8 @@ HWTEST_F(DAudioSourceDevTest, TaskSetVolume_002, TestSize.Level1) sourceDev_->audioCtrlMgr_ = std::make_shared(DEV_ID, sourceDev_); EXPECT_NE(DH_SUCCESS, sourceDev_->TaskSetVolume(ARGS)); - cJSON *jParam = cJSON_CreateObject(); - cJSON_AddStringToObject(jParam, STREAM_MUTE_STATUS.c_str(), std::to_string(1).c_str()); - EXPECT_NE(DH_SUCCESS, sourceDev_->TaskSetVolume(std::string(cJSON_PrintUnformatted(jParam)))); - cJSON_Delete(jParam); + json jParam = { { STREAM_MUTE_STATUS, 1 } }; + EXPECT_NE(DH_SUCCESS, sourceDev_->TaskSetVolume(jParam.dump())); sourceDev_->OnTaskResult(ERR_DH_AUDIO_NULLPTR, "", FUNC_NAME); } @@ -1140,8 +1066,7 @@ HWTEST_F(DAudioSourceDevTest, NotifyHDF_003, TestSize.Level1) */ HWTEST_F(DAudioSourceDevTest, NotifySinkDev_001, TestSize.Level1) { - cJSON *jAudioParam = cJSON_CreateObject(); - + json jAudioParam; sourceDev_->isRpcOpen_.store(false); EXPECT_EQ(ERR_DH_AUDIO_FAILED, sourceDev_->NotifySinkDev(CLOSE_MIC, jAudioParam, DH_ID_SPK)); diff --git a/services/audiomanager/test/unittest/sourcemanager/BUILD.gn b/services/audiomanager/test/unittest/sourcemanager/BUILD.gn index 7aa05f34..fe5139cf 100644 --- a/services/audiomanager/test/unittest/sourcemanager/BUILD.gn +++ b/services/audiomanager/test/unittest/sourcemanager/BUILD.gn @@ -20,6 +20,7 @@ config("module_private_config") { visibility = [ ":*" ] include_dirs = [ + "//third_party/json/include", "${driver_audio_path}/include", "${fwk_common_path}/utils/include", "${mediastandardfwk_path}/audiocapturer/include", @@ -54,7 +55,6 @@ config("module_private_config") { "${services_path}/common/taskProcessor/include", "${services_path}/hdfaudioclient/include", "${softbusadapter_path}/include", - "//third_party/cJSON", ] } @@ -71,7 +71,6 @@ ohos_unittest("DaudioSourceMgrTest") { "${innerkits_path}/native_cpp/audio_source:distributed_audio_source_sdk", "${services_path}/audiomanager/servicesource:distributed_audio_source", "${services_path}/common:distributed_audio_utils", - "//third_party/cJSON:cjson", "//third_party/googletest:gmock", "//third_party/googletest:gtest_main", ] diff --git a/services/audioprocessor/test/unittest/common/decodeprocessor/BUILD.gn b/services/audioprocessor/test/unittest/common/decodeprocessor/BUILD.gn index b409bb61..f68c7fa5 100644 --- a/services/audioprocessor/test/unittest/common/decodeprocessor/BUILD.gn +++ b/services/audioprocessor/test/unittest/common/decodeprocessor/BUILD.gn @@ -26,6 +26,7 @@ config("module_private_config") { "${mediastandard_path}/interfaces/innerkits/native/media/include", "${mediastandardfwk_path}/audiocommon/include", "${fwk_common_path}/utils/include", + "//third_party/json/include", ] include_dirs += [ @@ -37,7 +38,6 @@ config("module_private_config") { "${audio_processor_path}/directprocessor/include", "${audio_processor_path}/interface", "${audio_processor_path}/test/unittest/common", - "//third_party/cJSON", ] } @@ -54,7 +54,6 @@ ohos_unittest("DecodeProcessTest") { deps = [ "${audio_transport_path}/decodetransport:distributed_audio_decode_transport", "${services_path}/common:distributed_audio_utils", - "//third_party/cJSON:cjson", "//third_party/googletest:gtest_main", ] @@ -80,7 +79,6 @@ ohos_unittest("DirectProcessorTest") { deps = [ "${audio_transport_path}/decodetransport:distributed_audio_decode_transport", "${services_path}/common:distributed_audio_utils", - "//third_party/cJSON:cjson", "//third_party/googletest:gtest_main", ] diff --git a/services/audioprocessor/test/unittest/common/encodeprocessor/BUILD.gn b/services/audioprocessor/test/unittest/common/encodeprocessor/BUILD.gn index 81d835a6..83c58e0a 100644 --- a/services/audioprocessor/test/unittest/common/encodeprocessor/BUILD.gn +++ b/services/audioprocessor/test/unittest/common/encodeprocessor/BUILD.gn @@ -26,6 +26,7 @@ config("module_private_config") { "${mediastandard_path}/interfaces/innerkits/native/media/include", "${mediastandardfwk_path}/audiocommon/include", "${fwk_common_path}/utils/include", + "//third_party/json/include", ] include_dirs += [ @@ -36,7 +37,6 @@ config("module_private_config") { "${audio_processor_path}/encoder/include", "${audio_processor_path}/interface", "${audio_processor_path}/test/unittest/common", - "//third_party/cJSON", ] } @@ -53,7 +53,6 @@ ohos_unittest("EncodeProcessTest") { deps = [ "${audio_transport_path}/encodetransport:distributed_audio_encode_transport", "${services_path}/common:distributed_audio_utils", - "//third_party/cJSON:cjson", "//third_party/googletest:gtest_main", ] diff --git a/services/audiotransport/audiochannel/audioctrlchannel/include/audio_ctrl_channel.h b/services/audiotransport/audiochannel/audioctrlchannel/include/audio_ctrl_channel.h index 6d95275c..7e959e62 100644 --- a/services/audiotransport/audiochannel/audioctrlchannel/include/audio_ctrl_channel.h +++ b/services/audiotransport/audiochannel/audioctrlchannel/include/audio_ctrl_channel.h @@ -16,12 +16,14 @@ #ifndef OHOS_AUDIO_CTRL_CHANNEL_H #define OHOS_AUDIO_CTRL_CHANNEL_H -#include "cJSON.h" +#include "nlohmann/json.hpp" #include "iaudio_channel_listener.h" #include "iaudio_channel.h" #include "softbus_adapter.h" +using json = nlohmann::json; + namespace OHOS { namespace DistributedHardware { class AudioCtrlChannel : public IAudioChannel, @@ -54,7 +56,7 @@ private: std::weak_ptr channelListener_; }; -int from_audioEventJson(const cJSON *jsonObj, AudioEvent &audioEvent); +int32_t from_audioEventJson(const json &j, AudioEvent &audioEvent); } // namespace DistributedHardware } // namespace OHOS #endif // OHOS_AUDIO_CTRL_CHANNEL_H diff --git a/services/audiotransport/audiochannel/audioctrlchannel/src/audio_ctrl_channel.cpp b/services/audiotransport/audiochannel/audioctrlchannel/src/audio_ctrl_channel.cpp index 03de9de6..501576c6 100644 --- a/services/audiotransport/audiochannel/audioctrlchannel/src/audio_ctrl_channel.cpp +++ b/services/audiotransport/audiochannel/audioctrlchannel/src/audio_ctrl_channel.cpp @@ -135,33 +135,15 @@ int32_t AudioCtrlChannel::SendData(const std::shared_ptr &data) int32_t AudioCtrlChannel::SendEvent(const AudioEvent &audioEvent) { DHLOGD("Send event, sessionId: %d.", sessionId_); - - cJSON *jAudioEvent = cJSON_CreateObject(); - if (jAudioEvent == nullptr) { - DHLOGE("Failed to create cJSON object."); - return ERR_DH_AUDIO_TRANS_NULL_VALUE; - } - - cJSON_AddNumberToObject(jAudioEvent, KEY_TYPE, static_cast(audioEvent.type)); - cJSON_AddStringToObject(jAudioEvent, KEY_EVENT_CONTENT, audioEvent.content.c_str()); - - char *jsonData = cJSON_PrintUnformatted(jAudioEvent); - if (jsonData == nullptr) { - cJSON_Delete(jAudioEvent); - DHLOGE("Failed to create JSON message."); - return ERR_DH_AUDIO_TRANS_NULL_VALUE; - } - std::string message(jsonData); - + json jAudioEvent; + jAudioEvent[KEY_TYPE] = audioEvent.type; + jAudioEvent[KEY_EVENT_CONTENT] = audioEvent.content; + std::string message = jAudioEvent.dump(); int ret = SendMsg(message); if (ret != DH_SUCCESS) { DHLOGE("Send audio event failed ret: %d.", ret); - cJSON_Delete(jAudioEvent); - cJSON_free(jsonData); return ret; } - cJSON_Delete(jAudioEvent); - cJSON_free(jsonData); return DH_SUCCESS; } @@ -247,21 +229,13 @@ void AudioCtrlChannel::OnBytesReceived(int32_t sessionId, const void *data, uint std::string message(buf, buf + dataLen); DHLOGI("On bytes received message: %s.", message.c_str()); - cJSON *jParam = cJSON_Parse(message.c_str()); - if (jParam == nullptr) { - DHLOGE("Failed to parse JSON message."); - cJSON_Delete(jParam); - free(buf); - return; - } AudioEvent audioEvent; + json jParam = json::parse(message, nullptr, false); if (from_audioEventJson(jParam, audioEvent) != DH_SUCCESS) { - DHLOGE("Get audioEvent from JSON failed."); - cJSON_Delete(jParam); + DHLOGE("Get audioEvent from json failed."); free(buf); return; } - cJSON_Delete(jParam); free(buf); DHLOGI("On bytes received end"); @@ -279,28 +253,15 @@ void AudioCtrlChannel::OnStreamReceived(int32_t sessionId, const StreamData *dat DHLOGI("Ctrl channel not support yet."); } -int from_audioEventJson(const cJSON *jsonObj, AudioEvent &audioEvent) +int from_audioEventJson(const json &j, AudioEvent &audioEvent) { - if (!JsonParamCheck(jsonObj, {KEY_TYPE, KEY_EVENT_CONTENT})) { - DHLOGE("JSON data is illegal."); - return ERR_DH_AUDIO_TRANS_NULL_VALUE; - } - - cJSON *typeValue = cJSON_GetObjectItemCaseSensitive(jsonObj, KEY_TYPE); - cJSON *contentValue = cJSON_GetObjectItemCaseSensitive(jsonObj, KEY_EVENT_CONTENT); - if (typeValue == nullptr || !cJSON_IsNumber(typeValue) || - contentValue == nullptr || !cJSON_IsString(contentValue)) { - DHLOGE("Failed to retrieve values from JSON."); - return ERR_DH_AUDIO_TRANS_NULL_VALUE; - } - int32_t typeInt = typeValue->valueint; - if (typeInt < EVENT_UNKNOWN || typeInt >= AUDIO_STOP) { - DHLOGE("Invalid AudioEventType value."); + if (!JsonParamCheck(j, {KEY_TYPE, KEY_EVENT_CONTENT})) { + DHLOGE("Json data is illegal."); return ERR_DH_AUDIO_TRANS_NULL_VALUE; } - audioEvent.type = static_cast(typeInt); - audioEvent.content = contentValue->valuestring; + j.at(KEY_TYPE).get_to(audioEvent.type); + j.at(KEY_EVENT_CONTENT).get_to(audioEvent.content); return DH_SUCCESS; } } // namespace DistributedHardware diff --git a/services/audiotransport/audiochannel/audiodatachannel/BUILD.gn b/services/audiotransport/audiochannel/audiodatachannel/BUILD.gn index f550e0c0..35ccab5c 100644 --- a/services/audiotransport/audiochannel/audiodatachannel/BUILD.gn +++ b/services/audiotransport/audiochannel/audiodatachannel/BUILD.gn @@ -16,7 +16,10 @@ import("//build/ohos_var.gni") import("../../../../distributedaudio.gni") ohos_shared_library("distributed_audio_data_channel") { - include_dirs = [ "${fwk_common_path}/utils/include" ] + include_dirs = [ + "${fwk_common_path}/utils/include", + "//third_party/json/include", + ] include_dirs += [ "include", @@ -26,7 +29,6 @@ ohos_shared_library("distributed_audio_data_channel") { "${services_path}/common/audiodata/include", "${audio_transport_path}/audiochannel/interface", "${softbusadapter_path}/include", - "//third_party/cJSON", ] sources = [ "src/audio_data_channel.cpp" ] @@ -34,7 +36,6 @@ ohos_shared_library("distributed_audio_data_channel") { deps = [ "${services_path}/common:distributed_audio_utils", "${softbusadapter_path}:distributed_audio_softbus_adapter", - "//third_party/cJSON:cjson", ] external_deps = [ diff --git a/services/audiotransport/audioctrltransport/BUILD.gn b/services/audiotransport/audioctrltransport/BUILD.gn index ed6fe638..619795b3 100644 --- a/services/audiotransport/audioctrltransport/BUILD.gn +++ b/services/audiotransport/audioctrltransport/BUILD.gn @@ -17,7 +17,7 @@ import("../../../distributedaudio.gni") ohos_shared_library("distributed_audio_control") { include_dirs = [ - "//third_party/cJSON", + "//third_party/json/include", "${fwk_common_path}/utils/include", ] @@ -41,7 +41,6 @@ ohos_shared_library("distributed_audio_control") { deps = [ "${services_path}/common:distributed_audio_utils", "${softbusadapter_path}:distributed_audio_softbus_adapter", - "//third_party/cJSON:cjson", ] external_deps = [ diff --git a/services/audiotransport/audiotransportstatus/BUILD.gn b/services/audiotransport/audiotransportstatus/BUILD.gn index 798bc721..965f6244 100644 --- a/services/audiotransport/audiotransportstatus/BUILD.gn +++ b/services/audiotransport/audiotransportstatus/BUILD.gn @@ -20,6 +20,7 @@ ohos_shared_library("distributed_audio_transport_status") { "${fwk_common_path}/utils/include", "${mediastandard_path}/interfaces/innerkits/native/media/include", "${mediastandardfwk_path}/audiocommon/include", + "//third_party/json/include", ] include_dirs += [ diff --git a/services/audiotransport/decodetransport/BUILD.gn b/services/audiotransport/decodetransport/BUILD.gn index a8db6935..bc26bcfe 100644 --- a/services/audiotransport/decodetransport/BUILD.gn +++ b/services/audiotransport/decodetransport/BUILD.gn @@ -31,6 +31,7 @@ ohos_shared_library("distributed_audio_decode_transport") { include_dirs = [ "${mediastandard_path}/interfaces/innerkits/native/media/include", "${mediastandardfwk_path}/audiocommon/include", + "//third_party/json/include", ] include_dirs += [ @@ -50,7 +51,6 @@ ohos_shared_library("distributed_audio_decode_transport") { "${services_path}/common/audiodata/include", "${services_path}/common/audioparam", "${softbusadapter_path}/include", - "//third_party/cJSON", ] public_configs = [ ":decode_transport_pub_config" ] @@ -70,7 +70,6 @@ ohos_shared_library("distributed_audio_decode_transport") { "${audio_transport_path}/audiochannel/audiodatachannel:distributed_audio_data_channel", "${audio_transport_path}/audiotransportstatus:distributed_audio_transport_status", "${services_path}/common:distributed_audio_utils", - "//third_party/cJSON:cjson", ] external_deps = [ diff --git a/services/audiotransport/encodetransport/BUILD.gn b/services/audiotransport/encodetransport/BUILD.gn index 308b3de3..bc75f76f 100644 --- a/services/audiotransport/encodetransport/BUILD.gn +++ b/services/audiotransport/encodetransport/BUILD.gn @@ -31,6 +31,7 @@ ohos_shared_library("distributed_audio_encode_transport") { include_dirs = [ "${mediastandard_path}/interfaces/innerkits/native/media/include", "${mediastandardfwk_path}/audiocommon/include", + "//third_party/json/include", ] include_dirs += [ @@ -50,7 +51,6 @@ ohos_shared_library("distributed_audio_encode_transport") { "${services_path}/common/audiodata/include", "${services_path}/common/audioparam", "${softbusadapter_path}/include", - "//third_party/cJSON", ] public_configs = [ ":encode_transport_pub_config" ] @@ -70,7 +70,6 @@ ohos_shared_library("distributed_audio_encode_transport") { "${audio_transport_path}/audiochannel/audiodatachannel:distributed_audio_data_channel", "${audio_transport_path}/audiotransportstatus:distributed_audio_transport_status", "${services_path}/common:distributed_audio_utils", - "//third_party/cJSON:cjson", ] external_deps = [ diff --git a/services/audiotransport/test/unittest/audioctrlchannel/BUILD.gn b/services/audiotransport/test/unittest/audioctrlchannel/BUILD.gn index bd82882b..998230c2 100644 --- a/services/audiotransport/test/unittest/audioctrlchannel/BUILD.gn +++ b/services/audiotransport/test/unittest/audioctrlchannel/BUILD.gn @@ -21,7 +21,7 @@ config("module_private_config") { visibility = [ ":*" ] include_dirs = [ - "//third_party/cJSON", + "//third_party/json/include", "${fwk_common_path}/utils/include", "${fwk_utils_path}/include/", ] @@ -50,7 +50,6 @@ ohos_unittest("AudioCtrlChannelTest") { deps = [ "${audio_transport_path}/audioctrltransport:distributed_audio_control", "${services_path}/common:distributed_audio_utils", - "//third_party/cJSON:cjson", "//third_party/googletest:gmock", "//third_party/googletest:gtest_main", ] diff --git a/services/audiotransport/test/unittest/audioctrlchannel/src/audio_ctrl_channel_test.cpp b/services/audiotransport/test/unittest/audioctrlchannel/src/audio_ctrl_channel_test.cpp index c53f7728..5d6f27ae 100644 --- a/services/audiotransport/test/unittest/audioctrlchannel/src/audio_ctrl_channel_test.cpp +++ b/services/audiotransport/test/unittest/audioctrlchannel/src/audio_ctrl_channel_test.cpp @@ -175,9 +175,8 @@ HWTEST_F(AudioCtrlChannelTest, SendMsg_001, TestSize.Level1) HWTEST_F(AudioCtrlChannelTest, from_audioEventJson_001, TestSize.Level1) { AudioEvent event; - cJSON *j = cJSON_CreateObject(); + json j; EXPECT_NE(DH_SUCCESS, from_audioEventJson(j, event)); - cJSON_Delete(j); } } // namespace DistributedHardware } // namespace OHOS diff --git a/services/audiotransport/test/unittest/audioctrltransport/BUILD.gn b/services/audiotransport/test/unittest/audioctrltransport/BUILD.gn index b42a604f..7696159c 100644 --- a/services/audiotransport/test/unittest/audioctrltransport/BUILD.gn +++ b/services/audiotransport/test/unittest/audioctrltransport/BUILD.gn @@ -21,6 +21,7 @@ config("module_private_config") { visibility = [ ":*" ] include_dirs = [ + "//third_party/json/include", "${fwk_common_path}/utils/include", "${fwk_utils_path}/include/", ] diff --git a/services/audiotransport/test/unittest/audiodatachannel/BUILD.gn b/services/audiotransport/test/unittest/audiodatachannel/BUILD.gn index 7635979f..f4b60682 100644 --- a/services/audiotransport/test/unittest/audiodatachannel/BUILD.gn +++ b/services/audiotransport/test/unittest/audiodatachannel/BUILD.gn @@ -21,6 +21,7 @@ config("module_private_config") { visibility = [ ":*" ] include_dirs = [ + "//third_party/json/include", "${fwk_common_path}/utils/include", "${fwk_utils_path}/include/", ] @@ -35,7 +36,6 @@ config("module_private_config") { "${audio_transport_path}/audiochannel/audiodatachannel/include", "${audio_transport_path}/audioctrltransport/interface", "${audio_transport_path}/test/unittest/audiotranstestutils/include", - "//third_party/cJSON", ] } @@ -50,7 +50,6 @@ ohos_unittest("AudioDataChannelTest") { deps = [ "${audio_transport_path}/audiochannel/audiodatachannel:distributed_audio_data_channel", "${softbusadapter_path}:distributed_audio_softbus_adapter", - "//third_party/cJSON:cjson", "//third_party/googletest:gmock", "//third_party/googletest:gtest_main", ] diff --git a/services/audiotransport/test/unittest/audiotransportstatus/BUILD.gn b/services/audiotransport/test/unittest/audiotransportstatus/BUILD.gn index 1bc9ea82..8eed1d60 100644 --- a/services/audiotransport/test/unittest/audiotransportstatus/BUILD.gn +++ b/services/audiotransport/test/unittest/audiotransportstatus/BUILD.gn @@ -26,6 +26,7 @@ config("module_private_config") { "${fwk_common_path}/utils/include", "${mediastandard_path}/interfaces/innerkits/native/media/include", "${mediastandardfwk_path}/audiocommon/include", + "//third_party/json/include", ] include_dirs += [ @@ -41,7 +42,6 @@ config("module_private_config") { "${audio_transport_path}/test/unittest/audiotranstestutils/include", "${services_path}/common/audioparam", "${services_path}/common/audiodata/include", - "//third_party/cJSON", ] } @@ -61,7 +61,6 @@ ohos_unittest("TransportStatusTest") { "${audio_transport_path}/audiochannel/audiodatachannel:distributed_audio_data_channel", "${audio_transport_path}/audiotransportstatus:distributed_audio_transport_status", "${services_path}/common:distributed_audio_utils", - "//third_party/cJSON:cjson", "//third_party/googletest:gtest_main", ] diff --git a/services/audiotransport/test/unittest/decodetransport/BUILD.gn b/services/audiotransport/test/unittest/decodetransport/BUILD.gn index 8aab728d..75cefc1b 100644 --- a/services/audiotransport/test/unittest/decodetransport/BUILD.gn +++ b/services/audiotransport/test/unittest/decodetransport/BUILD.gn @@ -22,7 +22,10 @@ module_output_path = config("module_private_config") { visibility = [ ":*" ] - include_dirs = [ "${fwk_common_path}/utils/include" ] + include_dirs = [ + "${fwk_common_path}/utils/include", + "//third_party/json/include", + ] include_dirs += [ "include", @@ -41,7 +44,6 @@ config("module_private_config") { "${services_path}/common/audiodata/include", "${services_path}/common/audioparam", "${softbusadapter_path}/include", - "//third_party/cJSON", ] } @@ -55,7 +57,6 @@ ohos_unittest("DecodeTransportTest") { deps = [ "${audio_transport_path}/decodetransport:distributed_audio_decode_transport", "${services_path}/common:distributed_audio_utils", - "//third_party/cJSON:cjson", "//third_party/googletest:gtest_main", ] diff --git a/services/audiotransport/test/unittest/encodetransport/BUILD.gn b/services/audiotransport/test/unittest/encodetransport/BUILD.gn index 43902d34..22e4b574 100644 --- a/services/audiotransport/test/unittest/encodetransport/BUILD.gn +++ b/services/audiotransport/test/unittest/encodetransport/BUILD.gn @@ -22,7 +22,10 @@ module_output_path = config("module_private_config") { visibility = [ ":*" ] - include_dirs = [ "${fwk_common_path}/utils/include" ] + include_dirs = [ + "${fwk_common_path}/utils/include", + "//third_party/json/include", + ] include_dirs += [ "include", @@ -41,7 +44,6 @@ config("module_private_config") { "${services_path}/common/audiodata/include", "${services_path}/common/audioparam", "${softbusadapter_path}/include", - "//third_party/cJSON", ] } @@ -56,7 +58,6 @@ ohos_unittest("EncodeTransportTest") { "${audio_transport_path}/audiotransportstatus:distributed_audio_transport_status", "${audio_transport_path}/encodetransport:distributed_audio_encode_transport", "${services_path}/common:distributed_audio_utils", - "//third_party/cJSON:cjson", "//third_party/googletest:gtest_main", ] diff --git a/services/audiotransport/test/unittest/receiverengine/BUILD.gn b/services/audiotransport/test/unittest/receiverengine/BUILD.gn index d34d4fcb..814d3dce 100644 --- a/services/audiotransport/test/unittest/receiverengine/BUILD.gn +++ b/services/audiotransport/test/unittest/receiverengine/BUILD.gn @@ -23,6 +23,7 @@ config("module_private_config") { include_dirs = [ "${mediastandard_path}/interfaces/innerkits/native/media/include", "${mediastandardfwk_path}/audiocommon/include", + "//third_party/json/include", ] include_dirs += [ @@ -35,7 +36,6 @@ config("module_private_config") { "${services_path}/common/audiodata/include", "${services_path}/common/audioparam", "${softbusadapter_path}/include", - "//third_party/cJSON", ] } @@ -53,7 +53,6 @@ ohos_unittest("AVTransReceiverAdapterTest") { deps = [ "${audio_transport_path}/decodetransport:distributed_audio_decode_transport", "${services_path}/common:distributed_audio_utils", - "//third_party/cJSON:cjson", "//third_party/googletest:gmock", "//third_party/googletest:gtest_main", ] diff --git a/services/audiotransport/test/unittest/senderengine/BUILD.gn b/services/audiotransport/test/unittest/senderengine/BUILD.gn index 225af6c4..cded03c1 100644 --- a/services/audiotransport/test/unittest/senderengine/BUILD.gn +++ b/services/audiotransport/test/unittest/senderengine/BUILD.gn @@ -22,6 +22,7 @@ config("module_private_config") { include_dirs = [ "${mediastandard_path}/interfaces/innerkits/native/media/include", "${mediastandardfwk_path}/audiocommon/include", + "//third_party/json/include", ] include_dirs += [ @@ -34,7 +35,6 @@ config("module_private_config") { "${services_path}/common/audiodata/include", "${services_path}/common/audioparam", "${softbusadapter_path}/include", - "//third_party/cJSON", ] } @@ -52,7 +52,6 @@ ohos_unittest("AVTransSenderAdapterTest") { deps = [ "${audio_transport_path}/encodetransport:distributed_audio_encode_transport", "${services_path}/common:distributed_audio_utils", - "//third_party/cJSON:cjson", "//third_party/googletest:gmock", "//third_party/googletest:gtest_main", ] diff --git a/services/common/BUILD.gn b/services/common/BUILD.gn index b2ec3ca9..bf4f8493 100644 --- a/services/common/BUILD.gn +++ b/services/common/BUILD.gn @@ -26,7 +26,7 @@ config("daudio_common_pub_config") { } config("daudio_common_private_config") { - include_dirs = [ "//third_party/cJSON" ] + include_dirs = [ "//third_party/json/include" ] include_dirs += [ "taskProcessor/include", @@ -51,8 +51,6 @@ ohos_shared_library("distributed_audio_utils") { "taskProcessor/src/task_queue.cpp", ] - deps = [ "//third_party/cJSON:cjson" ] - external_deps = [ "c_utils:utils", "dsoftbus:softbus_client", diff --git a/services/common/taskProcessor/test/unittest/task_queue/BUILD.gn b/services/common/taskProcessor/test/unittest/task_queue/BUILD.gn index 220acfae..c2049f5b 100644 --- a/services/common/taskProcessor/test/unittest/task_queue/BUILD.gn +++ b/services/common/taskProcessor/test/unittest/task_queue/BUILD.gn @@ -21,7 +21,7 @@ module_out_path = "distributed_audio/services/common/taskProcessor/test" config("module_private_config") { visibility = [ ":*" ] - include_dirs = [] + include_dirs = [ "//third_party/json/include" ] include_dirs += [ "${common_path}/include", diff --git a/services/common/test/unittest/audiodata/BUILD.gn b/services/common/test/unittest/audiodata/BUILD.gn index 4ade4027..4637f731 100644 --- a/services/common/test/unittest/audiodata/BUILD.gn +++ b/services/common/test/unittest/audiodata/BUILD.gn @@ -21,6 +21,7 @@ config("module_private_config") { include_dirs = [ "./include", + "//third_party/json/include", "${services_path}/common/audiodata/include", "${common_path}/include", ] diff --git a/services/softbusadapter/BUILD.gn b/services/softbusadapter/BUILD.gn index b8fb17c2..d460346c 100644 --- a/services/softbusadapter/BUILD.gn +++ b/services/softbusadapter/BUILD.gn @@ -16,14 +16,16 @@ import("//build/ohos_var.gni") import("../../distributedaudio.gni") ohos_shared_library("distributed_audio_softbus_adapter") { - include_dirs = [ "${fwk_common_path}/utils/include" ] + include_dirs = [ + "${fwk_common_path}/utils/include", + "//third_party/json/include", + ] include_dirs += [ "${common_path}/include", "${services_path}/common/audioparam", "${services_path}/common/audiodata/include", "${softbusadapter_path}/include", - "//third_party/cJSON", ] sources = [ @@ -31,10 +33,7 @@ ohos_shared_library("distributed_audio_softbus_adapter") { "src/softbus_adapter.cpp", ] - deps = [ - "${services_path}/common:distributed_audio_utils", - "//third_party/cJSON:cjson", - ] + deps = [ "${services_path}/common:distributed_audio_utils" ] external_deps = [ "c_utils:utils", diff --git a/services/softbusadapter/test/fuzztest/softbusonbytesreceived_fuzzer/BUILD.gn b/services/softbusadapter/test/fuzztest/softbusonbytesreceived_fuzzer/BUILD.gn index 8053d3f5..a4b79550 100644 --- a/services/softbusadapter/test/fuzztest/softbusonbytesreceived_fuzzer/BUILD.gn +++ b/services/softbusadapter/test/fuzztest/softbusonbytesreceived_fuzzer/BUILD.gn @@ -37,19 +37,18 @@ ohos_fuzztest("SoftbusOnBytesReceivedFuzzTest") { "${fwk_common_path}/log/include", "${fwk_common_path}/utils/include", "${softbusadapter_path}/include", + "//third_party/json/include", ] include_dirs += [ "include", "${common_path}/include", "${audio_transport_path}/audiochannel/audiodatachannel/include", - "//third_party/cJSON", ] deps = [ "${audio_transport_path}/audiochannel/audiodatachannel:distributed_audio_data_channel", "${services_path}/common:distributed_audio_utils", - "//third_party/cJSON:cjson", ] external_deps = [ diff --git a/services/softbusadapter/test/fuzztest/softbusonsessionclosed_fuzzer/BUILD.gn b/services/softbusadapter/test/fuzztest/softbusonsessionclosed_fuzzer/BUILD.gn index 04c60496..dac1a93c 100644 --- a/services/softbusadapter/test/fuzztest/softbusonsessionclosed_fuzzer/BUILD.gn +++ b/services/softbusadapter/test/fuzztest/softbusonsessionclosed_fuzzer/BUILD.gn @@ -37,19 +37,18 @@ ohos_fuzztest("SoftbusOnSessionClosedFuzzTest") { "${fwk_common_path}/log/include", "${fwk_common_path}/utils/include", "${softbusadapter_path}/include", + "//third_party/json/include", ] include_dirs += [ "include", "${common_path}/include", "${audio_transport_path}/audiochannel/audiodatachannel/include", - "//third_party/cJSON", ] deps = [ "${audio_transport_path}/audiochannel/audiodatachannel:distributed_audio_data_channel", "${services_path}/common:distributed_audio_utils", - "//third_party/cJSON:cjson", ] external_deps = [ diff --git a/services/softbusadapter/test/fuzztest/softbusonsessionopened_fuzzer/BUILD.gn b/services/softbusadapter/test/fuzztest/softbusonsessionopened_fuzzer/BUILD.gn index a0e44753..467d2a08 100644 --- a/services/softbusadapter/test/fuzztest/softbusonsessionopened_fuzzer/BUILD.gn +++ b/services/softbusadapter/test/fuzztest/softbusonsessionopened_fuzzer/BUILD.gn @@ -37,19 +37,18 @@ ohos_fuzztest("SoftbusOnSessionOpenedFuzzTest") { "${fwk_common_path}/log/include", "${fwk_common_path}/utils/include", "${softbusadapter_path}/include", + "//third_party/json/include", ] include_dirs += [ "include", "${common_path}/include", "${audio_transport_path}/audiochannel/audiodatachannel/include", - "//third_party/cJSON", ] deps = [ "${audio_transport_path}/audiochannel/audiodatachannel:distributed_audio_data_channel", "${services_path}/common:distributed_audio_utils", - "//third_party/cJSON:cjson", ] external_deps = [ diff --git a/services/softbusadapter/test/fuzztest/softbusonstreamreceived_fuzzer/BUILD.gn b/services/softbusadapter/test/fuzztest/softbusonstreamreceived_fuzzer/BUILD.gn index 627a0643..f491ff04 100644 --- a/services/softbusadapter/test/fuzztest/softbusonstreamreceived_fuzzer/BUILD.gn +++ b/services/softbusadapter/test/fuzztest/softbusonstreamreceived_fuzzer/BUILD.gn @@ -37,19 +37,18 @@ ohos_fuzztest("SoftbusOnStreamReceivedFuzzTest") { "${fwk_common_path}/log/include", "${fwk_common_path}/utils/include", "${softbusadapter_path}/include", + "//third_party/json/include", ] include_dirs += [ "include", "${common_path}/include", "${audio_transport_path}/audiochannel/audiodatachannel/include", - "//third_party/cJSON", ] deps = [ "${audio_transport_path}/audiochannel/audiodatachannel:distributed_audio_data_channel", "${services_path}/common:distributed_audio_utils", - "//third_party/cJSON:cjson", ] external_deps = [ diff --git a/services/softbusadapter/test/unittest/BUILD.gn b/services/softbusadapter/test/unittest/BUILD.gn index 6ea77f59..189137bd 100644 --- a/services/softbusadapter/test/unittest/BUILD.gn +++ b/services/softbusadapter/test/unittest/BUILD.gn @@ -20,6 +20,7 @@ config("module_private_config") { visibility = [ ":*" ] include_dirs = [ + "//third_party/json/include", "${fwk_common_path}/utils/include", "${fwk_utils_path}/include/", ] @@ -30,7 +31,6 @@ config("module_private_config") { "${services_path}/common/audioparam", "${services_path}/common/audiodata/include", "${softbusadapter_path}/include", - "//third_party/cJSON", ] } @@ -44,7 +44,6 @@ ohos_unittest("SoftBusAdapterTest") { deps = [ "${softbusadapter_path}:distributed_audio_softbus_adapter", - "//third_party/cJSON:cjson", "//third_party/googletest:gmock", "//third_party/googletest:gtest_main", ] -- Gitee From b5d230d483c9ffbd2d3594ff11eb4657aea70eb4 Mon Sep 17 00:00:00 2001 From: hwwuhaobo Date: Tue, 19 Sep 2023 16:58:28 +0800 Subject: [PATCH 34/35] add daudio test demo Signed-off-by: hwwuhaobo --- services/test_example/BUILD.gn | 43 ++ .../test_example/distributedaudiotest.cpp | 696 ++++++++++++++++++ services/test_example/distributedaudiotest.h | 59 ++ 3 files changed, 798 insertions(+) create mode 100644 services/test_example/BUILD.gn create mode 100644 services/test_example/distributedaudiotest.cpp create mode 100644 services/test_example/distributedaudiotest.h diff --git a/services/test_example/BUILD.gn b/services/test_example/BUILD.gn new file mode 100644 index 00000000..6035c81c --- /dev/null +++ b/services/test_example/BUILD.gn @@ -0,0 +1,43 @@ +# Copyright (c) 2023 Huawei Device Co., Ltd. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import("//build/ohos.gni") + +ohos_executable("audio_distributed_test") { + include_dirs = [ + "./include", + "${driver_audio_path}/include", + "${hdf_service_path}/hdi_service/common/include", + "${services_path}/hdfaudioclient/include", + ] + + sources = [ "distributedaudiotest.cpp" ] + + deps = [ "${services_path}/hdfaudioclient:daudio_client" ] + + external_deps = [ + "c_utils:utils", + "hdf_core:libhdf_utils", + "hilog:libhilog", + ] + + defines = [ + "DH_LOG_TAG=\"daudioTest\"", + "HI_LOG_ENABLE", + "LOG_DOMAIN=0xD004100", + ] + + install_enable = false + subsystem_name = "distributedhardware" + part_name = "distributed_audio" +} diff --git a/services/test_example/distributedaudiotest.cpp b/services/test_example/distributedaudiotest.cpp new file mode 100644 index 00000000..a527fcc1 --- /dev/null +++ b/services/test_example/distributedaudiotest.cpp @@ -0,0 +1,696 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include +#include "unistd.h" +#include "distributedaudiotest.h" + +namespace { +using namespace OHOS::DistributedHardware; +const int32_t CMD_QUIT = 0; +const int32_t CMD_FIND = 9; +const int32_t CMD_OPEN_SPK = 1; +const int32_t CMD_CLOSE_SPK = 2; +const int32_t CMD_START_SPK = 3; +const int32_t CMD_STOP_SPK = 4; +const int32_t CMD_OPEN_MIC = 5; +const int32_t CMD_CLOSE_MIC = 6; +const int32_t CMD_START_MIC = 7; +const int32_t CMD_STOP_MIC = 8; +const int32_t CMD_SET_VOL = 11; +const int32_t CMD_GET_VOL = 12; + +const char DEV_TYPE_SPK = '1'; +const char DEV_TYPE_MIC = '2'; +const char SPK_FILE_PATH[128] = "/data/test.wav"; +const char MIC_FILE_PATH[128] = "/data/mic.pcm"; +constexpr int32_t TYPE_OFFSET = 12; +constexpr int32_t AUDIO_SAMPLE_RATE = 48000; +constexpr int32_t VOLUME_MIN = 0; +constexpr int32_t VOLUME_MAX = 15; +constexpr int32_t VOLUME_BIT = 3; +constexpr int32_t RENDER_FRAME_SIZE = 4096; +constexpr int32_t RENDER_INTER_LEAVED = 1; +constexpr int32_t RENDER_STREAM_ID = 0; +constexpr int32_t RENDER_CHANNEL_MASK = 2; +constexpr int32_t CAPTURE_INTER_LEAVED = 1; +constexpr int32_t CAPTURE_STREAM_ID = 2; +constexpr int32_t CAPTURE_CHANNEL_MASK = 2; +constexpr int32_t MILLISECOND_PER_SECOND = 1000; +constexpr int64_t AUDIO_FRAME_TIME_INTERFAL_DEFAULT = 21333; +constexpr int32_t CMD_EXECUTING_RETURN_LENGHT_MAX = 500; + +static AudioManager *g_manager = nullptr; +static AudioAdapter *g_adapter = nullptr; +static AudioRender *g_render = nullptr; +static AudioCapture *g_capture = nullptr; +static AudioAdapterDescriptor *g_devices = nullptr; + +static std::string g_devId = ""; + +static constexpr const char* PLAY_THREAD = "playThread"; +static constexpr const char* CAPTURE_THREAD = "captureThread"; + +int32_t g_deviceNum = 0; +int32_t g_frameNum = 0; +int32_t g_frameIndex = 0; +int32_t g_micFrameNum = 0; +bool g_isInitRenderData = false; +static std::vector renderData; + +static DeviceStatus g_spkStatus = DEVICE_IDLE; +static DeviceStatus g_micStatus = DEVICE_IDLE; + +static std::thread g_playingThread; +static std::thread g_capingThread; +FILE *g_micFile = nullptr; + +static std::string CloseSpk(); +static std::string CloseMic(); + +static int64_t GetNowTimeUs() +{ + std::chrono::microseconds nowUs = + std::chrono::duration_cast(std::chrono::system_clock::now().time_since_epoch()); + return nowUs.count(); +} + +static int32_t GetUserInput() +{ + int32_t res = -1; + size_t count = 3; + std::cout << ">>"; + std::cin >> res; + while (std::cin.fail() && count-- > 0) { + std::cin.clear(); + std::cin.ignore(); + std::cout << "invalid input, not a number! Please retry with a number." << std::endl; + std::cout << ">>"; + std::cin >> res; + } + return res; +} + +static void FindAudioDevice() +{ + if (g_manager == nullptr) { + std::cout << "Audio manager is null, Please Check network!" << std::endl; + return; + } + int32_t ret = g_manager->GetAllAdapters(g_manager, &g_devices, &g_deviceNum); + if (ret != DH_SUCCESS) { + std::cout << "Get audio devices failed!" << std::endl; + return; + } + for (int32_t index = 0; index < g_deviceNum; index++) { + const AudioAdapterDescriptor &desc = g_devices[index]; + if (index == 0) { + g_devId = desc.adapterName; + break; + } + } +} + +static int32_t InitTestDemo() +{ + std::cout << "**********************************************************************************" << std::endl; + std::cout << "Distributed Audio Test Demo Bin v1.3." << std::endl; + std::cout << "**********************************************************************************" << std::endl; + std::cout << std::endl; + std::cout << "Init distributed audio hdf service." << std::endl; + g_manager = GetAudioManagerFuncs(); + if (g_manager == nullptr) { + std::cout << "Distributed audio manager is null, Please Check network!" << std::endl; + return ERR_DH_AUDIO_HDF_FAIL; + } + std::cout << "Load audio manager success." << std::endl; + FindAudioDevice(); + if (g_devId.empty()) { + std::cout << "Cannot find distributed device. Please input 9 to query distribtued device." << std::endl; + } else { + std::cout << "Find one distributed device: " << g_devId << std::endl; + } + return DH_SUCCESS; +} + +static void HandleDevError(const char *condition, const char *value) +{ + if (condition[TYPE_OFFSET] == DEV_TYPE_SPK && g_spkStatus != DEVICE_IDLE) { + CloseSpk(); + } + + if (condition[TYPE_OFFSET] == DEV_TYPE_MIC && g_micStatus == DEVICE_IDLE) { + CloseMic(); + } + + std::cout << "Receive abnormal event, Demo quit." << std::endl; +} + +static int32_t ParamEventCallback(AudioExtParamKey key, const char *condition, const char *value, void *reserved, + void *cookie) +{ + std::string val(value); + std::string con(condition); + std::cout << std::endl; + std::cout << "**********************************************************************************" << std::endl; + std::cout << "Event recived: " << key << std::endl; + std::cout << "Condition: " << con << std::endl; + std::cout << "Value: " << val << std::endl; + std::cout << "**********************************************************************************" << std::endl; + std::cout << std::endl; + + if (key == AudioExtParamKey::AUDIO_EXT_PARAM_KEY_STATUS && con.rfind("ERR_EVENT", 0) == 0) { + HandleDevError(condition, value); + } + return DH_SUCCESS; +} + +static int32_t LoadSpkDev(const std::string &devId) +{ + struct AudioAdapterDescriptor *dev = nullptr; + for (int32_t index = 0; index < g_deviceNum; index++) { + struct AudioAdapterDescriptor &desc = g_devices[index]; + if (desc.adapterName == devId) { + dev = &desc; + break; + } + } + if (dev == nullptr) { + std::cout << "Input device id is wrong." << std::endl; + FindAudioDevice(); + return ERR_DH_AUDIO_HDF_FAIL; + } + if (g_manager == nullptr) { + return ERR_DH_AUDIO_HDF_FAIL; + } + if (g_adapter == nullptr) { + int32_t ret = g_manager->LoadAdapter(g_manager, dev, &g_adapter); + if (ret != DH_SUCCESS || g_adapter == nullptr) { + std::cout << "Load audio device failed, ret: " << ret << std::endl; + return ERR_DH_AUDIO_HDF_FAIL; + } + } + return DH_SUCCESS; +} + +static void OpenSpk(const std::string &devId) +{ + if (g_spkStatus != DEVICE_IDLE) { + std::cout << "Speaker device is already opened." << std::endl; + return; + } + if (LoadSpkDev(devId) != DH_SUCCESS) { + std::cout << "Load spk failed" << std::endl; + return; + } + ParamCallback callback = ParamEventCallback; + int32_t ret = g_adapter->RegExtraParamObserver(g_adapter, callback, nullptr); + if (ret != DH_SUCCESS) { + std::cout << "Register observer failed, ret: " << ret << std::endl; + return; + } + + struct AudioDeviceDescriptor renderDesc; + renderDesc.pins = AudioPortPin::PIN_OUT_SPEAKER; + renderDesc.desc = nullptr; + AudioSampleAttributes g_rattrs = {}; + g_rattrs.type = AUDIO_IN_MEDIA; + g_rattrs.interleaved = RENDER_INTER_LEAVED; + g_rattrs.streamId = RENDER_STREAM_ID; + g_rattrs.channelCount = RENDER_CHANNEL_MASK; + g_rattrs.sampleRate = AUDIO_SAMPLE_RATE; + g_rattrs.format = AudioFormat::AUDIO_FORMAT_TYPE_PCM_16_BIT; + ret = g_adapter->CreateRender(g_adapter, &renderDesc, &g_rattrs, &g_render); + if (ret != DH_SUCCESS || g_render == nullptr) { + std::cout << "Open SPK device failed, ret: " << ret << std::endl; + return; + } + g_spkStatus = DEVICE_OPEN; + std::cout << "Open SPK device success." << std::endl; +} + +static void WriteStreamWait(const int64_t &startTime) +{ + int64_t endTime = GetNowTimeUs(); + int64_t passTime = endTime - startTime; + + if (passTime > AUDIO_FRAME_TIME_INTERFAL_DEFAULT) { + return; + } + int64_t remainTime = AUDIO_FRAME_TIME_INTERFAL_DEFAULT - passTime; + std::this_thread::sleep_for(std::chrono::microseconds(remainTime)); +} + +static void Play() +{ + if (g_render == nullptr) { + std::cout << "SPK device is null." << std::endl; + return; + } + if (pthread_setname_np(pthread_self(), PLAY_THREAD) != DH_SUCCESS) { + std::cout << "Play thread setname failed." << std::endl; + } + std::cout << "Playing thread started." << std::endl; + g_render->control.Start((AudioHandle)g_render); + g_spkStatus = DEVICE_START; + + uint64_t size = 0; + while (g_spkStatus == DEVICE_START) { + int64_t startTime = GetNowTimeUs(); + int32_t ret = g_render->RenderFrame(g_render, renderData[g_frameIndex], RENDER_FRAME_SIZE, &size); + if (ret != DH_SUCCESS) { + std::cout<<"RenderFrame failed, index: "<< g_frameIndex << ", ret: " << ret << std::endl; + } + g_frameIndex++; + if (g_frameNum != 0 && g_frameIndex == g_frameNum) { + g_frameIndex = 0; + } + WriteStreamWait(startTime); + } + std::cout << "Playing thread stopped." << std::endl; +} + +static void StartRender() +{ + if (g_spkStatus == DEVICE_IDLE) { + std::cout << "Speaker device is not opened, start render failed." << std::endl; + return; + } + + if (g_spkStatus == DEVICE_OPEN) { + WavHdr wavHeader; + size_t headerSize = sizeof(WavHdr); + if (!g_isInitRenderData) { + struct stat statbuf; + stat(SPK_FILE_PATH, &statbuf); + int32_t size = statbuf.st_size; + g_frameNum = (size - headerSize) / RENDER_FRAME_SIZE; + std::cout << "Audio file frame num: " << g_frameNum << std::endl; + for (int32_t j = 0; j < g_frameNum; j++) { + uint8_t *frame = new uint8_t[RENDER_FRAME_SIZE](); + renderData.push_back(frame); + } + g_isInitRenderData = true; + } + FILE *wavFile = fopen(SPK_FILE_PATH, "rb"); + fread(&wavHeader, 1, headerSize, wavFile); + for (int32_t i = 0; i < g_frameNum; i++) { + fread(renderData[i], 1, RENDER_FRAME_SIZE, wavFile); + } + fclose(wavFile); + g_frameIndex = 0; + g_playingThread = std::thread(Play); + return; + } + if (g_spkStatus == DEVICE_START) { + std::cout << "Speaker device is started." << std::endl; + return; + } + if (g_spkStatus == DEVICE_STOP) { + g_playingThread = std::thread(Play); + } +} + +static void StopRender() +{ + if (g_render == nullptr) { + std::cout << "SPK device is null." << std::endl; + return; + } + + if (g_spkStatus == DEVICE_IDLE) { + std::cout << "Speaker device is not opened." << std::endl; + return; + } + + if (g_spkStatus == DEVICE_OPEN) { + std::cout << "Speaker device is not started." << std::endl; + return; + } + + if (g_spkStatus == DEVICE_STOP) { + std::cout << "Speaker device is already stoped." << std::endl; + return; + } + + g_spkStatus = DEVICE_STOP; + if (g_playingThread.joinable()) { + g_playingThread.join(); + } + g_render->control.Stop((AudioHandle)g_render); +} + +static void CloseSpk() +{ + if (g_spkStatus == DEVICE_IDLE) { + std::cout << "Speaker device is not opened." << std::endl; + return; + } + + if (g_spkStatus == DEVICE_START) { + StopRender(); + } + + int32_t ret = g_adapter->DestroyRender(g_adapter, g_render); + if (ret != DH_SUCCESS) { + std::cout << "Close speaker failed" << std::endl; + return; + } + if (g_micStatus == DEVICE_IDLE) { + g_manager->UnloadAdapter(g_manager, g_adapter); + g_adapter = nullptr; + } + g_spkStatus = DEVICE_IDLE; + + if (g_isInitRenderData) { + for (auto &p : renderData) { + delete[] p; + } + renderData.clear(); + g_isInitRenderData = false; + } + std::cout << "Close SPK device success." << std::endl; +} + +static int32_t LoadMicDev(const std::string &devId) +{ + struct AudioAdapterDescriptor *dev = nullptr; + for (int32_t index = 0; index < g_deviceNum; index++) { + struct AudioAdapterDescriptor &desc = g_devices[index]; + if (desc.adapterName == devId) { + dev = &desc; + break; + } + } + if (dev == nullptr) { + std::cout << "Input device id is wrong." << std::endl; + FindAudioDevice(); + return ERR_DH_AUDIO_HDF_FAIL; + } + if (g_manager == nullptr) { + return ERR_DH_AUDIO_HDF_FAIL; + } + if (g_adapter == nullptr) { + int32_t ret = g_manager->LoadAdapter(g_manager, dev, &g_adapter); + if (ret != DH_SUCCESS || g_adapter == nullptr) { + std::cout << "Load audio device failed, ret: " << ret << std::endl; + return ERR_DH_AUDIO_HDF_FAIL; + } + } + return DH_SUCCESS; +} + +static void OpenMic(const std::string &devId) +{ + if (g_micStatus != DEVICE_IDLE) { + std::cout << "Mic device is already opened." << std::endl; + return; + } + if (LoadMicDev(devId) != DH_SUCCESS) { + std::cout << "Load audio device failed." << std::endl; + return; + } + + AudioDeviceDescriptor captureDesc; + captureDesc.pins = AudioPortPin::PIN_IN_MIC; + captureDesc.desc = nullptr; + AudioSampleAttributes captureAttr; + captureAttr.type = AUDIO_IN_MEDIA; + captureAttr.interleaved = CAPTURE_INTER_LEAVED; + captureAttr.streamId = CAPTURE_STREAM_ID; + captureAttr.channelCount = CAPTURE_CHANNEL_MASK; + captureAttr.sampleRate = AUDIO_SAMPLE_RATE; + captureAttr.format = AudioFormat::AUDIO_FORMAT_TYPE_PCM_16_BIT; + int32_t ret = g_adapter->CreateCapture(g_adapter, &captureDesc, &captureAttr, &g_capture); + if (ret != DH_SUCCESS || g_capture == nullptr) { + std::cout << "Open MIC device failed." << std::endl; + return; + } + g_micStatus = DEVICE_OPEN; + std::cout << "Open MIC device success." << std::endl; +} + +static void ReadStreamWait(const int64_t &startTime) +{ + int64_t endTime = GetNowTimeUs(); + int32_t passTime = endTime - startTime; + + if (passTime > AUDIO_FRAME_TIME_INTERFAL_DEFAULT) { + return; + } + int64_t remainTime = AUDIO_FRAME_TIME_INTERFAL_DEFAULT - passTime; + std::this_thread::sleep_for(std::chrono::microseconds(remainTime)); +} + +static void Capture() +{ + if (g_capture == nullptr) { + std::cout << "MIC device is null." << std::endl; + return; + } + if (pthread_setname_np(pthread_self(), CAPTURE_THREAD) != DH_SUCCESS) { + std::cout << "Capture thread setname failed." << std::endl; + } + std::cout << "Capturing thread started." << std::endl; + g_capture->control.Start((AudioHandle)g_capture); + g_micStatus = DEVICE_START; + + uint64_t size = 0; + while (g_micStatus == DEVICE_START) { + uint8_t *data[RENDER_FRAME_SIZE]; + int64_t startTime = GetNowTimeUs(); + int32_t ret = g_capture->CaptureFrame(g_capture, data, RENDER_FRAME_SIZE, &size); + if (ret != DH_SUCCESS) { + std::cout << "CaptureFrame failed, ret: " << ret << std::endl; + return; + } + int32_t writeCnt = fwrite(data, 1, RENDER_FRAME_SIZE, g_micFile); + if (writeCnt != RENDER_FRAME_SIZE) { + std::cout << "fwrite data failed." << std::endl; + } + g_micFrameNum++; + ReadStreamWait(startTime); + } + std::cout << "Capturing thread stopped." << std::endl; +} + +static void StartCapture() +{ + if (g_micStatus == DEVICE_IDLE) { + std::cout << "Mic device is not opened, start capture failed." << std::endl; + return; + } + + if (g_micStatus == DEVICE_OPEN) { + g_micFile = fopen(MIC_FILE_PATH, "ab+"); + if (g_micFile == nullptr) { + std::cout << "Open pcm file failed." << std::endl; + return; + } + g_capingThread = std::thread(Capture); + return; + } + + if (g_micStatus == DEVICE_START) { + std::cout << "Mic device is already started." << std::endl; + return; + } + + if (g_micStatus == DEVICE_STOP) { + g_capingThread = std::thread(Capture); + } +} + +static void StopCapture() +{ + if (g_capture == nullptr) { + std::cout << "MIC device is null." << std::endl; + return; + } + if (g_micStatus == DEVICE_IDLE) { + std::cout << "Mic device is not opened." << std::endl; + return; + } + if (g_micStatus == DEVICE_OPEN) { + std::cout << "Mic device is not started." << std::endl; + return; + } + if (g_micStatus == DEVICE_STOP) { + std::cout << "Mic device is already started." << std::endl; + return; + } + g_micStatus = DEVICE_STOP; + if (g_capingThread.joinable()) { + g_capingThread.join(); + } + g_capture->control.Stop((AudioHandle)g_capture); +} + +static void CloseMic() +{ + if (g_micStatus == DEVICE_IDLE) { + std::cout << "Mic device is not opened." << std::endl; + return; + } + + if (g_micStatus == DEVICE_START) { + StopCapture(); + } + + int32_t ret = g_adapter->DestroyCapture(g_adapter, g_capture); + if (ret != DH_SUCCESS) { + std::cout << "Close mic failed." << std::endl; + return; + } + if (g_spkStatus == DEVICE_IDLE) { + g_manager->UnloadAdapter(g_manager, g_adapter); + g_adapter = nullptr; + } + if (g_micFile != nullptr) { + fclose(g_micFile); + g_micFile = nullptr; + } + g_micStatus = DEVICE_IDLE; + std::cout << "Close MIC device success." << std::endl; +} + +static void SetVolume() +{ + if (g_spkStatus == DEVICE_IDLE) { + std::cout << "Speaker is not opened, can not set volume." << std::endl; + return; + } + std::cout << "Please input volum to set [0,15]." << std::endl; + int32_t volInt = GetUserInput(); + if (volInt < VOLUME_MIN || volInt > VOLUME_MAX) { + std::cout << "Volume is invalid." << std::endl; + return; + } + std::cout << "Set volume: " << volInt << std::endl; + AudioExtParamKey key = AudioExtParamKey::AUDIO_EXT_PARAM_KEY_VOLUME; + std::string condition = "EVENT_TYPE=1;VOLUME_GROUP_ID=1;AUDIO_VOLUME_TYPE=1;"; + int32_t ret = g_adapter->SetExtraParams(g_adapter, key, condition.c_str(), vol.c_str()); + if (ret != DH_SUCCESS) { + std::cout << "Set volume failed" << std::endl; + } +} + +static void GetVolume() +{ + if (g_spkStatus == DEVICE_IDLE) { + std::cout << "Speaker is not opened, can not get volume." << std::endl; + return; + } + AudioExtParamKey key = AudioExtParamKey::AUDIO_EXT_PARAM_KEY_VOLUME; + std::string condition = "EVENT_TYPE=1;VOLUME_GROUP_ID=1;AUDIO_VOLUME_TYPE=1;"; + char vol[VOLUME_BIT]; + int32_t ret = g_adapter->GetExtraParams(g_adapter, key, condition.c_str(), vol, VOLUME_BIT); + if (ret != DH_SUCCESS) { + std::cout << "Get Volume failed." << std::endl; + return; + } + std::cout << "Get volume success. volume: " << vol < +#include +#include +#include +#include +#include +#include + +#include "audio_adapter.h" +#include "audio_manager.h" +#include "audio_types.h" +#include "daudio_errcode.h" + +enum class DeviceStatus : uint32_t { + DEVICE_IDLE = 0, + DEVICE_OPEN = 1, + DEVICE_START = 2, + DEVICE_STOP = 3, +}; + +struct WAV_HEADER { + /* RIFF Chunk Descriptor */ + uint8_t riff[4] = {'R', 'I', 'F', 'F'}; + uint32_t chunkSize = 0; + uint8_t wave[4] = {'W', 'A', 'V', 'E'}; + /* "fmt" sub-chunk */ + uint8_t fmt[4] = {'f', 'm', 't', ' '}; + uint32_t subchunk1Size = 16; + uint16_t audioFormat = 1; + uint16_t numOfChan = 2; + uint32_t samplesPerSec = 44100; + uint32_t bytesPerSec = 176400; + uint16_t blockAlign = 2; + uint16_t bitsPerSample = 16; + /* "data" sub-chunk */ + uint8_t subchunk2ID[4] = {'d', 'a', 't', 'a'}; + uint32_t subchunk2Size = 0; +}; +using WavHdr = struct WAV_HEADER; + +#endif \ No newline at end of file -- Gitee From ae924e8eb54eac7598c3fda218c470bd0d657f4b Mon Sep 17 00:00:00 2001 From: wujinpeng Date: Thu, 21 Sep 2023 13:59:20 +0800 Subject: [PATCH 35/35] =?UTF-8?q?UT=E9=97=AE=E9=A2=98=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: wujinpeng --- .../unittest/managersink/src/daudio_sink_manager_test.cpp | 2 +- .../test/unittest/sourcedevice/src/daudio_source_dev_test.cpp | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/services/audiomanager/test/unittest/managersink/src/daudio_sink_manager_test.cpp b/services/audiomanager/test/unittest/managersink/src/daudio_sink_manager_test.cpp index bad59dca..3c9c4bf5 100644 --- a/services/audiomanager/test/unittest/managersink/src/daudio_sink_manager_test.cpp +++ b/services/audiomanager/test/unittest/managersink/src/daudio_sink_manager_test.cpp @@ -56,7 +56,7 @@ HWTEST_F(DAudioSinkManagerTest, CreateAudioDevice_001, TestSize.Level1) daudioSinkManager.LoadAVReceiverEngineProvider(); EXPECT_EQ(DH_SUCCESS, daudioSinkManager.CreateAudioDevice(devId)); daudioSinkManager.channelState_ = ChannelState::MIC_CONTROL_OPENED; - daudioSinkManager.LoadAVReceiverEngineProvider(); + daudioSinkManager.LoadAVSenderEngineProvider(); EXPECT_EQ(DH_SUCCESS, daudioSinkManager.CreateAudioDevice(devId)); auto dev = std::make_shared(devId); daudioSinkManager.audioDevMap_.emplace(devId, dev); diff --git a/services/audiomanager/test/unittest/sourcedevice/src/daudio_source_dev_test.cpp b/services/audiomanager/test/unittest/sourcedevice/src/daudio_source_dev_test.cpp index 55846fed..09392cce 100644 --- a/services/audiomanager/test/unittest/sourcedevice/src/daudio_source_dev_test.cpp +++ b/services/audiomanager/test/unittest/sourcedevice/src/daudio_source_dev_test.cpp @@ -155,7 +155,7 @@ HWTEST_F(DAudioSourceDevTest, CreatTasks_003, TestSize.Level1) { sourceDev_->AwakeAudioDev(); AudioEvent event = AudioEvent(OPEN_SPEAKER, ""); - EXPECT_NE(ERR_DH_AUDIO_SA_OPEN_CTRL_FAILED, sourceDev_->HandleOpenDSpeaker(event)); + EXPECT_EQ(DH_SUCCESS, sourceDev_->HandleOpenDSpeaker(event)); event.type = OPEN_MIC; EXPECT_NE(ERR_DH_AUDIO_SA_OPEN_CTRL_FAILED, sourceDev_->HandleOpenDMic(event)); @@ -844,7 +844,7 @@ HWTEST_F(DAudioSourceDevTest, TaskOpenCtrlChannel_001, TestSize.Level1) sourceDev_->rpcResult_ = true; sourceDev_->rpcNotify_ = sourceDev_->EVENT_NOTIFY_OPEN_MIC; jParam = { { KEY_DH_ID, DH_ID_SPK } }; - EXPECT_EQ(DH_SUCCESS, sourceDev_->TaskOpenCtrlChannel(jParam.dump())); + EXPECT_NE(DH_SUCCESS, sourceDev_->TaskOpenCtrlChannel(jParam.dump())); } /** -- Gitee