From a6b7b58357a8f42c01842c054b79fb105d28f4a7 Mon Sep 17 00:00:00 2001 From: Jose Ignacio Monreal Bailey Date: Fri, 15 Jun 2018 17:45:12 +0100 Subject: [PATCH] Starting to change dinamically the lights time --- .../traci/TraciSimulationController.java | 24 +++++++++++++++++++ .../xml/XMLSimulationController.java | 15 ++++++++++++ ...faultTrafficLightInformationComponent.java | 23 ++++++++++++++++++ 3 files changed, 62 insertions(+) diff --git a/src/de/tud/kom/p2psim/impl/topology/movement/vehicular/sumo/simulation/controller/traci/TraciSimulationController.java b/src/de/tud/kom/p2psim/impl/topology/movement/vehicular/sumo/simulation/controller/traci/TraciSimulationController.java index a9b06868..ede61469 100755 --- a/src/de/tud/kom/p2psim/impl/topology/movement/vehicular/sumo/simulation/controller/traci/TraciSimulationController.java +++ b/src/de/tud/kom/p2psim/impl/topology/movement/vehicular/sumo/simulation/controller/traci/TraciSimulationController.java @@ -194,6 +194,30 @@ public class TraciSimulationController implements VehicleController, SimulationS return result; } + @Override + public int getPhase(String trafficLightId) { + SumoCommand phaseCommand = Trafficlight.getPhase(trafficLightId); + Object phaseObject = requestObject(phaseCommand); + int phase = (int)phaseObject; + + return phase; + } + + @Override + public void setPhase(String trafficLightId, int phase) { + SumoCommand phaseCommand = Trafficlight.setPhase(trafficLightId, phase); + execute(phaseCommand); + } + + @Override + public long getRemainingPhaseTime(String trafficLightId) { + SumoCommand nextSwitchCommand = Trafficlight.getNextSwitch(trafficLightId); + Object nextSwitchObject = requestObject(nextSwitchCommand); + long remaingPhaseTime = (long) (((int)nextSwitchObject) - (Simulator.getCurrentTime()/1000.0)); + + return remaingPhaseTime; + } + @Override public boolean nextStep() { if (Simulator.getEndTime() == Simulator.getCurrentTime()) { diff --git a/src/de/tud/kom/p2psim/impl/topology/movement/vehicular/sumo/simulation/controller/xml/XMLSimulationController.java b/src/de/tud/kom/p2psim/impl/topology/movement/vehicular/sumo/simulation/controller/xml/XMLSimulationController.java index 41350a38..ebe7c1f4 100755 --- a/src/de/tud/kom/p2psim/impl/topology/movement/vehicular/sumo/simulation/controller/xml/XMLSimulationController.java +++ b/src/de/tud/kom/p2psim/impl/topology/movement/vehicular/sumo/simulation/controller/xml/XMLSimulationController.java @@ -211,6 +211,21 @@ public class XMLSimulationController implements VehicleController, SimulationSet } @Override + public int getPhase(String trafficLightId) { + return -1; + } + + @Override + public void setPhase(String trafficLightId, int phase) { + + } + + @Override + public long getRemainingPhaseTime(String trafficLightId) { + return 0; + } + + @Override public double getScenarioWidth() { return -1; } diff --git a/src/de/tud/kom/p2psim/impl/vehicular/trafficlights/DefaultTrafficLightInformationComponent.java b/src/de/tud/kom/p2psim/impl/vehicular/trafficlights/DefaultTrafficLightInformationComponent.java index d2bcd9a1..28497a35 100644 --- a/src/de/tud/kom/p2psim/impl/vehicular/trafficlights/DefaultTrafficLightInformationComponent.java +++ b/src/de/tud/kom/p2psim/impl/vehicular/trafficlights/DefaultTrafficLightInformationComponent.java @@ -4,10 +4,13 @@ import de.tudarmstadt.maki.simonstrator.api.Host; import de.tudarmstadt.maki.simonstrator.api.component.sensor.location.Location; import de.tudarmstadt.maki.simonstrator.api.component.vehicular.api.SimulationSetupExtractor; import de.tudarmstadt.maki.simonstrator.api.component.vehicular.api.TrafficLightController; +import de.tudarmstadt.maki.simonstrator.api.component.vehicular.roadnetwork.RoadNetworkLink; import de.tudarmstadt.maki.simonstrator.api.component.vehicular.roadnetwork.trafficlights.TrafficLight; import de.tudarmstadt.maki.simonstrator.api.component.vehicular.roadnetwork.trafficlights.TrafficLightInformationComponent; +import de.tudarmstadt.maki.simonstrator.api.component.vehicular.roadnetwork.trafficlights.TrafficLightState; import java.util.List; +import java.util.Map; public class DefaultTrafficLightInformationComponent implements TrafficLightInformationComponent { private Host host; @@ -69,6 +72,26 @@ public class DefaultTrafficLightInformationComponent implements TrafficLightInfo return controller.getControlledEdges(pTrafficLightId); } + @Override + public Map getTrafficLightStateForEachLane() { + return controller.getTrafficLightStateForEachLane(trafficLightId); + } + + @Override + public int getPhase() { + return controller.getPhase(trafficLightId); + } + + @Override + public void setPhase(int phase) { + controller.setPhase(trafficLightId, phase); + } + + @Override + public long getRemainingPhaseTime() { + return controller.getRemainingPhaseTime(trafficLightId); + } + @Override public void initialize() { -- GitLab