| // 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. |
| // |
| |
| // Callback object to be passed to brilloaudioservice. |
| |
| #ifndef BRILLO_AUDIO_AUDIOSERVICE_AUDIO_SERVICE_CALLBACK_H_ |
| #define BRILLO_AUDIO_AUDIOSERVICE_AUDIO_SERVICE_CALLBACK_H_ |
| |
| #include <vector> |
| |
| #include <base/callback.h> |
| #include <binder/Status.h> |
| |
| #include "android/brillo/brilloaudioservice/BnAudioServiceCallback.h" |
| #include "include/brillo_audio_manager.h" |
| |
| using android::binder::Status; |
| using android::brillo::brilloaudioservice::BnAudioServiceCallback; |
| |
| namespace brillo { |
| |
| class AudioServiceCallback : public BnAudioServiceCallback { |
| public: |
| // Constructor for AudioServiceCallback. |
| // |
| // |callback| is an object of type BAudioCallback. |
| // |user_data| is an object to be passed to the callbacks. |
| AudioServiceCallback(const BAudioCallback* callback, void* user_data); |
| |
| // Callback function triggered when a device is connected. |
| // |
| // |devices| is a vector of audio_devices_t. |
| Status OnAudioDevicesConnected(const std::vector<int>& devices); |
| |
| // Callback function triggered when a device is disconnected. |
| // |
| // |devices| is a vector of audio_devices_t. |
| Status OnAudioDevicesDisconnected(const std::vector<int>& devices); |
| |
| // Callback function triggered 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. |
| Status OnVolumeChanged(int stream, int previous_index, int current_index); |
| |
| // Method to compare two AudioServiceCallback objects. |
| // |
| // |callback| is a ref counted pointer to a AudioServiceCallback object to be |
| // compared with this. |
| // |
| // Returns true if |callback| equals this. |
| bool Equals(const android::sp<AudioServiceCallback>& callback); |
| |
| private: |
| // Callback when devices are connected. |
| base::Callback<void(const BAudioDeviceInfo*, void*)> connected_callback_; |
| // Callback when devices are disconnected. |
| base::Callback<void(const BAudioDeviceInfo*, void*)> disconnected_callback_; |
| // Callback when the volume button is pressed. |
| base::Callback<void(BAudioUsage, int, int, void*)> volume_callback_; |
| // User data passed to the callbacks. |
| void* user_data_; |
| }; |
| |
| } // namespace brillo |
| |
| #endif // BRILLO_AUDIO_AUDIOSERVICE_AUDIO_SERVICE_CALLBACK_H_ |