Skip to content

Commit 9763fbc

Browse files
authored
Merge pull request #23 from arduino-libraries/fix-opta-lite
Handle opta lite
2 parents e9491c0 + 32eef45 commit 9763fbc

File tree

7 files changed

+57
-12
lines changed

7 files changed

+57
-12
lines changed

examples/utility/DeleteConfiguration/DeleteConfiguration.ino

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,8 @@
1616
#include <GenericConnectionHandler.h>
1717
#include <Arduino_KVStore.h>
1818
#include <Arduino_NetworkConfigurator.h>
19-
#include <configuratorAgents/agents/BLEAgent.h>
20-
#include <configuratorAgents/agents/SerialAgent.h>
2119

2220
KVStore kvstore;
23-
BLEAgentClass BLEAgent;
24-
SerialAgentClass SerialAgent;
2521
GenericConnectionHandler conMan;
2622
NetworkConfiguratorClass NetworkConfigurator(conMan);
2723

src/ANetworkConfigurator_Config.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@
7272
#if defined(ARDUINO_OPTA)
7373
#define NETWORK_CONFIGURATOR_COMPATIBLE 1
7474
#define ZERO_TOUCH_ENABLED 1
75+
#define OPTA_WIFI_PID _BOARD_PRODUCTID
7576
#define PIN_RECONFIGURE BTN_USER
7677
#define LED_RECONFIGURE LED_USER
7778
#define BOARD_HAS_RGB

