Subversion Repositories NaviCtrl

Rev

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

Rev 190 Rev 201
Line 54... Line 54...
54
// +  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
54
// +  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
55
// +  POSSIBILITY OF SUCH DAMAGE.
55
// +  POSSIBILITY OF SUCH DAMAGE.
56
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
56
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
57
#include <stdlib.h>
57
#include <stdlib.h>
58
#include "91x_lib.h"
58
#include "91x_lib.h"
59
#include "printf_P.h"
-
 
60
#include "main.h"
59
#include "main.h"
61
#include "ubx.h"
60
#include "ubx.h"
62
#include "GPS.h"
61
#include "GPS.h"
63
#include "timer1.h"
62
#include "timer1.h"
64
#include "i2c.h"
63
#include "i2c.h"
65
#include "spi_slave.h"
64
#include "spi_slave.h"
66
#include "menu.h"
65
#include "menu.h"
67
#include "uart1.h"
66
#include "uart1.h"
-
 
67
#include "printf_P.h"
Line 68... Line -...
68
 
-
 
69
s8 DisplayBuff[DISPLAYBUFFSIZE] = "Hello World";
68
 
-
 
69
u8 DispPtr = 0;
-
 
70
s8 DisplayBuff[DISPLAYBUFFSIZE];
Line 70... Line 71...
70
u8 DispPtr = 0;
71
 
71
 
72
 
72
u8 MenuItem = 0;
-
 
Line 73... Line -...
73
u8 MaxMenuItem = 15;
-
 
74
u8 RemoteKeys = 0;
-
 
75
 
-
 
76
#define KEY1    0x01
-
 
77
#define KEY2    0x02
-
 
78
#define KEY3    0x04
-
 
79
#define KEY4    0x08
-
 
80
#define KEY5    0x10
-
 
81
 
-
 
82
/************************************/
73
u8 MenuItem = 0;
83
/*        Clear LCD Buffer          */
74
u8 MaxMenuItem = 15;
84
/************************************/
75
 
85
void LCD_Clear(void)
76
void Menu_Clear(void)
86
{
77
{
Line 87... Line -...
87
 u8 i;
-
 
88
 for( i = 0; i < DISPLAYBUFFSIZE; i++) DisplayBuff[i] = ' ';
-
 
89
}
-
 
90
 
78
        u8 i;
91
 
79
        for( i = 0; i < DISPLAYBUFFSIZE; i++) DisplayBuff[i] = ' ';
92
/************************************/
80
}
93
/*        Update Menu on LCD        */
81
 
94
/************************************/
82
 
95
// Display with 20 characters in 4 lines
-
 
96
void LCD_PrintMenu(void)
-
 
