cmmanager/cmmgr/Plugins/cmpluginlan/src/cmpluginlan.cpp
changeset 20 9c97ad6591ae
parent 18 fcbbe021d614
child 21 b8e8e15e80f2
child 23 7ec726f93df1
child 28 860702281757
equal deleted inserted replaced
18:fcbbe021d614 20:9c97ad6591ae
     1 /*
       
     2 * Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description: 
       
    15 *      Implementation of Lan Plugin interface implementation 
       
    16 *      for Lan Bearer
       
    17 *      
       
    18 *
       
    19 */
       
    20 
       
    21  
       
    22 // INCLUDE FILES
       
    23 
       
    24 #include "cmpluginlan.h"
       
    25 #include "cmlogger.h"
       
    26 #include "datamobilitycommsdattypes.h"
       
    27 #include <cmmanagerdef.h>
       
    28 #include <ecom/ecom.h>		// For REComSession
       
    29 #include <mcmdexec.h>
       
    30 #include <cmpbasesettingsdlg.h>
       
    31 
       
    32 #include <cmpluginpacketdata.mbg>           // icons
       
    33 #include <data_caging_path_literals.hrh>
       
    34 
       
    35 using namespace CMManager;
       
    36 using namespace CommsDat;
       
    37 
       
    38 // ================= CONSTANTS =======================
       
    39 const TUint32 KDefaultPriorityLAN = 0;
       
    40 
       
    41 static const TCmAttribConvTable SLanConvTbl[] = 
       
    42     {
       
    43         { ELanIfNetworks, ELanRangeMax, NULL },
       
    44         { ELanIfNetworks, KCDTIdLANIfNetworks, NULL },        
       
    45         { ELanIpNetMask, KCDTIdLANIpNetMask, &CheckIPv4ValidityL },
       
    46         { ELanIpGateway, KCDTIdLANIpGateway, &CheckIPv4ValidityL },
       
    47         { ELanIpAddrFromServer, KCDTIdLANIpAddrFromServer, NULL },
       
    48         { ELanIpAddr, KCDTIdLANIpAddr, &CheckIPv4ValidityL },
       
    49         { ELanIpDNSAddrFromServer, KCDTIdLANIpDNSAddrFromServer, NULL },
       
    50         { ELanIpNameServer1, KCDTIdLANIpNameServer1, &CheckIPv4ValidityL },
       
    51         { ELanIpNameServer2, KCDTIdLANIpNameServer2, &CheckIPv4ValidityL },
       
    52         { ELanIp6DNSAddrFromServer, KCDTIdLANIp6DNSAddrFromServer, NULL },
       
    53         { ELanIp6NameServer1, KCDTIdLANIp6NameServer1, &CheckIPv4ValidityL },
       
    54         { ELanIp6NameServer2, KCDTIdLANIp6NameServer2, &CheckIPv4ValidityL },
       
    55         { ELanIpAddrLeaseValidFrom, KCDTIdLANIpAddrLeaseValidFrom, NULL },
       
    56         { ELanIpAddrLeaseValidTo, KCDTIdLANIpAddrLeaseValidTo, NULL },
       
    57         { ELanConfigDaemonManagerName, KCDTIdLANConfigDaemonManagerName, NULL },
       
    58         { ELanConfigDaemonName, KCDTIdLANConfigDaemonName, NULL },
       
    59         { ELanServiceExtensionTableName, KCDTIdLANServiceExtensionTableName, NULL },
       
    60         { ELanServiceExtensionTableRecordId, KCDTIdLANServiceExtensionTableRecordId, NULL },
       
    61         { 0, 0, NULL }
       
    62     };
       
    63 
       
    64 
       
    65 static const TCmCommonAttrConvArrayItem SCommonConvTbl[] =
       
    66 {
       
    67     { ELanIfNetworks, ECmIFNetworks },
       
    68     { ELanIpNetMask, ECmIPNetmask },
       
    69     { ELanIpGateway, ECmIPGateway },
       
    70     { ELanIpAddrFromServer, ECmIPAddFromServer },
       
    71     { ELanIpAddr, ECmIPAddress },
       
    72     { ELanIpDNSAddrFromServer, ECmIPDNSAddrFromServer },
       
    73     { ELanIpNameServer1, ECmIPNameServer1 },
       
    74     { ELanIpNameServer2, ECmIPNameServer2 },
       
    75     { ELanIp6DNSAddrFromServer, ECmIP6DNSAddrFromServer },
       
    76     { ELanIp6NameServer1, ECmIP6NameServer1 },
       
    77     { ELanIp6NameServer2, ECmIP6NameServer2 },
       
    78     { ELanIpAddrLeaseValidFrom, ECmIPAddrLeaseValidFrom },
       
    79     { ELanIpAddrLeaseValidTo, ECmIPAddrLeaseValidTo },
       
    80     { ELanConfigDaemonManagerName, ECmConfigDaemonManagerName },
       
    81     { ELanConfigDaemonName, ECmConfigDaemonName },
       
    82     { 0, 0 }
       
    83     };
       
    84 
       
    85 
       
    86 _LIT( KPacketDataFileIcons, "z:cmpluginpacketdata.mbm" );
       
    87     
       
    88 
       
    89 // ======== LOCAL FUNCTIONS ========
       
    90     
       
    91 // ======== MEMBER FUNCTIONS ========
       
    92 
       
    93 // ---------------------------------------------------------
       
    94 // CCmPluginLan::NewOutgoingL()
       
    95 // ---------------------------------------------------------
       
    96 //
       
    97 CCmPluginLan* CCmPluginLan::NewL( TCmPluginInitParam* aInitParam )
       
    98 	{
       
    99 	CCmPluginLan* self = new( ELeave ) CCmPluginLan( aInitParam );
       
   100 	CleanupStack::PushL( self );
       
   101 	self->ConstructL();
       
   102 	CleanupStack::Pop( /*self*/ );
       
   103 
       
   104 	return self;
       
   105 	}
       
   106 
       
   107 // ----------------------------------------------------------------------------
       
   108 // CCmPluginLan::CreateInstanceL
       
   109 // ----------------------------------------------------------------------------
       
   110 //
       
   111 CCmPluginBaseEng* CCmPluginLan::CreateInstanceL( TCmPluginInitParam& aInitParam ) const
       
   112     {
       
   113     CCmPluginLan* self = new( ELeave ) CCmPluginLan( &aInitParam );
       
   114     CleanupStack::PushL( self );
       
   115     self->ConstructL();
       
   116     CleanupStack::Pop( self );
       
   117 
       
   118     return self;
       
   119     }
       
   120     
       
   121 // ---------------------------------------------------------
       
   122 // CCmPluginLan::~CCmPluginLan()
       
   123 // ---------------------------------------------------------
       
   124 //
       
   125 CCmPluginLan::~CCmPluginLan()
       
   126 	{
       
   127 	AdditionalReset();
       
   128 	
       
   129 	CLOG_CLOSE;
       
   130 	}
       
   131 
       
   132 
       
   133 // ---------------------------------------------------------
       
   134 // CCmPluginLan::CCmPluginLan()
       
   135 // ---------------------------------------------------------
       
   136 //
       
   137 CCmPluginLan::CCmPluginLan( TCmPluginInitParam* aInitParam )
       
   138     : CCmPluginLanBase( aInitParam )
       
   139 	{
       
   140 	CLOG_CREATE;
       
   141 	
       
   142 	iBearerType = KUidLanBearerType;
       
   143 	}
       
   144 
       
   145 
       
   146 // ---------------------------------------------------------
       
   147 // CCmPluginLan::ConstructL()
       
   148 // ---------------------------------------------------------
       
   149 //
       
   150 void CCmPluginLan::ConstructL()
       
   151 	{
       
   152 	CCmPluginLanBase::ConstructL();
       
   153 	
       
   154     iBearerRecName = KCDTypeNameLANBearer;
       
   155 	
       
   156 	AddConverstionTableL( (CCDRecordBase**)&iServiceRecord, NULL, SLanConvTbl );
       
   157 	
       
   158 	AddCommonConversionTableL( SCommonConvTbl );
       
   159 	}
       
   160 	
       
   161 
       
   162 // ---------------------------------------------------------
       
   163 // CCmPluginLan::GetIntAttributeL()
       
   164 // ---------------------------------------------------------
       
   165 //
       
   166 TUint32 CCmPluginLan::GetIntAttributeL( const TUint32 aAttribute ) const
       
   167     {
       
   168     LOGGER_ENTERFN( "CCmPluginLanBase::GetIntAttributeL" );
       
   169 
       
   170     TUint32 retVal;
       
   171     
       
   172     switch( aAttribute )
       
   173         {
       
   174         // LAN bearer has no icon, but added temporary 
       
   175         // to help work on emulator.
       
   176         case ECmBearerIcon:
       
   177             {
       
   178             MAknsSkinInstance* skinInstance = AknsUtils::SkinInstance();
       
   179                    
       
   180             TParse mbmFile;
       
   181             User::LeaveIfError( mbmFile.Set( KPacketDataFileIcons, 
       
   182                                                     &KDC_BITMAP_DIR, NULL ) );
       
   183 
       
   184                    
       
   185             retVal = (TUint32)AknsUtils::CreateGulIconL( 
       
   186                                     skinInstance, 
       
   187                                     KAknsIIDQgnPropWmlGprs,
       
   188                                     mbmFile.FullName(), 
       
   189                                     EMbmCmpluginpacketdataQgn_prop_wml_gprs, 
       
   190                                     EMbmCmpluginpacketdataQgn_prop_wml_gprs_mask );
       
   191             }
       
   192             break;
       
   193                
       
   194         // LAN bearer has no icon, but added temporary 
       
   195         // to help work on emulator.
       
   196         case ECmBearerAvailableIcon:
       
   197             {
       
   198             MAknsSkinInstance* skinInstance = AknsUtils::SkinInstance();
       
   199                    
       
   200             TParse mbmFile;
       
   201             User::LeaveIfError( mbmFile.Set( KPacketDataFileIcons, &KDC_BITMAP_DIR, NULL ) );
       
   202 
       
   203                    
       
   204             retVal = (TUint32)AknsUtils::CreateGulIconL( 
       
   205                                     skinInstance, 
       
   206                                     KAknsIIDQgnPropWmlGprs,
       
   207                                     mbmFile.FullName(), 
       
   208                                     EMbmCmpluginpacketdataQgn_prop_wml_gprs, 
       
   209                                     EMbmCmpluginpacketdataQgn_prop_wml_gprs_mask );
       
   210             }
       
   211             break;
       
   212             
       
   213         case ECmCommsDBBearerType:
       
   214             {
       
   215             retVal = KCommDbBearerLAN;
       
   216             }
       
   217             break;
       
   218             
       
   219         case ECmDefaultUiPriority:
       
   220         case ECmDefaultPriority:
       
   221             {
       
   222             retVal = aAttribute == ECmDefaultPriority ?
       
   223                         GlobalBearerPriority( TPtrC(KCDTypeNameLANService) ) :
       
   224                         GlobalUiBearerPriority( TPtrC(KCDTypeNameLANService) );
       
   225             
       
   226             if( retVal == KDataMobilitySelectionPolicyPriorityWildCard )
       
   227                 {
       
   228                 retVal = KDefaultPriorityLAN;
       
   229                 }
       
   230             }
       
   231             break;
       
   232             
       
   233         default:
       
   234             {
       
   235             retVal = CCmPluginBaseEng::GetIntAttributeL( aAttribute );
       
   236             }
       
   237         }
       
   238         
       
   239     return retVal;
       
   240     }
       
   241     
       
   242 // ---------------------------------------------------------
       
   243 // CCmPluginLan::CanHandleIapIdL()
       
   244 // ---------------------------------------------------------
       
   245 //
       
   246 TBool CCmPluginLan::CanHandleIapIdL( TUint32 aIapId ) const
       
   247     {
       
   248     LOGGER_ENTERFN( "CCmPluginLanBase::CanHandleIapIdL1" );
       
   249     CLOG_WRITE_1( "IapId: [%d]", aIapId );
       
   250     
       
   251     TBool retVal( EFalse );
       
   252     
       
   253     CCDIAPRecord *iapRecord = static_cast<CCDIAPRecord *>
       
   254                             (CCDRecordBase::RecordFactoryL(KCDTIdIAPRecord));
       
   255         
       
   256     CleanupStack::PushL( iapRecord );
       
   257     iapRecord->SetRecordId( aIapId );
       
   258     
       
   259     TRAPD( err, iapRecord->LoadL( Session() ));
       
   260 
       
   261     if( !err )
       
   262         {
       
   263         CanHandleIapIdL( iapRecord );
       
   264         }
       
   265     
       
   266     CleanupStack::PopAndDestroy( iapRecord );
       
   267     return retVal;
       
   268     }
       
   269 
       
   270 // ---------------------------------------------------------
       
   271 // CCmPluginLan::CanHandleIapIdL()
       
   272 // ---------------------------------------------------------
       
   273 //
       
   274 TBool CCmPluginLan::CanHandleIapIdL( CCDIAPRecord *aIapRecord ) const
       
   275     {
       
   276     LOGGER_ENTERFN( "CCmPluginLanBase::CanHandleIapIdL2" );
       
   277 
       
   278     CLOG_WRITE_1( "IapId: [%d]", aIapRecord->RecordId() );
       
   279     
       
   280     TBool retVal( EFalse );
       
   281     
       
   282     CLOG_WRITE_2( "IAP record: [%S][%S]",
       
   283                     &FIELD_TO_TDESC(aIapRecord->iServiceType), 
       
   284                     &FIELD_TO_TDESC(aIapRecord->iBearerType)
       
   285                 );
       
   286     
       
   287     if( (TPtrC(aIapRecord->iServiceType) == TPtrC(KCDTypeNameLANService) ) &&
       
   288         TPtrC(aIapRecord->iBearerType) == TPtrC(KCDTypeNameLANBearer) )
       
   289         {
       
   290         CLOG_WRITE( "I can." );
       
   291         retVal = ETrue;
       
   292         }
       
   293 
       
   294     return retVal;
       
   295     }
       
   296 
       
   297 // ---------------------------------------------------------
       
   298 // CCmPluginLan::AdditionalReset()
       
   299 // ---------------------------------------------------------
       
   300 //        
       
   301 void CCmPluginLan::AdditionalReset()
       
   302     {
       
   303     }
       
   304 
       
   305 //  End of File