Skip to content

Commit

Permalink
Add PAFTP implementation
Browse files Browse the repository at this point in the history
Signed-off-by: Lo,Chin-Ran <[email protected]>
  • Loading branch information
crlonxp committed Jan 10, 2025
1 parent a0d084c commit c8702ef
Show file tree
Hide file tree
Showing 24 changed files with 3,078 additions and 110 deletions.
13 changes: 2 additions & 11 deletions src/app/server/CommissioningWindowManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -73,17 +73,8 @@ void CommissioningWindowManager::OnPlatformEvent(const DeviceLayer::ChipDeviceEv
mServer->GetBleLayerObject()->CloseAllBleConnections();
#endif
#if CHIP_DEVICE_CONFIG_ENABLE_WIFIPAF
chip::WiFiPAF::WiFiPAFLayer::GetWiFiPAFLayer()->Shutdown([](uint32_t id, WiFiPAF::WiFiPAFSession::PAFRole role) {
switch (role)
{
case WiFiPAF::WiFiPAFSession::PAFRole::publisher:
DeviceLayer::ConnectivityMgr().WiFiPAFCancelPublish(id);
break;
case WiFiPAF::WiFiPAFSession::PAFRole::subscriber:
DeviceLayer::ConnectivityMgr().WiFiPAFCancelSubscribe(id);
break;
}
});
chip::WiFiPAF::WiFiPAFLayer::GetWiFiPAFLayer()->Shutdown(
[](uint32_t id, WiFiPAF::WiFiPafRole role) { DeviceLayer::ConnectivityMgr().WiFiPAFShutdown(id, role); });
#endif
}
else if (event->Type == DeviceLayer::DeviceEventType::kFailSafeTimerExpired)
Expand Down
19 changes: 5 additions & 14 deletions src/controller/CHIPDeviceController.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -568,17 +568,8 @@ void DeviceCommissioner::Shutdown()
}
#endif // CHIP_DEVICE_CONFIG_ENABLE_COMMISSIONER_DISCOVERY
#if CHIP_DEVICE_CONFIG_ENABLE_WIFIPAF
WiFiPAF::WiFiPAFLayer::GetWiFiPAFLayer()->Shutdown([](uint32_t id, WiFiPAF::WiFiPAFSession::PAFRole role) {
switch (role)
{
case WiFiPAF::WiFiPAFSession::PAFRole::publisher:
DeviceLayer::ConnectivityMgr().WiFiPAFCancelPublish(id);
break;
case WiFiPAF::WiFiPAFSession::PAFRole::subscriber:
DeviceLayer::ConnectivityMgr().WiFiPAFCancelSubscribe(id);
break;
}
});
WiFiPAF::WiFiPAFLayer::GetWiFiPAFLayer()->Shutdown(
[](uint32_t id, WiFiPAF::WiFiPafRole role) { DeviceLayer::ConnectivityMgr().WiFiPAFShutdown(id, role); });
#endif

