1*4d7e907cSAndroid Build Coastguard Worker/* 2*4d7e907cSAndroid Build Coastguard Worker * Copyright 2017 The Android Open Source Project 3*4d7e907cSAndroid Build Coastguard Worker * 4*4d7e907cSAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License"); 5*4d7e907cSAndroid Build Coastguard Worker * you may not use this file except in compliance with the License. 6*4d7e907cSAndroid Build Coastguard Worker * You may obtain a copy of the License at 7*4d7e907cSAndroid Build Coastguard Worker * 8*4d7e907cSAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0 9*4d7e907cSAndroid Build Coastguard Worker * 10*4d7e907cSAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software 11*4d7e907cSAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS, 12*4d7e907cSAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*4d7e907cSAndroid Build Coastguard Worker * See the License for the specific language governing permissions and 14*4d7e907cSAndroid Build Coastguard Worker * limitations under the License. 15*4d7e907cSAndroid Build Coastguard Worker */ 16*4d7e907cSAndroid Build Coastguard Worker 17*4d7e907cSAndroid Build Coastguard Workerpackage [email protected]; 18*4d7e907cSAndroid Build Coastguard Worker 19*4d7e907cSAndroid Build Coastguard Workerimport @2.0::ISoundTriggerHw; 20*4d7e907cSAndroid Build Coastguard Workerimport @2.0::ISoundTriggerHwCallback.CallbackCookie; 21*4d7e907cSAndroid Build Coastguard Workerimport @2.0::SoundModelHandle; 22*4d7e907cSAndroid Build Coastguard Worker 23*4d7e907cSAndroid Build Coastguard Workerimport ISoundTriggerHwCallback; 24*4d7e907cSAndroid Build Coastguard Worker 25*4d7e907cSAndroid Build Coastguard Worker/** 26*4d7e907cSAndroid Build Coastguard Worker * SoundTrigger HAL interface. Used for hardware recognition of hotwords. 27*4d7e907cSAndroid Build Coastguard Worker */ 28*4d7e907cSAndroid Build Coastguard Workerinterface ISoundTriggerHw extends @2.0::ISoundTriggerHw { 29*4d7e907cSAndroid Build Coastguard Worker 30*4d7e907cSAndroid Build Coastguard Worker /** 31*4d7e907cSAndroid Build Coastguard Worker * Base sound model descriptor. This struct is the header of a larger block 32*4d7e907cSAndroid Build Coastguard Worker * passed to loadSoundModel_2_1() and contains the binary data of the 33*4d7e907cSAndroid Build Coastguard Worker * sound model. 34*4d7e907cSAndroid Build Coastguard Worker */ 35*4d7e907cSAndroid Build Coastguard Worker struct SoundModel { 36*4d7e907cSAndroid Build Coastguard Worker /** Sound model header. Any data contained in the 'header.data' field 37*4d7e907cSAndroid Build Coastguard Worker * is ignored */ 38*4d7e907cSAndroid Build Coastguard Worker @2.0::ISoundTriggerHw.SoundModel header; 39*4d7e907cSAndroid Build Coastguard Worker /** Opaque data transparent to Android framework */ 40*4d7e907cSAndroid Build Coastguard Worker memory data; 41*4d7e907cSAndroid Build Coastguard Worker }; 42*4d7e907cSAndroid Build Coastguard Worker 43*4d7e907cSAndroid Build Coastguard Worker /** 44*4d7e907cSAndroid Build Coastguard Worker * Specialized sound model for key phrase detection. 45*4d7e907cSAndroid Build Coastguard Worker * Proprietary representation of key phrases in binary data must match 46*4d7e907cSAndroid Build Coastguard Worker * information indicated by phrases field. 47*4d7e907cSAndroid Build Coastguard Worker */ 48*4d7e907cSAndroid Build Coastguard Worker struct PhraseSoundModel { 49*4d7e907cSAndroid Build Coastguard Worker /** Common part of sound model descriptor */ 50*4d7e907cSAndroid Build Coastguard Worker SoundModel common; 51*4d7e907cSAndroid Build Coastguard Worker /** List of descriptors for key phrases supported by this sound model */ 52*4d7e907cSAndroid Build Coastguard Worker vec<Phrase> phrases; 53*4d7e907cSAndroid Build Coastguard Worker }; 54*4d7e907cSAndroid Build Coastguard Worker 55*4d7e907cSAndroid Build Coastguard Worker /** 56*4d7e907cSAndroid Build Coastguard Worker * Configuration for sound trigger capture session passed to 57*4d7e907cSAndroid Build Coastguard Worker * startRecognition_2_1() method. 58*4d7e907cSAndroid Build Coastguard Worker */ 59*4d7e907cSAndroid Build Coastguard Worker struct RecognitionConfig { 60*4d7e907cSAndroid Build Coastguard Worker /** Configuration header. Any data contained in the 'header.data' field 61*4d7e907cSAndroid Build Coastguard Worker * is ignored */ 62*4d7e907cSAndroid Build Coastguard Worker @2.0::ISoundTriggerHw.RecognitionConfig header; 63*4d7e907cSAndroid Build Coastguard Worker /** Opaque capture configuration data transparent to the framework */ 64*4d7e907cSAndroid Build Coastguard Worker memory data; 65*4d7e907cSAndroid Build Coastguard Worker }; 66*4d7e907cSAndroid Build Coastguard Worker 67*4d7e907cSAndroid Build Coastguard Worker /** 68*4d7e907cSAndroid Build Coastguard Worker * Load a sound model. Once loaded, recognition of this model can be 69*4d7e907cSAndroid Build Coastguard Worker * started and stopped. Only one active recognition per model at a time. 70*4d7e907cSAndroid Build Coastguard Worker * The SoundTrigger service must handle concurrent recognition requests by 71*4d7e907cSAndroid Build Coastguard Worker * different users/applications on the same model. 72*4d7e907cSAndroid Build Coastguard Worker * The implementation returns a unique handle used by other functions 73*4d7e907cSAndroid Build Coastguard Worker * (unloadSoundModel(), startRecognition*(), etc... 74*4d7e907cSAndroid Build Coastguard Worker * 75*4d7e907cSAndroid Build Coastguard Worker * Must have the exact same semantics as loadSoundModel from 76*4d7e907cSAndroid Build Coastguard Worker * [email protected] except that the SoundModel uses shared memory 77*4d7e907cSAndroid Build Coastguard Worker * instead of data. 78*4d7e907cSAndroid Build Coastguard Worker * 79*4d7e907cSAndroid Build Coastguard Worker * @param soundModel A SoundModel structure describing the sound model 80*4d7e907cSAndroid Build Coastguard Worker * to load. 81*4d7e907cSAndroid Build Coastguard Worker * @param callback The callback interface on which the soundmodelCallback*() 82*4d7e907cSAndroid Build Coastguard Worker * method must be called upon completion. 83*4d7e907cSAndroid Build Coastguard Worker * @param cookie The value of the cookie argument passed to the completion 84*4d7e907cSAndroid Build Coastguard Worker * callback. This unique context information is assigned and 85*4d7e907cSAndroid Build Coastguard Worker * used only by the framework. 86*4d7e907cSAndroid Build Coastguard Worker * @return retval Operation completion status: 0 in case of success, 87*4d7e907cSAndroid Build Coastguard Worker * -EINVAL in case of invalid sound model (e.g 0 data size), 88*4d7e907cSAndroid Build Coastguard Worker * -ENOSYS in case of invalid operation (e.g max number of models 89*4d7e907cSAndroid Build Coastguard Worker * exceeded), 90*4d7e907cSAndroid Build Coastguard Worker * -ENOMEM in case of memory allocation failure, 91*4d7e907cSAndroid Build Coastguard Worker * -ENODEV in case of initialization error. 92*4d7e907cSAndroid Build Coastguard Worker * @return modelHandle A unique handle assigned by the HAL for use by the 93*4d7e907cSAndroid Build Coastguard Worker * framework when controlling activity for this sound model. 94*4d7e907cSAndroid Build Coastguard Worker */ 95*4d7e907cSAndroid Build Coastguard Worker @callflow(next={"startRecognition_2_1", "unloadSoundModel"}) 96*4d7e907cSAndroid Build Coastguard Worker loadSoundModel_2_1(SoundModel soundModel, 97*4d7e907cSAndroid Build Coastguard Worker ISoundTriggerHwCallback callback, 98*4d7e907cSAndroid Build Coastguard Worker CallbackCookie cookie) 99*4d7e907cSAndroid Build Coastguard Worker generates (int32_t retval, SoundModelHandle modelHandle); 100*4d7e907cSAndroid Build Coastguard Worker 101*4d7e907cSAndroid Build Coastguard Worker /** 102*4d7e907cSAndroid Build Coastguard Worker * Load a key phrase sound model. Once loaded, recognition of this model can 103*4d7e907cSAndroid Build Coastguard Worker * be started and stopped. Only one active recognition per model at a time. 104*4d7e907cSAndroid Build Coastguard Worker * The SoundTrigger service must handle concurrent recognition requests by 105*4d7e907cSAndroid Build Coastguard Worker * different users/applications on the same model. 106*4d7e907cSAndroid Build Coastguard Worker * The implementation returns a unique handle used by other functions 107*4d7e907cSAndroid Build Coastguard Worker * (unloadSoundModel(), startRecognition*(), etc... 108*4d7e907cSAndroid Build Coastguard Worker * 109*4d7e907cSAndroid Build Coastguard Worker * Must have the exact same semantics as loadPhraseSoundModel from 110*4d7e907cSAndroid Build Coastguard Worker * [email protected] except that the PhraseSoundModel uses shared memory 111*4d7e907cSAndroid Build Coastguard Worker * instead of data. 112*4d7e907cSAndroid Build Coastguard Worker * 113*4d7e907cSAndroid Build Coastguard Worker * @param soundModel A PhraseSoundModel structure describing the sound model 114*4d7e907cSAndroid Build Coastguard Worker * to load. 115*4d7e907cSAndroid Build Coastguard Worker * @param callback The callback interface on which the soundmodelCallback*() 116*4d7e907cSAndroid Build Coastguard Worker * method must be called upon completion. 117*4d7e907cSAndroid Build Coastguard Worker * @param cookie The value of the cookie argument passed to the completion 118*4d7e907cSAndroid Build Coastguard Worker * callback. This unique context information is assigned and 119*4d7e907cSAndroid Build Coastguard Worker * used only by the framework. 120*4d7e907cSAndroid Build Coastguard Worker * @return retval Operation completion status: 0 in case of success, 121*4d7e907cSAndroid Build Coastguard Worker * -EINVAL in case of invalid sound model (e.g 0 data size), 122*4d7e907cSAndroid Build Coastguard Worker * -ENOSYS in case of invalid operation (e.g max number of models 123*4d7e907cSAndroid Build Coastguard Worker * exceeded), 124*4d7e907cSAndroid Build Coastguard Worker * -ENOMEM in case of memory allocation failure, 125*4d7e907cSAndroid Build Coastguard Worker * -ENODEV in case of initialization error. 126*4d7e907cSAndroid Build Coastguard Worker * @return modelHandle A unique handle assigned by the HAL for use by the 127*4d7e907cSAndroid Build Coastguard Worker * framework when controlling activity for this sound model. 128*4d7e907cSAndroid Build Coastguard Worker */ 129*4d7e907cSAndroid Build Coastguard Worker @callflow(next={"startRecognition_2_1", "unloadSoundModel"}) 130*4d7e907cSAndroid Build Coastguard Worker loadPhraseSoundModel_2_1(PhraseSoundModel soundModel, 131*4d7e907cSAndroid Build Coastguard Worker ISoundTriggerHwCallback callback, 132*4d7e907cSAndroid Build Coastguard Worker CallbackCookie cookie) 133*4d7e907cSAndroid Build Coastguard Worker generates (int32_t retval, SoundModelHandle modelHandle); 134*4d7e907cSAndroid Build Coastguard Worker 135*4d7e907cSAndroid Build Coastguard Worker /** 136*4d7e907cSAndroid Build Coastguard Worker * Start recognition on a given model. Only one recognition active 137*4d7e907cSAndroid Build Coastguard Worker * at a time per model. Once recognition succeeds of fails, the callback 138*4d7e907cSAndroid Build Coastguard Worker * is called. 139*4d7e907cSAndroid Build Coastguard Worker * 140*4d7e907cSAndroid Build Coastguard Worker * Must have the exact same semantics as startRecognition from 141*4d7e907cSAndroid Build Coastguard Worker * [email protected] except that the RecognitionConfig uses shared memory 142*4d7e907cSAndroid Build Coastguard Worker * instead of data. 143*4d7e907cSAndroid Build Coastguard Worker * 144*4d7e907cSAndroid Build Coastguard Worker * @param modelHandle the handle of the sound model to use for recognition 145*4d7e907cSAndroid Build Coastguard Worker * @param config A RecognitionConfig structure containing attributes of the 146*4d7e907cSAndroid Build Coastguard Worker * recognition to perform 147*4d7e907cSAndroid Build Coastguard Worker * @param callback The callback interface on which the recognitionCallback() 148*4d7e907cSAndroid Build Coastguard Worker * method must be called upon recognition. 149*4d7e907cSAndroid Build Coastguard Worker * @param cookie The value of the cookie argument passed to the recognition 150*4d7e907cSAndroid Build Coastguard Worker * callback. This unique context information is assigned and 151*4d7e907cSAndroid Build Coastguard Worker * used only by the framework. 152*4d7e907cSAndroid Build Coastguard Worker * @return retval Operation completion status: 0 in case of success, 153*4d7e907cSAndroid Build Coastguard Worker * -EINVAL in case of invalid recognition attributes, 154*4d7e907cSAndroid Build Coastguard Worker * -ENOSYS in case of invalid model handle, 155*4d7e907cSAndroid Build Coastguard Worker * -ENOMEM in case of memory allocation failure, 156*4d7e907cSAndroid Build Coastguard Worker * -ENODEV in case of initialization error. 157*4d7e907cSAndroid Build Coastguard Worker */ 158*4d7e907cSAndroid Build Coastguard Worker @callflow(next={"stopRecognition", "stopAllRecognitions"}) 159*4d7e907cSAndroid Build Coastguard Worker startRecognition_2_1(SoundModelHandle modelHandle, 160*4d7e907cSAndroid Build Coastguard Worker RecognitionConfig config, 161*4d7e907cSAndroid Build Coastguard Worker ISoundTriggerHwCallback callback, 162*4d7e907cSAndroid Build Coastguard Worker CallbackCookie cookie) 163*4d7e907cSAndroid Build Coastguard Worker generates (int32_t retval); 164*4d7e907cSAndroid Build Coastguard Worker}; 165