blob: a9796d8d4c7c0ce10c35524de96d304272acd1e4 [file] [log] [blame]
/*
* Copyright 2017 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package android.hardware.soundtrigger@2.1;
import @2.0::ISoundTriggerHw;
import @2.0::ISoundTriggerHwCallback.CallbackCookie;
import @2.0::SoundModelHandle;
import ISoundTriggerHwCallback;
/**
* SoundTrigger HAL interface. Used for hardware recognition of hotwords.
*/
interface ISoundTriggerHw extends @2.0::ISoundTriggerHw {
/**
* Base sound model descriptor. This struct is the header of a larger block
* passed to loadSoundModel_2_1() and contains the binary data of the
* sound model.
*/
struct SoundModel {
/** Sound model header. Any data contained in the 'header.data' field
* is ignored */
@2.0::ISoundTriggerHw.SoundModel header;
/** Opaque data transparent to Android framework */
memory data;
};
/**
* Specialized sound model for key phrase detection.
* Proprietary representation of key phrases in binary data must match
* information indicated by phrases field.
*/
struct PhraseSoundModel {
/** Common part of sound model descriptor */
SoundModel common;
/** List of descriptors for key phrases supported by this sound model */
vec<Phrase> phrases;
};
/**
* Configuration for sound trigger capture session passed to
* startRecognition_2_1() method.
*/
struct RecognitionConfig {
/** Configuration header. Any data contained in the 'header.data' field
* is ignored */
@2.0::ISoundTriggerHw.RecognitionConfig header;
/** Opaque capture configuration data transparent to the framework */
memory data;
};
/**
* Load a sound model. Once loaded, recognition of this model can be
* started and stopped. Only one active recognition per model at a time.
* The SoundTrigger service must handle concurrent recognition requests by
* different users/applications on the same model.
* The implementation returns a unique handle used by other functions
* (unloadSoundModel(), startRecognition*(), etc...
*
* Must have the exact same semantics as loadSoundModel from
* ISoundTriggerHw@2.0 except that the SoundModel uses shared memory
* instead of data.
*
* @param soundModel A SoundModel structure describing the sound model
* to load.
* @param callback The callback interface on which the soundmodelCallback*()
* method must be called upon completion.
* @param cookie The value of the cookie argument passed to the completion
* callback. This unique context information is assigned and
* used only by the framework.
* @return retval Operation completion status: 0 in case of success,
* -EINVAL in case of invalid sound model (e.g 0 data size),
* -ENOSYS in case of invalid operation (e.g max number of models
* exceeded),
* -ENOMEM in case of memory allocation failure,
* -ENODEV in case of initialization error.
* @return modelHandle A unique handle assigned by the HAL for use by the
* framework when controlling activity for this sound model.
*/
@callflow(next={"startRecognition_2_1", "unloadSoundModel"})
loadSoundModel_2_1(SoundModel soundModel,
ISoundTriggerHwCallback callback,
CallbackCookie cookie)
generates (int32_t retval, SoundModelHandle modelHandle);
/**
* Load a key phrase sound model. Once loaded, recognition of this model can
* be started and stopped. Only one active recognition per model at a time.
* The SoundTrigger service must handle concurrent recognition requests by
* different users/applications on the same model.
* The implementation returns a unique handle used by other functions
* (unloadSoundModel(), startRecognition*(), etc...
*
* Must have the exact same semantics as loadPhraseSoundModel from
* ISoundTriggerHw@2.0 except that the PhraseSoundModel uses shared memory
* instead of data.
*
* @param soundModel A PhraseSoundModel structure describing the sound model
* to load.
* @param callback The callback interface on which the soundmodelCallback*()
* method must be called upon completion.
* @param cookie The value of the cookie argument passed to the completion
* callback. This unique context information is assigned and
* used only by the framework.
* @return retval Operation completion status: 0 in case of success,
* -EINVAL in case of invalid sound model (e.g 0 data size),
* -ENOSYS in case of invalid operation (e.g max number of models
* exceeded),
* -ENOMEM in case of memory allocation failure,
* -ENODEV in case of initialization error.
* @return modelHandle A unique handle assigned by the HAL for use by the
* framework when controlling activity for this sound model.
*/
@callflow(next={"startRecognition_2_1", "unloadSoundModel"})
loadPhraseSoundModel_2_1(PhraseSoundModel soundModel,
ISoundTriggerHwCallback callback,
CallbackCookie cookie)
generates (int32_t retval, SoundModelHandle modelHandle);
/**
* Start recognition on a given model. Only one recognition active
* at a time per model. Once recognition succeeds of fails, the callback
* is called.
*
* Must have the exact same semantics as startRecognition from
* ISoundTriggerHw@2.0 except that the RecognitionConfig uses shared memory
* instead of data.
*
* @param modelHandle the handle of the sound model to use for recognition
* @param config A RecognitionConfig structure containing attributes of the
* recognition to perform
* @param callback The callback interface on which the recognitionCallback()
* method must be called upon recognition.
* @param cookie The value of the cookie argument passed to the recognition
* callback. This unique context information is assigned and
* used only by the framework.
* @return retval Operation completion status: 0 in case of success,
* -EINVAL in case of invalid recognition attributes,
* -ENOSYS in case of invalid model handle,
* -ENOMEM in case of memory allocation failure,
* -ENODEV in case of initialization error.
*/
@callflow(next={"stopRecognition", "stopAllRecognitions"})
startRecognition_2_1(SoundModelHandle modelHandle,
RecognitionConfig config,
ISoundTriggerHwCallback callback,
CallbackCookie cookie)
generates (int32_t retval);
};