diff options
Diffstat (limited to 'services/soundtrigger/SoundTriggerHwService.cpp')
-rw-r--r-- | services/soundtrigger/SoundTriggerHwService.cpp | 29 |
1 files changed, 8 insertions, 21 deletions
diff --git a/services/soundtrigger/SoundTriggerHwService.cpp b/services/soundtrigger/SoundTriggerHwService.cpp index 79e9e88d87..79150683a6 100644 --- a/services/soundtrigger/SoundTriggerHwService.cpp +++ b/services/soundtrigger/SoundTriggerHwService.cpp @@ -717,8 +717,7 @@ status_t SoundTriggerHwService::Module::stopRecognition(sound_model_handle_t han return NO_ERROR; } -status_t SoundTriggerHwService::Module::getModelState(sound_model_handle_t handle, - sp<IMemory>& eventMemory) +status_t SoundTriggerHwService::Module::getModelState(sound_model_handle_t handle) { ALOGV("getModelState() model handle %d", handle); if (mHalInterface == 0) { @@ -734,21 +733,7 @@ status_t SoundTriggerHwService::Module::getModelState(sound_model_handle_t handl return INVALID_OPERATION; } - if (model->mType != SOUND_MODEL_TYPE_GENERIC) { - return BAD_VALUE; - } - - struct sound_trigger_recognition_event* event = nullptr; - status_t status = mHalInterface->getModelState(handle, &event); - if (status == NO_ERROR) { - sp<SoundTriggerHwService> service; - service = mService.promote(); - if (service != 0) { - eventMemory = service->prepareRecognitionEvent(event); - } - free(event); - } - return status; + return mHalInterface->getModelState(handle); } void SoundTriggerHwService::Module::onCallbackEvent(const sp<CallbackEvent>& event) @@ -784,7 +769,10 @@ void SoundTriggerHwService::Module::onCallbackEvent(const sp<CallbackEvent>& eve } recognitionEvent->capture_session = model->mCaptureSession; - model->mState = Model::STATE_IDLE; + // Don't reset the model state if this recognition event is a get-state response + if (recognitionEvent->status != RECOGNITION_STATUS_GET_STATE_RESPONSE) { + model->mState = Model::STATE_IDLE; + } clients.add(model->mModuleClient); } } break; @@ -1052,8 +1040,7 @@ status_t SoundTriggerHwService::ModuleClient::stopRecognition(sound_model_handle return module->stopRecognition(handle); } -status_t SoundTriggerHwService::ModuleClient::getModelState(sound_model_handle_t handle, - sp<IMemory>& eventMemory) +status_t SoundTriggerHwService::ModuleClient::getModelState(sound_model_handle_t handle) { ALOGV("getModelState() model handle %d", handle); if (!captureHotwordAllowed(IPCThreadState::self()->getCallingPid(), @@ -1065,7 +1052,7 @@ status_t SoundTriggerHwService::ModuleClient::getModelState(sound_model_handle_t if (module == 0) { return NO_INIT; } - return module->getModelState(handle, eventMemory); + return module->getModelState(handle); } void SoundTriggerHwService::ModuleClient::setCaptureState_l(bool active) |