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

Commit 5f6eeaae authored by justinweng's avatar justinweng Committed by George Gao
Browse files

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: default avatarjustinweng <justinweng@google.com>
(cherry picked from commit 3d6259ab70032dfe71e290f05dcad638d8b0263d)
parent 5c2517f3
Loading
Loading
Loading
Loading
+12 −11
Original line number Diff line number Diff line
@@ -5269,13 +5269,13 @@ static void set_audiocal(void *platform, struct str_parms *parms, char *value, i
        goto done_key_audcal;
    }

    /* 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);

    /* handle audio calibration data now */
    err = str_parms_get_str(parms, AUDIO_PARAMETER_KEY_AUD_CALDATA, value, len);
    if (err >= 0) {
        str_parms_del(parms, AUDIO_PARAMETER_KEY_AUD_CALDATA);
        dlen = strlen(value);
        if(dlen <= 0) {
@@ -5604,6 +5604,8 @@ static void get_audiocal(void *platform, void *keys, void *pReply) {
        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);
@@ -5611,8 +5613,7 @@ static void get_audiocal(void *platform, void *keys, void *pReply) {
            /* No calibration keys found */
            goto done;
        }
    err = str_parms_get_str(query, AUDIO_PARAMETER_KEY_AUD_CALDATA, value, sizeof(value));
    if (err >= 0) {

        str_parms_del(query, AUDIO_PARAMETER_KEY_AUD_CALDATA);
    } else {
        goto done;
+13 −10
Original line number Diff line number Diff line
@@ -7718,13 +7718,13 @@ static void set_audiocal(void *platform, struct str_parms *parms, char *value, i
        goto done_key_audcal;
    }

    /* 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);

    /* handle audio calibration data now */
    err = str_parms_get_str(parms, AUDIO_PARAMETER_KEY_AUD_CALDATA, value, len);
    if (err >= 0) {
        str_parms_del(parms, AUDIO_PARAMETER_KEY_AUD_CALDATA);
        dlen = strlen(value);
        if(dlen <= 0) {
@@ -8318,15 +8318,18 @@ static void get_audiocal(void *platform, void *keys, void *pReply) {
        goto done;
    }

    // init cal
    memset(&cal, 0, sizeof(acdb_audio_cal_cfg_t));

    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;
        }
    err = str_parms_get_str(query, AUDIO_PARAMETER_KEY_AUD_CALDATA, value, sizeof(value));
    if (err >= 0) {

        str_parms_del(query, AUDIO_PARAMETER_KEY_AUD_CALDATA);
    } else {
        goto done;