Skip to content

Commit 6d893f4

Browse files
committed
[nrf noup] [nfconnet] Wi-FI directed scan implementation
This patch implements directed scanning and single ssid scanning during commissioning. Signed-off-by: Marcin Kajor <marcin.kajor@nordicsemi.no>
1 parent 776f655 commit 6d893f4

File tree

2 files changed

+15
-2
lines changed

2 files changed

+15
-2
lines changed

src/platform/nrfconnect/wifi/WiFiManager.cpp

+12-1
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,18 @@ 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+
wifi_scan_params * scanParamsFinal{ nullptr };
192+
193+
if (!ssid.empty())
194+
{
195+
/* We must assume that the ssid is handled as a NULL-terminated string.
196+
Note that the mScanSsidBuffer is initialized with zeros. */
197+
VerifyOrReturnError(ssid.size() < sizeof(mScanParams), CHIP_ERROR_INVALID_ARGUMENT);
198+
memcpy(mScanSsidBuffer, ssid.data(), ssid.size());
199+
mScanParams.ssids[0] = mScanSsidBuffer;
200+
scanParamsFinal = &mScanParams;
201+
}
202+
if (0 != net_mgmt(NET_REQUEST_WIFI_SCAN, mNetIf, scanParamsFinal, sizeof(*scanParamsFinal)))
192203
{
193204
ChipLogError(DeviceLayer, "Scan request failed");
194205
return CHIP_ERROR_INTERNAL;

src/platform/nrfconnect/wifi/WiFiManager.h

+3-1
Original file line numberDiff line numberDiff line change
@@ -220,7 +220,9 @@ class WiFiManager
220220

221221
net_if * mNetIf{ nullptr };
222222
ConnectionParams mWiFiParams{};
223-
ConnectionHandling mHandling;
223+
ConnectionHandling mHandling{};
224+
wifi_scan_params mScanParams{};
225+
char mScanSsidBuffer[DeviceLayer::Internal::kMaxWiFiSSIDLength + 1] = { 0 };
224226
wifi_iface_state mWiFiState;
225227
wifi_iface_state mCachedWiFiState;
226228
net_mgmt_event_callback mWiFiMgmtClbk{};

0 commit comments

Comments
 (0)