156ec4ffcbae8aeac6c5245fc7b825d02e2e6cefdJean-Michel Trivi/* 256ec4ffcbae8aeac6c5245fc7b825d02e2e6cefdJean-Michel Trivi * Copyright (C) 2015 The Android Open Source Project 356ec4ffcbae8aeac6c5245fc7b825d02e2e6cefdJean-Michel Trivi * 456ec4ffcbae8aeac6c5245fc7b825d02e2e6cefdJean-Michel Trivi * Licensed under the Apache License, Version 2.0 (the "License"); 556ec4ffcbae8aeac6c5245fc7b825d02e2e6cefdJean-Michel Trivi * you may not use this file except in compliance with the License. 656ec4ffcbae8aeac6c5245fc7b825d02e2e6cefdJean-Michel Trivi * You may obtain a copy of the License at 756ec4ffcbae8aeac6c5245fc7b825d02e2e6cefdJean-Michel Trivi * 856ec4ffcbae8aeac6c5245fc7b825d02e2e6cefdJean-Michel Trivi * http://www.apache.org/licenses/LICENSE-2.0 956ec4ffcbae8aeac6c5245fc7b825d02e2e6cefdJean-Michel Trivi * 1056ec4ffcbae8aeac6c5245fc7b825d02e2e6cefdJean-Michel Trivi * Unless required by applicable law or agreed to in writing, software 1156ec4ffcbae8aeac6c5245fc7b825d02e2e6cefdJean-Michel Trivi * distributed under the License is distributed on an "AS IS" BASIS, 1256ec4ffcbae8aeac6c5245fc7b825d02e2e6cefdJean-Michel Trivi * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1356ec4ffcbae8aeac6c5245fc7b825d02e2e6cefdJean-Michel Trivi * See the License for the specific language governing permissions and 1456ec4ffcbae8aeac6c5245fc7b825d02e2e6cefdJean-Michel Trivi * limitations under the License. 1556ec4ffcbae8aeac6c5245fc7b825d02e2e6cefdJean-Michel Trivi */ 1656ec4ffcbae8aeac6c5245fc7b825d02e2e6cefdJean-Michel Trivi 17ad3183e2d4cecd02f6261270a7ea1c68be0efa0fFrançois Gaffie#pragma once 18ad3183e2d4cecd02f6261270a7ea1c68be0efa0fFrançois Gaffie 19a8ecc2c72ca26389bd6b0162181d60aaeaca8149François Gaffie#include "AudioPolicyConfig.h" 2053615e29c99c5e9d2ca77aaefd7bf5c770513120François Gaffie#include "DeviceDescriptor.h" 2153615e29c99c5e9d2ca77aaefd7bf5c770513120François Gaffie#include "HwModule.h" 2253615e29c99c5e9d2ca77aaefd7bf5c770513120François Gaffie#include "audio_policy_conf.h" 23ad3183e2d4cecd02f6261270a7ea1c68be0efa0fFrançois Gaffie#include <system/audio.h> 2453615e29c99c5e9d2ca77aaefd7bf5c770513120François Gaffie#include <utils/Log.h> 2553615e29c99c5e9d2ca77aaefd7bf5c770513120François Gaffie#include <utils/Vector.h> 2653615e29c99c5e9d2ca77aaefd7bf5c770513120François Gaffie#include <utils/SortedVector.h> 2753615e29c99c5e9d2ca77aaefd7bf5c770513120François Gaffie#include <cutils/config_utils.h> 2853615e29c99c5e9d2ca77aaefd7bf5c770513120François Gaffie#include <utils/RefBase.h> 2953615e29c99c5e9d2ca77aaefd7bf5c770513120François Gaffie#include <system/audio_policy.h> 30ad3183e2d4cecd02f6261270a7ea1c68be0efa0fFrançois Gaffie 3156ec4ffcbae8aeac6c5245fc7b825d02e2e6cefdJean-Michel Trivinamespace android { 3256ec4ffcbae8aeac6c5245fc7b825d02e2e6cefdJean-Michel Trivi 3356ec4ffcbae8aeac6c5245fc7b825d02e2e6cefdJean-Michel Trivi// ---------------------------------------------------------------------------- 3456ec4ffcbae8aeac6c5245fc7b825d02e2e6cefdJean-Michel Trivi// Definitions for audio_policy.conf file parsing 3556ec4ffcbae8aeac6c5245fc7b825d02e2e6cefdJean-Michel Trivi// ---------------------------------------------------------------------------- 3656ec4ffcbae8aeac6c5245fc7b825d02e2e6cefdJean-Michel Trivi 3756ec4ffcbae8aeac6c5245fc7b825d02e2e6cefdJean-Michel Triviclass ConfigParsingUtils 3856ec4ffcbae8aeac6c5245fc7b825d02e2e6cefdJean-Michel Trivi{ 3956ec4ffcbae8aeac6c5245fc7b825d02e2e6cefdJean-Michel Trivipublic: 40a8ecc2c72ca26389bd6b0162181d60aaeaca8149François Gaffie static status_t loadConfig(const char *path, AudioPolicyConfig &config); 4153615e29c99c5e9d2ca77aaefd7bf5c770513120François Gaffie 4253615e29c99c5e9d2ca77aaefd7bf5c770513120François Gaffieprivate: 43a8ecc2c72ca26389bd6b0162181d60aaeaca8149François Gaffie static void loadAudioPortGain(cnode *root, AudioPort &audioPort, int index); 44a8ecc2c72ca26389bd6b0162181d60aaeaca8149François Gaffie static void loadAudioPortGains(cnode *root, AudioPort &audioPort); 45a8ecc2c72ca26389bd6b0162181d60aaeaca8149François Gaffie static void loadDeviceDescriptorGains(cnode *root, sp<DeviceDescriptor> &deviceDesc); 46a8ecc2c72ca26389bd6b0162181d60aaeaca8149François Gaffie static status_t loadHwModuleDevice(cnode *root, DeviceVector &devices); 47112b0af826aeca45855690b9c105b2cdf9938bbeFrançois Gaffie static status_t loadHwModuleProfile(cnode *root, sp<HwModule> &module, audio_port_role_t role); 48a8ecc2c72ca26389bd6b0162181d60aaeaca8149François Gaffie static void loadDevicesFromTag(const char *tag, DeviceVector &devices, 49a8ecc2c72ca26389bd6b0162181d60aaeaca8149François Gaffie const DeviceVector &declaredDevices); 50a8ecc2c72ca26389bd6b0162181d60aaeaca8149François Gaffie static void loadHwModules(cnode *root, HwModuleCollection &hwModules, 51a8ecc2c72ca26389bd6b0162181d60aaeaca8149François Gaffie AudioPolicyConfig &config); 52a8ecc2c72ca26389bd6b0162181d60aaeaca8149François Gaffie static void loadGlobalConfig(cnode *root, AudioPolicyConfig &config, 53a8ecc2c72ca26389bd6b0162181d60aaeaca8149François Gaffie const sp<HwModule> &primaryModule); 54a8ecc2c72ca26389bd6b0162181d60aaeaca8149François Gaffie static void loadModuleGlobalConfig(cnode *root, const sp<HwModule> &module, 55a8ecc2c72ca26389bd6b0162181d60aaeaca8149François Gaffie AudioPolicyConfig &config); 56a8ecc2c72ca26389bd6b0162181d60aaeaca8149François Gaffie static status_t loadHwModule(cnode *root, sp<HwModule> &module, AudioPolicyConfig &config); 5756ec4ffcbae8aeac6c5245fc7b825d02e2e6cefdJean-Michel Trivi}; 5856ec4ffcbae8aeac6c5245fc7b825d02e2e6cefdJean-Michel Trivi 5956ec4ffcbae8aeac6c5245fc7b825d02e2e6cefdJean-Michel Trivi}; // namespace android 60