navit  0.5.3-trunk
track.c File Reference
#include <glib.h>
#include <string.h>
#include <time.h>
#include <math.h>
#include "item.h"
#include "attr.h"
#include "track.h"
#include "xmlconfig.h"
#include "debug.h"
#include "transform.h"
#include "coord.h"
#include "route.h"
#include "projection.h"
#include "map.h"
#include "mapset.h"
#include "plugin.h"
#include "vehicleprofile.h"
#include "vehicle.h"
#include "roadprofile.h"
#include "util.h"
#include "config.h"
#include "callback.h"

Data Structures

struct  tracking_line
 
struct  cdf_speed
 Conatins a list of previous speeds. More...
 
struct  cdf_data
 Contains data for the CDF. More...
 
struct  tracking
 
struct  map_priv
 Represents the map from a single binfile. More...
 
struct  map_rect_priv
 Implementation-specific map rect data. More...
 

Macros

#define CDF_MINAVG   1.f
 
#define CDF_MAXAVG   6.f
 
#define CDF_MINDIST   49
 

Functions

static void tracking_init_cdf (struct cdf_data *cdf, int hist_size)
 
int tracking_get_angle (struct tracking *tr)
 
struct coordtracking_get_pos (struct tracking *tr)
 
int tracking_get_street_direction (struct tracking *tr)
 
int tracking_get_segment_pos (struct tracking *tr)
 
struct street_datatracking_get_street_data (struct tracking *tr)
 
int tracking_get_attr (struct tracking *_this, enum attr_type type, struct attr *attr, struct attr_iter *attr_iter)
 
struct itemtracking_get_current_item (struct tracking *_this)
 
int * tracking_get_current_flags (struct tracking *_this)
 
int tracking_get_current_tunnel (struct tracking *_this)
 
static void tracking_get_angles (struct tracking_line *tl)
 
static int street_data_within_selection (struct street_data *sd, struct map_selection *sel)
 
static void tracking_doupdate_lines (struct tracking *tr, struct coord *pc, enum projection pro)
 
void tracking_flush (struct tracking *tr)
 
static int tracking_angle_diff (int a1, int a2, int full)
 
static int tracking_angle_abs_diff (int a1, int a2, int full)
 
static int tracking_angle_delta (struct tracking *tr, int vehicle_angle, int street_angle, int flags)
 
static int tracking_is_connected (struct tracking *tr, struct coord *c1, struct coord *c2)
 
static int tracking_is_no_stop (struct tracking *tr, struct coord *c1, struct coord *c2)
 
static int tracking_is_on_route (struct tracking *tr, struct route *rt, struct item *item)
 
static int tracking_value (struct tracking *tr, struct tracking_line *t, int offset, struct coord *lpnt, int min, int flags)
 
void tracking_update (struct tracking *tr, struct vehicle *v, struct vehicleprofile *vehicleprofile, enum projection pro)
 Processes a position update. More...
 
static int tracking_set_attr_do (struct tracking *tr, struct attr *attr, int initial)
 
int tracking_set_attr (struct tracking *tr, struct attr *attr)
 
int tracking_add_attr (struct tracking *this_, struct attr *attr)
 
int tracking_remove_attr (struct tracking *this_, struct attr *attr)
 
struct trackingtracking_new (struct attr *parent, struct attr **attrs)
 
void tracking_set_mapset (struct tracking *this, struct mapset *ms)
 
void tracking_set_route (struct tracking *this, struct route *rt)
 
void tracking_destroy (struct tracking *tr)
 
struct maptracking_get_map (struct tracking *this_)
 
static void tracking_map_item_coord_rewind (void *priv_data)
 
static int tracking_map_item_coord_get (void *priv_data, struct coord *c, int count)
 
static void tracking_map_item_attr_rewind (void *priv_data)
 
static int tracking_map_item_attr_get (void *priv_data, enum attr_type attr_type, struct attr *attr)
 
static void tracking_map_destroy (struct map_priv *priv)
 
static void tracking_map_rect_init (struct map_rect_priv *priv)
 
static struct map_rect_privtracking_map_rect_new (struct map_priv *priv, struct map_selection *sel)
 
static void tracking_map_rect_destroy (struct map_rect_priv *priv)
 
static struct itemtracking_map_get_item (struct map_rect_priv *priv)
 
static struct itemtracking_map_get_item_byid (struct map_rect_priv *priv, int id_hi, int id_lo)
 
static struct map_privtracking_map_new (struct map_methods *meth, struct attr **attrs, struct callback_list *cbl)
 
void tracking_init (void)
 

Variables

struct object_func tracking_func
 
static struct item_methods tracking_map_item_methods
 
static struct map_methods tracking_map_meth
 

Macro Definition Documentation

◆ CDF_MAXAVG

#define CDF_MAXAVG   6.f

◆ CDF_MINAVG

#define CDF_MINAVG   1.f

◆ CDF_MINDIST

#define CDF_MINDIST   49

Function Documentation

◆ street_data_within_selection()

