View Javadoc
1   package org.opentrafficsim.road.gtu.lane.tactical;
2   
3   /**
4    * Interface for tactical planners that can return synchronization information for visualization.
5    * <p>
6    * Copyright (c) 2013-2024 Delft University of Technology, PO Box 5, 2600 AA, Delft, the Netherlands. All rights reserved. <br>
7    * BSD-style license. See <a href="https://opentrafficsim.org/docs/license.html">OpenTrafficSim License</a>.
8    * </p>
9    * @author <a href="https://github.com/averbraeck">Alexander Verbraeck</a>
10   * @author <a href="https://tudelft.nl/staff/p.knoppers-1">Peter Knoppers</a>
11   * @author <a href="https://github.com/wjschakel">Wouter Schakel</a>
12   */
13  public interface Synchronizable
14  {
15  
16      /**
17       * Returns the synchronization state.
18       * @return State; synchronization state
19       */
20      State getSynchronizationState();
21  
22      /**
23       * State of synchronization.
24       * <p>
25       * Copyright (c) 2013-2024 Delft University of Technology, PO Box 5, 2600 AA, Delft, the Netherlands. All rights reserved.
26       * <br>
27       * BSD-style license. See <a href="https://opentrafficsim.org/docs/license.html">OpenTrafficSim License</a>.
28       * </p>
29       * @author <a href="https://github.com/averbraeck">Alexander Verbraeck</a>
30       * @author <a href="https://tudelft.nl/staff/p.knoppers-1">Peter Knoppers</a>
31       * @author <a href="https://github.com/wjschakel">Wouter Schakel</a>
32       */
33      enum State
34      {
35          /** No synchronization. */
36          NONE,
37  
38          /** Subject vehicle is adjusting speed. */
39          SYNCHRONIZING,
40  
41          /** Subject vehicle is adjusting speed and indicating desired lane change. */
42          INDICATING,
43  
44          /** Subject vehicle is cooperating for a lane change of another GTU. */
45          COOPERATING;
46  
47          /**
48           * Returns whether this is NONE.
49           * @return boolean; whether this is NONE
50           */
51          public boolean isNone()
52          {
53              return this == NONE;
54          }
55  
56          /**
57           * Returns whether this is SYNCHRONIZING.
58           * @return boolean; whether this is SYNCHRONIZING
59           */
60          public boolean isSycnhronizing()
61          {
62              return this == SYNCHRONIZING;
63          }
64  
65          /**
66           * Returns whether this is INDICATING.
67           * @return boolean; whether this is INDICATING
68           */
69          public boolean isIndicating()
70          {
71              return this == INDICATING;
72          }
73  
74          /**
75           * Returns whether this is COOPERATING.
76           * @return boolean; whether this is COOPERATING
77           */
78          public boolean isCooperating()
79          {
80              return this == COOPERATING;
81          }
82      }
83  
84  }