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 4c5e7a477c8f0ddd5e4b85553858dae4f3254c28..104a2393603e2bee7342349439f9258bbe48116a 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,13 +39,14 @@ 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: + DHLOGE("Invalid request code."); + return IPCObjectStub::OnRemoteRequest(code, data, reply, option); } - DAudioSinkCallbackFunc &func = iter->second; - return (this->*func)(data, reply, option); + 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 e66f132bf3ddcda88bd31cb8e25a7f55511dc2d5..79a4a35b9d65e015de033cd2da2872a012f204f6 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,13 +42,20 @@ 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); + 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: + DHLOGE("Invalid request code."); + return IPCObjectStub::OnRemoteRequest(code, data, reply, option); } - DAudioCallbackFunc &func = iter->second; - return (this->*func)(data, reply, option); + 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 cefedb2484e50bc8c4a03e0df2cf3c21a6e48860..1a0730c910b4685e009b1bda5ae57d4e7d37e0aa 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 117b769abd7fd8a77de39d3588adfb14dc9353d7..7d1c1601bf4a0f3170db13b96a91e795439d9878 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 384fc5ddd417f22609dca0392a2ec3d19338c139..ab17a29b413ecaef8dd8cadd474e8863a3741a60 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 d4c2b1d577408b2a5b1c8ffdbc9d9a0f945e25f4..3525f00070777ad70c5337c268d67d2f41ba90e4 100644 --- a/services/audiomanager/managersink/src/daudio_sink_dev.cpp +++ b/services/audiomanager/managersink/src/daudio_sink_dev.cpp @@ -611,15 +611,86 @@ 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()); - 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); + 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: + DHLOGE("Event Id is invaild. %{public}d", event->GetInnerEventId()); + break; } - SinkEventFunc &func = iter->second; - (this->*func)(event); } 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 7ce29f149300027597a6fb9072e08ed43dab75fa..da23c9da3e04aa0e78df5f17778c83aecef9b90e 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 10ef8da93efdb2b328a90bc8a4abd60cef670ef4..b97c6625ede798c94345e111567206f919cd8e2b 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 fb23e5be34a72a1e00c0ea866dfdfb4730fddfa7..0ef6406f3a3248628d5c2f011953654652be9c93 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 6e7727e7e89b4193d94d00393e0e696f46d034ba..7ffc2a94623a1b06cae9b0f81d1c21970140169f 100644 --- a/services/audiomanager/managersource/src/daudio_source_dev.cpp +++ b/services/audiomanager/managersource/src/daudio_source_dev.cpp @@ -233,16 +233,102 @@ 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); - 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); + 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: + DHLOGE("Invalid eventType: %{public}d.", event.type); + break; } - DAudioSourceDevFunc &func = iter->second; - (this->*func)(event); } int32_t DAudioSourceDev::HandleOpenDSpeaker(const AudioEvent &event) @@ -1316,15 +1402,81 @@ 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()); - 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); + 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: + DHLOGE("Event Id is invaild. %{public}d", event->GetInnerEventId()); + break; } - SourceEventFunc &func = iter->second; - (this->*func)(event); } 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 2371f7b2a11f16ee75234a7da90f987f9e492d81..d0848a3b16f91e6fccf1791d19af047eefce1c85 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."); } @@ -591,13 +591,18 @@ 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); + break; + case EVENT_MANAGER_DISABLE_DAUDIO: + DisableDAudioCallback(event); + break; + default: + DHLOGE("Event Id is invalid. %{public}d.", event->GetInnerEventId()); + break; } - SourceManagerFunc &func = iter->second; - (this->*func)(event); } 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 2bb23f4c64919fdddbf00bea3d322810b1bda06e..2edfefbdf3669fd0ba357e19f0836391193916af 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 3f67c41fa9115e3f7d8992d63a82dafb2f968110..3f65db0f0a1f90b2d94f01d006940f6b2349c829 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 6173afc8ab4d533c2193a6194d4accf842360968..5c2695803becb3e3520d08a257f34d3a32a6b4b3 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,13 +66,28 @@ 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); + 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: + DHLOGE("Invalid request code."); + return IPCObjectStub::OnRemoteRequest(code, data, reply, option); } - DAudioSinkServiceFunc &func = iter->second; - return (this->*func)(data, reply, option); + 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 d00be43ac442f0aeb68964d7fd4c35a2274821bc..a44a5dd48aa29cc21b9c9e1e4557908ab7561e91 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,13 +57,24 @@ 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); + 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: + DHLOGE("Invalid request code."); + return IPCObjectStub::OnRemoteRequest(code, data, reply, option); } - DAudioSourceServiceFunc &func = iter->second; - return (this->*func)(data, reply, option); + return ERR_DH_AUDIO_NOT_FOUND_KEY; } bool DAudioSourceStub::VerifyPermission()