Skip to content

Commit 5761e0f

Browse files
authored
Minor OCPP 1.6 fixes (#388)
* change misleading Reset failure debug msg * reject negative ints in ChangeConfig
1 parent 2d5dee9 commit 5761e0f

File tree

8 files changed

+27
-13
lines changed

8 files changed

+27
-13
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
### Fixed
1010

1111
- Timing issues for OCTT test cases ([#383](https://github.com/matth-x/MicroOcpp/pull/383))
12+
- Misleading Reset failure dbg msg ([#388](https://github.com/matth-x/MicroOcpp/pull/388))
13+
- Reject negative ints in ChangeConfig ([#388](https://github.com/matth-x/MicroOcpp/pull/388))
1214

1315
## [1.2.0] - 2024-11-03
1416

src/MicroOcpp/Core/Configuration.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -246,4 +246,13 @@ bool configuration_clean_unused() {
246246
return configuration_save();
247247
}
248248

249+
bool VALIDATE_UNSIGNED_INT(const char *value) {
250+
for(size_t i = 0; value[i] != '\0'; i++) {
251+
if (value[i] < '0' || value[i] > '9') {
252+
return false;
253+
}
254+
}
255+
return true;
256+
}
257+
249258
} //end namespace MicroOcpp

src/MicroOcpp/Core/Configuration.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,5 +38,8 @@ bool configuration_save();
3838

3939
bool configuration_clean_unused(); //remove configs which haven't been accessed
4040

41+
//default implementation for common validator
42+
bool VALIDATE_UNSIGNED_INT(const char*);
43+
4144
} //end namespace MicroOcpp
4245
#endif

src/MicroOcpp/Model/ConnectorBase/Connector.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,9 @@ Connector::Connector(Context& context, std::shared_ptr<FilesystemAdapter> filesy
4949
#endif //MO_ENABLE_CONNECTOR_LOCK
5050

5151
connectionTimeOutInt = declareConfiguration<int>("ConnectionTimeOut", 30);
52+
registerConfigurationValidator("ConnectionTimeOut", VALIDATE_UNSIGNED_INT);
5253
minimumStatusDurationInt = declareConfiguration<int>("MinimumStatusDuration", 0);
54+
registerConfigurationValidator("MinimumStatusDuration", VALIDATE_UNSIGNED_INT);
5355
stopTransactionOnInvalidIdBool = declareConfiguration<bool>("StopTransactionOnInvalidId", true);
5456
stopTransactionOnEVSideDisconnectBool = declareConfiguration<bool>("StopTransactionOnEVSideDisconnect", true);
5557
localPreAuthorizeBool = declareConfiguration<bool>("LocalPreAuthorize", false);
@@ -61,6 +63,7 @@ Connector::Connector(Context& context, std::shared_ptr<FilesystemAdapter> filesy
6163

6264
//how long the EVSE tries the Authorize request before it enters offline mode
6365
authorizationTimeoutInt = MicroOcpp::declareConfiguration<int>(MO_CONFIG_EXT_PREFIX "AuthorizationTimeout", 20);
66+
registerConfigurationValidator(MO_CONFIG_EXT_PREFIX "AuthorizationTimeout", VALIDATE_UNSIGNED_INT);
6467

6568
//FreeVend mode
6669
freeVendActiveBool = declareConfiguration<bool>(MO_CONFIG_EXT_PREFIX "FreeVendActive", false);
@@ -69,7 +72,9 @@ Connector::Connector(Context& context, std::shared_ptr<FilesystemAdapter> filesy
6972
txStartOnPowerPathClosedBool = declareConfiguration<bool>(MO_CONFIG_EXT_PREFIX "TxStartOnPowerPathClosed", false);
7073

7174
transactionMessageAttemptsInt = declareConfiguration<int>("TransactionMessageAttempts", 3);
75+
registerConfigurationValidator("TransactionMessageAttempts", VALIDATE_UNSIGNED_INT);
7276
transactionMessageRetryIntervalInt = declareConfiguration<int>("TransactionMessageRetryInterval", 60);
77+
registerConfigurationValidator("TransactionMessageRetryInterval", VALIDATE_UNSIGNED_INT);
7378

7479
if (!availabilityBool) {
7580
MO_DBG_ERR("Cannot declare availabilityBool");

src/MicroOcpp/Model/Heartbeat/HeartbeatService.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ using namespace MicroOcpp;
1313

1414
HeartbeatService::HeartbeatService(Context& context) : MemoryManaged("v16.Heartbeat.HeartbeatService"), context(context) {
1515
heartbeatIntervalInt = declareConfiguration<int>("HeartbeatInterval", 86400);
16+
registerConfigurationValidator("HeartbeatInterval", VALIDATE_UNSIGNED_INT);
1617
lastHeartbeat = mocpp_tick_ms();
1718

1819
//Register message handler for TriggerMessage operation

src/MicroOcpp/Model/Metering/MeteringConnector.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,15 @@ MeteringConnector::MeteringConnector(Context& context, int connectorId, MeterSto
2828
auto meterValuesSampledDataString = declareConfiguration<const char*>("MeterValuesSampledData", "");
2929
declareConfiguration<int>("MeterValuesSampledDataMaxLength", 8, CONFIGURATION_VOLATILE, true);
3030
meterValueSampleIntervalInt = declareConfiguration<int>("MeterValueSampleInterval", 60);
31+
registerConfigurationValidator("MeterValueSampleInterval", VALIDATE_UNSIGNED_INT);
3132

3233
auto stopTxnSampledDataString = declareConfiguration<const char*>("StopTxnSampledData", "");
3334
declareConfiguration<int>("StopTxnSampledDataMaxLength", 8, CONFIGURATION_VOLATILE, true);
3435

3536
auto meterValuesAlignedDataString = declareConfiguration<const char*>("MeterValuesAlignedData", "");
3637
declareConfiguration<int>("MeterValuesAlignedDataMaxLength", 8, CONFIGURATION_VOLATILE, true);
3738
clockAlignedDataIntervalInt = declareConfiguration<int>("ClockAlignedDataInterval", 0);
39+
registerConfigurationValidator("ClockAlignedDataInterval", VALIDATE_UNSIGNED_INT);
3840

3941
auto stopTxnAlignedDataString = declareConfiguration<const char*>("StopTxnAlignedData", "");
4042

src/MicroOcpp/Model/Metering/MeteringService.cpp

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -57,22 +57,12 @@ MeteringService::MeteringService(Context& context, int numConn, std::shared_ptr<
5757
return isValid;
5858
};
5959

60-
std::function<bool(const char*)> validateUnsignedIntString = [] (const char *value) {
61-
for(size_t i = 0; value[i] != '\0'; i++)
62-
{
63-
if (value[i] < '0' || value[i] > '9') {
64-
return false;
65-
}
66-
}
67-
return true;
68-
};
69-
7060
registerConfigurationValidator("MeterValuesSampledData", validateSelectString);
7161
registerConfigurationValidator("StopTxnSampledData", validateSelectString);
7262
registerConfigurationValidator("MeterValuesAlignedData", validateSelectString);
7363
registerConfigurationValidator("StopTxnAlignedData", validateSelectString);
74-
registerConfigurationValidator("MeterValueSampleInterval", validateUnsignedIntString);
75-
registerConfigurationValidator("ClockAlignedDataInterval", validateUnsignedIntString);
64+
registerConfigurationValidator("MeterValueSampleInterval", VALIDATE_UNSIGNED_INT);
65+
registerConfigurationValidator("ClockAlignedDataInterval", VALIDATE_UNSIGNED_INT);
7666

7767
/*
7868
* Register further message handlers to support echo mode: when this library

src/MicroOcpp/Model/Reset/ResetService.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ ResetService::ResetService(Context& context)
2929
: MemoryManaged("v16.Reset.ResetService"), context(context) {
3030

3131
resetRetriesInt = declareConfiguration<int>("ResetRetries", 2);
32+
registerConfigurationValidator("ResetRetries", VALIDATE_UNSIGNED_INT);
3233

3334
context.getOperationRegistry().registerOperation("Reset", [&context] () {
3435
return new Ocpp16::Reset(context.getModel());});
@@ -50,10 +51,11 @@ void ResetService::loop() {
5051
MO_DBG_ERR("No Reset function set! Abort");
5152
outstandingResetRetries = 0;
5253
}
53-
MO_DBG_ERR("Reset device failure. %s", outstandingResetRetries == 0 ? "Abort" : "Retry");
5454

5555
if (outstandingResetRetries <= 0) {
5656

57+
MO_DBG_ERR("Reset device failure. Abort");
58+
5759
ChargePointStatus cpStatus = ChargePointStatus_UNDEFINED;
5860
if (context.getModel().getNumConnectors() > 0) {
5961
cpStatus = context.getModel().getConnector(0)->getStatus();

0 commit comments

Comments
 (0)