Skip to content

Commit f8222bc

Browse files
In TriggerMessage.req connector_id is optional
In TriggerMessage.req connector_id is optional and if connector_id is set by invalid value will send rejected.for meter value if the connectorId is relevant but absent, this should be interpreted as “for all allowed connectorId values”. I am not sure about send meter values for connector 0 (zero)
1 parent 8e59f34 commit f8222bc

File tree

2 files changed

+50
-22
lines changed

2 files changed

+50
-22
lines changed

src/chargepoint/metervalues/MeterValuesManager.cpp

Lines changed: 32 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -188,10 +188,23 @@ void MeterValuesManager::getTxStopMeterValues(unsigned int connector_id, std::ve
188188
bool MeterValuesManager::onTriggerMessage(ocpp::types::MessageTrigger message, const ocpp::types::Optional<unsigned int>& connector_id)
189189
{
190190
bool ret = false;
191-
if (connector_id.isSet() && (message == MessageTrigger::MeterValues))
191+
192+
if (message == MessageTrigger::MeterValues)
192193
{
193-
processTriggered(connector_id);
194-
ret = true;
194+
if (connector_id.isSet())
195+
{
196+
processTriggered(connector_id);
197+
ret = true;
198+
}
199+
else
200+
{
201+
for (const Connector* connector : m_connectors.getConnectors())
202+
{
203+
unsigned int id = connector->id;
204+
processTriggered(id);
205+
}
206+
ret = true;
207+
}
195208
}
196209
return ret;
197210
}
@@ -201,12 +214,25 @@ bool MeterValuesManager::onTriggerMessage(ocpp::types::MessageTriggerEnumType
201214
const ocpp::types::Optional<unsigned int>& connector_id)
202215
{
203216
bool ret = false;
204-
if (connector_id.isSet() && (message == MessageTriggerEnumType::MeterValues))
217+
if (message == MessageTriggerEnumType::MeterValues)
205218
{
206-
processTriggered(connector_id);
207-
ret = true;
219+
if (connector_id.isSet())
220+
{
221+
processTriggered(connector_id);
222+
ret = true;
223+
}
224+
else
225+
{
226+
for (const Connector* connector : m_connectors.getConnectors())
227+
{
228+
unsigned int id = connector->id;
229+
processTriggered(id);
230+
}
231+
ret = true;
232+
}
208233
}
209234
return ret;
235+
210236
}
211237

212238
/** @copydoc void IConfigChangedListener::configurationValueChanged(const std::string&) */

src/chargepoint/trigger/TriggerMessageManager.cpp

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -85,8 +85,14 @@ bool TriggerMessageManager::handleMessage(const ocpp::messages::TriggerMessageRe
8585
}
8686
else
8787
{
88-
// Check connector id
89-
if (!request.connectorId.isSet() || m_connectors.isValid(request.connectorId))
88+
// Check invalid connector id
89+
if (request.connectorId.isSet() && !m_connectors.isValid(request.connectorId))
90+
{
91+
error_code = ocpp::rpc::IRpc::RPC_ERROR_PROPERTY_CONSTRAINT_VIOLATION;
92+
error_message = "Invalid connector id";
93+
response.status = TriggerMessageStatus::Rejected;
94+
}
95+
else
9096
{
9197
// Call handler
9298
if (it->second->onTriggerMessage(request.requestedMessage, request.connectorId))
@@ -100,11 +106,6 @@ bool TriggerMessageManager::handleMessage(const ocpp::messages::TriggerMessageRe
100106
LOG_WARNING << "Trigger message rejected : " << trigger_message;
101107
}
102108
}
103-
else
104-
{
105-
error_code = ocpp::rpc::IRpc::RPC_ERROR_PROPERTY_CONSTRAINT_VIOLATION;
106-
error_message = "Invalid connector id";
107-
}
108109
}
109110

110111
return ret;
@@ -136,26 +137,27 @@ bool TriggerMessageManager::handleMessage(const ocpp::messages::ExtendedTriggerM
136137
}
137138
else
138139
{
139-
// Check connector id
140-
if (!request.connectorId.isSet() || m_connectors.isValid(request.connectorId))
140+
// Check invalid connector id
141+
if (request.connectorId.isSet() && !m_connectors.isValid(request.connectorId))
142+
{
143+
error_code = ocpp::rpc::IRpc::RPC_ERROR_PROPERTY_CONSTRAINT_VIOLATION;
144+
error_message = "Invalid connector id";
145+
response.status = TriggerMessageStatusEnumType::Rejected;
146+
}
147+
else
141148
{
142149
// Call handler
143150
if (it->second->onTriggerMessage(request.requestedMessage, request.connectorId))
144151
{
145152
response.status = TriggerMessageStatusEnumType::Accepted;
146-
LOG_INFO << "Extended trigger message accepted : " << trigger_message;
153+
LOG_INFO << "Trigger message accepted : " << trigger_message;
147154
}
148155
else
149156
{
150157
response.status = TriggerMessageStatusEnumType::Rejected;
151-
LOG_WARNING << "Extended trigger message rejected : " << trigger_message;
158+
LOG_WARNING << "Trigger message rejected : " << trigger_message;
152159
}
153160
}
154-
else
155-
{
156-
error_code = ocpp::rpc::IRpc::RPC_ERROR_PROPERTY_CONSTRAINT_VIOLATION;
157-
error_message = "Invalid connector id";
158-
}
159161
}
160162

161163
return ret;

0 commit comments

Comments
 (0)