static int street_data_within_selection ( struct street_data sd,
struct map_selection sel 
)
static

◆ tracking_add_attr()

int tracking_add_attr ( struct tracking this_,
struct attr attr 
)

◆ tracking_angle_abs_diff()

static int tracking_angle_abs_diff ( int  a1,
int  a2,
int  full 
)
static

◆ tracking_angle_delta()

static int tracking_angle_delta ( struct tracking tr,
int  vehicle_angle,
int  street_angle,
int  flags 
)
static

◆ tracking_angle_diff()

static int tracking_angle_diff ( int  a1,
int  a2,
int  full 
)
static

◆ tracking_destroy()

void tracking_destroy ( struct tracking tr)

◆ tracking_doupdate_lines()

◆ tracking_flush()

◆ tracking_get_angle()

int tracking_get_angle ( struct tracking tr)

References tracking::curr_angle.

Referenced by navit_get_cursor_pnt().

◆ tracking_get_angles()

static void tracking_get_angles ( struct tracking_line tl)
static

◆ tracking_get_attr()

◆ tracking_get_current_flags()

int* tracking_get_current_flags ( struct tracking _this)

◆ tracking_get_current_item()

struct item* tracking_get_current_item ( struct tracking _this)

◆ tracking_get_current_tunnel()

int tracking_get_current_tunnel ( struct tracking _this)

References tracking::tunnel.

Referenced by navit_layout_switch().

◆ tracking_get_map()

struct map* tracking_get_map ( struct tracking this_)

◆ tracking_get_pos()

struct coord* tracking_get_pos ( struct tracking tr)

◆ tracking_get_segment_pos()

int tracking_get_segment_pos ( struct tracking tr)

◆ tracking_get_street_data()

struct street_data* tracking_get_street_data ( struct tracking tr)

◆ tracking_get_street_direction()

int tracking_get_street_direction ( struct tracking tr)

◆ tracking_init()

void tracking_init ( void  )

References tracking_map_new().

Referenced by main_real().

◆ tracking_init_cdf()

static void tracking_init_cdf ( struct cdf_data cdf,
int  hist_size 
)
static

◆ tracking_is_connected()

static int tracking_is_connected ( struct tracking tr,
struct coord c1,
struct coord c2 
)
static

References c1, c2, and tracking::connected_pref.

Referenced by tracking_update(), and tracking_value().

◆ tracking_is_no_stop()

static int tracking_is_no_stop ( struct tracking tr,
struct coord c1,
struct coord c2 
)
static

References c1, c2, and tracking::nostop_pref.

Referenced by tracking_value().

◆ tracking_is_on_route()

static int tracking_is_on_route ( struct tracking tr,
struct route rt,
struct item item 
)
static

References route_contains(), and tracking::route_pref.

Referenced by tracking_value().

◆ tracking_map_destroy()

static void tracking_map_destroy ( struct map_priv priv)
static

◆ tracking_map_get_item()

◆ tracking_map_get_item_byid()

static struct item* tracking_map_get_item_byid ( struct map_rect_priv priv,
int  id_hi,
int  id_lo 
)
static

◆ tracking_map_item_attr_get()

◆ tracking_map_item_attr_rewind()

static void tracking_map_item_attr_rewind ( void *  priv_data)
static

◆ tracking_map_item_coord_get()

◆ tracking_map_item_coord_rewind()

static void tracking_map_item_coord_rewind ( void *  priv_data)
static

References map_rect_priv::ccount.

Referenced by tracking_map_get_item().

◆ tracking_map_new()

static struct map_priv* tracking_map_new ( struct map_methods meth,
struct attr **  attrs,
struct callback_list cbl 
)
static

◆ tracking_map_rect_destroy()

static void tracking_map_rect_destroy ( struct map_rect_priv priv)
static

◆ tracking_map_rect_init()

◆ tracking_map_rect_new()

◆ tracking_new()

◆ tracking_remove_attr()

int tracking_remove_attr ( struct tracking this_,
struct attr attr 
)

◆ tracking_set_attr()

int tracking_set_attr ( struct tracking tr,
struct attr attr 
)

◆ tracking_set_attr_do()

◆ tracking_set_mapset()

void tracking_set_mapset ( struct tracking this,
struct mapset ms 
)

Referenced by navit_init().

◆ tracking_set_route()

void tracking_set_route ( struct tracking this,
struct route rt 
)

Referenced by navit_init().

◆ tracking_update()

void tracking_update ( struct tracking tr,
struct vehicle v,
struct vehicleprofile vehicleprofile,
enum projection  pro 
)

Processes a position update.

Parameters
trThe
struct tracking
Definition: track.c:84
which will receive the position update
vThe vehicle whose position has changed
vehicleprofileThe vehicle profile to use
proThe projection to use for transformations

