1 /*
2  * Copyright (c) 2022 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 #ifndef LOG_TAG
16 #define LOG_TAG "AudioManagerListenerStub"
17 #endif
18 
19 #include "audio_manager_listener_stub.h"
20 #include "audio_service_log.h"
21 
22 using namespace std;
23 
24 namespace OHOS {
25 namespace AudioStandard {
AudioManagerListenerStub()26 AudioManagerListenerStub::AudioManagerListenerStub()
27 {
28 }
~AudioManagerListenerStub()29 AudioManagerListenerStub::~AudioManagerListenerStub()
30 {
31 }
OnRemoteRequest(uint32_t code,MessageParcel & data,MessageParcel & reply,MessageOption & option)32 int AudioManagerListenerStub::OnRemoteRequest(
33     uint32_t code, MessageParcel& data, MessageParcel& reply, MessageOption& option)
34 {
35     CHECK_AND_RETURN_RET_LOG(data.ReadInterfaceToken() == GetDescriptor(),
36         -1, "AudioManagerStub: ReadInterfaceToken failed");
37 
38     switch (code) {
39         case ON_PARAMETER_CHANGED: {
40             string networkId = data.ReadString();
41             AudioParamKey key = static_cast<AudioParamKey>(data.ReadInt32());
42             string condition = data.ReadString();
43             string value = data.ReadString();
44             OnAudioParameterChange(networkId, key, condition, value);
45             return AUDIO_OK;
46         }
47         case ON_WAKEUP_CLOSE: {
48             OnWakeupClose();
49             return AUDIO_OK;
50         }
51         case ON_CAPTURER_STATE: {
52             bool isActive = data.ReadBool();
53             OnCapturerState(isActive);
54             return AUDIO_OK;
55         }
56         default: {
57             AUDIO_ERR_LOG("default case, need check AudioManagerStub");
58             return IPCObjectStub::OnRemoteRequest(code, data, reply, option);
59         }
60     }
61 }
62 
SetParameterCallback(const std::weak_ptr<AudioParameterCallback> & callback)63 void AudioManagerListenerStub::SetParameterCallback(const std::weak_ptr<AudioParameterCallback>& callback)
64 {
65     callback_ = callback;
66 }
67 
SetWakeupSourceCallback(const std::weak_ptr<WakeUpSourceCallback> & callback)68 void AudioManagerListenerStub::SetWakeupSourceCallback(const std::weak_ptr<WakeUpSourceCallback>& callback)
69 {
70     wakeUpCallback_ = callback;
71 }
72 
OnAudioParameterChange(const std::string networkId,const AudioParamKey key,const std::string & condition,const std::string & value)73 void AudioManagerListenerStub::OnAudioParameterChange(const std::string networkId, const AudioParamKey key,
74     const std::string& condition, const std::string& value)
75 {
76     std::shared_ptr<AudioParameterCallback> cb = callback_.lock();
77     if (cb != nullptr) {
78         cb->OnAudioParameterChange(networkId, key, condition, value);
79     } else {
80         AUDIO_WARNING_LOG("AudioRingerModeUpdateListenerStub: callback_ is nullptr");
81     }
82 }
83 
OnCapturerState(bool isActive)84 void AudioManagerListenerStub::OnCapturerState(bool isActive)
85 {
86     std::shared_ptr<WakeUpSourceCallback> cb = wakeUpCallback_.lock();
87     if (cb != nullptr) {
88         cb->OnCapturerState(isActive);
89     } else {
90         AUDIO_WARNING_LOG("AudioManagerListenerStub: OnWakeupClose error");
91     }
92 }
93 
OnWakeupClose()94 void AudioManagerListenerStub::OnWakeupClose()
95 {
96     std::shared_ptr<WakeUpSourceCallback> cb = wakeUpCallback_.lock();
97     if (cb != nullptr) {
98         cb->OnWakeupClose();
99     } else {
100         AUDIO_WARNING_LOG("AudioManagerListenerStub: OnWakeupClose error");
101     }
102 }
103 
104 } // namespace AudioStandard
105 } // namespace OHOS
106