Home | History | Annotate | Download | only in 2.0
      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