• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
17package android.hardware.soundtrigger@2.0;
18
19import android.hardware.audio.common@2.0;
20
21interface 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