diff --git a/aravisApp/src/arvFeature.cpp b/aravisApp/src/arvFeature.cpp index bce8b07..a7ef08c 100644 --- a/aravisApp/src/arvFeature.cpp +++ b/aravisApp/src/arvFeature.cpp @@ -31,6 +31,17 @@ bool arvFeature::isImplemented() { } bool arvFeature::isAvailable() { + // Other SDKs return isAvailable=false for enum features with no available enum values, and ADGenICam relies on this. + // Return false if numEnums is 0. + if (ARV_IS_GC_ENUMERATION(mNode)) { + guint numEnums; + ArvGcEnumeration *enumeration = (ARV_GC_ENUMERATION (mNode)); + arv_gc_enumeration_dup_available_int_values(enumeration, &numEnums, NULL); + if (numEnums == 0) { + printf("arvFeature::isAvailable() returning false for %s because numEnums=0\n", mFeatureName.c_str()); + return false; + } + } return arv_gc_feature_node_is_available(ARV_GC_FEATURE_NODE(mNode), NULL); }