--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/multimediacommsengine/tsrc/testdriver/siptester/src/TCmdGetProfile.cpp Tue Feb 02 01:04:58 2010 +0200
@@ -0,0 +1,302 @@
+/*
+* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: Implementation
+*
+*/
+
+#include "CTcSIPContext.h"
+#include "SIPConstants.h"
+#include "TCmdGetProfile.h"
+#include "CTcSIPProfileContainer.h"
+
+#include <sipmanagedprofile.h>
+
+/**
+ * INPUT:
+ * Headers: -
+ * Parameters: -
+ * IDs: ProfileId, RegistryId
+ *
+ * OUTPUT:
+ * Parameters: Type, IapId, AORs, PrivateIdentity, Name, SigComp,
+ * AutoRegistration, SecurityNegotiation, Server,
+ * ServerParameter, ServerExtensionParameter,
+ * ExtensionParameter, Default, Enabled
+ * IDs: -
+ */
+void TCmdGetProfile::ExecuteL()
+ {
+ // -- Setup ---------------------------------------------------------------
+
+ // Get selected registry
+ CTcSIPProfileContainer& container = SelectProfileL();
+
+ // Get profile from the profile registry
+ CSIPManagedProfile& profile = GetManagedProfileL( container );
+
+ // -- Execution -----------------------------------------------------------
+
+ // -- Response creation ---------------------------------------------------
+
+ GetProfileParamsL( container, &profile );
+
+ }
+
+void TCmdGetProfile::GetProfileParamsL(
+ CTcSIPProfileContainer& aContainer,
+ CSIPManagedProfile* aProfile )
+ {
+ __ASSERT_ALWAYS( aProfile, User::Leave( KErrArgument ) );
+ // Type
+ TSIPProfileTypeInfo type = aProfile->Type();
+ if( type.iSIPProfileName != KNullDesC8 )
+ {
+ CTcStructure* s1 = AddStructureResponseL( KParamProfileType );
+ s1->AddItemL( KParamProfileClass, type.iSIPProfileClass );
+ s1->AddItemL( KParamProfileName, type.iSIPProfileName );
+ }
+
+ // IapName
+ TUint32 iapId( 0 );
+ User::LeaveIfError( aProfile->GetParameter( KSIPAccessPointId, iapId ) );
+ AddTextResponseL( KParamIAPName, iContext.IAPNameL( iapId ) );
+
+ // AOR
+ const TDesC8* aor = NULL;
+ aProfile->GetParameter( KSIPUserAor, aor );
+ if( aor && *aor != KNullDesC8 )
+ {
+ AddTextResponseL( KParamProfileAOR, *aor );
+ }
+
+ // Registered AOR(s)
+ const MDesC8Array* aors = NULL;
+ aProfile->GetParameter( KSIPRegisteredAors, aors );
+ if( aors && aors->MdcaCount() > 0 )
+ {
+ AddArrayResponseL( KParamProfileAORs, *aors );
+ }
+
+ // PrivateIdentity
+ const TDesC8* privateIdentity = NULL;
+ aProfile->GetParameter( KSIPPrivateIdentity, privateIdentity );
+ if( privateIdentity && *privateIdentity != KNullDesC8 )
+ {
+ AddTextResponseL( KParamProfilePrivateIdentity, *privateIdentity );
+ }
+
+ // Name
+ const TDesC8* name = NULL;
+ aProfile->GetParameter( KSIPProviderName, name );
+ if( name && *name != KNullDesC8 )
+ {
+ AddTextResponseL( KParamProfileName, *name );
+ }
+
+ // SigComp
+ TBool isSigCompEnabled( EFalse );
+ aProfile->GetParameter( KSIPSigComp, isSigCompEnabled );
+ AddBooleanResponseL( KParamProfileSigComp, isSigCompEnabled );
+
+ // AutoRegistration
+
+ TBool isAutoRegEnabled( EFalse );
+ aProfile->GetParameter( KSIPAutoRegistration, isAutoRegEnabled );
+ AddBooleanResponseL( KParamProfileAutoRegistration, isAutoRegEnabled );
+
+ // SecurityNegotiation
+ TBool isSecNegEnabled( EFalse );
+ aProfile->GetParameter( KSIPSecurityNegotiation, isSecNegEnabled );
+ AddBooleanResponseL( KParamProfileSecurityNegotiation, isSecNegEnabled );
+
+ // NegotiatedSecMechanism
+ const TDesC8* secmech = NULL;
+ aProfile->GetParameter( KSIPNegotiatedSecurityMechanism, secmech );
+ if( secmech && *secmech != KNullDesC8 )
+ {
+ AddTextResponseL( KParamNegotiatedSecMechanism, *secmech );
+ }
+
+ // Server
+ const TDesC8* address = NULL;
+
+ aProfile->GetParameter( KSIPRegistrar, KSIPServerAddress, address );
+ if( address && *address != KNullDesC8 )
+ {
+ CTcStructure* s1 = AddStructureResponseL( KParamProfileServer );
+ s1->AddItemL( KRegistrar, *address );
+ }
+ else
+ {
+ aProfile->GetParameter( KSIPOutboundProxy, KSIPServerAddress, address );
+ if( address && *address != KNullDesC8 )
+ {
+ CTcStructure* s1 = AddStructureResponseL( KParamProfileServer );
+ s1->AddItemL( KOutboundProxy, *address );
+ }
+ }
+
+ // ServerParameter
+ ServerParameterL( KSIPRegistrar, KSIPDigestRealm, aProfile );
+ ServerParameterL( KSIPRegistrar, KSIPDigestUserName, aProfile );
+ ServerParameterL( KSIPOutboundProxy, KSIPDigestRealm, aProfile );
+ ServerParameterL( KSIPOutboundProxy, KSIPDigestUserName, aProfile );
+
+ // ServerExtensionParameter
+ CTcStructure* structure;
+ do {
+ structure = FindStructureL( KParamProfileServerExtensionParameter, EFalse );
+ if( structure )
+ {
+ TPtrC8 server = structure->ItemL( KParamProfileServer )->Value();
+
+ const CTcNameValue* extensionParam = structure->ItemL( 1 );
+
+ TUint32 serverType = ServerL( structure );
+
+ const TDesC8* value = NULL;
+ aProfile->GetParameter( serverType, extensionParam->NameAsIntL(), value );
+ if( value && *value != KNullDesC8 )
+ {
+ CTcStructure* s1 = AddStructureResponseL( KParamProfileServerExtensionParameter );
+ s1->AddItemL( KParamProfileServer, server );
+ s1->AddItemL( extensionParam->Name(), *value );
+ }
+ iContext.List().RemoveParameter( KParamProfileServerExtensionParameter );
+ }
+ } while( structure );
+
+ // ExtensionParameter
+ do {
+ structure = FindStructureL( KParamProfileExtensionParameter, EFalse );
+ if( structure )
+ {
+ const CTcNameValue* extensionParam = structure->ItemL( 0 );
+
+ const TDesC8* value = NULL;
+ TBool boolVal( EFalse );
+ TUint32 intVal( 0 );
+
+ if ( aProfile->GetParameter( extensionParam->NameAsIntL(), value ) != KErrNotFound )
+ {
+ if( value && *value != KNullDesC8 )
+ {
+ CTcStructure* s1 = AddStructureResponseL( KParamProfileExtensionParameter );
+ s1->AddItemL( extensionParam->Name(), *value );
+ }
+ }
+ else if ( aProfile->GetParameter( extensionParam->NameAsIntL(), boolVal ) != KErrNotFound )
+ {
+ CTcStructure* s1 = AddStructureResponseL( KParamProfileExtensionParameter );
+ s1->AddBooleanItemL( extensionParam->Name(), boolVal );
+ }
+ else if ( aProfile->GetParameter( extensionParam->NameAsIntL(), intVal ) != KErrNotFound )
+ {
+ CTcStructure* s1 = AddStructureResponseL( KParamProfileExtensionParameter );
+ s1->AddItemL( extensionParam->Name(), intVal );
+ }
+ else
+ {
+ }
+
+ iContext.List().RemoveParameter( KParamProfileExtensionParameter );
+ }
+ } while( structure );
+
+ // Header params
+ CTcArray* headerParamsArr = FindArrayL( KParamProfileHeaderParams, EFalse );
+ if( headerParamsArr && headerParamsArr->Count() > 0 )
+ {
+ TUint32 paramType( 0 );
+ TLex8 lexer( headerParamsArr->Item( 0 ) );
+ User::LeaveIfError( lexer.Val( paramType, EDecimal ) );
+
+ headerParamsArr->RemoveItem( 0 );
+ const MDesC8Array* arr = 0;
+ aProfile->GetParameter( paramType, arr );
+ if( arr && arr->MdcaCount() > 0 )
+ {
+ AddArrayResponseL( KParamProfileHeaderParams, *arr );
+ }
+ }
+
+ // Default
+ TBool isDefault( EFalse );
+ aProfile->GetParameter( KSIPDefaultProfile, isDefault );
+ AddBooleanResponseL( KParamProfileDefault, isDefault );
+
+ // Enabled status
+ AddBooleanResponseL( KParamProfileEnabled,
+ aContainer.ProfileRegistry().IsEnabled( *aProfile ) );
+ }
+
+
+TBool TCmdGetProfile::Match( const TTcIdentifier& aId )
+ {
+ return TTcSIPCommandBase::Match( aId, _L8("GetProfile") );
+ }
+
+TTcCommandBase* TCmdGetProfile::CreateL( MTcTestContext& aContext )
+ {
+ return new( ELeave ) TCmdGetProfile( aContext );
+ }
+
+TPtrC8 TCmdGetProfile::ServerToString( TUint32 aServer )
+ {
+ TPtrC8 value;
+ if( aServer == KSIPRegistrar )
+ {
+ value.Set( KRegistrar );
+ }
+ else if( aServer == KSIPOutboundProxy )
+ {
+ value.Set( KOutboundProxy );
+ }
+
+ return value;
+ }
+
+void TCmdGetProfile::ServerParameterL( TUint32 aServer,
+ TUint32 aServerParameter,
+ const CSIPProfile* aSipProfile )
+ {
+ const TDesC8* value = NULL;
+ aSipProfile->GetParameter( aServer, aServerParameter, value );
+
+ if( value && *value != KNullDesC8 )
+ {
+ CTcStructure* s1 = AddStructureResponseL( KParamProfileServerParameter );
+
+ // Set server type
+ TPtrC8 string = ServerToString( aServer );
+ if( string != KNullDesC8 )
+ {
+ s1->AddItemL( KParamProfileServer, string );
+ }
+
+ // Set server parameter
+ if( aServerParameter == KSIPDigestRealm )
+ {
+ string.Set( KDigestRealm );
+ }
+ else if( aServerParameter == KSIPDigestUserName )
+ {
+ string.Set( KDigestUsername );
+ }
+
+ s1->AddItemL( KParamProfileParameter, string );
+ s1->AddItemL( KParamProfileValue, *value );
+ }
+ }
+