From 686bd11635508274ec65a9f3abe42c286b1b1703 Mon Sep 17 00:00:00 2001 From: ljh54_space Date: Mon, 28 Aug 2023 10:39:31 +0800 Subject: [PATCH] =?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