Mercurial > public > ostc4
comparison Discovery/Src/show_logbook.c @ 188:ddc21166d25b
Merged in janlmulder/ostc4/cleanup-2 (pull request #5)
Trivial cleanup
author | heinrichsweikamp <bitbucket@heinrichsweikamp.com> |
---|---|
date | Fri, 15 Mar 2019 12:55:58 +0000 |
parents | f11f0bf6ef2d |
children | 5a633dece17a |
comparison
equal
deleted
inserted
replaced
185:1bb24fd3fc92 | 188:ddc21166d25b |
---|---|
38 #include <stdio.h> | 38 #include <stdio.h> |
39 #include <stdlib.h> // for abs() | 39 #include <stdlib.h> // for abs() |
40 | 40 |
41 /* Private variables ---------------------------------------------------------*/ | 41 /* Private variables ---------------------------------------------------------*/ |
42 | 42 |
43 GFX_DrawCfgScreen tLOGscreen; | 43 static GFX_DrawCfgScreen tLOGscreen; |
44 GFX_DrawCfgScreen tLOGbackground; | 44 static GFX_DrawCfgScreen tLOGbackground; |
45 | 45 |
46 | 46 |
47 void print_gas_name(char* output,uint8_t lengh,uint8_t oxygen,uint8_t helium); | 47 static void print_gas_name(char* output,uint8_t lengh,uint8_t oxygen,uint8_t helium); |
48 int16_t get_colour(int16_t color); | 48 static int16_t get_colour(int16_t color); |
49 | 49 |
50 /* Overview */ | 50 /* Overview */ |
51 void show_logbook_logbook_show_log_page1(GFX_DrawCfgScreen *hgfx, uint8_t StepBackwards); | 51 static void show_logbook_logbook_show_log_page1(GFX_DrawCfgScreen *hgfx, uint8_t StepBackwards); |
52 /* Temperature */ | 52 /* Temperature */ |
53 void show_logbook_logbook_show_log_page2(GFX_DrawCfgScreen *hgfx, uint8_t StepBackwards); | 53 static void show_logbook_logbook_show_log_page2(GFX_DrawCfgScreen *hgfx, uint8_t StepBackwards); |
54 /* Gas List */ | 54 /* Gas List */ |
55 void show_logbook_logbook_show_log_page3(GFX_DrawCfgScreen *hgfx, uint8_t StepBackwards); | 55 static void show_logbook_logbook_show_log_page3(GFX_DrawCfgScreen *hgfx, uint8_t StepBackwards); |
56 /* ppO2 */ | 56 /* ppO2 */ |
57 void show_logbook_logbook_show_log_page4(GFX_DrawCfgScreen *hgfx, uint8_t StepBackwards); | 57 static void show_logbook_logbook_show_log_page4(GFX_DrawCfgScreen *hgfx, uint8_t StepBackwards); |
58 | 58 |
59 | 59 static inline uint32_t MaxU32LOG(uint32_t a, uint32_t b) |
60 inline uint32_t MinU32LOG(uint32_t a, uint32_t b) | |
61 { | |
62 return ((a<b)?a:b); | |
63 } | |
64 | |
65 uint32_t MaxU32LOG(uint32_t a, uint32_t b) | |
66 { | 60 { |
67 return((a>b)?a:b); | 61 return((a>b)?a:b); |
68 } | 62 } |
69 | |
70 void write_label_(GFX_DrawCfgScreen *screenInput, SWindowGimpStyle win, const tFont *Font, uint8_t color, const char *text) | |
71 { | |
72 GFX_DrawCfgWindow hgfx; | |
73 | |
74 if( win.right > 799) | |
75 win.right = 799; | |
76 | |
77 if(win.top > 479) | |
78 win.top = 479; | |
79 hgfx.Image = screenInput; | |
80 hgfx.WindowNumberOfTextLines = 1; | |
81 hgfx.WindowLineSpacing = 0; | |
82 hgfx.WindowTab = 0; | |
83 hgfx.WindowX0 = win.left; | |
84 hgfx.WindowX1 = win.right; | |
85 hgfx.WindowY1 = 479 - win.top; | |
86 if(hgfx.WindowY1 < Font->height) | |
87 hgfx.WindowY0 = 0; | |
88 else | |
89 hgfx.WindowY0 = hgfx.WindowY1 - Font->height; | |
90 | |
91 GFX_write_label(Font, &hgfx, text, color); | |
92 } | |
93 | |
94 | 63 |
95 /** | 64 /** |
96 ****************************************************************************** | 65 ****************************************************************************** |
97 * @brief GFX write label. / print coordinate system & depth graph | 66 * @brief GFX write label. / print coordinate system & depth graph |
98 * @author Peter Ryser | 67 * @author Peter Ryser |
106 * @param dataLength: | 75 * @param dataLength: |
107 * @param depthdata: | 76 * @param depthdata: |
108 * @param colordata: 1 | 77 * @param colordata: 1 |
109 * @retval None | 78 * @retval None |
110 */ | 79 */ |
111 void show_logbook_draw_depth_graph(GFX_DrawCfgScreen *hgfx, uint8_t StepBackwards, SWindowGimpStyle* window, short mode, uint16_t dataLength, uint16_t* depthdata, uint8_t * colordata, uint16_t * decostopdata) | 80 static void show_logbook_draw_depth_graph(GFX_DrawCfgScreen *hgfx, uint8_t StepBackwards, SWindowGimpStyle* window, short mode, uint16_t dataLength, uint16_t* depthdata, uint8_t * colordata, uint16_t * decostopdata) |
112 { | 81 { |
113 SLogbookHeader logbookHeader; | 82 SLogbookHeader logbookHeader; |
114 SWindowGimpStyle wintemp = *window; | 83 SWindowGimpStyle wintemp = *window; |
115 SWindowGimpStyle winsmal; | 84 SWindowGimpStyle winsmal; |
116 logbook_getHeader(StepBackwards, &logbookHeader); | 85 logbook_getHeader(StepBackwards, &logbookHeader); |
283 * @retval *OutputStepOfScale, *OutputMaxValueOnScale, *OutputTop, *OutputBottom | 252 * @retval *OutputStepOfScale, *OutputMaxValueOnScale, *OutputTop, *OutputBottom |
284 | 253 |
285 * fit to multiples of 1�C (data format is 1/10�C) | 254 * fit to multiples of 1�C (data format is 1/10�C) |
286 */ | 255 */ |
287 | 256 |
288 void scaleAdapt( int InputTop, int InputBottom, | 257 static void scaleAdapt( int InputTop, int InputBottom, |
289 int16_t *OutputMinValue, int16_t *OutputMaxValue, int *OutputTop, int *OutputBottom, | 258 int16_t *OutputMinValue, int16_t *OutputMaxValue, int *OutputTop, int *OutputBottom, |
290 uint16_t *OutputStepOfScale, int16_t *OutputMaxValueOnScale) | 259 uint16_t *OutputStepOfScale, int16_t *OutputMaxValueOnScale) |
291 { | 260 { |
292 // uint16_t oldScale; | 261 // uint16_t oldScale; |
293 uint16_t newScale; | 262 uint16_t newScale; |
385 * pixel 390 gesamt h�he | 354 * pixel 390 gesamt h�he |
386 | 355 |
387 * for temperature, input is �C * 10 | 356 * for temperature, input is �C * 10 |
388 */ | 357 */ |
389 | 358 |
390 void scaleHelper( uint16_t InputDataLength, int16_t *InputDataArray, int InputTop, int InputBottom, | 359 static void scaleHelper( uint16_t InputDataLength, int16_t *InputDataArray, int InputTop, int InputBottom, |
391 int16_t *OutputMinValue, int16_t *OutputMaxValue, int *OutputTop, int *OutputBottom, | 360 int16_t *OutputMinValue, int16_t *OutputMaxValue, int *OutputTop, int *OutputBottom, |
392 uint16_t *OutputStepOfScale, int16_t *OutputMaxValueOnScale) | 361 uint16_t *OutputStepOfScale, int16_t *OutputMaxValueOnScale) |
393 { | 362 { |
394 int32_t datamin = INT16_MAX; // 32 bit for delta calculation ( delta is unsigned -> value can be 2x INT16_MAX) | 363 int32_t datamin = INT16_MAX; // 32 bit for delta calculation ( delta is unsigned -> value can be 2x INT16_MAX) |
395 int32_t datamax = INT16_MIN; | 364 int32_t datamax = INT16_MIN; |
439 ****************************************************************************** | 408 ****************************************************************************** |
440 * | 409 * |
441 * @param hgfx: | 410 * @param hgfx: |
442 * @retval None | 411 * @retval None |
443 */ | 412 */ |
444 void show_logbook_logbook_show_log_page1(GFX_DrawCfgScreen *hgfx,uint8_t StepBackwards) | 413 static void show_logbook_logbook_show_log_page1(GFX_DrawCfgScreen *hgfx,uint8_t StepBackwards) |
445 { | 414 { |
446 SWindowGimpStyle wintemp; | 415 SWindowGimpStyle wintemp; |
447 SWindowGimpStyle winsmal; | 416 SWindowGimpStyle winsmal; |
448 wintemp.left = 50; | 417 wintemp.left = 50; |
449 wintemp.right = 799 - wintemp.left; | 418 wintemp.right = 799 - wintemp.left; |
659 | 628 |
660 show_logbook_draw_depth_graph(hgfx, StepBackwards, &wintemp, 1, dataLength, depthdata, gasdata, NULL); | 629 show_logbook_draw_depth_graph(hgfx, StepBackwards, &wintemp, 1, dataLength, depthdata, gasdata, NULL); |
661 } | 630 } |
662 | 631 |
663 | 632 |
664 void show_logbook_logbook_show_log_page2(GFX_DrawCfgScreen *hgfx, uint8_t StepBackwards) | 633 static void show_logbook_logbook_show_log_page2(GFX_DrawCfgScreen *hgfx, uint8_t StepBackwards) |
665 { | 634 { |
666 //*** Page2: Depth and Temperature **** | 635 //*** Page2: Depth and Temperature **** |
667 | 636 |
668 SWindowGimpStyle wintemp; | 637 SWindowGimpStyle wintemp; |
669 SWindowGimpStyle winsmal; | 638 SWindowGimpStyle winsmal; |
749 wintemp.top = newTop; | 718 wintemp.top = newTop; |
750 GFX_graph_print(hgfx,&wintemp,0,1,maxVal,minVal, (uint16_t *)tempdata,dataLength,CLUT_LogbookTemperature, NULL); | 719 GFX_graph_print(hgfx,&wintemp,0,1,maxVal,minVal, (uint16_t *)tempdata,dataLength,CLUT_LogbookTemperature, NULL); |
751 } | 720 } |
752 | 721 |
753 | 722 |
754 void show_logbook_logbook_show_log_page2_original(GFX_DrawCfgScreen *hgfx, uint8_t StepBackwards) | 723 static void build_logbook_test(uint8_t page, uint8_t StepBackwards) |
755 { | |
756 //*** Page2: Depth and Temperature **** | |
757 | |
758 SWindowGimpStyle wintemp; | |
759 SWindowGimpStyle winsmal; | |
760 wintemp.left = 50; | |
761 wintemp.right = 799 - wintemp.left; | |
762 wintemp.top = 50; | |
763 wintemp.bottom = 479 - 40; | |
764 | |
765 SLogbookHeader logbookHeader; | |
766 | |
767 logbook_getHeader(StepBackwards,&logbookHeader); | |
768 uint16_t dataLength = 0; | |
769 uint16_t depthdata[1000]; | |
770 uint8_t gasdata[1000]; | |
771 int16_t tempdata[1000]; | |
772 uint16_t decoDepthdata[1000]; | |
773 uint16_t *pDecoDepthData = 0; | |
774 | |
775 dataLength = logbook_readSampleData(StepBackwards, 1000, depthdata,gasdata, tempdata, NULL, NULL, NULL, NULL, NULL, NULL, NULL, decoDepthdata); | |
776 | |
777 /* test | |
778 for(int i = 0; i<dataLength/2; i++) | |
779 decoDepthdata[i] = 300; | |
780 | |
781 for(int i = dataLength/2; i<dataLength; i++) | |
782 decoDepthdata[i] = 1200; | |
783 */ | |
784 for(int i = 0; i<dataLength; i++) | |
785 { | |
786 if(decoDepthdata[i] >= 300) | |
787 { | |
788 pDecoDepthData = decoDepthdata; | |
789 break; | |
790 } | |
791 } | |
792 //--- print coordinate system & depth graph --- | |
793 show_logbook_draw_depth_graph(hgfx, StepBackwards, &wintemp, 0, dataLength, depthdata, gasdata, pDecoDepthData); | |
794 | |
795 //*** Temperature ************************************************* | |
796 | |
797 | |
798 int16_t datamax = -1000; // �C * 10 | |
799 int16_t datamin = +1000; | |
800 for(int i = 0; i < dataLength;i++) | |
801 { | |
802 if(tempdata[i]>datamax) | |
803 datamax = tempdata[i]; | |
804 if(tempdata[i]< datamin) | |
805 datamin = tempdata[i]; | |
806 } | |
807 float maxTmp = ((float)datamax) /10.f; | |
808 float minTmp = ((float)datamin) /10.f; | |
809 int deltaTmp = maxTmp - minTmp; | |
810 int tmpstep = 2; | |
811 | |
812 // 5 different scales: 1�C, 2�C, 4�C, 5�C, 10�C | |
813 // with 6 lines == 5 steps | |
814 if((deltaTmp) <=5) | |
815 { | |
816 tmpstep = 1; | |
817 } | |
818 else | |
819 if(deltaTmp <= (5*2)) | |
820 { | |
821 tmpstep = 2; | |
822 } | |
823 else | |
824 if(deltaTmp <= (5 * 4)) | |
825 { | |
826 tmpstep = 4; | |
827 } | |
828 else | |
829 if(deltaTmp <= (5 * 5)) | |
830 { | |
831 tmpstep = 5; | |
832 } | |
833 else | |
834 { | |
835 tmpstep = 10; | |
836 } | |
837 // int steps = deltaTmp/tmpstep; | |
838 | |
839 | |
840 // int steps = deltaTmp/5; | |
841 // int tmpstep = 5; | |
842 // if(steps > 4) | |
843 // tmpstep = 10; | |
844 | |
845 int maxtmpline = 0; | |
846 int mintmpline = 0; | |
847 if(minTmp < 0) | |
848 { | |
849 if(minTmp >= -5) | |
850 { | |
851 mintmpline = -5; | |
852 | |
853 } | |
854 else if(minTmp >= -10) | |
855 { | |
856 mintmpline = -10; | |
857 } | |
858 else | |
859 mintmpline = -15; | |
860 } | |
861 | |
862 if(maxTmp > 0) | |
863 { | |
864 while(maxtmpline < maxTmp) | |
865 maxtmpline += tmpstep; | |
866 } | |
867 | |
868 if(tmpstep < 5) | |
869 maxtmpline = MaxU32LOG(maxtmpline, 10); | |
870 else if(tmpstep == 5) | |
871 maxtmpline = MaxU32LOG(maxtmpline, 25); | |
872 else | |
873 maxtmpline = 50; | |
874 | |
875 maxtmpline += mintmpline; | |
876 | |
877 //--- print temperature labels --- | |
878 // input maxtmpline, tmpstep, deltaline | |
879 | |
880 winsmal.left = wintemp.right +6; | |
881 winsmal.top = wintemp.top - 3; | |
882 winsmal.right = wintemp.right + 30; | |
883 winsmal.bottom = winsmal.top + 16; | |
884 | |
885 write_label_(hgfx, winsmal,&FontT24,CLUT_LogbookTemperature,"[C]"); | |
886 | |
887 int deltaline = (wintemp.bottom - wintemp.top)/5; | |
888 char msg[3]; | |
889 int tmp = maxtmpline; | |
890 for(int i = 1; i<=5; i++) | |
891 { | |
892 tmp -= tmpstep; | |
893 //if(tmp < 0) | |
894 //break; | |
895 winsmal.top = wintemp.top + deltaline * i - 14; | |
896 winsmal.bottom = winsmal.top + 16; | |
897 snprintf(msg,3,"%2i",tmp); | |
898 write_label_(hgfx, winsmal,&FontT24,CLUT_LogbookTemperature,msg); | |
899 } | |
900 | |
901 | |
902 //--- print temperature graph --- | |
903 // input tempdata[i], maxtmpline, mintmpline, maxTmp, minTmp, deltaline, wintemp.top, dataLength, datamax, | |
904 | |
905 //adapt window | |
906 float ftmp =((maxtmpline - minTmp) * deltaline) /tmpstep + wintemp.top; | |
907 wintemp.bottom = ftmp; | |
908 if((ftmp - (int)ftmp) >= 0.5f) | |
909 wintemp.bottom++; | |
910 | |
911 ftmp = ((maxtmpline - maxTmp) * deltaline) /tmpstep + wintemp.top; | |
912 wintemp.top = ftmp; | |
913 if((ftmp - (int)ftmp) >= 0.5f) | |
914 wintemp.top++; | |
915 | |
916 if(wintemp.top <= wintemp.bottom) | |
917 { | |
918 for(int i = 0; i < dataLength;i++) | |
919 { | |
920 tempdata[i] -= mintmpline; | |
921 } | |
922 datamax -= mintmpline; | |
923 // hw 160518 | |
924 // es wird nur das Fenster (wintemp.top, wintemp.bottom) verwendet in dem Daten sind | |
925 // daher muss datamin angegeben werden | |
926 // der Gesamtbereich ist uninteressant | |
927 // Bsp Temperatur von 8�C bis 5�C | |
928 // Y-Achse ist 10�C (oben) bis 0�C (unten) | |
929 // aber wintemp.top ist 127 | |
930 // und wintemp.bottom ist 243 | |
931 GFX_graph_print(hgfx,&wintemp,0,1,datamax,datamin, (uint16_t *)tempdata,dataLength,CLUT_LogbookTemperature, NULL); | |
932 } | |
933 } | |
934 | |
935 | |
936 void build_logbook_test(uint8_t page, uint8_t StepBackwards) | |
937 { | 724 { |
938 uint32_t lastScreen,lastBackground; | 725 uint32_t lastScreen,lastBackground; |
939 | 726 |
940 lastScreen = tLOGscreen.FBStartAdress; | 727 lastScreen = tLOGscreen.FBStartAdress; |
941 lastBackground = tLOGbackground.FBStartAdress; | 728 lastBackground = tLOGbackground.FBStartAdress; |
998 releaseFrame(16,tLOGscreen.FBStartAdress); | 785 releaseFrame(16,tLOGscreen.FBStartAdress); |
999 releaseFrame(17,tLOGbackground.FBStartAdress); | 786 releaseFrame(17,tLOGbackground.FBStartAdress); |
1000 } | 787 } |
1001 | 788 |
1002 | 789 |
1003 void show_logbook_logbook_show_log_page3(GFX_DrawCfgScreen *hgfx, uint8_t StepBackwards) | 790 static void show_logbook_logbook_show_log_page3(GFX_DrawCfgScreen *hgfx, uint8_t StepBackwards) |
1004 { | 791 { |
1005 SWindowGimpStyle wintemp; | 792 SWindowGimpStyle wintemp; |
1006 SWindowGimpStyle winsmal; | 793 SWindowGimpStyle winsmal; |
1007 wintemp.left = 50; | 794 wintemp.left = 50; |
1008 wintemp.right = 799 - wintemp.left; | 795 wintemp.right = 799 - wintemp.left; |
1049 else | 836 else |
1050 button_start_single_action(surf1_menu_logbook_current_page, surf1_menu_logbook_show_log_page1, surf1_menu_logbook_show_log_next); | 837 button_start_single_action(surf1_menu_logbook_current_page, surf1_menu_logbook_show_log_page1, surf1_menu_logbook_show_log_next); |
1051 */ | 838 */ |
1052 } | 839 } |
1053 | 840 |
1054 void show_logbook_logbook_show_log_page4(GFX_DrawCfgScreen *hgfx, uint8_t StepBackwards) | 841 static void show_logbook_logbook_show_log_page4(GFX_DrawCfgScreen *hgfx, uint8_t StepBackwards) |
1055 { SWindowGimpStyle wintemp; | 842 { SWindowGimpStyle wintemp; |
1056 SWindowGimpStyle winsmal; | 843 SWindowGimpStyle winsmal; |
1057 wintemp.left = 50; | 844 wintemp.left = 50; |
1058 wintemp.right = 799 - wintemp.left; | 845 wintemp.right = 799 - wintemp.left; |
1059 wintemp.top = 50; | 846 wintemp.top = 50; |
1215 | 1002 |
1216 //--- define buttons --- | 1003 //--- define buttons --- |
1217 //button_start_single_action(surf1_menu_logbook_current_page, surf1_menu_logbook_show_log_page1, surf1_menu_logbook_show_log_next); | 1004 //button_start_single_action(surf1_menu_logbook_current_page, surf1_menu_logbook_show_log_page1, surf1_menu_logbook_show_log_next); |
1218 } | 1005 } |
1219 | 1006 |
1220 void print_gas_name(char* output,uint8_t length,uint8_t oxygen,uint8_t helium) | 1007 static void print_gas_name(char* output,uint8_t length,uint8_t oxygen,uint8_t helium) |
1221 { | 1008 { |
1222 if(helium == 0) | 1009 if(helium == 0) |
1223 { | 1010 { |
1224 if(oxygen == 21) | 1011 if(oxygen == 21) |
1225 snprintf(output, length, "Air"); | 1012 snprintf(output, length, "Air"); |
1236 snprintf(output, length, "TMX%i/%i", oxygen, helium); | 1023 snprintf(output, length, "TMX%i/%i", oxygen, helium); |
1237 } | 1024 } |
1238 | 1025 |
1239 } | 1026 } |
1240 | 1027 |
1241 int16_t get_colour(int16_t color) | 1028 static int16_t get_colour(int16_t color) |
1242 { | 1029 { |
1243 return CLUT_GasSensor1 + color; | 1030 return CLUT_GasSensor1 + color; |
1244 } | 1031 } |