st-hal: fix setting user verification mode
As part of merging and deleting of multi-client sound models, setting
user verification mode of resultant model to DSP is lost. Fix the same.
Change-Id: I5e8d87bb069ef0394fa53d8def61e3dd2f65a7ba
diff --git a/st_hw_session_lsm.c b/st_hw_session_lsm.c
index 6252490..d2e673e 100644
--- a/st_hw_session_lsm.c
+++ b/st_hw_session_lsm.c
@@ -2525,8 +2525,8 @@
ALOGE("%s: Unknown recognition mode %d", __func__, recognition_mode);
goto error_exit_1;
}
- ALOGV("%s: st recogntion_mode %d, dsp det_mode %d", __func__,
- recognition_mode, det_mode.mode);
+ ALOGD("%s: st_recogntion_mode %d, det_mode %d, lab %d", __func__,
+ recognition_mode, det_mode.mode, capture_requested);
stage_idx = LSM_STAGE_INDEX_FIRST;
param_count = 0;
diff --git a/st_session.c b/st_session.c
index f9ee651..f54c999 100644
--- a/st_session.c
+++ b/st_session.c
@@ -302,6 +302,13 @@
status = -EINVAL;
goto cleanup;
}
+ if (stdev->enable_debug_dumps) {
+ ST_DBG_DECLARE(FILE *sm_fd = NULL; static int sm_cnt = 0);
+ ST_DBG_FILE_OPEN_WR(sm_fd, ST_DEBUG_DUMP_LOCATION,
+ "st_smlib_output_merged_sm", "bin", sm_cnt++);
+ ST_DBG_FILE_WRITE(sm_fd, out_model->data, out_model->size);
+ ST_DBG_FILE_CLOSE(sm_fd);
+ }
ALOGV("%s: Exit", __func__);
return 0;
@@ -375,6 +382,13 @@
merge_model.data = out_model->data;
merge_model.size = out_model->size;
}
+ if (stdev->enable_debug_dumps && out_model->data && out_model->size) {
+ ST_DBG_DECLARE(FILE *sm_fd = NULL; static int sm_cnt = 0);
+ ST_DBG_FILE_OPEN_WR(sm_fd, ST_DEBUG_DUMP_LOCATION,
+ "st_smlib_output_deleted_sm", "bin", sm_cnt++);
+ ST_DBG_FILE_WRITE(sm_fd, out_model->data, out_model->size);
+ ST_DBG_FILE_CLOSE(sm_fd);
+ }
return 0;
cleanup:
@@ -815,6 +829,7 @@
st_ses->sm_info.cf_levels;
st_ses->hw_ses_current->sthw_cfg.num_conf_levels =
st_ses->sm_info.cf_levels_size;
+ st_ses->recognition_mode = c_ses_rem->recognition_mode;
/* Delete current client model */
release_sound_model_info(&stc_ses->sm_info);
stc_ses->sm_info.sm_data = NULL;
@@ -824,7 +839,7 @@
list_for_each(node, &st_ses->clients_list) {
c_ses = node_to_item(node, st_session_t, hw_list_node);
if ((c_ses != stc_ses) && c_ses->sm_info.sm_data) {
- if (c_ses->recognition_mode == RECOGNITION_MODE_USER_IDENTIFICATION)
+ if (c_ses->recognition_mode & RECOGNITION_MODE_USER_IDENTIFICATION)
rec_mode |= RECOGNITION_MODE_USER_IDENTIFICATION;
}
}