Commit 6db6e530 authored by Claes Sjofors's avatar Claes Sjofors

Bugfix in Max object. Default values were wrong and didn't work for negative input values

parent bdf31a73
......@@ -109,3 +109,4 @@
081024 cs xtthelp New program co_help to view helptexts.
081124 cs qcom Quota check for max number of buffered messages in a queue added.
090224 cs xtthelp New home button in help window.
090506 cs pwrb Bugfix in Max object. Default values were wrong and didn't work for negative input values.
\ No newline at end of file
......@@ -166,14 +166,14 @@ SObject pwrb:Class
EndObject
Object Template Max
Body RtBody
Attr In1 = FLT_MIN
Attr In2 = FLT_MIN
Attr In3 = FLT_MIN
Attr In4 = FLT_MIN
Attr In5 = FLT_MIN
Attr In6 = FLT_MIN
Attr In7 = FLT_MIN
Attr In8 = FLT_MIN
Attr In1 = FLT_NMAX
Attr In2 = FLT_NMAX
Attr In3 = FLT_NMAX
Attr In4 = FLT_NMAX
Attr In5 = FLT_NMAX
Attr In6 = FLT_NMAX
Attr In7 = FLT_NMAX
Attr In8 = FLT_NMAX
EndBody
EndObject
EndObject
......
......@@ -2026,12 +2026,14 @@ int wb_wblnode::attrStringToValue( int type_id, char *value_str,
}
case pwr_eType_Float32:
{
if ( strcmp( value_str, "FLT_MIN") == 0) {
if ( strcmp( value_str, "FLT_MIN") == 0)
*(float *)buffer_ptr = FLT_MIN;
}
else if ( strcmp( value_str, "FLT_MAX") == 0) {
else if ( strcmp( value_str, "FLT_NMIN") == 0)
*(float *)buffer_ptr = -FLT_MIN;
else if ( strcmp( value_str, "FLT_MAX") == 0)
*(float *)buffer_ptr = FLT_MAX;
}
else if ( strcmp( value_str, "FLT_NMAX") == 0)
*(float *)buffer_ptr = -FLT_MAX;
else if ( sscanf( value_str, "%f", (float *)buffer_ptr) != 1)
return 0;
break;
......
......@@ -69,8 +69,12 @@ int wnav_attr_string_to_value( ldh_tSesContext ldhses, int type_id, char *value
case pwr_eType_Float32: {
if ( strcmp( value_str, "FLT_MIN") == 0)
*(float *)buffer_ptr = FLT_MIN;
else if ( strcmp( value_str, "FLT_NMIN") == 0)
*(float *)buffer_ptr = -FLT_MIN;
else if ( strcmp( value_str, "FLT_MAX") == 0)
*(float *)buffer_ptr = FLT_MAX;
else if ( strcmp( value_str, "FLT_NMAX") == 0)
*(float *)buffer_ptr = -FLT_MAX;
else if ( sscanf( value_str, "%f", (float *)buffer_ptr) != 1)
return WNAV__INPUT_SYNTAX;
break;
......@@ -293,10 +297,18 @@ void wnav_attrvalue_to_string( ldh_tSesContext ldhses, int type_id, void *value
strcpy( str, "FLT_MIN");
*len = strlen( str);
}
else if ( *(float *)value_ptr == -FLT_MIN) {
strcpy( str, "FLT_NMIN");
*len = strlen( str);
}
else if ( *(float *)value_ptr == FLT_MAX) {
strcpy( str, "FLT_MAX");
*len = strlen( str);
}
else if ( *(float *)value_ptr == -FLT_MAX) {
strcpy( str, "FLT_NMAX");
*len = strlen( str);
}
else
*len = sprintf( str, "%f", *(float *)value_ptr);
*buff = str;
......
......@@ -239,8 +239,12 @@ int XNav::attr_string_to_value( int type_id, char *value_str,
case pwr_eType_Float32: {
if ( strcmp( value_str, "FLT_MIN") == 0)
*(float *)buffer_ptr = FLT_MIN;
else if ( strcmp( value_str, "FLT_NMIN") == 0)
*(float *)buffer_ptr = -FLT_MIN;
else if ( strcmp( value_str, "FLT_MAX") == 0)
*(float *)buffer_ptr = FLT_MAX;
else if ( strcmp( value_str, "FLT_NMAX") == 0)
*(float *)buffer_ptr = -FLT_MAX;
else if ( sscanf( value_str, "%f", (float *)buffer_ptr) != 1)
return XNAV__INPUT_SYNTAX;
break;
......@@ -451,10 +455,18 @@ void XNav::attrvalue_to_string( int type_id, pwr_tTid tid, void *value_ptr,
strcpy( str, "FLT_MIN");
*len = strlen(str);
}
else if ( *(float *)value_ptr == -FLT_MIN) {
strcpy( str, "FLT_NMIN");
*len = strlen(str);
}
else if ( *(float *)value_ptr == FLT_MAX) {
strcpy( str, "FLT_MAX");
*len = strlen(str);
}
else if ( *(float *)value_ptr == -FLT_MAX) {
strcpy( str, "FLT_NMAX");
*len = strlen(str);
}
else {
if ( !format)
*len = snprintf( str, size, "%g", *(float *)value_ptr);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment