Esempio n. 1
0
int coro__ut_data_1( co_t *co_p )
{
	static dword i;
	if ( *co_p ) goto **co_p;
	/* begin */
	data_clear_watch( peek__ut_data_1 );
	data_watch( peek__ut_data_1, _ut_data_1_watch );

	data_set_byte( var__ut_byte, 1 );
	data_set_dword( var__ut_array_1, 1 );
	data_set_float( var__ut_float, 0.0 );
	data_reset_all( peek__ut_data_2 );

	/* Main operations */
	for ( i = 0; i < CYCLE_COUNT; i++ ) {
		/* 1 */
		data_set_byte( var__ut_byte, ( byte ) i );

		do {
			/* wait */
			*co_p = &&L__0;

			L__0:
			if (!( data_get_changed( peek__ut_data_1, var__ut_word ))) { /* cond */
		
				return CO_WAIT;
			}
		} while ( 0 );
		/* 3 */
		data_reset( peek__ut_data_1, var__ut_word );
		assert_u32_eq(( word ) i, data_get_word( var__ut_word ));

		data_set_dword( var__ut_array_1, i << 8 );

		do {
			/* wait */
			*co_p = &&L__1;

			L__1:
			if (!( data_get_changed( peek__ut_data_1, var__ut_array_3 ))) { /* cond */
		
				return CO_WAIT;
			}
		} while ( 0 );
		/* 5 */
		data_reset( peek__ut_data_1, var__ut_array_3 );
		assert_u32_eq( data_get_dword( var__ut_array_1 ), data_get_dword( var__ut_array_3 ));

		data_set_dword( var__ut_array_0, data_get_dword( var__ut_array_2 ));
		data_set_dword( var__ut_array_2, 0 );

		data_set_float( var__ut_float, data_get_float( var__ut_float ) + 0.25 );
		data_reset( peek__ut_data_1, var__ut_float );
		do {
			/* wait */
			*co_p = &&L__2;

			L__2:
			if (!( data_get_changed( peek__ut_data_1, var__ut_float ))) { /* cond */
		
				return CO_WAIT;
			}
		} while ( 0 );
	}
	assert_u32_eq( 0x55555555, data_get_dword( var__ut_array_0 ));

	/* Auxiliary operations */
	data_set_all_changed( peek__ut_data_1 );
	assert(( data_get_changed( peek__ut_data_1, var__ut_word )
	&& data_get_changed( peek__ut_data_1, var__ut_array_3 )
	&& data_get_changed( peek__ut_data_1, var__ut_float )
	&& !data_get_changed( peek__ut_data_1, var__ut_array_1 )
	&& !data_get_changed( peek__ut_data_1, var__ut_array_2 ))
	);
	data_reset_all( peek__ut_data_1 );
	assert_not( data_get_changed_any( peek__ut_data_1 ));
	data_set_changed( var__ut_byte );
	assert_not( data_get_changed_any( peek__ut_data_1 ));
	data_set_changed( var__ut_float );
	assert( data_get_changed_any( peek__ut_data_1 ));

	do {
		/* yield */
		*co_p = &&L__3;
	
		return CO_YIELD;

		L__3:;
	} while ( 0 );

	data_clear_watch( peek__ut_data_1 );
	assert_not( data_get_changed_any( peek__ut_data_1 ));
	data_watch_array( peek__ut_data_1, _ut_data_array_watch );
	data_set_changed( var__ut_float );
	data_set_changed( var__ut_word );
	data_set_changed( var__ut_array_0 );
	assert_not( data_get_changed_any( peek__ut_data_1 ));
	data_set_changed( var__ut_array_1 );
	assert( data_get_changed( peek__ut_data_1, var__ut_array_1 ));
	data_set_changed( var__ut_array_2 );
	assert( data_get_changed( peek__ut_data_1, var__ut_array_2 ));
	data_set_changed( var__ut_array_3 );
	assert( data_get_changed( peek__ut_data_1, var__ut_array_3 ));
	data_set_changed( var__ut_byte );
	assert( data_get_changed( peek__ut_data_1, var__ut_byte ));

	do {
		/* yield */
		*co_p = &&L__4;
	
		return CO_YIELD;

		L__4:;
	} while ( 0 );

	assert_u32_eq( var__ut_array, data_atovar( data_vartoa( var__ut_array_0 )));
	assert_str_eq( "_ut_byte", data_vartoa( data_atovar( "_ut_byte" )));

	i = 0x00ABCDEF;
	data_set( var__ut_array_3, &i );
	assert_str_eq( "0x00ABCDEF", data_get_string( __str, var__ut_array_3 ));
	data_set_string( var__ut_float, "8080.02" );
	assert_str_eq( "8080.02", data_get_string( __str, var__ut_float ));

	assert_str_eq( "word", data_get_type( var__ut_word ));
	/* end */
	*co_p = &&L__END__ut_data_1;

	L__END__ut_data_1:
	
	return CO_END;
}
Esempio n. 2
0
/**
 * Initializes a given Numeric attribute from stream content.
 *
 * \param numeric the Numeric.
 * \param attr_id the Numeric's attribute ID.
 * \param stream the value of Numeric's attribute.
 * \param data_entry output parameter to describe data value
 *
 * \return \b 1, if the Numeric's attribute is properly modified; \b 0 otherwise.
 *
 */
