hal: change sequence for parse_audiocal_cfg()
We should check the parameter "cal_data" before parse_audiocal_cfg() to
avoid other parameters was deleted if it is not for set_audiocal() or
get_audiocal() .
Test: set/get parameters successfully
Bug: 145973032
Change-Id: I2bd51dc84073e5dde227e01ed2d4f379eecc73b4
Signed-off-by: justinweng <justinweng@google.com>
(cherry picked from commit 3d6259ab70032dfe71e290f05dcad638d8b0263d)
diff --git a/hal/msm8916/platform.c b/hal/msm8916/platform.c
index 235ae1f..b1ba217 100644
--- a/hal/msm8916/platform.c
+++ b/hal/msm8916/platform.c
@@ -5269,13 +5269,13 @@
goto done_key_audcal;
}
- memset(&cal, 0, sizeof(acdb_audio_cal_cfg_t));
- /* parse audio calibration keys */
- ret = parse_audiocal_cfg(parms, &cal);
-
/* handle audio calibration data now */
err = str_parms_get_str(parms, AUDIO_PARAMETER_KEY_AUD_CALDATA, value, len);
if (err >= 0) {
+ memset(&cal, 0, sizeof(acdb_audio_cal_cfg_t));
+ /* parse audio calibration keys */
+ ret = parse_audiocal_cfg(parms, &cal);
+
str_parms_del(parms, AUDIO_PARAMETER_KEY_AUD_CALDATA);
dlen = strlen(value);
if(dlen <= 0) {
@@ -5604,15 +5604,16 @@
goto done;
}
- memset(&cal, 0, sizeof(acdb_audio_cal_cfg_t));
- /* parse audiocal configuration keys */
- ret = parse_audiocal_cfg(query, &cal);
- if(ret == 0) {
- /* No calibration keys found */
- goto done;
- }
err = str_parms_get_str(query, AUDIO_PARAMETER_KEY_AUD_CALDATA, value, sizeof(value));
if (err >= 0) {
+ memset(&cal, 0, sizeof(acdb_audio_cal_cfg_t));
+ /* parse audiocal configuration keys */
+ ret = parse_audiocal_cfg(query, &cal);
+ if (ret == 0) {
+ /* No calibration keys found */
+ goto done;
+ }
+
str_parms_del(query, AUDIO_PARAMETER_KEY_AUD_CALDATA);
} else {
goto done;
diff --git a/hal/msm8974/platform.c b/hal/msm8974/platform.c
index 8ee36f5..e624250 100644
--- a/hal/msm8974/platform.c
+++ b/hal/msm8974/platform.c
@@ -7718,13 +7718,13 @@
goto done_key_audcal;
}
- memset(&cal, 0, sizeof(acdb_audio_cal_cfg_t));
- /* parse audio calibration keys */
- ret = parse_audiocal_cfg(parms, &cal);
-
/* handle audio calibration data now */
err = str_parms_get_str(parms, AUDIO_PARAMETER_KEY_AUD_CALDATA, value, len);
if (err >= 0) {
+ memset(&cal, 0, sizeof(acdb_audio_cal_cfg_t));
+ /* parse audio calibration keys */
+ ret = parse_audiocal_cfg(parms, &cal);
+
str_parms_del(parms, AUDIO_PARAMETER_KEY_AUD_CALDATA);
dlen = strlen(value);
if(dlen <= 0) {
@@ -8318,15 +8318,18 @@
goto done;
}
+ // init cal
memset(&cal, 0, sizeof(acdb_audio_cal_cfg_t));
- /* parse audiocal configuration keys */
- ret = parse_audiocal_cfg(query, &cal);
- if(ret == 0) {
- /* No calibration keys found */
- goto done;
- }
+
err = str_parms_get_str(query, AUDIO_PARAMETER_KEY_AUD_CALDATA, value, sizeof(value));
if (err >= 0) {
+ /* parse audiocal configuration keys */
+ ret = parse_audiocal_cfg(query, &cal);
+ if (ret == 0) {
+ /* No calibration keys found */
+ goto done;
+ }
+
str_parms_del(query, AUDIO_PARAMETER_KEY_AUD_CALDATA);
} else {
goto done;