1 /* 2 * Copyright (C) 2018 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 #ifndef android_hardware_audio_Hidl_Utils_H_ 18 #define android_hardware_audio_Hidl_Utils_H_ 19 20 #include PATH(android/hardware/audio/common/FILE_VERSION/types.h) 21 22 #include <memory> 23 24 #include <system/audio.h> 25 26 using ::android::hardware::hidl_vec; 27 28 namespace android { 29 namespace hardware { 30 namespace audio { 31 namespace common { 32 namespace CPP_VERSION { 33 namespace implementation { 34 35 using namespace ::android::hardware::audio::common::CPP_VERSION; 36 37 class HidlUtils { 38 public: 39 // A failure here indicates a platform config that is incompatible with 40 // the compiled HIDL interface version. 41 static status_t audioConfigFromHal(const audio_config_t& halConfig, AudioConfig* config); 42 43 static void audioConfigToHal(const AudioConfig& config, audio_config_t* halConfig); 44 static void audioGainConfigFromHal(const struct audio_gain_config& halConfig, 45 AudioGainConfig* config); 46 static void audioGainConfigToHal(const AudioGainConfig& config, 47 struct audio_gain_config* halConfig); 48 static void audioGainFromHal(const struct audio_gain& halGain, AudioGain* gain); 49 static void audioGainToHal(const AudioGain& gain, struct audio_gain* halGain); 50 static AudioUsage audioUsageFromHal(const audio_usage_t halUsage); 51 static audio_usage_t audioUsageToHal(const AudioUsage usage); 52 // A failure here indicates a platform offload info that is incompatible with 53 // the compiled HIDL interface version. 54 static status_t audioOffloadInfoFromHal(const audio_offload_info_t& halOffload, 55 AudioOffloadInfo* offload); 56 static void audioOffloadInfoToHal(const AudioOffloadInfo& offload, 57 audio_offload_info_t* halOffload); 58 static void audioPortConfigFromHal(const struct audio_port_config& halConfig, 59 AudioPortConfig* config); 60 static void audioPortConfigToHal(const AudioPortConfig& config, 61 struct audio_port_config* halConfig); 62 static void audioPortConfigsFromHal(unsigned int numHalConfigs, 63 const struct audio_port_config* halConfigs, 64 hidl_vec<AudioPortConfig>* configs); 65 static std::unique_ptr<audio_port_config[]> audioPortConfigsToHal( 66 const hidl_vec<AudioPortConfig>& configs); 67 static void audioPortFromHal(const struct audio_port& halPort, AudioPort* port); 68 static void audioPortToHal(const AudioPort& port, struct audio_port* halPort); 69 static void uuidFromHal(const audio_uuid_t& halUuid, Uuid* uuid); 70 static void uuidToHal(const Uuid& uuid, audio_uuid_t* halUuid); 71 }; 72 73 } // namespace implementation 74 } // namespace CPP_VERSION 75 } // namespace common 76 } // namespace audio 77 } // namespace hardware 78 } // namespace android 79 80 #endif // android_hardware_audio_Hidl_Utils_H_ 81