Skip to content

Commit 3eecae4

Browse files
[nrf toup] [nrfconnect] Fix missing returns error in WiFi Mgr
Fixed not checked return from several functions in WiFi Manager. Signed-off-by: Arkadiusz Balys <arkadiusz.balys@nordicsemi.no>
1 parent b3ce430 commit 3eecae4

2 files changed

Lines changed: 36 additions & 11 deletions

File tree

src/platform/nrfconnect/wifi/NrfWiFiDriver.cpp

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
#include <lib/support/CodeUtils.h>
2525
#include <lib/support/SafeInt.h>
2626
#include <lib/support/TypeTraits.h>
27+
#include <lib/support/logging/CHIPLogging.h>
2728
#include <platform/CHIPDeviceLayer.h>
2829

2930
using namespace ::chip;
@@ -124,7 +125,11 @@ void NrfWiFiDriver::OnNetworkConnStatusChanged(const wifi_conn_status & connStat
124125

125126
if (status == Status::kSuccess)
126127
{
127-
ConnectivityMgr().SetWiFiStationMode(ConnectivityManager::kWiFiStationMode_Enabled);
128+
CHIP_ERROR err = ConnectivityMgr().SetWiFiStationMode(ConnectivityManager::kWiFiStationMode_Enabled);
129+
if (err != CHIP_NO_ERROR)
130+
{
131+
ChipLogError(DeviceLayer, "SetWiFiStationMode failed: %" CHIP_ERROR_FORMAT, err.Format());
132+
}
128133
}
129134

130135
if (mpNetworkStatusChangeCallback)
@@ -182,7 +187,7 @@ CHIP_ERROR NrfWiFiDriver::RevertConfiguration()
182187
return CHIP_NO_ERROR;
183188
}
184189

185-
WiFiManager::Instance().Disconnect();
190+
ReturnErrorOnFailure(WiFiManager::Instance().Disconnect());
186191
}
187192

188193
if (mStagingNetwork.IsConfigured())
@@ -254,7 +259,10 @@ void NrfWiFiDriver::ConnectNetwork(ByteSpan networkId, ConnectCallback * callbac
254259
status = Status::kOtherConnectionFailure);
255260
VerifyOrExit(networkId.data_equal(mStagingNetwork.GetSsidSpan()), status = Status::kNetworkIDNotFound);
256261

257-
WiFiManager::Instance().Connect(mStagingNetwork.GetSsidSpan(), mStagingNetwork.GetPassSpan(), handling);
262+
{
263+
CHIP_ERROR err = WiFiManager::Instance().Connect(mStagingNetwork.GetSsidSpan(), mStagingNetwork.GetPassSpan(), handling);
264+
VerifyOrExit(err == CHIP_NO_ERROR, status = Status::kUnknownError);
265+
}
258266

259267
exit:
260268
if (status != Status::kSuccess && mpConnectCallback)

src/platform/nrfconnect/wifi/WiFiManager.cpp

