@@ -188,14 +188,26 @@ CHIP_ERROR WiFiManager::Scan(const ByteSpan & ssid, ScanResultCallback resultCal
188
188
mWiFiState = WIFI_STATE_SCANNING;
189
189
mSsidFound = false ;
190
190
191
- if (0 != net_mgmt (NET_REQUEST_WIFI_SCAN, mNetIf , NULL , 0 ))
191
+ if (!ssid. empty ( ))
192
192
{
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
+ }
195
208
}
196
209
197
210
ChipLogDetail (DeviceLayer, " WiFi scanning started..." );
198
-
199
211
return CHIP_NO_ERROR;
200
212
}
201
213
@@ -420,8 +432,8 @@ void WiFiManager::ConnectHandler(Platform::UniquePtr<uint8_t> data)
420
432
{
421
433
CHIP_ERROR err = SystemLayer ().ScheduleLambda ([capturedData = data.get ()] {
422
434
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);
425
437
426
438
if (status->status )
427
439
{
0 commit comments