Merge "Adding sound trigger V2_2"
diff --git a/services/soundtrigger/SoundTriggerHalHidl.cpp b/services/soundtrigger/SoundTriggerHalHidl.cpp
index 1d37a8e..68d54c7 100644
--- a/services/soundtrigger/SoundTriggerHalHidl.cpp
+++ b/services/soundtrigger/SoundTriggerHalHidl.cpp
@@ -168,18 +168,23 @@
int ret;
SoundModelHandle halHandle;
sp<V2_1_ISoundTriggerHw> soundtrigger_2_1 = toService2_1(soundtrigger);
+ sp<V2_2_ISoundTriggerHw> soundtrigger_2_2 = toService2_2(soundtrigger);
if (sound_model->type == SOUND_MODEL_TYPE_KEYPHRASE) {
- if (!soundtrigger_2_1) {
- ISoundTriggerHw::PhraseSoundModel halSoundModel;
- convertPhraseSoundModelToHal(&halSoundModel, sound_model);
- AutoMutex lock(mHalLock);
- hidlReturn = soundtrigger->loadPhraseSoundModel(
- halSoundModel,
- this, modelId, [&](int32_t retval, auto res) {
- ret = retval;
- halHandle = res;
- });
- } else {
+ if (soundtrigger_2_2) {
+ V2_2_ISoundTriggerHw::PhraseSoundModel halSoundModel;
+ auto result = convertPhraseSoundModelToHal(&halSoundModel, sound_model);
+ if (result.first) {
+ AutoMutex lock(mHalLock);
+ hidlReturn = soundtrigger_2_2->loadPhraseSoundModel_2_1(
+ halSoundModel,
+ this, modelId, [&](int32_t retval, auto res) {
+ ret = retval;
+ halHandle = res;
+ });
+ } else {
+ return NO_MEMORY;
+ }
+ } else if (soundtrigger_2_1) {
V2_1_ISoundTriggerHw::PhraseSoundModel halSoundModel;
auto result = convertPhraseSoundModelToHal(&halSoundModel, sound_model);
if (result.first) {
@@ -193,18 +198,32 @@
} else {
return NO_MEMORY;
}
- }
- } else {
- if (!soundtrigger_2_1) {
- ISoundTriggerHw::SoundModel halSoundModel;
- convertSoundModelToHal(&halSoundModel, sound_model);
+ } else {
+ ISoundTriggerHw::PhraseSoundModel halSoundModel;
+ convertPhraseSoundModelToHal(&halSoundModel, sound_model);
AutoMutex lock(mHalLock);
- hidlReturn = soundtrigger->loadSoundModel(halSoundModel,
+ hidlReturn = soundtrigger->loadPhraseSoundModel(
+ halSoundModel,
this, modelId, [&](int32_t retval, auto res) {
ret = retval;
halHandle = res;
});
- } else {
+ }
+ } else {
+ if (soundtrigger_2_2) {
+ V2_2_ISoundTriggerHw::SoundModel halSoundModel;
+ auto result = convertSoundModelToHal(&halSoundModel, sound_model);
+ if (result.first) {
+ AutoMutex lock(mHalLock);
+ hidlReturn = soundtrigger_2_2->loadSoundModel_2_1(halSoundModel,
+ this, modelId, [&](int32_t retval, auto res) {
+ ret = retval;
+ halHandle = res;
+ });
+ } else {
+ return NO_MEMORY;
+ }
+ } else if (soundtrigger_2_1) {
V2_1_ISoundTriggerHw::SoundModel halSoundModel;
auto result = convertSoundModelToHal(&halSoundModel, sound_model);
if (result.first) {
@@ -217,6 +236,15 @@
} else {
return NO_MEMORY;
}
+ } else {
+ ISoundTriggerHw::SoundModel halSoundModel;
+ convertSoundModelToHal(&halSoundModel, sound_model);
+ AutoMutex lock(mHalLock);
+ hidlReturn = soundtrigger->loadSoundModel(halSoundModel,
+ this, modelId, [&](int32_t retval, auto res) {
+ ret = retval;
+ halHandle = res;
+ });
}
}
@@ -282,16 +310,20 @@
model->mRecognitionCookie = cookie;
sp<V2_1_ISoundTriggerHw> soundtrigger_2_1 = toService2_1(soundtrigger);
+ sp<V2_2_ISoundTriggerHw> soundtrigger_2_2 = toService2_2(soundtrigger);
Return<int32_t> hidlReturn(0);
- if (!soundtrigger_2_1) {
- ISoundTriggerHw::RecognitionConfig halConfig;
- convertRecognitionConfigToHal(&halConfig, config);
- {
+ if (soundtrigger_2_2) {
+ V2_2_ISoundTriggerHw::RecognitionConfig halConfig;
+ auto result = convertRecognitionConfigToHal(&halConfig, config);
+ if (result.first) {
AutoMutex lock(mHalLock);
- hidlReturn = soundtrigger->startRecognition(model->mHalHandle, halConfig, this, handle);
+ hidlReturn = soundtrigger_2_2->startRecognition_2_1(
+ model->mHalHandle, halConfig, this, handle);
+ } else {
+ return NO_MEMORY;
}
- } else {
+ } else if (soundtrigger_2_1) {
V2_1_ISoundTriggerHw::RecognitionConfig halConfig;
auto result = convertRecognitionConfigToHal(&halConfig, config);
if (result.first) {
@@ -301,6 +333,13 @@
} else {
return NO_MEMORY;
}
+ } else {
+ ISoundTriggerHw::RecognitionConfig halConfig;
+ convertRecognitionConfigToHal(&halConfig, config);
+ {
+ AutoMutex lock(mHalLock);
+ hidlReturn = soundtrigger->startRecognition(model->mHalHandle, halConfig, this, handle);
+ }
}
if (!hidlReturn.isOk()) {