comparison Discovery/Src/t7.c @ 934:406d498786e7 Evo_2_23

Position visualization: Splitted view into two steps. In the first step only the number of available satellietes and 4 states are shown. If a fix (valid position) is available then the display shows the coordinates. This avoids misunderstandings because if there was once a position information then it will be provided even no valid fix is available.
author Ideenmodellierer
date Sun, 08 Dec 2024 21:56:48 +0100
parents 5a9bc2e6112d
children 4a406e873a95
comparison
equal deleted inserted replaced
933:43055e069bd1 934:406d498786e7
4033 4033
4034 void t7_showPosition(void) 4034 void t7_showPosition(void)
4035 { 4035 {
4036 char text[256+50]; 4036 char text[256+50];
4037 uint8_t textpointer = 0; 4037 uint8_t textpointer = 0;
4038 point_t start, stop;
4039 uint8_t index = 0;
4040 uint8_t color = 0;
4038 4041
4039 t7cY0free.WindowLineSpacing = 28 + 48 + 14; 4042 t7cY0free.WindowLineSpacing = 28 + 48 + 14;
4040 t7cY0free.WindowY0 = t7cH.WindowY0 - 5 - 2 * t7cY0free.WindowLineSpacing; 4043 t7cY0free.WindowY0 = t7cH.WindowY0 - 5 - 2 * t7cY0free.WindowLineSpacing;
4041 t7cY0free.WindowNumberOfTextLines = 3; 4044 t7cY0free.WindowNumberOfTextLines = 3;
4042 4045 t7cY0free.WindowY0 -= 20;
4043 textpointer += snprintf(&text[textpointer],50,"\001Satellites\n\r"); 4046 if(stateUsed->lifeData.gnssData.fixType < 2)
4044 textpointer += snprintf(&text[textpointer],50,"\001Longitude\n\r"); 4047 {
4045 textpointer += snprintf(&text[textpointer],50,"\001Latitude\n\r"); 4048 textpointer += snprintf(&text[textpointer],50,"\001Satellites\n\r");
4049 textpointer += snprintf(&text[textpointer],50,"\001Status\n\r");
4050 }
4051 else
4052 {
4053 textpointer += snprintf(&text[textpointer],50,"\001Longitude\n\r");
4054 textpointer += snprintf(&text[textpointer],50,"\001Latitude\n\r");
4055 }
4046 GFX_write_string(&FontT24, &t7cY0free, text, 1); 4056 GFX_write_string(&FontT24, &t7cY0free, text, 1);
4047 4057
4048 t7cY0free.WindowY0 -= 52; 4058 t7cY0free.WindowY0 -= 52;
4049 snprintf(text,60, 4059 if(stateUsed->lifeData.gnssData.fixType < 2)
4050 "\001%d - %d %d %d %d %d\n\r" 4060 {
4051 "\001%0.5f\n\r" 4061 snprintf(text,60,"\001%d\n\r",stateUsed->lifeData.gnssData.numSat);
4052 "\001%0.5f\n\r" 4062 }
4053 ,stateUsed->lifeData.gnssData.numSat, stateUsed->lifeData.gnssData.fixType 4063 else
4054 ,stateUsed->lifeData.gnssData.signalQual[0],stateUsed->lifeData.gnssData.signalQual[1],stateUsed->lifeData.gnssData.signalQual[2],stateUsed->lifeData.gnssData.signalQual[3] 4064 {
4055 ,stateUsed->lifeData.gnssData.fLat 4065 snprintf(text,60,
4056 ,stateUsed->lifeData.gnssData.fLon ); 4066 "\001%0.5f\n\r"
4057 4067 "\001%0.5f\n\r"
4068 ,stateUsed->lifeData.gnssData.fLat ,stateUsed->lifeData.gnssData.fLon);
4069 }
4058 GFX_write_string(&FontT42, &t7cY0free, text, 1); 4070 GFX_write_string(&FontT42, &t7cY0free, text, 1);
4071
4072 if(stateUsed->lifeData.gnssData.fixType < 2) /* draw status bars */
4073 {
4074 start.x = t7cY0free.WindowX0 + 85;
4075 stop.x = start.x;
4076 start.y = t7cY0free.WindowY0 + 75;
4077 stop.y = start.y + 20;
4078 while((index < stateUsed->lifeData.gnssData.numSat) && (index < 4))
4079 {
4080 if(stateUsed->lifeData.gnssData.signalQual[index] > 4) color = CLUT_NiceGreen;
4081 if((stateUsed->lifeData.gnssData.signalQual[index] > 2) && (stateUsed->lifeData.gnssData.signalQual[index] <= 4)) color = CLUT_WarningYellow;
4082 if(stateUsed->lifeData.gnssData.signalQual[index] <= 2) color = CLUT_WarningRed;
4083 GFX_draw_thick_line(20, &t7screen, start, stop, color);
4084 start.x += 40;
4085 stop.x += 40;
4086
4087 index++;
4088 }
4089 }
4090
4091
4059 } 4092 }
4060 void t7_SummaryOfLeftCorner(void) 4093 void t7_SummaryOfLeftCorner(void)
4061 { 4094 {
4062 char text[256+60]; 4095 char text[256+60];
4063 uint8_t textpointer = 0; 4096 uint8_t textpointer = 0;