Lines changed: 25 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,7 @@ void WiFiManager::SuppEventHandler(net_mgmt_event_callback * cb, uint64_t mgmtEv
184184
{
185185
if (mgmtEvent == NET_EVENT_SUPPLICANT_NOT_READY)
186186
{
187-
SystemLayer().ScheduleLambda([] {
187+
SystemLayer().ScheduleLambda([]() -> void {
188188
if (Instance().mWiFiState == WIFI_STATE_COMPLETED)
189189
{
190190
Instance().mReconnect = true;
@@ -194,12 +194,21 @@ void WiFiManager::SuppEventHandler(net_mgmt_event_callback * cb, uint64_t mgmtEv
194194
}
195195
else if (mgmtEvent == NET_EVENT_SUPPLICANT_READY)
196196
{
197-
SystemLayer().ScheduleLambda([] {
197+
SystemLayer().ScheduleLambda([]() -> void {
198198
if (Instance().mWantedNetwork.IsConfigured() && Instance().mReconnect)
199199
{
200200
Instance().mReconnect = false;
201-
Instance().SetLowPowerMode(Instance().mWiFiPsEnabled);
202-
Instance().Scan(Instance().mWantedNetwork.GetSsidSpan(), nullptr, nullptr, true /* internal scan */);
201+
CHIP_ERROR err = Instance().SetLowPowerMode(Instance().mWiFiPsEnabled);
202+
if (err != CHIP_NO_ERROR)
203+
{
204+
ChipLogError(DeviceLayer, "SetLowPowerMode failed: %" CHIP_ERROR_FORMAT, err.Format());
205+
}
206+
CHIP_ERROR scanErr =
207+
Instance().Scan(Instance().mWantedNetwork.GetSsidSpan(), nullptr, nullptr, true /* internal scan */);
208+
if (scanErr != CHIP_NO_ERROR)
209+
{
210+
ChipLogError(DeviceLayer, "WiFi recovery scan failed: %" CHIP_ERROR_FORMAT, scanErr.Format());
211+
}
203212
}
204213
});
205214
}
@@ -366,7 +375,7 @@ void WiFiManager::ScanResultHandler(Platform::UniquePtr<uint8_t> data, size_t le
366375
// In case there are many networks with the same SSID choose the one with the best RSSI
367376
if (scanResult->rssi > Instance().mWiFiParams.mRssi)
368377
{
369-
Instance().ClearStationProvisioningData();
378+
TEMPORARY_RETURN_IGNORED Instance().ClearStationProvisioningData();
370379
Instance().mWiFiParams.mParams.ssid_length = static_cast<uint8_t>(Instance().mWantedNetwork.ssidLen);
371380
Instance().mWiFiParams.mParams.ssid = Instance().mWantedNetwork.ssid;
372381
// Fallback to the WIFI_SECURITY_TYPE_PSK if the security is unknown
@@ -488,7 +497,7 @@ void WiFiManager::ConnectHandler(Platform::UniquePtr<uint8_t> data, size_t lengt
488497
// Validate that input data size matches the expected one.
489498
VerifyOrReturn(length == sizeof(wifi_status));
490499

491-
CHIP_ERROR err = SystemLayer().ScheduleLambda([capturedData = data.get()] {
500+
CHIP_ERROR err = SystemLayer().ScheduleLambda([capturedData = data.get()]() -> void {
492501
Platform::UniquePtr<uint8_t> safePtr(capturedData);
493502
uint8_t * rawData = safePtr.get();
494503
const wifi_status * status = reinterpret_cast<const wifi_status *>(rawData);
@@ -564,7 +573,11 @@ void WiFiManager::ConnectHandler(Platform::UniquePtr<uint8_t> data, size_t lengt
564573
}
565574
}
566575
// cleanup the provisioning data as it is configured per each connect request
567-
Instance().ClearStationProvisioningData();
576+
CHIP_ERROR clearErr = Instance().ClearStationProvisioningData();
577+
if (clearErr != CHIP_NO_ERROR)
578+
{
579+
ChipLogError(DeviceLayer, "ClearStationProvisioningData failed: %" CHIP_ERROR_FORMAT, clearErr.Format());
580+
}
568581
});
569582

570583
if (CHIP_NO_ERROR == err)
@@ -678,7 +691,11 @@ void WiFiManager::Recover(System::Layer *, void *)
678691
return;
679692
}
680693

681-
Instance().Scan(Instance().mWantedNetwork.GetSsidSpan(), nullptr, nullptr, true /* internal scan */);
694+
CHIP_ERROR scanErr = Instance().Scan(Instance().mWantedNetwork.GetSsidSpan(), nullptr, nullptr, true /* internal scan */);
695+
if (scanErr != CHIP_NO_ERROR)
696+
{
697+
ChipLogError(DeviceLayer, "Connection recovery scan failed: %" CHIP_ERROR_FORMAT, scanErr.Format());
698+
}
682699
}
683700

684701
void WiFiManager::ResetRecoveryTime()

0 commit comments

Comments
 (0)