aboutsummaryrefslogtreecommitdiffstats
path: root/4a-hal/4a-hal-controllers/4a-hal-controllers-alsacore-link.c
diff options
context:
space:
mode:
Diffstat (limited to '4a-hal/4a-hal-controllers/4a-hal-controllers-alsacore-link.c')
-rw-r--r--4a-hal/4a-hal-controllers/4a-hal-controllers-alsacore-link.c27
1 files changed, 23 insertions, 4 deletions
diff --git a/4a-hal/4a-hal-controllers/4a-hal-controllers-alsacore-link.c b/4a-hal/4a-hal-controllers/4a-hal-controllers-alsacore-link.c
index f360ceb..4ae5a13 100644
--- a/4a-hal/4a-hal-controllers/4a-hal-controllers-alsacore-link.c
+++ b/4a-hal/4a-hal-controllers/4a-hal-controllers-alsacore-link.c
@@ -558,10 +558,9 @@ void HalCtlsActionOnAlsaCtl(AFB_ReqT request)
return;
}
- json_object_put(previousControlValuesJ);
-
if(! json_object_is_type(requestJson, json_type_object)) {
AFB_ReqFailF(request, "request_json", "Request json is not valid '%s'", json_object_get_string(requestJson));
+ json_object_put(previousControlValuesJ);
json_object_put(normalizedPreviousControlValuesJ);
return;
}
@@ -570,11 +569,13 @@ void HalCtlsActionOnAlsaCtl(AFB_ReqT request)
AFB_ReqFailF(request,
"request_json", "Error when trying to get request value object inside request '%s'",
json_object_get_string(requestJson));
+ json_object_put(previousControlValuesJ);
json_object_put(normalizedPreviousControlValuesJ);
return;
}
- if(HalCtlsConvertJsonValues(apiHandle,
+ if((! json_object_is_type(valueJ, json_type_string)) &&
+ HalCtlsConvertJsonValues(apiHandle,
&currentAlsaCtl->ctl.alsaCtlProperties,
valueJ,
&convertedJ,
@@ -583,14 +584,32 @@ void HalCtlsActionOnAlsaCtl(AFB_ReqT request)
"request_json",
"Error when trying to convert request values '%s'",
json_object_get_string(valueJ));
+ json_object_put(previousControlValuesJ);
json_object_put(normalizedPreviousControlValuesJ);
return;
}
+ else if(json_object_is_type(valueJ, json_type_string) &&
+ HalCtlsChangePreviousValuesUsingJson(apiHandle,
+ &currentAlsaCtl->ctl.alsaCtlProperties,
+ valueJ,
+ previousControlValuesJ,
+ &convertedJ)) {
+ AFB_ReqFailF(request,
+ "previous_values",
+ "Error when trying to generate changed alsa control values (values : '%s', previous :'%s')",
+ json_object_get_string(valueJ),
+ json_object_get_string(previousControlValuesJ));
+ json_object_put(previousControlValuesJ);
+ json_object_put(normalizedPreviousControlValuesJ);
+ return;
+ }
+
+ json_object_put(previousControlValuesJ);
if(HalCtlsSetAlsaCtlValue(apiHandle, cardIdString, currentAlsaCtl->ctl.numid, convertedJ)) {
AFB_ReqFailF(request,
"alsa_control_call_error",
- "Error while trying to set value on alsa control %i, device '%s', converted '%s'",
+ "Error while trying to set value on alsa control %i, device '%s', converted message '%s'",
currentAlsaCtl->ctl.numid,
cardIdString,
json_object_get_string(convertedJ));