diff options
author | fulup <fulup.arfoll@iot.bzh> | 2017-08-03 12:00:41 +0200 |
---|---|---|
committer | fulup <fulup.arfoll@iot.bzh> | 2017-08-03 12:00:41 +0200 |
commit | 070ccac33d65c651c972dfab9c6148e43d8d5d8e (patch) | |
tree | 07b79faec9bcaacf14dcc7f8ed08cacf35557e7d /HAL-afb/HAL-interface/hal-volume.c | |
parent | 39384e722d9fd7d162012b682aed41b35d16d003 (diff) |
Initial Working Version on Alsa Policy-Policy-Hook
Diffstat (limited to 'HAL-afb/HAL-interface/hal-volume.c')
-rw-r--r-- | HAL-afb/HAL-interface/hal-volume.c | 126 |
1 files changed, 63 insertions, 63 deletions
diff --git a/HAL-afb/HAL-interface/hal-volume.c b/HAL-afb/HAL-interface/hal-volume.c index 593b74c..ad2b9a1 100644 --- a/HAL-afb/HAL-interface/hal-volume.c +++ b/HAL-afb/HAL-interface/hal-volume.c @@ -25,126 +25,126 @@ #include <math.h> #include "hal-interface.h" - -typedef enum { - NORMALIZE_NONE=0, - NORMALIZE_DB_LINEAR, - NORMALIZE_DB_MATH, - NORMALIZE_LINEAR, +typedef enum { + NORMALIZE_NONE = 0, + NORMALIZE_DB_LINEAR, + NORMALIZE_DB_MATH, + NORMALIZE_LINEAR, } enumRandeModeDB_T; // Return Value express from 0-100% -STATIC int dbNormalizeVal (enumRandeModeDB_T normaliseMode, const alsaHalDBscaleT *dbscale, int value) { + +STATIC int dbNormalizeVal(enumRandeModeDB_T normaliseMode, const alsaHalDBscaleT *dbscale, int value) { double normalized, min_norm; // To get real DB from TLV DB values should be divided by 100 switch (normaliseMode) { case NORMALIZE_DB_LINEAR: - normalized = ((double)(value-dbscale->min)/(double)(dbscale->max-dbscale->min)); + normalized = ((double) (value - dbscale->min) / (double) (dbscale->max - dbscale->min)); break; - - case NORMALIZE_DB_MATH: - normalized = exp10((double)(value - dbscale->max) / 6000.0); + + case NORMALIZE_DB_MATH: + normalized = exp10((double) (value - dbscale->max) / 6000.0); if (dbscale->min != SND_CTL_TLV_DB_GAIN_MUTE) { - min_norm = exp10((double)(dbscale->min - dbscale->max) / 20); - normalized = (normalized - min_norm) / (1 - min_norm); + min_norm = exp10((double) (dbscale->min - dbscale->max) / 20); + normalized = (normalized - min_norm) / (1 - min_norm); } - + break; - + default: - normalized=0; + normalized = 0; } - - return (int)round(normalized*100); + + return (int) round(normalized * 100); } // HAL normalise volume values to 0-100% -PUBLIC json_object *volumeNormalise(ActionSetGetT action, const alsaHalCtlMapT *halCtls, json_object *valuesJ) { + +PUBLIC json_object *volumeNormalise(ActionSetGetT action, const alsaHalCtlMapT *halCtls, json_object *valuesJ) { enumRandeModeDB_T useNormalizeDB; int length; // If Integer look for DBscale if (halCtls->type == SND_CTL_ELEM_TYPE_INTEGER) { - + // If not valid db_scale let's use raw_scale if (!halCtls->dbscale || (halCtls->dbscale->min >= halCtls->dbscale->max)) { - - // dbscale is invalid let's try raw range - if (halCtls->minval >= halCtls->maxval) goto ExitOnError; - - // Use Raw Scale Model - useNormalizeDB= NORMALIZE_LINEAR; - + + // dbscale is invalid let's try raw range + if (halCtls->minval >= halCtls->maxval) goto ExitOnError; + + // Use Raw Scale Model + useNormalizeDB = NORMALIZE_LINEAR; + } else { // db_scale looks OK let's use it - if ((halCtls->dbscale->max - halCtls->dbscale->min) <= MAX_LINEAR_DB_SCALE * 100) useNormalizeDB= NORMALIZE_DB_LINEAR; + if ((halCtls->dbscale->max - halCtls->dbscale->min) <= MAX_LINEAR_DB_SCALE * 100) useNormalizeDB = NORMALIZE_DB_LINEAR; else useNormalizeDB = NORMALIZE_LINEAR; // Fulup not sure how to handle this useNormalizeDB=NORMALIZE_DB_MATH; } - } else useNormalizeDB= NORMALIZE_NONE; - - + } else useNormalizeDB = NORMALIZE_NONE; + + // loop on values to normalise - enum json_type jtype=json_object_get_type(valuesJ); - if (jtype == json_type_array) length = json_object_array_length(valuesJ); + enum json_type jtype = json_object_get_type(valuesJ); + if (jtype == json_type_array) length = json_object_array_length(valuesJ); else length = 1; - - json_object *normalisedJ= json_object_new_array(); - for (int idx=0; idx < length; idx++) { + + json_object *normalisedJ = json_object_new_array(); + for (int idx = 0; idx < length; idx++) { int value; - + if (jtype == json_type_array) { - json_object *valueJ = json_object_array_get_idx (valuesJ, idx); + json_object *valueJ = json_object_array_get_idx(valuesJ, idx); value = json_object_get_int(valueJ); } else { value = json_object_get_int(valuesJ); } - + // If Integer scale to 0/100 if (halCtls->type == SND_CTL_ELEM_TYPE_INTEGER) { - + switch (action) { - + case ACTION_GET: - switch (useNormalizeDB) { + switch (useNormalizeDB) { case NORMALIZE_LINEAR: - value = 100* (value - halCtls->minval) / (halCtls->maxval - halCtls->minval); + value = 100 * (value - halCtls->minval) / (halCtls->maxval - halCtls->minval); break; case NORMALIZE_DB_MATH: //ToBeDone - value = dbNormalizeVal (useNormalizeDB, halCtls->dbscale, value); + value = dbNormalizeVal(useNormalizeDB, halCtls->dbscale, value); break; - case NORMALIZE_NONE: + case NORMALIZE_NONE: default: value = value; } break; - - case ACTION_SET: - switch (useNormalizeDB) { + + case ACTION_SET: + switch (useNormalizeDB) { case NORMALIZE_LINEAR: - value = (value * (halCtls->maxval - halCtls->minval))/100; + value = (value * (halCtls->maxval - halCtls->minval)) / 100; break; case NORMALIZE_DB_MATH: //ToBeDone - value = dbNormalizeVal (useNormalizeDB, halCtls->dbscale, value); + value = dbNormalizeVal(useNormalizeDB, halCtls->dbscale, value); break; - case NORMALIZE_NONE: + case NORMALIZE_NONE: default: value = value; } break; - - default: - AFB_NOTICE ("volumeNormalise: invalid action value=%d", (int)action); - goto ExitOnError; + + default: + AFB_NOTICE("volumeNormalise: invalid action value=%d", (int) action); + goto ExitOnError; } - } - - json_object_array_add(normalisedJ, json_object_new_int(value)); + } + + json_object_array_add(normalisedJ, json_object_new_int(value)); } - + return (normalisedJ); - - ExitOnError: - return NULL; + +ExitOnError: + return NULL; } -
\ No newline at end of file |