| // Copyright 2016 The Android Open Source Project |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); |
| // you may not use this file except in compliance with the License. |
| // You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| // |
| |
| #ifndef BRILLO_AUDIO_AUDIOSERVICE_BRILLO_AUDIO_SERVICE_IMPL_H_ |
| #define BRILLO_AUDIO_AUDIOSERVICE_BRILLO_AUDIO_SERVICE_IMPL_H_ |
| |
| // Server side implementation of brillo audio service. |
| |
| #include "brillo_audio_service.h" |
| |
| namespace brillo { |
| |
| class BrilloAudioServiceImpl : public BrilloAudioService { |
| public: |
| ~BrilloAudioServiceImpl() = default; |
| |
| // From AIDL. |
| Status GetDevices(int flag, std::vector<int>* _aidl_return) override; |
| Status SetDevice(int usage, int config) override; |
| Status GetMaxVolumeSteps(int stream, int* _aidl_return) override; |
| Status SetMaxVolumeSteps(int stream, int max_steps) override; |
| Status SetVolumeIndex(int stream, int device, int index) override; |
| Status GetVolumeIndex(int stream, int device, int* _aidl_return) override; |
| Status GetVolumeControlStream(int* _aidl_return) override; |
| Status SetVolumeControlStream(int stream) override; |
| Status IncrementVolume() override; |
| Status DecrementVolume() override; |
| Status RegisterServiceCallback( |
| const android::sp<IAudioServiceCallback>& callback) override; |
| Status UnregisterServiceCallback( |
| const android::sp<IAudioServiceCallback>& callback) override; |
| |
| // Register daemon handlers. |
| // |
| // |audio_device_handler| is a weak pointer to an audio device handler object. |
| // |audio_volume_handler| is a weak pointer to an audio volume handler object. |
| void RegisterHandlers( |
| std::weak_ptr<AudioDeviceHandler> audio_device_handler, |
| std::weak_ptr<AudioVolumeHandler> audio_volume_handler) override; |
| |
| // Callback to be called when a device is connected. |
| // |
| // |devices| is a vector of ints representing the audio_devices_t. |
| void OnDevicesConnected(const std::vector<int>& device) override; |
| |
| // Callback to be called when a device is disconnected. |
| // |
| // |devices| is a vector of ints representing the audio_devices_t. |
| void OnDevicesDisconnected(const std::vector<int>& device) override; |
| |
| // Callback to be called when volume is changed. |
| // |
| // |stream| is an int representing the stream. |
| // |previous_index| is the volume index before the key press. |
| // |current_index| is the volume index after the key press. |
| void OnVolumeChanged(audio_stream_type_t stream, |
| int previous_index, |
| int current_index) override; |
| |
| private: |
| // A weak pointer to the audio device handler. |
| std::weak_ptr<AudioDeviceHandler> audio_device_handler_; |
| // A weak pointer to the audio volume handler. |
| std::weak_ptr<AudioVolumeHandler> audio_volume_handler_; |
| // List of all callbacks objects registered with the service. |
| std::set<android::sp<IAudioServiceCallback> > callbacks_set_; |
| }; |
| |
| } // namespace brillo |
| |
| #endif // BRILLO_AUDIO_AUDIOSERVICE_BRILLO_AUDIO_SERVICE_IMPL_H_ |