int dimutil_fill_numeric_attr(struct Numeric *numeric, OID_Type attr_id,
			      ByteStreamReader *stream, DataEntry *data_entry)
{

	int result = 1;
	int error = 0;

	switch (attr_id) {
	case MDC_ATTR_NU_VAL_OBS_SIMP:
		del_simplenuobsvalue(&numeric->simple_nu_observed_value);
		decode_simplenuobsvalue(stream,
					&(numeric->simple_nu_observed_value),
					&error);
		if (error) {
			result = 0;
			break;
		}

		data_set_simple_nu_obs_value(data_entry,
					     "Simple-Nu-Observed-Value",
					     &(numeric->simple_nu_observed_value));

		if (data_entry) {
			data_set_meta_att(data_entry, data_strcp("partition"),
					  intu16_2str(dimutil_get_metric_partition(&(numeric->metric))));

			data_set_meta_att(data_entry, data_strcp("metric-id"),
					  intu16_2str(dimutil_get_metric_ids(&(numeric->metric))));

			data_set_meta_att(data_entry, data_strcp("unit-code"),
					  intu16_2str(dimutil_get_unit_code(&(numeric->metric))));

			data_set_meta_att(data_entry, data_strcp("unit"),
					  dimutil_get_unit(&(numeric->metric)));
		}

		break;
	case MDC_ATTR_NU_CMPD_VAL_OBS_SIMP:
		del_simplenuobsvaluecmp(
			&numeric->compound_simple_nu_observed_value);
		decode_simplenuobsvaluecmp(stream,
					   &(numeric->compound_simple_nu_observed_value),
						&error);
		if (error) {
			result = 0;
			break;
		}

		data_set_simple_nu_obs_val_cmp(data_entry,
					       "Compound-Simple-Nu-Observed-Value",
					       &(numeric->compound_simple_nu_observed_value),
					       dimutil_get_metric_partition(&(numeric->metric)),
					       numeric->metric.metric_id_list.value);

		if (data_entry) {
			data_set_meta_att(data_entry, data_strcp("partition"),
					  intu16_2str(dimutil_get_metric_partition(&(numeric->metric))));

			data_set_meta_att(data_entry, data_strcp("metric-id"),
					  intu16_2str(dimutil_get_metric_ids(&(numeric->metric))));

			data_set_meta_att(data_entry, data_strcp("unit-code"),
					  intu16_2str(dimutil_get_unit_code(&(numeric->metric))));

			data_set_meta_att(data_entry, data_strcp("unit"),
					  dimutil_get_unit(&(numeric->metric)));
		}

		break;
	case MDC_ATTR_NU_VAL_OBS_BASIC:
		numeric->basic_nu_observed_value = read_sfloat(stream, &error);
		if (error) {
			result = 0;
			break;
		}

		if (data_entry) {
			data_set_basic_nu_obs_val(data_entry,
					  "Basic-Nu-Observed-Value",
					  &(numeric->basic_nu_observed_value));

			data_set_meta_att(data_entry, data_strcp("partition"),
				  intu16_2str(dimutil_get_metric_partition(&(numeric->metric))));

			data_set_meta_att(data_entry, data_strcp("metric-id"),
				  intu16_2str(dimutil_get_metric_ids(&(numeric->metric))));

			data_set_meta_att(data_entry, data_strcp("unit-code"),
				  intu16_2str(dimutil_get_unit_code(&(numeric->metric))));

			data_set_meta_att(data_entry, data_strcp("unit"),
				  dimutil_get_unit(&(numeric->metric)));
		}
		break;
	case MDC_ATTR_NU_CMPD_VAL_OBS_BASIC:
		del_basicnuobsvaluecmp(
			&numeric->compound_basic_nu_observed_value);
		decode_basicnuobsvaluecmp(stream,
					  &numeric->compound_basic_nu_observed_value,
					&error);
		if (error) {
			result = 0;
			break;
		}
		data_set_basic_nu_obs_val_cmp(data_entry,
					      "Compound-Basic-Nu-Observed-Value",
					      &(numeric->compound_basic_nu_observed_value),
					      dimutil_get_metric_partition(&(numeric->metric)),
					      numeric->metric.metric_id_list.value);

		if (data_entry) {
			data_set_meta_att(data_entry, data_strcp("partition"),
					  intu16_2str(dimutil_get_metric_partition(&(numeric->metric))));

			data_set_meta_att(data_entry, data_strcp("metric-id"),
					  intu16_2str(dimutil_get_metric_ids(&(numeric->metric))));

			data_set_meta_att(data_entry, data_strcp("unit-code"),
					  intu16_2str(dimutil_get_unit_code(&(numeric->metric))));

			data_set_meta_att(data_entry, data_strcp("unit"),
					  dimutil_get_unit(&(numeric->metric)));
		}

		break;
	case MDC_ATTR_NU_VAL_OBS:
		del_nuobsvalue(&numeric->nu_observed_value);
		decode_nuobsvalue(stream, &numeric->nu_observed_value, &error);
		if (error) {
			result = 0;
			break;
		}
		data_set_nu_obs_val(data_entry, "Nu-Observed-Value",
				    &numeric->nu_observed_value);

		if (data_entry) {
			data_set_meta_att(data_entry, data_strcp("partition"),
					  intu16_2str(dimutil_get_metric_partition(&(numeric->metric))));

			data_set_meta_att(data_entry, data_strcp("metric-id"),
					  intu16_2str(numeric->nu_observed_value.metric_id));

			data_set_meta_att(data_entry, data_strcp("unit-code"),
					  intu16_2str(dimutil_get_unit_code(&(numeric->metric))));

			data_set_meta_att(data_entry, data_strcp("unit"),
					  dimutil_get_unit(&(numeric->metric)));
		}

		break;
	case MDC_ATTR_NU_CMPD_VAL_OBS:
		del_nuobsvaluecmp(&numeric->compound_nu_observed_value);
		decode_nuobsvaluecmp(stream,
				     &numeric->compound_nu_observed_value,
					&error);
		if (error) {
			result = 0;
			break;
		}

		if (data_entry) {
			data_set_nu_obs_val_cmp(data_entry,
					"Compound-Nu-Observed-Value",
					&numeric->compound_nu_observed_value,
					dimutil_get_metric_partition(&(numeric->metric)));
		}

		break;
	case MDC_ATTR_NU_ACCUR_MSMT:
		numeric->accuracy = read_float(stream, &error);
		if (error) {
			result = 0;
			break;
		}
		data_set_float(data_entry, "Accuracy", &numeric->accuracy);
		break;
	default:
		result = dimutil_fill_metric_attr(&numeric->metric, attr_id,
						  stream, data_entry);
		break;
	}

	return result;
}
Esempio n. 3
0
int coro__ut_data_2( co_t *co_p )
{
	static dword i;
	if ( *co_p ) goto **co_p;
	/* begin */
	data_set_word( var__ut_word, 1 );
	data_set_dword( var__ut_array_3, 1 );
	data_reset_all( peek__ut_data_1 );
	data_set_dword( var__ut_array_0, 0x55555555 );

	for ( i = 0; i < CYCLE_COUNT; i++ ) {

		do {
			/* wait */
			*co_p = &&L__5;

			L__5:
			if (!( data_get_changed( peek__ut_data_2, var__ut_byte ))) { /* cond */
		
				return CO_WAIT;
			}
		} while ( 0 );
		/* 2 */
		data_reset( peek__ut_data_2, var__ut_byte );
		assert_u32_eq(( byte ) i, data_get_byte( var__ut_byte ));

		data_set_word( var__ut_word, ( word ) i );

		do {
			/* wait */
			*co_p = &&L__6;

			L__6:
			if (!( data_get_changed( peek__ut_data_2, var__ut_array_1 ))) { /* cond */
		
				return CO_WAIT;
			}
		} while ( 0 );
		/* 4 */
		data_reset( peek__ut_data_2, var__ut_array_1 );

		data_set_dword( var__ut_array_3, i << 8 );
		assert_u32_eq( data_get_dword( var__ut_array_3 ), data_get_dword( var__ut_array_1 ));

		data_set_dword( var__ut_array_2, data_get_dword( var__ut_array_0 ));
		data_set_dword( var__ut_array_0, 0 );

		do {
			/* wait */
			*co_p = &&L__7;

			L__7:
			if (!( data_get_changed( peek__ut_data_2, var__ut_float ))) { /* cond */
		
				return CO_WAIT;
			}
		} while ( 0 );
		/* 6 */
		data_set_float( var__ut_float, data_get_float( var__ut_float ) + 0.25 );
		data_reset( peek__ut_data_2, var__ut_float );
	}
	assert_float_eq(( float )( CYCLE_COUNT >> 1 ), data_get_float( var__ut_float ), 0.0 );

	/* Voting operations */
	/* I: -  II: -  III: -  M: -  */
	assert_not( data_get_changed( peek__ut_data_2, var__ut_vote ));
	assert_not( voted_valid( var__ut_vote ));
	/* I: -  II: 0  III: -  M: -  */
	voted_set_byte( var__ut_vote, 2, 0, &vote_byte );
	assert_not( data_get_changed( peek__ut_data_2, var__ut_vote ));
	assert_not( voted_valid( var__ut_vote ));
	/* I: -  II: 0  III: 0  M: 0  */
	voted_set_byte( var__ut_vote, 3, 0, &vote_byte );
	assert( data_get_changed( peek__ut_data_2, var__ut_vote ));
	data_reset( peek__ut_data_2, var__ut_vote );
	assert( voted_valid( var__ut_vote ));
	assert_u32_eq( 0, data_get_byte( var__ut_vote ));
	/* I: -  II: 0  III: 1  M: -  */
	voted_set_byte( var__ut_vote, 3, 1, &vote_byte );
	assert( data_get_changed( peek__ut_data_2, var__ut_vote ));
	data_reset( peek__ut_data_2, var__ut_vote );
	assert_not( voted_valid( var__ut_vote ));

	do {
		/* yield */
		*co_p = &&L__8;
	
		return CO_YIELD;

		L__8:;
	} while ( 0 );

	/* I: 1  II: 0  III: 1  M: 1  */
	voted_set_byte( var__ut_vote, 1, 1, &vote_byte );
	assert( data_get_changed( peek__ut_data_2, var__ut_vote ));
	data_reset( peek__ut_data_2, var__ut_vote );
	assert( voted_valid( var__ut_vote ));
	assert_u32_eq( 1, data_get_byte( var__ut_vote ));
	/* I: 1  II: 0  III: 0  M: 0  */
	voted_set_byte( var__ut_vote, 3, 0, &vote_byte );
	assert( data_get_changed( peek__ut_data_2, var__ut_vote ));
	data_reset( peek__ut_data_2, var__ut_vote );
	assert( voted_valid( var__ut_vote ));
	assert_u32_eq( 0, data_get_byte( var__ut_vote ));
	/* I: 1  II: 2  III: 0  M: -  */
	voted_set_byte( var__ut_vote, 2, 2, &vote_byte );
	assert( data_get_changed( peek__ut_data_2, var__ut_vote ));
	data_reset( peek__ut_data_2, var__ut_vote );
	assert_not( voted_valid( var__ut_vote ));
	/* I: 3  II: 2  III: 3  M: 3  */
	voted_set_byte( var__ut_vote, 1, 3, &vote_byte );
	voted_set_byte( var__ut_vote, 3, 3, &vote_byte );
	assert( data_get_changed( peek__ut_data_2, var__ut_vote ));
	data_reset( peek__ut_data_2, var__ut_vote );
	assert( voted_valid( var__ut_vote ));
	assert_u32_eq( 3, data_get_byte( var__ut_vote ));

	do {
		/* yield */
		*co_p = &&L__9;
	
		return CO_YIELD;

		L__9:;
	} while ( 0 );

	/* I: 3  II: 3  III: 3  M: 3  */
	voted_set_byte( var__ut_vote, 2, 3, &vote_byte );
	assert_not( data_get_changed( peek__ut_data_2, var__ut_vote ));
	assert( voted_valid( var__ut_vote ));
	assert_u32_eq( 3, data_get_byte( var__ut_vote ));
	/* I: 4  II: 3  III: 3  M: 3  */
	voted_set_byte( var__ut_vote, 1, 4, &vote_byte );
	assert_not( data_get_changed( peek__ut_data_2, var__ut_vote ));
	assert( voted_valid( var__ut_vote ));
	assert_u32_eq( 3, data_get_byte( var__ut_vote ));
	/* RESET */
	voted_set_byte( var__ut_vote, 3, 2, &vote_byte );
	data_reset( peek__ut_data_2, var__ut_vote );
	/* end */
	*co_p = &&L__END__ut_data_2;

	L__END__ut_data_2:
	
	return CO_END;
}
Esempio n. 4
0
/**
 * Initializes a given Metric attribute from stream content.
 *
 * \param metric the Metric.
 * \param attr_id the Metric's attribute ID.
 * \param stream the value of Metric's attribute.
 * \param data_entry output parameter to describe data value.
 *
 * \return \b 1, if the Metric's attribute is properly modified; \b 0 otherwise.
 *
 */
