Mercurial > public > ostc4
comparison Discovery/Src/show_logbook.c @ 653:269e57ac4e56
Bugfix temperature display Logpage2:
Temperature was shown in Centidegrees (Fahrenheit as well as Celsius). Root cause was that conversion was done via character cutting (string: removal of last digit). This has been replaced by a factor 10 devision.
| author | Ideenmodellierer |
|---|---|
| date | Sun, 25 Apr 2021 20:36:18 +0200 |
| parents | 2586f7b734f4 |
| children | 1b995079c045 |
comparison
equal
deleted
inserted
replaced
| 652:f6212495f34f | 653:269e57ac4e56 |
|---|---|
| 772 int16_t maxVal = 0; | 772 int16_t maxVal = 0; |
| 773 int newTop = 0; | 773 int newTop = 0; |
| 774 int newBottom = 0; | 774 int newBottom = 0; |
| 775 uint16_t step = 0; | 775 uint16_t step = 0; |
| 776 int16_t maxValTop = 0; | 776 int16_t maxValTop = 0; |
| 777 int16_t tmp = 0; | |
| 777 | 778 |
| 778 scaleHelper(dataLength, tempdata, wintemp.top, wintemp.bottom, | 779 scaleHelper(dataLength, tempdata, wintemp.top, wintemp.bottom, |
| 779 &minVal, &maxVal, &newTop, &newBottom, | 780 &minVal, &maxVal, &newTop, &newBottom, |
| 780 &step, &maxValTop); // newTop is wintemp.top | 781 &step, &maxValTop); // newTop is wintemp.top |
| 781 | 782 |
| 784 &step, &maxValTop); | 785 &step, &maxValTop); |
| 785 | 786 |
| 786 // temperature in 1/10 �C | 787 // temperature in 1/10 �C |
| 787 int deltaline = (1 + wintemp.bottom - wintemp.top)/5; | 788 int deltaline = (1 + wintemp.bottom - wintemp.top)/5; |
| 788 char msg[15]; | 789 char msg[15]; |
| 789 int tmp = maxValTop; | 790 |
| 790 int converted; | 791 /* temperature is provided in centi scaling => convert */ |
| 792 maxValTop /= 10; | |
| 793 step /= 10; | |
| 794 | |
| 795 tmp = maxValTop; | |
| 791 for(int i = 1; i<=5; i++) | 796 for(int i = 1; i<=5; i++) |
| 792 { | 797 { |
| 793 tmp -= step; | 798 tmp -= step; |
| 794 if(settingsGetPointer()->nonMetricalSystem) { | |
| 795 converted = unit_temperature_integer(tmp); | |
| 796 } | |
| 797 else{ | |
| 798 converted = tmp; | |
| 799 } | |
| 800 //if(tmp < 0) | |
| 801 //break; | |
| 802 winsmal.top = wintemp.top + deltaline * i - 14; | 799 winsmal.top = wintemp.top + deltaline * i - 14; |
| 803 winsmal.bottom = winsmal.top + 16; | 800 winsmal.bottom = winsmal.top + 16; |
| 804 if((converted >= 0) && (converted < 100)) | 801 snprintf(msg,15,"%2i",unit_temperature_integer(tmp)); |
| 805 snprintf(msg,15,"%1i",converted); | |
| 806 else | |
| 807 snprintf(msg,15,"%2i",converted); | |
| 808 Gfx_write_label_var(hgfx, winsmal.left, winsmal.right,winsmal.top, &FontT24,CLUT_LogbookTemperature,msg); | 802 Gfx_write_label_var(hgfx, winsmal.left, winsmal.right,winsmal.top, &FontT24,CLUT_LogbookTemperature,msg); |
| 809 } | 803 } |
| 810 | 804 |
| 811 | 805 |
| 812 //--- print temperature graph --- | 806 //--- print temperature graph --- |
