diff options
author | Jonathan Aillet <jonathan.aillet@iot.bzh> | 2019-08-05 16:55:13 +0200 |
---|---|---|
committer | Jonathan Aillet <jonathan.aillet@iot.bzh> | 2019-08-12 12:23:11 +0200 |
commit | 59da9b4952b9c8852658aa27eb23992769d6b05c (patch) | |
tree | 6b2de6c401f59ede9c7c8bd212e83595b4443919 | |
parent | 8c08ae193531b6f9c86f58764af598016b696260 (diff) |
Create 'all_streams' verb at binding startup
Create 'all_streams' verb at binding startup, that way,
it will always be created.
Generate a request fail when a call is done when no streams are created.
BUG-AGL: SPEC-2733
Change-Id: I1b7ec3b8ed0fcd617e4a016e455beb447d233c82
Signed-off-by: Jonathan Aillet <jonathan.aillet@iot.bzh>
-rw-r--r-- | lib/4a-hal-utilities/4a-hal-utilities-hal-streams-handler.c | 10 | ||||
-rw-r--r-- | src/4a-internals-hal/4a-internals-hal-api-loader.c | 2 | ||||
-rw-r--r-- | src/4a-internals-hal/4a-internals-hal-mixer-link.c | 15 |
3 files changed, 7 insertions, 20 deletions
diff --git a/lib/4a-hal-utilities/4a-hal-utilities-hal-streams-handler.c b/lib/4a-hal-utilities/4a-hal-utilities-hal-streams-handler.c index 7b5707c..ee1432f 100644 --- a/lib/4a-hal-utilities/4a-hal-utilities-hal-streams-handler.c +++ b/lib/4a-hal-utilities/4a-hal-utilities-hal-streams-handler.c @@ -131,7 +131,7 @@ void HalUtlActionOnMixer(afb_req_t request, enum ActionOnMixerType actionType) { char *apiToCall; - struct cds_list_head *streamsDataListHead = NULL; + struct cds_list_head *streamsDataListHead; afb_api_t apiHandle; CtlConfigT *ctrlConfig; @@ -193,7 +193,7 @@ void HalUtlActionOnMixer(afb_req_t request, enum ActionOnMixerType actionType) case ACTION_ON_MIXER_STREAM: currentMixerData = (struct InternalHalMixerData *) afb_req_get_vcbdata(request); if(! currentMixerData) { - afb_req_fail(request, "hal_call_data", "Can't get stream to call data"); + afb_req_fail(request, "stream_call_data", "Can't get stream to call data"); return; } @@ -222,9 +222,9 @@ void HalUtlActionOnMixer(afb_req_t request, enum ActionOnMixerType actionType) break; case ACTION_ON_MIXER_ALL_STREAM: - streamsDataListHead = (struct cds_list_head *) afb_req_get_vcbdata(request); - if(! streamsDataListHead) { - afb_req_fail(request, "hal_call_data", "Can't get stream list data"); + streamsDataListHead = ¤tHalData->internalHalData->streamsDataListHead; + if(cds_list_empty(streamsDataListHead)) { + afb_req_fail(request, "streams_call_data", "Stream list is empty"); return; } diff --git a/src/4a-internals-hal/4a-internals-hal-api-loader.c b/src/4a-internals-hal/4a-internals-hal-api-loader.c index 71779d7..8899f2c 100644 --- a/src/4a-internals-hal/4a-internals-hal-api-loader.c +++ b/src/4a-internals-hal/4a-internals-hal-api-loader.c @@ -28,6 +28,7 @@ #include <ctl-config.h> #include "4a-hal-utilities-hal-api-handler.h" +#include "4a-hal-utilities-hal-streams-handler.h" #include "4a-internals-hal-api-loader.h" #include "4a-internals-hal-alsacore-link.h" @@ -62,6 +63,7 @@ static afb_verb_t InternalHalApiStaticVerbs[] = { .verb = "info", .callback = InternalHalInfo, .info = "List available streams/controls for this api" }, { .verb = "subscribe", .callback = InternalHalSubscribe, .info = "Subscribe to event(s) for values changes (streams/controls) for this api" }, { .verb = "unsubscribe", .callback = InternalHalUnsubscribe, .info = "Unsubscribe to event(s) for values changes (streams/controls) for this api" }, + { .verb = HAL_ALL_STREAMS_VERB, .callback = HalUtlActionOnAllStream, .info = "Send a stream action on all streams" }, { .verb = NULL } // Marker for end of the array }; diff --git a/src/4a-internals-hal/4a-internals-hal-mixer-link.c b/src/4a-internals-hal/4a-internals-hal-mixer-link.c index 42b64d7..96e5552 100644 --- a/src/4a-internals-hal/4a-internals-hal-mixer-link.c +++ b/src/4a-internals-hal/4a-internals-hal-mixer-link.c @@ -133,21 +133,6 @@ int InternalHalHandleMixerAttachResponse(afb_api_t apiHandle, struct InternalHal } } - if(cds_list_empty(¤tHalSpecificData->streamsDataListHead)) { - AFB_API_WARNING(apiHandle, "No stream detected in mixer response, %s verb won't be created", HAL_ALL_STREAMS_VERB); - } - else if(afb_api_add_verb(apiHandle, - HAL_ALL_STREAMS_VERB, - "Send a stream action on all streams", - HalUtlActionOnAllStream, - (void *) ¤tHalSpecificData->streamsDataListHead, - NULL, - 0, - 0)) { - AFB_API_ERROR(apiHandle, "Error while creating verb for all streams : '%s'", HAL_ALL_STREAMS_VERB); - return -4; - } - return 0; } |