diff options
Diffstat (limited to 'src/4a-internals-hal/4a-internals-hal-cb.c')
-rw-r--r-- | src/4a-internals-hal/4a-internals-hal-cb.c | 28 |
1 files changed, 23 insertions, 5 deletions
diff --git a/src/4a-internals-hal/4a-internals-hal-cb.c b/src/4a-internals-hal/4a-internals-hal-cb.c index 5dc0a2e..6afc965 100644 --- a/src/4a-internals-hal/4a-internals-hal-cb.c +++ b/src/4a-internals-hal/4a-internals-hal-cb.c @@ -1153,11 +1153,12 @@ int InternalHalHandleOneHalDependencies(afb_api_t apiHandle, struct InternalHalP } int InternalHalHandleHalDependencies(afb_api_t apiHandle, + struct HalData *currentHalData, struct cds_list_head *halDevicesToProbeListHead, enum DependenciesHandlingType dependenciesHandlingType, char *uid) { - int ret, validatedDepedency; + int ret, validatedDepedency, validatedDependenciesNumber = 0; struct InternalHalProbedDevice *halCurrentDeviceToProbe; @@ -1206,6 +1207,14 @@ int InternalHalHandleHalDependencies(afb_api_t apiHandle, return -4; } + if(ret > 0) + AFB_API_INFO(apiHandle, + "Didn't succeed to identifiate a unique device, uid:'%s' and request:'%s'", + halCurrentDeviceToProbe->uid, + json_object_get_string(halCurrentDeviceToProbe->requestedDeviceJ)); + else + validatedDependenciesNumber++; + if(halCurrentDeviceToProbe->deviceClass == MANDATORY_PROBED_DEVICE && ! halCurrentDeviceToProbe->deviceData) { AFB_API_WARNING(apiHandle, @@ -1217,12 +1226,21 @@ int InternalHalHandleHalDependencies(afb_api_t apiHandle, } } - return 0; + if(validatedDependenciesNumber) + currentHalData->status = HAL_STATUS_AVAILABLE; + + return validatedDependenciesNumber; } -int InternalHalHandleAllHalDependencies(afb_api_t apiHandle, struct cds_list_head *halDevicesToProbeListHead) +int InternalHalHandleAllHalDependencies(afb_api_t apiHandle, struct HalData *currentHalData, struct cds_list_head *halDevicesToProbeListHead) { - return InternalHalHandleHalDependencies(apiHandle, halDevicesToProbeListHead, ALL_DEPENDENCIES, NULL); + int returned; + + returned = InternalHalHandleHalDependencies(apiHandle, currentHalData, halDevicesToProbeListHead, ALL_DEPENDENCIES, NULL); + if(returned < 0) + return returned; + + return 0; } int InternalHalHalDependenciesConfig(afb_api_t apiHandle, CtlSectionT *section, json_object *DependenciesJ) @@ -1244,7 +1262,7 @@ int InternalHalHalDependenciesConfig(afb_api_t apiHandle, CtlSectionT *section, return -3; } else if(! DependenciesJ && - (InternalHalHandleAllHalDependencies(apiHandle, ¤tHalData->internalHalData->probedDevicesListHead)) < 0) { + (InternalHalHandleAllHalDependencies(apiHandle, currentHalData, ¤tHalData->internalHalData->probedDevicesListHead)) < 0) { AFB_API_ERROR(apiHandle, "Failed to handle 'haldependencies' section"); return -4; } |