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 | } |