Subversion Repositories Projects

Rev

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