C++程序  |  88行  |  3.35 KB

// 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_H_
#define BRILLO_AUDIO_AUDIOSERVICE_BRILLO_AUDIO_SERVICE_H_

#include "android/brillo/brilloaudioservice/BnBrilloAudioService.h"

#include <memory>
#include <set>
#include <vector>

#include <binder/Status.h>

#include "android/brillo/brilloaudioservice/IAudioServiceCallback.h"
#include "audio_device_handler.h"
#include "audio_volume_handler.h"

using android::binder::Status;
using android::brillo::brilloaudioservice::BnBrilloAudioService;
using android::brillo::brilloaudioservice::IAudioServiceCallback;

namespace brillo {

class BrilloAudioService : public BnBrilloAudioService {
 public:
  virtual ~BrilloAudioService() {}

  // From AIDL.
  virtual Status GetDevices(int flag, std::vector<int>* _aidl_return) = 0;
  virtual Status SetDevice(int usage, int config) = 0;
  virtual Status GetMaxVolumeSteps(int stream, int* _aidl_return) = 0;
  virtual Status SetMaxVolumeSteps(int stream, int max_steps) = 0;
  virtual Status SetVolumeIndex(int stream, int device, int index) = 0;
  virtual Status GetVolumeIndex(int stream, int device, int* _aidl_return) = 0;
  virtual Status GetVolumeControlStream(int* _aidl_return) = 0;
  virtual Status SetVolumeControlStream(int stream) = 0;
  virtual Status IncrementVolume() = 0;
  virtual Status DecrementVolume() = 0;
  virtual Status RegisterServiceCallback(
      const android::sp<IAudioServiceCallback>& callback) = 0;
  virtual Status UnregisterServiceCallback(
      const android::sp<IAudioServiceCallback>& callback) = 0;

  // 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.
  virtual void RegisterHandlers(
      std::weak_ptr<AudioDeviceHandler> audio_device_handler,
      std::weak_ptr<AudioVolumeHandler> audio_volume_handler) = 0;

  // Callback to be called when a device is connected.
  //
  // |devices| is a vector of ints representing the audio_devices_t.
  virtual void OnDevicesConnected(const std::vector<int>& device) = 0;

  // Callback to be called when a device is disconnected.
  //
  // |devices| is a vector of ints representing the audio_devices_t.
  virtual void OnDevicesDisconnected(const std::vector<int>& device) = 0;

  // Callback to be called when the volume is changed.
  //
  // |stream| is an audio_stream_type_t representing the stream.
  // |previous_index| is the volume index before the key press.
  // |current_index| is the volume index after the key press.
  virtual void OnVolumeChanged(audio_stream_type_t stream,
                               int previous_index,
                               int current_index) = 0;
};

}  // namespace brillo

#endif  // BRILLO_AUDIO_AUDIOSERVICE_BRILLO_AUDIO_SERVICE_H_