Subversion Repositories Projects

Rev

Rev 2147 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2136 - 1
/*****************************************************************************
2
 *   Copyright (C) 2008 Thomas Kaiser, thomas@ft-fanpage.de                  *
3
 *   Copyright (C) 2009 Peter "woggle" Mack, mac@denich.net                  *
4
 *   Copyright (C) 2013 Christian "Cebra" Brandtner, brandtner@brandtner.net *
5
 *   Copyright (C) 2011 Harald Bongartz                                      *
6
 *                                                                           *
7
 *   This program is free software; you can redistribute it and/or modify    *
8
 *   it under the terms of the GNU General Public License as published by    *
9
 *   the Free Software Foundation; either version 2 of the License.          *
10
 *                                                                           *
11
 *   This program is distributed in the hope that it will be useful,         *
12
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of          *
13
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           *
14
 *   GNU General Public License for more details.                            *
15
 *                                                                           *
16
 *   You should have received a copy of the GNU General Public License       *
17
 *   along with this program; if not, write to the                           *
18
 *   Free Software Foundation, Inc.,                                         *
19
 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.               *
20
 *                                                                           *
21
 *                                                                           *
22
 *   Credits to:                                                             *
23
 *   Holger Buss & Ingo Busker from mikrokopter.de for the MK project + SVN  *
24
 *                          http://www.mikrokopter.de                        *
25
 *   Gregor "killagreg" Stobrawa for his version of the MK code              *
26
 *   Thomas Kaiser "thkais" for the original project. See                    *
27
 *                          http://www.ft-fanpage.de/mikrokopter/            *
28
 *                          http://forum.mikrokopter.de/topic-4061-1.html    *
29
 *   Claas Anders "CaScAdE" Rathje for providing the font and his C-OSD code *
30
 *                          http://www.mylifesucks.de/oss/c-osd/             *
31
 *   Harald Bongartz "HaraldB" for providing his Ideas and Code for usibility*
32
 *****************************************************************************/
33
//############################################################################
34
//# HISTORY  eeprom.h
35
//#
36
//# 03.08.2015 CB
37
//# - chg: Obsolete Parameter geändert und für FollowMe verwendet, EEprom Version bleibt gleich
38
//#        Parameter FM_Refresh in FM_Azimuth geändert
39
//#        Parameter hyst_u_min in FM_Distance geändert
40
//#
41
//# 25.06.2014 OG
42
//# - chg: Kommentare der eeprom Struct aktualisert bzgl. FollowMe und Tracking
43
//#
44
//# 17.06.2014 OG
45
//# - chg: EEpromversion erhoeht auf 139
46
//#
47
//# 13.06.2014 OG
48
//# - chg: LCD_DisplayMode (Obsolete) geaendert zu PKTOffTimeout
49
//#
50
//# 31.05.2014 OG
51
//# - Recherche welche Config-Werte ueberahupt noch im PKT-Code verwendet werden
52
//#   und ggf. "OBSOLETE" Anmerkung in der Config-Struct
53
//# - Config-Struct wurde um etliche Kommentare ergaenzt bzgl. Verwendungszweck
54
//#
55
//# 30.05.2014 OG
56
//# - chg: Kommentare geaendert
57
//#
58
//# 26.05.2014 OG
59
//# - chg: Config.LCD_DisplayMode als "OBSOLETE" markiert
60
//#
61
//# 07.05.2014 OG
62
//# - chg: EEpromversion erhoeht auf 138
63
//#        -> keine neuen Parameter, neue Version nur fuer geanderte
64
//#           Initialisierung von MKParam_Favs
65
//#
66
//# 06.04.2014 OG
67
//# - chg: EEpromversion erhoeht auf 137
68
//# - add: Config.UseBLE
69
//# - add: Config.MKParam_Favs
70
//#
71
//# 01.04.2014 OG
72
//# - chg: EEpromversion erhoeht auf 136
73
//# - chg: ACHTUNG! EEpromversion umgestellt von HEX auf DEZIMAL:  0x87 => 135
74
//# - add: Config.UseBLE
75
//# - add: Config.MKParam_Favs
76
//# - add: MAX_MKPARAM_FAVORITES
77
//#
78
//# 03.02.2014 OG
79
//# - add: Config.OSD_ShowCellU; EEpromversion erhoeht auf 0x87
80
//#
81
//# 28.08.2013 Cebra
82
//# - chg: LastLatitude war uint32_t, auf int32_t korrigiert
83
//#
84
//# 04.07.2013 Cebra
85
//# - add: neue Parameter fuer Wlan; EEpromversion erhoeht auf 85
86
//#
87
//# 04.07.2013 OG
88
//# - add: Config.OSD_UseScreen; Epromversion erhoeht auf 84
89
//#
90
//# 02.07.2013 Cebra
91
//# - add: neue Parameter fuer Wlan; EEpromversion erhoeht auf 83
92
//#
93
//# 20.06.2013 CB
94
//# - chg: EEPROM Versionsänderung auf 82 wegen Wechsel LCD_Orientation zu OSD_ShowMKSetting
95
//#
96
//# 15.06.2013 OG
97
//# - chg: Config.LCD_ORIENTATION zu Config.OSD_ShowMKSetting
98
//#
99
//# 31.05.2013 CB
100
//# - chg: EEPROM Strukturänderung, Listen/Statistik ganz ans Ende gesetzt
101
//#
102
//# 31.05.2013 OG
103
//# - chg: Eeprom Version auf 81 wegen Erweiterungen der Statistik-Daten
104
//# - chg: Code-Layout
105
//#
106
//# 12.04.2013 CB
107
//# - chg: Kommentarergänzung U02SV2
108
//#
109
//# 28.03.2013 CB
110
//# - add: save and upgrade OSD_Statistic, GPS_User, MKErr_Log in EEProm structure variable
111
//############################################################################
112
 
