12110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie/*
22110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie * Copyright (C) 2015 The Android Open Source Project
32110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie *
42110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie * Licensed under the Apache License, Version 2.0 (the "License");
52110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie * you may not use this file except in compliance with the License.
62110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie * You may obtain a copy of the License at
72110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie *
82110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie *      http://www.apache.org/licenses/LICENSE-2.0
92110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie *
102110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie * Unless required by applicable law or agreed to in writing, software
112110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie * distributed under the License is distributed on an "AS IS" BASIS,
122110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
132110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie * See the License for the specific language governing permissions and
142110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie * limitations under the License.
152110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie */
162110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie
172110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie#pragma once
182110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie
19d1ab2bd4f1ea166a7e9e81cfd7f3e5dd47135d4dFrançois Gaffie#include <IVolumeCurvesCollection.h>
202110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie#include <AudioGain.h>
212110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie#include <AudioPort.h>
222110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie#include <AudioPatch.h>
232110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie#include <IOProfile.h>
242110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie#include <DeviceDescriptor.h>
252110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie#include <AudioInputDescriptor.h>
262110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie#include <AudioOutputDescriptor.h>
272110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie#include <AudioPolicyMix.h>
282110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie#include <SoundTriggerSession.h>
292110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie
302110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffienamespace android {
312110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie
322110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie/**
332110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie * This interface is an observer that the manager shall implement to allows e.g. the engine
342110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie * to access to policy pillars elements (like output / input descritors collections,
352110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie * HwModule collections, AudioMix, ...
362110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie */
372110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffieclass AudioPolicyManagerObserver
382110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie{
392110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffiepublic:
402110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie    virtual const AudioPatchCollection &getAudioPatches() const = 0;
412110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie
422110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie    virtual const SoundTriggerSessionCollection &getSoundTriggerSessionCollection() const = 0;
432110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie
442110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie    virtual const AudioPolicyMixCollection &getAudioPolicyMixCollection() const = 0;
452110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie
46c75307b73d324d590d0dbc05b44bce9aa89b7145Eric Laurent    virtual const SwAudioOutputCollection &getOutputs() const = 0;
472110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie
482110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie    virtual const AudioInputCollection &getInputs() const = 0;
492110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie
502110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie    virtual const DeviceVector &getAvailableOutputDevices() const = 0;
512110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie
522110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie    virtual const DeviceVector &getAvailableInputDevices() const = 0;
532110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie
54d1ab2bd4f1ea166a7e9e81cfd7f3e5dd47135d4dFrançois Gaffie    virtual IVolumeCurvesCollection &getVolumeCurves() = 0;
552110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie
562110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie    virtual const sp<DeviceDescriptor> &getDefaultOutputDevice() const = 0;
572110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie
582110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffieprotected:
592110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie    virtual ~AudioPolicyManagerObserver() {}
602110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie};
612110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie
622110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie}; // namespace android
63