Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 88a1999c authored by Michael Dooley's avatar Michael Dooley Committed by Android (Google) Code Review
Browse files

Merge "Adding sound trigger V2_2"

parents 3903e9f5 0415a846
Loading
Loading
Loading
Loading
+63 −24
Original line number Diff line number Diff line
@@ -168,18 +168,23 @@ int SoundTriggerHalHidl::loadSoundModel(struct sound_trigger_sound_model *sound_
    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);
        if (soundtrigger_2_2) {
            V2_2_ISoundTriggerHw::PhraseSoundModel halSoundModel;
            auto result = convertPhraseSoundModelToHal(&halSoundModel, sound_model);
            if (result.first) {
                AutoMutex lock(mHalLock);
            hidlReturn = soundtrigger->loadPhraseSoundModel(
                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 @@ int SoundTriggerHalHidl::loadSoundModel(struct sound_trigger_sound_model *sound_
            } else {
                return NO_MEMORY;
            }
        } else {
            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_1) {
            ISoundTriggerHw::SoundModel halSoundModel;
            convertSoundModelToHal(&halSoundModel, sound_model);
        if (soundtrigger_2_2) {
            V2_2_ISoundTriggerHw::SoundModel halSoundModel;
            auto result = convertSoundModelToHal(&halSoundModel, sound_model);
            if (result.first) {
                AutoMutex lock(mHalLock);
            hidlReturn = soundtrigger->loadSoundModel(halSoundModel,
                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 @@ int SoundTriggerHalHidl::loadSoundModel(struct sound_trigger_sound_model *sound_
            } 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 @@ int SoundTriggerHalHidl::startRecognition(sound_model_handle_t handle,
    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 if (soundtrigger_2_1) {
        V2_1_ISoundTriggerHw::RecognitionConfig halConfig;
        auto result = convertRecognitionConfigToHal(&halConfig, config);
        if (result.first) {
@@ -301,6 +333,13 @@ int SoundTriggerHalHidl::startRecognition(sound_model_handle_t handle,
        } 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()) {