Subversion Repositories Projects

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
1010 - 1
/*****************************************************************************
2
 *   Copyright (C) 2009 Peter "woggle" Mack, mac@denich.net                  *
3
 *   Copyright (C) 2011 Christian Brandtner brandtner@brandtner.net          *
4
 *                                                                           *
5
 *   This program is free software; you can redistribute it and/or modify    *
6
 *   it under the terms of the GNU General Public License as published by    *
7
 *   the Free Software Foundation; either version 2 of the License.          *
8
 *                                                                           *
9
 *   This program is distributed in the hope that it will be useful,         *
10
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of          *
11
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           *
12
 *   GNU General Public License for more details.                            *
13
 *                                                                           *
14
 *   You should have received a copy of the GNU General Public License       *
15
 *   along with this program; if not, write to the                           *
16
 *   Free Software Foundation, Inc.,                                         *
17
 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.               *
18
 *                                                                                                                                               *
19
 *   Einstellen der Variablen Parameter des P-MKTool                                     *
20
 *                                                                           *
21
 *****************************************************************************/
22
 
23
#include <avr/io.h>
24
#include <avr/interrupt.h>
25
#include <avr/pgmspace.h>
26
#include <string.h>
27
 
28
#include "main.h"
29
#include "setup.h"
30
#include "lcd.h"
31
#include "eeprom.h"
32
#include "timer.h"
33
 
34
 
35
uint8_t spalte;
36
uint8_t mmode;
37
uint8_t zeile;
38
uint8_t edit;
39
uint8_t MenuItems;
40
//
41
 
42
 
