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 "Subsystem.h"
2020f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie#include <string>
2120f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie
2220f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffienamespace android {
2320f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie
2420f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffieclass AudioPolicyPluginInterface;
2520f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie
2620f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie}
2720f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie
2820f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffieclass PolicySubsystem : public CSubsystem
2920f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie{
3020f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffiepublic:
31c1391f91c4f85f5f2f08b072486455b990817710François Gaffie    PolicySubsystem(const std::string &strName, core::log::Logger& logger);
3220f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie
3320f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie    /**
3420f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie     * Retrieve Route Manager interface.
3520f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie     *
3620f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie     * @return RouteManager interface for the route plugin.
3720f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie     */
3820f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie    android::AudioPolicyPluginInterface *getPolicyPluginInterface() const;
3920f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie
4020f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffieprivate:
4120f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie    /* Copy facilities are put private to disable copy. */
4220f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie    PolicySubsystem(const PolicySubsystem &object);
4320f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie    PolicySubsystem &operator=(const PolicySubsystem &object);
4420f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie
4520f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie    android::AudioPolicyPluginInterface *mPluginInterface; /**< Audio Policy Plugin Interface. */
4620f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie
4720f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie    static const char *const mKeyName; /**< name key mapping string. */
4820f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie    static const char *const mKeyIdentifier;
4920f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie    static const char *const mKeyCategory;
5020f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie
5120f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie    static const char *const mKeyAmend1; /**< amend1 key mapping string. */
5220f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie    static const char *const mKeyAmend2; /**< amend2 key mapping string. */
5320f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie    static const char *const mKeyAmend3; /**< amend3 key mapping string. */
5420f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie
5520f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie    static const char *const mStreamComponentName;
5620f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie    static const char *const mStrategyComponentName;
5720f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie    static const char *const mInputSourceComponentName;
5820f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie    static const char *const mUsageComponentName;
5920f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie};
60