xref: /aosp_15_r20/hardware/interfaces/soundtrigger/2.1/ISoundTriggerHw.hal (revision 4d7e907c777eeecc4c5bd7cf640a754fac206ff7)
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