1 /****************************************************************************/
2 // Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.org/sumo
3 // Copyright (C) 2017-2018 German Aerospace Center (DLR) and others.
4 // TraaS module
5 // Copyright (C) 2013-2017 Dresden University of Technology
6 // This program and the accompanying materials
7 // are made available under the terms of the Eclipse Public License v2.0
8 // which accompanies this distribution, and is available at
9 // http://www.eclipse.org/legal/epl-v20.html
10 // SPDX-License-Identifier: EPL-2.0
11 /****************************************************************************/
12 /// @file    Main.java
13 /// @author  Mario Krumnow
14 /// @date    2013
15 /// @version $Id$
16 ///
17 //
18 /****************************************************************************/
19 import java.util.LinkedList;
20 import it.polito.appeal.traci.SumoTraciConnection;
21 import de.tudresden.sumo.cmd.Simulation;
22 import de.tudresden.sumo.cmd.Vehicle;
23 import de.tudresden.sumo.cmd.Vehicletype;
24 import de.tudresden.sumo.cmd.Edge;
25 import de.tudresden.sumo.cmd.Lane;
26 import de.tudresden.sumo.cmd.Route;
27 import de.tudresden.sumo.cmd.Poi;
28 import de.tudresden.sumo.cmd.Polygon;
29 import de.tudresden.sumo.cmd.Person;
30 import de.tudresden.sumo.cmd.Inductionloop;
31 import de.tudresden.sumo.cmd.Trafficlight;
32 import de.tudresden.ws.container.SumoVehicleData;
33 import de.tudresden.ws.container.SumoStopFlags;
34 import de.tudresden.ws.container.SumoStringList;
35 import de.tudresden.ws.container.SumoStage;
36 import de.tudresden.ws.container.SumoTLSController;
37 import de.tudresden.ws.container.SumoTLSProgram;
38 
39 public class APITest {
40 
41 	static String sumo_bin = "sumo";
42 	static String config_file = "simulation/config.sumo.cfg";
43 	static double step_length = 1.0;
44 
main(String[] args)45 	public static void main(String[] args) {
46 
47 
48 		try{
49 
50 			SumoTraciConnection conn = new SumoTraciConnection(sumo_bin, config_file);
51 			conn.addOption("step-length", step_length+"");
52 			conn.addOption("start", "true"); //start sumo immediately
53 
54 			//start Traci Server
55 			conn.runServer();
56             conn.setOrder(1);
57 
58             SumoStage stage = (SumoStage)conn.do_job_get(Simulation.findRoute("gneE0", "gneE2", "car", 0, 0));
59             System.out.println("findRoute result stage:");
60             for (String s : stage.edges) {
61                 System.out.println("  " + s);
62             }
63             LinkedList<SumoStage> stages = (LinkedList<SumoStage>)conn.do_job_get(Simulation.findIntermodalRoute("gneE0", "gneE2", "", 0, 0,
64                         1.5, 1, 50, 50, 0, "", "", ""));
65             System.out.println("findIntermodalRoute result stages:");
66             for (SumoStage s2 : stages) {
67                 for (String s : s2.edges) {
68                     System.out.println("  " + s);
69                 }
70 
71             }
72 			for(int i=0; i<36; i++){
73 
74 				conn.do_timestep();
75 				conn.do_job_set(Vehicle.addFull("v"+i, "r1", "car", "now", "0", "0", "max", "current", "max", "current", "", "", "", 0, 0));
76                 double timeSeconds = (double)conn.do_job_get(Simulation.getTime());
77                 int tlsPhase = (int)conn.do_job_get(Trafficlight.getPhase("gneJ1"));
78                 String tlsPhaseName = (String)conn.do_job_get(Trafficlight.getPhaseName("gneJ1"));
79                 System.out.println(String.format("Step %s, tlsPhase %s (%s)", timeSeconds, tlsPhase, tlsPhaseName));
80 
81                 SumoVehicleData vehData = (SumoVehicleData)conn.do_job_get(Inductionloop.getVehicleData("loop1"));
82                 for (SumoVehicleData.VehicleData d : vehData.ll) {
83                     System.out.println(String.format("  veh=%s len=%s entry=%s leave=%s type=%s", d.vehID, d.length, d.entry_time, d.leave_time, d.typeID));
84                 }
85                 if (i == 10) {
86                     SumoStopFlags flags = new SumoStopFlags(false, false , false, false, false);
87                     conn.do_job_set(Vehicle.setStop("v0","gneE0", 200, (byte)0, 10, flags));
88                 }
89 			}
90             SumoStringList vehIDs = (SumoStringList)conn.do_job_get(Vehicle.getIDList());
91             String vehIDsStr = "";
92             for (String id : vehIDs) {
93                 vehIDsStr += (id + " ");
94             }
95             System.out.println("VehicleIDs: " + vehIDsStr);
96 
97             conn.do_job_set(Vehicle.setParameter("v0","vehParam", "vehValue"));
98             System.out.println("vehicle.getParameter: " + (String)conn.do_job_get(Vehicle.getParameter("v0", "vehParam")));
99 
100             conn.do_job_set(Vehicle.setAdaptedTraveltime("v0", 100, 200, "gneE0", 200));
101             System.out.println("Vehicletype.getAdaptedTraveltime: " + (double)conn.do_job_get(Vehicle.getAdaptedTraveltime("v0", 150, "gneE0")));
102 
103             conn.do_job_set(Vehicletype.setParameter("car","vehtypeParam", "vehtypeValue"));
104             System.out.println("Vehicletype.getParameter: " + (String)conn.do_job_get(Vehicletype.getParameter("car", "vehtypeParam")));
105 
106             conn.do_job_set(Edge.setParameter("gneE0","edgeParam", "edgeValue"));
107             System.out.println("Edge.getParameter: " + (String)conn.do_job_get(Edge.getParameter("gneE0", "edgeParam")));
108 
109             conn.do_job_set(Lane.setParameter("gneE0_1","laneParam", "laneValue"));
110             System.out.println("Lane.getParameter: " + (String)conn.do_job_get(Lane.getParameter("gneE0_1", "laneParam")));
111 
112             conn.do_job_set(Route.setParameter("r1","routeParam", "routeValue"));
113             System.out.println("Route.getParameter: " + (String)conn.do_job_get(Route.getParameter("r1", "routeParam")));
114 
115             conn.do_job_set(Poi.setParameter("t0","poiParam", "poiValue"));
116             System.out.println("Poi.getParameter: " + (String)conn.do_job_get(Poi.getParameter("t0", "poiParam")));
117 
118             conn.do_job_set(Trafficlight.setParameter("gneJ1","tlsParam", "tlsValue"));
119             System.out.println("Trafficlight.getParameter: " + (String)conn.do_job_get(Trafficlight.getParameter("gneJ1", "tlsParam")));
120 
121             conn.do_job_set(Trafficlight.setPhaseDuration("gneJ1", 15));
122 
123             SumoTLSController tlsc = (SumoTLSController)conn.do_job_get(Trafficlight.getCompleteRedYellowGreenDefinition("gneJ1"));
124             System.out.println("Trafficlight.getCompleteRedYellowGreenDefinition: " + tlsc.programs);
125 
126             SumoTLSProgram tlsp = (SumoTLSProgram)tlsc.programs.values().toArray()[0];
127             conn.do_job_set(Trafficlight.setCompleteRedYellowGreenDefinition("gneJ1", tlsp));
128 
129             System.out.println("Trafficlight.getPhaseDuration: " + (double)conn.do_job_get(Trafficlight.getPhaseDuration("gneJ1")));
130             System.out.println("Trafficlight.getNextSwitch: " + (double)conn.do_job_get(Trafficlight.getNextSwitch("gneJ1")));
131 
132 			conn.close();
133 
134 		}catch(Exception ex){ex.printStackTrace();}
135 
136 	}
137 
138 }
139