Path: blob/main/src/traci-server/TraCIServerAPI_ChargingStation.cpp
193677 views
/****************************************************************************/1// Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo2// Copyright (C) 2001-2026 German Aerospace Center (DLR) and others.3// This program and the accompanying materials are made available under the4// terms of the Eclipse Public License 2.0 which is available at5// https://www.eclipse.org/legal/epl-2.0/6// This Source Code may also be made available under the following Secondary7// Licenses when the conditions for such availability set forth in the Eclipse8// Public License 2.0 are satisfied: GNU General Public License, version 29// or later which is available at10// https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html11// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-or-later12/****************************************************************************/13/// @file TraCIServerAPI_ChargingStation.cpp14/// @author Jakob Erdmann15/// @date 16.03.202016///17// APIs for getting/setting charging station values via TraCI18/****************************************************************************/19#include <config.h>2021#include <microsim/MSNet.h>22#include <microsim/MSEdge.h>23#include <microsim/MSStoppingPlace.h>24#include <libsumo/ChargingStation.h>25#include <libsumo/TraCIConstants.h>26#include <libsumo/StorageHelper.h>27#include "TraCIServerAPI_ChargingStation.h"282930// ===========================================================================31// method definitions32// ===========================================================================33bool34TraCIServerAPI_ChargingStation::processSet(TraCIServer& server, tcpip::Storage& inputStorage,35tcpip::Storage& outputStorage) {36std::string warning = ""; // additional description for response37// variable38int variable = inputStorage.readUnsignedByte();39if (variable != libsumo::VAR_PARAMETER &&40variable != libsumo::VAR_CS_POWER &&41variable != libsumo::VAR_CS_EFFICIENCY &&42variable != libsumo::VAR_CS_CHARGE_DELAY &&43variable != libsumo::VAR_CS_CHARGE_IN_TRANSIT) {44return server.writeErrorStatusCmd(libsumo::CMD_SET_CHARGINGSTATION_VARIABLE, "Change ChargingStation State: unsupported variable " + toHex(variable, 2) + " specified", outputStorage);45}46// id47std::string id = inputStorage.readString();4849try {50// process51switch (variable) {52case libsumo::VAR_PARAMETER: {53StoHelp::readCompound(inputStorage, 2, "A compound object of size 2 is needed for setting a parameter.");54const std::string name = StoHelp::readTypedString(inputStorage, "The name of the parameter must be given as a string.");55const std::string value = StoHelp::readTypedString(inputStorage, "The value of the parameter must be given as a string.");56libsumo::ChargingStation::setParameter(id, name, value);57}58break;59case libsumo::VAR_CS_POWER: {60libsumo::ChargingStation::setChargingPower(id, StoHelp::readTypedDouble(inputStorage, "Setting chargingPower requires a double."));61}62break;63case libsumo::VAR_CS_EFFICIENCY: {64libsumo::ChargingStation::setEfficiency(id, StoHelp::readTypedDouble(inputStorage, "Setting efficiency requires a double."));65}66break;67case libsumo::VAR_CS_CHARGE_DELAY: {68libsumo::ChargingStation::setChargeDelay(id, StoHelp::readTypedDouble(inputStorage, "Setting charge delay requires a double."));69}70break;71case libsumo::VAR_CS_CHARGE_IN_TRANSIT: {72libsumo::ChargingStation::setChargeInTransit(id, StoHelp::readTypedInt(inputStorage, "Setting charge in transit requires an integer.") != 0);73}74break;75default:76break;77}78} catch (libsumo::TraCIException& e) {79return server.writeErrorStatusCmd(libsumo::CMD_SET_CHARGINGSTATION_VARIABLE, e.what(), outputStorage);80}81server.writeStatusCmd(libsumo::CMD_SET_CHARGINGSTATION_VARIABLE, libsumo::RTYPE_OK, warning, outputStorage);82return true;83}848586/****************************************************************************/878889