Skip to content

Commit b0efb11

Browse files
committed
merge branch 'main' into feature/ocpp201-update
2 parents 8d45ecd + 5f48272 commit b0efb11

File tree

4 files changed

+73
-5
lines changed

4 files changed

+73
-5
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
- MeterValues port for OCPP 2.0.1 ([#371](https://github.com/matth-x/MicroOcpp/pull/371))
3030
- UnlockConnector port for OCPP 2.0.1 ([#371](https://github.com/matth-x/MicroOcpp/pull/371))
3131
- More APIs ported to OCPP 2.0.1 ([#371](https://github.com/matth-x/MicroOcpp/pull/371))
32+
- Support for AuthorizeRemoteTxRequests ([#373](https://github.com/matth-x/MicroOcpp/pull/373))
3233

3334
### Removed
3435

src/MicroOcpp/Model/ConnectorBase/ConnectorsCommon.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ ConnectorsCommon::ConnectorsCommon(Context& context, unsigned int numConn, std::
3535
/*
3636
* Further configuration keys which correspond to the Core profile
3737
*/
38-
declareConfiguration<bool>("AuthorizeRemoteTxRequests", false, CONFIGURATION_VOLATILE, true);
38+
declareConfiguration<bool>("AuthorizeRemoteTxRequests", false);
3939
declareConfiguration<int>("GetConfigurationMaxKeys", 30, CONFIGURATION_VOLATILE, true);
4040

4141
context.getOperationRegistry().registerOperation("ChangeAvailability", [&context] () {

src/MicroOcpp/Operations/RemoteStartTransaction.cpp

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55

66
#include <MicroOcpp/Operations/RemoteStartTransaction.h>
7+
#include <MicroOcpp/Core/Configuration.h>
78
#include <MicroOcpp/Model/Model.h>
89
#include <MicroOcpp/Model/ConnectorBase/Connector.h>
910
#include <MicroOcpp/Model/SmartCharging/SmartChargingService.h>
@@ -98,7 +99,13 @@ void RemoteStartTransaction::processReq(JsonObject payload) {
9899
}
99100

100101
if (success) {
101-
auto tx = selectConnector->beginTransaction_authorized(idTag);
102+
std::shared_ptr<MicroOcpp::Transaction> tx;
103+
auto authorizeRemoteTxRequests = declareConfiguration<bool>("AuthorizeRemoteTxRequests", false);
104+
if (authorizeRemoteTxRequests && authorizeRemoteTxRequests->getBool()) {
105+
tx = selectConnector->beginTransaction(idTag);
106+
} else {
107+
tx = selectConnector->beginTransaction_authorized(idTag);
108+
}
102109
selectConnector->updateTxNotification(TxNotification::RemoteStart);
103110
if (tx) {
104111
if (chargingProfileId >= 0) {

tests/ConfigurationBehavior.cpp

Lines changed: 63 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
#include <MicroOcpp/Core/Operation.h>
1010
#include <MicroOcpp/Core/Configuration.h>
1111
#include <MicroOcpp/Core/FilesystemUtils.h>
12+
#include <MicroOcpp/Core/Request.h>
13+
#include <MicroOcpp/Operations/CustomOperation.h>
1214
#include <MicroOcpp/Debug.h>
1315
#include <MicroOcpp/Version.h>
1416
#include <catch2/catch.hpp>
@@ -63,10 +65,10 @@ TEST_CASE( "Configuration Behavior" ) {
6365
LoopbackConnection loopback;
6466
mocpp_initialize(loopback, ChargerCredentials("test-runner1234"));
6567

66-
auto engine = getOcppContext();
67-
auto& checkMsg = engine->getOperationRegistry();
68+
auto context = getOcppContext();
69+
auto& checkMsg = context->getOperationRegistry();
6870

69-
auto connector = engine->getModel().getConnector(1);
71+
auto connector = context->getModel().getConnector(1);
7072

7173
mocpp_set_timer(custom_timer_cb);
7274

@@ -224,5 +226,63 @@ TEST_CASE( "Configuration Behavior" ) {
224226
}
225227
#endif //MO_ENABLE_LOCAL_AUTH
226228

229+
SECTION("AuthorizeRemoteTxRequests") {
230+
auto configBool = declareConfiguration<bool>("AuthorizeRemoteTxRequests", false);
231+
232+
bool receivedAuthorize = false;
233+
234+
setOnReceiveRequest("Authorize", [&receivedAuthorize] (JsonObject payload) {
235+
receivedAuthorize = true;
236+
REQUIRE( !strcmp(payload["idTag"] | "_Undefined", "mIdTag") );
237+
});
238+
239+
SECTION("set true") {
240+
configBool->setBool(true);
241+
242+
context->initiateRequest(makeRequest(new Ocpp16::CustomOperation(
243+
"RemoteStartTransaction",
244+
[] () {
245+
//create req
246+
auto doc = makeJsonDoc("UnitTests", JSON_OBJECT_SIZE(1));
247+
auto payload = doc->to<JsonObject>();
248+
payload["idTag"] = "mIdTag";
249+
return doc;},
250+
[] (JsonObject) {
251+
//ignore conf
252+
}
253+
)));
254+
255+
loop();
256+
257+
REQUIRE(receivedAuthorize);
258+
REQUIRE(connector->getStatus() == ChargePointStatus_Charging);
259+
}
260+
261+
SECTION("set false") {
262+
configBool->setBool(false);
263+
264+
context->initiateRequest(makeRequest(new Ocpp16::CustomOperation(
265+
"RemoteStartTransaction",
266+
[] () {
267+
//create req
268+
auto doc = makeJsonDoc("UnitTests", JSON_OBJECT_SIZE(1));
269+
auto payload = doc->to<JsonObject>();
270+
payload["idTag"] = "mIdTag";
271+
return doc;},
272+
[] (JsonObject) {
273+
//ignore conf
274+
}
275+
)));
276+
277+
loop();
278+
279+
REQUIRE(!receivedAuthorize);
280+
REQUIRE(connector->getStatus() == ChargePointStatus_Charging);
281+
}
282+
283+
endTransaction();
284+
loop();
285+
}
286+
227287
mocpp_deinitialize();
228288
}

0 commit comments

Comments
 (0)