From f5a78e43e1a3ee086768e5733296494729a691ec Mon Sep 17 00:00:00 2001 From: zhonglufu Date: Wed, 26 Jun 2024 17:16:11 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E5=88=86=E5=B8=83=E5=BC=8F=E9=9F=B3?= =?UTF-8?q?=E9=A2=91CFI=E6=95=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zhonglufu --- .../src/daudio_sink_ipc_callback_stub.cpp | 9 +- .../src/daudio_ipc_callback_stub.cpp | 15 +- .../audioclient/micclient/src/dmic_client.cpp | 4 +- .../spkclient/src/dspeaker_client.cpp | 6 +- .../managersink/include/daudio_sink_dev.h | 1 + .../managersink/src/daudio_sink_dev.cpp | 78 +++++++- .../managersink/src/daudio_sink_manager.cpp | 2 +- .../managersource/include/daudio_source_dev.h | 2 + .../src/daudio_echo_cannel_manager.cpp | 2 +- .../managersource/src/daudio_source_dev.cpp | 167 +++++++++++++++++- .../src/daudio_source_manager.cpp | 16 +- .../managersource/src/dmic_dev.cpp | 2 +- .../managersource/src/dspeaker_dev.cpp | 2 +- .../servicesink/src/daudio_sink_stub.cpp | 23 ++- .../servicesource/src/daudio_source_stub.cpp | 19 +- 15 files changed, 321 insertions(+), 27 deletions(-) diff --git a/interfaces/inner_kits/native_cpp/audio_sink/src/daudio_sink_ipc_callback_stub.cpp b/interfaces/inner_kits/native_cpp/audio_sink/src/daudio_sink_ipc_callback_stub.cpp index 4c5e7a47..e96d94ce 100644 --- a/interfaces/inner_kits/native_cpp/audio_sink/src/daudio_sink_ipc_callback_stub.cpp +++ b/interfaces/inner_kits/native_cpp/audio_sink/src/daudio_sink_ipc_callback_stub.cpp @@ -44,8 +44,13 @@ int32_t DAudioSinkIpcCallbackStub::OnRemoteRequest(uint32_t code, MessageParcel DHLOGE("Invalid request code."); return IPCObjectStub::OnRemoteRequest(code, data, reply, option); } - DAudioSinkCallbackFunc &func = iter->second; - return (this->*func)(data, reply, option); + switch (code) { + case NOTIFY_RESOURCEINFO: + return OnNotifyResourceInfoInner(data, reply, option); + default: + break; + } + return ERR_DH_AUDIO_NOT_FOUND_KEY; } int32_t DAudioSinkIpcCallbackStub::OnNotifyResourceInfoInner(MessageParcel &data, MessageParcel &reply, diff --git a/interfaces/inner_kits/native_cpp/audio_source/src/daudio_ipc_callback_stub.cpp b/interfaces/inner_kits/native_cpp/audio_source/src/daudio_ipc_callback_stub.cpp index e66f132b..ee988913 100644 --- a/interfaces/inner_kits/native_cpp/audio_source/src/daudio_ipc_callback_stub.cpp +++ b/interfaces/inner_kits/native_cpp/audio_source/src/daudio_ipc_callback_stub.cpp @@ -47,8 +47,19 @@ int32_t DAudioIpcCallbackStub::OnRemoteRequest(uint32_t code, MessageParcel &dat DHLOGE("Invalid request code."); return IPCObjectStub::OnRemoteRequest(code, data, reply, option); } - DAudioCallbackFunc &func = iter->second; - return (this->*func)(data, reply, option); + switch (code) { + case NOTIFY_REGRESULT: + return OnNotifyRegResultInner(data, reply, option); + case NOTIFY_UNREGRESULT: + return OnNotifyUnregResultInner(data, reply, option); + case NOTIFY_STATE_CHANGED: + return OnHardwareStateChangedInner(data, reply, option); + case NOTIFY_DATASYNC_TRIGGER: + return OnDataSyncTriggerInner(data, reply, option); + default: + break; + } + return ERR_DH_AUDIO_NOT_FOUND_KEY; } int32_t DAudioIpcCallbackStub::OnNotifyRegResultInner(MessageParcel &data, MessageParcel &reply, MessageOption &option) diff --git a/services/audioclient/micclient/src/dmic_client.cpp b/services/audioclient/micclient/src/dmic_client.cpp index cefedb24..1a0730c9 100644 --- a/services/audioclient/micclient/src/dmic_client.cpp +++ b/services/audioclient/micclient/src/dmic_client.cpp @@ -92,7 +92,7 @@ int32_t DMicClient::OnStateChange(const AudioEventType type) isBlocking_.store(true); if (audioParam_.captureOpts.capturerFlags != MMAP_MODE) { isCaptureReady_.store(true); - captureDataThread_ = std::thread(&DMicClient::CaptureThreadRunning, this); + captureDataThread_ = std::thread([this]() { this->CaptureThreadRunning(); }); } event.type = AudioEventType::MIC_OPENED; break; @@ -307,7 +307,7 @@ void DMicClient::OnReadData(size_t length) { AudioStandard::BufferDesc bufDesc; CHECK_NULL_VOID(audioCapturer_); - + if (audioCapturer_->GetBufferDesc(bufDesc) != DH_SUCCESS || bufDesc.bufLength == 0) { DHLOGE("Get buffer desc failed."); return; diff --git a/services/audioclient/spkclient/src/dspeaker_client.cpp b/services/audioclient/spkclient/src/dspeaker_client.cpp index 117b769a..7d1c1601 100644 --- a/services/audioclient/spkclient/src/dspeaker_client.cpp +++ b/services/audioclient/spkclient/src/dspeaker_client.cpp @@ -225,7 +225,7 @@ int32_t DSpeakerClient::StartRender() } if (audioParam_.renderOpts.renderFlags != MMAP_MODE) { isRenderReady_.store(true); - renderDataThread_ = std::thread(&DSpeakerClient::PlayThreadRunning, this); + renderDataThread_ = std::thread([this]() { this->PlayThreadRunning(); }); } clientStatus_ = AudioStatus::STATUS_START; return DH_SUCCESS; @@ -428,7 +428,7 @@ void DSpeakerClient::OnVolumeKeyEvent(AudioStandard::VolumeEvent volumeEvent) cJSON *jParam = cJSON_CreateObject(); CHECK_NULL_VOID(jParam); - + cJSON_AddStringToObject(jParam, KEY_DH_ID, std::to_string(dhId_).c_str()); cJSON_AddStringToObject(jParam, KEY_CHANGE_TYPE, VOLUME_CHANAGE); cJSON_AddStringToObject(jParam, AUDIO_STREAM_TYPE, std::to_string(volumeEvent.volumeType).c_str()); @@ -600,7 +600,7 @@ void DSpeakerClient::ReStart() } if (audioParam_.renderOpts.renderFlags != MMAP_MODE) { isRenderReady_.store(true); - renderDataThread_ = std::thread(&DSpeakerClient::PlayThreadRunning, this); + renderDataThread_ = std::thread([this]() { this->PlayThreadRunning(); }); } if (audioRenderer_ != nullptr) { audioRenderer_->Start(); diff --git a/services/audiomanager/managersink/include/daudio_sink_dev.h b/services/audiomanager/managersink/include/daudio_sink_dev.h index 384fc5dd..ab17a29b 100644 --- a/services/audiomanager/managersink/include/daudio_sink_dev.h +++ b/services/audiomanager/managersink/include/daudio_sink_dev.h @@ -130,6 +130,7 @@ private: void NotifyRenderStateChange(const AppExecFwk::InnerEvent::Pointer &event); void NotifyPlayStatusChange(const AppExecFwk::InnerEvent::Pointer &event); int32_t GetEventParam(const AppExecFwk::InnerEvent::Pointer &event, std::string &eventParam); + void ProcessEventInner(const AppExecFwk::InnerEvent::Pointer &event); private: using SinkEventFunc = void (SinkEventHandler::*)(const AppExecFwk::InnerEvent::Pointer &event); diff --git a/services/audiomanager/managersink/src/daudio_sink_dev.cpp b/services/audiomanager/managersink/src/daudio_sink_dev.cpp index d4c2b1d5..f4bca8be 100644 --- a/services/audiomanager/managersink/src/daudio_sink_dev.cpp +++ b/services/audiomanager/managersink/src/daudio_sink_dev.cpp @@ -611,6 +611,47 @@ DAudioSinkDev::SinkEventHandler::SinkEventHandler(const std::shared_ptrGetInnerEventId()) { + case OPEN_MIC: + NotifyOpenMic(event); + break; + case CLOSE_MIC: + NotifyCloseMic(event); + break; + case MIC_OPENED: + NotifyMicOpened(event); + break; + case MIC_CLOSED: + NotifyMicClosed(event); + break; + case VOLUME_SET: + NotifySetVolume(event); + break; + case VOLUME_CHANGE: + NotifyVolumeChange(event); + break; + case SET_PARAM: + NotifySetParam(event); + break; + case VOLUME_MUTE_SET: + NotifySetMute(event); + break; + case AUDIO_FOCUS_CHANGE: + NotifyFocusChange(event); + break; + case AUDIO_RENDER_STATE_CHANGE: + NotifyRenderStateChange(event); + break; + case CHANGE_PLAY_STATUS: + NotifyPlayStatusChange(event); + break; + default: + break; + } +} + void DAudioSinkDev::SinkEventHandler::ProcessEvent(const AppExecFwk::InnerEvent::Pointer &event) { auto iter = mapEventFuncs_.find(event->GetInnerEventId()); @@ -618,8 +659,41 @@ void DAudioSinkDev::SinkEventHandler::ProcessEvent(const AppExecFwk::InnerEvent: DHLOGE("Event Id is invaild. %{public}d", event->GetInnerEventId()); return; } - SinkEventFunc &func = iter->second; - (this->*func)(event); + switch (event->GetInnerEventId()) { + case CTRL_OPENED: + NotifyCtrlOpened(event); + break; + case CTRL_CLOSED: + NotifyCtrlClosed(event); + break; + case OPEN_SPEAKER: + NotifyOpenSpeaker(event); + break; + case CLOSE_SPEAKER: + NotifyCloseSpeaker(event); + break; + case SPEAKER_OPENED: + NotifySpeakerOpened(event); + break; + case SPEAKER_CLOSED: + NotifySpeakerClosed(event); + break; + case OPEN_MIC: + case CLOSE_MIC: + case MIC_OPENED: + case MIC_CLOSED: + case VOLUME_SET: + case VOLUME_CHANGE: + case SET_PARAM: + case VOLUME_MUTE_SET: + case AUDIO_FOCUS_CHANGE: + case AUDIO_RENDER_STATE_CHANGE: + case CHANGE_PLAY_STATUS: + ProcessEventInner(event); + break; + default: + break; + } } void DAudioSinkDev::SinkEventHandler::NotifyCtrlOpened(const AppExecFwk::InnerEvent::Pointer &event) diff --git a/services/audiomanager/managersink/src/daudio_sink_manager.cpp b/services/audiomanager/managersink/src/daudio_sink_manager.cpp index 7ce29f14..da23c9da 100644 --- a/services/audiomanager/managersink/src/daudio_sink_manager.cpp +++ b/services/audiomanager/managersink/src/daudio_sink_manager.cpp @@ -126,7 +126,7 @@ void DAudioSinkManager::OnSinkDevReleased(const std::string &devId) if (devClearThread_.joinable()) { devClearThread_.join(); } - devClearThread_ = std::thread(&DAudioSinkManager::ClearAudioDev, this, devId); + devClearThread_ = std::thread([this, devId]() { this->ClearAudioDev(devId); }); if (pthread_setname_np(devClearThread_.native_handle(), DEVCLEAR_THREAD) != DH_SUCCESS) { DHLOGE("Dev clear thread setname failed."); } diff --git a/services/audiomanager/managersource/include/daudio_source_dev.h b/services/audiomanager/managersource/include/daudio_source_dev.h index 10ef8da9..b97c6625 100644 --- a/services/audiomanager/managersource/include/daudio_source_dev.h +++ b/services/audiomanager/managersource/include/daudio_source_dev.h @@ -121,6 +121,7 @@ private: int32_t ConvertString2Int(std::string val); int32_t CreateMicEngine(std::shared_ptr mic); void SetRegDataType(const std::string &capability); + void NotifyEventInner(const AudioEvent &event); private: static constexpr uint8_t RPC_WAIT_SECONDS = 10; @@ -174,6 +175,7 @@ private: void MicMmapStartCallback(const AppExecFwk::InnerEvent::Pointer &event); void MicMmapStopCallback(const AppExecFwk::InnerEvent::Pointer &event); int32_t GetEventParam(const AppExecFwk::InnerEvent::Pointer &event, std::string &eventParam); + void ProcessEventInner(const AppExecFwk::InnerEvent::Pointer &event); private: using SourceEventFunc = void (SourceEventHandler::*)(const AppExecFwk::InnerEvent::Pointer &event); diff --git a/services/audiomanager/managersource/src/daudio_echo_cannel_manager.cpp b/services/audiomanager/managersource/src/daudio_echo_cannel_manager.cpp index fb23e5be..0ef6406f 100644 --- a/services/audiomanager/managersource/src/daudio_echo_cannel_manager.cpp +++ b/services/audiomanager/managersource/src/daudio_echo_cannel_manager.cpp @@ -370,7 +370,7 @@ int32_t DAudioEchoCannelManager::StartAecProcessor() } if (!isAecRunning_.load()) { isAecRunning_.store(true); - aecProcessThread_ = std::thread(&DAudioEchoCannelManager::AecProcessData, this); + aecProcessThread_ = std::thread([this]() { this->AecProcessData(); }); } DHLOGI("Aec effect process start success."); return DH_SUCCESS; diff --git a/services/audiomanager/managersource/src/daudio_source_dev.cpp b/services/audiomanager/managersource/src/daudio_source_dev.cpp index 6e7727e7..91cb03c6 100644 --- a/services/audiomanager/managersource/src/daudio_source_dev.cpp +++ b/services/audiomanager/managersource/src/daudio_source_dev.cpp @@ -233,6 +233,57 @@ void DAudioSourceDev::SetThreadStatusFlag(bool flag) threadStatusFlag_ = flag; } +void DAudioSourceDev::NotifyEventInner(const AudioEvent &event) +{ + switch (event.type) { + case OPEN_MIC: + HandleOpenDMic(event); + break; + case CLOSE_MIC: + HandleCloseDMic(event); + break; + case MIC_OPENED: + HandleDMicOpened(event); + break; + case MIC_CLOSED: + HandleDMicClosed(event); + break; + case CTRL_CLOSED: + HandleCtrlTransClosed(event); + break; + case VOLUME_SET: + case VOLUME_MUTE_SET: + HandleVolumeSet(event); + break; + case VOLUME_CHANGE: + HandleVolumeChange(event); + break; + case AUDIO_FOCUS_CHANGE: + HandleFocusChange(event); + break; + case AUDIO_RENDER_STATE_CHANGE: + HandleRenderStateChange(event); + break; + case CHANGE_PLAY_STATUS: + HandlePlayStatusChange(event); + break; + case MMAP_SPK_START: + HandleSpkMmapStart(event); + break; + case MMAP_SPK_STOP: + HandleSpkMmapStop(event); + break; + case MMAP_MIC_START: + HandleMicMmapStart(event); + break; + case MMAP_MIC_STOP: + HandleMicMmapStop(event); + break; + default: + break; + } +} + void DAudioSourceDev::NotifyEvent(const AudioEvent &event) { DHLOGD("Notify event, eventType: %{public}d.", event.type); @@ -241,8 +292,47 @@ void DAudioSourceDev::NotifyEvent(const AudioEvent &event) DHLOGE("Invalid eventType: %{public}d.", event.type); return; } - DAudioSourceDevFunc &func = iter->second; - (this->*func)(event); + switch (event.type) { + case OPEN_SPEAKER: + HandleOpenDSpeaker(event); + break; + case CLOSE_SPEAKER: + HandleCloseDSpeaker(event); + break; + case SPEAKER_OPENED: + HandleDSpeakerOpened(event); + break; + case SPEAKER_CLOSED: + HandleDSpeakerClosed(event); + break; + case NOTIFY_OPEN_SPEAKER_RESULT: + case NOTIFY_CLOSE_SPEAKER_RESULT: + case NOTIFY_OPEN_MIC_RESULT: + case NOTIFY_CLOSE_MIC_RESULT: + case NOTIFY_OPEN_CTRL_RESULT: + case NOTIFY_CLOSE_CTRL_RESULT: + HandleNotifyRPC(event); + break; + case OPEN_MIC: + case CLOSE_MIC: + case MIC_OPENED: + case MIC_CLOSED: + case CTRL_CLOSED: + case VOLUME_SET: + case VOLUME_MUTE_SET: + case VOLUME_CHANGE: + case AUDIO_FOCUS_CHANGE: + case AUDIO_RENDER_STATE_CHANGE: + case CHANGE_PLAY_STATUS: + case MMAP_SPK_START: + case MMAP_SPK_STOP: + case MMAP_MIC_START: + case MMAP_MIC_STOP: + NotifyEventInner(event); + break; + default: + break; + } } int32_t DAudioSourceDev::HandleOpenDSpeaker(const AudioEvent &event) @@ -1316,6 +1406,41 @@ DAudioSourceDev::SourceEventHandler::SourceEventHandler(const std::shared_ptrGetInnerEventId()) { + case EVENT_VOLUME_SET: + SetVolumeCallback(event); + break; + case EVENT_VOLUME_CHANGE: + ChangeVolumeCallback(event); + break; + case EVENT_AUDIO_FOCUS_CHANGE: + ChangeFocusCallback(event); + break; + case EVENT_AUDIO_RENDER_STATE_CHANGE: + ChangeRenderStateCallback(event); + break; + case EVENT_CHANGE_PLAY_STATUS: + PlayStatusChangeCallback(event); + break; + case EVENT_MMAP_SPK_START: + SpkMmapStartCallback(event); + break; + case EVENT_MMAP_SPK_STOP: + SpkMmapStopCallback(event); + break; + case EVENT_MMAP_MIC_START: + MicMmapStartCallback(event); + break; + case EVENT_MMAP_MIC_STOP: + MicMmapStopCallback(event); + break; + default: + break; + } +} + void DAudioSourceDev::SourceEventHandler::ProcessEvent(const AppExecFwk::InnerEvent::Pointer &event) { auto iter = mapEventFuncs_.find(event->GetInnerEventId()); @@ -1323,8 +1448,42 @@ void DAudioSourceDev::SourceEventHandler::ProcessEvent(const AppExecFwk::InnerEv DHLOGE("Event Id is invaild. %{public}d", event->GetInnerEventId()); return; } - SourceEventFunc &func = iter->second; - (this->*func)(event); + switch (event->GetInnerEventId()) { + case EVENT_DAUDIO_ENABLE: + EnableDAudioCallback(event); + break; + case EVENT_DAUDIO_DISABLE: + DisableDAudioCallback(event); + break; + case EVENT_OPEN_SPEAKER: + OpenDSpeakerCallback(event); + break; + case EVENT_CLOSE_SPEAKER: + CloseDSpeakerCallback(event); + break; + case EVENT_OPEN_MIC: + OpenDMicCallback(event); + break; + case EVENT_CLOSE_MIC: + CloseDMicCallback(event); + break; + case EVENT_DMIC_CLOSED: + DMicClosedCallback(event); + break; + case EVENT_VOLUME_SET: + case EVENT_VOLUME_CHANGE: + case EVENT_AUDIO_FOCUS_CHANGE: + case EVENT_AUDIO_RENDER_STATE_CHANGE: + case EVENT_CHANGE_PLAY_STATUS: + case EVENT_MMAP_SPK_START: + case EVENT_MMAP_SPK_STOP: + case EVENT_MMAP_MIC_START: + case EVENT_MMAP_MIC_STOP: + ProcessEventInner(event); + break; + default: + break; + } } void DAudioSourceDev::SourceEventHandler::EnableDAudioCallback(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 2371f7b2..88c4830e 100644 --- a/services/audiomanager/managersource/src/daudio_source_manager.cpp +++ b/services/audiomanager/managersource/src/daudio_source_manager.cpp @@ -96,7 +96,7 @@ int32_t DAudioSourceManager::Init(const sptr &callback) } if (!isHicollieRunning_.load()) { isHicollieRunning_.store(true); - listenThread_ = std::thread(&DAudioSourceManager::ListenAudioDev, this); + listenThread_ = std::thread([this]() { this->ListenAudioDev(); }); if (pthread_setname_np(listenThread_.native_handle(), LISTEN_THREAD) != DH_SUCCESS) { DHLOGE("Dev clear thread setname failed."); } @@ -428,7 +428,7 @@ void DAudioSourceManager::DeleteAudioDevice(const std::string &devId, const std: devClearThread_.join(); } DHLOGI("audioDevMap_[devId].ports is empty"); - devClearThread_ = std::thread(&DAudioSourceManager::ClearAudioDev, this, devId); + devClearThread_ = std::thread([this, devId]() { this->ClearAudioDev(devId); }); if (pthread_setname_np(devClearThread_.native_handle(), DEVCLEAR_THREAD) != DH_SUCCESS) { DHLOGE("Dev clear thread setname failed."); } @@ -596,8 +596,16 @@ void DAudioSourceManager::SourceManagerHandler::ProcessEvent(const AppExecFwk::I DHLOGE("Event Id is invalid. %{public}d.", event->GetInnerEventId()); return; } - SourceManagerFunc &func = iter->second; - (this->*func)(event); + switch (event->GetInnerEventId()) { + case EVENT_MANAGER_ENABLE_DAUDIO: + EnableDAudioCallback(event); + break; + case EVENT_MANAGER_DISABLE_DAUDIO: + DisableDAudioCallback(event); + break; + default: + break; + } } void DAudioSourceManager::SourceManagerHandler::EnableDAudioCallback(const AppExecFwk::InnerEvent::Pointer &event) diff --git a/services/audiomanager/managersource/src/dmic_dev.cpp b/services/audiomanager/managersource/src/dmic_dev.cpp index 2bb23f4c..2edfefbd 100644 --- a/services/audiomanager/managersource/src/dmic_dev.cpp +++ b/services/audiomanager/managersource/src/dmic_dev.cpp @@ -429,7 +429,7 @@ int32_t DMicDev::MmapStart() frameIndex_ = 0; startTime_ = 0; isEnqueueRunning_.store(true); - enqueueDataThread_ = std::thread(&DMicDev::EnqueueThread, this); + enqueueDataThread_ = std::thread([this]() { this->EnqueueThread(); }); if (pthread_setname_np(enqueueDataThread_.native_handle(), ENQUEUE_THREAD) != DH_SUCCESS) { DHLOGE("Enqueue data thread setname failed."); } diff --git a/services/audiomanager/managersource/src/dspeaker_dev.cpp b/services/audiomanager/managersource/src/dspeaker_dev.cpp index 3f67c41f..3f65db0f 100644 --- a/services/audiomanager/managersource/src/dspeaker_dev.cpp +++ b/services/audiomanager/managersource/src/dspeaker_dev.cpp @@ -354,7 +354,7 @@ int32_t DSpeakerDev::MmapStart() { CHECK_NULL_RETURN(ashmem_, ERR_DH_AUDIO_NULLPTR); isEnqueueRunning_.store(true); - enqueueDataThread_ = std::thread(&DSpeakerDev::EnqueueThread, this); + enqueueDataThread_ = std::thread([this]() { this->EnqueueThread(); }); if (pthread_setname_np(enqueueDataThread_.native_handle(), ENQUEUE_THREAD) != DH_SUCCESS) { DHLOGE("Enqueue data thread setname failed."); } diff --git a/services/audiomanager/servicesink/src/daudio_sink_stub.cpp b/services/audiomanager/servicesink/src/daudio_sink_stub.cpp index 6173afc8..62615d66 100644 --- a/services/audiomanager/servicesink/src/daudio_sink_stub.cpp +++ b/services/audiomanager/servicesink/src/daudio_sink_stub.cpp @@ -71,8 +71,27 @@ int32_t DAudioSinkStub::OnRemoteRequest(uint32_t code, MessageParcel &data, Mess DHLOGE("Invalid request code."); return IPCObjectStub::OnRemoteRequest(code, data, reply, option); } - DAudioSinkServiceFunc &func = iter->second; - return (this->*func)(data, reply, option); + switch (code) { + case static_cast(IDAudioSinkInterfaceCode::INIT_SINK): + return InitSinkInner(data, reply, option); + case static_cast(IDAudioSinkInterfaceCode::RELEASE_SINK): + return ReleaseSinkInner(data, reply, option); + case static_cast(IDAudioSinkInterfaceCode::SUBSCRIBE_LOCAL_HARDWARE): + return SubscribeLocalHardwareInner(data, reply, option); + case static_cast(IDAudioSinkInterfaceCode::UNSUBSCRIBE_LOCAL_HARDWARE): + return UnsubscribeLocalHardwareInner(data, reply, option); + case static_cast(IDAudioSinkInterfaceCode::DAUDIO_NOTIFY): + return DAudioNotifyInner(data, reply, option); + case static_cast(IDAudioSinkInterfaceCode::PAUSE_DISTRIBUTED_HARDWARE): + return PauseDistributedHardwareInner(data, reply, option); + case static_cast(IDAudioSinkInterfaceCode::RESUME_DISTRIBUTED_HARDWARE): + return ResumeDistributedHardwareInner(data, reply, option); + case static_cast(IDAudioSinkInterfaceCode::STOP_DISTRIBUTED_HARDWARE): + return StopDistributedHardwareInner(data, reply, option); + default: + break; + } + return ERR_DH_AUDIO_NOT_FOUND_KEY; } bool DAudioSinkStub::VerifyPermission() diff --git a/services/audiomanager/servicesource/src/daudio_source_stub.cpp b/services/audiomanager/servicesource/src/daudio_source_stub.cpp index d00be43a..d9291e8c 100644 --- a/services/audiomanager/servicesource/src/daudio_source_stub.cpp +++ b/services/audiomanager/servicesource/src/daudio_source_stub.cpp @@ -61,8 +61,23 @@ int32_t DAudioSourceStub::OnRemoteRequest(uint32_t code, MessageParcel &data, Me DHLOGE("Invalid request code."); return IPCObjectStub::OnRemoteRequest(code, data, reply, option); } - DAudioSourceServiceFunc &func = iter->second; - return (this->*func)(data, reply, option); + switch (code) { + case static_cast(IDAudioSourceInterfaceCode::INIT_SOURCE): + return InitSourceInner(data, reply, option); + case static_cast(IDAudioSourceInterfaceCode::RELEASE_SOURCE): + return ReleaseSourceInner(data, reply, option); + case static_cast(IDAudioSourceInterfaceCode::REGISTER_DISTRIBUTED_HARDWARE): + return RegisterDistributedHardwareInner(data, reply, option); + case static_cast(IDAudioSourceInterfaceCode::UNREGISTER_DISTRIBUTED_HARDWARE): + return UnregisterDistributedHardwareInner(data, reply, option); + case static_cast(IDAudioSourceInterfaceCode::CONFIG_DISTRIBUTED_HARDWARE): + return ConfigDistributedHardwareInner(data, reply, option); + case static_cast(IDAudioSourceInterfaceCode::DAUDIO_NOTIFY): + return DAudioNotifyInner(data, reply, option); + default: + break; + } + return ERR_DH_AUDIO_NOT_FOUND_KEY; } bool DAudioSourceStub::VerifyPermission() -- Gitee From cafde40a47775ff670a0311039eb53614599bf69 Mon Sep 17 00:00:00 2001 From: zhonglufu Date: Fri, 28 Jun 2024 14:55:08 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E5=88=86=E5=B8=83=E5=BC=8F=E9=9F=B3?= =?UTF-8?q?=E9=A2=91CFI=E6=95=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zhonglufu --- .../src/daudio_sink_ipc_callback_stub.cpp | 8 ++------ .../audio_source/src/daudio_ipc_callback_stub.cpp | 8 ++------ .../managersink/src/daudio_sink_dev.cpp | 7 ++----- .../managersource/src/daudio_source_dev.cpp | 13 +++---------- .../managersource/src/daudio_source_manager.cpp | 7 ++----- .../servicesink/src/daudio_sink_stub.cpp | 10 +++------- .../servicesource/src/daudio_source_stub.cpp | 9 +++------ 7 files changed, 17 insertions(+), 45 deletions(-) diff --git a/interfaces/inner_kits/native_cpp/audio_sink/src/daudio_sink_ipc_callback_stub.cpp b/interfaces/inner_kits/native_cpp/audio_sink/src/daudio_sink_ipc_callback_stub.cpp index e96d94ce..104a2393 100644 --- a/interfaces/inner_kits/native_cpp/audio_sink/src/daudio_sink_ipc_callback_stub.cpp +++ b/interfaces/inner_kits/native_cpp/audio_sink/src/daudio_sink_ipc_callback_stub.cpp @@ -39,16 +39,12 @@ int32_t DAudioSinkIpcCallbackStub::OnRemoteRequest(uint32_t code, MessageParcel return ERR_DH_AUDIO_SA_INVALID_INTERFACE_TOKEN; } - std::map::iterator iter = memberFuncMap_.find(code); - if (iter == memberFuncMap_.end()) { - DHLOGE("Invalid request code."); - return IPCObjectStub::OnRemoteRequest(code, data, reply, option); - } switch (code) { case NOTIFY_RESOURCEINFO: return OnNotifyResourceInfoInner(data, reply, option); default: - break; + DHLOGE("Invalid request code."); + return IPCObjectStub::OnRemoteRequest(code, data, reply, option); } return ERR_DH_AUDIO_NOT_FOUND_KEY; } diff --git a/interfaces/inner_kits/native_cpp/audio_source/src/daudio_ipc_callback_stub.cpp b/interfaces/inner_kits/native_cpp/audio_source/src/daudio_ipc_callback_stub.cpp index ee988913..79a4a35b 100644 --- a/interfaces/inner_kits/native_cpp/audio_source/src/daudio_ipc_callback_stub.cpp +++ b/interfaces/inner_kits/native_cpp/audio_source/src/daudio_ipc_callback_stub.cpp @@ -42,11 +42,6 @@ int32_t DAudioIpcCallbackStub::OnRemoteRequest(uint32_t code, MessageParcel &dat return ERR_DH_AUDIO_SA_INVALID_INTERFACE_TOKEN; } - std::map::iterator iter = memberFuncMap_.find(code); - if (iter == memberFuncMap_.end()) { - DHLOGE("Invalid request code."); - return IPCObjectStub::OnRemoteRequest(code, data, reply, option); - } switch (code) { case NOTIFY_REGRESULT: return OnNotifyRegResultInner(data, reply, option); @@ -57,7 +52,8 @@ int32_t DAudioIpcCallbackStub::OnRemoteRequest(uint32_t code, MessageParcel &dat case NOTIFY_DATASYNC_TRIGGER: return OnDataSyncTriggerInner(data, reply, option); default: - break; + DHLOGE("Invalid request code."); + return IPCObjectStub::OnRemoteRequest(code, data, reply, option); } return ERR_DH_AUDIO_NOT_FOUND_KEY; } diff --git a/services/audiomanager/managersink/src/daudio_sink_dev.cpp b/services/audiomanager/managersink/src/daudio_sink_dev.cpp index f4bca8be..3525f000 100644 --- a/services/audiomanager/managersink/src/daudio_sink_dev.cpp +++ b/services/audiomanager/managersink/src/daudio_sink_dev.cpp @@ -654,11 +654,7 @@ void DAudioSinkDev::SinkEventHandler::ProcessEventInner(const AppExecFwk::InnerE void DAudioSinkDev::SinkEventHandler::ProcessEvent(const AppExecFwk::InnerEvent::Pointer &event) { - auto iter = mapEventFuncs_.find(event->GetInnerEventId()); - if (iter == mapEventFuncs_.end()) { - DHLOGE("Event Id is invaild. %{public}d", event->GetInnerEventId()); - return; - } + DHLOGI("Event Id=%{public}d", event->GetInnerEventId()); switch (event->GetInnerEventId()) { case CTRL_OPENED: NotifyCtrlOpened(event); @@ -692,6 +688,7 @@ void DAudioSinkDev::SinkEventHandler::ProcessEvent(const AppExecFwk::InnerEvent: ProcessEventInner(event); break; default: + DHLOGE("Event Id is invaild. %{public}d", event->GetInnerEventId()); break; } } diff --git a/services/audiomanager/managersource/src/daudio_source_dev.cpp b/services/audiomanager/managersource/src/daudio_source_dev.cpp index 91cb03c6..7ffc2a94 100644 --- a/services/audiomanager/managersource/src/daudio_source_dev.cpp +++ b/services/audiomanager/managersource/src/daudio_source_dev.cpp @@ -287,11 +287,6 @@ void DAudioSourceDev::NotifyEventInner(const AudioEvent &event) void DAudioSourceDev::NotifyEvent(const AudioEvent &event) { DHLOGD("Notify event, eventType: %{public}d.", event.type); - std::map::iterator iter = memberFuncMap_.find(event.type); - if (iter == memberFuncMap_.end()) { - DHLOGE("Invalid eventType: %{public}d.", event.type); - return; - } switch (event.type) { case OPEN_SPEAKER: HandleOpenDSpeaker(event); @@ -331,6 +326,7 @@ void DAudioSourceDev::NotifyEvent(const AudioEvent &event) NotifyEventInner(event); break; default: + DHLOGE("Invalid eventType: %{public}d.", event.type); break; } } @@ -1443,11 +1439,7 @@ void DAudioSourceDev::SourceEventHandler::ProcessEventInner(const AppExecFwk::In void DAudioSourceDev::SourceEventHandler::ProcessEvent(const AppExecFwk::InnerEvent::Pointer &event) { - auto iter = mapEventFuncs_.find(event->GetInnerEventId()); - if (iter == mapEventFuncs_.end()) { - DHLOGE("Event Id is invaild. %{public}d", event->GetInnerEventId()); - return; - } + DHLOGI("Event Id=%{public}d", event->GetInnerEventId()); switch (event->GetInnerEventId()) { case EVENT_DAUDIO_ENABLE: EnableDAudioCallback(event); @@ -1482,6 +1474,7 @@ void DAudioSourceDev::SourceEventHandler::ProcessEvent(const AppExecFwk::InnerEv ProcessEventInner(event); break; default: + DHLOGE("Event Id is invaild. %{public}d", event->GetInnerEventId()); break; } } diff --git a/services/audiomanager/managersource/src/daudio_source_manager.cpp b/services/audiomanager/managersource/src/daudio_source_manager.cpp index 88c4830e..d0848a3b 100644 --- a/services/audiomanager/managersource/src/daudio_source_manager.cpp +++ b/services/audiomanager/managersource/src/daudio_source_manager.cpp @@ -591,11 +591,7 @@ DAudioSourceManager::SourceManagerHandler::~SourceManagerHandler() {} void DAudioSourceManager::SourceManagerHandler::ProcessEvent(const AppExecFwk::InnerEvent::Pointer &event) { - auto iter = mapEventFuncs_.find(event->GetInnerEventId()); - if (iter == mapEventFuncs_.end()) { - DHLOGE("Event Id is invalid. %{public}d.", event->GetInnerEventId()); - return; - } + DHLOGI("Event Id=%{public}d.", event->GetInnerEventId()); switch (event->GetInnerEventId()) { case EVENT_MANAGER_ENABLE_DAUDIO: EnableDAudioCallback(event); @@ -604,6 +600,7 @@ void DAudioSourceManager::SourceManagerHandler::ProcessEvent(const AppExecFwk::I DisableDAudioCallback(event); break; default: + DHLOGE("Event Id is invalid. %{public}d.", event->GetInnerEventId()); break; } } diff --git a/services/audiomanager/servicesink/src/daudio_sink_stub.cpp b/services/audiomanager/servicesink/src/daudio_sink_stub.cpp index 62615d66..5c269580 100644 --- a/services/audiomanager/servicesink/src/daudio_sink_stub.cpp +++ b/services/audiomanager/servicesink/src/daudio_sink_stub.cpp @@ -58,7 +58,7 @@ DAudioSinkStub::~DAudioSinkStub() int32_t DAudioSinkStub::OnRemoteRequest(uint32_t code, MessageParcel &data, MessageParcel &reply, MessageOption &option) { - DHLOGD("On remote request, code: %{public}d.", code); + DHLOGI("On remote request, code: %{public}d.", code); std::u16string desc = DAudioSinkStub::GetDescriptor(); std::u16string remoteDesc = data.ReadInterfaceToken(); if (desc != remoteDesc) { @@ -66,11 +66,6 @@ int32_t DAudioSinkStub::OnRemoteRequest(uint32_t code, MessageParcel &data, Mess return ERR_DH_AUDIO_SA_INVALID_INTERFACE_TOKEN; } - const auto &iter = memberFuncMap_.find(code); - if (iter == memberFuncMap_.end()) { - DHLOGE("Invalid request code."); - return IPCObjectStub::OnRemoteRequest(code, data, reply, option); - } switch (code) { case static_cast(IDAudioSinkInterfaceCode::INIT_SINK): return InitSinkInner(data, reply, option); @@ -89,7 +84,8 @@ int32_t DAudioSinkStub::OnRemoteRequest(uint32_t code, MessageParcel &data, Mess case static_cast(IDAudioSinkInterfaceCode::STOP_DISTRIBUTED_HARDWARE): return StopDistributedHardwareInner(data, reply, option); default: - break; + DHLOGE("Invalid request code."); + return IPCObjectStub::OnRemoteRequest(code, data, reply, option); } return ERR_DH_AUDIO_NOT_FOUND_KEY; } diff --git a/services/audiomanager/servicesource/src/daudio_source_stub.cpp b/services/audiomanager/servicesource/src/daudio_source_stub.cpp index d9291e8c..a44a5dd4 100644 --- a/services/audiomanager/servicesource/src/daudio_source_stub.cpp +++ b/services/audiomanager/servicesource/src/daudio_source_stub.cpp @@ -49,6 +49,7 @@ DAudioSourceStub::DAudioSourceStub() : IRemoteStub(true) int32_t DAudioSourceStub::OnRemoteRequest(uint32_t code, MessageParcel &data, MessageParcel &reply, MessageOption &option) { + DHLOGI("On remote request, code: %{public}d.", code); std::u16string desc = DAudioSourceStub::GetDescriptor(); std::u16string remoteDesc = data.ReadInterfaceToken(); if (desc != remoteDesc) { @@ -56,11 +57,6 @@ int32_t DAudioSourceStub::OnRemoteRequest(uint32_t code, MessageParcel &data, Me return ERR_DH_AUDIO_SA_INVALID_INTERFACE_TOKEN; } - const auto &iter = memberFuncMap_.find(code); - if (iter == memberFuncMap_.end()) { - DHLOGE("Invalid request code."); - return IPCObjectStub::OnRemoteRequest(code, data, reply, option); - } switch (code) { case static_cast(IDAudioSourceInterfaceCode::INIT_SOURCE): return InitSourceInner(data, reply, option); @@ -75,7 +71,8 @@ int32_t DAudioSourceStub::OnRemoteRequest(uint32_t code, MessageParcel &data, Me case static_cast(IDAudioSourceInterfaceCode::DAUDIO_NOTIFY): return DAudioNotifyInner(data, reply, option); default: - break; + DHLOGE("Invalid request code."); + return IPCObjectStub::OnRemoteRequest(code, data, reply, option); } return ERR_DH_AUDIO_NOT_FOUND_KEY; } -- Gitee