120f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie/*
220f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * Copyright (C) 2015 The Android Open Source Project
320f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie *
420f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * Licensed under the Apache License, Version 2.0 (the "License");
520f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * you may not use this file except in compliance with the License.
620f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * You may obtain a copy of the License at
720f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie *
820f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie *      http://www.apache.org/licenses/LICENSE-2.0
920f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie *
1020f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * Unless required by applicable law or agreed to in writing, software
1120f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * distributed under the License is distributed on an "AS IS" BASIS,
1220f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1320f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * See the License for the specific language governing permissions and
1420f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * limitations under the License.
1520f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie */
1620f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie
1720f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie#pragma once
1820f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie
1920f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie#include "FormattedSubsystemObject.h"
2020f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie#include "InstanceConfigurableElement.h"
2120f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie#include "MappingContext.h"
2220f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie#include <AudioPolicyPluginInterface.h>
2320f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie#include <string>
2420f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie
2520f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffieclass PolicySubsystem;
2620f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie
2720f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffieclass InputSource : public CFormattedSubsystemObject
2820f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie{
2920f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffiepublic:
3020f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie    InputSource(const std::string &mappingValue,
31c1391f91c4f85f5f2f08b072486455b990817710François Gaffie                CInstanceConfigurableElement *instanceConfigurableElement,
32c1391f91c4f85f5f2f08b072486455b990817710François Gaffie                const CMappingContext &context,
33c1391f91c4f85f5f2f08b072486455b990817710François Gaffie                core::log::Logger& logger);
3420f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie
3520f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffieprotected:
3620f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie    virtual bool sendToHW(std::string &error);
3720f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie
3820f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffieprivate:
3920f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie    const PolicySubsystem *mPolicySubsystem; /**< Route subsytem plugin. */
4020f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie
4120f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie    /**
4220f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie     * Interface to communicate with Audio Policy Engine.
4320f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie     */
4420f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie    android::AudioPolicyPluginInterface *mPolicyPluginInterface;
4520f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie
4620f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie    audio_source_t mId; /**< input source identifier to link with audio.h. */
4720f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie};
48