telephonyprotocols/pdplayer/src/PDPCPR.cpp
branchRCL_3
changeset 20 07a122eea281
parent 19 630d2f34d719
equal deleted inserted replaced
19:630d2f34d719 20:07a122eea281
    31 #include <etelmm.h>
    31 #include <etelmm.h>
    32 #include <etelpckt.h>
    32 #include <etelpckt.h>
    33 #include <comms-infras/ss_metaconnprov.h>
    33 #include <comms-infras/ss_metaconnprov.h>
    34 #include "PDPProvision.h"
    34 #include "PDPProvision.h"
    35 #include <etel.h>
    35 #include <etel.h>
       
    36 #include <networking/cfbearers.h>
    36 #include "pdpcpravailabilitylistener.h"
    37 #include "pdpcpravailabilitylistener.h"
    37 #include <comms-infras/ss_nodemessages.h>
    38 #include <comms-infras/ss_nodemessages.h>
       
    39 #include <networking/ipcpr_states.h>
    38 #include <comms-infras/linkmessages.h>
    40 #include <comms-infras/linkmessages.h>
    39 #include <elements/nm_interfaces.h>
    41 #include <elements/nm_interfaces.h>
    40 
       
    41 
       
    42 
       
    43 #ifdef SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
       
    44 #include <networking/cfbearers.h>
       
    45 #include <networking/ipcpr_states.h>
       
    46 #include <cs_genevent.h>
    42 #include <cs_genevent.h>
    47 #include <networking/etelbearers.h>
    43 #include <networking/etelbearers.h>
    48 #endif
       
    49 
    44 
    50 using namespace ESock;
    45 using namespace ESock;
    51 
    46 
    52 //-=========================================================
    47 //-=========================================================
    53 //
    48 //
    54 // CPDPConnectionProvider methods
    49 // CPDPConnectionProvider methods
    55 //
    50 //
    56 //-=========================================================	
    51 //-=========================================================	
    57 
    52 
    58 #ifdef SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
       
    59 namespace PDPCprLinkCharacteristicActivity
    53 namespace PDPCprLinkCharacteristicActivity
    60 {
    54 {
    61 DECLARE_DEFINE_NODEACTIVITY(ECFActivityParamRequest, PDPCprLinkCharacteristic, TCFScpr::TGetParamsRequest)
    55 DECLARE_DEFINE_NODEACTIVITY(ECFActivityParamRequest, PDPCprLinkCharacteristic, TCFScpr::TGetParamsRequest)
    62     NODEACTIVITY_ENTRY(MeshMachine::KNoTag, PDPCprStates::TUpdateBundleAndRespondWithRetrievedParams, PRStates::TAwaitingParamRequest, MeshMachine::TNoTag)
    56     NODEACTIVITY_ENTRY(MeshMachine::KNoTag, PDPCprStates::TUpdateBundleAndRespondWithRetrievedParams, PRStates::TAwaitingParamRequest, MeshMachine::TNoTag)
    63 NODEACTIVITY_END()
    57 NODEACTIVITY_END()
    71     FIRST_NODEACTIVITY_ENTRY(CoreNetStates::TAwaitingDataClientGoneDown, CoreNetStates::TNoTagOrNonDefault)
    65     FIRST_NODEACTIVITY_ENTRY(CoreNetStates::TAwaitingDataClientGoneDown, CoreNetStates::TNoTagOrNonDefault)
    72     LAST_NODEACTIVITY_ENTRY(MeshMachine::KNoTag, PRStates::TSendGoneDown)
    66     LAST_NODEACTIVITY_ENTRY(MeshMachine::KNoTag, PRStates::TSendGoneDown)
    73     LAST_NODEACTIVITY_ENTRY(CoreNetStates::KNonDefault, MeshMachine::TDoNothing)    
    67     LAST_NODEACTIVITY_ENTRY(CoreNetStates::KNonDefault, MeshMachine::TDoNothing)    
    74 NODEACTIVITY_END()
    68 NODEACTIVITY_END()
    75 }
    69 }
    76 #endif
       
    77 
    70 
    78 namespace PDPCprActivities
    71 namespace PDPCprActivities
    79 {
    72 {
    80 DEFINE_ACTIVITY_MAP(activityMap)
    73 DEFINE_ACTIVITY_MAP(activityMap)
    81 #ifdef SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
       
    82     ACTIVITY_MAP_ENTRY(PDPDataClientGoneDownActivity, PDPScprGoneDown)
    74     ACTIVITY_MAP_ENTRY(PDPDataClientGoneDownActivity, PDPScprGoneDown)
    83 	ACTIVITY_MAP_ENTRY(PDPCprLinkCharacteristicActivity, PDPCprLinkCharacteristic)
    75 	ACTIVITY_MAP_ENTRY(PDPCprLinkCharacteristicActivity, PDPCprLinkCharacteristic)
    84 #endif
       
    85 ACTIVITY_MAP_END_BASE(CprActivities, coreCprActivities)
    76 ACTIVITY_MAP_END_BASE(CprActivities, coreCprActivities)
    86 }
    77 }
       
    78 
    87 
    79 
    88 CPDPConnectionProvider* CPDPConnectionProvider::NewL(ESock::CConnectionProviderFactoryBase& aFactory)
    80 CPDPConnectionProvider* CPDPConnectionProvider::NewL(ESock::CConnectionProviderFactoryBase& aFactory)
    89     {
    81     {
    90     CPDPConnectionProvider* provider = new (ELeave) CPDPConnectionProvider(aFactory);
    82     CPDPConnectionProvider* provider = new (ELeave) CPDPConnectionProvider(aFactory);
    91     CleanupStack::PushL(provider);
    83     CleanupStack::PushL(provider);
    92     provider->ConstructL();
    84     provider->ConstructL();
    93     CleanupStack::Pop(provider);
    85     CleanupStack::Pop(provider);
    94 	return provider;
    86 	return provider;
    95     }        
    87     }        
    96 
    88 
       
    89 
       
    90 void CPDPConnectionProvider::StartListener()
       
    91 /**
       
    92  * Start listening for dynamic caps or network mode changes.
       
    93  * @param None
       
    94  * @return void
       
    95  */
       
    96 	{
       
    97 	iDynamicCapsEventListener->NotifyDynamicCapsChange(this);
       
    98 	iNetworkModeEventListener->NotifyNetworkModeChange(this);
       
    99 	}
       
   100 
    97 void CPDPConnectionProvider::ConstructL()
   101 void CPDPConnectionProvider::ConstructL()
    98 /**
   102 /**
    99  * PDP Connection Provider Second Phase Constructor
   103  * PDP Connection Provider Second Phase Constructor
   100  * @param None
   104  * @param None
   101  * @return void
   105  * @return void
   102  */
   106  */
   103 	{
   107 	{
   104 	CCoreConnectionProvider::ConstructL();
   108 	CCoreConnectionProvider::ConstructL();
   105 	}
   109 	}
   106 
   110 
       
   111 void CPDPConnectionProvider::StopListener()
       
   112 /**
       
   113  * Start listening for dynamic caps or network mode changes.
       
   114  */
       
   115 	{
       
   116 	if(iDynamicCapsEventListener)
       
   117 		{
       
   118 		iDynamicCapsEventListener->Cancel();
       
   119 		}
       
   120 	if(iNetworkModeEventListener)
       
   121 		{
       
   122 		iNetworkModeEventListener->Cancel();
       
   123 		}
       
   124 	}
       
   125 
   107 CPDPConnectionProvider::CPDPConnectionProvider(ESock::CConnectionProviderFactoryBase& aFactory)
   126 CPDPConnectionProvider::CPDPConnectionProvider(ESock::CConnectionProviderFactoryBase& aFactory)
   108 	: CCoreConnectionProvider(aFactory, PDPCprActivities::activityMap::Self()),
   127 	: CCoreConnectionProvider(aFactory, PDPCprActivities::activityMap::Self())
   109 	  iDynamicCapsEventListener(NULL),
       
   110 	  iNetworkModeEventListener(NULL),
       
   111 	  iBearerType(0),
       
   112 	  iBearerSet(EFalse)
       
   113 	  
       
   114 /**
   128 /**
   115  * Construct PDP connection provider.
   129  * Construct PDP connection provider.
   116  */	
   130  */	
   117     {        
   131     {        
   118     LOG_NODE_CREATE(KESockConnectionTag, CPDPConnectionProvider);
   132     LOG_NODE_CREATE(KESockConnectionTag, CPDPConnectionProvider);
   122 /**
   136 /**
   123  * Destroy PDP connection provider.
   137  * Destroy PDP connection provider.
   124  */
   138  */
   125     {    
   139     {    
   126     LOG_NODE_DESTROY(KESockConnectionTag, CPDPConnectionProvider);
   140     LOG_NODE_DESTROY(KESockConnectionTag, CPDPConnectionProvider);
   127 #ifdef SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
       
   128     StopListener();
   141     StopListener();
   129 #endif
       
   130 	delete iDynamicCapsEventListener;
   142 	delete iDynamicCapsEventListener;
   131 	delete iNetworkModeEventListener;
   143 	delete iNetworkModeEventListener;
   132     }
   144     }
   133     
   145     
   134 void CPDPConnectionProvider::ReceivedL(const Messages::TRuntimeCtxId& aSender, const Messages::TNodeId& aRecipient, Messages::TSignatureBase& aMessage)
   146 void CPDPConnectionProvider::ReceivedL(const Messages::TRuntimeCtxId& aSender, const Messages::TNodeId& aRecipient, Messages::TSignatureBase& aMessage)
   144 /**
   156 /**
   145  * Update the parmeter set in case of modulation change and send TPlaneNotification message to
   157  * Update the parmeter set in case of modulation change and send TPlaneNotification message to
   146  * all the control client.
   158  * all the control client.
   147  */
   159  */
   148 	{
   160 	{
   149 #ifdef SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
       
   150 	//Update bearers.
   161 	//Update bearers.
   151 	UpdateBearer();
   162 	UpdateBearer();
   152 	
   163 	
   153 	//Send msg to all control clients
   164 	//Send msg to all control clients
   154 	CEventParamsChanged* eventChanged = CEventParamsChanged::NewL(KBearerInfo);
   165 	CEventParamsChanged* eventChanged = CEventParamsChanged::NewL(KBearerInfo);
   175 	while ((ctl = iter++) != NULL)
   186 	while ((ctl = iter++) != NULL)
   176 		{
   187 		{
   177 		msg.iRefCountOwnedNotification->Open();
   188 		msg.iRefCountOwnedNotification->Open();
   178 		ctl->PostMessage(this->NodeId(), msg);
   189 		ctl->PostMessage(this->NodeId(), msg);
   179 		}
   190 		}
   180 #endif
   191 
   181 	}
   192 	}
   182 
   193 
   183 #ifdef SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
   194 
   184 void CPDPConnectionProvider::StartListener()
       
   185 /**
       
   186  * Start listening for dynamic caps or network mode changes.
       
   187  * @param None
       
   188  * @return void
       
   189  */
       
   190     {
       
   191     iDynamicCapsEventListener->NotifyDynamicCapsChange(this);
       
   192     iNetworkModeEventListener->NotifyNetworkModeChange(this);
       
   193     }
       
   194 
       
   195 void CPDPConnectionProvider::StopListener()
       
   196 /**
       
   197  * Start listening for dynamic caps or network mode changes.
       
   198  */
       
   199     {
       
   200     if(iDynamicCapsEventListener)
       
   201         {
       
   202         iDynamicCapsEventListener->Cancel();
       
   203         }
       
   204     if(iNetworkModeEventListener)
       
   205         {
       
   206         iNetworkModeEventListener->Cancel();
       
   207         }
       
   208     }
       
   209 void CPDPConnectionProvider::UpdateBearer()
   195 void CPDPConnectionProvider::UpdateBearer()
   210 /**
   196 /**
   211  * Update bearer type based on the change of the dynamic caps or network mode.
   197  * Update bearer type based on the change of the dynamic caps or network mode.
   212  */
   198  */
   213 	{
   199 	{
   218 	
   204 	
   219 	//Resolve the bearer based on both dynamic caps and network mode
   205 	//Resolve the bearer based on both dynamic caps and network mode
   220 	iBearerType = Bearer(dynamicCaps, networkMode);
   206 	iBearerType = Bearer(dynamicCaps, networkMode);
   221 	iBearerSet = ETrue;
   207 	iBearerSet = ETrue;
   222 	}
   208 	}
       
   209 
   223 
   210 
   224 TUint32 CPDPConnectionProvider::Bearer(TUint aDynamicCaps, RMobilePhone::TMobilePhoneNetworkMode& aNetworkMode)
   211 TUint32 CPDPConnectionProvider::Bearer(TUint aDynamicCaps, RMobilePhone::TMobilePhoneNetworkMode& aNetworkMode)
   225 /**
   212 /**
   226  * Determine bearer based on dynamic caps and network mode.
   213  * Determine bearer based on dynamic caps and network mode.
   227  * @param aDynamicCaps a value of dynamic caps
   214  * @param aDynamicCaps a value of dynamic caps
   228  * @param aNetworkMode a value of network mode
   215  * @param aNetworkMode a value of network mode
   229  * @return Type of Bearer
   216  * @return Type of Bearer
   230  *
   217  *
   231  */
   218  */
   232 	{
   219 	{
       
   220 	
   233 	if ((aDynamicCaps & RPacketService::KCapsHSUPA) || (aDynamicCaps & RPacketService::KCapsHSDPA))
   221 	if ((aDynamicCaps & RPacketService::KCapsHSUPA) || (aDynamicCaps & RPacketService::KCapsHSDPA))
   234 		{
   222 		{
   235 		return KHsdpaBearer;
   223 		return KHsdpaBearer;
   236 		}
   224 		}
   237 	else if (aDynamicCaps & RPacketService::KCapsEGPRS)
   225 	else if (aDynamicCaps & RPacketService::KCapsEGPRS)
   252 			{
   240 			{
   253 		   	return KDefaultBearer;
   241 		   	return KDefaultBearer;
   254 			}
   242 			}
   255 		}
   243 		}
   256 	}
   244 	}
       
   245 
   257 
   246 
   258 DEFINE_SMELEMENT(PDPCprStates::TUpdateBundle, NetStateMachine::MStateTransition, PDPCprStates::TContext)
   247 DEFINE_SMELEMENT(PDPCprStates::TUpdateBundle, NetStateMachine::MStateTransition, PDPCprStates::TContext)
   259 void PDPCprStates::TUpdateBundle::DoL()
   248 void PDPCprStates::TUpdateBundle::DoL()
   260 /**
   249 /**
   261  * Process TGetParamsRequest
   250  * Process TGetParamsRequest
   301 		// if Dynamic Caps supported, start listener, which would Notify of Dynamic Caps change
   290 		// if Dynamic Caps supported, start listener, which would Notify of Dynamic Caps change
   302 		// no check required for network mode, since atleast one network mode is supported.
   291 		// no check required for network mode, since atleast one network mode is supported.
   303 		iContext.Node().StartListener();
   292 		iContext.Node().StartListener();
   304 		}
   293 		}
   305 	}
   294 	}
   306 #endif
   295 
   307 
   296 
   308