Skip to content

Commit 575a29d

Browse files
committed
* Enable Wi-Fi PAF commissioning by default on Linux platform
* Postpone to start Wi-Fi Management while needed Signed-off-by: Lo,Chin-Ran <[email protected]>
1 parent a9afc79 commit 575a29d

File tree

5 files changed

+42
-30
lines changed

5 files changed

+42
-30
lines changed

src/controller/CHIPDeviceController.cpp

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -832,11 +832,6 @@ CHIP_ERROR DeviceCommissioner::EstablishPASEConnection(NodeId remoteDeviceId, Re
832832
{
833833
ChipLogProgress(Controller, "WiFi-PAF: Subscribing to the NAN-USD devices, nodeId: %lu",
834834
params.GetPeerAddress().GetRemoteId());
835-
if (!DeviceLayer::ConnectivityMgrImpl().IsWiFiManagementStarted())
836-
{
837-
ChipLogError(Controller, "Wi-Fi Management should have been started now.");
838-
ExitNow(CHIP_ERROR_INTERNAL);
839-
}
840835
mRendezvousParametersForDeviceDiscoveredOverWiFiPAF = params;
841836
auto nodeId = params.GetPeerAddress().GetRemoteId();
842837
const SetupDiscriminator connDiscriminator(params.GetSetupDiscriminator().value());

src/platform/Linux/ConnectivityManagerImpl.cpp

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -783,6 +783,33 @@ void ConnectivityManagerImpl::StartWiFiManagement()
783783
VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(DeviceLayer, "Failed to start WiFi management"));
784784
}
785785

