38 |
38 |
39 // External function prototypes |
39 // External function prototypes |
40 |
40 |
41 // Local constants |
41 // Local constants |
42 /** Seconds per minute. */ |
42 /** Seconds per minute. */ |
43 const TInt KWlanSettingsSecondsInMinute = 60; |
43 static const TInt KWlanSettingsSecondsInMinute = 60; |
44 /** Maximum value for scan interval in minutes. */ |
44 /** Default "Scan Networks" setting. */ |
45 const TInt KWlanSettingsScanNetworkMax = 30; |
45 static const TUint KWlanSettingsDefaultScanNetwork = |
|
46 WlanSettings::ScanNetworkAuto; |
|
47 /** Default "Power saving" setting. */ |
|
48 static const TBool KWlanSettingsDefaultPowerSaving = ETrue; |
46 |
49 |
47 // ======== MEMBER FUNCTIONS ======== |
50 // ======== MEMBER FUNCTIONS ======== |
48 |
51 |
49 /*! |
52 /*! |
50 Static NewL function for creating CWlanSettingsPrivate object. |
53 Static NewL function for creating CWlanSettingsPrivate object. |
51 \return Pointer to CWlanSettingsPrivate object. |
54 \return Pointer to CWlanSettingsPrivate object. |
52 */ |
55 */ |
53 |
56 |
54 CWlanSettingsPrivate* CWlanSettingsPrivate::NewL(int psmKeyValue) |
57 CWlanSettingsPrivate* CWlanSettingsPrivate::NewL(WlanSettings *q_ptr) |
55 { |
58 { |
56 OstTraceFunctionEntry1(CWLANSETINGPRIVATE_NEWL_ENTRY, this); |
59 OstTraceFunctionEntry0(CWLANSETINGPRIVATE_NEWL_ENTRY); |
57 |
60 |
58 CWlanSettingsPrivate* impl = new ( ELeave ) CWlanSettingsPrivate(psmKeyValue); |
61 CWlanSettingsPrivate* impl = new ( ELeave ) CWlanSettingsPrivate(q_ptr); |
59 CleanupStack::PushL( impl ); |
62 CleanupStack::PushL( impl ); |
60 impl->ConstructL(); |
63 impl->ConstructL(); |
61 CleanupStack::Pop( impl ); |
64 CleanupStack::Pop( impl ); |
62 |
65 |
63 OstTraceFunctionExit1(CWLANSETINGPRIVATE_NEWL_EXIT, this); |
66 OstTraceFunctionExit0(CWLANSETINGPRIVATE_NEWL_EXIT); |
64 return impl; |
67 return impl; |
65 } |
68 } |
66 |
69 |
67 /*! |
70 /*! |
68 Second phase Constructor. |
71 Second phase Constructor. |
69 */ |
72 */ |
70 |
73 |
71 void CWlanSettingsPrivate::ConstructL() |
74 void CWlanSettingsPrivate::ConstructL() |
72 { |
75 { |
73 OstTraceFunctionEntry1(CWLANSETINGPRIVATE_CONSTRUCTL_ENTRY, this); |
76 OstTraceFunctionEntry0(CWLANSETINGPRIVATE_CONSTRUCTL_ENTRY); |
74 |
77 |
75 mSession = CMDBSession::NewL( KCDLatestVersion ); |
78 mSession = CMDBSession::NewL( KCDLatestVersion ); |
76 |
79 |
77 #ifndef __WINS__ |
80 #ifndef __WINS__ |
78 mWlanMgmtClient = CWlanMgmtClient::NewL(); |
81 mWlanMgmtClient = CWlanMgmtClient::NewL(); |
79 #endif |
82 #endif |
80 |
83 |
81 CheckPsmModeL(); |
84 OstTraceFunctionExit0(CWLANSETINGPRIVATE_CONSTRUCTL_EXIT); |
82 |
|
83 OstTraceFunctionExit1(CWLANSETINGPRIVATE_CONSTRUCTL_EXIT, this); |
|
84 } |
85 } |
85 |
86 |
86 /*! |
87 /*! |
87 Constructor. |
88 Constructor. |
88 */ |
89 */ |
89 |
90 |
90 CWlanSettingsPrivate::CWlanSettingsPrivate(int psmKeyValue) : |
91 CWlanSettingsPrivate::CWlanSettingsPrivate(WlanSettings *q_ptr) : |
91 mPsmMode( EFalse ), |
92 q_ptr(q_ptr), |
92 mPowerSaving(KWlanSettingsDefaultPowerSaving), |
93 mPowerSaving(KWlanSettingsDefaultPowerSaving), |
93 mScanInterval(KWlanSettingsDefaultScanNetwork), |
94 mScanInterval(KWlanSettingsDefaultScanNetwork) |
94 mPsmKeyMode(psmKeyValue) |
95 { |
95 { |
96 OstTraceFunctionEntry0(CWLANSETINGPRIVATE_CWLANSETINGPRIVATE_ENTRY); |
96 |
97 OstTraceFunctionExit0(CWLANSETINGPRIVATE_CWLANSETINGPRIVATE_EXIT); |
97 OstTraceFunctionEntry1(CWLANSETINGPRIVATE_CWLANSETINGPRIVATE_ENTRY, this); |
|
98 OstTraceFunctionExit1(CWLANSETINGPRIVATE_CWLANSETINGPRIVATE_EXIT, this); |
|
99 |
|
100 } |
98 } |
101 |
99 |
102 /*! |
100 /*! |
103 Destructor. |
101 Destructor. |
104 */ |
102 */ |
105 |
103 |
106 CWlanSettingsPrivate::~CWlanSettingsPrivate() |
104 CWlanSettingsPrivate::~CWlanSettingsPrivate() |
107 { |
105 { |
108 OstTraceFunctionEntry1(DUP1_CWLANSETINGPRIVATE_CWLANSETINGPRIVATE_ENTRY, this); |
106 OstTraceFunctionEntry0(DUP1_CWLANSETINGPRIVATE_CWLANSETINGPRIVATE_ENTRY); |
109 |
107 |
110 delete mSession; |
108 delete mSession; |
111 #ifndef __WINS__ |
109 #ifndef __WINS__ |
112 delete mWlanMgmtClient; |
110 delete mWlanMgmtClient; |
113 #endif |
111 #endif |
114 |
112 |
115 OstTraceFunctionExit1(DUP1_CWLANSETINGPRIVATE_CWLANSETINGPRIVATE_EXIT, this); |
113 OstTraceFunctionExit0(DUP1_CWLANSETINGPRIVATE_CWLANSETINGPRIVATE_EXIT); |
116 } |
|
117 |
|
118 /*! |
|
119 Function to get the Power Saving mode of the device. |
|
120 */ |
|
121 |
|
122 void CWlanSettingsPrivate::CheckPsmModeL() |
|
123 { |
|
124 OstTraceFunctionEntry1(CWLANSETINGPRIVATE_CHECKPSMMODEL_ENTRY, this); |
|
125 |
|
126 TPsmsrvMode mode( EPsmsrvModeNormal ); |
|
127 |
|
128 mode = static_cast<TPsmsrvMode>( mPsmKeyMode ); |
|
129 if ( mode == EPsmsrvModePowerSave || mode == EPsmsrvPartialMode ) { |
|
130 mPsmMode = ETrue; |
|
131 } |
|
132 else { |
|
133 mPsmMode = EFalse; |
|
134 } |
|
135 |
|
136 OstTraceFunctionExit1(CWLANSETINGPRIVATE_CHECKPSMMODEL_EXIT, this); |
|
137 } |
114 } |
138 |
115 |
139 /*! |
116 /*! |
140 Function to load the WLAN Settings from CommsDB. |
117 Function to load the WLAN Settings from CommsDB. |
141 */ |
118 */ |
142 |
119 |
143 void CWlanSettingsPrivate::LoadDBSettingsL() |
120 void CWlanSettingsPrivate::LoadDBSettingsL() |
144 { |
121 { |
145 OstTraceFunctionEntry1(CWLANSETINGPRIVATE_LOADDBSETTINGSL_ENTRY, this); |
122 OstTraceFunctionEntry0(CWLANSETINGPRIVATE_LOADDBSETTINGSL_ENTRY); |
146 |
123 |
147 TBool ownTransaction( EFalse ); |
124 TBool ownTransaction( EFalse ); |
148 if ( !mSession->IsInTransaction() ) { |
125 if ( !mSession->IsInTransaction() ) { |
149 ownTransaction = ETrue; |
126 ownTransaction = ETrue; |
150 mSession->OpenTransactionL(); |
127 mSession->OpenTransactionL(); |
162 if ( record->FindL( *mSession ) ) { |
139 if ( record->FindL( *mSession ) ) { |
163 record->LoadL( *mSession ); |
140 record->LoadL( *mSession ); |
164 } |
141 } |
165 |
142 |
166 // Read scan interval |
143 // Read scan interval |
167 |
144 OstTrace1( |
168 mScanInterval = record->iBgScanInterval; |
145 TRACE_NORMAL, |
169 //In Case of PSM mode Scan Interval should be set to Auto |
146 CWLANSETTINGSPRIVATE_LOADDBSETTINGSL_SCANINTERVAL, |
170 if (mPsmMode) { |
147 "CWlanSettingsPrivate::LoadDBSettingsL ScanInterval;iBgScanInterval=%u", |
171 mScanInterval = KWlanSettingsScanNetworkAuto; |
148 record->iBgScanInterval ); |
172 } |
149 OstTrace1( |
173 else { |
150 TRACE_NORMAL, |
174 mScanInterval = record->iSavedBgScanInterval; |
151 CWLANSETTINGSPRIVATE_LOADDBSETTINGSL_SAVEDSCANINTERVAL, |
175 //Safe check for scan interval, control should not come here. |
152 "CWlanSettingsPrivate::LoadDBSettingsL SavedScanInterval;iSavedBgScanInterval=%u", |
176 if (mScanInterval > (KWlanSettingsScanNetworkMax |
153 record->iSavedBgScanInterval ); |
177 * KWlanSettingsSecondsInMinute)) { |
154 mScanInterval = record->iSavedBgScanInterval; |
178 mScanInterval = KWlanSettingsScanNetworkAuto; |
155 //Safe check for scan interval, control should not come here. |
179 } |
156 if (mScanInterval > (WlanSettings::ScanNetworkMax |
180 } |
157 * KWlanSettingsSecondsInMinute)) { |
181 |
158 mScanInterval = WlanSettings::ScanNetworkAuto; |
|
159 } |
|
160 |
|
161 // Read power saving mode |
182 mPowerSaving = record->iWlanPowerMode; |
162 mPowerSaving = record->iWlanPowerMode; |
|
163 OstTraceExt1( |
|
164 TRACE_NORMAL, |
|
165 CWLANSETTINGSPRIVATE_LOADDBSETTINGSL_POWERSAVE, |
|
166 "CWlanSettingsPrivate::LoadDBSettingsL PowerSave;mPowerSaving=%hhu", |
|
167 mPowerSaving ); |
|
168 |
183 CleanupStack::PopAndDestroy( record ); |
169 CleanupStack::PopAndDestroy( record ); |
184 |
170 |
185 if ( ownTransaction ) { |
171 if ( ownTransaction ) { |
186 mSession->CommitTransactionL(); |
172 mSession->CommitTransactionL(); |
187 // Rollback operation. |
173 // Rollback operation. |
188 } |
174 } |
189 |
175 |
190 //To Load CM Settings. |
176 //To Load CM Settings. |
191 LoadJoinWlanSettingL(); |
177 LoadJoinWlanSettingL(); |
192 |
178 |
193 OstTraceFunctionExit1(CWLANSETINGPRIVATE_LOADDBSETTINGSL_EXIT, this); |
179 OstTraceFunctionExit0(CWLANSETINGPRIVATE_LOADDBSETTINGSL_EXIT); |
194 } |
180 } |
195 |
181 |
196 /*! |
182 /*! |
197 Function to load the Join WLAN networks Setting from CMManager. |
183 Function to load the Join WLAN networks Setting from CMManager. |
198 */ |
184 */ |
199 |
185 |
200 void CWlanSettingsPrivate::LoadJoinWlanSettingL() |
186 void CWlanSettingsPrivate::LoadJoinWlanSettingL() |
201 { |
187 { |
202 OstTraceFunctionEntry1(CWLANSETINGPRIVATE_LOADJOINWLANSETTINGL_ENTRY, this); |
188 OstTraceFunctionEntry0(CWLANSETINGPRIVATE_LOADJOINWLANSETTINGL_ENTRY); |
203 |
189 |
204 RCmManager CmManager; |
190 RCmManager CmManager; |
205 CmManager.CreateTablesAndOpenL(); |
191 CmManager.CreateTablesAndOpenL(); |
206 CleanupClosePushL(CmManager); |
192 CleanupClosePushL(CmManager); |
207 CmManager.ReadGenConnSettingsL( mCmSettings ); |
193 CmManager.ReadGenConnSettingsL( mCmSettings ); |
208 CleanupStack::PopAndDestroy( 1 ); //CmManager |
194 CleanupStack::PopAndDestroy( 1 ); //CmManager |
209 |
195 |
210 OstTraceFunctionExit1(CWLANSETINGPRIVATE_LOADJOINWLANSETTINGL_EXIT, this); |
196 OstTraceFunctionExit0(CWLANSETINGPRIVATE_LOADJOINWLANSETTINGL_EXIT); |
211 } |
197 } |
212 |
198 |
213 /*! |
199 /*! |
214 Function to write the Join WLAN networks Setting using CMManager. |
200 Function to write the Join WLAN networks Setting using CMManager. |
215 */ |
201 */ |
216 |
202 |
217 void CWlanSettingsPrivate::SaveJoinWlanSettingL(TInt mode) |
203 void CWlanSettingsPrivate::SaveJoinWlanSettingL(TInt mode) |
218 { |
204 { |
219 OstTraceFunctionEntry1(CWLANSETINGPRIVATE_SAVEJOINWLANSETTINGL_ENTRY, this); |
205 OstTraceFunctionEntry0(CWLANSETINGPRIVATE_SAVEJOINWLANSETTINGL_ENTRY); |
220 |
206 |
221 switch ( mode ) { |
207 switch ( mode ) { |
222 case EJoinWlanKnown: |
208 case EJoinWlanKnown: |
223 mCmSettings.iUsageOfWlan = ECmUsageOfWlanKnown; |
209 mCmSettings.iUsageOfWlan = ECmUsageOfWlanKnown; |
224 break; |
210 break; |
235 CmManager.CreateTablesAndOpenL(); |
221 CmManager.CreateTablesAndOpenL(); |
236 CleanupClosePushL(CmManager); |
222 CleanupClosePushL(CmManager); |
237 CmManager.WriteGenConnSettingsL( mCmSettings ); |
223 CmManager.WriteGenConnSettingsL( mCmSettings ); |
238 CleanupStack::PopAndDestroy( 1 ); |
224 CleanupStack::PopAndDestroy( 1 ); |
239 |
225 |
240 OstTraceFunctionExit1(CWLANSETINGPRIVATE_SAVEJOINWLANSETTINGL_EXIT, this); |
226 OstTraceFunctionExit0(CWLANSETINGPRIVATE_SAVEJOINWLANSETTINGL_EXIT); |
241 } |
227 } |
242 |
228 |
243 /*! |
229 /*! |
244 Function to get the Join WLAN network setting. |
230 Function to get the Join WLAN network setting. |
245 \return 0 for Known, 1 for Manual. |
231 \return 0 for Known, 1 for Manual. |
246 */ |
232 */ |
247 |
233 |
248 TInt CWlanSettingsPrivate::JoinWlanMode() |
234 TInt CWlanSettingsPrivate::JoinWlanMode() |
249 { |
235 { |
250 OstTraceFunctionEntry1(CWLANSETINGPRIVATE_JOINWLANMODE_ENTRY, this); |
236 OstTraceFunctionEntry0(CWLANSETINGPRIVATE_JOINWLANMODE_ENTRY); |
251 |
237 |
252 TInt mode = 0; |
238 TInt mode = 0; |
253 |
239 |
254 switch ( mCmSettings.iUsageOfWlan ) { |
240 switch ( mCmSettings.iUsageOfWlan ) { |
255 case ECmUsageOfWlanKnown: |
241 case ECmUsageOfWlanKnown: |
296 } |
282 } |
297 |
283 |
298 switch (option) { |
284 switch (option) { |
299 case EWlanScanInterval: |
285 case EWlanScanInterval: |
300 record->iBgScanInterval = mScanInterval; |
286 record->iBgScanInterval = mScanInterval; |
301 if ( !mPsmMode ) { |
287 if (!q_ptr->isDevicePowerSavingEnabled()) { |
302 record->iSavedBgScanInterval = mScanInterval; |
288 record->iSavedBgScanInterval = mScanInterval; |
303 } |
289 } |
304 break; |
290 OstTrace1( |
|
291 TRACE_NORMAL, |
|
292 CWLANSETTINGSPRIVATE_SAVEDBSETTINGSL_SCANINTERVAL, |
|
293 "CWlanSettingsPrivate::SaveDBSettingsL ScanInterval;iBgScanInterval=%u", |
|
294 record->iBgScanInterval ); |
|
295 OstTrace1( |
|
296 TRACE_NORMAL, |
|
297 CWLANSETTINGSPRIVATE_SAVEDBSETTINGSL_SAVEDSCANINTERVAL, |
|
298 "CWlanSettingsPrivate::SaveDBSettingsL SavedScanInterval;iSavedBgScanInterval=%u", |
|
299 record->iSavedBgScanInterval ); |
|
300 break; |
|
301 |
305 case EWlanPowerSaving: |
302 case EWlanPowerSaving: |
|
303 OstTraceExt1( |
|
304 TRACE_NORMAL, |
|
305 CWLANSETTINGSPRIVATE_SAVEDBSETTINGSL_POWERSAVING, |
|
306 "CWlanSettingsPrivate::SaveDBSettingsL PowerSaving;mPowerSaving=%hhu", |
|
307 mPowerSaving ); |
|
308 |
306 record->iWlanPowerMode = mPowerSaving; |
309 record->iWlanPowerMode = mPowerSaving; |
307 break; |
310 break; |
|
311 |
308 default: |
312 default: |
309 break; |
313 break; |
310 } |
314 } |
311 |
315 |
312 // Whenever settings are modified, iUseDefaultSettings must be set to false. |
316 // Whenever settings are modified, iUseDefaultSettings must be set to false. |
322 #ifndef __WINS__ |
326 #ifndef __WINS__ |
323 // Notifying WLAN Engine about changes in settings |
327 // Notifying WLAN Engine about changes in settings |
324 mWlanMgmtClient->NotifyChangedSettings(); |
328 mWlanMgmtClient->NotifyChangedSettings(); |
325 #endif |
329 #endif |
326 |
330 |
327 OstTraceFunctionExit1(CWLANSETINGPRIVATE_SAVEDBSETTINGSL_EXIT, this); |
331 OstTraceFunctionExit0(CWLANSETINGPRIVATE_SAVEDBSETTINGSL_EXIT); |
328 } |
332 } |
329 |
333 |
330 /*! |
334 /*! |
331 Function to get the scan interval. |
335 Function to get the scan interval. |
332 \return Scan interval in minutes. |
336 \return Scan interval in minutes. |
333 */ |
337 */ |
334 |
338 |
335 TUint CWlanSettingsPrivate::ScanInterval() |
339 TUint CWlanSettingsPrivate::ScanInterval() |
336 { |
340 { |
337 if ( mScanInterval == KWlanSettingsScanNetworkAuto ) { |
341 TUint retVal; |
338 return mScanInterval; |
342 if ( mScanInterval == WlanSettings::ScanNetworkAuto ) { |
339 } |
343 retVal = mScanInterval; |
340 else { |
344 } else { |
341 // Return scan time in minutes |
345 // Return scan time in minutes |
342 return ( mScanInterval / KWlanSettingsSecondsInMinute ); |
346 retVal = mScanInterval / KWlanSettingsSecondsInMinute; |
343 } |
347 } |
|
348 |
|
349 OstTrace1( |
|
350 TRACE_NORMAL, |
|
351 CWLANSETTINGSPRIVATE_SCANINTERVAL, |
|
352 "CWlanSettingsPrivate::ScanInterval;retVal=%u", |
|
353 retVal ); |
|
354 |
|
355 return retVal; |
344 } |
356 } |
345 |
357 |
346 /*! |
358 /*! |
347 Function to get Power Saving Option. |
359 Function to get Power Saving Option. |
348 \return True if Power Saving option is enabled, otherwise False. |
360 \return True if Power Saving option is enabled, otherwise False. |
349 */ |
361 */ |
350 |
362 |
351 TBool CWlanSettingsPrivate::PowerSaving() |
363 TBool CWlanSettingsPrivate::PowerSaving() |
352 { |
364 { |
|
365 OstTraceExt1( |
|
366 TRACE_NORMAL, |
|
367 CWLANSETTINGSPRIVATE_POWERSAVING, |
|
368 "CWlanSettingsPrivate::PowerSaving;mPowerSaving=%hhx", |
|
369 mPowerSaving ); |
|
370 |
353 return mPowerSaving; |
371 return mPowerSaving; |
354 } |
372 } |
355 |
373 |
356 /*! |
374 /*! |
357 Function to set Scan interval. |
375 Function to set Scan interval. |
358 \param interval Scan interval in minutes. |
376 \param interval Scan interval in minutes. |
359 */ |
377 */ |
360 |
378 |
361 void CWlanSettingsPrivate::SetScanInterval(TUint interval) |
379 void CWlanSettingsPrivate::SetScanInterval(TUint interval) |
362 { |
380 { |
363 OstTraceFunctionEntry1(CWLANSETINGPRIVATE_SETSCANINTERVAL_ENTRY, this); |
381 OstTraceFunctionEntry0(CWLANSETINGPRIVATE_SETSCANINTERVAL_ENTRY); |
364 |
382 |
365 if ( interval == KWlanSettingsScanNetworkAuto ) { |
383 if ( interval == WlanSettings::ScanNetworkAuto ) { |
366 mScanInterval = interval; |
384 mScanInterval = interval; |
367 } |
385 } |
368 else { |
386 else { |
369 // Scan time stored in seconds |
387 // Scan time stored in seconds |
370 mScanInterval = interval * KWlanSettingsSecondsInMinute; |
388 mScanInterval = interval * KWlanSettingsSecondsInMinute; |
371 } |
389 } |
372 |
390 |
373 OstTraceFunctionExit1(CWLANSETINGPRIVATE_SETSCANINTERVAL_EXIT, this); |
391 OstTraceFunctionExit0(CWLANSETINGPRIVATE_SETSCANINTERVAL_EXIT); |
374 } |
392 } |
375 |
393 |
376 /*! |
394 /*! |
377 Function to set Power Saving Option. |
395 Function to set Power Saving Option. |
378 \param powerSavingOption True to enable or false to disable power saving option. |
396 \param powerSavingOption True to enable or false to disable power saving option. |
379 */ |
397 */ |
380 |
398 |
381 void CWlanSettingsPrivate::SetPowerSaving(TBool powerSavingOption) |
399 void CWlanSettingsPrivate::SetPowerSaving(TBool powerSavingOption) |
382 { |
400 { |
383 OstTraceFunctionEntry1(CWLANSETINGPRIVATE_SETPOWERSAVING_ENTRY, this); |
401 OstTraceFunctionEntry0(CWLANSETINGPRIVATE_SETPOWERSAVING_ENTRY); |
384 |
402 |
385 mPowerSaving = powerSavingOption; |
403 mPowerSaving = powerSavingOption; |
386 |
404 |
387 OstTraceFunctionExit1(CWLANSETINGPRIVATE_SETPOWERSAVING_EXIT, this); |
405 OstTraceFunctionExit0(CWLANSETINGPRIVATE_SETPOWERSAVING_EXIT); |
388 } |
406 } |
389 |
|
390 /*! |
|
391 Function to get Power Saving status of the device. |
|
392 \return True if Power Saving is enabled. |
|
393 */ |
|
394 |
|
395 TBool CWlanSettingsPrivate::IsPsmEnabled() |
|
396 { |
|
397 return mPsmMode; |
|
398 } |
|