Rev 469 | Rev 474 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 469 | Rev 471 | ||
---|---|---|---|
Line 15... | Line 15... | ||
15 | * You should have received a copy of the GNU General Public License * |
15 | * You should have received a copy of the GNU General Public License * |
16 | * along with this program; if not, write to the * |
16 | * along with this program; if not, write to the * |
17 | * Free Software Foundation, Inc., * |
17 | * Free Software Foundation, Inc., * |
18 | * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * |
18 | * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * |
19 | ****************************************************************************/ |
19 | ****************************************************************************/ |
20 | - | ||
- | 20 | if (COSD_FLAGS & COSD_FLAG_HUD) { |
|
21 | // write icons at init or after menu/mode-switch |
21 | // write icons at init or after menu/mode-switch |
22 | if (!(COSD_FLAGS & COSD_ICONS_WRITTEN)) { |
22 | if (!(COSD_FLAGS2 & COSD_ICONS_WRITTEN)) { |
23 | write_char_xy(5, top_line, 0xCB); // km/h |
23 | write_char_xy(5, top_line, 0xCB); // km/h |
24 | write_char_xy(10, top_line, 0xCA); // RC-transmitter |
24 | write_char_xy(10, top_line, 0xCA); // RC-transmitter |
25 | write_char_xy(16, top_line, 0xD0); // degree symbol |
25 | write_char_xy(16, top_line, 0xD0); // degree symbol |
26 | write_char_xy(27, top_line, 0xCC); // small meters m height |
26 | write_char_xy(27, top_line, 0xCC); // small meters m height |
27 | write_char_xy(20, top_line + 1, 0xB0); // left circle |
27 | write_char_xy(20, top_line + 1, 0xB0); // left circle |
Line 34... | Line 34... | ||
34 | } |
34 | } |
35 | write_char_xy(14, bottom_line, 0xD1); // on clock |
35 | write_char_xy(14, bottom_line, 0xD1); // on clock |
36 | write_char_xy(21, bottom_line, 0xD2); // fly clock |
36 | write_char_xy(21, bottom_line, 0xD2); // fly clock |
37 | write_char_xy(26, bottom_line, 0xC8); // sat1 |
37 | write_char_xy(26, bottom_line, 0xC8); // sat1 |
38 | write_char_xy(27, bottom_line, 0xC9); // sat2 |
38 | write_char_xy(27, bottom_line, 0xC9); // sat2 |
39 | COSD_FLAGS |= COSD_ICONS_WRITTEN; |
39 | COSD_FLAGS2 |= COSD_ICONS_WRITTEN; |
40 | } |
40 | } |
Line 41... | Line 41... | ||
41 | 41 | ||
42 | // first line |
42 | // first line |
Line 48... | Line 48... | ||
48 | write_char_att_xy(7 + x, top_line, BLINK); |
48 | write_char_att_xy(7 + x, top_line, BLINK); |
49 | } else if (naviData.RC_Quality > RCLVL_WRN && last_RC_Quality <= RCLVL_WRN) { |
49 | } else if (naviData.RC_Quality > RCLVL_WRN && last_RC_Quality <= RCLVL_WRN) { |
50 | for (uint8_t x = 0; x < 4; x++) |
50 | for (uint8_t x = 0; x < 4; x++) |
51 | write_char_att_xy(7 + x, top_line, 0); |
51 | write_char_att_xy(7 + x, top_line, 0); |
52 | } |
52 | } |
53 | last_RC_Quality = naviData.RC_Quality; |
- | |
- | 53 | ||
Line 54... | Line 54... | ||
54 | 54 | ||
55 | if (naviData.NCFlags & NC_FLAG_NOSERIALLINK) { |
55 | if (naviData.NCFlags & NC_FLAG_NOSERIALLINK) { |
56 | write_char_xy(11, top_line, 0); // clear |
56 | write_char_xy(11, top_line, 0); // clear |
57 | } else { |
57 | } else { |
Line 88... | Line 88... | ||
88 | // center |
88 | // center |
89 | if (naviData.MKFlags & FLAG_MOTOR_RUN) { // should be engines running |
89 | if (naviData.MKFlags & FLAG_MOTOR_RUN) { // should be engines running |
90 | if (!(old_MKFlags & FLAG_MOTOR_RUN)) { // motors just started, clear middle |
90 | if (!(old_MKFlags & FLAG_MOTOR_RUN)) { // motors just started, clear middle |
91 | clear(); |
91 | clear(); |
92 | // update flags to paint display again if needed |
92 | // update flags to paint display again if needed |
93 | COSD_FLAGS &= ~COSD_ICONS_WRITTEN; |
93 | COSD_FLAGS2 &= ~COSD_ICONS_WRITTEN; |
94 | } |
94 | } |
95 | if (COSD_FLAGS & COSD_FLAG_ARTHORIZON) { |
95 | if (COSD_FLAGS & COSD_FLAG_ARTHORIZON) { |
96 | draw_artificial_horizon(top_line + 2, bottom_line - 1, naviData.AngleNick, naviData.AngleRoll); |
96 | draw_artificial_horizon(top_line + 2, bottom_line - 1, naviData.AngleNick, naviData.AngleRoll); |
97 | } |
97 | } |
98 | // motors are on, assume we were/are flying |
98 | // motors are on, assume we were/are flying |
99 | COSD_FLAGS |= COSD_WASFLYING; |
99 | COSD_FLAGS2 |= COSD_WASFLYING; |
100 | } else { |
100 | } else { |
101 | // stats |
101 | // stats |
102 | if ((COSD_FLAGS & COSD_WASFLYING) && (COSD_FLAGS & COSD_FLAG_STATS)) { |
102 | if ((COSD_FLAGS2 & COSD_WASFLYING) && (COSD_FLAGS & COSD_FLAG_STATS)) { |
103 | uint8_t line = 3; |
103 | uint8_t line = 3; |
104 | write_ascii_string_pgm(2, line, stats_item_pointers[0]); // max Altitude |
104 | write_ascii_string_pgm(2, line, stats_item_pointers[0]); // max Altitude |
105 | write_ndigit_number_s(18, line, max_Altimeter / 30, 1000, 0); |
105 | write_ndigit_number_s(18, line, max_Altimeter / 30, 1000, 0); |
106 | write_char_xy(22, line, 204); // small meters m |
106 | write_char_xy(22, line, 204); // small meters m |
107 | write_ascii_string_pgm(2, ++line, stats_item_pointers[1]); // max Speed |
107 | write_ascii_string_pgm(2, ++line, stats_item_pointers[1]); // max Speed |
Line 135... | Line 135... | ||
135 | 135 | ||
136 | // pre-bottom line |
136 | // pre-bottom line |
137 | if (COSD_FLAGS2 & COSD_FLAG_STROMREC) { |
137 | if (COSD_FLAGS2 & COSD_FLAG_STROMREC) { |
138 | //write_ndigit_number_s(3, bottom_line - 1, ampere, 1000, 0); |
138 | //write_ndigit_number_s(3, bottom_line - 1, ampere, 1000, 0); |
139 | write_ndigit_number_u_10th(3, bottom_line - 1, ampere / 10, 100, 0); |
139 | write_ndigit_number_u_10th(3, bottom_line - 1, ampere / 10, 100, 0); |
140 | write_ndigit_number_s(10, bottom_line - 1, ampere_wasted, 1000, 0); |
140 | write_ndigit_number_s(10, bottom_line - 1, ampere_wasted / 10, 1000, 0); |
Line 141... | Line 141... | ||
141 | } |
141 | } |
142 | 142 | ||
143 | // bottom line |
143 | // bottom line |
Line 148... | Line 148... | ||
148 | write_char_att_xy(x, bottom_line, BLINK); |
148 | write_char_att_xy(x, bottom_line, BLINK); |
149 | } else if (naviData.UBat > min_voltage && last_UBat < min_voltage) { |
149 | } else if (naviData.UBat > min_voltage && last_UBat < min_voltage) { |
150 | for (uint8_t x = 2; x < 8; x++) |
150 | for (uint8_t x = 2; x < 8; x++) |
151 | write_char_att_xy(x, bottom_line, 0); |
151 | write_char_att_xy(x, bottom_line, 0); |
152 | } |
152 | } |
153 | // remember last values |
- | |
154 | last_UBat = naviData.UBat; |
- | |
Line 155... | Line 153... | ||
155 | 153 | ||
156 | write_time(8, bottom_line, uptime); |
154 | write_time(8, bottom_line, uptime); |
Line 157... | Line 155... | ||
157 | write_time(15, bottom_line, naviData.FlyingTime); |
155 | write_time(15, bottom_line, naviData.FlyingTime); |
Line 169... | Line 167... | ||
169 | } else if (naviData.NCFlags & NC_FLAG_PH) { |
167 | } else if (naviData.NCFlags & NC_FLAG_PH) { |
170 | write_char_xy(27, bottom_line, 230); // gps ph |
168 | write_char_xy(27, bottom_line, 230); // gps ph |
171 | } else { // (naviData.NCFlags & NC_FLAG_FREE) |
169 | } else { // (naviData.NCFlags & NC_FLAG_FREE) |
172 | write_char_xy(27, bottom_line, 201); // sat2 (free) |
170 | write_char_xy(27, bottom_line, 201); // sat2 (free) |
173 | } |
171 | } |
- | 172 | } |
|
Line 174... | Line 173... | ||
174 | 173 | ||
175 | //write_number_s(8, 5, RxDataLen); |
174 | //write_number_s(8, 5, RxDataLen); |
Line 176... | Line 175... | ||
176 | //write_number_s(16, 5, setsReceived++); |
175 | //write_number_s(16, 5, setsReceived++); |
Line 185... | Line 184... | ||
185 | if (naviData.UBat < min_UBat) min_UBat = naviData.UBat; |
184 | if (naviData.UBat < min_UBat) min_UBat = naviData.UBat; |
186 | if (naviData.FlyingTime > max_FlyingTime) max_FlyingTime = naviData.FlyingTime; |
185 | if (naviData.FlyingTime > max_FlyingTime) max_FlyingTime = naviData.FlyingTime; |
187 | if (ampere > max_ampere) max_ampere = ampere; |
186 | if (ampere > max_ampere) max_ampere = ampere; |
188 | } |
187 | } |
Line -... | Line 188... | ||
- | 188 | ||
- | 189 | // remember last values |
|
- | 190 | last_RC_Quality = naviData.RC_Quality; |
|
189 | 191 | last_UBat = naviData.UBat; |
|
190 | old_MKFlags = naviData.MKFlags; |
192 | old_MKFlags = naviData.MKFlags; |
191 | seconds_since_last_data = 0; |
- |