1 /* 2 * Copyright 2016 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 package android.hardware.soundtrigger@2.0; 18 19 import android.hardware.audio.common@2.0; 20 21 interface ISoundTriggerHwCallback { 22 enum RecognitionStatus : uint32_t { 23 SUCCESS = 0, 24 ABORT = 1, 25 FAILURE = 2, 26 }; 27 28 enum SoundModelStatus : uint32_t { 29 UPDATED = 0, 30 }; 31 32 /** 33 * Generic recognition event sent via recognition callback 34 */ 35 struct RecognitionEvent { 36 /** Recognition status e.g. SUCCESS */ 37 RecognitionStatus status; 38 /** Sound model type for this event. e.g SoundModelType.TYPE_KEYPHRASE */ 39 SoundModelType type; 40 /** Handle of loaded sound model which triggered the event */ 41 SoundModelHandle model; 42 /** It is possible to capture audio from this */ 43 /** utterance buffered by the implementation */ 44 bool captureAvailable; 45 /** Audio session ID. framework use */ 46 int32_t captureSession; 47 /** 48 * Delay in ms between end of model detection and start of audio 49 /** 50 * available for capture. A negative value is possible 51 * (e.g. if key phrase is also available for capture */ 52 int32_t captureDelayMs; 53 /** 54 * Duration in ms of audio captured before the start of the trigger. 55 * 0 if none. */ 56 int32_t capturePreambleMs; 57 /** The opaque data is the capture of the trigger sound */ 58 bool triggerInData; 59 /** 60 * Audio format of either the trigger in event data or to use for 61 * capture of the rest of the utterance */ 62 AudioConfig audioConfig; 63 /** Opaque event data */ 64 vec<uint8_t> data; 65 }; 66 67 /** 68 * Specialized recognition event for key phrase recognitions 69 */ 70 struct PhraseRecognitionEvent { 71 /** Common part of the recognition event */ 72 RecognitionEvent common; 73 /** List of descriptors for each recognized key phrase */ 74 vec<PhraseRecognitionExtra> phraseExtras; 75 }; 76 77 /** 78 * Event sent via load sound model callback 79 */ 80 struct ModelEvent { 81 /** Sound model status e.g. SoundModelStatus.UPDATED */ 82 SoundModelStatus status; 83 /** Loaded sound model that triggered the event */ 84 SoundModelHandle model; 85 /** Opaque event data, passed transparently by the framework */ 86 vec<uint8_t> data; 87 }; 88 89 typedef int32_t CallbackCookie; 90 91 /** 92 * Callback method called by the HAL when the sound recognition triggers 93 * @param event A RecognitionEvent structure containing detailed results 94 * of the recognition triggered 95 * @param cookie The cookie passed by the framework when recognition was 96 * started (see ISoundtriggerHw.startRecognition() 97 */ 98 recognitionCallback(RecognitionEvent event, CallbackCookie cookie); 99 100 /** 101 * Callback method called by the HAL when the sound recognition triggers 102 * for a key phrase sound model. 103 * @param event A RecognitionEvent structure containing detailed results 104 * of the recognition triggered 105 * @param cookie The cookie passed by the framework when recognition was 106 * started (see ISoundtriggerHw.startRecognition() 107 */ 108 phraseRecognitionCallback(PhraseRecognitionEvent event, 109 CallbackCookie cookie); 110 /** 111 * Callback method called by the HAL when the sound model loading completes 112 * @param event A ModelEvent structure containing detailed results of the 113 * model loading operation 114 * @param cookie The cookie passed by the framework when loading was 115 * initiated (see ISoundtriggerHw.loadSoundModel() 116 */ 117 soundModelCallback(ModelEvent event, CallbackCookie cookie); 118 }; 119