// 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_