blob: 84b11c82b324b92bedb5c4732905582e83c28cd4 [file] [log] [blame]
/*
* Copyright 2016 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.0;
import android.hardware.audio.common@2.0;
interface ISoundTriggerHwCallback {
enum RecognitionStatus : uint32_t {
SUCCESS = 0,
ABORT = 1,
FAILURE = 2,
};
enum SoundModelStatus : uint32_t {
UPDATED = 0,
};
/**
* Generic recognition event sent via recognition callback
*/
struct RecognitionEvent {
/** Recognition status e.g. SUCCESS */
RecognitionStatus status;
/** Sound model type for this event. e.g SoundModelType.TYPE_KEYPHRASE */
SoundModelType type;
/** Handle of loaded sound model which triggered the event */
SoundModelHandle model;
/** It is possible to capture audio from this */
/** utterance buffered by the implementation */
bool captureAvailable;
/** Audio session ID. framework use */
int32_t captureSession;
/**
* Delay in ms between end of model detection and start of audio
* available for capture. A negative value is possible
* (e.g. if key phrase is also available for capture */
int32_t captureDelayMs;
/**
* Duration in ms of audio captured before the start of the trigger.
* 0 if none. */
int32_t capturePreambleMs;
/** The opaque data is the capture of the trigger sound */
bool triggerInData;
/**
* Audio format of either the trigger in event data or to use for
* capture of the rest of the utterance */
AudioConfig audioConfig;
/** Opaque event data */
vec<uint8_t> data;
};
/**
* Specialized recognition event for key phrase recognitions
*/
struct PhraseRecognitionEvent {
/** Common part of the recognition event */
RecognitionEvent common;
/** List of descriptors for each recognized key phrase */
vec<PhraseRecognitionExtra> phraseExtras;
};
/**
* Event sent via load sound model callback
*/
struct ModelEvent {
/** Sound model status e.g. SoundModelStatus.UPDATED */
SoundModelStatus status;
/** Loaded sound model that triggered the event */
SoundModelHandle model;
/** Opaque event data, passed transparently by the framework */
vec<uint8_t> data;
};
typedef int32_t CallbackCookie;
/**
* Callback method called by the HAL when the sound recognition triggers
* @param event A RecognitionEvent structure containing detailed results
* of the recognition triggered
* @param cookie The cookie passed by the framework when recognition was
* started (see ISoundtriggerHw.startRecognition()
*/
recognitionCallback(RecognitionEvent event, CallbackCookie cookie);
/**
* Callback method called by the HAL when the sound recognition triggers
* for a key phrase sound model.
* @param event A RecognitionEvent structure containing detailed results
* of the recognition triggered
* @param cookie The cookie passed by the framework when recognition was
* started (see ISoundtriggerHw.startRecognition()
*/
phraseRecognitionCallback(PhraseRecognitionEvent event,
CallbackCookie cookie);
/**
* Callback method called by the HAL when the sound model loading completes
* @param event A ModelEvent structure containing detailed results of the
* model loading operation
* @param cookie The cookie passed by the framework when loading was
* initiated (see ISoundtriggerHw.loadSoundModel()
*/
soundModelCallback(ModelEvent event, CallbackCookie cookie);
};