97
{
-
 
Line -... Line 83...
-
 
83
// Display with 20 characters in 4 lines
-
 
84
void Menu_Update(u8 Keys)
98
        s32 i1,i2;
85
{
99
        u8 sign;
86
        s32 i1,i2;
-
 
87
        u8 sign;
100
        if(RemoteKeys & KEY1) { if(MenuItem) MenuItem--; else MenuItem = MaxMenuItem;}
88
 
101
        if(RemoteKeys & KEY2) { if(MenuItem == MaxMenuItem) MenuItem = 0; else MenuItem++;}
89
        if(Keys & KEY1) { if(MenuItem > 0) MenuItem--; else MenuItem = MaxMenuItem;}
102
        if((RemoteKeys & KEY1) && (RemoteKeys & KEY2)) MenuItem = 0;
90
        if(Keys & KEY2) { if(MenuItem == MaxMenuItem) MenuItem = 0; else MenuItem++;}
103
 
91
        if((Keys & KEY1) && (Keys & KEY2)) MenuItem = 0;
104
        LCD_Clear();
92
        if(MenuItem > MaxMenuItem) MenuItem = MaxMenuItem;
105
        if(MenuItem > MaxMenuItem) MenuItem = MaxMenuItem;
93
        Menu_Clear();
106
        // print menu item number in the upper right corner
94
        // print menu item number in the upper right corner
107
        if(MenuItem < 10)
95
        if(MenuItem < 10)
108
        {
96
        {
Line 109... Line 97...
109
                LCD_printfxy(17,0,"[%i]",MenuItem);
97
                LCD_printfxy(17,0,"[%i]",MenuItem);
110
        }
98
        }
111
        else
99
        else // Menuitem >= 10
112
        {
100
        {
113
                LCD_printfxy(16,0,"[%i]",MenuItem);
101
                LCD_printfxy(16,0,"[%i]",MenuItem);
114
        }
102
        }
115
 
103
 
116
        switch(MenuItem)
104
        switch(MenuItem)
117
        {
105
        {
118
                // Version Info
106
                // Version Info
119
                case 0:
107
                case 0:
120
                        LCD_printfxy(0,0,"++  Navi-Ctrl  ++");
108
                        LCD_printfxy(0,0,"++  Navi-Ctrl  ++");
Line 217... Line 205...
217
                        break;
205
                        break;
218
                case 3:
206
                case 3:
219
                        LCD_printfxy(0,0,"GPS UTC Time");
207
                        LCD_printfxy(0,0,"GPS UTC Time");
220
                        if (!SystemTime.Valid)
208
                        if (!SystemTime.Valid)
221
                        {
209
                        {
222
                                LCD_printfxy(0,0,"GPS UTC Time");
-
 
223
                                LCD_printfxy(0,1,"                    ");
210
                                LCD_printfxy(0,1,"                    ");
224
                                LCD_printfxy(0,2,"  No time data!     ");
211
                                LCD_printfxy(0,2,"  No time data!     ");
225
                                LCD_printfxy(0,3,"                    ");
212
                                LCD_printfxy(0,3,"                    ");
226
                        }
213
                        }
227
                        else // newdata or processed
214
                        else // newdata or processed
228
                        {
215
                        {
229
                                LCD_printfxy(0,1,"                    ");
216
                                LCD_printfxy(0,1,"                    ");
230
                                LCD_printfxy(0,2,"Date: %02i/%02i/%04i",SystemTime.Month, SystemTime.Day, SystemTime.Year);
217
                                LCD_printfxy(0,2,"Date: %02i/%02i/%04i",SystemTime.Month, SystemTime.Day, SystemTime.Year);
231
                                LCD_printfxy(0,3,"Time: %02i:%02i:%02i.%03i", SystemTime.Hour, SystemTime.Min, SystemTime.Sec, SystemTime.mSec);
218
                                LCD_printfxy(0,3,"Time: %02i:%02i:%02i.%03i", SystemTime.Hour, SystemTime.Min, SystemTime.Sec, SystemTime.mSec);
232
 
-
 
233
                        }
219
                        }
234
                        break;
220
                        break;
235
                case 4: // Navi Params 1 from FC
221
                case 4: // Navi Params 1 from FC
236
                        LCD_printfxy(0,0,"NaviMode: %3i" ,  Parameter.NaviGpsModeControl);
222
                        LCD_printfxy(0,0,"NaviMode: %3i" ,  Parameter.NaviGpsModeControl);
237
            LCD_printfxy(0,1,"G  :%3i P  :%3i ",Parameter.NaviGpsGain, Parameter.NaviGpsP);
223
            LCD_printfxy(0,1,"G  :%3i P  :%3i ",Parameter.NaviGpsGain, Parameter.NaviGpsP);
Line 295... Line 281...
295
                case 11: // attitude from FC
281
                case 11: // attitude from FC
296
                        if(FromFlightCtrl.AngleNick < 0) sign = '-';
282
                        if(FromFlightCtrl.AngleNick < 0) sign = '-';
297
                        else sign = '+';
283
                        else sign = '+';
298
                        i1 = abs(FromFlightCtrl.AngleNick)/10;
284
                        i1 = abs(FromFlightCtrl.AngleNick)/10;
299
                        i2 = abs(FromFlightCtrl.AngleNick)%10;
285
                        i2 = abs(FromFlightCtrl.AngleNick)%10;
300
                        LCD_printfxy(0,0,"GyroNick:%c%03i.%01i", sign, i1, i2);
286
                        LCD_printfxy(0,0,"GyroNick:%c%03ld.%01ld", sign, i1, i2);
301
                        if(FromFlightCtrl.AngleRoll < 0) sign = '-';
287
                        if(FromFlightCtrl.AngleRoll < 0) sign = '-';
302
                        else sign = '+';
288
                        else sign = '+';
303
                        i1 = abs(FromFlightCtrl.AngleRoll)/10;
289
                        i1 = abs(FromFlightCtrl.AngleRoll)/10;
304
                        i2 = abs(FromFlightCtrl.AngleRoll)%10;
290
                        i2 = abs(FromFlightCtrl.AngleRoll)%10;
305
            LCD_printfxy(0,1,"GyroRoll:%c%03i.%01i", sign, i1, i2);
291
            LCD_printfxy(0,1,"GyroRoll:%c%03ld.%01ld", sign, i1, i2);
306
                        if(FromFlightCtrl.AccNick < 0) sign = '-';
292
                        if(FromFlightCtrl.AccNick < 0) sign = '-';
307
                        else sign = '+';
293
                        else sign = '+';
308
                        i1 = abs(FromFlightCtrl.AccNick)/10;
294
                        i1 = abs(FromFlightCtrl.AccNick)/10;
309
                        i2 = abs(FromFlightCtrl.AccNick)%10;
295
                        i2 = abs(FromFlightCtrl.AccNick)%10;
310
                        LCD_printfxy(0,2," AccNick:%c%03i.%01i", sign, i1, i2);
296
                        LCD_printfxy(0,2," AccNick:%c%03ld.%01ld", sign, i1, i2);
311
                        if(FromFlightCtrl.AccRoll < 0) sign = '-';
297
                        if(FromFlightCtrl.AccRoll < 0) sign = '-';
312
                        else sign = '+';
298
                        else sign = '+';
313
                        i1 = abs(FromFlightCtrl.AccRoll)/10;
299
                        i1 = abs(FromFlightCtrl.AccRoll)/10;
314
                        i2 = abs(FromFlightCtrl.AccRoll)%10;
300
                        i2 = abs(FromFlightCtrl.AccRoll)%10;
315
            LCD_printfxy(0,3," AccRoll:%c%03i.%01i", sign, i1, i2);
301
            LCD_printfxy(0,3," AccRoll:%c%03ld.%01ld", sign, i1, i2);
316
                        break;
302
                        break;
317
                case 12: // gyros from FC
303
                case 12: // gyros from FC
318
                        LCD_printfxy(0,0,"GyroNick:  %4i", FromFlightCtrl.GyroNick);
304
                        LCD_printfxy(0,0,"GyroNick:  %4i", FromFlightCtrl.GyroNick);
319
            LCD_printfxy(0,1,"GyroRoll:  %4i", FromFlightCtrl.GyroRoll);
305
            LCD_printfxy(0,1,"GyroRoll:  %4i", FromFlightCtrl.GyroRoll);
320
                        LCD_printfxy(0,2,"GyroYaw:   %4i", FromFlightCtrl.GyroYaw);
306
                        LCD_printfxy(0,2,"GyroYaw:   %4i", FromFlightCtrl.GyroYaw);
Line 339... Line 325...
339
                        LCD_printfxy(0,1,"MagX: %4i ",I2C_Mag.MagX);
325
                        LCD_printfxy(0,1,"MagX: %4i ",I2C_Mag.MagX);
340
                        LCD_printfxy(0,2,"MagY: %4i ",I2C_Mag.MagY);
326
                        LCD_printfxy(0,2,"MagY: %4i ",I2C_Mag.MagY);
341
                        LCD_printfxy(0,3,"MagZ: %4i ",I2C_Mag.MagZ);
327
                        LCD_printfxy(0,3,"MagZ: %4i ",I2C_Mag.MagZ);
342
                        break;
328
                        break;
343
                default:
329
                default:
344
                        MaxMenuItem = MenuItem - 1;
330
                        //MaxMenuItem = MenuItem - 1;
345
                        MenuItem = 0;
331
                        MenuItem = 0;
346
                        break;
332
                        break;
347
    }
333
    }
348
        RemoteKeys = 0;
-
 
349
}
334
}