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 <system/audio.h> 2020f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie#include <system/audio_policy.h> 2120f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie#include <utils/Errors.h> 2220f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie#include <utils/RWLock.h> 2320f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie#include <list> 2420f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie#include <map> 2520f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie#include <string> 2620f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie#include <vector> 2720f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie 2820f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffieclass CParameterMgrPlatformConnector; 2920f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffieclass ISelectionCriterionInterface; 3020f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffieclass ISelectionCriterionTypeInterface; 3120f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffiestruct cnode; 3220f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie 3320f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffieclass ParameterMgrPlatformConnectorLogger; 3420f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie 3520f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffienamespace android 3620f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie{ 3720f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffienamespace audio_policy 3820f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie{ 3920f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie 4020f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffieclass ParameterManagerWrapper 4120f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie{ 4220f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffieprivate: 4320f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie typedef std::pair<int, const char *> CriterionTypeValuePair; 4420f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie 4520f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie typedef std::map<std::string, ISelectionCriterionInterface *> CriterionCollection; 4620f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie typedef std::map<std::string, ISelectionCriterionTypeInterface *> CriterionTypeCollection; 4720f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie typedef CriterionCollection::iterator CriterionMapIterator; 4820f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie typedef CriterionCollection::const_iterator CriterionMapConstIterator; 4920f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie typedef CriterionTypeCollection::iterator CriterionTypeMapIterator; 5020f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie typedef CriterionTypeCollection::const_iterator CriteriaTypeMapConstIterator; 5120f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie 5220f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffiepublic: 5320f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie ParameterManagerWrapper(); 5420f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie ~ParameterManagerWrapper(); 5520f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie 5620f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie /** 5720f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * Starts the platform state service. 5820f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * It starts the parameter framework policy instance. 5920f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * 6020f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * @return NO_ERROR if success, error code otherwise. 6120f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie */ 6220f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie status_t start(); 6320f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie 6420f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie /** 6520f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * The following API wrap policy action to criteria 6620f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie */ 6720f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie 6820f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie /** 6920f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * Checks if the platform state was correctly started (ie the policy parameter manager 7020f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * has been instantiated and started correctly). 7120f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * 7220f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * @todo: map on initCheck? 7320f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * 7420f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * @return true if platform state is started correctly, false otherwise. 7520f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie */ 7620f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie bool isStarted(); 7720f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie 7820f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie /** 7920f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * Set Telephony Mode. 8020f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * It will set the telephony mode criterion accordingly and apply the configuration in order 8120f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * to select the right configuration on domains depending on this mode criterion. 8220f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * 8320f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * @param[in] mode: Android Phone state (normal, ringtone, csv, in communication) 8420f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * 8520f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * @return NO_ERROR if criterion set correctly, error code otherwise. 8620f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie */ 8720f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie status_t setPhoneState(audio_mode_t mode); 8820f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie 8920f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie audio_mode_t getPhoneState() const; 9020f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie 9120f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie /** 9220f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * Set Force Use config for a given usage. 9320f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * It will set the corresponding policy parameter framework criterion. 9420f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * 9520f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * @param[in] usage for which a configuration shall be forced. 9620f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * @param[in] config wished to be forced for the given shall. 9720f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * 9820f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * @return NO_ERROR if the criterion was set correctly, error code otherwise (e.g. config not 9920f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * allowed a given usage...) 10020f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie */ 10120f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie status_t setForceUse(audio_policy_force_use_t usage, audio_policy_forced_cfg_t config); 10220f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie 10320f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie audio_policy_forced_cfg_t getForceUse(audio_policy_force_use_t usage) const; 10420f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie 10520f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie /** 106a3e696da3872250bca66a62d93a3b6114e20c27dFrançois Gaffie * Set the available input devices i.e. set the associated policy parameter framework criterion 10720f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * 108a3e696da3872250bca66a62d93a3b6114e20c27dFrançois Gaffie * @param[in] inputDevices mask of available input devices. 10920f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * 11020f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * @return NO_ERROR if devices criterion updated correctly, error code otherwise. 11120f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie */ 112a3e696da3872250bca66a62d93a3b6114e20c27dFrançois Gaffie status_t setAvailableInputDevices(audio_devices_t inputDevices); 113a3e696da3872250bca66a62d93a3b6114e20c27dFrançois Gaffie 114a3e696da3872250bca66a62d93a3b6114e20c27dFrançois Gaffie /** 115a3e696da3872250bca66a62d93a3b6114e20c27dFrançois Gaffie * Set the available output devices i.e. set the associated policy parameter framework criterion 116a3e696da3872250bca66a62d93a3b6114e20c27dFrançois Gaffie * 117a3e696da3872250bca66a62d93a3b6114e20c27dFrançois Gaffie * @param[in] outputDevices mask of available output devices. 118a3e696da3872250bca66a62d93a3b6114e20c27dFrançois Gaffie * 119a3e696da3872250bca66a62d93a3b6114e20c27dFrançois Gaffie * @return NO_ERROR if devices criterion updated correctly, error code otherwise. 120a3e696da3872250bca66a62d93a3b6114e20c27dFrançois Gaffie */ 121a3e696da3872250bca66a62d93a3b6114e20c27dFrançois Gaffie status_t setAvailableOutputDevices(audio_devices_t outputDevices); 12220f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie 12320f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffieprivate: 12420f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie /** 12520f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * Apply the configuration of the platform on the policy parameter manager. 12620f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * Once all the criteria have been set, the client of the platform state must call 12720f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * this function in order to have the route PFW taking into account these criteria. 12820f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * 12920f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * OPENS: shall we expose this? 13020f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * - Yes if atomic set operation. 13120f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * In this case, abstract it behind the "STAGE AND COMMIT" pattern 13220f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * - no if need to set more than one before triggering an apply configuration. 13320f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie */ 13420f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie void applyPlatformConfiguration(); 13520f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie 13620f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie /** 13720f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * Load the criterion configuration file. 13820f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * 13920f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * @param[in] path Criterion conf file path. 14020f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * 14120f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * @return NO_ERROR is parsing successful, error code otherwise. 14220f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie */ 14320f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie status_t loadAudioPolicyCriteriaConfig(const char *path); 14420f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie 14520f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie /** 14620f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * Add a criterion type to AudioPolicyPfw. 14720f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * 14820f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * @param[in] typeName of the PFW criterion type. 14920f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * @param[in] isInclusive attribute of the criterion type. 15020f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie */ 15120f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie void addCriterionType(const std::string &typeName, bool isInclusive); 15220f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie 15320f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie /** 15420f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * Add a criterion type value pair to AudioPolicyPfw. 15520f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * 15620f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * @param[in] typeName criterion type name to which this value pair is added to. 15720f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * @param[in] numeric part of the value pair. 15820f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * @param[in] literal part of the value pair. 15920f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie */ 16020f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie void addCriterionTypeValuePair(const std::string &typeName, uint32_t numeric, 16120f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie const std::string &literal); 16220f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie 16320f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie /** 16420f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * Add a criterion to AudioPolicyPfw. 16520f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * 16620f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * @param[in] name of the PFW criterion. 16720f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * @param[in] typeName criterion type name to which this criterion is associated to. 16820f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * @param[in] defaultLiteralValue of the PFW criterion. 16920f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie */ 17020f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie void addCriterion(const std::string &name, 17120f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie const std::string &typeName, 17220f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie const std::string &defaultLiteralValue); 17320f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie /** 17420f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * Parse and load the inclusive criterion type from configuration file. 17520f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * 17620f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * @param[in] root node of the configuration file. 17720f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie */ 17820f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie void loadInclusiveCriterionType(cnode *root); 17920f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie 18020f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie /** 18120f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * Parse and load the exclusive criterion type from configuration file. 18220f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * 18320f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * @param[in] root node of the configuration file. 18420f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie */ 18520f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie void loadExclusiveCriterionType(cnode *root); 18620f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie 18720f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie /** 18820f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * Parse and load the criteria from configuration file. 18920f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * 19020f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * @param[in] root node of the configuration file. 19120f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie */ 19220f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie void loadCriteria(cnode *root); 19320f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie 19420f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie /** 19520f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * Parse and load a criterion from configuration file. 19620f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * 19720f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * @param[in] root node of the configuration file. 19820f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie */ 19920f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie void loadCriterion(cnode *root); 20020f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie 20120f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie /** 20220f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * Parse and load the criterion types from configuration file. 20320f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * 20420f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * @param[in] root node of the configuration file 20520f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * @param[in] isInclusive true if inclusive, false is exclusive. 20620f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie */ 20720f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie void loadCriterionType(cnode *root, bool isInclusive); 20820f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie 20920f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie /** 21020f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * Load the configuration file. 21120f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * 21220f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * @param[in] root node of the configuration file. 21320f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie */ 21420f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie void loadConfig(cnode *root); 21520f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie 21620f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie /** 21720f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * Parse and load the chidren node from a given root node. 21820f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * 21920f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * @param[in] root node of the configuration file 22020f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * @param[out] defaultValue of the parameter manager element to retrieve. 22120f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * @param[out] type of the parameter manager element to retrieve. 22220f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie */ 22320f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie void parseChildren(cnode *root, std::string &defaultValue, std::string &type); 22420f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie 22520f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie /** 22620f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * Retrieve an element from a map by its name. 22720f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * 22820f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * @tparam T type of element to search. 22920f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * @param[in] name name of the element to find. 23020f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * @param[in] elementsMap maps of elements to search into. 23120f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * 23220f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * @return valid pointer on element if found, NULL otherwise. 23320f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie */ 23420f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie template <typename T> 23520f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie T *getElement(const std::string &name, std::map<std::string, T *> &elementsMap); 23620f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie 23720f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie /** 23820f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * Retrieve an element from a map by its name. Const version. 23920f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * 24020f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * @tparam T type of element to search. 24120f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * @param[in] name name of the element to find. 24220f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * @param[in] elementsMap maps of elements to search into. 24320f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * 24420f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * @return valid pointer on element if found, NULL otherwise. 24520f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie */ 24620f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie template <typename T> 24720f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie const T *getElement(const std::string &name, 24820f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie const std::map<std::string, T *> &elementsMap) const; 24920f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie 25020f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie /** 25120f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * set the value of a component state. 25220f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * 25320f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * @param[in] value new value to set to the component state. 25420f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * @param[in] stateName of the component state. 25520f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie */ 25620f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie void setValue(int value, const std::string &stateName); 25720f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie 25820f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie /** 25920f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * get the value of a component state. 26020f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * 26120f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * @param[in] name of the component state. 26220f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * 26320f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * @return value of the component state 26420f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie */ 26520f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie int getValue(const std::string &stateName) const; 26620f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie 26720f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie bool isValueValidForCriterion(ISelectionCriterionInterface *criterion, int valueToCheck); 26820f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie 26920f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie CriterionTypeCollection mPolicyCriterionTypes; /**< Policy Criterion Type map. */ 27020f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie CriterionCollection mPolicyCriteria; /**< Policy Criterion Map. */ 27120f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie 27220f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie CParameterMgrPlatformConnector *mPfwConnector; /**< Policy Parameter Manager connector. */ 27320f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie ParameterMgrPlatformConnectorLogger *mPfwConnectorLogger; /**< Policy PFW logger. */ 27420f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie 27520f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie 27620f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie /** 27720f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * provide a compile time error if no specialization is provided for a given type. 27820f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * 27920f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * @tparam T: type of the parameter manager element. Supported one are: 28020f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * - Criterion 28120f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * - CriterionType. 28220f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie */ 28320f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie template <typename T> 28420f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie struct parameterManagerElementSupported; 28520f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie 28620f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie static const char *const mPolicyPfwDefaultConfFileName; /**< Default Policy PFW top file name.*/ 28720f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie}; 28820f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie 28920f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie} // namespace audio_policy 29020f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie} // namespace android 291