Ejemplo n.º 1
0
static guint64
arv_gc_register_node_get_address (ArvGcRegister *gc_register, GError **error)
{
	ArvGcRegisterNode *gc_register_node = ARV_GC_REGISTER_NODE (gc_register);

	return _get_address (gc_register_node, error);
}
Ejemplo n.º 2
0
static void
_read_cache (ArvGcRegisterNode *gc_register_node, GError **error)
{
	GError *local_error = NULL;
	ArvGcNode *port;
	gboolean cachable;
	gint64 address;

	if (gc_register_node->is_cache_valid == TRUE) {
		arv_log_genicam ("[GcRegisterNode::read_cache] Cache is valid");
		return;
	}

	port = arv_gc_property_node_get_linked_node (gc_register_node->port);
	if (!ARV_IS_GC_PORT (port))
		return;

	_update_cache_size (gc_register_node, &local_error);

	if (local_error != NULL) {
		g_propagate_error (error, local_error);
		return;
	}

	address = _get_address (gc_register_node, &local_error);

	if (local_error != NULL) {
		g_propagate_error (error, local_error);
		return;
	}

	arv_gc_port_read (ARV_GC_PORT (port),
			  gc_register_node->cache,
			  address,
			  gc_register_node->cache_size, &local_error);

	if (local_error != NULL) {
		g_propagate_error (error, local_error);
		return;
	}

	cachable = _get_cachable (gc_register_node, &local_error);

	if (local_error != NULL) {
		g_propagate_error (error, local_error);
		return;
	}

	if (cachable != ARV_GC_CACHABLE_NO_CACHE)
		gc_register_node->is_cache_valid = TRUE;
	else
		gc_register_node->is_cache_valid = FALSE;
}
Ejemplo n.º 3
0
static void
_write_cache (ArvGcRegisterNode *gc_register_node, GError **error)
{
	GError *local_error = NULL;
	gint64 address;
	gboolean cachable;
	ArvGcNode *port;

	arv_gc_feature_node_inc_modification_count (ARV_GC_FEATURE_NODE (gc_register_node));

	port = arv_gc_property_node_get_linked_node (gc_register_node->port);
	if (!ARV_IS_GC_PORT (port))
		return;

	_update_cache_size (gc_register_node, &local_error);

	if (local_error != NULL) {
		g_propagate_error (error, local_error);
		return;
	}

	address = _get_address (gc_register_node, &local_error);

	if (local_error != NULL) {
		g_propagate_error (error, local_error);
		return;
	}

	arv_gc_port_write (ARV_GC_PORT (port),
			   gc_register_node->cache,
			   address,
			   gc_register_node->cache_size, &local_error);

	if (local_error != NULL) {
		g_propagate_error (error, local_error);
		return;
	}

	cachable = _get_cachable (gc_register_node, &local_error);

	if (local_error != NULL) {
		g_propagate_error (error, local_error);
		return;
	}

	if (cachable == ARV_GC_CACHABLE_WRITE_TRHOUGH)
		gc_register_node->is_cache_valid = TRUE;
	else
		gc_register_node->is_cache_valid = FALSE;
}
Ejemplo n.º 4
0
int _get(ng_netdev_t *dev, netopt_t opt, void *value, size_t max_len)
{
    (void)dev;

    switch (opt) {
        case NETOPT_ADDRESS:
            return _get_address(value, max_len);
        case NETOPT_CHANNEL:
            return _get_channel(value, max_len);
        case NETOPT_NID:
            return _get_pan(value, max_len);
        case NETOPT_TX_POWER:
            return _get_txpower(value, max_len);
        case NETOPT_STATE:
            return _get_state(value, max_len);
        default:
            return -ENOTSUP;
    }
}
Ejemplo n.º 5
0
static void
arv_gc_register_node_set (ArvGcRegister *gc_register, void *buffer, guint64 length, GError **error)
{
	ArvGcRegisterNode *gc_register_node = ARV_GC_REGISTER_NODE (gc_register);
	GError *local_error = NULL;

	if (gc_register_node->cache_size > length) {
		memcpy (gc_register_node->cache, buffer, length);
		memset (gc_register_node->cache + length, 0, gc_register_node->cache_size - length);
	} else
		memcpy (gc_register_node->cache, buffer, gc_register_node->cache_size);

	_write_cache (gc_register_node, &local_error);

	if (local_error != NULL) {
		g_propagate_error (error, local_error);
		return;
	}

	arv_log_genicam ("[GcRegisterNode::set] 0x%Lx,%Ld", _get_address (gc_register_node, NULL), length);
}
Ejemplo n.º 6
0
		}

#if G_BYTE_ORDER == G_LITTLE_ENDIAN
		if (msb - lsb < 63)
			mask = ((((guint64) 1) << (msb - lsb + 1)) - 1) << lsb;
		else
			mask = G_MAXUINT64;

		value = (value & mask) >> lsb;
#else
		g_assert_not_reached ();
#endif
	}

	arv_log_genicam ("[GcRegisterNode::_get_integer_value] address = 0x%Lx, value = 0x%Lx",
			 _get_address (gc_register_node, NULL), value);

	return value;
}

gint64
arv_gc_register_node_get_masked_integer_value (ArvGcRegisterNode *gc_register_node, guint lsb, guint msb, GError **error)
{
	g_return_val_if_fail (ARV_IS_GC_REGISTER_NODE (gc_register_node), 0);
	g_return_val_if_fail (error == NULL || *error == NULL, 0);

	return _get_integer_value (gc_register_node, lsb, msb, error);
}

static gint64
arv_gc_register_node_get_integer_value (ArvGcInteger *gc_integer, GError **error)
Ejemplo n.º 7
0
void * get_non_null_address(void)
{
	return _get_address(FALSE);
}
Ejemplo n.º 8
0
void * get_address(void)
{
	return _get_address(TRUE);
}