• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2024-2025 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 AUDIO_ADAPTER_MANAGER_HANDLER_H
16 #define AUDIO_ADAPTER_MANAGER_HANDLER_H
17 
18 #include <mutex>
19 #include "singleton.h"
20 #include "event_handler.h"
21 #include "event_runner.h"
22 
23 #include "audio_policy_log.h"
24 #include "audio_system_manager.h"
25 #include "audio_policy_client.h"
26 
27 namespace OHOS {
28 namespace AudioStandard {
29 using namespace std;
30 
31 class AudioAdapterManagerHandler : public AppExecFwk::EventHandler {
32 public:
33     AudioAdapterManagerHandler();
34     ~AudioAdapterManagerHandler();
35 
36     void ReleaseEventRunner();
37 
38     enum EventAdapterManagerServerCmd  {
39         DATABASE_UPDATE,
40         VOLUME_DATABASE_SAVE,
41         STREAM_MUTE_STATUS_UPDATE,
42         RINGER_MODE_UPDATE,
43     };
44 
45     struct VolumeDataEvent {
46         VolumeDataEvent() = delete;
VolumeDataEventVolumeDataEvent47         VolumeDataEvent(const DeviceType &deviceType, const AudioStreamType &streamType, const int32_t &volumeLevel)
48             : deviceType_(deviceType), streamType_(streamType), volumeLevel_(volumeLevel)
49         {}
50         DeviceType deviceType_;
51         AudioStreamType streamType_;
52         int32_t volumeLevel_;
53     };
54 
55     struct StreamMuteStatusEvent {
56         StreamMuteStatusEvent() = delete;
StreamMuteStatusEventStreamMuteStatusEvent57         StreamMuteStatusEvent(const AudioStreamType &streamType, const bool &mute, const StreamUsage &streamUsage,
58             const DeviceType &deviceType)
59             : streamType_(streamType), mute_(mute), streamUsage_(streamUsage), deviceType_(deviceType)
60         {}
61         AudioStreamType streamType_;
62         bool mute_;
63         StreamUsage streamUsage_;
64         DeviceType deviceType_;
65     };
66 
67     struct RingerModeEvent {
68         RingerModeEvent() = delete;
RingerModeEventRingerModeEvent69         RingerModeEvent(const AudioRingerMode &ringerMode)
70             : ringerMode_(ringerMode)
71         {}
72         AudioRingerMode ringerMode_;
73     };
74 
75     bool SendKvDataUpdate(const bool &isFirstBoot);
76     bool SendSaveVolume(const DeviceType &deviceType, const AudioStreamType &streamType, const int32_t &volumeLevel);
77     bool SendStreamMuteStatusUpdate(const AudioStreamType &streamType, const bool &mute,
78         const StreamUsage &streamUsage, const DeviceType &deviceType = DEVICE_TYPE_NONE);
79     bool SendRingerModeUpdate(const AudioRingerMode &ringerMode);
80 
81 protected:
82     void ProcessEvent(const AppExecFwk::InnerEvent::Pointer &event) override;
83 
84 private:
85     /* Handle Event*/
86     void HandleUpdateKvDataEvent(const AppExecFwk::InnerEvent::Pointer &event);
87     void HandleVolumeDataBaseSave(const AppExecFwk::InnerEvent::Pointer &event);
88     void HandleUpdateStreamMuteStatus(const AppExecFwk::InnerEvent::Pointer &event);
89     void HandleUpdateRingerMode(const AppExecFwk::InnerEvent::Pointer &event);
90 
91     std::mutex runnerMutex_;
92 };
93 } // namespace AudioStandard
94 } // namespace OHOS
95 #endif // AUDIO_ADAPTER_MANAGER_HANDLER_H
96