References AF_UNDERGROUND, tracking_line::angle, angle_delta(), tracking::angle_pref, attr_position_valid_invalid, attr_position_valid_static, attr_position_valid_valid, street_data::c, tracking::callback_list, callback_list_call_attr_0, tracking::connected_pref, tracking::coord_geo_valid, street_data::count, tracking::curr, tracking::curr_angle, tracking::curr_in, tracking::curr_line, tracking::curr_out, dbg, tracking::direction, tracking::direction_matched, street_data::flags, iso8601_to_secs(), tracking::last, tracking::last_in, tracking::last_out, tracking::last_updated, tracking::lines, lvl_debug, lvl_error, lvl_info, tracking_line::next, tracking::no_gps, tracking::nostop_pref, attr::num, attr::numd, tracking::offroad_limit_pref, tracking::pos, tracking::pro, tracking::speed, attr::str, tracking_line::street, tracking::street_direction, tracking::time, tracking_angle_abs_diff(), tracking_angle_delta(), tracking_angle_diff(), tracking_doupdate_lines(), tracking_flush(), tracking_is_connected(), tracking_value(), transform_distance(), transform_distance_line_sq(), transform_from_geo(), transform_project(), tracking::tunnel, tracking::tunnel_extrapolation, attr::u, tracking::valid, value, tracking::vehicle, vehicle_get_attr(), attr::vehicleprofile, tracking::vehicleprofile, vehicleprofile_get_attr(), coord::x, and coord::y.

Referenced by navit_vehicle_update_position().

◆ tracking_value()

Variable Documentation

◆ tracking_func

struct object_func tracking_func
Initial value:
= {
attr_trackingo,
}
void tracking_destroy(struct tracking *tr)
Definition: track.c:882
void tracking_init(void)
Definition: track.c:1161
int tracking_add_attr(struct tracking *this_, struct attr *attr)
Definition: track.c:809
int tracking_get_attr(struct tracking *_this, enum attr_type type, struct attr *attr, struct attr_iter *attr_iter)
Definition: track.c:321
struct tracking * tracking_new(struct attr *parent, struct attr **attrs)
Definition: track.c:847
int tracking_remove_attr(struct tracking *this_, struct attr *attr)
Definition: track.c:819
int tracking_set_attr(struct tracking *tr, struct attr *attr)
Definition: track.c:805
void * navit_object_unref(struct navit_object *obj)
Definition: xmlconfig.c:1313
struct navit_object * navit_object_ref(struct navit_object *obj)
Definition: xmlconfig.c:1307
void(* object_func_iter_destroy)(struct attr_iter *)
Definition: xmlconfig.h:57
void *(* object_func_new)(struct attr *parent, struct attr **attrs)
Definition: xmlconfig.h:54
int(* object_func_remove_attr)(void *, struct attr *attr)
Definition: xmlconfig.h:60
void *(* object_func_ref)(void *)
Definition: xmlconfig.h:64
struct attr_iter *(* object_func_iter_new)(void *)
Definition: xmlconfig.h:56
int(* object_func_init)(void *)
Definition: xmlconfig.h:61
void *(* object_func_dup)(void *)
Definition: xmlconfig.h:63
int(* object_func_add_attr)(void *, struct attr *attr)
Definition: xmlconfig.h:59
void(* object_func_destroy)(void *)
Definition: xmlconfig.h:62
int(* object_func_set_attr)(void *, struct attr *attr)
Definition: xmlconfig.h:58
int(* object_func_get_attr)(void *, enum attr_type type, struct attr *attr, struct attr_iter *iter)
Definition: xmlconfig.h:55
void *(* object_func_unref)(void *)
Definition: xmlconfig.h:65

Navit, a modular navigation system. Copyright (C) 2005-2018 Navit Team

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License version 2 as published by the Free Software Foundation.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

Referenced by object_func_lookup(), and tracking_new().

◆ tracking_map_item_methods

struct item_methods tracking_map_item_methods
static
Initial value:
= {
}
static int tracking_map_item_attr_get(void *priv_data, enum attr_type attr_type, struct attr *attr)
Definition: track.c:962
static void tracking_map_item_attr_rewind(void *priv_data)
Definition: track.c:956
static void tracking_map_item_coord_rewind(void *priv_data)
Definition: track.c:929
static int tracking_map_item_coord_get(void *priv_data, struct coord *c, int count)
Definition: track.c:934

Referenced by tracking_map_rect_new().

◆ tracking_map_meth

struct map_methods tracking_map_meth
static
Initial value:
= {
"utf-8",
NULL,
NULL,
NULL,
}
@ projection_mg
Definition: projection.h:25
static void tracking_map_rect_destroy(struct map_rect_priv *priv)
Definition: track.c:1073
static struct map_rect_priv * tracking_map_rect_new(struct map_priv *priv, struct map_selection *sel)
Definition: track.c:1062
static struct item * tracking_map_get_item_byid(struct map_rect_priv *priv, int id_hi, int id_lo)
Definition: track.c:1123
static void tracking_map_destroy(struct map_priv *priv)
Definition: track.c:1050
static struct item * tracking_map_get_item(struct map_rect_priv *priv)
Definition: track.c:1077

Referenced by tracking_map_new().