Skip to content

Commit 86895b5

Browse files
committed
[trigger] Pass connector id as optional value to let the handlers process this information + send status notification for all connectors when connector id is not present
1 parent 6c1e374 commit 86895b5

File tree

11 files changed

+92
-49
lines changed

11 files changed

+92
-49
lines changed

src/chargepoint/maintenance/MaintenanceManager.cpp

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -162,8 +162,8 @@ bool MaintenanceManager::notifySignedUpdateFirmwareStatus(ocpp::types::FirmwareS
162162
return ret;
163163
}
164164

165-
/** @copydoc bool ITriggerMessageHandler::onTriggerMessage(ocpp::types::MessageTrigger, unsigned int) */
166-
bool MaintenanceManager::onTriggerMessage(ocpp::types::MessageTrigger message, unsigned int connector_id)
165+
/** @copydoc bool ITriggerMessageHandler::onTriggerMessage(ocpp::types::MessageTrigger, const ocpp::types::Optional<unsigned int>&) */
166+
bool MaintenanceManager::onTriggerMessage(ocpp::types::MessageTrigger message, const ocpp::types::Optional<unsigned int>& connector_id)
167167
{
168168
bool ret = true;
169169
(void)connector_id;
@@ -203,8 +203,9 @@ bool MaintenanceManager::onTriggerMessage(ocpp::types::MessageTrigger message, u
203203
return ret;
204204
}
205205

206-
/** @copydoc bool ITriggerMessageHandler::onTriggerMessage(ocpp::types::MessageTriggerEnumType, unsigned int) */
207-
bool MaintenanceManager::onTriggerMessage(ocpp::types::MessageTriggerEnumType message, unsigned int connector_id)
206+
/** @copydoc bool ITriggerMessageHandler::onTriggerMessage(ocpp::types::MessageTriggerEnumType, const ocpp::types::Optional<unsigned int>&) */
207+
bool MaintenanceManager::onTriggerMessage(ocpp::types::MessageTriggerEnumType message,
208+
const ocpp::types::Optional<unsigned int>& connector_id)
208209
{
209210
bool ret = true;
210211
(void)connector_id;

src/chargepoint/maintenance/MaintenanceManager.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -107,11 +107,11 @@ class MaintenanceManager
107107

108108
// ITriggerMessageManager::ITriggerMessageHandler interface
109109

110-
/** @copydoc bool ITriggerMessageHandler::onTriggerMessage(ocpp::types::MessageTrigger, unsigned int) */
111-
bool onTriggerMessage(ocpp::types::MessageTrigger message, unsigned int connector_id) override;
110+
/** @copydoc bool ITriggerMessageHandler::onTriggerMessage(ocpp::types::MessageTrigger, const ocpp::types::Optional<unsigned int>&) */
111+
bool onTriggerMessage(ocpp::types::MessageTrigger message, const ocpp::types::Optional<unsigned int>& connector_id) override;
112112

113-
/** @copydoc bool ITriggerMessageHandler::onTriggerMessage(ocpp::types::MessageTriggerEnumType, unsigned int) */
114-
bool onTriggerMessage(ocpp::types::MessageTriggerEnumType message, unsigned int connector_id) override;
113+
/** @copydoc bool ITriggerMessageHandler::onTriggerMessage(ocpp::types::MessageTriggerEnumType, const ocpp::types::Optional<unsigned int>&) */
114+
bool onTriggerMessage(ocpp::types::MessageTriggerEnumType message, const ocpp::types::Optional<unsigned int>& connector_id) override;
115115

116116
// GenericMessageHandler interface
117117

src/chargepoint/metervalues/MeterValuesManager.cpp

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -184,23 +184,24 @@ void MeterValuesManager::getTxStopMeterValues(unsigned int connector_id, std::ve
184184
}
185185
}
186186

187-
/** @copydoc bool ITriggerMessageManager::ITriggerMessageHandler::onTriggerMessage(ocpp::types::MessageTrigger message, unsigned int) */
188-
bool MeterValuesManager::onTriggerMessage(ocpp::types::MessageTrigger message, unsigned int connector_id)
187+
/** @copydoc bool ITriggerMessageManager::ITriggerMessageHandler::onTriggerMessage(ocpp::types::MessageTrigger message, const ocpp::types::Optional<unsigned int>&) */
188+
bool MeterValuesManager::onTriggerMessage(ocpp::types::MessageTrigger message, const ocpp::types::Optional<unsigned int>& connector_id)
189189
{
190190
bool ret = false;
191-
if (message == MessageTrigger::MeterValues)
191+
if (connector_id.isSet() && (message == MessageTrigger::MeterValues))
192192
{
193193
processTriggered(connector_id);
194194
ret = true;
195195
}
196196
return ret;
197197
}
198198

199-
/** @copydoc bool ITriggerMessageManager::ITriggerMessageHandler::onTriggerMessage(ocpp::types::MessageTriggerEnumType message, unsigned int) */
200-
bool MeterValuesManager::onTriggerMessage(ocpp::types::MessageTriggerEnumType message, unsigned int connector_id)
199+
/** @copydoc bool ITriggerMessageManager::ITriggerMessageHandler::onTriggerMessage(ocpp::types::MessageTriggerEnumType message, const ocpp::types::Optional<unsigned int>&) */
200+
bool MeterValuesManager::onTriggerMessage(ocpp::types::MessageTriggerEnumType message,
201+
const ocpp::types::Optional<unsigned int>& connector_id)
201202
{
202203
bool ret = false;
203-
if (message == MessageTriggerEnumType::MeterValues)
204+
if (connector_id.isSet() && (message == MessageTriggerEnumType::MeterValues))
204205
{
205206
processTriggered(connector_id);
206207
ret = true;

src/chargepoint/metervalues/MeterValuesManager.h

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -90,11 +90,13 @@ class MeterValuesManager : public IMeterValuesManager,
9090

9191
// ITriggerMessageManager::ITriggerMessageHandler interface
9292

93-
/** @copydoc bool ITriggerMessageManager::ITriggerMessageHandler::onTriggerMessage(ocpp::types::MessageTrigger message, unsigned int) */
94-
bool onTriggerMessage(ocpp::types::MessageTrigger message, unsigned int connector_id) override;
93+
/** @copydoc bool ITriggerMessageManager::ITriggerMessageHandler::onTriggerMessage(ocpp::types::MessageTrigger message,
94+
* const ocpp::types::Optional<unsigned int>&) */
95+
bool onTriggerMessage(ocpp::types::MessageTrigger message, const ocpp::types::Optional<unsigned int>& connector_id) override;
9596

96-
/** @copydoc bool ITriggerMessageManager::ITriggerMessageHandler::onTriggerMessage(ocpp::types::MessageTriggerEnumType message, unsigned int) */
97-
bool onTriggerMessage(ocpp::types::MessageTriggerEnumType message, unsigned int connector_id) override;
97+
/** @copydoc bool ITriggerMessageManager::ITriggerMessageHandler::onTriggerMessage(ocpp::types::MessageTriggerEnumType message,
98+
* const ocpp::types::Optional<unsigned int>&) */
99+
bool onTriggerMessage(ocpp::types::MessageTriggerEnumType message, const ocpp::types::Optional<unsigned int>& connector_id) override;
98100

99101
// IConfigChangedListener interface
100102

src/chargepoint/security/SecurityManager.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -368,8 +368,8 @@ std::string SecurityManager::getCaCertificates(ocpp::types::CertificateUseEnumTy
368368

369369
// ITriggerMessageManager::ITriggerMessageHandler interface
370370

371-
/** @copydoc bool ITriggerMessageHandler::onTriggerMessage(ocpp::types::MessageTriggerEnumType, unsigned int) */
372-
bool SecurityManager::onTriggerMessage(ocpp::types::MessageTriggerEnumType message, unsigned int connector_id)
371+
/** @copydoc bool ITriggerMessageHandler::onTriggerMessage(ocpp::types::MessageTriggerEnumType, const ocpp::types::Optional<unsigned int>&) */
372+
bool SecurityManager::onTriggerMessage(ocpp::types::MessageTriggerEnumType message, const ocpp::types::Optional<unsigned int>& connector_id)
373373
{
374374
bool ret = false;
375375
(void)connector_id;

src/chargepoint/security/SecurityManager.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -133,8 +133,8 @@ class SecurityManager
133133

134134
// ITriggerMessageManager::ITriggerMessageHandler interface
135135

136-
/** @copydoc bool ITriggerMessageHandler::onTriggerMessage(ocpp::types::MessageTriggerEnumType, unsigned int) */
137-
bool onTriggerMessage(ocpp::types::MessageTriggerEnumType message, unsigned int connector_id) override;
136+
/** @copydoc bool ITriggerMessageHandler::onTriggerMessage(ocpp::types::MessageTriggerEnumType, const ocpp::types::Optional<unsigned int>&) */
137+
bool onTriggerMessage(ocpp::types::MessageTriggerEnumType message, const ocpp::types::Optional<unsigned int>& connector_id) override;
138138

139139
// GenericMessageHandler interface
140140

src/chargepoint/status/StatusManager.cpp

Lines changed: 52 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -201,8 +201,8 @@ void StatusManager::resetHeartBeatTimer()
201201

202202
// ITriggerMessageHandler interfaces
203203

204-
/** @copydoc bool ITriggerMessageHandler::onTriggerMessage(ocpp::types::MessageTrigger, unsigned int) */
205-
bool StatusManager::onTriggerMessage(ocpp::types::MessageTrigger message, unsigned int connector_id)
204+
/** @copydoc bool ITriggerMessageHandler::onTriggerMessage(ocpp::types::MessageTrigger, const ocpp::types::Optional<unsigned int>&) */
205+
bool StatusManager::onTriggerMessage(ocpp::types::MessageTrigger message, const ocpp::types::Optional<unsigned int>& connector_id)
206206
{
207207
bool ret = true;
208208
switch (message)
@@ -233,13 +233,31 @@ bool StatusManager::onTriggerMessage(ocpp::types::MessageTrigger message, unsign
233233

234234
case MessageTrigger::StatusNotification:
235235
{
236-
m_worker_pool.run<void>(
237-
[this, connector_id]
236+
if (connector_id.isSet())
237+
{
238+
unsigned int id = connector_id;
239+
m_worker_pool.run<void>(
240+
[this, id]
241+
{
242+
// To let some time for the trigger message reply
243+
std::this_thread::sleep_for(std::chrono::milliseconds(250u));
244+
statusNotificationProcess(id);
245+
});
246+
}
247+
else
248+
{
249+
for (const Connector* connector : m_connectors.getConnectors())
238250
{
239-
// To let some time for the trigger message reply
240-
std::this_thread::sleep_for(std::chrono::milliseconds(250u));
241-
statusNotificationProcess(connector_id);
242-
});
251+
unsigned int id = connector->id;
252+
m_worker_pool.run<void>(
253+
[this, id]
254+
{
255+
// To let some time for the trigger message reply
256+
std::this_thread::sleep_for(std::chrono::milliseconds(250u));
257+
statusNotificationProcess(id);
258+
});
259+
}
260+
}
243261
break;
244262
}
245263

@@ -253,8 +271,8 @@ bool StatusManager::onTriggerMessage(ocpp::types::MessageTrigger message, unsign
253271
return ret;
254272
}
255273

256-
/** @copydoc bool ITriggerMessageHandler::onTriggerMessage(ocpp::types::MessageTriggerEnumType, unsigned int) */
257-
bool StatusManager::onTriggerMessage(ocpp::types::MessageTriggerEnumType message, unsigned int connector_id)
274+
/** @copydoc bool ITriggerMessageHandler::onTriggerMessage(ocpp::types::MessageTriggerEnumType, const ocpp::types::Optional<unsigned int>&) */
275+
bool StatusManager::onTriggerMessage(ocpp::types::MessageTriggerEnumType message, const ocpp::types::Optional<unsigned int>& connector_id)
258276
{
259277
bool ret = true;
260278
switch (message)
@@ -285,13 +303,31 @@ bool StatusManager::onTriggerMessage(ocpp::types::MessageTriggerEnumType message
285303

286304
case MessageTriggerEnumType::StatusNotification:
287305
{
288-
m_worker_pool.run<void>(
289-
[this, connector_id]
306+
if (connector_id.isSet())
307+
{
308+
unsigned int id = connector_id;
309+
m_worker_pool.run<void>(
310+
[this, id]
311+
{
312+
// To let some time for the trigger message reply
313+
std::this_thread::sleep_for(std::chrono::milliseconds(250u));
314+
statusNotificationProcess(id);
315+
});
316+
}
317+
else
318+
{
319+
for (const Connector* connector : m_connectors.getConnectors())
290320
{
291-
// To let some time for the trigger message reply
292-
std::this_thread::sleep_for(std::chrono::milliseconds(250u));
293-
statusNotificationProcess(connector_id);
294-
});
321+
unsigned int id = connector->id;
322+
m_worker_pool.run<void>(
323+
[this, id]
324+
{
325+
// To let some time for the trigger message reply
326+
std::this_thread::sleep_for(std::chrono::milliseconds(250u));
327+
statusNotificationProcess(id);
328+
});
329+
}
330+
}
295331
break;
296332
}
297333

src/chargepoint/status/StatusManager.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -104,11 +104,11 @@ class StatusManager
104104

105105
// ITriggerMessageHandler interfaces
106106

107-
/** @copydoc bool ITriggerMessageHandler::onTriggerMessage(ocpp::types::MessageTrigger, unsigned int) */
108-
bool onTriggerMessage(ocpp::types::MessageTrigger message, unsigned int connector_id) override;
107+
/** @copydoc bool ITriggerMessageHandler::onTriggerMessage(ocpp::types::MessageTrigger, const ocpp::types::Optional<unsigned int>&) */
108+
bool onTriggerMessage(ocpp::types::MessageTrigger message, const ocpp::types::Optional<unsigned int>& connector_id) override;
109109

110-
/** @copydoc bool ITriggerMessageHandler::onTriggerMessage(ocpp::types::MessageTriggerEnumType, unsigned int) */
111-
bool onTriggerMessage(ocpp::types::MessageTriggerEnumType message, unsigned int connector_id) override;
110+
/** @copydoc bool ITriggerMessageHandler::onTriggerMessage(ocpp::types::MessageTriggerEnumType, const ocpp::types::Optional<unsigned int>&) */
111+
bool onTriggerMessage(ocpp::types::MessageTriggerEnumType message, const ocpp::types::Optional<unsigned int>& connector_id) override;
112112

113113
// GenericMessageHandler interface
114114

src/chargepoint/trigger/ITriggerMessageManager.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ along with OpenOCPP. If not, see <http://www.gnu.org/licenses/>.
2020
#define ITRIGGERMESSAGEMANAGER_H
2121

2222
#include "Enums.h"
23+
#include "Optional.h"
2324

2425
namespace ocpp
2526
{
@@ -64,7 +65,7 @@ class ITriggerMessageManager
6465
* @param connector_id Id of the connector concerned by the request
6566
* @return true if the requested message can be sent, false otherwise
6667
*/
67-
virtual bool onTriggerMessage(ocpp::types::MessageTrigger message, unsigned int connector_id) = 0;
68+
virtual bool onTriggerMessage(ocpp::types::MessageTrigger message, const ocpp::types::Optional<unsigned int>& connector_id) = 0;
6869
};
6970

7071
/** @brief Interface for extended trigger message handlers implementations */
@@ -80,7 +81,8 @@ class ITriggerMessageManager
8081
* @param connector_id Id of the connector concerned by the request
8182
* @return true if the requested message can be sent, false otherwise
8283
*/
83-
virtual bool onTriggerMessage(ocpp::types::MessageTriggerEnumType message, unsigned int connector_id) = 0;
84+
virtual bool onTriggerMessage(ocpp::types::MessageTriggerEnumType message,
85+
const ocpp::types::Optional<unsigned int>& connector_id) = 0;
8486
};
8587
};
8688

src/chargepoint/trigger/TriggerMessageManager.cpp

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,8 @@ bool TriggerMessageManager::handleMessage(const ocpp::messages::TriggerMessageRe
7272
bool ret = true;
7373

7474
std::string trigger_message = MessageTriggerHelper.toString(request.requestedMessage);
75-
LOG_INFO << "Trigger message requested : " << trigger_message;
75+
LOG_INFO << "Trigger message requested : " << trigger_message
76+
<< " - connectorId = " << (request.connectorId.isSet() ? std::to_string(request.connectorId) : "not set");
7677

7778
// Look for the corresponding handler
7879
auto it = m_standard_handlers.find(request.requestedMessage);
@@ -85,7 +86,7 @@ bool TriggerMessageManager::handleMessage(const ocpp::messages::TriggerMessageRe
8586
else
8687
{
8788
// Check connector id
88-
if (m_connectors.isValid(request.connectorId))
89+
if (!request.connectorId.isSet() || m_connectors.isValid(request.connectorId))
8990
{
9091
// Call handler
9192
if (it->second->onTriggerMessage(request.requestedMessage, request.connectorId))
@@ -122,7 +123,8 @@ bool TriggerMessageManager::handleMessage(const ocpp::messages::ExtendedTriggerM
122123
bool ret = true;
123124

124125
std::string trigger_message = MessageTriggerEnumTypeHelper.toString(request.requestedMessage);
125-
LOG_INFO << "Extended trigger message requested : " << trigger_message;
126+
LOG_INFO << "Extended trigger message requested : " << trigger_message
127+
<< " - connectorId = " << (request.connectorId.isSet() ? std::to_string(request.connectorId) : "not set");
126128

127129
// Look for the corresponding handler
128130
auto it = m_extended_handlers.find(request.requestedMessage);
@@ -135,7 +137,7 @@ bool TriggerMessageManager::handleMessage(const ocpp::messages::ExtendedTriggerM
135137
else
136138
{
137139
// Check connector id
138-
if (m_connectors.isValid(request.connectorId))
140+
if (!request.connectorId.isSet() || m_connectors.isValid(request.connectorId))
139141
{
140142
// Call handler
141143
if (it->second->onTriggerMessage(request.requestedMessage, request.connectorId))

0 commit comments

Comments
 (0)