bearermanagement/S60MCPR/src/s60mcprstates.cpp
branchRCL_3
changeset 11 68f0c7cd80ec
parent 10 ea6e024ea6f9
child 16 c45d4fe2ff0a
--- a/bearermanagement/S60MCPR/src/s60mcprstates.cpp	Fri Mar 12 15:44:18 2010 +0200
+++ b/bearermanagement/S60MCPR/src/s60mcprstates.cpp	Mon Mar 15 12:42:11 2010 +0200
@@ -180,7 +180,28 @@
                                                                 startingSP->RecipientId()).CRef() );
     }
 
+// -----------------------------------------------------------------------------
+// TRequestReConnectToCurrentSP::DoL
+// -----------------------------------------------------------------------------
+//
+DEFINE_SMELEMENT( TRequestReConnectToCurrentSP, NetStateMachine::MStateTransition, TContext )
+void TRequestReConnectToCurrentSP::DoL() // codescanner::leave
+    {
+    __ASSERT_DEBUG(iContext.iNodeActivity, User::Panic(KS60MCprPanic, KPanicNoActivity));
+    S60MCPRLOGSTRING1("S60MCPR<%x>::TRequestReConnectToCurrentSP::DoL()",(TInt*)&iContext.Node())
+    RNodeInterface* currentSP = iContext.Node().ServiceProvider();
 
+    // There MUST be a service provider
+    __ASSERT_DEBUG( currentSP != NULL, User::Panic(KS60MCprPanic, KPanicNoServiceProvider));
+    
+    // Diagnostic - there must be a data client or we cannot be here
+    __ASSERT_DEBUG(iContext.Node().GetFirstClient<TDefaultClientMatchPolicy>(TClientType(TCFClientType::EData)),
+                   User::Panic(KS60MCprPanic, KPanicNoDataClient));    
+    
+    iContext.iNodeActivity->PostRequestTo( iContext.NodeId(),
+                                           TCFMcpr::TReConnect( currentSP->RecipientId(), 
+                                                                currentSP->RecipientId()).CRef() );
+    }
 // -----------------------------------------------------------------------------
 // TProcessError::DoL
 // -----------------------------------------------------------------------------