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;
2119void ws_cb (struct mg_connection *c, int ev, void *ev_data, void *fn_data);
2220
2321MOcppMongooseClient::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
0 commit comments