navit 0.5.3-trunk
Loading...
Searching...
No Matches
traffic.h
Go to the documentation of this file.
1
53#ifndef NAVIT_TRAFFIC_H
54#define NAVIT_TRAFFIC_H
55
56#include "route.h"
57#include <time.h>
58
59#ifdef __cplusplus
60extern "C" {
61#endif
62
79#define order_to_min_road_class(x) (x <= 8 ? "PRIMARY" : x <= 10 ? "SECONDARY" : x <= 12 ? "TERTIARY" : NULL)
80
84/* If additional event classes are introduced, traffic_event_is_valid() must be adapted to recognize them. */
92
96/* If additional events are introduced, remember to do the following:
97 * - If the events belong to an existing class, insert them right after the last existing event for that class.
98 * - If the events belong to a new class, insert them at the end of the list.
99 * - Always keep events of the same class together.
100 * - After adding events (of any class) at the end of the list, adapt traffic_event_is_valid() to recognize them. */
183};
184
192
207
217
227
249
250struct traffic;
251struct traffic_priv;
254
262 struct traffic_message **(*get_messages)(
263 struct traffic_priv *this_);
264 void (*destroy)(struct traffic_priv *this_);
265};
266
283
340
344/*
345 * For now, these are various integer types, but other types may be added in the future.
346 */
348 union {
350 int q_int;
352 unsigned int q_time;
353 } u;
354};
355
366
386
421
422struct map;
423struct mapset;
424struct traffic;
425
434enum event_class event_class_new(char *string);
435
441const char *event_class_to_string(enum event_class this_);
442
451enum event_type event_type_new(char *string);
452
458const char *event_type_to_string(enum event_type this_);
459
473enum item_type item_type_from_road_type(char *string, int is_urban);
474
483enum location_dir location_dir_new(char *string);
484
494
501
510enum location_ramps location_ramps_new(char *string);
511
517const char *location_ramps_to_string(enum location_ramps this_);
518
527enum si_class si_class_new(char *string);
528
534const char *si_class_to_string(enum si_class this_);
535
544enum si_type si_type_new(char *string);
545
551const char *si_type_to_string(enum si_type this_);
552
565struct traffic_point *traffic_point_new(float lon, float lat, char *junction_name, char *junction_ref, char *tmc_id);
566
576struct traffic_point *traffic_point_new_short(float lon, float lat);
577
588void traffic_point_destroy(struct traffic_point *this_);
589
628// TODO split CID/LTN?
630 struct traffic_point *to, struct traffic_point *via,
631 struct traffic_point *not_via, char *destination, char *direction,
634 char *road_ref, char *tmc_table, int tmc_direction);
635
660 struct traffic_point *to, struct traffic_point *via,
663
675
688 struct quantifier *quantifier);
689
701
722 struct quantifier *quantifier, int si_count, struct traffic_suppl_info **si);
723
734
745void traffic_event_destroy(struct traffic_event *this_);
746
757
765struct traffic_suppl_info *traffic_event_get_suppl_info(struct traffic_event *this_, int index);
766
796struct traffic_message *traffic_message_new(char *id, time_t receive_time, time_t update_time, time_t expiration_time,
797 time_t start_time, time_t end_time, int is_cancellation, int is_Forecast,
799 int event_count, struct traffic_event **events);
800
828 time_t expiration_time, int is_forecast,
830 struct traffic_event **events);
831
857 time_t expiration_time, int is_forecast,
860
885
896void traffic_message_destroy(struct traffic_message *this_);
897
907void traffic_message_add_event(struct traffic_message *this_, struct traffic_event *event);
908
916struct traffic_event *traffic_message_get_event(struct traffic_message *this_, int index);
917
930struct item **traffic_message_get_items(struct traffic_message *this_);
931
937void traffic_init(void);
938
949
959struct traffic_message **traffic_get_messages_from_xml_string(struct traffic *this_, char *xml);
960
971struct map *traffic_get_map(struct traffic *this_);
972
986
999void traffic_process_messages(struct traffic *this_, struct traffic_message **messages);
1000
1009void traffic_set_mapset(struct traffic *this_, struct mapset *ms);
1010
1016void traffic_set_route(struct traffic *this_, struct route *rt);
1017
1021void traffic_destroy(struct traffic *this_);
1022
1023/* end of prototypes */
1024#ifdef __cplusplus
1025}
1026#endif
1027
1028#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_type_def.h:8
Contains exported code for route.c.
A WGS84 coordinate.
Definition coord.h:94
Definition coord.h:33
Represents an object on a map.
Definition item.h:122
Definition map.c:58
Definition mapset.c:38
A quantifier, which can be used with events and supplementary information.
Definition traffic.h:347
unsigned int q_time
Definition traffic.h:352
int q_duration
Definition traffic.h:349
int q_speed
Definition traffic.h:351
union quantifier::@11 u
int q_int
Definition traffic.h:350
A complete route.
Definition route.c:206
A traffic event.
Definition traffic.h:372
enum event_class event_class
Definition traffic.h:373
struct traffic_suppl_info ** si
Definition traffic.h:384
enum event_type type
Definition traffic.h:374
int length
Definition traffic.h:376
int speed
Definition traffic.h:377
struct quantifier * quantifier
Definition traffic.h:381
int si_count
Definition traffic.h:383
Definition traffic.c:129
Location data for a traffic message.
Definition traffic.h:302
char * tmc_table
Definition traffic.h:330
enum location_ramps ramps
Definition traffic.h:318
struct traffic_point * via
Definition traffic.h:306
struct traffic_point * to
Definition traffic.h:305
struct traffic_point * at
Definition traffic.h:303
char * destination
Definition traffic.h:310
struct traffic_location_priv * priv
Definition traffic.h:338
enum location_fuzziness fuzziness
Definition traffic.h:317
char * road_name
Definition traffic.h:328
enum location_dir directionality
Definition traffic.h:315
enum item_type road_type
Definition traffic.h:325
int tmc_direction
Definition traffic.h:335
char * direction
Definition traffic.h:313
char * road_ref
Definition traffic.h:329
struct traffic_point * not_via
Definition traffic.h:308
struct traffic_point * from
Definition traffic.h:304
Definition traffic.c:137
A traffic message.
Definition traffic.h:396
int replaced_count
Definition traffic.h:413
time_t expiration_time
Definition traffic.h:404
char ** replaces
Definition traffic.h:414
char * id
Definition traffic.h:397
int is_cancellation
Definition traffic.h:407
int is_forecast
Definition traffic.h:411
time_t receive_time
Definition traffic.h:401
time_t end_time
Definition traffic.h:406
struct traffic_location * location
Definition traffic.h:416
struct traffic_event ** events
Definition traffic.h:418
int event_count
Definition traffic.h:417
time_t update_time
Definition traffic.h:403
time_t start_time
Definition traffic.h:405
struct traffic_message_priv * priv
Definition traffic.h:419
Holds all functions a traffic plugin has to implement to be usable.
Definition traffic.h:261
void(* destroy)(struct traffic_priv *this_)
Definition traffic.h:264
A point on the road.
Definition traffic.h:273
char * junction_ref
Definition traffic.h:277
char * junction_name
Definition traffic.h:276
char * tmc_id
Definition traffic.h:278
Stores information about the plugin instance.
Definition traffic_dummy.c:48
Extra information supplied with a traffic event.
Definition traffic.h:359
enum si_class si_class
Definition traffic.h:360
enum si_type type
Definition traffic.h:361
struct quantifier * quantifier
Definition traffic.h:363
A traffic plugin instance.
Definition traffic.c:117
void traffic_init(void)
Initializes the traffic plugin.
Definition traffic.c:5768
si_type
Supplementary information types.
Definition traffic.h:231
@ si_tendency_queue_increasing
Definition traffic.h:238
@ si_invalid
Definition traffic.h:232
@ si_vehicle_motor
Definition traffic.h:246
@ si_vehicle_hgv
Definition traffic.h:245
@ si_vehicle_hazmat
Definition traffic.h:244
@ si_tendency_queue_decreasing
Definition traffic.h:237
@ si_place_tunnel
Definition traffic.h:236
@ si_vehicle_bus
Definition traffic.h:240
@ si_vehicle_car
Definition traffic.h:241
@ si_vehicle_car_with_trailer
Definition traffic.h:243
@ si_vehicle_with_trailer
Definition traffic.h:247
@ si_vehicle_all
Definition traffic.h:239
@ si_place_ramp
Definition traffic.h:234
@ si_vehicle_car_with_caravan
Definition traffic.h:242
@ si_place_bridge
Definition traffic.h:233
@ si_place_roadworks
Definition traffic.h:235
const char * location_fuzziness_to_string(enum location_fuzziness this_)
Translates location fuzziness to its string representation.
Definition traffic.c:5310
const char * location_ramps_to_string(enum location_ramps this_)
Translates an enum location_ramps to its string representation.
Definition traffic.c:5337
void traffic_event_destroy(struct traffic_event *this_)
Destroys a traffic_event.
Definition traffic.c:5586
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:5546
struct traffic_message ** traffic_get_messages_from_xml_string(struct traffic *this_, char *xml)
Reads traffic messages from an XML string.
Definition traffic.c:5863
event_type
Event types.
Definition traffic.h:101
@ event_restriction_entry_blocked
Definition traffic.h:161
@ event_restriction_contraflow
Definition traffic.h:155
@ event_restriction_exit_blocked
Definition traffic.h:163
@ event_invalid
Definition traffic.h:102
@ event_restriction_open
Definition traffic.h:168
@ event_congestion_cleared
Definition traffic.h:103
@ event_congestion_slow_traffic
Definition traffic.h:112
@ event_congestion_traffic_flowing_freely
Definition traffic.h:120
@ event_restriction_ramp_closed
Definition traffic.h:170
@ event_congestion_traffic_easing
Definition traffic.h:119
@ event_restriction_access_restrictions_lifted
Definition traffic.h:138
@ event_restriction_carriageway_blocked
Definition traffic.h:151
@ event_restriction_all_carriageways_reopened
Definition traffic.h:142
@ event_congestion_traffic_problem
Definition traffic.h:129
@ event_delay_clearance
Definition traffic.h:130
@ event_restriction_blocked_ahead
Definition traffic.h:149
@ event_congestion_traffic_lighter_than_normal
Definition traffic.h:124
@ event_restriction_speed_limit
Definition traffic.h:181
@ event_restriction_ramp_reopened
Definition traffic.h:171
@ event_delay_several_hours
Definition traffic.h:135
@ event_delay_forecast_withdrawn
Definition traffic.h:133
@ event_restriction_lane_blocked
Definition traffic.h:166
@ event_delay_uncertain_duration
Definition traffic.h:136
@ event_restriction_lane_closed
Definition traffic.h:167
@ event_restriction_intermittent_closures
Definition traffic.h:165
@ event_delay_long_delay
Definition traffic.h:134
@ event_restriction_reopened
Definition traffic.h:175
@ event_congestion_normal_traffic
Definition traffic.h:108
@ event_congestion_none
Definition traffic.h:107
@ event_restriction_road_cleared
Definition traffic.h:176
@ event_restriction_batch_service
Definition traffic.h:143
@ event_restriction_all_carriageways_cleared
Definition traffic.h:141
@ event_congestion_long_queue
Definition traffic.h:106
@ event_restriction_exit_reopened
Definition traffic.h:164
@ event_congestion_traffic_heavier_than_normal
Definition traffic.h:122
@ event_restriction_ramp_blocked
Definition traffic.h:169
@ event_restriction_speed_limit_lifted
Definition traffic.h:182
@ event_restriction_reduced_lanes
Definition traffic.h:172
@ event_restriction_carriageway_closed
Definition traffic.h:153
@ event_restriction_blocked
Definition traffic.h:146
@ event_congestion_forecast_withdrawn
Definition traffic.h:104
@ event_restriction_closed
Definition traffic.h:156
@ event_restriction_entry_reopened
Definition traffic.h:162
@ event_congestion_traffic_much_heavier_than_normal
Definition traffic.h:126
@ event_congestion_stationary_traffic_likely
Definition traffic.h:114
@ event_congestion_stationary_traffic
Definition traffic.h:113
@ event_delay_delay
Definition traffic.h:131
@ event_congestion_traffic_building_up
Definition traffic.h:115
@ event_delay_delay_possible
Definition traffic.h:132
@ event_congestion_queue_likely
Definition traffic.h:110
@ event_congestion_heavy_traffic
Definition traffic.h:105
@ event_restriction_single_alternate_line_traffic
Definition traffic.h:177
@ event_congestion_traffic_congestion
Definition traffic.h:117
@ event_congestion_queue
Definition traffic.h:109
@ event_delay_very_long_delay
Definition traffic.h:137
@ event_restriction_closed_ahead
Definition traffic.h:159
event_class
Classes for events.
Definition traffic.h:85
@ event_class_congestion
Definition traffic.h:87
@ event_class_restriction
Definition traffic.h:89
@ event_class_delay
Definition traffic.h:88
@ event_class_invalid
Definition traffic.h:86
const char * si_type_to_string(enum si_type this_)
Translates a supplementary information type to its string representation.
Definition traffic.c:5413
enum location_fuzziness location_fuzziness_new(char *string)
Creates a location fuzziness from its string representation.
Definition traffic.c:5296
struct item ** traffic_message_get_items(struct traffic_message *this_)
Returns the items associated with a message.
Definition traffic.c:5726
struct traffic_point * traffic_point_new_short(float lon, float lat)
Creates a new traffic_point.
Definition traffic.c:5462
void traffic_set_mapset(struct traffic *this_, struct mapset *ms)
Sets the mapset for the traffic plugin.
Definition traffic.c:5927
struct map * traffic_get_map(struct traffic *this_)
Returns the map for the traffic plugin.
Definition traffic.c:5773
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:5655
void traffic_message_add_event(struct traffic_message *this_, struct traffic_event *event)
Adds an event to a message.
Definition traffic.c:5708
enum event_class event_class_new(char *string)
Creates an event class from its string representation.
Definition traffic.c:5014
void traffic_suppl_info_destroy(struct traffic_suppl_info *this_)
Destroys a traffic_suppl_info.
Definition traffic.c:5556
const char * event_class_to_string(enum event_class this_)
Translates an event class to its string representation.
Definition traffic.c:5026
enum si_class si_class_new(char *string)
Creates a supplementary information class from its string representation.
Definition traffic.c:5352
void traffic_message_destroy(struct traffic_message *this_)
Destroys a traffic_message.
Definition traffic.c:5682
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:5663
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:5677
location_ramps
Whether a location refers to the main carriageway or the ramps.
Definition traffic.h:211
@ location_ramps_exit
Definition traffic.h:215
@ location_ramps_entry
Definition traffic.h:214
@ location_ramps_none
Definition traffic.h:212
@ location_ramps_all
Definition traffic.h:213
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:5616
location_dir
The directionality of a location.
Definition traffic.h:188
@ location_dir_one
Definition traffic.h:189
@ location_dir_both
Definition traffic.h:190
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:5450
si_class
Classes for supplementary information items.
Definition traffic.h:221
@ si_class_place
Definition traffic.h:223
@ si_class_tendency
Definition traffic.h:224
@ si_class_invalid
Definition traffic.h:222
@ si_class_vehicle
Definition traffic.h:225
enum item_type item_type_from_road_type(char *string, int is_urban)
Creates an item type from a road type.
Definition traffic.c:5268
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:5477
enum si_type si_type_new(char *string)
Creates a supplementary information type from its string representation.
Definition traffic.c:5377
const char * event_type_to_string(enum event_type this_)
Translates an event type to its string representation.
Definition traffic.c:5151
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:5562
void traffic_point_destroy(struct traffic_point *this_)
Destroys a traffic_point.
Definition traffic.c:5466
location_fuzziness
The fuzziness of a location.
Definition traffic.h:196
@ location_fuzziness_end_unknown
Definition traffic.h:200
@ location_fuzziness_extent_unknown
Definition traffic.h:204
@ location_fuzziness_none
Definition traffic.h:197
@ location_fuzziness_low_res
Definition traffic.h:198
@ location_fuzziness_start_unknown
Definition traffic.h:202
void traffic_process_messages(struct traffic *this_, struct traffic_message **messages)
Processes new traffic messages.
Definition traffic.c:5912
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:5846
void traffic_location_destroy(struct traffic_location *this_)
Destroys a traffic_location.
Definition traffic.c:5515
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:5599
enum location_dir location_dir_new(char *string)
Creates a location directionality from its string representation.
Definition traffic.c:5290
const char * si_class_to_string(enum si_class this_)
Translates a supplementary information class to its string representation.
Definition traffic.c:5364
struct traffic_event * traffic_event_new_short(enum event_class event_class, enum event_type type)
Creates a new traffic_event.
Definition traffic.c:5582
enum location_ramps location_ramps_new(char *string)
Creates an enum location_ramps from its string representation.
Definition traffic.c:5325
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:5507
struct traffic_message ** traffic_get_stored_messages(struct traffic *this_)
Returns currently active traffic messages.
Definition traffic.c:5880
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:5623
struct traffic_event * traffic_message_get_event(struct traffic_message *this_, int index)
Retrieves an event associated with a message.
Definition traffic.c:5719
void traffic_set_route(struct traffic *this_, struct route *rt)
Sets the route for the traffic plugin.
Definition traffic.c:5931
void traffic_destroy(struct traffic *this_)
Destructor.
Definition traffic.c:5935
enum event_type event_type_new(char *string)
Creates an event type from its string representation.
Definition traffic.c:5039