diff options
author | mvglasow <michael -at- vonglasow.com> | 2018-10-06 21:52:34 +0200 |
---|---|---|
committer | mvglasow <michael -at- vonglasow.com> | 2018-10-06 21:52:34 +0200 |
commit | f4eca99cb392f114fd2aa98fba4541543ff31bae (patch) | |
tree | beefef929497de633c3a141257bfc5557f010b08 /navit | |
parent | bcff3d35a95b35aab96e16bf3cbebd5e9e04afc7 (diff) | |
download | navit-f4eca99cb392f114fd2aa98fba4541543ff31bae.tar.gz |
Add:traffic:Add support for lane closures and contraflow
Signed-off-by: mvglasow <michael -at- vonglasow.com>
Diffstat (limited to 'navit')
-rw-r--r-- | navit/traffic.c | 28 | ||||
-rw-r--r-- | navit/traffic.h | 6 |
2 files changed, 34 insertions, 0 deletions
diff --git a/navit/traffic.c b/navit/traffic.c index 46895eb17..eee544518 100644 --- a/navit/traffic.c +++ b/navit/traffic.c @@ -3294,6 +3294,18 @@ static struct seg_data * traffic_message_parse_events(struct traffic_message * t if (speed_factor > 30) speed_factor = 30; break; + case event_restriction_lane_blocked: + case event_restriction_lane_closed: + case event_restriction_reduced_lanes: + /* Assume speed is reduced proportionally to number of lanes, and never higher than 80 */ + speed = 80; + /* TODO determine actual numbers of lanes */ + speed_factor = 67; + break; + case event_restriction_contraflow: + /* Contraflow: assume 80, unless explicitly specified */ + speed = 80; + break; default: break; } @@ -4353,6 +4365,8 @@ enum event_type event_type_new(char * string) { return event_restriction_carriageway_blocked; if (!g_ascii_strcasecmp(string, "RESTRICTION_CARRIAGEWAY_CLOSED")) return event_restriction_carriageway_closed; + if (!g_ascii_strcasecmp(string, "RESTRICTION_CONTRAFLOW")) + return event_restriction_contraflow; if (!g_ascii_strcasecmp(string, "RESTRICTION_CLOSED")) return event_restriction_closed; if (!g_ascii_strcasecmp(string, "RESTRICTION_CLOSED_AHEAD")) @@ -4363,6 +4377,10 @@ enum event_type event_type_new(char * string) { return event_restriction_entry_reopened; if (!g_ascii_strcasecmp(string, "RESTRICTION_INTERMITTENT_CLOSURES")) return event_restriction_intermittent_closures; + if (!g_ascii_strcasecmp(string, "RESTRICTION_LANE_BLOCKED")) + return event_restriction_lane_blocked; + if (!g_ascii_strcasecmp(string, "RESTRICTION_LANE_CLOSED")) + return event_restriction_lane_closed; if (!g_ascii_strcasecmp(string, "RESTRICTION_OPEN")) return event_restriction_open; if (!g_ascii_strcasecmp(string, "RESTRICTION_RAMP_BLOCKED")) @@ -4371,6 +4389,8 @@ enum event_type event_type_new(char * string) { return event_restriction_ramp_closed; if (!g_ascii_strcasecmp(string, "RESTRICTION_RAMP_REOPENED")) return event_restriction_ramp_reopened; + if (!g_ascii_strcasecmp(string, "RESTRICTION_REDUCED_LANES")) + return event_restriction_reduced_lanes; if (!g_ascii_strcasecmp(string, "RESTRICTION_REOPENED")) return event_restriction_reopened; if (!g_ascii_strcasecmp(string, "RESTRICTION_ROAD_CLEARED")) @@ -4461,6 +4481,8 @@ const char * event_type_to_string(enum event_type this_) { return "RESTRICTION_CLOSED"; case event_restriction_closed_ahead: return "RESTRICTION_CLOSED_AHEAD"; + case event_restriction_contraflow: + return "RESTRICTION_CONTRAFLOW"; case event_restriction_entry_blocked: return "RESTRICTION_ENTRY_BLOCKED"; case event_restriction_entry_reopened: @@ -4471,6 +4493,10 @@ const char * event_type_to_string(enum event_type this_) { return "RESTRICTION_EXIT_REOPENED"; case event_restriction_intermittent_closures: return "RESTRICTION_INTERMITTENT_CLOSURES"; + case event_restriction_lane_blocked: + return "RESTRICTION_LANE_BLOCKED"; + case event_restriction_lane_closed: + return "RESTRICTION_LANE_CLOSED"; case event_restriction_open: return "RESTRICTION_OPEN"; case event_restriction_ramp_blocked: @@ -4479,6 +4505,8 @@ const char * event_type_to_string(enum event_type this_) { return "RESTRICTION_RAMP_CLOSED"; case event_restriction_ramp_reopened: return "RESTRICTION_RAMP_REOPENED"; + case event_restriction_reduced_lanes: + return "RESTRICTION_REDUCED_LANES"; case event_restriction_reopened: return "RESTRICTION_REOPENED"; case event_restriction_road_cleared: diff --git a/navit/traffic.h b/navit/traffic.h index 494250001..f1c8f8b34 100644 --- a/navit/traffic.h +++ b/navit/traffic.h @@ -131,6 +131,7 @@ enum event_type { * otherwise indicated in supplementary information) */ event_restriction_carriageway_closed, /*!< Carriageway closed (main carriageway, unless * otherwise indicated in supplementary information) */ + event_restriction_contraflow, /*!< Contraflow */ event_restriction_closed, /*!< Closed until `q_time` (refers to the entire * road; separate codes exist for closures of * individual lanes or carriageways) */ @@ -141,10 +142,15 @@ enum event_type { event_restriction_exit_blocked, /*!< `q_int` th exit slip road blocked */ event_restriction_exit_reopened, /*!< Exit reopened */ event_restriction_intermittent_closures, /*!< Intermittent short term closures */ + event_restriction_lane_blocked, /*!< `q:int` lanes blocked */ + event_restriction_lane_closed, /*!< `q:int` lanes closed */ event_restriction_open, /*!< Open */ event_restriction_ramp_blocked, /*!< Ramps blocked */ event_restriction_ramp_closed, /*!< Ramps closed */ event_restriction_ramp_reopened, /*!< Ramps reopened */ + event_restriction_reduced_lanes, /*!< Carriageway reduced from `q_ints[1]` lanes to `q_int[0]` + * lanes (quantifiers are currently not implemented for this + * event type) */ event_restriction_reopened, /*!< Reopened */ event_restriction_road_cleared, /*!< Road cleared */ event_restriction_single_alternate_line_traffic, /*!< Single alternate line traffic (because the |