/* * Copyright 2016 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 android.hardware.soundtrigger@2.0; import android.hardware.audio.common@2.0; interface ISoundTriggerHwCallback { enum RecognitionStatus : uint32_t { SUCCESS = 0, ABORT = 1, FAILURE = 2, }; enum SoundModelStatus : uint32_t { UPDATED = 0, }; /** * Generic recognition event sent via recognition callback */ struct RecognitionEvent { /** Recognition status e.g. SUCCESS */ RecognitionStatus status; /** Sound model type for this event. e.g SoundModelType.TYPE_KEYPHRASE */ SoundModelType type; /** Handle of loaded sound model which triggered the event */ SoundModelHandle model; /** It is possible to capture audio from this */ /** utterance buffered by the implementation */ bool captureAvailable; /** Audio session ID. framework use */ int32_t captureSession; /** * Delay in ms between end of model detection and start of audio /** * available for capture. A negative value is possible * (e.g. if key phrase is also available for capture */ int32_t captureDelayMs; /** * Duration in ms of audio captured before the start of the trigger. * 0 if none. */ int32_t capturePreambleMs; /** The opaque data is the capture of the trigger sound */ bool triggerInData; /** * Audio format of either the trigger in event data or to use for * capture of the rest of the utterance */ AudioConfig audioConfig; /** Opaque event data */ vec data; }; /** * Specialized recognition event for key phrase recognitions */ struct PhraseRecognitionEvent { /** Common part of the recognition event */ RecognitionEvent common; /** List of descriptors for each recognized key phrase */ vec phraseExtras; }; /** * Event sent via load sound model callback */ struct ModelEvent { /** Sound model status e.g. SoundModelStatus.UPDATED */ SoundModelStatus status; /** Loaded sound model that triggered the event */ SoundModelHandle model; /** Opaque event data, passed transparently by the framework */ vec data; }; typedef int32_t CallbackCookie; /** * Callback method called by the HAL when the sound recognition triggers * @param event A RecognitionEvent structure containing detailed results * of the recognition triggered * @param cookie The cookie passed by the framework when recognition was * started (see ISoundtriggerHw.startRecognition() */ recognitionCallback(RecognitionEvent event, CallbackCookie cookie); /** * Callback method called by the HAL when the sound recognition triggers * for a key phrase sound model. * @param event A RecognitionEvent structure containing detailed results * of the recognition triggered * @param cookie The cookie passed by the framework when recognition was * started (see ISoundtriggerHw.startRecognition() */ phraseRecognitionCallback(PhraseRecognitionEvent event, CallbackCookie cookie); /** * Callback method called by the HAL when the sound model loading completes * @param event A ModelEvent structure containing detailed results of the * model loading operation * @param cookie The cookie passed by the framework when loading was * initiated (see ISoundtriggerHw.loadSoundModel() */ soundModelCallback(ModelEvent event, CallbackCookie cookie); };