Subversion Repositories Projects

Rev

Rev 378 | Rev 383 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 378 Rev 379
Line 67... Line 67...
67
char stats_item_0[] PROGMEM = "max Altitude:";
67
char stats_item_0[] PROGMEM = "max Altitude:";
68
char stats_item_1[] PROGMEM = "max Speed   :";
68
char stats_item_1[] PROGMEM = "max Speed   :";
69
char stats_item_2[] PROGMEM = "max Distance:";
69
char stats_item_2[] PROGMEM = "max Distance:";
70
char stats_item_3[] PROGMEM = "min voltage :";
70
char stats_item_3[] PROGMEM = "min voltage :";
71
char stats_item_4[] PROGMEM = "max time    :";
71
char stats_item_4[] PROGMEM = "max time    :";
72
char* stats_item_pointers[] PROGMEM = {stats_item_0, stats_item_1, stats_item_2, stats_item_3, stats_item_4};
72
char* stats_item_pointers[] PROGMEM = {stats_item_0, stats_item_1, stats_item_2,
-
 
73
                                        stats_item_3, stats_item_4};
73
 
74
 
74
// store more fixed strings in progmen
75
// store more fixed strings in progmen
75
char ON[]  PROGMEM = "ON ";
76
char ON[] PROGMEM = "ON ";
76
char OFF[] PROGMEM = "OFF";
77
char OFF[] PROGMEM = "OFF";
77
 
78
 
-
 
79
// big vario arrays 
-
 
80
char vario_00[5] PROGMEM = {0x00, 0x00, 0xc2, 0xff, 0xff};
-
 
81
char vario_01[5] PROGMEM = {0x00, 0x00, 0xc2, 0xff, 0xc0};
-
 
82
char vario_02[5] PROGMEM = {0x00, 0x00, 0xc2, 0xff, 0xc1};
-
 
83
char vario_03[5] PROGMEM = {0x00, 0x00, 0xc2, 0xff, 0x00};
-
 
84
char vario_04[5] PROGMEM = {0x00, 0x00, 0xc2, 0xc0, 0x00};
-
 
85
char vario_05[5] PROGMEM = {0x00, 0x00, 0xc2, 0xc1, 0x00};
-
 
86
char vario_06[5] PROGMEM = {0x00, 0x00, 0xc2, 0x00, 0x00};
-
 
87
char vario_07[5] PROGMEM = {0x00, 0x00, 0xbb, 0x00, 0x00};
-
 
88
char vario_08[5] PROGMEM = {0x00, 0x00, 0xc3, 0x00, 0x00};
-
 
89
char vario_09[5] PROGMEM = {0x00, 0xc4, 0xc3, 0x00, 0x00};
-
 
90
char vario_10[5] PROGMEM = {0x00, 0xc5, 0xc3, 0x00, 0x00};
-
 
91
char vario_11[5] PROGMEM = {0x00, 0xff, 0xc3, 0x00, 0x00};
-
 
92
char vario_12[5] PROGMEM = {0xc4, 0xff, 0xc3, 0x00, 0x00};
-
 
93
char vario_13[5] PROGMEM = {0xc5, 0xff, 0xc3, 0x00, 0x00};
-
 
94
char vario_14[5] PROGMEM = {0xff, 0xff, 0xc3, 0x00, 0x00};
-
 
95
char* vario_pnt[15] PROGMEM = {vario_00, vario_01, vario_02, vario_03, vario_04,
-
 
96
                                vario_05, vario_06, vario_07, vario_08,
-
 
97
                                vario_09, vario_10, vario_11, vario_12,
-
 
98
                                vario_13, vario_14};
-
 
99
 
78
#endif // ends !(ALLCHARSDEBUG|(WRITECHARS != -1))
100
#endif // ends !(ALLCHARSDEBUG|(WRITECHARS != -1))
79
 
101
 
80
// general PAL|NTSC distingiusch stuff
102
// general PAL|NTSC distingiusch stuff
81
uint8_t top_line = 1;
103
uint8_t top_line = 1;
82
uint8_t bottom_line = 14;
104
uint8_t bottom_line = 14;
Line 201... Line 223...
201
        if (voltage < UBAT_WRN) percent = 0;
223
        if (voltage < UBAT_WRN) percent = 0;
202
        write_char_xy(x, y, 0x9d - (percent * 13 / 100));
224
        write_char_xy(x, y, 0x9d - (percent * 13 / 100));
203
        //write_ndigit_number_u(x, y-1, percent * 13 / 100, 100, 0);
225
        //write_ndigit_number_u(x, y-1, percent * 13 / 100, 100, 0);
204
}
226
}
205
 
227
 
-
 
228
/* ##########################################################################
-
 
229
 * variometer
-
 
230
 * ##########################################################################*/
206
/**
231
/**
207
 * draw variometer arrows at <x>/<y> according to <variometer>
232
 * draw variometer arrows at <x>/<y> according to <variometer>
208
 */
233
 */
