From 957ccad167159cecf6fa7e33c75ec9692ce6af29 Mon Sep 17 00:00:00 2001 From: Jonathan Aillet Date: Sat, 9 Jun 2018 17:49:51 +0200 Subject: Add device id when hal metadata are asked Add device id to response when hal metadata are asked (with verb 'loaded'). Also handle this metadata when an external hal is registered (verb 'loaded'). Change-Id: I25fafce13c8a215ed5991cfee2a399d8d6631c47 Signed-off-by: Jonathan Aillet --- 4a-hal/4a-hal-manager/4a-hal-manager-cb.c | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/4a-hal/4a-hal-manager/4a-hal-manager-cb.c b/4a-hal/4a-hal-manager/4a-hal-manager-cb.c index bea1eda..cdb50b7 100644 --- a/4a-hal/4a-hal-manager/4a-hal-manager-cb.c +++ b/4a-hal/4a-hal-manager/4a-hal-manager-cb.c @@ -64,6 +64,8 @@ void HalMgrLoaded(AFB_ReqT request) int requestJsonErr, requestOptionValue; uint64_t cpt, numberOfLoadedApi; + char cardIdString[10]; + AFB_ApiT apiHandle; struct HalMgrData *HalMgrGlobalData; struct SpecificHalData *currentHalData; @@ -108,8 +110,13 @@ void HalMgrLoaded(AFB_ReqT request) // Case if request key is 'verbose' and value is bigger than 0 if(! requestJsonErr && requestOptionValue > 0) { for(cpt = 0; cpt < numberOfLoadedApi; cpt++) { + if(currentHalData->sndCardId >= 0) + snprintf(cardIdString, 6, "hw:%i", currentHalData->sndCardId); + else + snprintf(cardIdString, 10, "not-found"); + wrap_json_pack(&apiObject, - "{s:s s:i s:s s:i s:s s:s s:s s:s}", + "{s:s s:i s:s s:i s:s s:s s:s s:s s:s}", "api", currentHalData->apiName, "status", (int) currentHalData->status, "sndcard", currentHalData->sndCardPath, @@ -117,7 +124,8 @@ void HalMgrLoaded(AFB_ReqT request) "info", currentHalData->info ? currentHalData->info : "", "author", currentHalData->author ? currentHalData->author : "", "version", currentHalData->version ? currentHalData->version : "", - "date", currentHalData->date ? currentHalData->date : ""); + "date", currentHalData->date ? currentHalData->date : "", + "snd-dev-id", cardIdString); json_object_array_add(requestAnswer, apiObject); currentHalData = currentHalData->next; @@ -137,6 +145,8 @@ void HalMgrLoaded(AFB_ReqT request) void HalMgrLoad(AFB_ReqT request) { + int cardId = -1; + char *apiName, *sndCardPath, *info = NULL, *author = NULL, *version = NULL, *date = NULL; AFB_ApiT apiHandle; @@ -169,19 +179,18 @@ void HalMgrLoad(AFB_ReqT request) } if(wrap_json_unpack(apiReceviedMetadata, - "{s:s s:s s?:s s?:s s?:s s?:s}", + "{s:s s:s s?:s s?:s s?:s s?:s s?:i}", "api", &apiName, "uid", &sndCardPath, "info", &info, "author", &author, "version", &version, - "date", &date)) { + "date", &date, + "snd-dev-id", &cardId)) { AFB_ReqFail(request, "api_metadata", "Can't metadata of api to register"); return; } - // TBD JAI: try connect to the api to test if it really exists - addedHal = HalUtlAddHalApiToHalList(HalMgrGlobalData); addedHal->internal = false; @@ -203,7 +212,9 @@ void HalMgrLoad(AFB_ReqT request) if(date) addedHal->date = strdup(date); - // TBD JAI: add subscription to this api status events + addedHal->sndCardId = cardId; + + // TBD JAI: add subscription to this api status events, if subscription fails, remove hal from list AFB_ReqSuccess(request, NULL, "Api successfully registered"); } -- cgit 1.2.3-korg