Skip to content

Commit b603f48

Browse files
committed
fix FormatViolation message if no meter exists
1 parent d568cd2 commit b603f48

2 files changed

Lines changed: 13 additions & 5 deletions

File tree

src/ArduinoOcpp/MessagesV16/TriggerMessage.cpp

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,23 +36,31 @@ void TriggerMessage::processReq(JsonObject payload) {
3636
if (!formatError) {
3737
AO_DBG_INFO("Execute for message type %s, connectorId = %i", requestedMessage, connectorId);
3838
if (!strcmp(requestedMessage, "MeterValues")) {
39+
//special case MeterValues needs unique handling
3940
if (ocppModel && ocppModel->getMeteringService()) {
4041
triggeredOperation = ocppModel->getMeteringService()->retrieveMeterValues(connectorId);
41-
}
4242

43-
if (!triggeredOperation) {
44-
formatError = true;
43+
if (!triggeredOperation) {
44+
formatError = true;
45+
}
46+
} else {
47+
AO_DBG_WARN("MeteringService not initialized");
4548
}
4649
} else {
4750
triggeredOperation = makeOcppOperation(requestedMessage, connectorId);
51+
if (!triggeredOperation) {
52+
statusMessage = "NotImplemented";
53+
}
4854
}
4955
}
5056

5157
if (triggeredOperation) {
5258
statusMessage = "Accepted";
5359
} else {
5460
AO_DBG_WARN("Could not make OppOperation from TriggerMessage. Ignore request");
55-
statusMessage = "NotImplemented";
61+
if (!statusMessage) {
62+
statusMessage = "Rejected";
63+
}
5664
}
5765
}
5866

src/ArduinoOcpp/MessagesV16/TriggerMessage.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ namespace Ocpp16 {
1616
class TriggerMessage : public OcppMessage {
1717
private:
1818
std::unique_ptr<OcppOperation> triggeredOperation;
19-
const char *statusMessage;
19+
const char *statusMessage {nullptr};
2020

2121
bool formatError = false;
2222
public:

0 commit comments

Comments
 (0)