17cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov/*
27cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov * Copyright (C) 2016 The Android Open Source Project
37cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov *
47cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov * Licensed under the Apache License, Version 2.0 (the "License");
57cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov * you may not use this file except in compliance with the License.
67cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov * You may obtain a copy of the License at
77cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov *
87cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov *      http://www.apache.org/licenses/LICENSE-2.0
97cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov *
107cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov * Unless required by applicable law or agreed to in writing, software
117cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov * distributed under the License is distributed on an "AS IS" BASIS,
127cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
137cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov * See the License for the specific language governing permissions and
147cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov * limitations under the License.
157cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov */
167cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov
177cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov#include <memory.h>
187cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov#include <stdio.h>
197cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov
207cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov#include "Conversions.h"
216e81e9bb3c13d8c51fde503cf8be2bfb56e1ca1dMikhail Naganov#include "HidlUtils.h"
227cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov
237cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganovnamespace android {
247cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganovnamespace hardware {
257cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganovnamespace audio {
267cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganovnamespace effect {
277cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganovnamespace V2_0 {
287cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganovnamespace implementation {
297cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov
307cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganovvoid effectDescriptorFromHal(
317cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov        const effect_descriptor_t& halDescriptor, EffectDescriptor* descriptor) {
326e81e9bb3c13d8c51fde503cf8be2bfb56e1ca1dMikhail Naganov    HidlUtils::uuidFromHal(halDescriptor.type, &descriptor->type);
336e81e9bb3c13d8c51fde503cf8be2bfb56e1ca1dMikhail Naganov    HidlUtils::uuidFromHal(halDescriptor.uuid, &descriptor->uuid);
347cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov    descriptor->flags = EffectFlags(halDescriptor.flags);
357cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov    descriptor->cpuLoad = halDescriptor.cpuLoad;
367cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov    descriptor->memoryUsage = halDescriptor.memoryUsage;
377cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov    memcpy(descriptor->name.data(), halDescriptor.name, descriptor->name.size());
387cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov    memcpy(descriptor->implementor.data(),
397cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov            halDescriptor.implementor, descriptor->implementor.size());
407cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov}
417cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov
427cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganovstd::string uuidToString(const effect_uuid_t& halUuid) {
437cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov    char str[64];
447cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov    snprintf(str, sizeof(str), "%08x-%04x-%04x-%04x-%02x%02x%02x%02x%02x%02x",
457cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov            halUuid.timeLow,
467cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov            halUuid.timeMid,
477cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov            halUuid.timeHiAndVersion,
487cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov            halUuid.clockSeq,
497cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov            halUuid.node[0],
507cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov            halUuid.node[1],
517cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov            halUuid.node[2],
527cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov            halUuid.node[3],
537cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov            halUuid.node[4],
547cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov            halUuid.node[5]);
557cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov    return str;
567cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov}
577cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov
587cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov} // namespace implementation
597cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov}  // namespace V2_0
607cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov}  // namespace effect
617cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov}  // namespace audio
627cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov}  // namespace hardware
637cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov}  // namespace android
64