1 /*
2  * Copyright (c) 2023 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 
16 #include "audio_state_manager.h"
17 #include "audio_log.h"
18 
19 using namespace std;
20 
21 namespace OHOS {
22 namespace AudioStandard {
23 
SetPreferredMediaRenderDevice(const sptr<AudioDeviceDescriptor> & deviceDescriptor)24 void AudioStateManager::SetPreferredMediaRenderDevice(const sptr<AudioDeviceDescriptor> &deviceDescriptor)
25 {
26     preferredMediaRenderDevice_ = deviceDescriptor;
27 }
28 
SetPreferredCallRenderDevice(const sptr<AudioDeviceDescriptor> & deviceDescriptor)29 void AudioStateManager::SetPreferredCallRenderDevice(const sptr<AudioDeviceDescriptor> &deviceDescriptor)
30 {
31     preferredCallRenderDevice_ = deviceDescriptor;
32 }
33 
SetPreferredCallCaptureDevice(const sptr<AudioDeviceDescriptor> & deviceDescriptor)34 void AudioStateManager::SetPreferredCallCaptureDevice(const sptr<AudioDeviceDescriptor> &deviceDescriptor)
35 {
36     std::lock_guard<std::mutex> lock(mutex_);
37     preferredCallCaptureDevice_ = deviceDescriptor;
38 }
39 
SetPreferredRingRenderDevice(const sptr<AudioDeviceDescriptor> & deviceDescriptor)40 void AudioStateManager::SetPreferredRingRenderDevice(const sptr<AudioDeviceDescriptor> &deviceDescriptor)
41 {
42     preferredRingRenderDevice_ = deviceDescriptor;
43 }
44 
SetPreferredRecordCaptureDevice(const sptr<AudioDeviceDescriptor> & deviceDescriptor)45 void AudioStateManager::SetPreferredRecordCaptureDevice(const sptr<AudioDeviceDescriptor> &deviceDescriptor)
46 {
47     preferredRecordCaptureDevice_ = deviceDescriptor;
48 }
49 
SetPreferredToneRenderDevice(const sptr<AudioDeviceDescriptor> & deviceDescriptor)50 void AudioStateManager::SetPreferredToneRenderDevice(const sptr<AudioDeviceDescriptor> &deviceDescriptor)
51 {
52     preferredToneRenderDevice_ = deviceDescriptor;
53 }
54 
GetPreferredMediaRenderDevice()55 unique_ptr<AudioDeviceDescriptor> AudioStateManager::GetPreferredMediaRenderDevice()
56 {
57     unique_ptr<AudioDeviceDescriptor> devDesc = make_unique<AudioDeviceDescriptor>(preferredMediaRenderDevice_);
58     return devDesc;
59 }
60 
GetPreferredCallRenderDevice()61 unique_ptr<AudioDeviceDescriptor> AudioStateManager::GetPreferredCallRenderDevice()
62 {
63     unique_ptr<AudioDeviceDescriptor> devDesc = make_unique<AudioDeviceDescriptor>(preferredCallRenderDevice_);
64     return devDesc;
65 }
66 
GetPreferredCallCaptureDevice()67 unique_ptr<AudioDeviceDescriptor> AudioStateManager::GetPreferredCallCaptureDevice()
68 {
69     std::lock_guard<std::mutex> lock(mutex_);
70     unique_ptr<AudioDeviceDescriptor> devDesc = make_unique<AudioDeviceDescriptor>(preferredCallCaptureDevice_);
71     return devDesc;
72 }
73 
GetPreferredRingRenderDevice()74 unique_ptr<AudioDeviceDescriptor> AudioStateManager::GetPreferredRingRenderDevice()
75 {
76     unique_ptr<AudioDeviceDescriptor> devDesc = make_unique<AudioDeviceDescriptor>(preferredRingRenderDevice_);
77     return devDesc;
78 }
79 
GetPreferredRecordCaptureDevice()80 unique_ptr<AudioDeviceDescriptor> AudioStateManager::GetPreferredRecordCaptureDevice()
81 {
82     unique_ptr<AudioDeviceDescriptor> devDesc = make_unique<AudioDeviceDescriptor>(preferredRecordCaptureDevice_);
83     return devDesc;
84 }
85 
GetPreferredToneRenderDevice()86 unique_ptr<AudioDeviceDescriptor> AudioStateManager::GetPreferredToneRenderDevice()
87 {
88     unique_ptr<AudioDeviceDescriptor> devDesc = make_unique<AudioDeviceDescriptor>(preferredToneRenderDevice_);
89     return devDesc;
90 }
91 
UpdatePreferredMediaRenderDeviceConnectState(ConnectState state)92 void AudioStateManager::UpdatePreferredMediaRenderDeviceConnectState(ConnectState state)
93 {
94     CHECK_AND_RETURN_LOG(preferredMediaRenderDevice_ != nullptr, "preferredMediaRenderDevice_ is nullptr");
95     preferredMediaRenderDevice_->connectState_ = state;
96 }
97 
UpdatePreferredCallRenderDeviceConnectState(ConnectState state)98 void AudioStateManager::UpdatePreferredCallRenderDeviceConnectState(ConnectState state)
99 {
100     CHECK_AND_RETURN_LOG(preferredCallRenderDevice_ != nullptr, "preferredCallRenderDevice_ is nullptr");
101     preferredCallRenderDevice_->connectState_ = state;
102 }
103 
UpdatePreferredCallCaptureDeviceConnectState(ConnectState state)104 void AudioStateManager::UpdatePreferredCallCaptureDeviceConnectState(ConnectState state)
105 {
106     CHECK_AND_RETURN_LOG(preferredCallCaptureDevice_ != nullptr, "preferredCallCaptureDevice_ is nullptr");
107     preferredCallCaptureDevice_->connectState_ = state;
108 }
109 
UpdatePreferredRecordCaptureDeviceConnectState(ConnectState state)110 void AudioStateManager::UpdatePreferredRecordCaptureDeviceConnectState(ConnectState state)
111 {
112     CHECK_AND_RETURN_LOG(preferredRecordCaptureDevice_ != nullptr, "preferredRecordCaptureDevice_ is nullptr");
113     preferredRecordCaptureDevice_->connectState_ = state;
114 }
115 } // namespace AudioStandard
116 } // namespace OHOS
117