# HG changeset patch # User Matti Hamalainen # Date 1579751904 -7200 # Node ID c2209251fa3324c2c20334722c5e3a3c5aa3f79a # Parent 0b73fd8ee4cd51cb5bc957853a4e3bf297040d9f weather: Make things a bit more generic. diff -r 0b73fd8ee4cd -r c2209251fa33 weather.tcl --- a/weather.tcl Thu Jan 23 05:56:20 2020 +0200 +++ b/weather.tcl Thu Jan 23 05:58:24 2020 +0200 @@ -145,21 +145,27 @@ } -# Translate cloudiness status -proc weather_get_cloudiness_status {uvalue} { - global weather_msg_cloudiness_status +proc weather_get_raw_table_value {utable uvalue} { + # If the data was not got, return empty value + if {$uvalue == "" || $uvalue == "NaN"} { + return "" + } + return "[expr int($uvalue) + 1]/[llength $utable]" +} + + +# "Translate" a straight table index (0-N) to table value +proc weather_get_table_value {utable uvalue} { # If the data was not got, return empty value if {$uvalue == "" || $uvalue == "NaN"} { return "" } set uvalue [expr int($uvalue)] - - set ulen [llength $weather_msg_cloudiness_status] + set ulen [llength $utable] if {$uvalue >= 0 && $uvalue < $ulen} { - set umsg [lindex $weather_msg_cloudiness_status $uvalue] - return "$umsg ($uvalue/[expr $ulen - 1])" + return [lindex $utable $uvalue] } else { return "ERROR ($uvalue)" } @@ -169,6 +175,7 @@ #------------------------------------------------------------------------- # Produce one location of weather data as a string proc weather_get_str {udata umsg} { + global weather_msg_cloudiness array unset uvals set uvals(station) [lindex $udata 0] @@ -182,7 +189,8 @@ set uvals(wind_speed) [lindex $udata 8] set uvals(wind_direction) [weather_get_wind_direction [lindex $udata 9]] set uvals(wind_direction_deg) [lindex $udata 9] - set uvals(cloudiness) [weather_get_cloudiness_status [lindex $udata 10]] + set uvals(cloudiness) [weather_get_table_value $weather_msg_cloudiness [lindex $udata 10]] + set uvals(cloudiness_val) [weather_get_raw_table_value $weather_msg_cloudiness [lindex $udata 10]] set uvals(road_surface_temp) [lindex $udata 11] set uvals(precipitation) [lindex $udata 12] set uvals(visibility) [lindex $udata 13]