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