Skip to content

Commit b2464c0

Browse files
committed
add setStorage to NetworkConfigurator
1 parent 9d5bc22 commit b2464c0

File tree

5 files changed

+76
-66
lines changed

5 files changed

+76
-66
lines changed

examples/auto-retry/thingProperties.h

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,16 +16,16 @@ const char PASS[] = SECRET_OPTIONAL_PASS; // Network password (use for WPA, or
1616
void onCounterChange();
1717

1818
int counter;
19-
19+
GenericConnectionHandler ArduinoIoTPreferredConnection;
20+
NetworkConfiguratorClass NetworkConfigurator(ArduinoIoTPreferredConnection);
21+
Provisioning ProvisioningSystem(AgentsManager);
22+
KVStore kvstore;
2023
void initProperties() {
2124

2225
ArduinoCloud.addProperty(counter, READWRITE, ON_CHANGE, onCounterChange);
26+
NetworkConfigurator.setStorage(kvstore);
2327
#if !defined(ARDUINO_SAMD_MKRGSM1400) && !defined(ARDUINO_SAMD_MKRNB1500) && !defined(ARDUINO_SAMD_MKRWAN1300) && !defined(ARDUINO_SAMD_MKRWAN1310)
2428
AgentsManager.addAgent(BLEAgent);
2529
#endif
2630
AgentsManager.addAgent(SerialAgent);
2731
}
28-
29-
GenericConnectionHandler ArduinoIoTPreferredConnection;
30-
NetworkConfiguratorClass NetworkConfigurator(ArduinoIoTPreferredConnection);
31-
Provisioning ProvisioningSystem(AgentsManager);

examples/network-setting/thingProperties.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
#include <GenericConnectionHandler.h>
55
#include "NetworkConfigurator.h"
66
#include "ConfiguratorAgents/AgentsManager.h"
7+
#include <Arduino_KVStore.h>
78
#if !defined(ARDUINO_SAMD_MKRGSM1400) && !defined(ARDUINO_SAMD_MKRNB1500) && !defined(ARDUINO_SAMD_MKRWAN1300) && !defined(ARDUINO_SAMD_MKRWAN1310)
89
#include "ConfiguratorAgents/agents/BLE/BLEAgent.h"
910
#endif
@@ -18,10 +19,12 @@ int counter;
1819

1920
GenericConnectionHandler ArduinoIoTPreferredConnection;
2021
NetworkConfiguratorClass NetworkConfigurator(ArduinoIoTPreferredConnection);
22+
KVStore kvstore;
2123

