Eclipse SUMO - Simulation of Urban MObility
MSLCM_LC2013_CC.cpp
Go to the documentation of this file.
1 /****************************************************************************/
2 // Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo
3 // Copyright (C) 2001-2024 German Aerospace Center (DLR) and others.
4 // This program and the accompanying materials are made available under the
5 // terms of the Eclipse Public License 2.0 which is available at
6 // https://www.eclipse.org/legal/epl-2.0/
7 // This Source Code may also be made available under the following Secondary
8 // Licenses when the conditions for such availability set forth in the Eclipse
9 // Public License 2.0 are satisfied: GNU General Public License, version 2
10 // or later which is available at
11 // https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html
12 // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-or-later
13 /****************************************************************************/
18 // A lane change model developed modification for the CC carFollowModel
19 /****************************************************************************/
20 #include "MSLCM_LC2013_CC.h"
22 
23 // ===========================================================================
24 // member method definitions
25 // ===========================================================================
27 
29 
30 int MSLCM_LC2013_CC::checkChangeBeforeCommitting(const MSVehicle* veh, int state) const {
31 
32  if (state & LCA_WANTS_LANECHANGE) {
33  auto* cfm = dynamic_cast<const MSCFModel_CC*>(&veh->getCarFollowModel());
34 
35  if (cfm) {
36  bool left = (state & LCA_LEFT) != 0;
37  return cfm->commitToLaneChange(veh, left);
38  }
39  }
40  return 0;
41 }
42 
43 /****************************************************************************/
@ LCA_LEFT
Wants go to the left.
@ LCA_WANTS_LANECHANGE
lane can change
A set of automatic Cruise Controllers, including classic Cruise Control (CC), Adaptive Cruise Control...
Definition: MSCFModel_CC.h:57
int commitToLaneChange(const MSVehicle *veh, bool left) const
int checkChangeBeforeCommitting(const MSVehicle *veh, int state) const override
Informs the vehicle that it is about to be moved on an adjacent lane. The method can be used to re-ev...
MSLCM_LC2013_CC(MSVehicle &v)
virtual ~MSLCM_LC2013_CC()
A lane change model developed by D. Krajzewicz, J. Erdmann et al. between 2004 and 2013.
Definition: MSLCM_LC2013.h:45
Representation of a vehicle in the micro simulation.
Definition: MSVehicle.h:77
const MSCFModel & getCarFollowModel() const
Returns the vehicle's car following model definition.
Definition: MSVehicle.h:977