telephonyserverplugins/simatktsy/src/CSatNotifySendSs.cpp
branchRCL_3
changeset 65 630d2f34d719
parent 0 3553901f7fa8
child 66 07a122eea281
equal deleted inserted replaced
61:17af172ffa5f 65:630d2f34d719
     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