int dimutil_fill_metric_attr(struct Metric *metric, OID_Type attr_id,
			     ByteStreamReader *stream, DataEntry *data_entry)
{

	int result = 1;
	int error = 0;

	switch (attr_id) {
	case MDC_ATTR_ID_HANDLE:
		metric->handle = read_intu16(stream, &error);
		if (error) {
			result = 0;
			break;
		}
		data_set_handle(data_entry, "Handle", &metric->handle);
		break;
	case MDC_ATTR_ID_TYPE:
		del_type(&(metric->type));
		decode_type(stream, &(metric->type), &error);
		if (error) {
			result = 0;
			break;
		}
		data_set_type(data_entry, "Type", &metric->type);
		break;
	case MDC_ATTR_SUPPLEMENTAL_TYPES:
		del_supplementaltypelist(&metric->supplemental_types);
		decode_supplementaltypelist(stream,
					    &(metric->supplemental_types),
						&error);
		if (error) {
			result = 0;
			break;
		}
		data_set_attribute_supplemental_types(data_entry,
						"Supplemental-Types",
						&metric->supplemental_types);
		break;
	case MDC_ATTR_METRIC_SPEC_SMALL:
		del_metricspecsmall(&metric->metric_spec_small);
		decode_metricspecsmall(stream,
				       &(metric->metric_spec_small),
					&error);
		if (error) {
			result = 0;
			break;
		}
		data_set_attribute_metric_spec_small(data_entry, "Metric-Spec-Small",
					&metric->metric_spec_small);
		break;
	case MDC_ATTR_METRIC_STRUCT_SMALL:
		del_metricstructuresmall(&(metric->metric_structure_small));
		decode_metricstructuresmall(stream,
					    &(metric->metric_structure_small),
						&error);
		if (error) {
			result = 0;
			break;
		}
		data_set_attribute_metric_structure_small(data_entry, "Metric-Structure-Small",
					&metric->metric_structure_small);
		break;
	case MDC_ATTR_MSMT_STAT:
		metric->measurement_status = read_intu16(stream, &error);
		if (error) {
			result = 0;
			break;
		}
		data_set_intu16(data_entry, "Measurement-Status", &metric->measurement_status);
		break;
	case MDC_ATTR_ID_PHYSIO:
		metric->metric_id = read_intu16(stream, &error);
		if (error) {
			result = 0;
			break;
		}
		metric->use_metric_id_field = 1; // TRUE
		data_set_oid_type(data_entry, "Metric-Id", &metric->metric_id);
		break;
	case MDC_ATTR_ID_PHYSIO_LIST:
		del_metricidlist(&metric->metric_id_list);
		decode_metricidlist(stream, &metric->metric_id_list, &error);
		if (error) {
			result = 0;
			break;
		}
		data_set_metric_id_list(data_entry, "Metric-Id-List", &metric->metric_id_list);
		break;
	case MDC_ATTR_METRIC_ID_PART:
		metric->metric_id_partition = read_intu16(stream, &error);
		if (error) {
			result = 0;
			break;
		}
		metric->use_metric_id_partition_field = 1; // TRUE
		data_set_intu16(data_entry, "Metric-Id-Partition", &metric->metric_id_partition);
		break;
	case MDC_ATTR_UNIT_CODE:
		metric->unit_code = read_intu16(stream, &error);
		if (error) {
			result = 0;
			break;
		}
		data_set_oid_type(data_entry, "Unit-Code", &metric->unit_code);
		break;
	case MDC_ATTR_ATTRIBUTE_VAL_MAP:
		del_attrvalmap(&metric->attribute_value_map);
		decode_attrvalmap(stream, &(metric->attribute_value_map), &error);
		if (error) {
			result = 0;
			break;
		}
		data_set_attribute_value_map(data_entry, "Attribute-Value-Map",
						&metric->attribute_value_map);
		break;
	case MDC_ATTR_SOURCE_HANDLE_REF:
		metric->source_handle_reference = read_intu16(stream, &error);
		if (error) {
			result = 0;
			break;
		}
		data_set_handle(data_entry, "Source-Handle-Reference", &metric->source_handle_reference);
		break;
	case MDC_ATTR_ID_LABEL_STRING:
		del_octet_string(&metric->label_string);
		decode_octet_string(stream, &(metric->label_string), &error);
		if (error) {
			result = 0;
			break;
		}
		data_set_label_string(data_entry, "Label-String", &metric->label_string);
		break;
	case MDC_ATTR_UNIT_LABEL_STRING:
		del_octet_string(&metric->unit_label_string);
		decode_octet_string(stream, &(metric->unit_label_string), &error);
		if (error) {
			result = 0;
			break;
		}
		data_set_label_string(data_entry, "Unit-LabelString", &metric->unit_label_string);
		break;
	case MDC_ATTR_TIME_STAMP_ABS:
		del_absolutetime(&metric->absolute_time_stamp);
		decode_absolutetime(stream, &(metric->absolute_time_stamp), &error);
		if (error) {
			result = 0;
			break;
		}
		data_set_absolute_time(data_entry, "Absolute-Time-Stamp",
				       &metric->absolute_time_stamp);
		break;
	case MDC_ATTR_TIME_STAMP_REL:
		metric->relative_time_stamp = read_intu32(stream, &error);
		if (error) {
			result = 0;
			break;
		}
		data_set_intu32(data_entry, "Relative-Time-Stamp", &metric->relative_time_stamp);
		break;
	case MDC_ATTR_TIME_STAMP_REL_HI_RES:
		del_highresrelativetime(&metric->hi_res_time_stamp);
		decode_highresrelativetime(stream,
					   &(metric->hi_res_time_stamp),
						&error);
		if (error) {
			result = 0;
			break;
		}
		data_set_high_res_relative_time(data_entry, "HiRes-Time-Stamp", &metric->hi_res_time_stamp);
		break;
	case MDC_ATTR_TIME_PD_MSMT_ACTIVE:
		metric->measure_active_period = read_float(stream, &error);
		if (error) {
			result = 0;
			break;
		}
		data_set_float(data_entry, "Measure-Active-Period", &metric->measure_active_period);
		break;
	default:
		DEBUG("Unrecognized metric attribute-id %d", attr_id);
		break;
	}

	return result;
}