113
#ifndef _EEPROM_H
114
#define _EEPROM_H
115
 
116
#include <stdbool.h>
117
#include "../mk-data-structs.h"
118
#include "../connect.h"
119
#include "../tracking/ng_servo.h"
120
#include "../waypoints/waypoints.h"
121
#include "../osd/osd.h"
122
 
123
 
124
 
125
 
126
//[General]
127
//FileVersion = 2
128
//NumberOfWaypoints = 15
129
//UsePOI = 0
130
//POI_CAM_NICK_CTRL = 0
131
 
132
//[POI]
133
//Altitude = 1
134
//Latitude = 46.7140763
135
//Longitude = 19.2507334
136
 
137
//[Waypoint1]
138
//Latitude = 46.7145686
139
//Longitude = 19.2515702
140
//Radius = 10
141
//Altitude = 15
142
//ClimbRate = 0
143
//DelayTime = 4
144
//WP_Event_Channel_Value = 96
145
//Heading = 180
146
 
147
 
148
#define EEpromVersion         139   // wird nach jeder Parametererweiterung hochgezählt
149
                                    // Anmerkung 01.04.2014 OG: umgestellt auf DEZIMALE schreibweise (wiso war das vorher Hex?)
150
 
151
#define NumberOfWaypoints      55   // Anzahl der Waypoints in der EEPromliste
152
#define NumberOfWPLists         5   // Anzahl WP Listen im PKT
153
#define MAX_LIST_LEN           31   // Länge Waypointlist
154
 
155
#define MAX_MKPARAM_FAVORITES  10   // Anzahl der MK-Parameter Favoriten (nicht aendern!)
156
 
157
#define bt_pin_length           4
158
#define RE_ID_length            4   // Länge der RE-ID
159
#define bt_name_length         10
160
#define bt_mac_length          14
161
#define GPS_Bluetoothmouse1     0   // NMEA BT-Mouse
162
#define GPS_Mikrokopter         1   // GPS Daten vom MK für Tracking
163
 
164
#define wlan_password_length    10  // Länge Wlan-Passwort
165
#define wlan_ssid_length        10  // Länge Wlan-SSID
166
#define wlan_ip_length          15
167
#define wlan_netmask_length     15
168
#define wlan_gateway_length     15
169
 
