ArvDevice * arv_gc_get_device (ArvGc *genicam) { g_return_val_if_fail (ARV_IS_GC (genicam), NULL); return genicam->device; }
ArvGcNode * arv_gc_get_node (ArvGc *genicam, const char *name) { g_return_val_if_fail (ARV_IS_GC (genicam), NULL); g_return_val_if_fail (name != NULL, NULL); return g_hash_table_lookup (genicam->nodes, name); }
void arv_gc_set_default_node_data (ArvGc *genicam, const char *node_name, const char *node_data) { g_return_if_fail (ARV_IS_GC (genicam)); g_return_if_fail (node_name != NULL); g_return_if_fail (node_data != NULL); if (arv_gc_get_node (genicam, node_name) != NULL) return; arv_dom_document_append_from_memory (ARV_DOM_DOCUMENT (genicam), NULL, node_data, -1, NULL); }
static guint64 _get_address (ArvGcRegisterNode *gc_register_node, GError **error) { ArvGc *genicam; GError *local_error = NULL; GSList *iter; guint64 value = 0; genicam = arv_gc_node_get_genicam (ARV_GC_NODE (gc_register_node)); g_return_val_if_fail (ARV_IS_GC (genicam), 0); for (iter = gc_register_node->addresses; iter != NULL; iter = iter->next) { value += arv_gc_property_node_get_int64 (iter->data, &local_error); if (local_error != NULL) { g_propagate_error (error, local_error); return 0; } } for (iter = gc_register_node->swiss_knives; iter != NULL; iter = iter->next) { value += arv_gc_integer_get_value (iter->data, &local_error); if (local_error != NULL) { g_propagate_error (error, local_error); return 0; } } if (gc_register_node->index != NULL) { gint64 length; length = _get_length (gc_register_node, &local_error); if (local_error != NULL) { g_propagate_error (error, local_error); return 0; } value += arv_gc_index_node_get_index (ARV_GC_INDEX_NODE (gc_register_node->index), length, &local_error); if (local_error != NULL) { g_propagate_error (error, local_error); return 0; } } return value; }
ArvChunkParser * arv_chunk_parser_new (const char *xml, gsize size) { ArvChunkParser *chunk_parser; ArvGc *genicam; genicam = arv_gc_new (NULL, xml, size); g_return_val_if_fail (ARV_IS_GC (genicam), NULL); chunk_parser = g_object_new (ARV_TYPE_CHUNK_PARSER, "genicam", genicam, NULL); g_object_unref (genicam); return chunk_parser; }
ArvDevice * arv_uv_device_new (const char *vendor, const char *product, const char *serial_nbr) { ArvUvDevice *uv_device; g_return_val_if_fail (vendor != NULL, NULL); g_return_val_if_fail (product != NULL, NULL); g_return_val_if_fail (serial_nbr != NULL, NULL); arv_debug_device ("[UvDevice::new] Vendor = %s", vendor); arv_debug_device ("[UvDevice::new] Product = %s", product); arv_debug_device ("[UvDevice::new] S/N = %s", serial_nbr); uv_device = g_object_new (ARV_TYPE_UV_DEVICE, NULL); libusb_init (&uv_device->priv->usb); uv_device->priv->vendor = g_strdup (vendor); uv_device->priv->product = g_strdup (product); uv_device->priv->serial_nbr = g_strdup (serial_nbr); uv_device->priv->packet_id = 65300; /* Start near the end of the circular counter */ uv_device->priv->timeout_ms = 32; _open_usb_device (uv_device); arv_debug_device("[UvDevice::new] Using control endpoint %d, interface %d", uv_device->priv->control_endpoint, uv_device->priv->control_interface); arv_debug_device("[UvDevice::new] Using data endpoint %d, interface %d", uv_device->priv->data_endpoint, uv_device->priv->data_interface); if (uv_device->priv->usb_device == NULL || libusb_claim_interface (uv_device->priv->usb_device, uv_device->priv->control_interface) < 0 || libusb_claim_interface (uv_device->priv->usb_device, uv_device->priv->data_interface) < 0) { arv_warning_device ("[UvDevice::new] Failed to claim USB interface to '%s - #%s'", product, serial_nbr); g_object_unref (uv_device); return NULL; } _bootstrap (uv_device); if (!ARV_IS_GC (uv_device->priv->genicam)) { arv_warning_device ("[UvDevice::new] Failed to load genicam data"); g_object_unref (uv_device); return NULL; } return ARV_DEVICE (uv_device); }
ArvGc * arv_gc_new (ArvDevice *device, const void *xml, size_t size) { ArvDomDocument *document; ArvGc *genicam; document = arv_dom_document_new_from_memory (xml, size, NULL); if (!ARV_IS_GC (document)) { if (document != NULL) g_object_unref (document); return NULL; } genicam = ARV_GC (document); genicam->device = device; return genicam; }
void arv_gc_register_feature_node (ArvGc *genicam, ArvGcFeatureNode *node) { const char *name; g_return_if_fail (ARV_IS_GC (genicam)); g_return_if_fail (ARV_IS_GC_FEATURE_NODE (node)); name = arv_gc_feature_node_get_name (node); if (name == NULL) return; g_object_ref (node); g_hash_table_remove (genicam->nodes, (char *) name); g_hash_table_insert (genicam->nodes, (char *) name, node); arv_log_genicam ("[Gc::register_feature_node] Register node '%s' [%s]", name, arv_dom_node_get_node_name (ARV_DOM_NODE (node))); }