summaryrefslogtreecommitdiffstats
path: root/src/4a-internals-hal/4a-internals-hal-cb.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/4a-internals-hal/4a-internals-hal-cb.c')
-rw-r--r--src/4a-internals-hal/4a-internals-hal-cb.c28
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, &currentHalData->internalHalData->probedDevicesListHead)) < 0) {
+ (InternalHalHandleAllHalDependencies(apiHandle, currentHalData, &currentHalData->internalHalData->probedDevicesListHead)) < 0) {
AFB_API_ERROR(apiHandle, "Failed to handle 'haldependencies' section");
return -4;
}