vmbx/vmbxengine/src/vmbxetelconnection.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 31 Aug 2010 15:45:17 +0300
branchRCL_3
changeset 19 7d48bed6ce0c
permissions -rw-r--r--
Revision: 201033 Kit: 201035

/*
* Copyright (c) 2009 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 CVmbxETelConnection class
*
*/


// INCLUDE FILES
#include <mmtsy_names.h>

#include "vmbxlogger.h"
#include "vmbxetelconnection.h"

// CONSTANTS
// ETel connections attemps
const TInt KTriesToConnectServer( 7 );
// time between ETel connections attemps
const TInt KTimeBeforeRetryingServerConnection( 100000 );
// Index to the first phone info
const TInt KFirstPhoneIndex = 0;

// ============================ MEMBER FUNCTIONS =============================

// ---------------------------------------------------------------------------
// CVmbxETelConnection::CVmbxETelConnection
// C++ default constructor can NOT contain any code, that
// might leave.
// ---------------------------------------------------------------------------
//
CVmbxETelConnection::CVmbxETelConnection()
    {
    VMBLOGSTRING( "VMBX: CVmbxETelConnection::CVmbxETelConnection <=>" );
    }

// ---------------------------------------------------------------------------
// CVmbxETelConnection::ConstructL
// Symbian 2nd phase constructor can leave.
// ---------------------------------------------------------------------------
//
void CVmbxETelConnection::ConstructL()
    {
    VMBLOGSTRING( "VMBX: CVmbxETelConnection::ConstructL =>" );
    TInt errorCode( KErrNone );
    TInt thisTry( 0 );
    RTelServer::TPhoneInfo info;
    // connect to ETel server
    while ( ( errorCode = iTelServer.Connect() ) != KErrNone &&
            ( thisTry++ ) <= KTriesToConnectServer )
        {
        User::After( KTimeBeforeRetryingServerConnection );
        }
    VMBLOGSTRING2( "VMBX: CVmbxETelConnection::ConstructL: errorCode %I", 
                                                    errorCode );
    User::LeaveIfError( errorCode );

    // load TSY
    errorCode = iTelServer.LoadPhoneModule( KMmTsyModuleName );
    VMBLOGSTRING2( "VMBX: CVmbxETelConnection::ConstructL: err%I", errorCode );
    if ( KErrNone != errorCode && KErrAlreadyExists != errorCode )
        {
        User::Leave( errorCode );
        }

    // This enables extended errors from low level which are needed
    // to get detailed information when saving contacts
    TInt errExtrnded = iTelServer.SetExtendedErrorGranularity(
                                RTelServer::EErrorExtended );
    VMBLOGSTRING2( "VMBX: CVmbxETelConnection::ConstructL: errExtrnded %I", 
                                                        errExtrnded );
    User::LeaveIfError( errExtrnded );
    // get info about default phone
    TInt errGetInfo = iTelServer.GetPhoneInfo( KFirstPhoneIndex, info );
    VMBLOGSTRING2( "VMBX: CVmbxETelConnection::ConstructL: errGetInfo %I", 
                                                        errGetInfo );
    User::LeaveIfError( errGetInfo );

    TInt errInfoName = iPhone.Open( iTelServer, info.iName );
    VMBLOGSTRING2( "VMBX: CVmbxETelConnection::ConstructL: errInfoName %I", 
                                                        errInfoName );
    User::LeaveIfError( errInfoName );

    VMBLOGSTRING( "VMBX: CVmbxETelConnection::ConstructL <=" );
    }

// ---------------------------------------------------------------------------
// CVmbxETelConnection::NewL
// Two-phased constructor.
// ---------------------------------------------------------------------------
//
CVmbxETelConnection* CVmbxETelConnection::NewL()
    {
    VMBLOGSTRING( "VMBX: CVmbxETelConnection::NewL =>" );
    CVmbxETelConnection* self = new( ELeave ) CVmbxETelConnection();
    CleanupStack::PushL( self );
    self->ConstructL();
    CleanupStack::Pop();
    VMBLOGSTRING( "VMBX: CVmbxETelConnection::NewL <=" );
    return self;
    }

// ---------------------------------------------------------------------------
// CVmbxETelConnection::~CVmbxETelConnection()
// Destructor
// ---------------------------------------------------------------------------
//
CVmbxETelConnection::~CVmbxETelConnection()
    {
    VMBLOGSTRING( "VMBX: CVmbxETelConnection::~CVmbxETelConnection =>" );
    // close ETel connection
    iPhone.Close();
    iTelServer.Close();
    VMBLOGSTRING( "VMBX: CVmbxETelConnection::~CVmbxETelConnection <=" );
    }

// ---------------------------------------------------------------------------
// CVmbxETelConnection::TelServer
// Returns a reference to the ETel RTelServer
// ---------------------------------------------------------------------------
//
RTelServer& CVmbxETelConnection::TelServer()
    {
    VMBLOGSTRING( "VMBX: CVmbxETelConnection::TelServer <=>" );
    return iTelServer;
    }

// ---------------------------------------------------------------------------
// CVmbxETelConnection::Phone
// Returns a reference to the ETel RMobilePhone
// ---------------------------------------------------------------------------
//
RMobilePhone& CVmbxETelConnection::Phone()
    {
    VMBLOGSTRING( "VMBX: CVmbxETelConnection::Phone <=>" );
    return iPhone;
    }

// End of file