Skip to content

Commit 796d861

Browse files
jby-nxpArekBalysNordic
authored andcommitted
[NXP] fix issue when joining predefined wifi AP (#35091)
1 parent 700bde7 commit 796d861

4 files changed

+15
-4
lines changed

src/platform/nxp/common/CHIPDeviceNXPPlatformDefaultConfig.h

+4
Original file line numberDiff line numberDiff line change
@@ -118,3 +118,7 @@
118118
#ifndef CHIP_DEVICE_CONFIG_INIT_OT_PLAT_ALARM
119119
#define CHIP_DEVICE_CONFIG_INIT_OT_PLAT_ALARM 1
120120
#endif // CHIP_DEVICE_CONFIG_INIT_OT_PLAT_ALARM
121+
122+
#ifndef CHIP_DEVICE_CONFIG_WIFI_STATION_RECONNECT_INTERVAL
123+
#define CHIP_DEVICE_CONFIG_WIFI_STATION_RECONNECT_INTERVAL 300
124+
#endif // CHIP_DEVICE_CONFIG_WIFI_STATION_RECONNECT_INTERVAL in Milliseconds

src/platform/nxp/common/CHIPDevicePlatformEvent.h

+1
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ enum InternalPlatformSpecificEventTypes
7070
kPlatformNxpIpChangeEvent,
7171
kPlatformNxpStartWlanConnectEvent,
7272
kPlatformNxpScanWiFiNetworkDoneEvent,
73+
kPlatformNxpStartWlanInitWaitTimerEvent,
7374
};
7475

7576
} // namespace DeviceEventType

src/platform/nxp/common/ConnectivityManagerImpl.cpp

+9-4
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,11 @@ void ConnectivityManagerImpl::_OnPlatformEvent(const ChipDeviceEvent * event)
162162
NetworkCommissioning::NXPWiFiDriver::GetInstance().ScanWiFINetworkDoneFromMatterTaskContext(
163163
event->Platform.ScanWiFiNetworkCount);
164164
}
165+
else if (event->Type == kPlatformNxpStartWlanInitWaitTimerEvent)
166+
{
167+
DeviceLayer::SystemLayer().StartTimer(System::Clock::Milliseconds32(kWlanInitWaitMs), ConnectNetworkTimerHandler,
168+
(void *) event->Platform.pNetworkDataEvent);
169+
}
165170
#endif
166171
}
167172

@@ -662,10 +667,10 @@ void ConnectivityManagerImpl::ConnectNetworkTimerHandler(::chip::System::Layer *
662667
}
663668
else
664669
{
665-
PlatformMgr().LockChipStack();
666-
DeviceLayer::SystemLayer().StartTimer(System::Clock::Milliseconds32(CHIP_DEVICE_CONFIG_WIFI_STATION_RECONNECT_INTERVAL),
667-
ConnectNetworkTimerHandler, context);
668-
PlatformMgr().UnlockChipStack();
670+
/* Post an event to start a delay timer asynchronously in the Matter task context */
671+
event.Type = DeviceEventType::kPlatformNxpStartWlanInitWaitTimerEvent;
672+
event.Platform.pNetworkDataEvent = (struct wlan_network *) context;
673+
(void) PlatformMgr().PostEvent(&event);
669674
}
670675
}
671676

src/platform/nxp/common/ConnectivityManagerImpl.h

+1
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,7 @@ class ConnectivityManagerImpl final : public ConnectivityManager,
144144

145145
BitFlags<GenericConnectivityManagerImpl_WiFi::ConnectivityFlags> mFlags;
146146
static netif_ext_callback_t sNetifCallback;
147+
static constexpr uint32_t kWlanInitWaitMs = CHIP_DEVICE_CONFIG_WIFI_STATION_RECONNECT_INTERVAL;
147148

148149
#if CHIP_ENABLE_OPENTHREAD
149150
static constexpr uint8_t kMaxIp6Addr = 3;

0 commit comments

Comments
 (0)