#include "camera_info.h"
#include "properties.h"
#include "task.h"
#include "modes.h"
#include "debug_led.h"
#include "shutdown.h"
#include "sound.h"
#include "backlight.h"
#include "temperature.h"
#include "file_counter.h"
#include "gps.h"
#include "gps_math.h"
#include "time.h"
#include "conf.h"
#include "keyboard.h"
#include "lang.h"
#include "levent.h"
#include "math.h"
#include "gui.h"
#include "gui_draw.h"
#include "gui_batt.h"
#include "gui_lang.h"
#include "gui_mbox.h"
gehe zum Quellcode dieser Datei
|
static void | geodiff (t_geo *von, t_geo *nach, t_geo *delta) |
|
static void | geo2rect (t_geo *g, t_rectangular *r, double lat_w) |
|
static void | rect2polar (t_rectangular *r, t_polar *p) |
|
static int | radian2deg (double alpha) |
|
static void | georegInit (t_georeg *reg, int size, t_regression_xy *buffer1, t_regression_xy *buffer2) |
|
static void | georegAdd (t_georeg *reg, double time, t_geo *geo) |
|
static void | georegActual (t_georeg *reg, t_geo *geo) |
|
static void | georegChange (t_georeg *reg, t_geo *geo) |
|
void | lock (int n_task) |
|
void | unlock (int n_task) |
|
void | draw_txt_centered (int line, char *buf, int color) |
|
static void | compass_display_task () |
|
static void | run_compass_task (int mode) |
|
static void | test_timezone () |
|
static char * | load_bitmap (char *datei) |
|
static double | draw_gps_course_info (int count) |
|
static void | draw_compass_needle (int angle, double s_w, double c_w, char *bitmap, int extent, int m_x, int m_y, int offset_x, int offset_y, int f_v_1, int f_v_2) |
|
static void | draw_compass (char *bitmap, int o_x, int o_y, int f_v_0, int f_v_1, int f_v_2, int f_v_4) |
|
static void | show_sat_symbol_task () |
|
static void | gps_data_task () |
|
static void | tracking_icon_task () |
|
static void | no_signal_task () |
|
static void | gps_logging_task () |
|
void | gps_waypoint () |
|
void | gps_write_timezone () |
|
void | gps_write_home () |
|
void | init_gps_startup (int stop_request) |
|
void | init_gps_logging_task (int stop_request) |
|
void | init_gps_compass_task (int stop_request) |
|
int | init_gps_navigate_to_home (int stop_request) |
|
int | init_gps_navigate_to_photo (int stop_request) |
|
#define EARTH (40.e6/360.0) |
Definiert in Zeile 73 der Datei gps.c.
#define PI (3.1415926535) |
Definiert in Zeile 71 der Datei gps.c.
#define RHO (180.0/3.1415926535) |
Definiert in Zeile 72 der Datei gps.c.
static void compass_display_task |
( |
) | |
|
|
static |
Definiert in Zeile 1304 der Datei gps.c.
1306 #define BITMAP_WIDTH 61
1307 #define BITMAP_HEIGHT 61
1323 int m_x = offset_x + 31;
1325 int m_y = offset_y + 31;
1342 double old_c_w=
cos(0);
1343 double old_s_w=
sin(0);
1345 char *bitmap1 =
load_bitmap(
"A/CHDK/DATA/GPS_needle.txt");
1346 char *bitmap2 =
load_bitmap(
"A/CHDK/DATA/GPS_compass.txt");
1347 int extent =
strlen(bitmap1);
1359 if ((
int)angle != 0) { m=
angle; }
1379 draw_compass (bitmap2, offset_x - 27, offset_y -14, f_v_0, f_v_1, f_v_2, f_v_4);
1388 w=(180-
m)*3.141592653589793/180;
1390 if (m >=180 && m<=360)
1392 w=(540-
m)*3.141592653589793/180;
1400 draw_compass_needle (old_angle, old_s_w, old_c_w, bitmap1, extent, m_x, m_y, offset_x, offset_y, f_v_0, f_v_0);
1401 draw_compass_needle (m, s_w, c_w, bitmap1, extent, m_x, m_y, offset_x, offset_y, f_v_1, f_v_3);
1408 if (bitmap1)
free(bitmap1) ;
1409 if (bitmap2)
free(bitmap2) ;
static void draw_compass |
( |
char * |
bitmap, |
|
|
int |
o_x, |
|
|
int |
o_y, |
|
|
int |
f_v_0, |
|
|
int |
f_v_1, |
|
|
int |
f_v_2, |
|
|
int |
f_v_4 |
|
) |
| |
|
static |
Definiert in Zeile 424 der Datei gps.c.
428 int extent =
strlen(bitmap);
433 for(pos=0; pos<extent; pos++)
435 int data = bitmap[pos];
452 if (data == 10 || data == 13)
static void draw_compass_needle |
( |
int |
angle, |
|
|
double |
s_w, |
|
|
double |
c_w, |
|
|
char * |
bitmap, |
|
|
int |
extent, |
|
|
int |
m_x, |
|
|
int |
m_y, |
|
|
int |
offset_x, |
|
|
int |
offset_y, |
|
|
int |
f_v_1, |
|
|
int |
f_v_2 |
|
) |
| |
|
static |
Definiert in Zeile 358 der Datei gps.c.
388 for(pos=0; pos<extent; pos++)
390 int data = bitmap[pos];
396 x_n = m_x +
Round(((c_w * (m_x - px)) + (s_w * (m_y - py))),2);
397 y_n = m_y +
Round(((c_w * (m_y - py)) - (s_w * (m_x - px))),2);
408 if (data == 10 || data == 13)
static double draw_gps_course_info |
( |
int |
count) | |
|
|
static |
Definiert in Zeile 270 der Datei gps.c.
294 double rest= eta -
now;
void draw_txt_centered |
( |
int |
line, |
|
|
char * |
buf, |
|
|
int |
color |
|
) |
| |
Definiert in Zeile 97 der Datei gps.c.
Definiert in Zeile 91 der Datei gps.c.
static void georegAdd |
( |
t_georeg * |
reg, |
|
|
double |
time, |
|
|
t_geo * |
geo |
|
) |
| |
|
static |
static void gps_data_task |
( |
) | |
|
|
static |
Definiert in Zeile 596 der Datei gps.c.
607 static struct tm *ttm;
609 #ifndef SIMULATED_GPS
static void gps_logging_task |
( |
) | |
|
|
static |
Definiert in Zeile 1154 der Datei gps.c.
1162 static struct tm *ttm;
1173 sprintf(vBuf,
"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n");
1175 sprintf(vBuf,
"<gpx xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" version=\"1.1\" creator=\"CHDK\" xmlns=\"http://www.topografix.com/GPX/1/1\">\n");
1177 sprintf(vBuf,
" <metadata />\n");
1187 sprintf(vBuf,
" </trkseg>\n");
1195 int zae=1, zae_1=0, bat;
1220 if ( (((zae_1) % 2)) == 0 )
1234 for(zba=30; zba>0; zba--)
1240 if ( (((zba) % 2)) == 0 )
1268 if (l_stat == 1 || l_stat == 2)
1270 fp =
fopen(gpx_name,
"a");
1278 sprintf(vBuf,
" <time>%sT%sZ</time>\n", l_dat, l_tim);
1282 sprintf(vBuf,
" </trkseg>\n");
Definiert in Zeile 1425 der Datei gps.c.
1432 char image_name[20];
1435 char gpx_image_name[20];
1438 static struct tm *ttm;
1465 sprintf(vBuf,
"%s;%s;%s;%s;%sT%sZ;%i\n",
1481 fp =
fopen(gpx_name,
"r");
1484 fp =
fopen(gpx_name,
"a");
1487 sprintf(vBuf,
"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n");
1489 sprintf(vBuf,
"<gpx xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" version=\"1.1\" creator=\"CHDK\" xmlns=\"http://www.topografix.com/GPX/1/1\">\n");
1500 fp =
fopen(gpx_name,
"a");
1509 sprintf(vBuf,
" <time>%sT%sZ</time>\n", l_dat, l_tim);
1511 sprintf(vBuf,
" <gpst>%sT%sZ</gpst>\n", l_dat_gps, l_tim_gps);
1515 sprintf(vBuf,
" <name>%s</name>\n", gpx_image_name);
1528 sprintf(vBuf,
"%s %sT%sZ %i\n",
1537 fp =
fopen(
"A/GPS/Tagging/wp.tmp",
"w");
1541 fp =
fopen(
"A/GPS/Tagging/wp.tmp",
"a");
Definiert in Zeile 1592 der Datei gps.c.
1608 sprintf(home_name,
"A/GPS/Navigation/Home.txt");
1613 sprintf(vBuf,
"%i\n", (
long)(l_lat*10000000));
1615 sprintf(vBuf,
"%i\n", (
long)(l_lon*10000000));
void gps_write_timezone |
( |
) | |
|
Definiert in Zeile 1559 der Datei gps.c.
1562 char timezone_name[30];
1574 sprintf(timezone_name,
"A/GPS/Timezone/Timezone.txt");
1579 sprintf(vBuf,
"%i\n", (
long)(l_lat*10000000));
1581 sprintf(vBuf,
"%i\n", (
long)(l_lon*10000000));
void init_gps_compass_task |
( |
int |
stop_request) | |
|
Definiert in Zeile 1671 der Datei gps.c.
1674 if ( stop_request == 0 )
void init_gps_logging_task |
( |
int |
stop_request) | |
|
Definiert in Zeile 1651 der Datei gps.c.
1654 if ( stop_request == 0 )
int init_gps_navigate_to_home |
( |
int |
stop_request) | |
|
Definiert in Zeile 1681 der Datei gps.c.
1684 if ( stop_request == 0 )
1690 sprintf(home_name,
"A/GPS/Navigation/Home.txt");
1695 fgets(text[1], 15, fp);
1696 fgets(text[2], 15, fp);
int init_gps_navigate_to_photo |
( |
int |
stop_request) | |
|
Definiert in Zeile 1717 der Datei gps.c.
1721 if (stop_request == 0)
void init_gps_startup |
( |
int |
stop_request) | |
|
Definiert in Zeile 1626 der Datei gps.c.
1628 if ( stop_request == 0 )
static char* load_bitmap |
( |
char * |
datei) | |
|
|
static |
Definiert in Zeile 251 der Datei gps.c.
257 fd =
fopen ( datei,
"r" );
260 bitmap_size =
ftell (fd);
263 bitmap = (
char*)
malloc (
sizeof(
char)*bitmap_size);
264 fread (bitmap,1,bitmap_size,fd);
Definiert in Zeile 178 der Datei gps.c.
185 number[n_task] = max + 1 ;
static void no_signal_task |
( |
) | |
|
|
static |
Definiert in Zeile 832 der Datei gps.c.
856 for(zba=30; zba>0; zba--)
862 if ( (((zba) % 2)) == 0 )
919 sprintf(vBuf,
" %01d:%02d",minute, second);
994 fd0 =
fopen (
"A/GPS/Tagging/wp.tmp",
"r" );
1000 fgets (w2, 23, fd0);
1009 char image_name[20];
1012 char gpx_image_name[20];
1014 static struct tm *ttm;
1021 sprintf(image_name,
"%s", w1);
1022 sprintf(gpx_image_name,
"%s", w1);
1024 sprintf(vBuf1,
"%s;%s;%s;%s;%s;%s",
1041 fp =
fopen(gpx_name,
"r");
1044 fp =
fopen(gpx_name,
"a");
1047 sprintf(vBuf1,
"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n");
1049 sprintf(vBuf1,
"<gpx xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" version=\"1.1\" creator=\"CHDK\" xmlns=\"http://www.topografix.com/GPX/1/1\">\n");
1058 fp =
fopen(gpx_name,
"a");
1067 sprintf(vBuf1,
" <time>%s</time>\n", w2);
1069 sprintf(vBuf1,
" <gpst>%sT%sZ</gpst>\n", l_dat_gps, l_tim_gps);
1073 sprintf(vBuf1,
" <name>%s</name>\n", gpx_image_name);
1112 for(zba=15; zba>0; zba--)
1120 for(zba1=100; zba1>0; zba1--)
static int radian2deg |
( |
double |
alpha) | |
|
|
static |
Definiert in Zeile 117 der Datei gps.c.
118 return (
int) (alpha *
RHO + 360.5) % 360;
static void run_compass_task |
( |
int |
mode) | |
|
|
static |
static void show_sat_symbol_task |
( |
) | |
|
|
static |
Definiert in Zeile 471 der Datei gps.c.
473 char *bitmap =
load_bitmap(
"A/CHDK/DATA/GPS_Sat.txt");
477 int extent1 =
strlen(bitmap);
550 for(pos1=0; pos1<extent1; pos1++)
552 int data = bitmap[pos1];
573 if (data == 10 || data == 13)
static void test_timezone |
( |
) | |
|
|
static |
Definiert in Zeile 222 der Datei gps.c.
226 int timezone_1, timezone_2;
229 sprintf(home_name,
"A/GPS/Timezone/Timezone.txt");
234 fgets(text[1], 15, fp);
235 fgets(text[2], 15, fp);
242 timezone_2 = (int)((
g_d_lon+7.5)/15);
244 if (timezone_1 != timezone_2)
static void tracking_icon_task |
( |
) | |
|
|
static |
Definiert in Zeile 705 der Datei gps.c.
707 char * bitmap1 =
load_bitmap(
"A/CHDK/DATA/GPS_Track_1.txt");
708 char * bitmap2 =
load_bitmap(
"A/CHDK/DATA/GPS_Track_2.txt");
709 char * bitmap3 =
load_bitmap(
"A/CHDK/DATA/GPS_Track_3.txt");
711 if(bitmap1 && bitmap2 && bitmap2 )
713 int extent1 =
strlen(bitmap1);
759 for(pos1=0; pos1<extent1; pos1++)
761 if ((blink==1) && (stat > 0))
763 data = bitmap2[pos1];
767 data = bitmap1[pos1];
771 data = bitmap3[pos1];
797 if (data == 10 || data == 13)
821 if (bitmap1)
free(bitmap1) ;
822 if (bitmap2)
free(bitmap2) ;
823 if (bitmap3)
free(bitmap3) ;
void unlock |
( |
int |
n_task) | |
|
Definiert in Zeile 67 der Datei gps.c.
Definiert in Zeile 68 der Datei gps.c.
Definiert in Zeile 69 der Datei gps.c.
volatile unsigned entering[NUM_TASKS] = { 0 } |
|
static |
Definiert in Zeile 44 der Datei gps.c.
Definiert in Zeile 40 der Datei gps.c.
int exit_nosignal_task =0 |
|
static |
Definiert in Zeile 45 der Datei gps.c.
Definiert in Zeile 42 der Datei gps.c.
Definiert in Zeile 41 der Datei gps.c.
Definiert in Zeile 43 der Datei gps.c.
Definiert in Zeile 52 der Datei gps.c.
Definiert in Zeile 54 der Datei gps.c.
Definiert in Zeile 61 der Datei gps.c.
Definiert in Zeile 59 der Datei gps.c.
Definiert in Zeile 57 der Datei gps.c.
Definiert in Zeile 60 der Datei gps.c.
Definiert in Zeile 58 der Datei gps.c.
Definiert in Zeile 55 der Datei gps.c.
Definiert in Zeile 51 der Datei gps.c.
Definiert in Zeile 53 der Datei gps.c.
Definiert in Zeile 37 der Datei gps.c.
Definiert in Zeile 33 der Datei gps.c.
Definiert in Zeile 38 der Datei gps.c.
Definiert in Zeile 35 der Datei gps.c.
Definiert in Zeile 34 der Datei gps.c.
Definiert in Zeile 36 der Datei gps.c.
Definiert in Zeile 65 der Datei gps.c.
int test_timezone_once =0 |
|
static |
Definiert in Zeile 49 der Datei gps.c.
Definiert in Zeile 63 der Datei gps.c.