summaryrefslogtreecommitdiff
path: root/navit/vehicle.c
diff options
context:
space:
mode:
authorakashihi <akashihi@ffa7fe5e-494d-0410-b361-a75ebd5db220>2010-06-23 11:26:28 +0000
committerakashihi <akashihi@ffa7fe5e-494d-0410-b361-a75ebd5db220>2010-06-23 11:26:28 +0000
commita4097dde38e7430db385b94150b9ad313abee839 (patch)
tree71637bec8fa51ef427c0b13dec47a836b2b8ca31 /navit/vehicle.c
parent18ccc29c1ebf45dcf732ead5f4520499f76f91b4 (diff)
downloadnavit-svn-a4097dde38e7430db385b94150b9ad313abee839.tar.gz
Fix:core:check that we have a fix before logging it. This closes ticket
#201 git-svn-id: http://svn.code.sf.net/p/navit/code/trunk/navit@3381 ffa7fe5e-494d-0410-b361-a75ebd5db220
Diffstat (limited to 'navit/vehicle.c')
-rw-r--r--navit/vehicle.c18
1 files changed, 15 insertions, 3 deletions
diff --git a/navit/vehicle.c b/navit/vehicle.c
index d94286f2..e3936285 100644
--- a/navit/vehicle.c
+++ b/navit/vehicle.c
@@ -435,7 +435,7 @@ vehicle_log_gpx_add_tag(char *tag, char **logstr)
static void
vehicle_log_gpx(struct vehicle *this_, struct log *log)
{
- struct attr attr,*attrp;
+ struct attr attr,*attrp, fix_attr;
enum attr_type *attr_types;
char *logstr;
char *extensions="\t<extensions>\n";
@@ -446,6 +446,10 @@ vehicle_log_gpx(struct vehicle *this_, struct log *log)
attr_types=attr.u.attr_types;
else
attr_types=NULL;
+ if (this_->meth.position_attr_get(this_->priv, attr_position_fix_type, &fix_attr)) {
+ if (fix_attr.u.num != 2 && fix_attr.u.num != 3)
+ return;
+ }
if (!this_->meth.position_attr_get(this_->priv, attr_position_coord_geo, &attr))
return;
logstr=g_strdup_printf("<trkpt lat=\"%f\" lon=\"%f\">\n",attr.u.coord_geo->lat,attr.u.coord_geo->lng);
@@ -487,10 +491,14 @@ vehicle_log_gpx(struct vehicle *this_, struct log *log)
static void
vehicle_log_textfile(struct vehicle *this_, struct log *log)
{
- struct attr pos_attr;
+ struct attr pos_attr,fix_attr;
char *logstr;
if (!this_->meth.position_attr_get)
return;
+ if (this_->meth.position_attr_get(this_->priv, attr_position_fix_type, &fix_attr)) {
+ if (fix_attr.u.num != 2 && fix_attr.u.num != 3)
+ return;
+ }
if (!this_->meth.position_attr_get(this_->priv, attr_position_coord_geo, &pos_attr))
return;
logstr=g_strdup_printf("%f %f type=trackpoint\n", pos_attr.u.coord_geo->lng, pos_attr.u.coord_geo->lat);
@@ -501,7 +509,7 @@ vehicle_log_textfile(struct vehicle *this_, struct log *log)
static void
vehicle_log_binfile(struct vehicle *this_, struct log *log)
{
- struct attr pos_attr;
+ struct attr pos_attr, fix_attr;
int *buffer;
int *buffer_new;
int len,limit=1024,done=0,radius=25;
@@ -510,6 +518,10 @@ vehicle_log_binfile(struct vehicle *this_, struct log *log)
if (!this_->meth.position_attr_get)
return;
+ if (this_->meth.position_attr_get(this_->priv, attr_position_fix_type, &fix_attr)) {
+ if (fix_attr.u.num != 2 && fix_attr.u.num != 3)
+ return;
+ }
if (!this_->meth.position_attr_get(this_->priv, attr_position_coord_geo, &pos_attr))
return;
transform_from_geo(projection_mg, pos_attr.u.coord_geo, &c);