Details | 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 |
||
261 | uint16_t FM_Azimuth; // Azimuth für FollowMe 4.8.2015 CB |
||
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 |