2224
void initProperties(){
2325

2426
ArduinoCloud.addProperty(counter, READWRITE, ON_CHANGE, onCounterChange);
27+
NetworkConfigurator.setStorage(kvstore);
2528
#if !defined(ARDUINO_SAMD_MKRGSM1400) && !defined(ARDUINO_SAMD_MKRNB1500) && !defined(ARDUINO_SAMD_MKRWAN1300) && !defined(ARDUINO_SAMD_MKRWAN1310)
2629
AgentsManager.addAgent(BLEAgent);
2730
#endif

examples/provisioning/thingProperties.h

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
#include <ArduinoIoTCloud.h>
44
#include <GenericConnectionHandler.h>
5+
#include <Arduino_KVStore.h>
56
#include "NetworkConfigurator.h"
67
#include "ConfiguratorAgents/AgentsManager.h"
78
#include "ConfiguratorAgents/agents/BLE/BLEAgent.h"
@@ -11,14 +12,17 @@
1112
void onCounterChange();
1213

1314
int counter;
15+
KVStore kvstore;
16+
GenericConnectionHandler ArduinoIoTPreferredConnection;
17+
NetworkConfiguratorClass NetworkConfigurator(ArduinoIoTPreferredConnection);
18+
ClaimingHandlerClass ClaimingHandler(AgentsManager);
1419

1520
void initProperties() {
1621

1722
ArduinoCloud.addProperty(counter, READWRITE, ON_CHANGE, onCounterChange);
1823
AgentsManager.addAgent(BLEAgent);
1924
AgentsManager.addAgent(SerialAgent);
25+
NetworkConfigurator.setStorage(kvstore);
2026
}
2127

22-
GenericConnectionHandler ArduinoIoTPreferredConnection;
23-
NetworkConfiguratorClass NetworkConfigurator(ArduinoIoTPreferredConnection);
24-
ClaimingHandlerClass ClaimingHandler(AgentsManager);
28+

src/NetworkConfigurator.cpp

Lines changed: 52 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -15,20 +15,13 @@
1515
#include "WiFiConnectionHandler.h"
1616
#endif
1717
#include "NetworkConfigurator.h"
18-
#if !defined(ARDUINO_SAMD_MKRGSM1400) && !defined(ARDUINO_SAMD_MKRNB1500) && !defined(ARDUINO_SAMD_MKRWAN1300) && !defined(ARDUINO_SAMD_MKRWAN1310)
19-
#define BOARD_HAS_KVSTORE
20-
#include <Arduino_KVStore.h>
21-
#endif
2218

2319
#define SERVICE_ID_FOR_AGENTMANAGER 0xB0
2420

2521
#define NC_CONNECTION_RETRY_TIMER_ms 120000
2622
#define NC_CONNECTION_TIMEOUT_ms 15000
2723
#define NC_UPDATE_NETWORK_OPTIONS_TIMER_ms 120000
2824

29-
#if defined(BOARD_HAS_KVSTORE)
30-
KVStore _kvstore;
31-
#endif
3225
constexpr char *STORAGE_KEY{ "NETWORK_CONFIGS" };
3326

3427
NetworkConfiguratorClass::NetworkConfiguratorClass(ConnectionHandler &connectionHandler)
@@ -120,22 +113,23 @@ NetworkConfiguratorStates NetworkConfiguratorClass::poll() {
120113
}
121114

122115
bool NetworkConfiguratorClass::resetStoredConfiguration() {
123-
#if defined(BOARD_HAS_KVSTORE)
124-
bool res = false;
125-
if (_kvstore.begin()) {
126-
if(_kvstore.exists(STORAGE_KEY)) {
127-
res = _kvstore.remove(STORAGE_KEY);
128-
} else{
129-
res = true;
116+
117+
if(_kvstore != nullptr){
118+
bool res = false;
119+
if (_kvstore->begin()) {
120+
if(_kvstore->exists(STORAGE_KEY)) {
121+
res = _kvstore->remove(STORAGE_KEY);
122+
} else{
123+
res = true;
124+
}
125+
_kvstore->end();
126+
} else {
127+
DEBUG_DEBUG("Cannot initialize kvstore for deleting network settings");
128+
}
129+
if (!res) {
130+
return false;
130131
}
131-
_kvstore.end();
132-
} else {
133-
DEBUG_DEBUG("Cannot initialize kvstore for deleting network settings");
134-
}
135-
if (!res) {
136-
return false;
137132
}
138-
#endif
139133

140134
memset(&_networkSetting, 0x00, sizeof(models::NetworkSetting));
141135
if(_connectionHandlerIstantiated) {
@@ -324,22 +318,22 @@ NetworkConfiguratorStates NetworkConfiguratorClass::handleConnectRequest() {
324318

325319
sendStatus(StatusMessage::CONNECTING);
326320

327-
#if defined(BOARD_HAS_KVSTORE)
328-
if (!_kvstore.begin()) {
329-
DEBUG_ERROR("NetworkConfiguratorClass::%s error initializing kvstore", __FUNCTION__);
330-
sendStatus(StatusMessage::ERROR_STORAGE_BEGIN);
331-
LEDFeedbackClass::getInstance().setMode(LEDFeedbackClass::LEDFeedbackMode::ERROR);
332-
return nextState;
333-
}
334-
if (!_kvstore.putBytes(STORAGE_KEY, (uint8_t *)&_networkSetting, sizeof(models::NetworkSetting))) {
335-
DEBUG_ERROR("NetworkConfiguratorClass::%s error saving network settings", __FUNCTION__);
336-
sendStatus(StatusMessage::ERROR);
337-
LEDFeedbackClass::getInstance().setMode(LEDFeedbackClass::LEDFeedbackMode::ERROR);
338-
return nextState;
339-
}
321+
if (_kvstore != nullptr) {
322+
if (!_kvstore->begin()) {
323+
DEBUG_ERROR("NetworkConfiguratorClass::%s error initializing kvstore", __FUNCTION__);
324+
sendStatus(StatusMessage::ERROR_STORAGE_BEGIN);
325+
LEDFeedbackClass::getInstance().setMode(LEDFeedbackClass::LEDFeedbackMode::ERROR);
326+
return nextState;
327+
}
328+
if (!_kvstore->putBytes(STORAGE_KEY, (uint8_t *)&_networkSetting, sizeof(models::NetworkSetting))) {
329+
DEBUG_ERROR("NetworkConfiguratorClass::%s error saving network settings", __FUNCTION__);
330+
sendStatus(StatusMessage::ERROR);
331+
LEDFeedbackClass::getInstance().setMode(LEDFeedbackClass::LEDFeedbackMode::ERROR);
332+
return nextState;
333+
}
340334

341-
_kvstore.end();
342-
#endif
335+
_kvstore->end();
336+
}
343337

344338
if (_connectionHandlerIstantiated) {
345339
if(disconnectFromNetwork() == ConnectionResult::FAILED) {
@@ -417,32 +411,32 @@ NetworkConfiguratorStates NetworkConfiguratorClass::handleCheckEth() {
417411

418412
NetworkConfiguratorStates NetworkConfiguratorClass::handleReadStorage() {
419413
NetworkConfiguratorStates nextState = _state;
420-
#if defined(BOARD_HAS_KVSTORE)
421-
if (!_kvstore.begin()) {
422-
DEBUG_ERROR("NetworkConfiguratorClass::%s error initializing kvstore", __FUNCTION__);
423-
sendStatus(StatusMessage::ERROR_STORAGE_BEGIN);
424-
LEDFeedbackClass::getInstance().setMode(LEDFeedbackClass::LEDFeedbackMode::ERROR);
425-
return nextState;
426-
}
414+
if(_kvstore != nullptr){
415+
if (!_kvstore->begin()) {
416+
DEBUG_ERROR("NetworkConfiguratorClass::%s error initializing kvstore", __FUNCTION__);
417+
sendStatus(StatusMessage::ERROR_STORAGE_BEGIN);
418+
LEDFeedbackClass::getInstance().setMode(LEDFeedbackClass::LEDFeedbackMode::ERROR);
419+
return nextState;
420+
}
421+
422+
if (_kvstore->exists(STORAGE_KEY)) {
423+
_kvstore->getBytes(STORAGE_KEY, (uint8_t *)&_networkSetting, sizeof(models::NetworkSetting));
424+
printNetworkSettings();
425+
if (!_connectionHandler->updateSetting(_networkSetting)) {
426+
DEBUG_WARNING("NetworkConfiguratorClass::%s Network parameters found on storage are not supported.", __FUNCTION__);
427+
nextState = NetworkConfiguratorStates::WAITING_FOR_CONFIG;
428+
} else {
429+
_connectionHandlerIstantiated = true;
430+
nextState = NetworkConfiguratorStates::CONFIGURED;
431+
}
427432

428-
if (_kvstore.exists(STORAGE_KEY)) {
429-
_kvstore.getBytes(STORAGE_KEY, (uint8_t *)&_networkSetting, sizeof(models::NetworkSetting));
430-
printNetworkSettings();
431-
if (!_connectionHandler->updateSetting(_networkSetting)) {
432-
DEBUG_WARNING("NetworkConfiguratorClass::%s Network parameters found on storage are not supported.", __FUNCTION__);
433-
nextState = NetworkConfiguratorStates::WAITING_FOR_CONFIG;
434433
} else {
435-
_connectionHandlerIstantiated = true;
436-
nextState = NetworkConfiguratorStates::CONFIGURED;
434+
nextState = NetworkConfiguratorStates::WAITING_FOR_CONFIG;
437435
}
438-
439-
} else {
440-
nextState = NetworkConfiguratorStates::WAITING_FOR_CONFIG;
436+
_kvstore->end();
437+
} else{
438+
nextState = NetworkConfiguratorStates::CONFIGURED;
441439
}
442-
_kvstore.end();
443-
#else
444-
nextState = NetworkConfiguratorStates::CONFIGURED;
445-
#endif
446440

447441
if (nextState == NetworkConfiguratorStates::WAITING_FOR_CONFIG && _optionUpdateTimer.getWaitTime() == 0) {
448442
updateNetworkOptions();

src/NetworkConfigurator.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,15 @@
77
*/
88

99
#pragma once
10+
#if defined(ARDUINO_SAMD_MKRGSM1400) || defined(ARDUINO_SAMD_MKRNB1500) || defined(ARDUINO_SAMD_MKRWAN1300) || defined(ARDUINO_SAMD_MKRWAN1310)
11+
#error "Board not supported"
12+
#endif
1013
#include "Arduino.h"
1114
#include "GenericConnectionHandler.h"
1215
#include "ConfiguratorAgents/AgentsManager.h"
1316
#include <settings/settings.h>
1417
#include <Arduino_TimedAttempt.h>
18+
#include <Arduino_KVStore.h>
1519

1620
enum class NetworkConfiguratorStates { CHECK_ETH,
1721
READ_STORED_CONFIG,
@@ -29,6 +33,9 @@ class NetworkConfiguratorClass {
2933
bool resetStoredConfiguration();
3034
bool end();
3135
bool updateNetworkOptions();
36+
void setStorage(KVStore &kvstore) {
37+
_kvstore = &kvstore;
38+
}
3239
private:
3340
NetworkConfiguratorStates _state = NetworkConfiguratorStates::END;
3441
ConnectionHandler *_connectionHandler;
@@ -49,6 +56,8 @@ class NetworkConfiguratorClass {
4956
FAILED,
5057
IN_PROGRESS };
5158

59+
KVStore *_kvstore = nullptr;
60+
5261
#ifdef BOARD_HAS_ETHERNET
5362
NetworkConfiguratorStates handleCheckEth();
5463
#endif

0 commit comments

Comments
 (0)