// Release everything from the commissionee device pool here.
Expand Down Expand Up @@ -715,13 +706,13 @@ CHIP_ERROR DeviceCommissioner::EstablishPASEConnection(NodeId remoteDeviceId, co
#if CHIP_DEVICE_CONFIG_ENABLE_WIFIPAF
static void StopSignalHandler(int signum)
{
WiFiPAF::WiFiPAFLayer::GetWiFiPAFLayer()->Shutdown([](uint32_t id, WiFiPAF::WiFiPAFSession::PAFRole role) {
WiFiPAF::WiFiPAFLayer::GetWiFiPAFLayer()->Shutdown([](uint32_t id, WiFiPAF::WiFiPafRole role) {
switch (role)
{
case WiFiPAF::WiFiPAFSession::PAFRole::publisher:
case WiFiPAF::WiFiPafRole::kWiFiPafRole_Publisher:
DeviceLayer::ConnectivityMgr().WiFiPAFCancelPublish(id);
break;
case WiFiPAF::WiFiPAFSession::PAFRole::subscriber:
case WiFiPAF::WiFiPafRole::kWiFiPafRole_Subscriber:
DeviceLayer::ConnectivityMgr().WiFiPAFCancelSubscribe(id);
break;
}
Expand Down
10 changes: 5 additions & 5 deletions src/include/platform/CHIPDeviceEvent.h
Original file line number Diff line number Diff line change
Expand Up @@ -282,9 +282,10 @@ enum InternalEventTypes
*/
kCHIPoBLEConnectionError,
kCHIPoBLENotifyConfirm,
kCHIPoWiFiPAFWriteReceived,
kCHIPoWiFiPAFReceived,
kCHIPoWiFiPAFConnected,
kCHIPoWiFiPAFCancelConnect,
kCHIPoWiFiPAFWriteDone,
};

static_assert(kEventTypeNotSet == 0, "kEventTypeNotSet must be defined as 0");
Expand Down Expand Up @@ -388,6 +389,7 @@ typedef void (*AsyncWorkFunct)(intptr_t arg);
#include <system/SystemEvent.h>
#include <system/SystemLayer.h>
#include <system/SystemPacketBuffer.h>
#include <wifipaf/WiFiPAFRole.h>

namespace chip {
namespace DeviceLayer {
Expand Down Expand Up @@ -498,10 +500,8 @@ struct ChipDeviceEvent final
struct
{
chip::System::PacketBuffer * Data;
uint32_t id;
uint32_t peer_id;
uint8_t peer_addr[6];
} CHIPoWiFiPAFWriteReceived;
chip::WiFiPAF::WiFiPAFSession SessionInfo;
} CHIPoWiFiPAFReceived;
#endif
struct
{
Expand Down
6 changes: 6 additions & 0 deletions src/include/platform/ConnectivityManager.h
Original file line number Diff line number Diff line change
Expand Up @@ -189,6 +189,7 @@ class ConnectivityManager
CHIP_ERROR WiFiPAFSend(const WiFiPAF::WiFiPAFSession & TxInfo, System::PacketBufferHandle && msgBuf);
WiFiPAF::WiFiPAFLayer * GetWiFiPAF();
void WiFiPafSetApFreq(const uint16_t freq);
CHIP_ERROR WiFiPAFShutdown(uint32_t id, WiFiPAF::WiFiPafRole role);
#endif

// WiFi AP methods
Expand Down Expand Up @@ -472,6 +473,11 @@ inline CHIP_ERROR ConnectivityManager::WiFiPAFSend(const WiFiPAF::WiFiPAFSession
{
return static_cast<ImplClass *>(this)->_WiFiPAFSend(TxInfo, std::move(msgBuf));
}

inline CHIP_ERROR ConnectivityManager::WiFiPAFShutdown(uint32_t id, WiFiPAF::WiFiPafRole role)
{
return static_cast<ImplClass *>(this)->_WiFiPAFShutdown(id, role);
}
#endif

inline bool ConnectivityManager::IsThreadEnabled()
Expand Down
13 changes: 2 additions & 11 deletions src/include/platform/internal/GenericPlatformManagerImpl.ipp
Original file line number Diff line number Diff line change
Expand Up @@ -153,17 +153,8 @@ void GenericPlatformManagerImpl<ImplClass>::_Shutdown()

#if CHIP_DEVICE_CONFIG_ENABLE_WIFIPAF
ChipLogProgress(DeviceLayer, "WiFi-PAF Layer shutdown");
WiFiPAF::WiFiPAFLayer::GetWiFiPAFLayer()->Shutdown([](uint32_t id, WiFiPAF::WiFiPAFSession::PAFRole role) {
switch (role)
{
case WiFiPAF::WiFiPAFSession::PAFRole::publisher:
DeviceLayer::ConnectivityMgr().WiFiPAFCancelPublish(id);
break;
case WiFiPAF::WiFiPAFSession::PAFRole::subscriber:
DeviceLayer::ConnectivityMgr().WiFiPAFCancelSubscribe(id);
break;
}
});
WiFiPAF::WiFiPAFLayer::GetWiFiPAFLayer()->Shutdown(
[](uint32_t id, WiFiPAF::WiFiPafRole role) { DeviceLayer::ConnectivityMgr().WiFiPAFShutdown(id, role); });
#endif

ChipLogProgress(DeviceLayer, "System Layer shutdown");
Expand Down
5 changes: 5 additions & 0 deletions src/lib/support/logging/Constants.h
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@ enum LogModule
kLogModule_CASESessionManager,
kLogModule_ICD,
kLogModule_FabricSync,
kLogModule_WiFiPAF,

kLogModule_Max
};
Expand Down Expand Up @@ -236,6 +237,10 @@ enum LogModule
#define CHIP_CONFIG_LOG_MODULE_FabricSync 1
#endif

#ifndef CHIP_CONFIG_LOG_MODULE_WiFiPAF
#define CHIP_CONFIG_LOG_MODULE_WiFiPAF 1
#endif

/**
* @enum LogCategory
*
Expand Down
1 change: 1 addition & 0 deletions src/lib/support/logging/TextOnlyLogging.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -151,6 +151,7 @@ static const char ModuleNames[kLogModule_Max][kMaxModuleNameLen + 1] = {
"CSM", // CASESessionManager
"ICD", // ICD
"FS", // FabricSync
"PAF", // WiFiPAF
};

} // namespace
Expand Down
75 changes: 50 additions & 25 deletions src/platform/Linux/ConnectivityManagerImpl.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
*
* Copyright (c) 2020-2022 Project CHIP Authors
* Copyright (c) 2019 Nest Labs, Inc.
* Copyright (c) 2025 NXP
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
Expand Down Expand Up @@ -145,6 +146,7 @@ CHIP_ERROR ConnectivityManagerImpl::_Init()
#endif
#if CHIP_DEVICE_CONFIG_ENABLE_WIFIPAF
pmWiFiPAF = WiFiPAF::WiFiPAFLayer::GetWiFiPAFLayer();
pmWiFiPAF->Init(&DeviceLayer::SystemLayer());
#endif

return CHIP_NO_ERROR;
Expand All @@ -159,21 +161,18 @@ void ConnectivityManagerImpl::_OnPlatformEvent(const ChipDeviceEvent * event)
#if CHIP_DEVICE_CONFIG_ENABLE_WIFIPAF
switch (event->Type)
{
case DeviceEventType::kCHIPoWiFiPAFWriteReceived: {
ChipLogProgress(DeviceLayer, "WiFi-PAF: event: kCHIPoWiFiPAFWriteReceived");
WiFiPAF::WiFiPAFSession RxInfo{ .id = event->CHIPoWiFiPAFWriteReceived.id,
.peer_id = event->CHIPoWiFiPAFWriteReceived.peer_id };
memcpy(RxInfo.peer_addr, event->CHIPoWiFiPAFWriteReceived.peer_addr, sizeof(uint8_t) * 6);
_GetWiFiPAF()->OnWiFiPAFMessageReceived(RxInfo, System::PacketBufferHandle::Adopt(event->CHIPoWiFiPAFWriteReceived.Data));
case DeviceEventType::kCHIPoWiFiPAFReceived: {
ChipLogProgress(DeviceLayer, "WiFi-PAF: event: kCHIPoWiFiPAFReceived");
WiFiPAF::WiFiPAFSession RxInfo;
memcpy(&RxInfo, &event->CHIPoWiFiPAFReceived.SessionInfo, sizeof(WiFiPAF::WiFiPAFSession));
_GetWiFiPAF()->OnWiFiPAFMessageReceived(RxInfo, System::PacketBufferHandle::Adopt(event->CHIPoWiFiPAFReceived.Data));
break;
}
case DeviceEventType::kCHIPoWiFiPAFConnected: {
ChipLogProgress(DeviceLayer, "WiFi-PAF: event: kCHIPoWiFiPAFConnected");
if (mOnPafSubscribeComplete != nullptr)
{
mOnPafSubscribeComplete(mAppState);
mOnPafSubscribeComplete = nullptr;
}
WiFiPAF::WiFiPAFSession SessionInfo;
memcpy(&SessionInfo, &event->CHIPoWiFiPAFReceived.SessionInfo, sizeof(WiFiPAF::WiFiPAFSession));
_GetWiFiPAF()->HandleTransportConnectionInitiated(SessionInfo, mOnPafSubscribeComplete, mAppState, mOnPafSubscribeError);
break;
}
case DeviceEventType::kCHIPoWiFiPAFCancelConnect: {
Expand All @@ -185,6 +184,13 @@ void ConnectivityManagerImpl::_OnPlatformEvent(const ChipDeviceEvent * event)
}
break;
}
case DeviceEventType::kCHIPoWiFiPAFWriteDone: {
ChipLogProgress(DeviceLayer, "WiFi-PAF: event: kCHIPoWiFiPAFWriteDone");
WiFiPAF::WiFiPAFSession TxInfo;
memcpy(&TxInfo, &event->CHIPoWiFiPAFReceived.SessionInfo, sizeof(WiFiPAF::WiFiPAFSession));
_GetWiFiPAF()->HandleWriteConfirmed(TxInfo);
break;
}
}

#endif // CHIP_DEVICE_CONFIG_ENABLE_WIFIPAF
Expand Down Expand Up @@ -1458,16 +1464,15 @@ void ConnectivityManagerImpl::OnDiscoveryResult(GVariant * discov_info)
peer_addr[3], peer_addr[4], peer_addr[5]);
ChipLogProgress(DeviceLayer, "\t DevInfo: %x", pPublishSSI->DevInfo);

pPafInfo->role = WiFiPAF::WiFiPAFSession::subscriber;
pPafInfo->role = WiFiPAF::WiFiPafRole::kWiFiPafRole_Subscriber;
pPafInfo->id = subscribe_id;
pPafInfo->peer_id = peer_publish_id;
memcpy(pPafInfo->peer_addr, peer_addr, sizeof(uint8_t) * 6);

/*
Indicate the connection event
*/
ChipDeviceEvent event;
event.Type = DeviceEventType::kCHIPoWiFiPAFConnected;
ChipDeviceEvent event{ .Type = DeviceEventType::kCHIPoWiFiPAFConnected };
memcpy(&event.CHIPoWiFiPAFReceived.SessionInfo, pPafInfo, sizeof(chip::WiFiPAF::WiFiPAFSession));
PlatformMgr().PostEventOrDie(&event);
}

Expand Down Expand Up @@ -1535,7 +1540,7 @@ void ConnectivityManagerImpl::OnReplied(GVariant * reply_info)
ChipLogError(DeviceLayer, "WiFi-PAF: OnReplied, no valid session with publish_id: %d", publish_id);
return;
}
if ((pPafInfo->role = WiFiPAF::WiFiPAFSession::publisher) && (pPafInfo->peer_id == peer_subscribe_id) &&
if ((pPafInfo->role == WiFiPAF::WiFiPafRole::kWiFiPafRole_Publisher) && (pPafInfo->peer_id == peer_subscribe_id) &&
!memcmp(pPafInfo->peer_addr, peer_addr, sizeof(uint8_t) * 6))
{
ChipLogError(DeviceLayer, "WiFi-PAF: OnReplied, reentrance, publish_id: %u ", publish_id);
Expand All @@ -1548,13 +1553,13 @@ void ConnectivityManagerImpl::OnReplied(GVariant * reply_info)
ChipLogProgress(DeviceLayer, "\t (publish_id, peer_subscribe_id): (%u, %u)", publish_id, peer_subscribe_id);
ChipLogProgress(DeviceLayer, "\t peer_addr: [%02x:%02x:%02x:%02x:%02x:%02x]", peer_addr[0], peer_addr[1], peer_addr[2],
peer_addr[3], peer_addr[4], peer_addr[5]);

ChipLogProgress(DeviceLayer, "\t DevInfo: %x", pPublishSSI->DevInfo);

pPafInfo->role = WiFiPAF::WiFiPAFSession::publisher;
pPafInfo->role = WiFiPAF::WiFiPafRole::kWiFiPafRole_Publisher;
pPafInfo->id = publish_id;
pPafInfo->peer_id = peer_subscribe_id;
memcpy(pPafInfo->peer_addr, peer_addr, sizeof(uint8_t) * 6);
_GetWiFiPAF()->HandleTransportConnectionInitiated(*pPafInfo);
}

void ConnectivityManagerImpl::OnNanReceive(GVariant * obj)
Expand Down Expand Up @@ -1596,10 +1601,9 @@ void ConnectivityManagerImpl::OnNanReceive(GVariant * obj)
buf = System::PacketBufferHandle::NewWithData(rxbuf, bufferLen);

// Post an event to the Chip queue to deliver the data into the Chip stack.
ChipDeviceEvent event{ .Type = DeviceEventType::kCHIPoWiFiPAFWriteReceived,
.CHIPoWiFiPAFWriteReceived = {
.Data = std::move(buf).UnsafeRelease(), .id = RxInfo.id, .peer_id = RxInfo.peer_id } };
memcpy(event.CHIPoWiFiPAFWriteReceived.peer_addr, RxInfo.peer_addr, sizeof(uint8_t) * 6);
ChipDeviceEvent event{ .Type = DeviceEventType::kCHIPoWiFiPAFReceived,
.CHIPoWiFiPAFReceived = { .Data = std::move(buf).UnsafeRelease() } };
memcpy(&event.CHIPoWiFiPAFReceived.SessionInfo, &RxInfo, sizeof(WiFiPAF::WiFiPAFSession));
PlatformMgr().PostEventOrDie(&event);
}

Expand Down Expand Up @@ -1676,7 +1680,7 @@ CHIP_ERROR ConnectivityManagerImpl::_WiFiPAFSubscribe(const SetupDiscriminator &
if (pPafInfo != nullptr)
{
pPafInfo->id = subscribe_id;
pPafInfo->role = WiFiPAF::WiFiPAFSession::subscriber;
pPafInfo->role = WiFiPAF::WiFiPafRole::kWiFiPafRole_Subscriber;
}

g_signal_connect(mWpaSupplicant.iface, "nandiscovery-result",
Expand Down Expand Up @@ -1766,12 +1770,33 @@ CHIP_ERROR ConnectivityManagerImpl::_WiFiPAFSend(const WiFiPAF::WiFiPAFSession &
g_variant_builder_add(&builder, "{sv}", "peer_addr", g_variant_new_string(peer_mac));
g_variant_builder_add(&builder, "{sv}", "ssi", ssi_array_variant);
args = g_variant_builder_end(&builder);
wpa_fi_w1_wpa_supplicant1_interface_call_nantransmit_sync(mWpaSupplicant.iface, args, nullptr, &err.GetReceiver());

gboolean result =
wpa_fi_w1_wpa_supplicant1_interface_call_nantransmit_sync(mWpaSupplicant.iface, args, nullptr, &err.GetReceiver());
if (!result)
{
ChipLogError(DeviceLayer, "WiFi-PAF: Failed to send message: %s", err == nullptr ? "unknown error" : err->message);
}
ChipLogProgress(Controller, "WiFi-PAF: Outbound message (%lu) done", msgBuf->DataLength());

// Post an event to the Chip queue to deliver the data into the Chip stack.
ChipDeviceEvent event{ .Type = DeviceEventType::kCHIPoWiFiPAFWriteDone };
memcpy(&event.CHIPoWiFiPAFReceived.SessionInfo, &TxInfo, sizeof(chip::WiFiPAF::WiFiPAFSession));
PlatformMgr().PostEventOrDie(&event);
return ret;
}

CHIP_ERROR ConnectivityManagerImpl::_WiFiPAFShutdown(uint32_t id, WiFiPAF::WiFiPafRole role)
{
switch (role)
{
case WiFiPAF::WiFiPafRole::kWiFiPafRole_Publisher:
return _WiFiPAFCancelPublish(id);
case WiFiPAF::WiFiPafRole::kWiFiPafRole_Subscriber:
return _WiFiPAFCancelSubscribe(id);
}
return CHIP_ERROR_INTERNAL;
}

#endif // CHIP_DEVICE_CONFIG_ENABLE_WIFIPAF

void ConnectivityManagerImpl::_ConnectWiFiNetworkAsyncCallback(GObject * sourceObject, GAsyncResult * res)
Expand Down
3 changes: 3 additions & 0 deletions src/platform/Linux/ConnectivityManagerImpl.h
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@

#include <mutex>
#if CHIP_DEVICE_CONFIG_ENABLE_WIFIPAF
#include <wifipaf/WiFiPAFEndPoint.h>
#include <wifipaf/WiFiPAFLayer.h>
#endif
#endif
Expand Down Expand Up @@ -153,6 +154,7 @@ class ConnectivityManagerImpl final : public ConnectivityManager,
CHIP_ERROR _WiFiPAFSend(const WiFiPAF::WiFiPAFSession & TxInfo, chip::System::PacketBufferHandle && msgBuf);
WiFiPAF::WiFiPAFLayer * _GetWiFiPAF();
void _WiFiPafSetApFreq(const uint16_t freq) { mApFreq = freq; }
CHIP_ERROR _WiFiPAFShutdown(uint32_t id, WiFiPAF::WiFiPafRole role);
#endif

void PostNetworkConnect();
Expand Down Expand Up @@ -236,6 +238,7 @@ class ConnectivityManagerImpl final : public ConnectivityManager,
OnConnectionCompleteFunct mOnPafSubscribeComplete;
OnConnectionErrorFunct mOnPafSubscribeError;
WiFiPAF::WiFiPAFLayer * pmWiFiPAF;
WiFiPAF::WiFiPAFEndPoint mWiFiPAFEndPoint;
void * mAppState;
uint16_t mApFreq;
CHIP_ERROR _WiFiPAFPublish(WiFiPAFAdvertiseParam & args);
Expand Down
6 changes: 1 addition & 5 deletions src/transport/SecureSession.h
Original file line number Diff line number Diff line change
Expand Up @@ -158,11 +158,7 @@ class SecureSession : public Session, public ReferenceCounted<SecureSession, Sec

bool IsCommissioningSession() const override;

bool AllowsMRP() const override
{
return ((GetPeerAddress().GetTransportType() == Transport::Type::kUdp) ||
(GetPeerAddress().GetTransportType() == Transport::Type::kWiFiPAF));
}
bool AllowsMRP() const override { return (GetPeerAddress().GetTransportType() == Transport::Type::kUdp); }

bool AllowsLargePayload() const override { return GetPeerAddress().GetTransportType() == Transport::Type::kTcp; }

Expand Down
6 changes: 1 addition & 5 deletions src/transport/UnauthenticatedSessionTable.h
Original file line number Diff line number Diff line change
Expand Up @@ -84,11 +84,7 @@ class UnauthenticatedSession : public Session, public ReferenceCounted<Unauthent
return Access::SubjectDescriptor(); // return an empty ISD for unauthenticated session.
}

bool AllowsMRP() const override
{
return ((GetPeerAddress().GetTransportType() == Transport::Type::kUdp) ||
(GetPeerAddress().GetTransportType() == Transport::Type::kWiFiPAF));
}
bool AllowsMRP() const override { return (GetPeerAddress().GetTransportType() == Transport::Type::kUdp); }

bool AllowsLargePayload() const override { return GetPeerAddress().GetTransportType() == Transport::Type::kTcp; }

Expand Down
10 changes: 9 additions & 1 deletion src/transport/raw/WiFiPAF.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ CHIP_ERROR WiFiPAFBase::SendMessage(const Transport::PeerAddress & address, Syst
ChipLogError(Inet, "WiFi-PAF: No valid session whose nodeId: %lu", address.GetRemoteId());
return CHIP_ERROR_INCORRECT_STATE;
}
DeviceLayer::ConnectivityMgr().WiFiPAFSend(*pTxInfo, std::move(msgBuf));
mWiFiPAFLayer->SendMessage(*pTxInfo, std::move(msgBuf));

return CHIP_NO_ERROR;
}
Expand Down Expand Up @@ -124,6 +124,14 @@ void WiFiPAFBase::OnWiFiPAFMessageReceived(chip::WiFiPAF::WiFiPAFSession & RxInf
HandleMessageReceived(Transport::PeerAddress(Transport::Type::kWiFiPAF, pPafInfo->nodeId), std::move(buffer));
}

CHIP_ERROR WiFiPAFBase::WiFiPAFMessageSend(chip::WiFiPAF::WiFiPAFSession & TxInfo, System::PacketBufferHandle && msgBuf)
{
VerifyOrReturnError(mWiFiPAFLayer->GetWiFiPAFState() != chip::WiFiPAF::State::kNotReady, CHIP_ERROR_INCORRECT_STATE);
DeviceLayer::ConnectivityMgr().WiFiPAFSend(TxInfo, std::move(msgBuf));

return CHIP_NO_ERROR;
}

CHIP_ERROR WiFiPAFBase::SendAfterConnect(System::PacketBufferHandle && msg)
{
CHIP_ERROR err = CHIP_ERROR_NO_MEMORY;
Expand Down
Loading

0 comments on commit c8702ef

Please sign in to comment.