Subversion Repositories Projects

Rev

Rev 494 | Rev 499 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 494 Rev 497
67
            }
156
            }
68
            // motors are on, assume we were/are flying
-
 
69
            COSD_FLAGS2 |= COSD_WASFLYING;
-
 
70
        } else {
-
 
71
            // stats
-
 
72
            if ((COSD_FLAGS2 & COSD_WASFLYING) && (COSD_FLAGS & COSD_FLAG_STATS)) {
-
 
73
                        uint8_t line = 3;
-
 
74
                write_ascii_string_pgm(2, line, stats_item_pointers[0]); // max Altitude
-
 
75
                write_ndigit_number_s(18, line, max_Altimeter / 30, 1000, 0);
-
 
76
                write_char_xy(22, line, 204); // small meters m
-
 
77
                write_ascii_string_pgm(2, ++line, stats_item_pointers[1]); // max Speed
-
 
78
                write_ndigit_number_u(19, line, (uint16_t) (((uint32_t) max_GroundSpeed * (uint32_t) 9) / (uint32_t) 250), 100, 0);
-
 
79
                write_char_xy(22, line, 203); // km/h
-
 
80
                write_ascii_string_pgm(2, ++line, stats_item_pointers[2]); // max Distance
-
 
81
                write_ndigit_number_u(19, line, max_Distance / 10, 100, 0);
-
 
82
                write_char_xy(22, line, 204); // small meters m
-
 
83
                write_ascii_string_pgm(2, ++line, stats_item_pointers[3]); // min voltage
-
 
84
                write_ndigit_number_u_10th(18, line, min_UBat, 100, 0);
-
 
85
                write_char_xy(22, line, 0x9E); // small V
-
 
86
                        if (COSD_FLAGS2 & COSD_FLAG_STROMREC) {
-
 
87
                                write_ascii_string_pgm(2, ++line, stats_item_pointers[7]); // ampere
-
 
88
                                write_ndigit_number_u_10th(18, line, max_ampere / 10, 100, 0);
-
 
89
                                write_char_xy(22, line, 0x9F); // small A
-
 
90
                        }
-
 
91
                write_ascii_string_pgm(2, ++line, stats_item_pointers[4]); // max time
-
 
92
                write_time(16, line, max_FlyingTime);
-
 
93
                write_char_xy(22, line, 210); // fly clock
-
 
94
                write_ascii_string_pgm(2, ++line, stats_item_pointers[5]); // longitude
-
 
95
                write_gps_pos(15, line, naviData.CurrentPosition.Longitude);
-
 
96
                write_ascii_string_pgm(2, ++line, stats_item_pointers[6]); // latitude
-
 
97
                write_gps_pos(15, line, naviData.CurrentPosition.Latitude);
-
 
98
            } else if (COSD_FLAGS & COSD_FLAG_ARTHORIZON) { // if no stats there is space horizon
-
 
99
                        if (COSD_FLAGS2 & COSD_FLAG_STROMREC) {
-
 
100
                        draw_artificial_horizon(top_line + 2, bottom_line - 2, naviData.AngleNick, naviData.AngleRoll);
-
 
101
                        } else {
-
 
102
                        draw_artificial_horizon(top_line + 2, bottom_line - 1, naviData.AngleNick, naviData.AngleRoll);
-
 
103
                        }
-
 
104
            }
-
 
105
        }
-
 
106
        if (COSD_FLAGS & COSD_FLAG_BIGVARIO) {
-
 
107
            draw_big_variometer(27, 8, naviData.Variometer);
-
 
108
        }
-
 
109
 
-
 
110
        // pre-bottom line
-
 
111
        if (COSD_FLAGS2 & COSD_FLAG_STROMREC) {
-
 
112
                //write_ndigit_number_s(3, bottom_line - 1, ampere, 1000, 0);
-
 
113
                write_ndigit_number_u_10th(3, bottom_line - 1, ampere / 10, 100, 0);
-
 
114
                write_ndigit_number_s(10, bottom_line - 1, ampere_wasted / 10, 1000, 0);
-
 
115
        }
-
 
116
 
-
 
117
        // bottom line
-
 
118
        draw_battery(2, bottom_line, min_voltage, naviData.UBat, max_voltage);
-
 
119
        write_ndigit_number_u_10th(3, bottom_line, naviData.UBat, 100, 0);
-
 
120
        if (naviData.UBat <= min_voltage && last_UBat > min_voltage) {
157
            if (naviData.UBat < min_UBat) min_UBat = naviData.UBat;
121
            for (uint8_t x = 2; x < 8; x++)
-
 
122
                write_char_att_xy(x, bottom_line, BLINK);
-
 
123
        } else if (naviData.UBat > min_voltage && last_UBat < min_voltage) {
158
            if (naviData.FlyingTime > max_FlyingTime) max_FlyingTime = naviData.FlyingTime;
124
            for (uint8_t x = 2; x < 8; x++)
-
 
125
                write_char_att_xy(x, bottom_line, 0);
-
 
126
        }
-
 
127
 
-
 
128
        write_time(11, bottom_line, naviData.FlyingTime);
159
                if (ampere > max_ampere) max_ampere = ampere;
129
 
-
 
130
        write_ndigit_number_u(24, bottom_line, naviData.SatsInUse, 10, 0);
-
 
131
 
-
 
132
        if (naviData.NCFlags & NC_FLAG_CH) {
-
 
133
            write_char_xy(27, bottom_line, 231); // gps ch
-
 
134
        } else if (naviData.NCFlags & NC_FLAG_PH) {
-
 
135
            write_char_xy(27, bottom_line, 230); // gps ph
-
 
136
        } else { // (naviData.NCFlags & NC_FLAG_FREE)
-
 
137
            write_char_xy(27, bottom_line, 201); // sat2 (free)
-
 
138
        }
160
        }
139
}
-
 
140
 
161
 
141
// remember statistics (only when engines running)
-
 
142
if (naviData.MKFlags & FLAG_MOTOR_RUN) {
-
 
143
    if (naviData.Altimeter > max_Altimeter) max_Altimeter = naviData.Altimeter;
-
 
144
    if (naviData.GroundSpeed > max_GroundSpeed) max_GroundSpeed = naviData.GroundSpeed;
-
 
145
    if (naviData.HomePositionDeviation.Distance > max_Distance) {
-
 
146
        max_Distance = naviData.HomePositionDeviation.Distance;
-
 
147
    }
-
 
148
    if (naviData.UBat < min_UBat) min_UBat = naviData.UBat;
-
 
149
    if (naviData.FlyingTime > max_FlyingTime) max_FlyingTime = naviData.FlyingTime;
-
 
150
        if (ampere > max_ampere) max_ampere = ampere;
-
 
151
}
-
 
152
 
-
 
153
// remember last values
162
        // remember last values
154
last_RC_Quality = naviData.RC_Quality;
163
        last_RC_Quality = naviData.RC_Quality;
155
last_UBat = naviData.UBat;
164
        last_UBat = naviData.UBat;
156
old_MKFlags = naviData.MKFlags;
165
        old_MKFlags = naviData.MKFlags;
157
seconds_since_last_data = 0;
166
        seconds_since_last_data = 0;
-
 
167
 
-
 
168
        return 0;
-
 
169
}
-
 
170
 
-
 
171
#endif
158
 
172