1 /* 2 * Copyright (c) 2021-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 16 #ifndef ST_AUDIO_POLICY_PROXY_H 17 #define ST_AUDIO_POLICY_PROXY_H 18 19 #include "iremote_proxy.h" 20 #include "audio_policy_base.h" 21 #include "audio_info.h" 22 #include "audio_errors.h" 23 24 namespace OHOS { 25 namespace AudioStandard { 26 class AudioPolicyProxy : public IRemoteProxy<IAudioPolicy> { 27 public: 28 explicit AudioPolicyProxy(const sptr<IRemoteObject> &impl); 29 virtual ~AudioPolicyProxy() = default; 30 31 int32_t GetMaxVolumeLevel(AudioVolumeType volumeType) override; 32 33 int32_t GetMinVolumeLevel(AudioVolumeType volumeType) override; 34 35 int32_t SetSystemVolumeLevel(AudioStreamType streamType, int32_t volumeLevel, API_VERSION api_v) override; 36 37 int32_t GetSystemVolumeLevel(AudioStreamType streamType) override; 38 39 int32_t SetLowPowerVolume(int32_t streamId, float volume) override; 40 41 float GetLowPowerVolume(int32_t streamId) override; 42 43 float GetSingleStreamVolume(int32_t streamId) override; 44 45 int32_t SetStreamMute(AudioStreamType streamType, bool mute, API_VERSION api_v) override; 46 47 bool GetStreamMute(AudioStreamType streamType) override; 48 49 bool IsStreamActive(AudioStreamType streamType) override; 50 51 std::vector<sptr<AudioDeviceDescriptor>> GetDevices(DeviceFlag deviceFlag) override; 52 53 int32_t SetWakeUpAudioCapturer(InternalAudioCapturerOptions options) override; 54 55 int32_t CloseWakeUpAudioCapturer() override; 56 57 int32_t SetDeviceActive(InternalDeviceType deviceType, bool active) override; 58 59 bool IsDeviceActive(InternalDeviceType deviceType) override; 60 61 DeviceType GetActiveOutputDevice() override; 62 63 DeviceType GetActiveInputDevice() override; 64 65 int32_t SelectOutputDevice(sptr<AudioRendererFilter> audioRendererFilter, 66 std::vector<sptr<AudioDeviceDescriptor>> audioDeviceDescriptors) override; 67 68 std::string GetSelectedDeviceInfo(int32_t uid, int32_t pid, AudioStreamType streamType) override; 69 70 int32_t SelectInputDevice(sptr<AudioCapturerFilter> audioCapturerFilter, 71 std::vector<sptr<AudioDeviceDescriptor>> audioDeviceDescriptors) override; 72 73 int32_t SetRingerMode(AudioRingerMode ringMode, API_VERSION api_v) override; 74 75 #ifdef FEATURE_DTMF_TONE 76 std::vector<int32_t> GetSupportedTones() override; 77 78 std::shared_ptr<ToneInfo> GetToneConfig(int32_t ltonetype) override; 79 #endif 80 81 AudioRingerMode GetRingerMode() override; 82 83 int32_t SetAudioScene(AudioScene scene) override; 84 85 int32_t SetMicrophoneMute(bool isMute) override; 86 87 int32_t SetMicrophoneMuteAudioConfig(bool isMute) override; 88 89 bool IsMicrophoneMute(API_VERSION api_v) override; 90 91 AudioScene GetAudioScene() override; 92 93 int32_t SetRingerModeCallback(const int32_t clientId, 94 const sptr<IRemoteObject> &object, API_VERSION api_v) override; 95 96 int32_t UnsetRingerModeCallback(const int32_t clientId) override; 97 98 int32_t SetMicStateChangeCallback(const int32_t clientId, const sptr<IRemoteObject> &object) override; 99 100 int32_t SetDeviceChangeCallback(const int32_t clientId, const DeviceFlag flag, 101 const sptr<IRemoteObject>& object) override; 102 103 int32_t UnsetDeviceChangeCallback(const int32_t clientId, DeviceFlag flag) override; 104 105 int32_t SetAudioInterruptCallback(const uint32_t sessionID, const sptr<IRemoteObject> &object) override; 106 107 int32_t UnsetAudioInterruptCallback(const uint32_t sessionID) override; 108 109 int32_t ActivateAudioInterrupt(const AudioInterrupt &audioInterrupt) override; 110 111 int32_t DeactivateAudioInterrupt(const AudioInterrupt &audioInterrupt) override; 112 113 int32_t SetAudioManagerInterruptCallback(const int32_t clientId, const sptr<IRemoteObject> &object) override; 114 115 int32_t UnsetAudioManagerInterruptCallback(const int32_t clientId) override; 116 117 int32_t RequestAudioFocus(const int32_t clientId, const AudioInterrupt &audioInterrupt) override; 118 119 int32_t AbandonAudioFocus(const int32_t clientId, const AudioInterrupt &audioInterrupt) override; 120 121 int32_t SetVolumeKeyEventCallback(const int32_t clientPid, 122 const sptr<IRemoteObject> &object, API_VERSION api_v) override; 123 124 int32_t UnsetVolumeKeyEventCallback(const int32_t clientPid) override; 125 126 AudioStreamType GetStreamInFocus() override; 127 128 int32_t GetSessionInfoInFocus(AudioInterrupt &audioInterrupt) override; 129 130 bool CheckRecordingCreate(uint32_t appTokenId, uint64_t appFullTokenId, int32_t appUid) override; 131 132 bool CheckRecordingStateChange(uint32_t appTokenId, uint64_t appFullTokenId, int32_t appUid, 133 AudioPermissionState state) override; 134 135 int32_t ReconfigureAudioChannel(const uint32_t &count, DeviceType deviceType) override; 136 137 int32_t GetAudioLatencyFromXml() override; 138 139 uint32_t GetSinkLatencyFromXml() override; 140 141 int32_t RegisterAudioRendererEventListener(int32_t clientPid, const sptr<IRemoteObject> &object) override; 142 143 int32_t UnregisterAudioRendererEventListener(int32_t clientPid) override; 144 145 int32_t RegisterAudioCapturerEventListener(int32_t clientPid, const sptr<IRemoteObject> &object) override; 146 147 int32_t UnregisterAudioCapturerEventListener(int32_t clientPid) override; 148 149 int32_t RegisterTracker(AudioMode &mode, 150 AudioStreamChangeInfo &streamChangeInfo, const sptr<IRemoteObject> &object) override; 151 152 int32_t UpdateTracker(AudioMode &mode, AudioStreamChangeInfo &streamChangeInfo) override; 153 154 int32_t GetCurrentRendererChangeInfos( 155 std::vector<std::unique_ptr<AudioRendererChangeInfo>> &audioRendererChangeInfos) override; 156 157 int32_t GetCurrentCapturerChangeInfos( 158 std::vector<std::unique_ptr<AudioCapturerChangeInfo>> &audioCapturerChangeInfos) override; 159 160 int32_t UpdateStreamState(const int32_t clientUid, StreamSetState streamSetState, 161 AudioStreamType audioStreamType) override; 162 163 int32_t GetVolumeGroupInfos(std::string networkId, std::vector<sptr<VolumeGroupInfo>> &infos) override; 164 165 int32_t GetNetworkIdByGroupId(int32_t groupId, std::string &networkId) override; 166 167 bool IsAudioRendererLowLatencySupported(const AudioStreamInfo &audioStreamInfo) override; 168 169 std::vector<sptr<AudioDeviceDescriptor>> GetPreferredOutputDeviceDescriptors( 170 AudioRendererInfo &rendererInfo) override; 171 172 int32_t SetPreferredOutputDeviceChangeCallback(const int32_t clientId, 173 const sptr<IRemoteObject>& object) override; 174 175 int32_t UnsetPreferredOutputDeviceChangeCallback(const int32_t clientId) override; 176 177 std::vector<sptr<AudioDeviceDescriptor>> GetPreferredInputDeviceDescriptors( 178 AudioCapturerInfo &captureInfo) override; 179 180 int32_t SetPreferredInputDeviceChangeCallback(const sptr<IRemoteObject> &object) override; 181 182 int32_t UnsetPreferredInputDeviceChangeCallback() override; 183 184 int32_t GetAudioFocusInfoList(std::list<std::pair<AudioInterrupt, AudioFocuState>> &focusInfoList) override; 185 186 int32_t RegisterFocusInfoChangeCallback(const int32_t clientId, const sptr<IRemoteObject>& object) override; 187 188 int32_t UnregisterFocusInfoChangeCallback(const int32_t clientId) override; 189 190 int32_t SetSystemSoundUri(const std::string &key, const std::string &uri) override; 191 192 std::string GetSystemSoundUri(const std::string &key) override; 193 194 float GetMinStreamVolume(void) override; 195 196 float GetMaxStreamVolume(void) override; 197 198 int32_t GetMaxRendererInstances() override; 199 200 bool IsVolumeUnadjustable() override; 201 202 int32_t AdjustVolumeByStep(VolumeAdjustType adjustType) override; 203 204 int32_t AdjustSystemVolumeByStep(AudioVolumeType volumeType, VolumeAdjustType adjustType) override; 205 206 float GetSystemVolumeInDb(AudioVolumeType volumeType, int32_t volumeLevel, DeviceType deviceType) override; 207 208 int32_t QueryEffectSceneMode(SupportedEffectConfig &supportedEffectConfig) override; 209 210 int32_t SetPlaybackCapturerFilterInfos(const AudioPlaybackCaptureConfig &config, uint32_t appTokenId) override; 211 private: 212 static inline BrokerDelegator<AudioPolicyProxy> mDdelegator; 213 void WriteAudioInteruptParams(MessageParcel &parcel, const AudioInterrupt &audioInterrupt); 214 void WriteAudioManagerInteruptParams(MessageParcel &parcel, const AudioInterrupt &audioInterrupt); 215 void ReadAudioInterruptParams(MessageParcel &reply, AudioInterrupt &audioInterrupt); 216 void WriteStreamChangeInfo(MessageParcel &data, const AudioMode &mode, 217 const AudioStreamChangeInfo &streamChangeInfo); 218 void ReadAudioRendererChangeInfo(MessageParcel &reply, 219 std::unique_ptr<AudioRendererChangeInfo> &rendererChangeInfo); 220 void ReadAudioCapturerChangeInfo(MessageParcel &reply, 221 std::unique_ptr<AudioCapturerChangeInfo> &capturerChangeInfo); 222 void WriteAudioStreamInfoParams(MessageParcel &parcel, const AudioStreamInfo &audioStreamInfo); 223 void ReadAudioFocusInfo(MessageParcel &reply, std::list<std::pair<AudioInterrupt, AudioFocuState>> &focusInfoList); 224 }; 225 } // namespace AudioStandard 226 } // namespace OHOS 227 #endif // ST_AUDIO_POLICY_PROXY_H 228