navit 0.5.3-trunk
Loading...
Searching...
No Matches
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.
 
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 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
struct attr_iter *(* object_func_iter_new)(void *)
Definition xmlconfig.h:60
void(* object_func_iter_destroy)(struct attr_iter *)
Definition xmlconfig.h:61
int(* object_func_remove_attr)(void *, struct attr *attr)
Definition xmlconfig.h:64
int(* object_func_init)(void *)
Definition xmlconfig.h:65
void *(* object_func_dup)(void *)
Definition xmlconfig.h:67
int(* object_func_add_attr)(void *, struct attr *attr)
Definition xmlconfig.h:63
void *(* object_func_unref)(void *)
Definition xmlconfig.h:69
void *(* object_func_new)(struct attr *parent, struct attr **attrs)
Definition xmlconfig.h:58
void(* object_func_destroy)(void *)
Definition xmlconfig.h:66
void *(* object_func_ref)(void *)
Definition xmlconfig.h:68
int(* object_func_set_attr)(void *, struct attr *attr)
Definition xmlconfig.h:62
int(* object_func_get_attr)(void *, enum attr_type type, struct attr *attr, struct attr_iter *iter)
Definition xmlconfig.h:59

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 item * tracking_map_get_item(struct map_rect_priv *priv)
Definition track.c:1077
static struct item * tracking_map_get_item_byid(struct map_rect_priv *priv, int id_hi, int id_lo)
Definition track.c:1123
static struct map_rect_priv * tracking_map_rect_new(struct map_priv *priv, struct map_selection *sel)
Definition track.c:1062
static void tracking_map_destroy(struct map_priv *priv)
Definition track.c:1050

Referenced by tracking_map_new().