const char * arv_gc_enumeration_get_string_value (ArvGcEnumeration *enumeration) { const GSList *iter; gint64 value; g_return_val_if_fail (ARV_IS_GC_ENUMERATION (enumeration), NULL); value = arv_gc_enumeration_get_int_value (enumeration); for (iter = enumeration->entries; iter != NULL; iter = iter->next) { if (arv_gc_enum_entry_get_value (iter->data) == value) { const char *string; string = arv_gc_feature_node_get_name (iter->data); arv_log_genicam ("[GcEnumeration::get_string_value] value = %Ld - string = %s", value, string); return string; } } arv_warning_genicam ("[GcEnumeration::get_string_value] value = %Ld not found for node %s", value, arv_gc_feature_node_get_name (ARV_GC_FEATURE_NODE (enumeration))); return NULL; }
void arv_gc_enumeration_set_string_value (ArvGcEnumeration *enumeration, const char *value, GError **error) { const GSList *iter; g_return_if_fail (ARV_IS_GC_ENUMERATION (enumeration)); g_return_if_fail (error == NULL || *error == NULL); for (iter = enumeration->entries; iter != NULL; iter = iter->next) if (g_strcmp0 (arv_gc_feature_node_get_name (iter->data), value) == 0) { GError *local_error = NULL; gint64 enum_value; arv_log_genicam ("[GcEnumeration::set_string_value] value = %d - string = %s", &enumeration->value, value); enum_value = arv_gc_enum_entry_get_value (iter->data, &local_error); if (local_error != NULL) { g_propagate_error (error, local_error); return; } arv_gc_enumeration_set_int_value (enumeration, enum_value, &local_error); if (local_error != NULL) g_propagate_error (error, local_error); return; } arv_warning_genicam ("[GcEnumeration::set_string_value] entry %s not found", value); }
const GSList * arv_gc_enumeration_get_entries (ArvGcEnumeration *enumeration) { g_return_val_if_fail (ARV_IS_GC_ENUMERATION (enumeration), NULL); return enumeration->entries; }
gint64 * arv_gc_enumeration_get_available_int_values (ArvGcEnumeration *enumeration, guint *n_values) { gint64 *values; const GSList *entries, *iter; unsigned int i; g_return_val_if_fail (n_values != NULL, NULL); *n_values = 0; g_return_val_if_fail (ARV_IS_GC_ENUMERATION (enumeration), NULL); entries = arv_gc_enumeration_get_entries (enumeration); *n_values = 0; for (iter = entries; iter != NULL; iter = iter->next) if (arv_gc_feature_node_is_available (iter->data)) (*n_values)++; if (*n_values == 0) return NULL; values = g_new (gint64, *n_values); for (iter = entries, i = 0; iter != NULL; iter = iter->next) if (arv_gc_feature_node_is_available (iter->data)) { values[i] = arv_gc_enum_entry_get_value (iter->data); i++; } return values; }
void arv_gc_enumeration_set_int_value (ArvGcEnumeration *enumeration, gint64 value) { g_return_if_fail (ARV_IS_GC_ENUMERATION (enumeration)); if (enumeration->value) arv_gc_property_node_set_int64 (enumeration->value, value); }
gint64 arv_gc_enumeration_get_int_value (ArvGcEnumeration *enumeration) { g_return_val_if_fail (ARV_IS_GC_ENUMERATION (enumeration), 0); if (enumeration->value != NULL) return arv_gc_property_node_get_int64 (enumeration->value); return 0; }
void arv_gc_enumeration_set_int_value (ArvGcEnumeration *enumeration, gint64 value, GError **error) { g_return_if_fail (ARV_IS_GC_ENUMERATION (enumeration)); g_return_if_fail (error == NULL || *error == NULL); if (enumeration->value) { GError *local_error = NULL; arv_gc_property_node_set_int64 (enumeration->value, value, &local_error); if (local_error != NULL) g_propagate_error (error, local_error); } }
void arv_gc_enumeration_set_string_value (ArvGcEnumeration *enumeration, const char *value) { const GSList *iter; g_return_if_fail (ARV_IS_GC_ENUMERATION (enumeration)); for (iter = enumeration->entries; iter != NULL; iter = iter->next) if (g_strcmp0 (arv_gc_feature_node_get_name (iter->data), value) == 0) { arv_log_genicam ("[GcEnumeration::set_string_value] value = %d - string = %s", &enumeration->value, value); arv_gc_enumeration_set_int_value (enumeration, arv_gc_enum_entry_get_value (iter->data)); return; } arv_warning_genicam ("[GcEnumeration::set_string_value] entry %s not found", value); }
//! Serialize the tree, used by QArvCamera stream operators. void QArvCamera::QArvFeatureTree::recursiveSerialization( QTextStream& out, QArvCamera* camera, QArvCamera::QArvFeatureTree* tree) { auto node = arv_gc_get_node(camera->genicam, tree->feature()); if (tree->children().count() != 0) { if (QString("Root") != tree->feature()) out << "Category: " << tree->feature() << endl; foreach (auto child, tree->children()) { recursiveSerialization(out, camera, child); } return; } if (ARV_IS_GC_COMMAND(node)) return; out << "\t" << tree->feature() << "\t"; if (ARV_IS_GC_REGISTER_NODE(node) && QString(arv_dom_node_get_node_name(ARV_DOM_NODE(node))) == "IntReg") { QArvRegister r; r.length = arv_gc_register_get_length(ARV_GC_REGISTER(node), NULL); r.value = QByteArray(r.length, 0); arv_gc_register_get(ARV_GC_REGISTER(node), r.value.data(), r.length, NULL); out << "Register\t" << QString::number(r.length) << "\t" << QString("0x") + r.value.toHex() << endl; } else if (ARV_IS_GC_ENUMERATION(node)) { out << "Enumeration\t" << arv_gc_enumeration_get_string_value(ARV_GC_ENUMERATION(node), NULL) << endl; } else if (ARV_IS_GC_STRING(node)) { out << "String\t" << arv_gc_string_get_value(ARV_GC_STRING(node), NULL) << endl; } else if (ARV_IS_GC_FLOAT(node)) { out << "Float\t" << arv_gc_float_get_value(ARV_GC_FLOAT(node), NULL) << "\t" << arv_gc_float_get_unit(ARV_GC_FLOAT(node), NULL) << endl; } else if (ARV_IS_GC_BOOLEAN(node)) { out << "Boolean\t" << arv_gc_boolean_get_value(ARV_GC_BOOLEAN(node), NULL) << endl; } else if (ARV_IS_GC_INTEGER(node)) { out << "Integer\t" << arv_gc_integer_get_value(ARV_GC_INTEGER(node), NULL) << endl; } }
const char * arv_gc_enumeration_get_string_value (ArvGcEnumeration *enumeration, GError **error) { const GSList *iter; GError *local_error = NULL; gint64 value; g_return_val_if_fail (ARV_IS_GC_ENUMERATION (enumeration), NULL); g_return_val_if_fail (error == NULL || *error == NULL, NULL); value = arv_gc_enumeration_get_int_value (enumeration, &local_error); if (local_error != NULL) { g_propagate_error (error, local_error); return NULL; } for (iter = enumeration->entries; iter != NULL; iter = iter->next) { gint64 enum_value; enum_value = arv_gc_enum_entry_get_value (iter->data, &local_error); if (local_error != NULL) { g_propagate_error (error, local_error); return NULL; } if (enum_value == value) { const char *string; string = arv_gc_feature_node_get_name (iter->data); arv_log_genicam ("[GcEnumeration::get_string_value] value = %Ld - string = %s", value, string); return string; } } arv_warning_genicam ("[GcEnumeration::get_string_value] value = %Ld not found for node %s", value, arv_gc_feature_node_get_name (ARV_GC_FEATURE_NODE (enumeration))); return NULL; }
gint64 arv_gc_enumeration_get_int_value (ArvGcEnumeration *enumeration, GError **error) { GError *local_error = NULL; gint64 value; g_return_val_if_fail (ARV_IS_GC_ENUMERATION (enumeration), 0); g_return_val_if_fail (error == NULL || *error == NULL, 0); if (enumeration->value == NULL) return 0; value = arv_gc_property_node_get_int64 (enumeration->value, &local_error); if (local_error != NULL) { g_propagate_error (error, local_error); return 0; } return value; }
gint64 * arv_gc_enumeration_get_available_int_values (ArvGcEnumeration *enumeration, guint *n_values, GError **error) { gint64 *values; const GSList *entries, *iter; GSList *available_entries = NULL; unsigned int i; GError *local_error = NULL; g_return_val_if_fail (n_values != NULL, NULL); *n_values = 0; g_return_val_if_fail (ARV_IS_GC_ENUMERATION (enumeration), NULL); g_return_val_if_fail (error == NULL || *error == NULL, NULL); entries = arv_gc_enumeration_get_entries (enumeration); *n_values = 0; for (iter = entries; iter != NULL; iter = iter->next) { gboolean is_available; is_available = arv_gc_feature_node_is_available (iter->data, &local_error); if (local_error != NULL) { g_propagate_error (error, local_error); *n_values = 0; g_slist_free (available_entries); return NULL; } if (is_available) { gboolean is_implemented; is_implemented = arv_gc_feature_node_is_implemented (iter->data, &local_error); if (local_error != NULL) { g_propagate_error (error, local_error); *n_values = 0; g_slist_free (available_entries); return NULL; } if (is_implemented) { (*n_values)++; available_entries = g_slist_prepend (available_entries, iter->data); } } } if (*n_values == 0) { g_slist_free (available_entries); return NULL; } values = g_new (gint64, *n_values); for (iter = available_entries, i = 0; iter != NULL; iter = iter->next) { values[i] = arv_gc_enum_entry_get_value (iter->data, &local_error); if (local_error != NULL) { g_propagate_error (error, local_error); *n_values = 0; g_slist_free (available_entries); g_free (values); return NULL; } i++; } g_slist_free (available_entries); return values; }