786+
CHIP_ERROR ConnectivityManagerImpl::StartWiFiManagementSync()
787+
{
788+
if (IsWiFiManagementStarted())
789+
{
790+
return CHIP_NO_ERROR;
791+
}
792+
ChipLogProgress(DeviceLayer, "Start and sync Wi-Fi Management.");
793+
static constexpr useconds_t kWiFiStartCheckTimeUsec = WIFI_START_CHECK_TIME_USEC;
794+
static constexpr uint8_t kWiFiStartCheckAttempts = WIFI_START_CHECK_ATTEMPTS;
795+
StartWiFiManagement();
796+
for (int cnt = 0; cnt < kWiFiStartCheckAttempts; cnt++)
797+
{
798+
if (IsWiFiManagementStarted())
799+
{
800+
break;
801+
}
802+
usleep(kWiFiStartCheckTimeUsec);
803+
}
804+
if (!IsWiFiManagementStarted())
805+
{
806+
ChipLogError(DeviceLayer, "Wi-Fi Management can't be started.");
807+
return CHIP_ERROR_INTERNAL;
808+
}
809+
ChipLogProgress(DeviceLayer, "Wi-Fi Management is started");
810+
return CHIP_NO_ERROR;
811+
}
812+
786813
bool ConnectivityManagerImpl::IsWiFiManagementStarted()
787814
{
788815
std::lock_guard<std::mutex> lock(mWpaSupplicantMutex);
@@ -818,6 +845,9 @@ enum nan_service_protocol_type
818845

819846
CHIP_ERROR ConnectivityManagerImpl::_WiFiPAFPublish(ConnectivityManager::WiFiPAFAdvertiseParam & InArgs)
820847
{
848+
CHIP_ERROR result = StartWiFiManagementSync();
849+
VerifyOrReturnError(result == CHIP_NO_ERROR, result);
850+
821851
GAutoPtr<GError> err;
822852
guint publish_id;
823853
enum nan_service_protocol_type srv_proto_type = nan_service_protocol_type::NAN_SRV_PROTO_CSA_MATTER;
@@ -1561,6 +1591,9 @@ void ConnectivityManagerImpl::OnNanSubscribeTerminated(guint subscribe_id, gchar
15611591
CHIP_ERROR ConnectivityManagerImpl::_WiFiPAFSubscribe(const uint16_t & connDiscriminator, void * appState,
15621592
OnConnectionCompleteFunct onSuccess, OnConnectionErrorFunct onError)
15631593
{
1594+
CHIP_ERROR result = StartWiFiManagementSync();
1595+
VerifyOrReturnError(result == CHIP_NO_ERROR, result);
1596+
15641597
ChipLogProgress(Controller, "WiFi-PAF: Try to subscribe the NAN-USD devices");
15651598

15661599
guint subscribe_id;

src/platform/Linux/ConnectivityManagerImpl.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -257,6 +257,7 @@ class ConnectivityManagerImpl final : public ConnectivityManager,
257257
void _OnWpaInterfaceReady(GObject * sourceObject, GAsyncResult * res);
258258
void _OnWpaInterfaceProxyReady(GObject * sourceObject, GAsyncResult * res);
259259
void _OnWpaBssProxyReady(GObject * sourceObject, GAsyncResult * res);
260+
CHIP_ERROR StartWiFiManagementSync();
260261
#if CHIP_DEVICE_CONFIG_ENABLE_WIFIPAF
261262
OnConnectionCompleteFunct mOnPafSubscribeComplete;
262263
OnConnectionErrorFunct mOnPafSubscribeError;

src/platform/device.gni

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,6 @@ declare_args() {
2424
# Substitute fake platform when building with chip_device_platform=auto.
2525
chip_fake_platform = false
2626

27-
# Include wifi-paf to commission the device or not
28-
chip_device_config_enable_wifipaf = false
2927
}
3028

3129
if (chip_device_platform == "auto") {
@@ -128,6 +126,14 @@ declare_args() {
128126
chip_device_config_enable_joint_fabric = false
129127
}
130128

129+
declare_args() {
130+
# Include wifi-paf to commission the device or not
131+
# This is a feature of Wi-Fi spec that it can be enabled if wifi is enabled
132+
# and the supplicant can support.
133+
chip_device_config_enable_wifipaf =
134+
chip_enable_wifi && chip_device_platform == "linux"
135+
}
136+
131137
declare_args() {
132138
# Enable subscription resumption after timeout - separate configuration for power use measurement
133139
chip_subscription_timeout_resumption = chip_persist_subscriptions

src/transport/raw/WiFiPAF.cpp

Lines changed: 0 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -40,29 +40,6 @@ CHIP_ERROR WiFiPAFBase::Init(const WiFiPAFListenParameters & param)
4040
mWiFiPAFLayer = DeviceLayer::ConnectivityMgr().GetWiFiPAF();
4141
SetWiFiPAFLayerTransportToSelf();
4242
mWiFiPAFLayer->SetWiFiPAFState(State::kInitialized);
43-
44-
if (!DeviceLayer::ConnectivityMgrImpl().IsWiFiManagementStarted())
45-
{
46-
ChipLogError(Inet, "Wi-Fi Management has not started, do it now.");
47-
static constexpr useconds_t kWiFiStartCheckTimeUsec = WIFI_START_CHECK_TIME_USEC;
48-
static constexpr uint8_t kWiFiStartCheckAttempts = WIFI_START_CHECK_ATTEMPTS;
49-
DeviceLayer::ConnectivityMgrImpl().StartWiFiManagement();
50-
{
51-
for (int cnt = 0; cnt < kWiFiStartCheckAttempts; cnt++)
52-
{
53-
if (DeviceLayer::ConnectivityMgrImpl().IsWiFiManagementStarted())
54-
{
55-
break;
56-
}
57-
usleep(kWiFiStartCheckTimeUsec);
58-
}
59-
}
60-
if (!DeviceLayer::ConnectivityMgrImpl().IsWiFiManagementStarted())
61-
{
62-
ChipLogError(Inet, "Wi-Fi Management taking too long to start - device configuration will be reset.");
63-
}
64-
ChipLogProgress(Inet, "Wi-Fi Management is started");
65-
}
6643
return CHIP_NO_ERROR;
6744
}
6845

0 commit comments

Comments
 (0)