16e81e9bb3c13d8c51fde503cf8be2bfb56e1ca1dMikhail Naganov/* 26e81e9bb3c13d8c51fde503cf8be2bfb56e1ca1dMikhail Naganov * Copyright (C) 2016 The Android Open Source Project 36e81e9bb3c13d8c51fde503cf8be2bfb56e1ca1dMikhail Naganov * 46e81e9bb3c13d8c51fde503cf8be2bfb56e1ca1dMikhail Naganov * Licensed under the Apache License, Version 2.0 (the "License"); 56e81e9bb3c13d8c51fde503cf8be2bfb56e1ca1dMikhail Naganov * you may not use this file except in compliance with the License. 66e81e9bb3c13d8c51fde503cf8be2bfb56e1ca1dMikhail Naganov * You may obtain a copy of the License at 76e81e9bb3c13d8c51fde503cf8be2bfb56e1ca1dMikhail Naganov * 86e81e9bb3c13d8c51fde503cf8be2bfb56e1ca1dMikhail Naganov * http://www.apache.org/licenses/LICENSE-2.0 96e81e9bb3c13d8c51fde503cf8be2bfb56e1ca1dMikhail Naganov * 106e81e9bb3c13d8c51fde503cf8be2bfb56e1ca1dMikhail Naganov * Unless required by applicable law or agreed to in writing, software 116e81e9bb3c13d8c51fde503cf8be2bfb56e1ca1dMikhail Naganov * distributed under the License is distributed on an "AS IS" BASIS, 126e81e9bb3c13d8c51fde503cf8be2bfb56e1ca1dMikhail Naganov * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 136e81e9bb3c13d8c51fde503cf8be2bfb56e1ca1dMikhail Naganov * See the License for the specific language governing permissions and 146e81e9bb3c13d8c51fde503cf8be2bfb56e1ca1dMikhail Naganov * limitations under the License. 156e81e9bb3c13d8c51fde503cf8be2bfb56e1ca1dMikhail Naganov */ 166e81e9bb3c13d8c51fde503cf8be2bfb56e1ca1dMikhail Naganov 176e81e9bb3c13d8c51fde503cf8be2bfb56e1ca1dMikhail Naganov#ifndef android_hardware_audio_V2_0_Hidl_Utils_H_ 186e81e9bb3c13d8c51fde503cf8be2bfb56e1ca1dMikhail Naganov#define android_hardware_audio_V2_0_Hidl_Utils_H_ 196e81e9bb3c13d8c51fde503cf8be2bfb56e1ca1dMikhail Naganov 206e81e9bb3c13d8c51fde503cf8be2bfb56e1ca1dMikhail Naganov#include <memory> 216e81e9bb3c13d8c51fde503cf8be2bfb56e1ca1dMikhail Naganov 226e81e9bb3c13d8c51fde503cf8be2bfb56e1ca1dMikhail Naganov#include <android/hardware/audio/common/2.0/types.h> 236e81e9bb3c13d8c51fde503cf8be2bfb56e1ca1dMikhail Naganov#include <system/audio.h> 246e81e9bb3c13d8c51fde503cf8be2bfb56e1ca1dMikhail Naganov 256e81e9bb3c13d8c51fde503cf8be2bfb56e1ca1dMikhail Naganovusing ::android::hardware::audio::common::V2_0::AudioConfig; 266e81e9bb3c13d8c51fde503cf8be2bfb56e1ca1dMikhail Naganovusing ::android::hardware::audio::common::V2_0::AudioGain; 276e81e9bb3c13d8c51fde503cf8be2bfb56e1ca1dMikhail Naganovusing ::android::hardware::audio::common::V2_0::AudioGainConfig; 286e81e9bb3c13d8c51fde503cf8be2bfb56e1ca1dMikhail Naganovusing ::android::hardware::audio::common::V2_0::AudioOffloadInfo; 296e81e9bb3c13d8c51fde503cf8be2bfb56e1ca1dMikhail Naganovusing ::android::hardware::audio::common::V2_0::AudioPort; 306e81e9bb3c13d8c51fde503cf8be2bfb56e1ca1dMikhail Naganovusing ::android::hardware::audio::common::V2_0::AudioPortConfig; 316e81e9bb3c13d8c51fde503cf8be2bfb56e1ca1dMikhail Naganovusing ::android::hardware::audio::common::V2_0::Uuid; 326e81e9bb3c13d8c51fde503cf8be2bfb56e1ca1dMikhail Naganovusing ::android::hardware::hidl_vec; 336e81e9bb3c13d8c51fde503cf8be2bfb56e1ca1dMikhail Naganov 346e81e9bb3c13d8c51fde503cf8be2bfb56e1ca1dMikhail Naganovnamespace android { 356e81e9bb3c13d8c51fde503cf8be2bfb56e1ca1dMikhail Naganov 366e81e9bb3c13d8c51fde503cf8be2bfb56e1ca1dMikhail Naganovclass HidlUtils { 376e81e9bb3c13d8c51fde503cf8be2bfb56e1ca1dMikhail Naganov public: 386e81e9bb3c13d8c51fde503cf8be2bfb56e1ca1dMikhail Naganov static void audioConfigFromHal(const audio_config_t& halConfig, AudioConfig* config); 396e81e9bb3c13d8c51fde503cf8be2bfb56e1ca1dMikhail Naganov static void audioConfigToHal(const AudioConfig& config, audio_config_t* halConfig); 406e81e9bb3c13d8c51fde503cf8be2bfb56e1ca1dMikhail Naganov static void audioGainConfigFromHal( 416e81e9bb3c13d8c51fde503cf8be2bfb56e1ca1dMikhail Naganov const struct audio_gain_config& halConfig, AudioGainConfig* config); 426e81e9bb3c13d8c51fde503cf8be2bfb56e1ca1dMikhail Naganov static void audioGainConfigToHal( 436e81e9bb3c13d8c51fde503cf8be2bfb56e1ca1dMikhail Naganov const AudioGainConfig& config, struct audio_gain_config* halConfig); 446e81e9bb3c13d8c51fde503cf8be2bfb56e1ca1dMikhail Naganov static void audioGainFromHal(const struct audio_gain& halGain, AudioGain* gain); 456e81e9bb3c13d8c51fde503cf8be2bfb56e1ca1dMikhail Naganov static void audioGainToHal(const AudioGain& gain, struct audio_gain* halGain); 466e81e9bb3c13d8c51fde503cf8be2bfb56e1ca1dMikhail Naganov static void audioOffloadInfoFromHal( 476e81e9bb3c13d8c51fde503cf8be2bfb56e1ca1dMikhail Naganov const audio_offload_info_t& halOffload, AudioOffloadInfo* offload); 486e81e9bb3c13d8c51fde503cf8be2bfb56e1ca1dMikhail Naganov static void audioOffloadInfoToHal( 496e81e9bb3c13d8c51fde503cf8be2bfb56e1ca1dMikhail Naganov const AudioOffloadInfo& offload, audio_offload_info_t* halOffload); 506e81e9bb3c13d8c51fde503cf8be2bfb56e1ca1dMikhail Naganov static void audioPortConfigFromHal( 516e81e9bb3c13d8c51fde503cf8be2bfb56e1ca1dMikhail Naganov const struct audio_port_config& halConfig, AudioPortConfig* config); 526e81e9bb3c13d8c51fde503cf8be2bfb56e1ca1dMikhail Naganov static void audioPortConfigToHal( 536e81e9bb3c13d8c51fde503cf8be2bfb56e1ca1dMikhail Naganov const AudioPortConfig& config, struct audio_port_config* halConfig); 546e81e9bb3c13d8c51fde503cf8be2bfb56e1ca1dMikhail Naganov static void audioPortConfigsFromHal( 556e81e9bb3c13d8c51fde503cf8be2bfb56e1ca1dMikhail Naganov unsigned int numHalConfigs, const struct audio_port_config *halConfigs, 566e81e9bb3c13d8c51fde503cf8be2bfb56e1ca1dMikhail Naganov hidl_vec<AudioPortConfig> *configs); 576e81e9bb3c13d8c51fde503cf8be2bfb56e1ca1dMikhail Naganov static std::unique_ptr<audio_port_config[]> audioPortConfigsToHal( 586e81e9bb3c13d8c51fde503cf8be2bfb56e1ca1dMikhail Naganov const hidl_vec<AudioPortConfig>& configs); 596e81e9bb3c13d8c51fde503cf8be2bfb56e1ca1dMikhail Naganov static void audioPortFromHal(const struct audio_port& halPort, AudioPort* port); 606e81e9bb3c13d8c51fde503cf8be2bfb56e1ca1dMikhail Naganov static void audioPortToHal(const AudioPort& port, struct audio_port* halPort); 616e81e9bb3c13d8c51fde503cf8be2bfb56e1ca1dMikhail Naganov static void uuidFromHal(const audio_uuid_t& halUuid, Uuid* uuid); 626e81e9bb3c13d8c51fde503cf8be2bfb56e1ca1dMikhail Naganov static void uuidToHal(const Uuid& uuid, audio_uuid_t* halUuid); 636e81e9bb3c13d8c51fde503cf8be2bfb56e1ca1dMikhail Naganov}; 646e81e9bb3c13d8c51fde503cf8be2bfb56e1ca1dMikhail Naganov 656e81e9bb3c13d8c51fde503cf8be2bfb56e1ca1dMikhail Naganov} // namespace android 666e81e9bb3c13d8c51fde503cf8be2bfb56e1ca1dMikhail Naganov 676e81e9bb3c13d8c51fde503cf8be2bfb56e1ca1dMikhail Naganov#endif // android_hardware_audio_V2_0_Hidl_Utils_H_ 68