navit  0.5.3-trunk
traffic.h
Go to the documentation of this file.
1 
53 #ifndef NAVIT_TRAFFIC_H
54 #define NAVIT_TRAFFIC_H
55 
56 #ifdef __cplusplus
57 extern "C" {
58 #endif
59 
76 #define order_to_min_road_class(x) (x <= 8 ? "PRIMARY" : x <= 10 ? "SECONDARY" : x <= 12 ? "TERTIARY" : NULL)
77 
81 /* If additional event classes are introduced, traffic_event_is_valid() must be adapted to recognize them. */
88 };
89 
93 /* If additional events are introduced, remember to do the following:
94  * - If the events belong to an existing class, insert them right after the last existing event for that class.
95  * - If the events belong to a new class, insert them at the end of the list.
96  * - Always keep events of the same class together.
97  * - After adding events (of any class) at the end of the list, adapt traffic_event_is_valid() to recognize them. */
98 enum event_type {
180 };
181 
188 };
189 
203 };
204 
213 };
214 
218 enum si_class {
223 };
224 
228 enum si_type {
245 };
246 
247 struct traffic;
248 struct traffic_priv;
249 struct traffic_location_priv;
250 struct traffic_message_priv;
251 
259  struct traffic_message **(* get_messages)(struct traffic_priv * this_);
260  void (*destroy)(struct traffic_priv * this_);
261 };
262 
270  struct coord_geo coord;
272  char * junction_name;
273  char * junction_ref;
274  char * tmc_id;
278 };
279 
299  struct traffic_point * at;
300  struct traffic_point * from;
301  struct traffic_point * to;
302  struct traffic_point * via;
306  char * destination;
309  char * direction;
314  enum location_ramps ramps;
321  enum item_type road_type;
324  char * road_name;
325  char * road_ref;
326  char * tmc_table;
335 };
336 
340 /*
341  * For now, these are various integer types, but other types may be added in the future.
342  */
343 struct quantifier {
344  union {
346  int q_int;
347  int q_speed;
348  unsigned int q_time;
349  } u;
350 };
351 
356  enum si_class si_class;
357  enum si_type type;
361 };
362 
369  enum event_class event_class;
370  enum event_type type;
372  int length;
373  int speed;
379  int si_count;
380  struct traffic_suppl_info ** si;
381 };
382 
393  char * id;
397  time_t receive_time;
399  time_t update_time;
401  time_t start_time;
402  time_t end_time;
410  char ** replaces;
414  struct traffic_event ** events;
416 };
417 
418 struct map;
419 struct mapset;
420 struct traffic;
421 
430 enum event_class event_class_new(char * string);
431 
437 const char * event_class_to_string(enum event_class this_);
438 
447 enum event_type event_type_new(char * string);
448 
454 const char * event_type_to_string(enum event_type this_);
455 
469 enum item_type item_type_from_road_type(char * string, int is_urban);
470 
479 enum location_dir location_dir_new(char * string);
480 
489 enum location_fuzziness location_fuzziness_new(char * string);
490 
496 const char * location_fuzziness_to_string(enum location_fuzziness this_);
497 
506 enum location_ramps location_ramps_new(char * string);
507 
513 const char * location_ramps_to_string(enum location_ramps this_);
514 
523 enum si_class si_class_new(char * string);
524 
530 const char * si_class_to_string(enum si_class this_);
531 
540 enum si_type si_type_new(char * string);
541 
547 const char * si_type_to_string(enum si_type this_);
548 
561 struct traffic_point * traffic_point_new(float lon, float lat, char * junction_name, char * junction_ref,
562  char * tmc_id);
563 
573 struct traffic_point * traffic_point_new_short(float lon, float lat);
574 
585 void traffic_point_destroy(struct traffic_point * this_);
586 
625 // TODO split CID/LTN?
627  struct traffic_point * to, struct traffic_point * via, struct traffic_point * not_via,
628  char * destination, char * direction, enum location_dir directionality,
630  char * road_name, char * road_ref, char * tmc_table, int tmc_direction);
631 
656  struct traffic_point * to, struct traffic_point * via, struct traffic_point * not_via,
658 
669 void traffic_location_destroy(struct traffic_location * this_);
670 
683  struct quantifier * quantifier);
684 
696 
717  int length, int speed, struct quantifier * quantifier, int si_count, struct traffic_suppl_info ** si);
718 
729 
740 void traffic_event_destroy(struct traffic_event * this_);
741 
751 void traffic_event_add_suppl_info(struct traffic_event * this_, struct traffic_suppl_info * si);
752 
760 struct traffic_suppl_info * traffic_event_get_suppl_info(struct traffic_event * this_, int index);
761 
791 struct traffic_message * traffic_message_new(char * id, time_t receive_time, time_t update_time,
792  time_t expiration_time, time_t start_time, time_t end_time, int is_cancellation, int is_Forecast,
793  int replaced_count, char ** replaces, struct traffic_location * location, int event_count,
794  struct traffic_event ** events);
795 
822 struct traffic_message * traffic_message_new_short(char * id, time_t receive_time, time_t update_time,
824  int event_count, struct traffic_event ** events);
825 
853 
877  time_t expiration_time, struct traffic_location * location);
878 
889 void traffic_message_destroy(struct traffic_message * this_);
890 
900 void traffic_message_add_event(struct traffic_message * this_, struct traffic_event * event);
901 
909 struct traffic_event * traffic_message_get_event(struct traffic_message * this_, int index);
910 
923 struct item ** traffic_message_get_items(struct traffic_message * this_);
924 
930 void traffic_init(void);
931 
941 struct traffic_message ** traffic_get_messages_from_xml_file(struct traffic * this_, char * filename);
942 
952 struct traffic_message ** traffic_get_messages_from_xml_string(struct traffic * this_, char * xml);
953 
964 struct map * traffic_get_map(struct traffic *this_);
965 
978 struct traffic_message ** traffic_get_stored_messages(struct traffic *this_);
979 
992 void traffic_process_messages(struct traffic * this_, struct traffic_message ** messages);
993 
1002 void traffic_set_mapset(struct traffic *this_, struct mapset *ms);
1003 
1009 void traffic_set_route(struct traffic *this_, struct route *rt);
1010 
1014 void traffic_destroy(struct traffic *this_);
1015 
1016 /* end of prototypes */
1017 #ifdef __cplusplus
1018 }
1019 #endif
1020 
1021 #endif
struct triple lng lat
Definition: garmin_img.c:0
char filename[8]
Definition: garmin_img.c:1
char type[3]
Definition: garmin_img.c:2
int length
Definition: garmin_img.c:1
item_type
Definition: item.h:29
A WGS84 coordinate.
Definition: coord.h:97
Definition: coord.h:34
Represents an object on a map.
Definition: item.h:115
Definition: map.c:55
Definition: mapset.c:39
A quantifier, which can be used with events and supplementary information.
Definition: traffic.h:343
unsigned int q_time
Definition: traffic.h:348
int q_duration
Definition: traffic.h:345
int q_speed
Definition: traffic.h:347
union quantifier::@11 u
int q_int
Definition: traffic.h:346
A complete route.
Definition: route.c:201
A traffic event.
Definition: traffic.h:368
enum event_class event_class
Definition: traffic.h:369
struct traffic_suppl_info ** si
Definition: traffic.h:380
enum event_type type
Definition: traffic.h:370
int length
Definition: traffic.h:372
int speed
Definition: traffic.h:373
struct quantifier * quantifier
Definition: traffic.h:377
int si_count
Definition: traffic.h:379
Definition: traffic.c:127
Location data for a traffic message.
Definition: traffic.h:298
char * tmc_table
Definition: traffic.h:326
enum location_ramps ramps
Definition: traffic.h:314
struct traffic_point * via
Definition: traffic.h:302
struct traffic_point * to
Definition: traffic.h:301
struct traffic_point * at
Definition: traffic.h:299
char * destination
Definition: traffic.h:306
struct traffic_location_priv * priv
Definition: traffic.h:334
enum location_fuzziness fuzziness
Definition: traffic.h:313
char * road_name
Definition: traffic.h:324
enum location_dir directionality
Definition: traffic.h:311
enum item_type road_type
Definition: traffic.h:321
int tmc_direction
Definition: traffic.h:331
char * direction
Definition: traffic.h:309
char * road_ref
Definition: traffic.h:325
struct traffic_point * not_via
Definition: traffic.h:304
struct traffic_point * from
Definition: traffic.h:300
Definition: traffic.c:135
A traffic message.
Definition: traffic.h:392
int replaced_count
Definition: traffic.h:409
time_t expiration_time
Definition: traffic.h:400
char ** replaces
Definition: traffic.h:410
char * id
Definition: traffic.h:393
int is_cancellation
Definition: traffic.h:403
int is_forecast
Definition: traffic.h:407
time_t receive_time
Definition: traffic.h:397
time_t end_time
Definition: traffic.h:402
struct traffic_location * location
Definition: traffic.h:412
struct traffic_event ** events
Definition: traffic.h:414
int event_count
Definition: traffic.h:413
time_t update_time
Definition: traffic.h:399
time_t start_time
Definition: traffic.h:401
struct traffic_message_priv * priv
Definition: traffic.h:415
Holds all functions a traffic plugin has to implement to be usable.
Definition: traffic.h:258
void(* destroy)(struct traffic_priv *this_)
Definition: traffic.h:260
A point on the road.
Definition: traffic.h:269
char * junction_ref
Definition: traffic.h:273
char * junction_name
Definition: traffic.h:272
char * tmc_id
Definition: traffic.h:274
Stores information about the plugin instance.
Definition: traffic_dummy.c:46
Extra information supplied with a traffic event.
Definition: traffic.h:355
enum si_class si_class
Definition: traffic.h:356
enum si_type type
Definition: traffic.h:357
struct quantifier * quantifier
Definition: traffic.h:359
A traffic plugin instance.
Definition: traffic.c:115
struct traffic_message ** traffic_get_messages_from_xml_string(struct traffic *this_, char *xml)
Reads traffic messages from an XML string.
Definition: traffic.c:5878
struct traffic_point * traffic_point_new_short(float lon, float lat)
Creates a new traffic_point.
Definition: traffic.c:5479
void traffic_init(void)
Initializes the traffic plugin.
Definition: traffic.c:5783
struct map * traffic_get_map(struct traffic *this_)
Returns the map for the traffic plugin.
Definition: traffic.c:5788
const char * si_class_to_string(enum si_class this_)
Translates a supplementary information class to its string representation.
Definition: traffic.c:5380
struct traffic_message * traffic_message_new(char *id, time_t receive_time, time_t update_time, time_t expiration_time, time_t start_time, time_t end_time, int is_cancellation, int is_Forecast, int replaced_count, char **replaces, struct traffic_location *location, int event_count, struct traffic_event **events)
Creates a new traffic_message.
Definition: traffic.c:5638
si_type
Supplementary information types.
Definition: traffic.h:228
@ si_tendency_queue_increasing
Definition: traffic.h:235
@ si_invalid
Definition: traffic.h:229
@ si_vehicle_motor
Definition: traffic.h:243
@ si_vehicle_hgv
Definition: traffic.h:242
@ si_vehicle_hazmat
Definition: traffic.h:241
@ si_tendency_queue_decreasing
Definition: traffic.h:234
@ si_place_tunnel
Definition: traffic.h:233
@ si_vehicle_bus
Definition: traffic.h:237
@ si_vehicle_car
Definition: traffic.h:238
@ si_vehicle_car_with_trailer
Definition: traffic.h:240
@ si_vehicle_with_trailer
Definition: traffic.h:244
@ si_vehicle_all
Definition: traffic.h:236
@ si_place_ramp
Definition: traffic.h:231
@ si_vehicle_car_with_caravan
Definition: traffic.h:239
@ si_place_bridge
Definition: traffic.h:230
@ si_place_roadworks
Definition: traffic.h:232
void traffic_event_destroy(struct traffic_event *this_)
Destroys a traffic_event.
Definition: traffic.c:5601
struct traffic_event * traffic_event_new_short(enum event_class event_class, enum event_type type)
Creates a new traffic_event.
Definition: traffic.c:5597
event_type
Event types.
Definition: traffic.h:98
@ event_restriction_entry_blocked
Definition: traffic.h:158
@ event_restriction_contraflow
Definition: traffic.h:152
@ event_restriction_exit_blocked
Definition: traffic.h:160
@ event_invalid
Definition: traffic.h:99
@ event_restriction_open
Definition: traffic.h:165
@ event_congestion_cleared
Definition: traffic.h:100
@ event_congestion_slow_traffic
Definition: traffic.h:109
@ event_congestion_traffic_flowing_freely
Definition: traffic.h:117
@ event_restriction_ramp_closed
Definition: traffic.h:167
@ event_congestion_traffic_easing
Definition: traffic.h:116
@ event_restriction_access_restrictions_lifted
Definition: traffic.h:135
@ event_restriction_carriageway_blocked
Definition: traffic.h:148
@ event_restriction_all_carriageways_reopened
Definition: traffic.h:139
@ event_congestion_traffic_problem
Definition: traffic.h:126
@ event_delay_clearance
Definition: traffic.h:127
@ event_restriction_blocked_ahead
Definition: traffic.h:146
@ event_congestion_traffic_lighter_than_normal
Definition: traffic.h:121
@ event_restriction_speed_limit
Definition: traffic.h:178
@ event_restriction_ramp_reopened
Definition: traffic.h:168
@ event_delay_several_hours
Definition: traffic.h:132
@ event_delay_forecast_withdrawn
Definition: traffic.h:130
@ event_restriction_lane_blocked
Definition: traffic.h:163
@ event_delay_uncertain_duration
Definition: traffic.h:133
@ event_restriction_lane_closed
Definition: traffic.h:164
@ event_restriction_intermittent_closures
Definition: traffic.h:162
@ event_delay_long_delay
Definition: traffic.h:131
@ event_restriction_reopened
Definition: traffic.h:172
@ event_congestion_normal_traffic
Definition: traffic.h:105
@ event_congestion_none
Definition: traffic.h:104
@ event_restriction_road_cleared
Definition: traffic.h:173
@ event_restriction_batch_service
Definition: traffic.h:140
@ event_restriction_all_carriageways_cleared
Definition: traffic.h:138
@ event_congestion_long_queue
Definition: traffic.h:103
@ event_restriction_exit_reopened
Definition: traffic.h:161
@ event_congestion_traffic_heavier_than_normal
Definition: traffic.h:119
@ event_restriction_ramp_blocked
Definition: traffic.h:166
@ event_restriction_speed_limit_lifted
Definition: traffic.h:179
@ event_restriction_reduced_lanes
Definition: traffic.h:169
@ event_restriction_carriageway_closed
Definition: traffic.h:150
@ event_restriction_blocked
Definition: traffic.h:143
@ event_congestion_forecast_withdrawn
Definition: traffic.h:101
@ event_restriction_closed
Definition: traffic.h:153
@ event_restriction_entry_reopened
Definition: traffic.h:159
@ event_congestion_traffic_much_heavier_than_normal
Definition: traffic.h:123
@ event_congestion_stationary_traffic_likely
Definition: traffic.h:111
@ event_congestion_stationary_traffic
Definition: traffic.h:110
@ event_delay_delay
Definition: traffic.h:128
@ event_congestion_traffic_building_up
Definition: traffic.h:112
@ event_delay_delay_possible
Definition: traffic.h:129
@ event_congestion_queue_likely
Definition: traffic.h:107
@ event_congestion_heavy_traffic
Definition: traffic.h:102
@ event_restriction_single_alternate_line_traffic
Definition: traffic.h:174
@ event_congestion_traffic_congestion
Definition: traffic.h:114
@ event_congestion_queue
Definition: traffic.h:106
@ event_delay_very_long_delay
Definition: traffic.h:134
@ event_restriction_closed_ahead
Definition: traffic.h:156
event_class
Classes for events.
Definition: traffic.h:82
@ event_class_congestion
Definition: traffic.h:84
@ event_class_restriction
Definition: traffic.h:86
@ event_class_delay
Definition: traffic.h:85
@ event_class_invalid
Definition: traffic.h:83
struct traffic_location * traffic_location_new(struct traffic_point *at, struct traffic_point *from, struct traffic_point *to, struct traffic_point *via, struct traffic_point *not_via, char *destination, char *direction, enum location_dir directionality, enum location_fuzziness fuzziness, enum location_ramps ramps, enum item_type road_type, char *road_name, char *road_ref, char *tmc_table, int tmc_direction)
Creates a new traffic_location.
Definition: traffic.c:5494
enum location_fuzziness location_fuzziness_new(char *string)
Creates a location fuzziness from its string representation.
Definition: traffic.c:5312
void traffic_set_mapset(struct traffic *this_, struct mapset *ms)
Sets the mapset for the traffic plugin.
Definition: traffic.c:5942
struct traffic_event * traffic_event_new(enum event_class event_class, enum event_type type, int length, int speed, struct quantifier *quantifier, int si_count, struct traffic_suppl_info **si)
Creates a new traffic_event.
Definition: traffic.c:5577
struct traffic_message ** traffic_get_messages_from_xml_file(struct traffic *this_, char *filename)
Reads previously stored traffic messages from an XML file.
Definition: traffic.c:5861
void traffic_message_add_event(struct traffic_message *this_, struct traffic_event *event)
Adds an event to a message.
Definition: traffic.c:5723
enum event_class event_class_new(char *string)
Creates an event class from its string representation.
Definition: traffic.c:5030
void traffic_suppl_info_destroy(struct traffic_suppl_info *this_)
Destroys a traffic_suppl_info.
Definition: traffic.c:5571
enum si_class si_class_new(char *string)
Creates a supplementary information class from its string representation.
Definition: traffic.c:5368
void traffic_message_destroy(struct traffic_message *this_)
Destroys a traffic_message.
Definition: traffic.c:5697
const char * event_class_to_string(enum event_class this_)
Translates an event class to its string representation.
Definition: traffic.c:5042
struct traffic_message * traffic_message_new_short(char *id, time_t receive_time, time_t update_time, time_t expiration_time, int is_forecast, struct traffic_location *location, int event_count, struct traffic_event **events)
Creates a new traffic_message.
Definition: traffic.c:5670
location_ramps
Whether a location refers to the main carriageway or the ramps.
Definition: traffic.h:208
@ location_ramps_exit
Definition: traffic.h:212
@ location_ramps_entry
Definition: traffic.h:211
@ location_ramps_none
Definition: traffic.h:209
@ location_ramps_all
Definition: traffic.h:210
struct traffic_message * traffic_message_new_cancellation(char *id, time_t receive_time, time_t update_time, time_t expiration_time, struct traffic_location *location)
Creates a new cancellation traffic_message.
Definition: traffic.c:5691
location_dir
The directionality of a location.
Definition: traffic.h:185
@ location_dir_one
Definition: traffic.h:186
@ location_dir_both
Definition: traffic.h:187
struct traffic_message ** traffic_get_stored_messages(struct traffic *this_)
Returns currently active traffic messages.
Definition: traffic.c:5895
struct traffic_point * traffic_point_new(float lon, float lat, char *junction_name, char *junction_ref, char *tmc_id)
Creates a new traffic_point.
Definition: traffic.c:5466
struct traffic_message * traffic_message_new_single_event(char *id, time_t receive_time, time_t update_time, time_t expiration_time, int is_forecast, struct traffic_location *location, enum event_class event_class, enum event_type type)
Creates a new single-event traffic_message.
Definition: traffic.c:5677
si_class
Classes for supplementary information items.
Definition: traffic.h:218
@ si_class_place
Definition: traffic.h:220
@ si_class_tendency
Definition: traffic.h:221
@ si_class_invalid
Definition: traffic.h:219
@ si_class_vehicle
Definition: traffic.h:222
const char * event_type_to_string(enum event_type this_)
Translates an event type to its string representation.
Definition: traffic.c:5167
enum item_type item_type_from_road_type(char *string, int is_urban)
Creates an item type from a road type.
Definition: traffic.c:5284
struct item ** traffic_message_get_items(struct traffic_message *this_)
Returns the items associated with a message.
Definition: traffic.c:5741
enum si_type si_type_new(char *string)
Creates a supplementary information type from its string representation.
Definition: traffic.c:5393
struct traffic_event * traffic_message_get_event(struct traffic_message *this_, int index)
Retrieves an event associated with a message.
Definition: traffic.c:5734
const char * location_ramps_to_string(enum location_ramps this_)
Translates an enum location_ramps to its string representation.
Definition: traffic.c:5353
const char * si_type_to_string(enum si_type this_)
Translates a supplementary information type to its string representation.
Definition: traffic.c:5429
struct traffic_suppl_info * traffic_suppl_info_new(enum si_class si_class, enum si_type type, struct quantifier *quantifier)
Creates a new traffic_suppl_info.
Definition: traffic.c:5561
void traffic_point_destroy(struct traffic_point *this_)
Destroys a traffic_point.
Definition: traffic.c:5483
location_fuzziness
The fuzziness of a location.
Definition: traffic.h:193
@ location_fuzziness_end_unknown
Definition: traffic.h:197
@ location_fuzziness_extent_unknown
Definition: traffic.h:201
@ location_fuzziness_none
Definition: traffic.h:194
@ location_fuzziness_low_res
Definition: traffic.h:195
@ location_fuzziness_start_unknown
Definition: traffic.h:199
void traffic_process_messages(struct traffic *this_, struct traffic_message **messages)
Processes new traffic messages.
Definition: traffic.c:5927
void traffic_location_destroy(struct traffic_location *this_)
Destroys a traffic_location.
Definition: traffic.c:5530
struct traffic_suppl_info * traffic_event_get_suppl_info(struct traffic_event *this_, int index)
Retrieves a supplementary information item associated with an event.
Definition: traffic.c:5631
void traffic_event_add_suppl_info(struct traffic_event *this_, struct traffic_suppl_info *si)
Adds a supplementary information item to an event.
Definition: traffic.c:5614
enum location_dir location_dir_new(char *string)
Creates a location directionality from its string representation.
Definition: traffic.c:5306
const char * location_fuzziness_to_string(enum location_fuzziness this_)
Translates location fuzziness to its string representation.
Definition: traffic.c:5326
enum location_ramps location_ramps_new(char *string)
Creates an enum location_ramps from its string representation.
Definition: traffic.c:5341
struct traffic_location * traffic_location_new_short(struct traffic_point *at, struct traffic_point *from, struct traffic_point *to, struct traffic_point *via, struct traffic_point *not_via, enum location_dir directionality, enum location_fuzziness fuzziness)
Creates a new traffic_location.
Definition: traffic.c:5523
void traffic_set_route(struct traffic *this_, struct route *rt)
Sets the route for the traffic plugin.
Definition: traffic.c:5946
void traffic_destroy(struct traffic *this_)
Destructor.
Definition: traffic.c:5950
enum event_type event_type_new(char *string)
Creates an event type from its string representation.
Definition: traffic.c:5055