| /* |
| * Copyright (C) 2019 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package com.android.server.soundtrigger_middleware; |
| |
| import android.os.HidlMemoryUtil; |
| |
| import java.util.ArrayList; |
| |
| /** |
| * Utilities for maintaining data compatibility between different minor versions of soundtrigger@2.x |
| * HAL. |
| * Note that some of these conversion utilities are destructive, i.e. mutate their input (for the |
| * sake of simplifying code and reducing copies). |
| */ |
| class Hw2CompatUtil { |
| static android.hardware.soundtrigger.V2_0.ISoundTriggerHw.SoundModel convertSoundModel_2_1_to_2_0( |
| android.hardware.soundtrigger.V2_1.ISoundTriggerHw.SoundModel soundModel) { |
| android.hardware.soundtrigger.V2_0.ISoundTriggerHw.SoundModel model_2_0 = soundModel.header; |
| // Note: this mutates the input! |
| model_2_0.data = HidlMemoryUtil.hidlMemoryToByteList(soundModel.data); |
| return model_2_0; |
| } |
| |
| static android.hardware.soundtrigger.V2_1.ISoundTriggerHwCallback.RecognitionEvent convertRecognitionEvent_2_0_to_2_1( |
| android.hardware.soundtrigger.V2_0.ISoundTriggerHwCallback.RecognitionEvent event) { |
| android.hardware.soundtrigger.V2_1.ISoundTriggerHwCallback.RecognitionEvent event_2_1 = |
| new android.hardware.soundtrigger.V2_1.ISoundTriggerHwCallback.RecognitionEvent(); |
| event_2_1.header = event; |
| event_2_1.data = HidlMemoryUtil.byteListToHidlMemory(event_2_1.header.data, |
| "SoundTrigger RecognitionEvent"); |
| // Note: this mutates the input! |
| event_2_1.header.data = new ArrayList<>(); |
| return event_2_1; |
| } |
| |
| static android.hardware.soundtrigger.V2_1.ISoundTriggerHwCallback.PhraseRecognitionEvent convertPhraseRecognitionEvent_2_0_to_2_1( |
| android.hardware.soundtrigger.V2_0.ISoundTriggerHwCallback.PhraseRecognitionEvent event) { |
| android.hardware.soundtrigger.V2_1.ISoundTriggerHwCallback.PhraseRecognitionEvent |
| event_2_1 = |
| new android.hardware.soundtrigger.V2_1.ISoundTriggerHwCallback.PhraseRecognitionEvent(); |
| event_2_1.common = convertRecognitionEvent_2_0_to_2_1(event.common); |
| event_2_1.phraseExtras = event.phraseExtras; |
| return event_2_1; |
| } |
| |
| static android.hardware.soundtrigger.V2_0.ISoundTriggerHw.PhraseSoundModel convertPhraseSoundModel_2_1_to_2_0( |
| android.hardware.soundtrigger.V2_1.ISoundTriggerHw.PhraseSoundModel soundModel) { |
| android.hardware.soundtrigger.V2_0.ISoundTriggerHw.PhraseSoundModel model_2_0 = |
| new android.hardware.soundtrigger.V2_0.ISoundTriggerHw.PhraseSoundModel(); |
| model_2_0.common = convertSoundModel_2_1_to_2_0(soundModel.common); |
| model_2_0.phrases = soundModel.phrases; |
| return model_2_0; |
| } |
| |
| static android.hardware.soundtrigger.V2_0.ISoundTriggerHw.RecognitionConfig convertRecognitionConfig_2_1_to_2_0( |
| android.hardware.soundtrigger.V2_1.ISoundTriggerHw.RecognitionConfig config) { |
| android.hardware.soundtrigger.V2_0.ISoundTriggerHw.RecognitionConfig config_2_0 = |
| config.header; |
| // Note: this mutates the input! |
| config_2_0.data = HidlMemoryUtil.hidlMemoryToByteList(config.data); |
| return config_2_0; |
| } |
| } |