Skip to content

Commit 642006f

Browse files
committed
migration to optimized configs
1 parent 363b8c7 commit 642006f

File tree

2 files changed

+57
-68
lines changed

2 files changed

+57
-68
lines changed

src/MicroOcppMongooseClient.cpp

Lines changed: 41 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,6 @@
77
#include <MicroOcpp/Core/Configuration.h>
88
#include <MicroOcpp/Debug.h>
99

10-
#define OCPP_CREDENTIALS_FN "ws-conn.jsn"
11-
1210
#define DEBUG_MSG_INTERVAL 5000UL
1311
#define WS_UNRESPONSIVE_THRESHOLD_MS 15000UL
1412

@@ -21,66 +19,53 @@ using namespace MicroOcpp;
2119
void ws_cb(struct mg_connection *c, int ev, void *ev_data, void *fn_data);
2220

2321
MOcppMongooseClient::MOcppMongooseClient(struct mg_mgr *mgr,
24-
const char *backend_url_default,
25-
const char *charge_box_id_default,
26-
const char *auth_key_default,
27-
const char *CA_cert_default,
22+
const char *backend_url_factory,
23+
const char *charge_box_id_factory,
24+
const char *auth_key_factory,
25+
const char *CA_cert_factory,
2826
std::shared_ptr<FilesystemAdapter> filesystem) : mgr(mgr) {
2927

30-
const char *fn;
31-
bool write_permission;
28+
bool readonly;
3229

3330
if (filesystem) {
3431
configuration_init(filesystem);
3532

3633
//all credentials are persistent over reboots
37-
38-
fn = MOCPP_FILENAME_PREFIX OCPP_CREDENTIALS_FN;
39-
write_permission = true;
34+
readonly = false;
4035
} else {
4136
//make the credentials non-persistent
4237
MOCPP_DBG_WARN("Credentials non-persistent. Use MicroOcpp::makeDefaultFilesystemAdapter(...) for persistency");
43-
44-
fn = CONFIGURATION_VOLATILE;
45-
write_permission = false;
38+
readonly = true;
4639
}
4740

48-
setting_backend_url = declareConfiguration<const char*>(
49-
MOCPP_CONFIG_EXT_PREFIX "BackendUrl", backend_url_default ? backend_url_default : "",
50-
fn, write_permission, true, true, true);
51-
setting_cb_id = declareConfiguration<const char*>(
52-
MOCPP_CONFIG_EXT_PREFIX "ChargeBoxId", charge_box_id_default ? charge_box_id_default : "",
53-
fn, write_permission, true, true, true);
54-
setting_auth_key = declareConfiguration<const char*>(
55-
"AuthorizationKey", auth_key_default ? auth_key_default : "",
56-
fn, write_permission, true, true, true);
41+
setting_backend_url_str = declareConfiguration<const char*>(
42+
MOCPP_CONFIG_EXT_PREFIX "BackendUrl", backend_url_factory, MOCPP_WSCONN_FN, readonly, true);
43+
setting_cb_id_str = declareConfiguration<const char*>(
44+
MOCPP_CONFIG_EXT_PREFIX "ChargeBoxId", charge_box_id_factory, MOCPP_WSCONN_FN, readonly, true);
45+
setting_auth_key_str = declareConfiguration<const char*>(
46+
"AuthorizationKey", auth_key_factory, MOCPP_WSCONN_FN, readonly, true);
5747
#if !MOCPP_CA_CERT_LOCAL
58-
setting_ca_cert = declareConfiguration<const char*>(
59-
MOCPP_CONFIG_EXT_PREFIX "CaCert", CA_cert_default ? CA_cert_default : "",
60-
fn, write_permission, true, true, true);
48+
setting_ca_cert_str = declareConfiguration<const char*>(
49+
MOCPP_CONFIG_EXT_PREFIX "CaCert", CA_cert_factory, MOCPP_WSCONN_FN, readonly, true);
6150
#endif
6251

63-
ws_ping_interval = declareConfiguration<int>(
64-
"WebSocketPingInterval", 5, fn, true, true, true);
65-
reconnect_interval = declareConfiguration<int>(
66-
MOCPP_CONFIG_EXT_PREFIX "ReconnectInterval", 10, fn, true, true, true);
67-
stale_timeout = declareConfiguration<int>(
68-
MOCPP_CONFIG_EXT_PREFIX "StaleTimeout", 300, fn, true, true, true);
69-
70-
configuration_save();
71-
72-
backend_url = setting_backend_url && *setting_backend_url ? *setting_backend_url :
73-
(backend_url_default ? backend_url_default : "");
74-
cb_id = setting_cb_id && *setting_cb_id ? *setting_cb_id :
75-
(charge_box_id_default ? charge_box_id_default : "");
76-
auth_key = setting_auth_key && *setting_auth_key ? *setting_auth_key :
77-
(auth_key_default ? auth_key_default : "");
52+
ws_ping_interval_int = declareConfiguration<int>(
53+
"WebSocketPingInterval", 5, MOCPP_WSCONN_FN);
54+
reconnect_interval_int = declareConfiguration<int>(
55+
MOCPP_CONFIG_EXT_PREFIX "ReconnectInterval", 10, MOCPP_WSCONN_FN);
56+
stale_timeout_int = declareConfiguration<int>(
57+
MOCPP_CONFIG_EXT_PREFIX "StaleTimeout", 300, MOCPP_WSCONN_FN);
58+
59+
configuration_load(MOCPP_WSCONN_FN);
60+
61+
backend_url = setting_backend_url_str ? setting_backend_url_str->getString() : "";
62+
cb_id = setting_cb_id_str ? setting_cb_id_str->getString() : "";
63+
auth_key = setting_auth_key_str ? setting_auth_key_str->getString() : "";
7864

7965
#if !MOCPP_CA_CERT_LOCAL
80-
ca_cert = setting_ca_cert && *setting_ca_cert ? *setting_ca_cert :
81-
(CA_cert_default ? CA_cert_default : "");
66+
ca_cert = setting_ca_cert_str ? setting_ca_cert_str->getString() : "";
8267
#else
83-
ca_cert = CA_cert_default ? CA_cert_default : "";
68+
ca_cert = CA_cert_factory ? CA_cert_factory : "";
8469
#endif
8570

8671
#if defined(MOCPP_MG_VERSION_614)
@@ -141,21 +126,21 @@ void MOcppMongooseClient::maintainWsConn() {
141126
//WS successfully connected?
142127
if (!isConnectionOpen()) {
143128
MOCPP_DBG_DEBUG("WS unconnected");
144-
} else if (mocpp_tick_ms() - last_recv >= (ws_ping_interval && *ws_ping_interval > 0 ? (*ws_ping_interval * 1000UL) : 0UL) + WS_UNRESPONSIVE_THRESHOLD_MS) {
129+
} else if (mocpp_tick_ms() - last_recv >= (ws_ping_interval_int && ws_ping_interval_int->getInt() > 0 ? (ws_ping_interval_int->getInt() * 1000UL) : 0UL) + WS_UNRESPONSIVE_THRESHOLD_MS) {
145130
//WS connected but unresponsive
146131
MOCPP_DBG_DEBUG("WS unresponsive");
147132
}
148133
}
149134

150135
if (websocket && isConnectionOpen() &&
151-
stale_timeout && *stale_timeout > 0 && mocpp_tick_ms() - last_recv >= (*stale_timeout * 1000UL)) {
136+
stale_timeout_int && stale_timeout_int->getInt() > 0 && mocpp_tick_ms() - last_recv >= (stale_timeout_int->getInt() * 1000UL)) {
152137
MOCPP_DBG_INFO("connection %s -- stale, reconnect", url.c_str());
153138
reconnect();
154139
return;
155140
}
156141

157142
if (websocket && isConnectionOpen() &&
158-
ws_ping_interval && *ws_ping_interval > 0 && mocpp_tick_ms() - last_hb >= (*ws_ping_interval * 1000UL)) {
143+
ws_ping_interval_int && ws_ping_interval_int->getInt() > 0 && mocpp_tick_ms() - last_hb >= (ws_ping_interval_int->getInt() * 1000UL)) {
159144
last_hb = mocpp_tick_ms();
160145
#if defined(MOCPP_MG_VERSION_614)
161146
mg_send_websocket_frame(websocket, WEBSOCKET_OP_PING, "", 0);
@@ -178,7 +163,7 @@ void MOcppMongooseClient::maintainWsConn() {
178163
return;
179164
}
180165

181-
if (reconnect_interval && *reconnect_interval > 0 && mocpp_tick_ms() - last_reconnection_attempt < (*reconnect_interval * 1000UL)) {
166+
if (reconnect_interval_int && reconnect_interval_int->getInt() > 0 && mocpp_tick_ms() - last_reconnection_attempt < (reconnect_interval_int->getInt() * 1000UL)) {
182167
return;
183168
}
184169

@@ -286,8 +271,8 @@ void MOcppMongooseClient::setBackendUrl(const char *backend_url_cstr) {
286271
}
287272
backend_url = backend_url_cstr;
288273

289-
if (setting_backend_url) {
290-
*setting_backend_url = backend_url_cstr;
274+
if (setting_backend_url_str) {
275+
setting_backend_url_str->setString(backend_url_cstr);
291276
configuration_save();
292277
}
293278

@@ -303,8 +288,8 @@ void MOcppMongooseClient::setChargeBoxId(const char *cb_id_cstr) {
303288
}
304289
cb_id = cb_id_cstr;
305290

306-
if (setting_cb_id) {
307-
*setting_cb_id = cb_id_cstr;
291+
if (setting_cb_id_str) {
292+
setting_cb_id_str->setString(cb_id_cstr);
308293
configuration_save();
309294
}
310295

@@ -320,8 +305,8 @@ void MOcppMongooseClient::setAuthKey(const char *auth_key_cstr) {
320305
}
321306
auth_key = auth_key_cstr;
322307

323-
if (setting_auth_key) {
324-
*setting_auth_key = auth_key_cstr;
308+
if (setting_auth_key_str) {
309+
setting_auth_key_str->setString(auth_key_cstr);
325310
configuration_save();
326311
}
327312

@@ -338,8 +323,8 @@ void MOcppMongooseClient::setCaCert(const char *ca_cert_cstr) {
338323
ca_cert = ca_cert_cstr;
339324

340325
#if !MOCPP_CA_CERT_LOCAL
341-
if (setting_ca_cert) {
342-
*setting_ca_cert = ca_cert_cstr;
326+
if (setting_ca_cert_str) {
327+
setting_ca_cert_str->setString(ca_cert_cstr);
343328
configuration_save();
344329
}
345330
#endif

src/MicroOcppMongooseClient.h

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,10 @@
1616
#include <string>
1717
#include <memory>
1818

19+
#ifndef MOCPP_WSCONN_FN
20+
#define MOCPP_WSCONN_FN (MOCPP_FILENAME_PREFIX "ws-conn.jsn")
21+
#endif
22+
1923
/*
2024
* If you prefer not to have the TLS-certificate managed by OCPP, store it into
2125
* a file on the flash filesystem, define the following build flag as 1 and
@@ -28,7 +32,7 @@
2832
namespace MicroOcpp {
2933

3034
class FilesystemAdapter;
31-
template<class T> class Configuration;
35+
class Configuration;
3236

3337
class MOcppMongooseClient : public MicroOcpp::Connection {
3438
private:
@@ -40,17 +44,17 @@ class MOcppMongooseClient : public MicroOcpp::Connection {
4044
std::string auth_key;
4145
std::string basic_auth64;
4246
std::string ca_cert;
43-
std::shared_ptr<Configuration<const char*>> setting_backend_url;
44-
std::shared_ptr<Configuration<const char*>> setting_cb_id;
45-
std::shared_ptr<Configuration<const char*>> setting_auth_key;
47+
std::shared_ptr<Configuration> setting_backend_url_str;
48+
std::shared_ptr<Configuration> setting_cb_id_str;
49+
std::shared_ptr<Configuration> setting_auth_key_str;
4650
#if !MOCPP_CA_CERT_LOCAL
47-
std::shared_ptr<Configuration<const char*>> setting_ca_cert;
51+
std::shared_ptr<Configuration> setting_ca_cert_str;
4852
#endif
4953
unsigned long last_status_dbg_msg {0}, last_recv {0};
50-
std::shared_ptr<Configuration<int>> reconnect_interval; //minimum time between two connect trials in s
54+
std::shared_ptr<Configuration> reconnect_interval_int; //minimum time between two connect trials in s
5155
unsigned long last_reconnection_attempt {-1UL / 2UL};
52-
std::shared_ptr<Configuration<int>> stale_timeout; //inactivity period after which the connection will be closed
53-
std::shared_ptr<Configuration<int>> ws_ping_interval; //heartbeat intervall in s. 0 sets hb off
56+
std::shared_ptr<Configuration> stale_timeout_int; //inactivity period after which the connection will be closed
57+
std::shared_ptr<Configuration> ws_ping_interval_int; //heartbeat intervall in s. 0 sets hb off
5458
unsigned long last_hb {0};
5559
bool connection_established {false};
5660
unsigned long last_connection_established {-1UL / 2UL};
@@ -64,10 +68,10 @@ class MOcppMongooseClient : public MicroOcpp::Connection {
6468

6569
public:
6670
MOcppMongooseClient(struct mg_mgr *mgr,
67-
const char *backend_url_default = nullptr,
68-
const char *charge_box_id_default = nullptr,
69-
const char *auth_key_default = nullptr,
70-
const char *CA_cert_default = nullptr, //forwards this string to Mongoose as ssl_ca_cert (see https://github.com/cesanta/mongoose/blob/ab650ec5c99ceb52bb9dc59e8e8ec92a2724932b/mongoose.h#L4192)
71+
const char *backend_url_factory = nullptr,
72+
const char *charge_box_id_factory = nullptr,
73+
const char *auth_key_factory = nullptr,
74+
const char *CA_cert_factory = nullptr, //forwards this string to Mongoose as ssl_ca_cert (see https://github.com/cesanta/mongoose/blob/ab650ec5c99ceb52bb9dc59e8e8ec92a2724932b/mongoose.h#L4192)
7175
std::shared_ptr<MicroOcpp::FilesystemAdapter> filesystem = nullptr);
7276

7377
~MOcppMongooseClient();

0 commit comments

Comments
 (0)