src/Arduino_NetworkConfigurator.cpp

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,10 +57,17 @@ bool NetworkConfiguratorClass::begin() {
5757
memset(&_networkSetting, 0x00, sizeof(models::NetworkSetting));
5858
_ledFeedback->begin();
5959
#ifdef BOARD_HAS_WIFI
60+
#ifdef ARDUINO_OPTA
61+
if(_getPid_() == OPTA_WIFI_PID) {
62+
#endif
6063
String fv = WiFi.firmwareVersion();
6164
if (fv < WIFI_FIRMWARE_LATEST_VERSION) {
6265
DEBUG_ERROR(F("The current WiFi firmware version is not the latest and it may cause compatibility issues. Please upgrade the WiFi firmware"));
6366
}
67+
68+
#ifdef ARDUINO_OPTA
69+
}
70+
#endif
6471
_agentsManager->addRequestHandler(RequestType::SCAN, scanReqHandler);
6572

6673
_agentsManager->addRequestHandler(RequestType::GET_WIFI_FW_VERSION, getWiFiFWVersionHandler);
@@ -294,6 +301,13 @@ bool NetworkConfiguratorClass::insertWiFiAP(WiFiOption &wifiOptObj, char *ssid,
294301

295302
bool NetworkConfiguratorClass::scanWiFiNetworks(WiFiOption &wifiOptObj) {
296303
wifiOptObj.numDiscoveredWiFiNetworks = 0;
304+
305+
#if defined(ARDUINO_OPTA)
306+
if(_getPid_() != OPTA_WIFI_PID) {
307+
return true; // Skip scanning if it's not the Opta with WiFi
308+
}
309+
#endif
310+
297311
#if defined(ARDUINO_UNOR4_WIFI)
298312
WiFi.end();
299313
#endif
@@ -349,6 +363,14 @@ bool NetworkConfiguratorClass::handleConnectRequest() {
349363
return false;
350364
}
351365

366+
#ifdef ARDUINO_OPTA
367+
if(_networkSetting.type == NetworkAdapter::WIFI && _getPid_() != OPTA_WIFI_PID) {
368+
DEBUG_WARNING("NetworkConfiguratorClass::%s WiFi configuration is not supported on this board", __FUNCTION__);
369+
sendStatus(StatusMessage::INVALID_PARAMS);
370+
return false;
371+
}
372+
#endif
373+
352374
if (_kvstore != nullptr) {
353375
if (!_kvstore->begin()) {
354376
DEBUG_ERROR("NetworkConfiguratorClass::%s error initializing kvstore", __FUNCTION__);
@@ -469,7 +491,13 @@ String NetworkConfiguratorClass::decodeConnectionErrorMessage(NetworkConnectionS
469491
void NetworkConfiguratorClass::handleGetWiFiFWVersion() {
470492
String fwVersion = "";
471493
#ifdef BOARD_HAS_WIFI
494+
#ifdef ARDUINO_OPTA
495+
if(_getPid_() == OPTA_WIFI_PID) {
496+
#endif
472497
fwVersion = WiFi.firmwareVersion();
498+
#ifdef ARDUINO_OPTA
499+
}
500+
#endif
473501
#endif
474502
ProvisioningOutputMessage fwVersionMsg = { MessageOutputType::WIFI_FW_VERSION };
475503
fwVersionMsg.m.wifiFwVersion = fwVersion.c_str();

src/configuratorAgents/AgentsManager.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,13 @@
1919
******************************************************************************/
2020

2121
bool AgentsManagerClass::addAgent(ConfiguratorAgent &agent) {
22+
#ifdef ARDUINO_OPTA
23+
if(agent.getAgentType() == ConfiguratorAgent::AgentTypes::BLE && _getPid_() != OPTA_WIFI_PID) {
24+
return false;
25+
}
26+
#endif
2227
_agentsList.push_back(&agent);
28+
return true;
2329
}
2430

2531
AgentsManagerClass &AgentsManagerClass::getInstance() {

src/utility/LEDFeedback.cpp

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -150,10 +150,15 @@ void LEDFeedbackClass::begin() {
150150
#else
151151
pinMode(GREEN_LED, OUTPUT);
152152
digitalWrite(GREEN_LED, LED_OFF);
153-
pinMode(BLUE_LED, OUTPUT);
154-
digitalWrite(BLUE_LED, LED_OFF);
153+
155154
pinMode(RED_LED, OUTPUT);
156155
digitalWrite(RED_LED, LED_OFF);
156+
#if defined(ARDUINO_OPTA)
157+
if(_getPid_() == OPTA_WIFI_PID){
158+
pinMode(BLUE_LED, OUTPUT);
159+
digitalWrite(BLUE_LED, LED_OFF);
160+
}
161+
#endif
157162
#endif
158163
#else
159164
pinMode(GREEN_LED, OUTPUT);
@@ -364,6 +369,11 @@ void LEDFeedbackClass::configurePeerConnectedMode() {
364369
#ifdef BOARD_HAS_RGB
365370
turnOFF();
366371
_ledPin = BLUE_LED;
372+
#if defined(ARDUINO_OPTA)
373+
if(_getPid_() != OPTA_WIFI_PID){
374+
_ledPin = GREEN_LED;
375+
}
376+
#endif
367377
#else
368378
_ledPin = GREEN_LED;
369379
#endif

src/utility/ResetInput.cpp

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ ResetInput::ResetInput() {
4848
#else
4949
_pin = PIN_RECONFIGURE;
5050
#endif
51-
51+
_ledFeedbackPin = LED_RECONFIGURE;
5252
_expired = false;
5353
_startPressed = 0;
5454
_fireEvent = false;
@@ -67,11 +67,14 @@ void ResetInput::begin() {
6767
}
6868
#ifdef ARDUINO_OPTA
6969
pinMode(_pin, INPUT);
70+
if(_getPid_() != OPTA_WIFI_PID){
71+
_ledFeedbackPin = GREEN_LED;
72+
}
7073
#else
7174
pinMode(_pin, INPUT_PULLUP);
7275
#endif
73-
pinMode(LED_RECONFIGURE, OUTPUT);
74-
digitalWrite(LED_RECONFIGURE, LED_OFF);
76+
pinMode(_ledFeedbackPin, OUTPUT);
77+
digitalWrite(_ledFeedbackPin, LED_OFF);
7578
attachInterrupt(digitalPinToInterrupt(_pin),_pressedCallback, CHANGE);
7679
}
7780

@@ -81,7 +84,7 @@ bool ResetInput::isEventFired() {
8184
LEDFeedbackClass::getInstance().stop();
8285
#endif
8386
if(micros() - _startPressed > RESET_HOLD_TIME){
84-
digitalWrite(LED_RECONFIGURE, LED_OFF);
87+
digitalWrite(_ledFeedbackPin, LED_OFF);
8588
_expired = true;
8689
}
8790
}
@@ -111,9 +114,9 @@ void ResetInput::_pressedCallback() {
111114
LEDFeedbackClass::getInstance().stop();
112115
#endif
113116
_startPressed = micros();
114-
digitalWrite(LED_RECONFIGURE, LED_ON);
117+
digitalWrite(_ledFeedbackPin, LED_ON);
115118
} else {
116-
digitalWrite(LED_RECONFIGURE, LED_OFF);
119+
digitalWrite(_ledFeedbackPin, LED_OFF);
117120
if(_startPressed != 0 && _expired){
118121
_fireEvent = true;
119122
}else{

src/utility/ResetInput.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ class ResetInput{
6565
ResetInput();
6666
static inline ResetInputCallback _pressedCustomCallback;
6767
static inline int _pin;
68+
static inline int _ledFeedbackPin;
6869
static inline volatile bool _expired;
6970
static inline volatile bool _fireEvent;
7071
static inline volatile uint32_t _startPressed;

0 commit comments

Comments
 (0)