170
#define POINT_TYPE_INVALID     255
171
#define POINT_TYPE_WP            0
172
#define POINT_TYPE_POI           1
173
#define INVALID               0x00
174
#define MAX_WPLIST_LEN          31
175
 
176
 
177
 
178
 
179
//typedef struct {
180
//        uint8_t rev;
181
//        uint16_t min;
182
//        uint16_t max;
183
//        uint16_t mid;
184
//} servo_t;
185
 
186
 
187
typedef struct
188
{
189
    uint8_t WPIndex;            // Index in der EEpromliste
190
    Point_t Waypoint;           // Waypoint
191
} WayPoints;
192
 
193
typedef struct
194
{
195
    uint8_t WPListnumber;       // Nummer der WP Liste im PKT
196
    uint8_t WPListAktiv;        // Liste aktiv
197
    uint8_t WPDirectory[31];    // Enthält die Indexe der Waypoints im EEPROM
198
    uint8_t UsePOI;
199
    uint8_t POI_CAM_NICK_CTR;
200
 
201
} WPListHeader;
202
 
203
typedef struct
204
{
205
    WPListHeader    WPList;     // Waypointliste im PKT
206
} WPListDirectory;
207
 
208
 
209
 
210
typedef struct SStructure
211
{
212
    uint8_t         Version;                                // PKT-Eeprom Version!
213
    uint8_t         MK_LowBat;                              // MK-LowBat Warnung u.a. fuer osd.c
214
    uint8_t         DisplayTimeout;                         // autom. LCD ausschalten nach n Minuten
215
    uint8_t         DisplayLanguage;                        // eingestellte Sprache
216
    uint8_t         WiTXRXChannel;                          // Wi.232:
217
    uint8_t         WiNetworkGroup;                         // Wi.232:
218
    uint8_t         WiNetworkMode;                          // Wi.232:
219
    uint8_t         WiTXTO;                                 // Wi.232:
220
    uint8_t         WiUartMTU;                              // Wi.232:
221
    uint8_t         OSD_ShowMKSetting;                      // Anzeige MK-Setting beim OSD Start
222
    uint8_t         PKTOffTimeout;                          // autom. PKT ausschalten nach n Minuten
223
    uint8_t         LCD_Kontrast;                           // LCD-Kontrast
224
    uint8_t         LCD_Helligkeit;                         // LCD-Helligkeit - Aktuell nicht mehr verfuegbar weil auskommentiert! (mit HW 3.9x geht das sowiso nicht mehr!)
225
    uint8_t         USBBT;                                  //  ## OBSOLETE ## 31.05.2014 OG: wird nicht verwendet! (wofuer war da in der Vergangenheit?)
226
    uint8_t         U02SV2;                                 // 0=Wi232-Verbindung zum MK, 1 = Kabelverbindung zum MK
227
    uint8_t         Debug;                                  //  ??? OBSOLETE ??? 31.05.2014 OG: wird eigentlich nicht mehr verwendet (war zum debuggen vom PKT)
228
    uint8_t         UseWi;                                  // Wi232 wird genutzt
229
    uint8_t         UseBT;                                  // BT wird genutzt
230
 
231
    uint8_t         WiIsSet;                                // Wi232 ist initialisiert
232
    uint8_t         BTIsSet;                                // BT ist initialisiert
233
    uint8_t         BTIsSlave;                              // Slave Flag
234
    char            bt_pin[bt_pin_length + 1];              // BT Pinnummer
235
    char            bt_name[bt_name_length + 1];            // BT Name
236
    char            RE_ID[RE_ID_length + 1];                // RE-ID
237
    char            bt_Mac[bt_mac_length + 1];              // MAC-Adresse BTM222
238
 
239
    char            gps_UsedDevName[20];                    // benutztes GPS Device Name
240
    char            gps_UsedMac[14];                        // benutztes GPS Device Mac Adresse
241
    uint8_t         gps_UseGPS;                             //  ## GGF. OBSOLETE ## 25.06.2014 OG: siehe setup.c/Setup_GPSMouse() - "ist GPS aktiv?"
242
    uint8_t         gps_UsedGPSMouse;                       //  ## GGF. OBSOLETE ## 25.06.2014 OG: siehe setup.c/Setup_GPSMouse() und tracking.c/PKT_tracking() - "GPS Maustyp"
243
 
244
    int32_t         LastLongitude;                          // Letzte Position
245
    int32_t         LastLatitude;                           // Letzte Position
246
    uint8_t         PKT_IdleBeep;                           //  ## OBSOLETE ## 31.05.2014 OG: wurde das jemals verwendet?
247
    uint8_t         PKT_StartInfo;                          //  ## OBSOLETE ## 26.06.2013 OG: ehemals "PKT Startinfo anzeigen"
248
    uint16_t        Lipo_UOffset;                           // Offset für die Lipospannugsmessung
249
    uint8_t         PKT_Accutyp;                            // verwendeter Akkutyp
250
    uint8_t         OSD_RCErrorbeep;                        // Empfangsausffallwarnung im OSD Screen
251
    uint8_t         OSD_InvertOut;                          // Out1/2 invertiert anzeigen
252
    uint8_t         OSD_LEDform;                            // Form der Anzeige ( + oder schwarz)
253
    uint8_t         OSD_SendOSD;                            // OSD Daten an SV2 senden
254
    uint8_t         OSD_Fallspeed;                          // maximale Sinkrate
255
    uint8_t         OSD_VarioBeep;                          // Vario Beep im OSD Screen
256
    uint8_t         OSD_HomeMKView;                         //  ## OBSOLETE ## 02.07.2013 OG: ehemals "Home Circle from MK-View"
257
    uint16_t        OSD_mAh_Warning;                        // mAh Warnschwelle
258
    uint8_t         OSD_ScreenMode;                         // Variante des OSD-Screen
259
    uint8_t         OSD_LipoBar;                            // Bargraphanzeige für MK Lipo
260
    uint8_t         PKT_Baudrate;                           // Baudrate für BT und Wi232
2212 - 261
    int16_t         FM_Azimuth;                             // Azimuth für FollowMe 4.8.2015 CB
2136 - 262
    uint16_t        FM_Speed;                               // FollowMe Speed in m/s *0.1
263
    uint16_t        FM_Radius;                              // Waypoint Tolerance Radius in meter
264
    uint8_t         HWSound;                                // Hardware Sounderweiterung an PD7
265
    uint8_t         HWBeeper;                               // Hardware Beeper an PC7
266
    uint8_t         Volume;                                 // Lautstärke
267
    servo_t         servo[2];                               // Tracking:
268
    uint8_t         sIdxSteps;                              // Tracking:
269
    uint16_t        FM_Distance;                            // Distance für FollowMe 4.8.2015 CB
270
    uint8_t         servo_frame;                            // Tracking:
271
    uint8_t         single_step;                            // Tracking:
272
    uint8_t         repeat;                                 // Tracking:
273
    uint8_t         pause;                                  // Tracking:
274
    uint8_t         pause_step;                             // Tracking:
275
    uint8_t         tracking;                               //  ## OBSOLETE ## 31.05.2014 OG: das wird nirgendwo verwendet!
276
    uint8_t         track_hyst;                             //  ## OBSOLETE ## 31.05.2014 OG: das wird nirgendwo verwendet!
277
    uint8_t         track_tx;                               //  ## OBSOLETE ## 31.05.2014 OG: das wird nirgendwo verwendet!
278
 
279
    uint16_t        stick_min[5];                           // Joystick: Stickparameter
280
    uint16_t        stick_max[5];                           // Joystick:
281
    uint8_t         stick_typ[5];                           // Joystick:
282
    uint8_t         stick_dir[5];                           // Joystick:
283
    uint8_t         stick_neutral[5];                       // Joystick: Stick neutralisierend: ja/nein
284
    uint8_t         Lipomessung;                            // wenn Lipomessung deaktiviert(Lötbrücke öffnen), kann der Kanal als Stick verwendet werden
285
    int8_t          timezone;                               // Einstellbereich -12 .. 0 .. 12 Defaultwert: 1 (entspricht unserer Zeitzone)
286
    uint8_t         summertime;                             // Einstellung: 0 oder 1 (0=Winterzeit, 1=Sommerzeit) Defaultwert: 1 (entspricht unserer Sommerzeit in D)
287
    uint8_t         UseWL;                                  // WLAN (WiFly) wird an SV2 genutzt (SV2 Patch erforderlich)
288
    char            Wlan_SSID[wlan_ssid_length+1];          // Wlan SSID
289
    char            Wlan_Password[wlan_password_length+1];  // Wlan Passwort
290
    uint8_t         WLIsSet;                                //  ## OBSOLETE ## 31.05.2014 OG: ehemals "Wlan ist initialisiert"
291
    uint32_t        OSD_UseScreen;                          // welche OSD-Screens nutzen (Bit-codiert)
292
    uint8_t         Wlan_DHCP;                              //  ## OBSOLETE ## 31.05.2014 OG: ehemals "0-4"
293
    uint8_t         Wlan_WPA;                               //  ## OBSOLETE ## 31.05.2014 OG: ehemals "0-8"
294
    uint8_t         Wlan_Adhoc;                             //  ## OBSOLETE ## 31.05.2014 OG: ehemals "false = AP , true = Adhoc"
295
    uint8_t         Wlan_Channel;                           // 0-13
296
    char            Wlan_IP[wlan_ip_length+1];              //  ## OBSOLETE ## 31.05.2014 OG: ehemals "IP-Adresse"     (16 Bytes!)
297
    char            Wlan_Netmask[wlan_netmask_length+1];    //  ## OBSOLETE ## 31.05.2014 OG: ehemals "SubnetMask"     (16 Bytes!)
298
    char            Wlan_Gateway[wlan_gateway_length+1];    //  ## OBSOLETE ## 31.05.2014 OG: ehemals "Defaultgateway" (16 Bytes!)
299
    uint8_t         OSD_ShowCellU;                          // OSD Azeige: Anzeige UBat als Einzelzellenspannung (ja/nein)
300
    uint8_t         UseBLE;                                 // Bluetooth 4 LowPower wird genutzt (RedBearLab BLE Mini) wird an SV2 genutzt (SV2 Patch erforderlich)
301
    unsigned char   MKParam_Favs[MAX_MKPARAM_FAVORITES];    // Array von MK-Parameter Favoriten des Benutzers
302
 
303
    char            Wlan_HomeSSID[wlan_ssid_length+1];          // Wlan SSID (Home-WLAN)
304
    char            Wlan_HomePassword[wlan_password_length+1];  // Wlan Passwort (Home-WLAN)
305
 
306
 
307
     //!!!neue Parameter ab hier anfügen!!!!!!
308
 
309
 
310
    // ab hier werden die Parameter bei EEPROMversionsänderungen gelöscht
311
    Point_t         PointList[MAX_LIST_LEN];                // ab EEPROM Version 78
312
    osd_statistic_t OSD_Statistic;                          // ab EEPROM Version 79 & 81 OSD Statistiken
313
    pkt_gpspos_t    GPS_User[MAX_GPS_USER];                 // ab EEPROM Version 79 speichert Benutzer GPS-Positionen
314
    mkerror_t       MKErr_Log[MAX_MKERR_LOG];               // ab EEPROM Version 79 speichert auftretende ErrorCode's vom MK
315
 
316
}  ST;
317
 
318
extern ST Config;
319
 
320
void ReadParameter (void);
321
void WriteParameter (void);
322
void ReadLastPosition(void);
323
void WriteLastPosition(uint32_t ELongitude,uint32_t ELatitude);
324
void WriteWiInitFlag(void);
325
void WriteBTInitFlag(void);
326
void WriteWLInitFlag(void);
327
void WriteBTSlaveFlag(void);
328
void WriteBTMasterFlag(void);
329
void Delete_EEPROM(void);
330
void SendConfigData(void);
331
//void EEWayPointList_Clear(void);  // l�schen der Waypointliste im EEProm
332
 
333
#endif