Conversions.cpp revision 7cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3
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"
217cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov
227cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganovnamespace android {
237cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganovnamespace hardware {
247cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganovnamespace audio {
257cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganovnamespace effect {
267cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganovnamespace V2_0 {
277cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganovnamespace implementation {
287cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov
297cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganovvoid effectDescriptorFromHal(
307cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov        const effect_descriptor_t& halDescriptor, EffectDescriptor* descriptor) {
317cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov    uuidFromHal(halDescriptor.type, &descriptor->type);
327cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov    uuidFromHal(halDescriptor.uuid, &descriptor->uuid);
337cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov    descriptor->flags = EffectFlags(halDescriptor.flags);
347cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov    descriptor->cpuLoad = halDescriptor.cpuLoad;
357cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov    descriptor->memoryUsage = halDescriptor.memoryUsage;
367cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov    memcpy(descriptor->name.data(), halDescriptor.name, descriptor->name.size());
377cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov    memcpy(descriptor->implementor.data(),
387cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov            halDescriptor.implementor, descriptor->implementor.size());
397cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov}
407cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov
417cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganovvoid uuidFromHal(const effect_uuid_t& halUuid, Uuid* uuid) {
427cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov    uuid->timeLow = halUuid.timeLow;
437cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov    uuid->timeMid = halUuid.timeMid;
447cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov    uuid->versionAndTimeHigh = halUuid.timeHiAndVersion;
457cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov    uuid->variantAndClockSeqHigh = halUuid.clockSeq;
467cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov    memcpy(uuid->node.data(), halUuid.node, uuid->node.size());
477cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov}
487cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov
497cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganovvoid uuidToHal(const Uuid& uuid, effect_uuid_t* halUuid) {
507cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov    halUuid->timeLow = uuid.timeLow;
517cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov    halUuid->timeMid = uuid.timeMid;
527cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov    halUuid->timeHiAndVersion = uuid.versionAndTimeHigh;
537cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov    halUuid->clockSeq = uuid.variantAndClockSeqHigh;
547cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov    memcpy(halUuid->node, uuid.node.data(), uuid.node.size());
557cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov}
567cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov
577cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganovstd::string uuidToString(const effect_uuid_t& halUuid) {
587cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov    char str[64];
597cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov    snprintf(str, sizeof(str), "%08x-%04x-%04x-%04x-%02x%02x%02x%02x%02x%02x",
607cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov            halUuid.timeLow,
617cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov            halUuid.timeMid,
627cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov            halUuid.timeHiAndVersion,
637cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov            halUuid.clockSeq,
647cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov            halUuid.node[0],
657cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov            halUuid.node[1],
667cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov            halUuid.node[2],
677cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov            halUuid.node[3],
687cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov            halUuid.node[4],
697cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov            halUuid.node[5]);
707cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov    return str;
717cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov}
727cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov
737cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov} // namespace implementation
747cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov}  // namespace V2_0
757cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov}  // namespace effect
767cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov}  // namespace audio
777cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov}  // namespace hardware
787cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov}  // namespace android
79