static void cb_receive_layer_create(const uint8 session_id,
		const uint32 node_id,
		const uint16 parent_layer_id,
		const uint16 layer_id,
		const uint8 data_type,
		const uint8 count,
		const uint16 custom_type)
{
	struct Node *node;
	struct ParticleSenderNode *sender_node;

#if NO_DEBUG_PRINT != 1
	printf("%s() session_id: %u, node_id: %u, layer_id: %u, parent_layer_id: %u, data_type: %u, count: %u, custom_type: %u\n",
				__FUNCTION__, session_id, node_id, layer_id, parent_layer_id, data_type, count, custom_type);
#else
	(void)parent_layer_id;
	(void)data_type;
	(void)count;
#endif

	node = lu_find(ctx->verse.lu_table, node_id);

	if(node->type == PARTICLE_SENDER_NODE) {
		if(custom_type == PARTICLE_POS_LAYER) {
			sender_node = (struct ParticleSenderNode*)node;
			sender_node->particle_layer_id = layer_id;

			vrs_send_layer_subscribe(session_id, VRS_DEFAULT_PRIORITY,
					node_id, layer_id, 0, 0);
		}
	}
}
Esempio n. 2
0
static void cb_receive_layer_create(const uint8_t session_id,
		const uint32_t node_id,
		const uint16_t parent_layer_id,
		const uint16_t layer_id,
		const uint8_t data_type,
		const uint8_t count,
		const uint16_t custom_type)
{
	printf("%s(): session_id: %u, node_id: %u, parent_layer_id: %d, layer_id: %d, data_type: %d, count: %d, custom_type: %d\n",
			__FUNCTION__, session_id, node_id, parent_layer_id, layer_id, data_type, count, custom_type);

	if(node_id == my_test_node_id && custom_type == MY_TEST_LAYER_CT) {
		uint8_t uint8_t_val[4] = {123, 124, 125, 126};
		uint16_t uint16_t_val[4] = {1234, 456, 7890, 4321};
		uint32_t uint32_t_val[4] = {12345, 67890, 98765, 43210};
		uint64_t uint64_t_val[4] = {123456, 789012, 345678, 9012345};
		float real16_t_val[4] = {123.45, 678.90, -123.45, -678.90};
		float real32_t_val[4] = {1234.567, -8901.234, 5678.901, -2345.678};
		double real64_t_val[4] = {-1234567.890, 0.1234, 100000.9999, -0.000001234};
		void *value;

		my_test_layer_id = layer_id;

		/* Test of subscribing to layer */
		vrs_send_layer_subscribe(session_id, my_test_node_prio, node_id, layer_id, 0, 0);

		/* Test of creating child layer */
		vrs_send_layer_create(session_id, my_test_node_prio,
				node_id, layer_id, VRS_VALUE_TYPE_REAL32, 2, MY_TEST_CHILD_LAYER_CT);

		/* Test sending some values of tag types */
		switch(data_type) {
		case VRS_VALUE_TYPE_UINT8:
			value = uint8_t_val;
			break;
		case VRS_VALUE_TYPE_UINT16:
			value = uint16_t_val;
			break;
		case VRS_VALUE_TYPE_UINT32:
			value = uint32_t_val;
			break;
		case VRS_VALUE_TYPE_UINT64:
			value = uint64_t_val;
			break;
		case VRS_VALUE_TYPE_REAL16:
			/* TODO: convert float values to half-float values */
			value = real16_t_val;
			break;
		case VRS_VALUE_TYPE_REAL32:
			value = real32_t_val;
			break;
		case VRS_VALUE_TYPE_REAL64:
			value = real64_t_val;
			break;
		default:
			value = NULL;
			break;
		}

		/* Test of sending set value */
		vrs_send_layer_set_value(session_id, my_test_node_prio,
				node_id, layer_id, 10, data_type, count, value);

	}

	if(node_id == my_test_node_id &&
			parent_layer_id == my_test_layer_id &&
			custom_type == MY_TEST_CHILD_LAYER_CT) {
		/* Test of destroying parent layer */
		vrs_send_layer_destroy(session_id, my_test_node_prio, node_id, parent_layer_id);
	}
}