summaryrefslogtreecommitdiffstats
path: root/HAL-afb/HAL-interface/hal-volume.c
diff options
context:
space:
mode:
authorfulup <fulup.arfoll@iot.bzh>2017-08-03 12:00:41 +0200
committerfulup <fulup.arfoll@iot.bzh>2017-08-03 12:00:41 +0200
commit070ccac33d65c651c972dfab9c6148e43d8d5d8e (patch)
tree07b79faec9bcaacf14dcc7f8ed08cacf35557e7d /HAL-afb/HAL-interface/hal-volume.c
parent39384e722d9fd7d162012b682aed41b35d16d003 (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.c126
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