Skip to content

Commit a21e80c

Browse files
[nrf noup] Wifi directed scan with single scan
This commit implements directed scanning and single ssid scanning while commissioning. Signed-off-by: Patryk Lipinski <patryk.lipinski@nordicsemi.no>
1 parent 7653e6c commit a21e80c

File tree

2 files changed

+20
-6
lines changed

2 files changed

+20
-6
lines changed

src/platform/nrfconnect/wifi/WiFiManager.cpp

+18-6
Original file line numberDiff line numberDiff line change
@@ -188,14 +188,26 @@ CHIP_ERROR WiFiManager::Scan(const ByteSpan & ssid, ScanResultCallback resultCal
188188
mWiFiState = WIFI_STATE_SCANNING;
189189
mSsidFound = false;
190190

191-
if (0 != net_mgmt(NET_REQUEST_WIFI_SCAN, mNetIf, NULL, 0))
191+
if (!ssid.empty())
192192
{
193-
ChipLogError(DeviceLayer, "Scan request failed");
194-
return CHIP_ERROR_INTERNAL;
193+
memcpy(mScanSsidBuffer, ssid.data(), ssid.size());
194+
mScanParams.ssids[0] = reinterpret_cast<const char *>(&mScanSsidBuffer);
195+
if (0 != net_mgmt(NET_REQUEST_WIFI_SCAN, mNetIf, &mScanParams, sizeof(mScanParams)))
196+
{
197+
ChipLogError(DeviceLayer, "Scan request failed");
198+
return CHIP_ERROR_INTERNAL;
199+
}
200+
}
201+
else
202+
{
203+
if (0 != net_mgmt(NET_REQUEST_WIFI_SCAN, mNetIf, NULL, 0))
204+
{
205+
ChipLogError(DeviceLayer, "Scan request failed");
206+
return CHIP_ERROR_INTERNAL;
207+
}
195208
}
196209

197210
ChipLogDetail(DeviceLayer, "WiFi scanning started...");
198-
199211
return CHIP_NO_ERROR;
200212
}
201213

@@ -420,8 +432,8 @@ void WiFiManager::ConnectHandler(Platform::UniquePtr<uint8_t> data)
420432
{
421433
CHIP_ERROR err = SystemLayer().ScheduleLambda([capturedData = data.get()] {
422434
Platform::UniquePtr<uint8_t> safePtr(capturedData);
423-
uint8_t * rawData = safePtr.get();
424-
const wifi_status * status = reinterpret_cast<const wifi_status *>(rawData);
435+
uint8_t * rawData = safePtr.get();
436+
const wifi_status * status = reinterpret_cast<const wifi_status *>(rawData);
425437

426438
if (status->status)
427439
{

src/platform/nrfconnect/wifi/WiFiManager.h

+2
Original file line numberDiff line numberDiff line change
@@ -219,6 +219,8 @@ class WiFiManager
219219
net_if * mNetIf{ nullptr };
220220
ConnectionParams mWiFiParams{};
221221
ConnectionHandling mHandling;
222+
struct wifi_scan_params mScanParams;
223+
char mScanSsidBuffer[DeviceLayer::Internal::kMaxWiFiSSIDLength] = { 0 };
222224
wifi_iface_state mWiFiState;
223225
wifi_iface_state mCachedWiFiState;
224226
net_mgmt_event_callback mWiFiMgmtClbk{};

0 commit comments

Comments
 (0)