209
void draw_variometer(uint8_t x, uint8_t y, int16_t variometer) {
234
void draw_variometer(uint8_t x, uint8_t y, int16_t variometer) {
210
        if (variometer == 0) {
235
        if (variometer == 0) {
Line 238... Line 263...
238
                                write_char_xy(x, y, 0xbf); // largest arrow down
263
                                write_char_xy(x, y, 0xbf); // largest arrow down
239
                }
264
                }
240
        }
265
        }
241
}
266
}
242
 
267
 
-
 
268
/**
-
 
269
 * draw a bigger vario with middle at <x>/<y> acording to <variometer>
-
 
270
 */
-
 
271
void draw_big_variometer(uint8_t x, uint8_t y, int16_t variometer) {   
-
 
272
        int16_t index = 7 + variometer;
-
 
273
        if (index > 14) index = 14;
-
 
274
        else if (index < 0) index = 0;
-
 
275
       
-
 
276
        // TODO: why does write_string_pgm_down(x, y-2, vario_pnt[index], 5);
-
 
277
        // not work??? WTF?!
-
 
278
        switch (index) {
-
 
279
                case 0: write_string_pgm_down(x, y-2, vario_pnt[0], 5);
-
 
280
                        break;
-
 
281
                case 1: write_string_pgm_down(x, y-2, vario_pnt[1], 5);
-
 
282
                        break;
-
 
283
                case 2: write_string_pgm_down(x, y-2, vario_pnt[2], 5);
-
 
284
                        break;
-
 
285
                case 3: write_string_pgm_down(x, y-2, vario_pnt[3], 5);
-
 
286
                        break;
-
 
287
                case 4: write_string_pgm_down(x, y-2, vario_pnt[4], 5);
-
 
288
                        break;
-
 
289
                case 5: write_string_pgm_down(x, y-2, vario_pnt[5], 5);
-
 
290
                        break;
-
 
291
                case 6: write_string_pgm_down(x, y-2, vario_pnt[6], 5);
-
 
292
                        break;
-
 
293
                case 7: write_string_pgm_down(x, y-2, vario_pnt[7], 5);
-
 
294
                        break;
-
 
295
                case 8: write_string_pgm_down(x, y-2, vario_pnt[8], 5);
-
 
296
                        break;
-
 
297
                case 9: write_string_pgm_down(x, y-2, vario_pnt[9], 5);
-
 
298
                        break;
-
 
299
                case 10: write_string_pgm_down(x, y-2, vario_pnt[10], 5);
-
 
300
                        break;
-
 
301
                case 11: write_string_pgm_down(x, y-2, vario_pnt[11], 5);
-
 
302
                        break;
-
 
303
                case 12: write_string_pgm_down(x, y-2, vario_pnt[12], 5);
-
 
304
                        break;
-
 
305
                case 13: write_string_pgm_down(x, y-2, vario_pnt[13], 5);
-
 
306
                        break;
-
 
307
                default: write_string_pgm_down(x, y-2, vario_pnt[14], 5);
-
 
308
        }              
-
 
309
}
-
 
310
 
243
/* ##########################################################################
311
/* ##########################################################################
244
 * artificial horizon
312
 * artificial horizon
245
 * ##########################################################################*/
313
 * ##########################################################################*/
246
// remember last time displayed values
314
// remember last time displayed values
247
int8_t old_af_x = -1, old_af_y = -1;
315
int8_t old_af_x = -1, old_af_y = -1;
Line 636... Line 704...
636
                                        write_number_s(12, 8, debugData.Analog[11]);// Gyro compass*/
704
                                        write_number_s(12, 8, debugData.Analog[11]);// Gyro compass*/
637
                } else if (rxd_buffer[2] == 'O') { // NC OSD Data
705
                } else if (rxd_buffer[2] == 'O') { // NC OSD Data
638
                    Decode64();
706
                    Decode64();
639
                    naviData = *((NaviData_t*) pRxData);
707
                    naviData = *((NaviData_t*) pRxData);
640
 
708
 
-
 
709
                                        draw_big_variometer(27, 8, naviData.Variometer);
-
 
710
 
641
                    // first line
711
                    // first line
642
                    write_ndigit_number_u(2, top_line, (uint16_t) (((uint32_t) naviData.GroundSpeed * (uint32_t)9) / (uint32_t)250), 100, 0);
712
                    write_ndigit_number_u(2, top_line, (uint16_t) (((uint32_t) naviData.GroundSpeed * (uint32_t)9) / (uint32_t)250), 100, 0);
643
 
713
 
644
                    write_ndigit_number_u(7, top_line, naviData.RC_Quality, 100, 0);
714
                    write_ndigit_number_u(7, top_line, naviData.RC_Quality, 100, 0);
645
                    if (naviData.RC_Quality <= RCLVL_WRN && last_RC_Quality > RCLVL_WRN) {
715
                    if (naviData.RC_Quality <= RCLVL_WRN && last_RC_Quality > RCLVL_WRN) {