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  #ifndef ST_AUDIO_STATE_MANAGER_H
17  #define ST_AUDIO_STATE_MANAGER_H
18  
19  #include "audio_system_manager.h"
20  
21  namespace OHOS {
22  namespace AudioStandard {
23  using namespace std;
24  
25  class AudioStateManager {
26  public:
GetAudioStateManager()27      static AudioStateManager& GetAudioStateManager()
28      {
29          static AudioStateManager audioStateManager;
30          return audioStateManager;
31      }
32  
33      // Set media render device selected by the user
34      void SetPreferredMediaRenderDevice(const sptr<AudioDeviceDescriptor> &deviceDescriptor);
35  
36      // Set call render device selected by the user
37      void SetPreferredCallRenderDevice(const sptr<AudioDeviceDescriptor> &deviceDescriptor);
38  
39      // Set call capture device selected by the user
40      void SetPreferredCallCaptureDevice(const sptr<AudioDeviceDescriptor> &deviceDescriptor);
41  
42      // Set ring render device selected by the user
43      void SetPreferredRingRenderDevice(const sptr<AudioDeviceDescriptor> &deviceDescriptor);
44  
45      // Set record capture device selected by the user
46      void SetPreferredRecordCaptureDevice(const sptr<AudioDeviceDescriptor> &deviceDescriptor);
47  
48      // Set tone render device selected by the user
49      void SetPreferredToneRenderDevice(const sptr<AudioDeviceDescriptor> &deviceDescriptor);
50  
51      // Get media render device selected by the user
52      unique_ptr<AudioDeviceDescriptor> GetPreferredMediaRenderDevice();
53  
54      // Get call render device selected by the user
55      unique_ptr<AudioDeviceDescriptor> GetPreferredCallRenderDevice();
56  
57      // Get call capture device selected by the user
58      unique_ptr<AudioDeviceDescriptor> GetPreferredCallCaptureDevice();
59  
60      // Get ring render device selected by the user
61      unique_ptr<AudioDeviceDescriptor> GetPreferredRingRenderDevice();
62  
63      // Get record capture device selected by the user
64      unique_ptr<AudioDeviceDescriptor> GetPreferredRecordCaptureDevice();
65  
66      // Get tone render device selected by the user
67      unique_ptr<AudioDeviceDescriptor> GetPreferredToneRenderDevice();
68  
69      void UpdatePreferredMediaRenderDeviceConnectState(ConnectState state);
70      void UpdatePreferredCallRenderDeviceConnectState(ConnectState state);
71      void UpdatePreferredCallCaptureDeviceConnectState(ConnectState state);
72      void UpdatePreferredRecordCaptureDeviceConnectState(ConnectState state);
73  
74  private:
AudioStateManager()75      AudioStateManager() {};
~AudioStateManager()76      ~AudioStateManager() {};
77      sptr<AudioDeviceDescriptor> preferredMediaRenderDevice_ = new(std::nothrow) AudioDeviceDescriptor();
78      sptr<AudioDeviceDescriptor> preferredCallRenderDevice_ = new(std::nothrow) AudioDeviceDescriptor();
79      sptr<AudioDeviceDescriptor> preferredCallCaptureDevice_ = new(std::nothrow) AudioDeviceDescriptor();
80      sptr<AudioDeviceDescriptor> preferredRingRenderDevice_ = new(std::nothrow) AudioDeviceDescriptor();
81      sptr<AudioDeviceDescriptor> preferredRecordCaptureDevice_ = new(std::nothrow) AudioDeviceDescriptor();
82      sptr<AudioDeviceDescriptor> preferredToneRenderDevice_ = new(std::nothrow) AudioDeviceDescriptor();
83      std::mutex mutex_;
84  };
85  
86  } // namespace AudioStandard
87  } // namespace OHOS
88  
89  #endif // ST_AUDIO_STATE_MANAGER_H
90  
91