Skip to content

Commit

Permalink
merge branch 'main' into feature/ocpp201-update
Browse files Browse the repository at this point in the history
  • Loading branch information
matth-x committed Oct 8, 2024
2 parents 8d45ecd + 5f48272 commit b0efb11
Show file tree
Hide file tree
Showing 4 changed files with 73 additions and 5 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
- MeterValues port for OCPP 2.0.1 ([#371](https://github.com/matth-x/MicroOcpp/pull/371))
- UnlockConnector port for OCPP 2.0.1 ([#371](https://github.com/matth-x/MicroOcpp/pull/371))
- More APIs ported to OCPP 2.0.1 ([#371](https://github.com/matth-x/MicroOcpp/pull/371))
- Support for AuthorizeRemoteTxRequests ([#373](https://github.com/matth-x/MicroOcpp/pull/373))

### Removed

Expand Down
2 changes: 1 addition & 1 deletion src/MicroOcpp/Model/ConnectorBase/ConnectorsCommon.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ ConnectorsCommon::ConnectorsCommon(Context& context, unsigned int numConn, std::
/*
* Further configuration keys which correspond to the Core profile
*/
declareConfiguration<bool>("AuthorizeRemoteTxRequests", false, CONFIGURATION_VOLATILE, true);
declareConfiguration<bool>("AuthorizeRemoteTxRequests", false);
declareConfiguration<int>("GetConfigurationMaxKeys", 30, CONFIGURATION_VOLATILE, true);

context.getOperationRegistry().registerOperation("ChangeAvailability", [&context] () {
Expand Down
9 changes: 8 additions & 1 deletion src/MicroOcpp/Operations/RemoteStartTransaction.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@


#include <MicroOcpp/Operations/RemoteStartTransaction.h>
#include <MicroOcpp/Core/Configuration.h>
#include <MicroOcpp/Model/Model.h>
#include <MicroOcpp/Model/ConnectorBase/Connector.h>
#include <MicroOcpp/Model/SmartCharging/SmartChargingService.h>
Expand Down Expand Up @@ -98,7 +99,13 @@ void RemoteStartTransaction::processReq(JsonObject payload) {
}

if (success) {
auto tx = selectConnector->beginTransaction_authorized(idTag);
std::shared_ptr<MicroOcpp::Transaction> tx;
auto authorizeRemoteTxRequests = declareConfiguration<bool>("AuthorizeRemoteTxRequests", false);
if (authorizeRemoteTxRequests && authorizeRemoteTxRequests->getBool()) {
tx = selectConnector->beginTransaction(idTag);
} else {
tx = selectConnector->beginTransaction_authorized(idTag);
}
selectConnector->updateTxNotification(TxNotification::RemoteStart);
if (tx) {
if (chargingProfileId >= 0) {
Expand Down
66 changes: 63 additions & 3 deletions tests/ConfigurationBehavior.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@
#include <MicroOcpp/Core/Operation.h>
#include <MicroOcpp/Core/Configuration.h>
#include <MicroOcpp/Core/FilesystemUtils.h>
#include <MicroOcpp/Core/Request.h>
#include <MicroOcpp/Operations/CustomOperation.h>
#include <MicroOcpp/Debug.h>
#include <MicroOcpp/Version.h>
#include <catch2/catch.hpp>
Expand Down Expand Up @@ -63,10 +65,10 @@ TEST_CASE( "Configuration Behavior" ) {
LoopbackConnection loopback;
mocpp_initialize(loopback, ChargerCredentials("test-runner1234"));

auto engine = getOcppContext();
auto& checkMsg = engine->getOperationRegistry();
auto context = getOcppContext();
auto& checkMsg = context->getOperationRegistry();

auto connector = engine->getModel().getConnector(1);
auto connector = context->getModel().getConnector(1);

mocpp_set_timer(custom_timer_cb);

Expand Down Expand Up @@ -224,5 +226,63 @@ TEST_CASE( "Configuration Behavior" ) {
}
#endif //MO_ENABLE_LOCAL_AUTH

SECTION("AuthorizeRemoteTxRequests") {
auto configBool = declareConfiguration<bool>("AuthorizeRemoteTxRequests", false);

bool receivedAuthorize = false;

setOnReceiveRequest("Authorize", [&receivedAuthorize] (JsonObject payload) {
receivedAuthorize = true;
REQUIRE( !strcmp(payload["idTag"] | "_Undefined", "mIdTag") );
});

SECTION("set true") {
configBool->setBool(true);

context->initiateRequest(makeRequest(new Ocpp16::CustomOperation(
"RemoteStartTransaction",
[] () {
//create req
auto doc = makeJsonDoc("UnitTests", JSON_OBJECT_SIZE(1));
auto payload = doc->to<JsonObject>();
payload["idTag"] = "mIdTag";
return doc;},
[] (JsonObject) {
//ignore conf
}
)));

loop();

REQUIRE(receivedAuthorize);
REQUIRE(connector->getStatus() == ChargePointStatus_Charging);
}

SECTION("set false") {
configBool->setBool(false);

context->initiateRequest(makeRequest(new Ocpp16::CustomOperation(
"RemoteStartTransaction",
[] () {
//create req
auto doc = makeJsonDoc("UnitTests", JSON_OBJECT_SIZE(1));
auto payload = doc->to<JsonObject>();
payload["idTag"] = "mIdTag";
return doc;},
[] (JsonObject) {
//ignore conf
}
)));

loop();

REQUIRE(!receivedAuthorize);
REQUIRE(connector->getStatus() == ChargePointStatus_Charging);
}

endTransaction();
loop();
}

mocpp_deinitialize();
}

0 comments on commit b0efb11

Please sign in to comment.