1 // Copyright (c) 2006-2010 Nokia Corporation and/or its subsidiary(-ies). |
1 // Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies). |
2 // All rights reserved. |
2 // All rights reserved. |
3 // This component and the accompanying materials are made available |
3 // This component and the accompanying materials are made available |
4 // under the terms of "Eclipse Public License v1.0" |
4 // under the terms of "Eclipse Public License v1.0" |
5 // which accompanies this distribution, and is available |
5 // which accompanies this distribution, and is available |
6 // at the URL "http://www.eclipse.org/legal/epl-v10.html". |
6 // at the URL "http://www.eclipse.org/legal/epl-v10.html". |
18 // |
18 // |
19 |
19 |
20 |
20 |
21 |
21 |
22 //INCLUDES |
22 //INCLUDES |
23 |
|
24 #include "OstTraceDefinitions.h" |
|
25 #ifdef OST_TRACE_COMPILER_IN_USE |
|
26 #include "CSatNotifySendSsTraces.h" |
|
27 #endif |
|
28 |
|
29 #include <satcs.h> // Etel SAT IPC definitions |
23 #include <satcs.h> // Etel SAT IPC definitions |
30 #include "CSatTsy.h" // Tsy class header |
24 #include "CSatTsy.h" // Tsy class header |
31 #include "CSatCCTsy.h" // Call Control Tsy class header |
25 #include "CSatCCTsy.h" // Call Control Tsy class header |
32 #include "CSatNotifySendSs.h" // Tsy class header |
26 #include "CSatNotifySendSs.h" // Tsy class header |
33 #include "CSatNotificationsTsy.h" // Class header |
27 #include "CSatNotificationsTsy.h" // Class header |
34 #include "CBerTlv.h" // Ber Tlv data handling |
28 #include "CBerTlv.h" // Ber Tlv data handling |
35 #include "TTlv.h" // TTlv class |
29 #include "TTlv.h" // TTlv class |
36 #include "CSatDataPackage.h" // Parameter packing |
30 #include "CSatDataPackage.h" // Parameter packing |
|
31 #include "TfLogger.h" // For TFLOGSTRING |
37 #include "TSatUtility.h" // Utilities |
32 #include "TSatUtility.h" // Utilities |
38 #include "CSatTsyReqHandleStore.h" // Request handle class |
33 #include "CSatTsyReqHandleStore.h" // Request handle class |
39 #include "cmmmessagemanagerbase.h" // Message manager class for forwarding req. |
34 #include "cmmmessagemanagerbase.h" // Message manager class for forwarding req. |
40 #include "msattsy_ipcdefs.h" // Sat ipc values |
35 #include "msattsy_ipcdefs.h" // Sat ipc values |
41 |
36 |
47 CSatNotifySendSs* CSatNotifySendSs::NewL |
42 CSatNotifySendSs* CSatNotifySendSs::NewL |
48 ( |
43 ( |
49 CSatNotificationsTsy* aNotificationsTsy |
44 CSatNotificationsTsy* aNotificationsTsy |
50 ) |
45 ) |
51 { |
46 { |
52 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSATNOTIFYSENDSS_NEWL_1, "CSAT: CSatNotifySendSs::NewL"); |
47 TFLOGSTRING("CSAT: CSatNotifySendSs::NewL"); |
53 CSatNotifySendSs* const satNotifySendSs = |
48 CSatNotifySendSs* const satNotifySendSs = |
54 new ( ELeave ) CSatNotifySendSs( aNotificationsTsy ); |
49 new ( ELeave ) CSatNotifySendSs( aNotificationsTsy ); |
55 CleanupStack::PushL( satNotifySendSs ); |
50 CleanupStack::PushL( satNotifySendSs ); |
56 satNotifySendSs->ConstructL(); |
51 satNotifySendSs->ConstructL(); |
57 CleanupStack::Pop( satNotifySendSs ); |
52 CleanupStack::Pop( satNotifySendSs ); |
58 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSATNOTIFYSENDSS_NEWL_2, "CSAT: CSatNotifySendSs::NewL, end of method"); |
53 TFLOGSTRING("CSAT: CSatNotifySendSs::NewL, end of method"); |
59 return satNotifySendSs; |
54 return satNotifySendSs; |
60 } |
55 } |
61 |
56 |
62 // ----------------------------------------------------------------------------- |
57 // ----------------------------------------------------------------------------- |
63 // CSatNotifySendSs::~CSatNotifySendSs |
58 // CSatNotifySendSs::~CSatNotifySendSs |
67 CSatNotifySendSs::~CSatNotifySendSs |
62 CSatNotifySendSs::~CSatNotifySendSs |
68 ( |
63 ( |
69 // None |
64 // None |
70 ) |
65 ) |
71 { |
66 { |
72 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSATNOTIFYSENDSS_DTOR_1, "CSAT: CSatNotifySendSs::~CSatNotifySendSs"); |
67 TFLOGSTRING("CSAT: CSatNotifySendSs::~CSatNotifySendSs"); |
73 } |
68 } |
74 |
69 |
75 // ----------------------------------------------------------------------------- |
70 // ----------------------------------------------------------------------------- |
76 // CSatNotifySendSs::CSatNotifySendSs |
71 // CSatNotifySendSs::CSatNotifySendSs |
77 // Default C++ constructor |
72 // Default C++ constructor |
93 void CSatNotifySendSs::ConstructL |
88 void CSatNotifySendSs::ConstructL |
94 ( |
89 ( |
95 // None |
90 // None |
96 ) |
91 ) |
97 { |
92 { |
98 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSATNOTIFYSENDSS_CONSTRUCTL_1, "CSAT: CSatNotifySendSs::ConstructL"); |
93 TFLOGSTRING("CSAT: CSatNotifySendSs::ConstructL"); |
99 } |
94 } |
100 |
95 |
101 // ----------------------------------------------------------------------------- |
96 // ----------------------------------------------------------------------------- |
102 // CSatNotifySendSs::Notify |
97 // CSatNotifySendSs::Notify |
103 // This request allows a client to be notified of a Send SS proactive |
98 // This request allows a client to be notified of a Send SS proactive |
108 ( |
103 ( |
109 const TTsyReqHandle aTsyReqHandle, |
104 const TTsyReqHandle aTsyReqHandle, |
110 const TDataPackage& aPackage |
105 const TDataPackage& aPackage |
111 ) |
106 ) |
112 { |
107 { |
113 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSATNOTIFYSENDSS_NOTIFY_1, "CSAT: CSatNotifySendSs::Notify"); |
108 TFLOGSTRING("CSAT: CSatNotifySendSs::Notify"); |
114 // Save data pointer to client side for completion |
109 // Save data pointer to client side for completion |
115 iSendSsV1Pckg = reinterpret_cast<RSat::TSendSsV1Pckg*>( |
110 iSendSsV1Pckg = reinterpret_cast<RSat::TSendSsV1Pckg*>( |
116 aPackage.Des1n() ); |
111 aPackage.Des1n() ); |
117 // Save the request handle |
112 // Save the request handle |
118 iNotificationsTsy->iSatTsy->SaveReqHandle( aTsyReqHandle, |
113 iNotificationsTsy->iSatTsy->SaveReqHandle( aTsyReqHandle, |
133 TInt CSatNotifySendSs::CancelNotification |
128 TInt CSatNotifySendSs::CancelNotification |
134 ( |
129 ( |
135 const TTsyReqHandle aTsyReqHandle |
130 const TTsyReqHandle aTsyReqHandle |
136 ) |
131 ) |
137 { |
132 { |
138 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSATNOTIFYSENDSS_CANCELNOTIFICATION_1, "CSAT: CSatNotifySendSs::CancelNotification"); |
133 TFLOGSTRING("CSAT: CSatNotifySendSs::CancelNotification"); |
139 |
134 |
140 // Reset the request handle |
135 // Reset the request handle |
141 TTsyReqHandle reqHandle = iNotificationsTsy->iSatReqHandleStore-> |
136 TTsyReqHandle reqHandle = iNotificationsTsy->iSatReqHandleStore-> |
142 ResetTsyReqHandle( CSatTsy::ESatNotifySendSsPCmdReqType ); |
137 ResetTsyReqHandle( CSatTsy::ESatNotifySendSsPCmdReqType ); |
143 // Reset the data pointer |
138 // Reset the data pointer |
159 ( |
154 ( |
160 CSatDataPackage* aDataPackage, |
155 CSatDataPackage* aDataPackage, |
161 TInt aErrorCode |
156 TInt aErrorCode |
162 ) |
157 ) |
163 { |
158 { |
164 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSATNOTIFYSENDSS_COMPLETENOTIFYL_1, "CSAT: CSatNotifySendSs::CompleteNotifyL"); |
159 TFLOGSTRING("CSAT: CSatNotifySendSs::CompleteNotifyL"); |
165 TInt ret( KErrNone ); |
160 TInt ret( KErrNone ); |
166 |
161 |
167 // Unpack parameters |
162 // Unpack parameters |
168 TPtrC8* data; |
163 TPtrC8* data; |
169 aDataPackage->UnPackData( &data ); |
164 aDataPackage->UnPackData( &data ); |
232 // Set alpha id status |
227 // Set alpha id status |
233 sendSsV1.iAlphaId.iStatus = RSat::EAlphaIdProvided; |
228 sendSsV1.iAlphaId.iStatus = RSat::EAlphaIdProvided; |
234 } |
229 } |
235 else |
230 else |
236 { |
231 { |
237 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSATNOTIFYSENDSS_COMPLETENOTIFYL_2, "CSAT: CSatNotifySendSs::CompleteNotifyL, Alpha ID is NULL"); |
232 TFLOGSTRING("CSAT: CSatNotifySendSs::CompleteNotifyL,\ |
|
233 Alpha ID is NULL"); |
238 sendSsV1.iAlphaId.iStatus = RSat::EAlphaIdNull; |
234 sendSsV1.iAlphaId.iStatus = RSat::EAlphaIdNull; |
239 } |
235 } |
240 } |
236 } |
241 else |
237 else |
242 { |
238 { |
243 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSATNOTIFYSENDSS_COMPLETENOTIFYL_3, "CSAT: CSatNotifySendSs::CompleteNotifyL, Alpha ID not present"); |
239 TFLOGSTRING("CSAT: CSatNotifySendSs::CompleteNotifyL,\ |
|
240 Alpha ID not present"); |
244 sendSsV1.iAlphaId.iStatus = RSat::EAlphaIdNotPresent; |
241 sendSsV1.iAlphaId.iStatus = RSat::EAlphaIdNotPresent; |
245 } |
242 } |
246 |
243 |
247 // SS string Tlv |
244 // SS string Tlv |
248 sendSsV1.iSsString.iSsString.Zero(); |
245 sendSsV1.iSsString.iSsString.Zero(); |
294 // Valid SS, report to call control |
291 // Valid SS, report to call control |
295 iNotificationsTsy->iSatTsy->StoreProactiveAddress(&sourceString ); |
292 iNotificationsTsy->iSatTsy->StoreProactiveAddress(&sourceString ); |
296 } |
293 } |
297 else |
294 else |
298 { |
295 { |
299 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSATNOTIFYSENDSS_COMPLETENOTIFYL_4, "CSAT: CSatNotifySendSs::CompleteNotifyL, Data corrupted"); |
296 TFLOGSTRING("CSAT: CSatNotifySendSs::CompleteNotifyL,\ |
|
297 Data corrupted"); |
300 CreateTerminalRespL( pCmdNumber, RSat::KCmdDataNotUnderstood, |
298 CreateTerminalRespL( pCmdNumber, RSat::KCmdDataNotUnderstood, |
301 KNullDesC16 ); |
299 KNullDesC16 ); |
302 ret = KErrCorrupt; |
300 ret = KErrCorrupt; |
303 } |
301 } |
304 |
302 |
305 } |
303 } |
306 else |
304 else |
307 { |
305 { |
308 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSATNOTIFYSENDSS_COMPLETENOTIFYL_5, "CSAT: CSatNotifySendSs::CompleteNotifyL, SS String length exceeded"); |
306 TFLOGSTRING("CSAT: CSatNotifySendSs::CompleteNotifyL,\ |
|
307 SS String length exceeded"); |
309 // SS string is too long |
308 // SS string is too long |
310 CreateTerminalRespL( pCmdNumber, RSat::KCmdDataNotUnderstood, |
309 CreateTerminalRespL( pCmdNumber, RSat::KCmdDataNotUnderstood, |
311 KNullDesC16 ); |
310 KNullDesC16 ); |
312 ret = KErrCorrupt; |
311 ret = KErrCorrupt; |
313 } |
312 } |
314 } |
313 } |
315 else |
314 else |
316 { |
315 { |
317 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSATNOTIFYSENDSS_COMPLETENOTIFYL_6, "CSAT: CSatNotifySendSs::CompleteNotifyL, SS String missing"); |
316 TFLOGSTRING("CSAT: CSatNotifySendSs::CompleteNotifyL,\ |
|
317 SS String missing"); |
318 // Mandatory tlv is missing, returning response immediately |
318 // Mandatory tlv is missing, returning response immediately |
319 CreateTerminalRespL( |
319 CreateTerminalRespL( |
320 pCmdNumber, RSat::KErrorRequiredValuesMissing, |
320 pCmdNumber, RSat::KErrorRequiredValuesMissing, |
321 KNullDesC16 ); |
321 KNullDesC16 ); |
322 ret = KErrCorrupt; |
322 ret = KErrCorrupt; |
335 iNotificationsTsy->iSatTsy->ReqCompleted( reqHandle, ret ); |
335 iNotificationsTsy->iSatTsy->ReqCompleted( reqHandle, ret ); |
336 |
336 |
337 } // End of if ( reqHandle != CSatTsy::ESatReqHandleUnknown ) |
337 } // End of if ( reqHandle != CSatTsy::ESatReqHandleUnknown ) |
338 else |
338 else |
339 { |
339 { |
340 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSATNOTIFYSENDSS_COMPLETENOTIFYL_7, "CSAT: CSatNotifySendSs::CompleteNotifyL, Request not ongoing"); |
340 TFLOGSTRING("CSAT: CSatNotifySendSs::CompleteNotifyL,\ |
|
341 Request not ongoing"); |
341 // Request not on, returning response immediately |
342 // Request not on, returning response immediately |
342 TBuf<1> additionalInfo; |
343 TBuf<1> additionalInfo; |
343 additionalInfo.Append( RSat::KNoSpecificMeProblem ); |
344 additionalInfo.Append( RSat::KNoSpecificMeProblem ); |
344 CreateTerminalRespL( pCmdNumber, RSat::KMeUnableToProcessCmd, |
345 CreateTerminalRespL( pCmdNumber, RSat::KMeUnableToProcessCmd, |
345 additionalInfo ); |
346 additionalInfo ); |
357 TInt CSatNotifySendSs::TerminalResponseL |
358 TInt CSatNotifySendSs::TerminalResponseL |
358 ( |
359 ( |
359 TDes8* aRsp |
360 TDes8* aRsp |
360 ) |
361 ) |
361 { |
362 { |
362 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSATNOTIFYSENDSS_TERMINALRESPONSEL_1, "CSAT:: CSatNotifySendSs::TerminalResponseL"); |
363 TFLOGSTRING("CSAT:: CSatNotifySendSs::TerminalResponseL"); |
363 TInt ret( KErrNone ); |
364 TInt ret( KErrNone ); |
364 // Buffer for additional information |
365 // Buffer for additional information |
365 TBuf<RSat::KAdditionalInfoMaxSize> additionalInfo; |
366 TBuf<RSat::KAdditionalInfoMaxSize> additionalInfo; |
366 RSat::TSendSsRspV2Pckg* aRspPckg = |
367 RSat::TSendSsRspV2Pckg* aRspPckg = |
367 reinterpret_cast<RSat::TSendSsRspV2Pckg*>( aRsp ); |
368 reinterpret_cast<RSat::TSendSsRspV2Pckg*>( aRsp ); |
384 && ( RSat::KCmdNumberNotKnown != rspV2.iGeneralResult ) |
385 && ( RSat::KCmdNumberNotKnown != rspV2.iGeneralResult ) |
385 && ( RSat::KSsReturnError != rspV2.iGeneralResult ) |
386 && ( RSat::KSsReturnError != rspV2.iGeneralResult ) |
386 && ( RSat::KErrorRequiredValuesMissing != rspV2.iGeneralResult ) |
387 && ( RSat::KErrorRequiredValuesMissing != rspV2.iGeneralResult ) |
387 && ( RSat::KInteractionWithCCPermanentError != rspV2.iGeneralResult ) ) |
388 && ( RSat::KInteractionWithCCPermanentError != rspV2.iGeneralResult ) ) |
388 { |
389 { |
389 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSATNOTIFYSENDSS_TERMINALRESPONSEL_2, "CSAT:: CSatNotifySendSs::TerminalResponseL, Invalid General Result"); |
390 TFLOGSTRING("CSAT:: CSatNotifySendSs::TerminalResponseL,\ |
|
391 Invalid General Result"); |
390 // Invalid general result |
392 // Invalid general result |
391 ret = KErrCorrupt; |
393 ret = KErrCorrupt; |
392 } |
394 } |
393 |
395 |
394 TBool isValidAddInfo(EFalse); // assume worse |
396 TBool isValidAddInfo(EFalse); // assume worse |
443 break; |
445 break; |
444 } |
446 } |
445 |
447 |
446 if ( !isValidAddInfo ) |
448 if ( !isValidAddInfo ) |
447 { |
449 { |
448 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSATNOTIFYSENDSS_TERMINALRESPONSEL_3, "CSAT: CSatNotifyCloseChannel::TerminalResponseL Invalid Additional Info"); |
450 TFLOGSTRING("CSAT: CSatNotifyCloseChannel::TerminalResponseL\ |
|
451 Invalid Additional Info"); |
449 ret = KErrCorrupt; |
452 ret = KErrCorrupt; |
450 } |
453 } |
451 |
454 |
452 // Report to call control that proactive session is over |
455 // Report to call control that proactive session is over |
453 iNotificationsTsy->iSatTsy->StoreProactiveAddress( NULL ); |
456 iNotificationsTsy->iSatTsy->StoreProactiveAddress( NULL ); |
476 TUint8 aPCmdNumber, |
479 TUint8 aPCmdNumber, |
477 TUint8 aGeneralResult, |
480 TUint8 aGeneralResult, |
478 const TDesC16& aAdditionalInfo |
481 const TDesC16& aAdditionalInfo |
479 ) |
482 ) |
480 { |
483 { |
481 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSATNOTIFYSENDSS_CREATETERMINALRESPL_1, "CSAT:: CSatNotifySendSs::CreateTerminalRespL"); |
484 TFLOGSTRING("CSAT:: CSatNotifySendSs::CreateTerminalRespL"); |
482 // Create and append response data |
485 // Create and append response data |
483 TTlv tlvSpecificData; |
486 TTlv tlvSpecificData; |
484 tlvSpecificData.AddTag( KTlvResultTag ); |
487 tlvSpecificData.AddTag( KTlvResultTag ); |
485 // Append general result |
488 // Append general result |
486 tlvSpecificData.AddByte( aGeneralResult ); |
489 tlvSpecificData.AddByte( aGeneralResult ); |
512 ( |
515 ( |
513 TPtrC8 aSource, |
516 TPtrC8 aSource, |
514 RSat::TSsString& aSsString |
517 RSat::TSsString& aSsString |
515 ) |
518 ) |
516 { |
519 { |
517 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSATNOTIFYSENDSS_CHECKCALLFORWARDING_1, "CSAT:: CSatNotifySendSs::CheckCallForwarding"); |
520 TFLOGSTRING("CSAT:: CSatNotifySendSs::CheckCallForwarding"); |
518 _LIT8(KCFU,"*21*"); // Call forwarding unconditional (CFU) |
521 _LIT8(KCFU,"*21*"); // Call forwarding unconditional (CFU) |
519 _LIT8(KCFB,"*67*"); // Call forwarding on Mobile Subscriber Busy(CFB) |
522 _LIT8(KCFB,"*67*"); // Call forwarding on Mobile Subscriber Busy(CFB) |
520 _LIT8(KCFNRy, "*61*"); // Call forwarding on No Reply (CFNRy) |
523 _LIT8(KCFNRy, "*61*"); // Call forwarding on No Reply (CFNRy) |
521 _LIT8(KCFNRc, "*62*"); // Call forwarding on Mobile Subscriber Not |
524 _LIT8(KCFNRc, "*62*"); // Call forwarding on Mobile Subscriber Not |
522 // Reachable (CFNRc) |
525 // Reachable (CFNRc) |
534 { |
537 { |
535 pos = aSource.Find( KCFNRc ); |
538 pos = aSource.Find( KCFNRc ); |
536 } |
539 } |
537 if ( KErrNotFound != pos ) |
540 if ( KErrNotFound != pos ) |
538 { |
541 { |
539 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSATNOTIFYSENDSS_CHECKCALLFORWARDING_2, "CSAT:: CSatNotifySendSs::CheckCallForwarding, String is for call forwarding"); |
542 TFLOGSTRING("CSAT:: CSatNotifySendSs::CheckCallForwarding,\ |
|
543 String is for call forwarding"); |
540 aSsString.iSsString.Zero(); |
544 aSsString.iSsString.Zero(); |
541 aSsString.iSsString.Append( aSource.Left( pos + 4 ) ); |
545 aSsString.iSsString.Append( aSource.Left( pos + 4 ) ); |
542 aSsString.iSsString.Append( KPlusMarkCharacterCode ); |
546 aSsString.iSsString.Append( KPlusMarkCharacterCode ); |
543 aSsString.iSsString.Append( |
547 aSsString.iSsString.Append( |
544 aSource.Right( aSource.Length() - ( pos + 4) ) ); |
548 aSource.Right( aSource.Length() - ( pos + 4) ) ); |
555 TInt CSatNotifySendSs::CheckSsStringValidity |
559 TInt CSatNotifySendSs::CheckSsStringValidity |
556 ( |
560 ( |
557 TPtrC8 aSsString |
561 TPtrC8 aSsString |
558 ) |
562 ) |
559 { |
563 { |
560 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSATNOTIFYSENDSS_CHECKSSSTRINGVALIDITY_1, "CSAT:: CSatNotifySendSs::CheckSsStringValidity"); |
564 TFLOGSTRING("CSAT:: CSatNotifySendSs::CheckSsStringValidity"); |
561 TInt ret( KErrNone ); |
565 TInt ret( KErrNone ); |
562 |
566 |
563 if ( !aSsString.Length() ) |
567 if ( !aSsString.Length() ) |
564 { |
568 { |
565 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSATNOTIFYSENDSS_CHECKSSSTRINGVALIDITY_2, "CSAT:: CSatNotifySendSs::CheckSsStringValidity, String length is NULL"); |
569 TFLOGSTRING("CSAT:: CSatNotifySendSs::CheckSsStringValidity,\ |
|
570 String length is NULL"); |
566 // If length is zero |
571 // If length is zero |
567 ret = KErrCorrupt; |
572 ret = KErrCorrupt; |
568 } |
573 } |
569 |
574 |
570 _LIT8( KDtmf, "p"); |
575 _LIT8( KDtmf, "p"); |
574 // SS string can contain only digits, star '*' and dash '#' characters. |
579 // SS string can contain only digits, star '*' and dash '#' characters. |
575 if ( ( KErrNotFound != aSsString.Find( KDtmf ) ) |
580 if ( ( KErrNotFound != aSsString.Find( KDtmf ) ) |
576 || ( KErrNotFound != aSsString.Find( KWild ) ) |
581 || ( KErrNotFound != aSsString.Find( KWild ) ) |
577 || ( KErrNotFound != aSsString.Find( KExpansionDigit ) ) ) |
582 || ( KErrNotFound != aSsString.Find( KExpansionDigit ) ) ) |
578 { |
583 { |
579 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSATNOTIFYSENDSS_CHECKSSSTRINGVALIDITY_3, "CSAT:: CSatNotifySendSs::CheckSsStringValidity, Incompatible character found"); |
584 TFLOGSTRING("CSAT:: CSatNotifySendSs::CheckSsStringValidity,\ |
|
585 Incompatible character found"); |
580 ret = KErrCorrupt; |
586 ret = KErrCorrupt; |
581 } |
587 } |
582 return ret; |
588 return ret; |
583 } |
589 } |
584 |
590 |