SUMO - Simulation of Urban MObility
Main Page
Related Pages
Modules
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
TraCIServerAPI_MeMeDetector.cpp
Go to the documentation of this file.
1
/****************************************************************************/
8
// APIs for getting/setting multi-entry/multi-exit detector values via TraCI
9
/****************************************************************************/
10
// SUMO, Simulation of Urban MObility; see http://sumo.sourceforge.net/
11
// Copyright (C) 2001-2012 DLR (http://www.dlr.de/) and contributors
12
/****************************************************************************/
13
//
14
// This file is part of SUMO.
15
// SUMO is free software: you can redistribute it and/or modify
16
// it under the terms of the GNU General Public License as published by
17
// the Free Software Foundation, either version 3 of the License, or
18
// (at your option) any later version.
19
//
20
/****************************************************************************/
21
22
23
// ===========================================================================
24
// included modules
25
// ===========================================================================
26
#ifdef _MSC_VER
27
#include <
windows_config.h
>
28
#else
29
#include <
config.h
>
30
#endif
31
32
#ifndef NO_TRACI
33
34
#include "
TraCIConstants.h
"
35
#include <
microsim/output/MSDetectorControl.h
>
36
#include <
microsim/output/MSE3Collector.h
>
37
#include "
TraCIServerAPI_MeMeDetector.h
"
38
39
#ifdef CHECK_MEMORY_LEAKS
40
#include <
foreign/nvwa/debug_new.h
>
41
#endif // CHECK_MEMORY_LEAKS
42
43
44
// ===========================================================================
45
// used namespaces
46
// ===========================================================================
47
using namespace
traci;
48
49
50
// ===========================================================================
51
// method definitions
52
// ===========================================================================
53
bool
54
TraCIServerAPI_MeMeDetector::processGet
(
TraCIServer
& server,
tcpip::Storage
& inputStorage,
55
tcpip::Storage
& outputStorage) {
56
std::string warning =
""
;
// additional description for response
57
// variable & id
58
int
variable = inputStorage.
readUnsignedByte
();
59
std::string
id
= inputStorage.
readString
();
60
// check variable
61
if
(variable !=
ID_LIST
&& variable !=
LAST_STEP_VEHICLE_NUMBER
&& variable !=
LAST_STEP_MEAN_SPEED
62
&& variable !=
LAST_STEP_VEHICLE_ID_LIST
&& variable !=
LAST_STEP_VEHICLE_HALTING_NUMBER
63
&& variable !=
ID_COUNT
) {
64
server.
writeStatusCmd
(
CMD_GET_MULTI_ENTRY_EXIT_DETECTOR_VARIABLE
,
RTYPE_ERR
,
"Get MeMeDetector Variable: unsupported variable specified"
, outputStorage);
65
return
false
;
66
}
67
// begin response building
68
tcpip::Storage
tempMsg;
69
// response-code, variableID, objectID
70
tempMsg.
writeUnsignedByte
(
RESPONSE_GET_MULTI_ENTRY_EXIT_DETECTOR_VARIABLE
);
71
tempMsg.
writeUnsignedByte
(variable);
72
tempMsg.
writeString
(
id
);
73
if
(variable ==
ID_LIST
) {
74
std::vector<std::string> ids;
75
MSNet::getInstance
()->
getDetectorControl
().
getTypedDetectors
(
SUMO_TAG_ENTRY_EXIT_DETECTOR
).
insertIDs
(ids);
76
tempMsg.
writeUnsignedByte
(
TYPE_STRINGLIST
);
77
tempMsg.
writeStringList
(ids);
78
}
else
if
(variable ==
ID_COUNT
) {
79
std::vector<std::string> ids;
80
MSNet::getInstance
()->
getDetectorControl
().
getTypedDetectors
(
SUMO_TAG_ENTRY_EXIT_DETECTOR
).
insertIDs
(ids);
81
tempMsg.
writeUnsignedByte
(
TYPE_INTEGER
);
82
tempMsg.
writeInt
((
int
) ids.size());
83
}
else
{
84
MSE3Collector
* e3 =
static_cast<
MSE3Collector
*
>
(
MSNet::getInstance
()->
getDetectorControl
().
getTypedDetectors
(
SUMO_TAG_ENTRY_EXIT_DETECTOR
).
get
(
id
));
85
if
(e3 == 0) {
86
server.
writeStatusCmd
(
CMD_GET_MULTI_ENTRY_EXIT_DETECTOR_VARIABLE
,
RTYPE_ERR
,
"Areal detector '"
+
id
+
"' is not known"
, outputStorage);
87
return
false
;
88
}
89
switch
(variable) {
90
case
ID_LIST
:
91
break
;
92
case
LAST_STEP_VEHICLE_NUMBER
:
93
tempMsg.
writeUnsignedByte
(
TYPE_INTEGER
);
94
tempMsg.
writeInt
((
int
) e3->
getVehiclesWithin
());
95
break
;
96
case
LAST_STEP_MEAN_SPEED
:
97
tempMsg.
writeUnsignedByte
(
TYPE_DOUBLE
);
98
tempMsg.
writeDouble
(e3->
getCurrentMeanSpeed
());
99
break
;
100
case
LAST_STEP_VEHICLE_ID_LIST
: {
101
tempMsg.
writeUnsignedByte
(
TYPE_STRINGLIST
);
102
std::vector<std::string> ids = e3->
getCurrentVehicleIDs
();
103
tempMsg.
writeStringList
(ids);
104
}
105
break
;
106
case
LAST_STEP_VEHICLE_HALTING_NUMBER
:
107
tempMsg.
writeUnsignedByte
(
TYPE_INTEGER
);
108
tempMsg.
writeInt
((
int
) e3->
getCurrentHaltingNumber
());
109
break
;
110
default
:
111
break
;
112
}
113
}
114
server.
writeStatusCmd
(
CMD_GET_MULTI_ENTRY_EXIT_DETECTOR_VARIABLE
,
RTYPE_OK
, warning, outputStorage);
115
server.
writeResponseWithLength
(outputStorage, tempMsg);
116
return
true
;
117
}
118
119
#endif
120
121
122
/****************************************************************************/
123
build
buildd
sumo-0.15.0~dfsg
src
traci-server
TraCIServerAPI_MeMeDetector.cpp
Generated on Wed Jul 18 2012 22:58:36 for SUMO - Simulation of Urban MObility by
1.8.1.1