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) |
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) |