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; }
/** * 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; }
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; }
/** * 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; }