3434#include < setup_payload/QRCodeSetupPayloadGenerator.h>
3535#include < setup_payload/SetupPayload.h>
3636
37+ #ifdef CONFIG_CHIP_NFC_COMMISSIONING_MODE_POWERED
3738#include < nfc/ndef/uri_msg.h>
3839#include < nfc/ndef/uri_rec.h>
40+ #endif
3941
4042#include < algorithm>
4143#include < cstring>
@@ -48,6 +50,7 @@ namespace chip {
4850namespace DeviceLayer {
4951namespace Internal {
5052
53+ #ifdef CONFIG_CHIP_NFC_COMMISSIONING_MODE_POWERED
5154namespace {
5255
5356// Matter Application Identifier (NTL, spec 4.21)
@@ -149,14 +152,17 @@ class SessionLock
149152};
150153
151154} // namespace
155+ #endif // CONFIG_CHIP_NFC_COMMISSIONING_MODE_POWERED
152156
153157Global<NFCCommissioningManagerImpl> NFCCommissioningManagerImpl::sInstance ;
154158
155159CHIP_ERROR NFCCommissioningManagerImpl::_Init ()
156160{
157161 ChipLogDetail (DeviceLayer, " Initializing NFC Commissioning Manager" );
158162
163+ #ifdef CONFIG_CHIP_NFC_COMMISSIONING_MODE_POWERED
159164 ResetSession ();
165+ #endif
160166 ReturnErrorOnFailure (PlatformMgr ().AddEventHandler (OnPlatformEvent, reinterpret_cast <intptr_t >(this )));
161167
162168 return CHIP_NO_ERROR ;
@@ -170,17 +176,21 @@ void NFCCommissioningManagerImpl::OnPlatformEvent(const ChipDeviceEvent * event,
170176 {
171177 case DeviceEventType::kServerReady :
172178 case DeviceEventType::kDnssdInitialized :
179+ #ifdef CONFIG_CHIP_NFC_COMMISSIONING_MODE_POWERED
173180 self->StartNfcCommissioning ();
181+ #endif
174182 break ;
175183 case DeviceEventType::kCommissioningComplete :
176184 self->HandleCommissioningComplete ();
177185 break ;
186+ #ifdef CONFIG_CHIP_NFC_COMMISSIONING_MODE_POWERED
178187 case DeviceEventType::kFailSafeTimerExpired :
179188 self->HandleFailSafeTimerExpired ();
180189 break ;
181190 case DeviceEventType::kSecureSessionEstablished :
182191 self->HandleSecureSessionEstablished (event);
183192 break ;
193+ #endif
184194 default :
185195 break ;
186196 }
@@ -195,6 +205,9 @@ void NFCCommissioningManagerImpl::ScheduledStartNfcCommissioning(intptr_t arg)
195205
196206void NFCCommissioningManagerImpl::StartNfcCommissioning ()
197207{
208+ #ifdef CONFIG_CHIP_NFC_COMMISSIONING_MODE_UNPOWERED
209+ return ;
210+ #else
198211 VerifyOrReturn (!mRawIsoDepStarted );
199212
200213 if (Server::GetInstance ().GetFabricTable ().FabricCount () != 0 )
@@ -208,16 +221,20 @@ void NFCCommissioningManagerImpl::StartNfcCommissioning()
208221 {
209222 ChipLogError (DeviceLayer, " Failed to start NFC tag emulation for commissioning" );
210223 }
224+ #endif // CONFIG_CHIP_NFC_COMMISSIONING_MODE_UNPOWERED
211225}
212226
213227void NFCCommissioningManagerImpl::HandleCommissioningComplete ()
214228{
229+ #ifdef CONFIG_CHIP_NFC_COMMISSIONING_MODE_POWERED
215230 mBlockMatterAidSelection = false ;
216231 mNfcEmulationPausedForFailSafe = false ;
232+ #endif
217233 ChipLogProgress (DeviceLayer, " Commissioning complete: stopping NFC commissioning" );
218234 NFCCommissioningMgr ().Shutdown ();
219235}
220236
237+ #ifdef CONFIG_CHIP_NFC_COMMISSIONING_MODE_POWERED
221238void NFCCommissioningManagerImpl::HandleFailSafeTimerExpired ()
222239{
223240 VerifyOrReturn (mBlockMatterAidSelection || mNfcEmulationPausedForFailSafe );
@@ -255,9 +272,14 @@ void NFCCommissioningManagerImpl::HandleSecureSessionEstablished(const ChipDevic
255272 ChipLogProgress (DeviceLayer,
256273 " NFC PASE session established: blocking NFC commissioning until fail-safe completes or commissioning succeeds" );
257274}
275+ #endif // CONFIG_CHIP_NFC_COMMISSIONING_MODE_POWERED
258276
259277CHIP_ERROR NFCCommissioningManagerImpl::ConfigureOnboardingPayload ()
260278{
279+ #ifdef CONFIG_CHIP_NFC_COMMISSIONING_MODE_UNPOWERED
280+ ChipLogDetail (DeviceLayer, " Unpowered NFC commissioning: skipping on-chip tag setup" );
281+ return CHIP_NO_ERROR ;
282+ #else
261283 PayloadContents payload;
262284 payload.version = 0 ;
263285 payload.rendezvousInformation .SetValue (RendezvousInformationFlags (RendezvousInformationFlag::kNFC ));
@@ -283,8 +305,11 @@ CHIP_ERROR NFCCommissioningManagerImpl::ConfigureOnboardingPayload()
283305 TEMPORARY_RETURN_IGNORED PlatformMgr ().ScheduleWork (ScheduledStartNfcCommissioning, reinterpret_cast <intptr_t >(this ));
284306
285307 return CHIP_NO_ERROR ;
308+ #endif // CONFIG_CHIP_NFC_COMMISSIONING_MODE_UNPOWERED
286309}
287310
311+ #ifdef CONFIG_CHIP_NFC_COMMISSIONING_MODE_POWERED
312+
288313void NFCCommissioningManagerImpl::StartRawIsoDepTagEmulation ()
289314{
290315 VerifyOrReturn (!mRawIsoDepStarted );
@@ -332,14 +357,6 @@ bool NFCCommissioningManagerImpl::IsSessionIdle() const
332357 mApduFragmentCount == 0 && !mAwaitingApplicationResponse && mOutgoingMessage .IsNull ();
333358}
334359
335- void NFCCommissioningManagerImpl::_Shutdown ()
336- {
337- ChipLogDetail (DeviceLayer, " Shutting down NFC Commissioning Manager" );
338- PlatformMgr ().RemoveEventHandler (OnPlatformEvent, reinterpret_cast <intptr_t >(this ));
339- StopRawIsoDepTagEmulation ();
340- ResetSession (/* notifyAborted = */ true );
341- }
342-
343360void NFCCommissioningManagerImpl::ResetSession (bool notifyAborted)
344361{
345362 SessionLock lock;
@@ -1095,6 +1112,38 @@ void NFCCommissioningManagerImpl::DeliverIncomingMessage()
10951112 mAwaitingApplicationResponse = true ;
10961113}
10971114
1115+ #else // CONFIG_CHIP_NFC_COMMISSIONING_MODE_POWERED
1116+
1117+ void NFCCommissioningManagerImpl::SetNFCBase (Transport::NFCBase * nfcBase)
1118+ {
1119+ (void ) nfcBase;
1120+ }
1121+
1122+ bool NFCCommissioningManagerImpl::CanSendToPeer (const Transport::PeerAddress & address)
1123+ {
1124+ (void ) address;
1125+ return false ;
1126+ }
1127+
1128+ CHIP_ERROR NFCCommissioningManagerImpl::SendToNfcTag (const Transport::PeerAddress & address, System::PacketBufferHandle && msgBuf)
1129+ {
1130+ (void ) address;
1131+ (void ) msgBuf;
1132+ return CHIP_ERROR_INCORRECT_STATE ;
1133+ }
1134+
1135+ #endif // CONFIG_CHIP_NFC_COMMISSIONING_MODE_POWERED
1136+
1137+ void NFCCommissioningManagerImpl::_Shutdown ()
1138+ {
1139+ ChipLogDetail (DeviceLayer, " Shutting down NFC Commissioning Manager" );
1140+ PlatformMgr ().RemoveEventHandler (OnPlatformEvent, reinterpret_cast <intptr_t >(this ));
1141+ #ifdef CONFIG_CHIP_NFC_COMMISSIONING_MODE_POWERED
1142+ StopRawIsoDepTagEmulation ();
1143+ ResetSession (/* notifyAborted = */ true );
1144+ #endif
1145+ }
1146+
10981147} // namespace Internal
10991148} // namespace DeviceLayer
11001149} // namespace chip
0 commit comments