43
void PMK_Setup (void)
44
{
45
 
46
        lcd_cls ();
47
        mmode = 0;
48
        edit=0;
49
        zeile = 1;
50
        MenuItems =2;
51
 
52
 
53
        lcd_printp (PSTR("P-MKTool Setup"), 0);
54
 
55
        lcd_printpns_at (2, zeile, PSTR("LowBat Warn  :   "), 0);
56
//      write_ndigit_number_u (16, 2, MK_LipoCell, 3, 0);
57
        write_ndigit_number_u_10th (16, zeile,MK_LowBat, 3, 0);
58
        lcd_putc (20, zeile, 'V', 0);
59
 
60
 
61
    if (DisplayTimeout == 0)
62
    lcd_printpns_at (2, zeile+1, PSTR("Displ.Timeout:  no"), 0);
63
    else
64
    {
65
         lcd_printpns_at (2, zeile+1, PSTR("Displ.Timeout:   "), 0);
66
         write_ndigit_number_u (17, zeile+1, DisplayTimeout, 3, 0);
67
    }
68
 
69
    lcd_printpns_at  (2, zeile+2, PSTR("Language     :"), 0);
70
 
71
 
72
    switch (DisplayLanguage)
73
    {
74
       case     0x0 :lcd_printpns_at (18, zeile+2, PSTR("DE "), 0);break;
75
       case     0x1 :lcd_printpns_at (18, zeile+2, PSTR("FR "), 0);break;
76
       case     0x2 :lcd_printpns_at (18, zeile+2, PSTR("EN "), 0);break;
77
       break;
78
    }
79
    lcd_printpns_at  (2, zeile+3, PSTR("Wi TX/RX Chan:"), 0);
80
        write_ndigit_number_u (17, zeile+3, WiTXRXChannel, 3, 0);
81
    lcd_printpns_at  (2, zeile+4, PSTR("Wi NetW. Grp.:"), 0);
82
    write_ndigit_number_u (17, zeile+4, WiNetworkGroup, 3, 0);
83
        lcd_printpns_at (0, 7, PSTR(" \x18    \x19     Back   \x0c"), 0);
84
//      lcd_printpns_at (0, 7, PSTR("\x15     \x16     \x17    Back"), 0); //x0C
85
    lcd_printp_at (0, zeile, PSTR("\x1D"), 0);
86
 
87
 
88
        do
89
        {
90
//              Min Bat Voltage einstellen min. 3,3V(1S) max 16,5V(5S)
91
                if ((zeile == 1) && (get_key_press (1 << KEY_PLUS) || get_key_rpt (1 << KEY_PLUS)) && (MK_LowBat < 170))
92
                {
93
                        edit=1;
94
                        MK_LowBat++;
95
//                      write_ndigit_number_u (16, zeile, MK_LipoCell, 3, 0);
96
                        write_ndigit_number_u_10th (16, zeile,MK_LowBat, 3, 0);
97
                        lcd_putc (20, 1, 'V', 0);
98
                }
99
                if ((zeile == 1) && (get_key_press (1 << KEY_MINUS) || get_key_rpt (1 << KEY_MINUS)) && (MK_LowBat > 33))
100
                {
101
                        edit=1;
102
                        MK_LowBat--;
103
//                      write_ndigit_number_u (16, zeile, MK_LipoCell, 3, 0);
104
                        write_ndigit_number_u_10th (16, zeile,MK_LowBat, 3, 0);
105
                        lcd_putc (20, 1, 'V', 0);
106
                }
107
//              Displaytimeout einstellen
108
                if ((zeile == 2) && (get_key_press (1 << KEY_PLUS) || get_key_rpt (1 << KEY_PLUS)) && (DisplayTimeout < 100))
109
                        {
110
                                edit=1;
111
                                DisplayTimeout++;
112
                                write_ndigit_number_u (17, zeile, DisplayTimeout, 3, 0);
113
 
114
                        }
115
                        if ((zeile == 2) && (get_key_press (1 << KEY_MINUS) || get_key_rpt (1 << KEY_MINUS)) && (DisplayTimeout > 0))
116
                        {
117
                                edit=1;
118
                                DisplayTimeout--;
119
                                 if (DisplayTimeout == 0)
120
                                   lcd_printpns_at (2, zeile, PSTR("Displ.Timeout:  no"), 0);
121
                                 else
122
                                write_ndigit_number_u (17, zeile, DisplayTimeout, 3, 0);
123
 
124
                        }
125
 
126
                        //              DisplayLanguage einstellen
127
                                        if ((zeile == 3) && (get_key_press (1 << KEY_PLUS) || get_key_rpt (1 << KEY_PLUS)) && (DisplayLanguage < 2))
128
                                                {
129
                                                        edit=1;
130
                                                        DisplayLanguage++;
131
                                                         switch (DisplayLanguage)
132
                                                            {
133
                                                               case     0x0 :lcd_printpns_at (18, zeile, PSTR("DE "), 0); break;
134
                                                               case     0x1 :lcd_printpns_at (18, zeile, PSTR("FR "), 0); break;
135
                                                               case     0x2 :lcd_printpns_at (18, zeile, PSTR("EN "), 0); break;
136
                                                            }
137
 
138
                                                }
139
                                                if ((zeile == 3) && (get_key_press (1 << KEY_MINUS) || get_key_rpt (1 << KEY_MINUS)) && (DisplayLanguage >0))
140
                                                {
141
                                                        edit=1;
142
                                                        DisplayLanguage--;
143
                                                         switch (DisplayLanguage)
144
                                                            {
145
                                                               case     0x0 :lcd_printpns_at (18, zeile, PSTR("DE "), 0);break;
146
                                                               case     0x1 :lcd_printpns_at (18, zeile, PSTR("FR "), 0);break;
147
                                                               case     0x2 :lcd_printpns_at (18, zeile, PSTR("EN "), 0);break;
148
 
149
                                                            }
150
 
151
                                                }
152
//              RX/TX Channel Wi.232 einstellen
153
                if ((zeile == 4) && (get_key_press (1 << KEY_PLUS) || get_key_rpt (1 << KEY_PLUS)) && (WiTXRXChannel < 0x79))
154
                        {
155
                                edit=1;
156
                                WiTXRXChannel++;
157
                                write_ndigit_number_u (17, zeile, WiTXRXChannel, 3, 0);
158
 
159
                        }
160
                if ((zeile == 4) && (get_key_press (1 << KEY_MINUS) || get_key_rpt (1 << KEY_MINUS)) && (WiTXRXChannel >0))
161
                        {
162
                                edit=1;
163
                                WiTXRXChannel--;
164
                                write_ndigit_number_u (17, zeile, WiTXRXChannel, 3, 0);
165
 
166
                        }
167
//              Networkgroup Wi.232 einstellen
168
                if ((zeile == 5) && (get_key_press (1 << KEY_PLUS) || get_key_rpt (1 << KEY_PLUS)) && (WiNetworkGroup < 0x79))
169
                        {
170
                                edit=1;
171
                                WiNetworkGroup++;
172
                                write_ndigit_number_u (17, zeile, WiNetworkGroup, 3, 0);
173
 
174
                        }
175
                if ((zeile == 5) && (get_key_press (1 << KEY_MINUS) || get_key_rpt (1 << KEY_MINUS)) && (WiNetworkGroup >0))
176
                        {
177
                                edit=1;
178
                                WiNetworkGroup--;
179
                                write_ndigit_number_u (17, zeile, WiNetworkGroup, 3, 0);
180
 
181
                        }
182
 
183
 
184
 
185
 
186
                if (get_key_press (1 << KEY_ENTER))
187
                {
188
                         lcd_printp_at (0, zeile, PSTR(" "), 0);
189
                         if (zeile ==5)
190
                          {
191
                           zeile = 1;
192
                           lcd_printp_at (0, zeile, PSTR("\x1D"), 0);
193
                          }
194
                         else
195
                          {
196
                           zeile++;
197
                           lcd_printp_at (0, zeile, PSTR("\x1D"), 0);
198
                          }
199
 
200
 
201
 
202
                }
203
 
204
        }
205
        while (!get_key_press (1 << KEY_ESC));
206
        if (edit==1)
207
        {
208
 
209
        WriteParameter();
210
 
211
        }
212
 
213
 
214
 
215
}