dbcreator/commsdatcreator/Src/cdcprocessorlan.cpp
changeset 0 5a93021fdf25
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dbcreator/commsdatcreator/Src/cdcprocessorlan.cpp	Thu Dec 17 08:55:21 2009 +0200
@@ -0,0 +1,264 @@
+/*
+* Copyright (c) 2005 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 of the class CProcessorLan
+*
+*/
+
+
+
+
+// INCLUDE FILES
+
+#include "cdcprocessorlan.h"
+#include "cdclogger.h"
+#include "cdctagcontainer.h"
+
+#include <cmpluginlandef.h>
+#include <cmpluginlanbasedef.h>
+#include <cmpluginbaseeng.h>
+#include <cmconnectionmethoddef.h>
+#include <cmmanagerext.h>
+#include <datamobilitycommsdattypes.h>
+
+using namespace CMManager;
+
+// CONSTANTS
+
+const TUint32 KDefaultPortNum = 80;
+
+// These constants are used to identify tags of iInFile.
+
+//Connection type
+_LIT16( KStrContinuous,      "Continuous" );
+_LIT16( KStrTemporary,       "Temporary" );
+
+_LIT16( KStrTrue,               "True" );
+_LIT16( KStrFalse,              "False" );
+
+
+// ================= MEMBER FUNCTIONS =======================
+
+// ---------------------------------------------------------
+// CProcessorLan::NewL
+// ---------------------------------------------------------
+//
+CProcessorLan* CProcessorLan::NewL( CReaderBase* aFileReader,
+                      RCmManagerExt& aCmManager,
+                      RPointerArray< RCmConnectionMethodExt >& aPluginArray,
+                      RPointerArray< HBufC >& aPluginNames )
+    {
+    CProcessorLan* self = new ( ELeave ) CProcessorLan( aFileReader,
+                                                        aCmManager,
+                                                        aPluginArray,
+                                                        aPluginNames );
+    CleanupStack::PushL( self );
+
+    // From base class
+    self->ConstructL();
+    CleanupStack::Pop( self ); // self
+    return self;
+    }
+    
+    
+// ---------------------------------------------------------
+// CProcessorLan::~CProcessorLan
+// ---------------------------------------------------------
+//
+CProcessorLan::~CProcessorLan()
+    {
+    }
+     
+     
+// ---------------------------------------------------------
+// CProcessorLan::ConstructL
+// ---------------------------------------------------------
+//
+void CProcessorLan::ConstructL()
+    {
+    }
+
+
+// ---------------------------------------------------------
+// CProcessorLan::CProcessorLan
+// ---------------------------------------------------------
+//
+CProcessorLan::CProcessorLan( CReaderBase* aFileReader,
+                      RCmManagerExt& aCmManager,
+                      RPointerArray< RCmConnectionMethodExt >& aPluginArray,
+                      RPointerArray< HBufC >& aPluginNames) :
+                              CProcessorBase( aFileReader,
+                                              aCmManager,
+                                              aPluginArray,
+                                              aPluginNames )
+    {
+    iBearerType = KUidLanBearerType;
+    }
+
+
+// ---------------------------------------------------------
+// CProcessorLan::ProcessTagL
+// ---------------------------------------------------------
+//
+void CProcessorLan::ProcessSpecialFieldsL( TInt aField, HBufC* aPtrTag, TInt /*aDx*/ )
+    {
+    switch ( aField )
+        {
+        case ECmWapIPGatewayAddress:
+            {
+             // Unicode 16-bit text
+            if ( aPtrTag->Length() )
+                {
+                iPlugin.SetStringAttributeL( aField, *aPtrTag );
+                }
+
+            break;
+            }
+        case ECmWapIPSecurity:
+            {
+             // TBool                
+            if ( !aPtrTag->CompareF( KStrOn ) )
+                {
+                iPlugin.SetBoolAttributeL( aField, ETrue );
+                }
+            else if ( !aPtrTag->CompareF( KStrOff ) )
+                {
+                iPlugin.SetBoolAttributeL( aField, EFalse );
+                }
+            else
+                {
+                //no valid data is given - default data is used
+                iPlugin.SetBoolAttributeL( aField, ETrue );
+                CLOG_WRITE( "! Error : Invalid WTLS security setting. Default:On");
+                }
+
+            break;
+            }
+        case ELanIpAddrFromServer:
+        case ELanIpDNSAddrFromServer:
+            {
+             // TBool                
+            if ( !aPtrTag->CompareF( KStrTrue ) )
+                {
+                iPlugin.SetBoolAttributeL( aField, ETrue );
+                }
+            else if ( !aPtrTag->CompareF( KStrFalse ) )
+                {
+                iPlugin.SetBoolAttributeL( aField, EFalse );
+                }
+            else
+                {
+                //no valid data is given - default data is used
+                iPlugin.SetBoolAttributeL( aField, ETrue );
+                CLOG_WRITE( "! Error : Invalid LAN server setting. Default:On");
+                }
+            break;
+            }
+        case ECmWapIPWSPOption:
+            {
+            // UInt                
+            if ( !aPtrTag->CompareF( KStrContinuous ) )
+                {
+                iPlugin.SetIntAttributeL( aField, 
+                                  EWapWspOptionConnectionOriented );
+                }
+            else if ( !aPtrTag->CompareF( KStrTemporary ) )
+                {
+                iPlugin.SetIntAttributeL( aField, 
+                                  EWapWspOptionConnectionless );
+                }
+            else
+                {
+                //no valid data is given - default data is used
+                iPlugin.SetIntAttributeL( aField, 
+                                  EWapWspOptionConnectionOriented );
+                CLOG_WRITE( "! Error : Invalid connection type. Default:Continuous");
+                }
+
+            break;
+            }
+        case ECmProxyProtocolName:
+        	{
+        	// Do not enable proxy in this case yet
+        	iPlugin.SetStringAttributeL( aField, *aPtrTag );
+        	break;
+        	}
+            
+        case ECmProxyServerName:
+            {
+            // First set proxy usage to enabled
+            if( !iProxyEnabled )
+                {
+                iPlugin.SetBoolAttributeL( ECmProxyUsageEnabled, ETrue );
+                iProxyEnabled = ETrue;
+                }
+            // Long text
+            iPlugin.SetStringAttributeL( aField, *aPtrTag );
+            break;
+            }
+        case ECmProxyPortNumber:
+            {
+            // First set proxy usage to enabled
+            if( !iProxyEnabled )
+                {
+                iPlugin.SetBoolAttributeL( ECmProxyUsageEnabled, ETrue );
+                iProxyEnabled = ETrue;
+                }
+             // TUint32 and should be read as text.
+            TPtrC16 portptr = aPtrTag->Right( aPtrTag->Length() );
+            TLex16 lex( portptr );
+            TUint32 portnum( 0 );
+            if ( lex.Val( portnum, EDecimal ) == KErrNone )
+                {
+                iPlugin.SetIntAttributeL( aField, portnum );
+                }
+            else 
+                {
+                //no valid data is given - default value is used
+                iPlugin.SetIntAttributeL( aField, KDefaultPortNum );
+                CLOG_WRITE( "! Error : Invalid port number. Default:80");  
+                }
+            break;
+            }
+        case ELanIfNetworks:
+        case ELanIpNetMask:
+        case ELanIpGateway:
+        case ELanIpAddr:
+        case ELanConfigDaemonManagerName:
+        case ELanConfigDaemonName:
+            {
+            iPlugin.SetStringAttributeL( aField, *aPtrTag );
+            break;
+            }
+        case ELanIpNameServer1:
+        case ELanIpNameServer2:
+        case ELanIp6NameServer1:
+        case ELanIp6NameServer2:
+            {
+            iPlugin.SetStringAttributeL( aField, *aPtrTag );
+            SetAddressFromServerL( ELanIpNameServer1,
+                                  ELanIpNameServer2,
+                                  ELanIpDNSAddrFromServer,
+                                  ELanIp6NameServer1,
+                                  ELanIp6NameServer2,
+                                  ELanIp6DNSAddrFromServer );    
+            break;
+            }
+        default:
+            {
+            break;
+            }
+        }//switch
+    }
+     
+// End of File.