diff options
author | akashihi <akashihi@ffa7fe5e-494d-0410-b361-a75ebd5db220> | 2010-06-23 11:26:28 +0000 |
---|---|---|
committer | akashihi <akashihi@ffa7fe5e-494d-0410-b361-a75ebd5db220> | 2010-06-23 11:26:28 +0000 |
commit | a4097dde38e7430db385b94150b9ad313abee839 (patch) | |
tree | 71637bec8fa51ef427c0b13dec47a836b2b8ca31 /navit/vehicle.c | |
parent | 18ccc29c1ebf45dcf732ead5f4520499f76f91b4 (diff) | |
download | navit-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.c | 18 |
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); |