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