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 @@ ...@@ -109,3 +109,4 @@
081024 cs xtthelp New program co_help to view helptexts. 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. 081124 cs qcom Quota check for max number of buffered messages in a queue added.
090224 cs xtthelp New home button in help window. 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 ...@@ -166,14 +166,14 @@ SObject pwrb:Class
EndObject EndObject
Object Template Max Object Template Max
Body RtBody Body RtBody
Attr In1 = FLT_MIN Attr In1 = FLT_NMAX
Attr In2 = FLT_MIN Attr In2 = FLT_NMAX
Attr In3 = FLT_MIN Attr In3 = FLT_NMAX
Attr In4 = FLT_MIN Attr In4 = FLT_NMAX
Attr In5 = FLT_MIN Attr In5 = FLT_NMAX
Attr In6 = FLT_MIN Attr In6 = FLT_NMAX
Attr In7 = FLT_MIN Attr In7 = FLT_NMAX
Attr In8 = FLT_MIN Attr In8 = FLT_NMAX
EndBody EndBody
EndObject EndObject
EndObject EndObject
......
...@@ -2026,12 +2026,14 @@ int wb_wblnode::attrStringToValue( int type_id, char *value_str, ...@@ -2026,12 +2026,14 @@ int wb_wblnode::attrStringToValue( int type_id, char *value_str,
} }
case pwr_eType_Float32: case pwr_eType_Float32:
{ {
if ( strcmp( value_str, "FLT_MIN") == 0) { if ( strcmp( value_str, "FLT_MIN") == 0)
*(float *)buffer_ptr = FLT_MIN; *(float *)buffer_ptr = FLT_MIN;
} else if ( strcmp( value_str, "FLT_NMIN") == 0)
else if ( strcmp( value_str, "FLT_MAX") == 0) { *(float *)buffer_ptr = -FLT_MIN;
else if ( strcmp( value_str, "FLT_MAX") == 0)
*(float *)buffer_ptr = FLT_MAX; *(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) else if ( sscanf( value_str, "%f", (float *)buffer_ptr) != 1)
return 0; return 0;
break; break;
......
...@@ -69,8 +69,12 @@ int wnav_attr_string_to_value( ldh_tSesContext ldhses, int type_id, char *value ...@@ -69,8 +69,12 @@ int wnav_attr_string_to_value( ldh_tSesContext ldhses, int type_id, char *value
case pwr_eType_Float32: { case pwr_eType_Float32: {
if ( strcmp( value_str, "FLT_MIN") == 0) if ( strcmp( value_str, "FLT_MIN") == 0)
*(float *)buffer_ptr = FLT_MIN; *(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) else if ( strcmp( value_str, "FLT_MAX") == 0)
*(float *)buffer_ptr = FLT_MAX; *(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) else if ( sscanf( value_str, "%f", (float *)buffer_ptr) != 1)
return WNAV__INPUT_SYNTAX; return WNAV__INPUT_SYNTAX;
break; break;
...@@ -293,10 +297,18 @@ void wnav_attrvalue_to_string( ldh_tSesContext ldhses, int type_id, void *value ...@@ -293,10 +297,18 @@ void wnav_attrvalue_to_string( ldh_tSesContext ldhses, int type_id, void *value
strcpy( str, "FLT_MIN"); strcpy( str, "FLT_MIN");
*len = strlen( str); *len = strlen( str);
} }
else if ( *(float *)value_ptr == -FLT_MIN) {
strcpy( str, "FLT_NMIN");
*len = strlen( str);
}
else if ( *(float *)value_ptr == FLT_MAX) { else if ( *(float *)value_ptr == FLT_MAX) {
strcpy( str, "FLT_MAX"); strcpy( str, "FLT_MAX");
*len = strlen( str); *len = strlen( str);
} }
else if ( *(float *)value_ptr == -FLT_MAX) {
strcpy( str, "FLT_NMAX");
*len = strlen( str);
}
else else
*len = sprintf( str, "%f", *(float *)value_ptr); *len = sprintf( str, "%f", *(float *)value_ptr);
*buff = str; *buff = str;
......
...@@ -239,8 +239,12 @@ int XNav::attr_string_to_value( int type_id, char *value_str, ...@@ -239,8 +239,12 @@ int XNav::attr_string_to_value( int type_id, char *value_str,
case pwr_eType_Float32: { case pwr_eType_Float32: {
if ( strcmp( value_str, "FLT_MIN") == 0) if ( strcmp( value_str, "FLT_MIN") == 0)
*(float *)buffer_ptr = FLT_MIN; *(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) else if ( strcmp( value_str, "FLT_MAX") == 0)
*(float *)buffer_ptr = FLT_MAX; *(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) else if ( sscanf( value_str, "%f", (float *)buffer_ptr) != 1)
return XNAV__INPUT_SYNTAX; return XNAV__INPUT_SYNTAX;
break; break;
...@@ -451,10 +455,18 @@ void XNav::attrvalue_to_string( int type_id, pwr_tTid tid, void *value_ptr, ...@@ -451,10 +455,18 @@ void XNav::attrvalue_to_string( int type_id, pwr_tTid tid, void *value_ptr,
strcpy( str, "FLT_MIN"); strcpy( str, "FLT_MIN");
*len = strlen(str); *len = strlen(str);
} }
else if ( *(float *)value_ptr == -FLT_MIN) {
strcpy( str, "FLT_NMIN");
*len = strlen(str);
}
else if ( *(float *)value_ptr == FLT_MAX) { else if ( *(float *)value_ptr == FLT_MAX) {
strcpy( str, "FLT_MAX"); strcpy( str, "FLT_MAX");
*len = strlen(str); *len = strlen(str);
} }
else if ( *(float *)value_ptr == -FLT_MAX) {
strcpy( str, "FLT_NMAX");
*len = strlen(str);
}
else { else {
if ( !format) if ( !format)
*len = snprintf( str, size, "%g", *(float *)value_ptr); *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