[aravis] gv_device: add a default node description for GevSCPSPacketSize if not present in the camera genicam



commit 1e805e2ac4244cd27aa457b06dfc0a50a91da3cf
Author: Emmanuel Pacaud <emmanuel gnome org>
Date:   Mon Apr 2 22:49:00 2012 +0200

    gv_device: add a default node description for GevSCPSPacketSize if not present in the camera genicam file.

 docs/reference/aravis/aravis-sections.txt |    1 +
 src/arvgc.c                               |   13 +++++++++++++
 src/arvgc.h                               |    1 +
 src/arvgvdevice.c                         |   16 +++++++++++++++-
 4 files changed, 30 insertions(+), 1 deletions(-)
---
diff --git a/docs/reference/aravis/aravis-sections.txt b/docs/reference/aravis/aravis-sections.txt
index a774e8e..73c8533 100644
--- a/docs/reference/aravis/aravis-sections.txt
+++ b/docs/reference/aravis/aravis-sections.txt
@@ -137,6 +137,7 @@ ArvGcPort
 arv_gc_port_new
 arv_gc_port_read
 arv_gc_port_write
+arv_gc_set_default_node_data
 <SUBSECTION Standard>
 ARV_GC_PORT
 ARV_IS_GC_PORT
diff --git a/src/arvgc.c b/src/arvgc.c
index 8d929c8..e931734 100644
--- a/src/arvgc.c
+++ b/src/arvgc.c
@@ -259,6 +259,19 @@ arv_gc_register_feature_node (ArvGc *genicam, ArvGcFeatureNode *node)
 			 arv_dom_node_get_node_name (ARV_DOM_NODE (node)));
 }
 
+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);
+}
+
 ArvGc *
 arv_gc_new (ArvDevice *device, const void *xml, size_t size)
 {
diff --git a/src/arvgc.h b/src/arvgc.h
index 3b6f5f9..18f8953 100644
--- a/src/arvgc.h
+++ b/src/arvgc.h
@@ -52,6 +52,7 @@ GType arv_gc_get_type (void);
 
 ArvGc * 		arv_gc_new 			(ArvDevice *device, const void *xml, size_t size);
 void 			arv_gc_register_feature_node 	(ArvGc *genicam, ArvGcFeatureNode *node);
+void 			arv_gc_set_default_node_data 	(ArvGc *genicam, const char *node_name, const char *node_data);
 ArvGcNode *		arv_gc_get_node			(ArvGc *genicam, const char *name);
 ArvDevice *		arv_gc_get_device		(ArvGc *genicam);
 
diff --git a/src/arvgvdevice.c b/src/arvgvdevice.c
index c29bd08..3b68ecb 100644
--- a/src/arvgvdevice.c
+++ b/src/arvgvdevice.c
@@ -589,8 +589,22 @@ arv_gv_device_load_genicam (ArvGvDevice *gv_device)
 	size_t size;
 
 	genicam = arv_gv_device_get_genicam_xml (ARV_DEVICE (gv_device), &size);
-	if (genicam != NULL)
+	if (genicam != NULL) {
 		gv_device->priv->genicam = arv_gc_new (ARV_DEVICE (gv_device), genicam, size);
+
+		arv_gc_set_default_node_data (gv_device->priv->genicam, "GevSCPSPacketSize",
+					      "<MaskedIntReg Name=\"GevSCPSPacketSize\">"
+					      "<Address>0xd04</Address>"
+					      "<Length>4</Length>"
+					      "<AccessMode>RW</AccessMode>"
+					      "<pPort>Device</pPort>"
+					      "<LSB>31</LSB>"
+					      "<MSB>16</MSB>"
+					      "<Sign>Unsigned</Sign>"
+					      "<Endianess>BigEndian</Endianess>"
+					      "</MaskedIntReg>"
+					     );
+	}
 }
 
 /* ArvDevice implemenation */



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]