summaryrefslogtreecommitdiffstats
path: root/plugins/alsa/alsa-api-mixer.c
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/alsa/alsa-api-mixer.c')
-rw-r--r--plugins/alsa/alsa-api-mixer.c56
1 files changed, 42 insertions, 14 deletions
diff --git a/plugins/alsa/alsa-api-mixer.c b/plugins/alsa/alsa-api-mixer.c
index 30f47a2..407b2c0 100644
--- a/plugins/alsa/alsa-api-mixer.c
+++ b/plugins/alsa/alsa-api-mixer.c
@@ -107,7 +107,6 @@ STATIC json_object * MixerInfoStreams(SoftMixerT *mixer, json_object *streamsJ,
// list every existing stream
responseJ = json_object_new_array();
for (int idx = 0; streams[idx]; idx++) {
-
valueJ = MixerInfoOneStream(streams[idx], verbose);
json_object_array_add(responseJ, valueJ);
}
@@ -125,7 +124,9 @@ STATIC json_object * MixerInfoStreams(SoftMixerT *mixer, json_object *streamsJ,
case json_type_object:
error = wrap_json_unpack(streamsJ, "{ss}", "uid", &key);
if (error) {
- AFB_ApiError(mixer->api, "MixerInfoStreams: missing 'uid' request streamJ=%s error=%s position=%d", json_object_get_string(streamsJ), wrap_json_get_error_string(error), wrap_json_get_error_position(error));
+ AFB_ApiError(mixer->api,
+ "%s: missing 'uid' request streamJ=%s error=%s position=%d",
+ __func__, json_object_get_string(streamsJ), wrap_json_get_error_string(error), wrap_json_get_error_position(error));
goto OnErrorExit;
}
for (int idx = 0; streams[idx]; idx++) {
@@ -142,7 +143,9 @@ STATIC json_object * MixerInfoStreams(SoftMixerT *mixer, json_object *streamsJ,
valueJ = MixerInfoStreams(mixer, streamJ, verbose);
if (!valueJ) {
- AFB_ApiError(mixer->api, "MixerInfoStreams: fail to find stream=%s", json_object_get_string(streamsJ));
+ AFB_ApiError(mixer->api,
+ "%s: fail to find stream=%s",
+ __func__, json_object_get_string(streamsJ));
goto OnErrorExit;
}
json_object_array_add(responseJ, valueJ);
@@ -321,7 +324,9 @@ STATIC json_object *MixerInfoZones(SoftMixerT *mixer, json_object *zonesJ, int v
case json_type_object:
error = wrap_json_unpack(zonesJ, "{ss}", "uid", &key);
if (error) {
- AFB_ApiError(mixer->api, "MixerInfoZones: missing 'uid' request zoneJ=%s error=%s position=%d", json_object_get_string(zonesJ), wrap_json_get_error_string(error), wrap_json_get_error_position(error));
+ AFB_ApiError(mixer->api,
+ "%s: missing 'uid' request zoneJ=%s error=%s position=%d",
+ __func__ ,json_object_get_string(zonesJ), wrap_json_get_error_string(error), wrap_json_get_error_position(error));
goto OnErrorExit;
}
for (int idx = 0; zones[idx]; idx++) {
@@ -372,6 +377,7 @@ STATIC json_object *MixerInfoOnePcm(AlsaSndPcmT *pcm, int verbose) {
,"device", pcm->sndcard->cid.device
,"subdev", pcm->sndcard->cid.subdev
);
+
wrap_json_pack(&alsaJ, "{ss,ss,so}"
, "volume", pcm->volume
, "mute", pcm->mute
@@ -395,7 +401,6 @@ STATIC json_object *MixerInfoPcms(SoftMixerT *mixer, json_object *pcmsJ, snd_pcm
AlsaSndPcmT **pcms;
switch (direction) {
-
case SND_PCM_STREAM_PLAYBACK:
pcms = mixer->sinks;
break;
@@ -408,7 +413,6 @@ STATIC json_object *MixerInfoPcms(SoftMixerT *mixer, json_object *pcmsJ, snd_pcm
goto OnErrorExit;
}
-
switch (json_object_get_type(pcmsJ)) {
case json_type_null:
@@ -434,7 +438,9 @@ STATIC json_object *MixerInfoPcms(SoftMixerT *mixer, json_object *pcmsJ, snd_pcm
case json_type_object:
error = wrap_json_unpack(pcmsJ, "{ss}", "uid", &key);
if (error) {
- AFB_ApiError(mixer->api, "MixerInfoPcms: missing 'uid' request pcmJ=%s error=%s position=%d", json_object_get_string(pcmsJ), wrap_json_get_error_string(error), wrap_json_get_error_position(error));
+ AFB_ApiError(mixer->api,
+ "%s: missing 'uid' request pcmJ=%s error=%s position=%d",
+ __func__, json_object_get_string(pcmsJ), wrap_json_get_error_string(error), wrap_json_get_error_position(error));
goto OnErrorExit;
}
for (int idx = 0; pcms[idx]; idx++) {
@@ -451,7 +457,8 @@ STATIC json_object *MixerInfoPcms(SoftMixerT *mixer, json_object *pcmsJ, snd_pcm
valueJ = MixerInfoPcms(mixer, pcmJ, direction, verbose);
if (!valueJ) {
- AFB_ApiError(mixer->api, "MixerInfoPcms: fail to find playback=%s", json_object_get_string(pcmsJ));
+ AFB_ApiError(mixer->api, "%s: fail to find %s=%s",
+ __func__, direction==SND_PCM_STREAM_PLAYBACK?"playback":"capture", json_object_get_string(pcmJ));
goto OnErrorExit;
}
json_object_array_add(responseJ, valueJ);
@@ -459,7 +466,9 @@ STATIC json_object *MixerInfoPcms(SoftMixerT *mixer, json_object *pcmsJ, snd_pcm
break;
default:
- AFB_ApiError(mixer->api, "MixerInfoPcms: unsupported json type pcmsJ=%s", json_object_get_string(pcmsJ));
+ AFB_ApiError(mixer->api,
+ "%s: unsupported json type pcmsJ=%s",
+ __func__, json_object_get_string(pcmsJ));
goto OnErrorExit;
}
@@ -519,7 +528,6 @@ STATIC void MixerInfoAction(AFB_ReqT request, json_object * argsJ) {
json_object_object_add(responseJ, "captures", resultJ);
}
-
AFB_ReqSuccess(request, responseJ, NULL);
return;
}
@@ -549,15 +557,22 @@ STATIC void MixerAttachVerb(AFB_ReqT request) {
, "streams", &streamsJ
);
if (error) {
- AFB_ReqFailF(request, "invalid-syntax", "mixer=%s missing 'uid|ramps|playbacks|captures|zones|streams' error=%s args=%s", mixer->uid, wrap_json_get_error_string(error), json_object_get_string(argsJ));
+ AFB_ReqFailF(request,
+ "invalid-syntax",
+ "mixer=%s missing 'uid|ramps|playbacks|captures|zones|streams' error=%s args=%s",
+ mixer->uid, wrap_json_get_error_string(error), json_object_get_string(argsJ));
goto OnErrorExit;
}
+ AFB_ApiInfo(mixer->api, "%s set LOOPS", __func__);
+
if (loopsJ) {
error = ApiLoopAttach(mixer, request, uid, loopsJ);
if (error) goto OnErrorExit;
}
+ AFB_ApiInfo(mixer->api, "%s set PLAYBACK", __func__);
+
if (playbacksJ) {
error = ApiSinkAttach(mixer, request, uid, playbacksJ);
if (error) goto OnErrorExit;
@@ -566,14 +581,21 @@ STATIC void MixerAttachVerb(AFB_ReqT request) {
json_object_object_add(responseJ, "playbacks", resultJ);
}
+ AFB_ApiInfo(mixer->api, "%s set CAPTURE", __func__);
+
if (capturesJ) {
error = ApiSourceAttach(mixer, request, uid, capturesJ);
- if (error) goto OnErrorExit;
+ if (error) {
+ AFB_ApiError(mixer->api,"%s: source attach failed", __func__);
+ goto OnErrorExit;
+ }
json_object *resultJ = MixerInfoPcms(mixer, capturesJ, SND_PCM_STREAM_CAPTURE, 0);
json_object_object_add(responseJ, "captures", resultJ);
}
+ AFB_ApiInfo(mixer->api, "%s set ZONES", __func__);
+
if (zonesJ) {
error = ApiZoneAttach(mixer, request, uid, zonesJ);
if (error) goto OnErrorExit;
@@ -582,6 +604,8 @@ STATIC void MixerAttachVerb(AFB_ReqT request) {
json_object_object_add(responseJ, "zone", resultJ);
}
+ AFB_ApiInfo(mixer->api, "%s set RAMPS", __func__);
+
if (rampsJ) {
error = ApiRampAttach(mixer, request, uid, rampsJ);
if (error) goto OnErrorExit;
@@ -590,6 +614,8 @@ STATIC void MixerAttachVerb(AFB_ReqT request) {
json_object_object_add(responseJ, "ramps", resultJ);
}
+ AFB_ApiInfo(mixer->api,"%s set STREAMS", __func__);
+
if (streamsJ) {
error = ApiStreamAttach(mixer, request, uid, prefix, streamsJ);
if (error) goto OnErrorExit;
@@ -598,9 +624,10 @@ STATIC void MixerAttachVerb(AFB_ReqT request) {
json_object_object_add(responseJ, "streams", resultJ);
}
- AFB_ApiNotice(mixer->api, "responseJ=%s\n", json_object_get_string(responseJ));
+ AFB_ApiNotice(mixer->api, "%s responseJ=%s\n", __func__, json_object_get_string(responseJ));
AFB_ReqSuccess(request, responseJ, NULL);
+ AFB_ApiInfo(mixer->api,"%s DONE\n", __func__);
return;
OnErrorExit:
@@ -610,6 +637,7 @@ OnErrorExit:
STATIC void MixerPingVerb(AFB_ReqT request) {
static int count = 0;
count++;
+
AFB_ReqInfo(request, "MixerAttachVerb: Controller:ping count=%d\n", count);
AFB_ReqSuccess(request, json_object_new_int(count), NULL);
@@ -749,4 +777,4 @@ CTLP_CAPI(MixerCreate, source, argsJ, responseJ) {
OnErrorExit:
return -1;
-} \ No newline at end of file
+}