--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneclientserver/phoneserver/Src/Standard/CPhSrvPhoneController.cpp Tue Feb 02 01:11:09 2010 +0200
@@ -0,0 +1,169 @@
+/*
+* Copyright (c) 2002-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: Phone Controller.
+*
+*/
+
+
+
+// INCLUDE FILES
+#include "CPhSrvPhoneController.h"
+#include <mmtsy_names.h>
+
+
+// CONSTANTS
+#define KPhSrvTsyName KMmTsyModuleName
+
+const TInt KPhSrvTSYNameMaxLength( 80 );
+const TInt KPhSrvETelRetryCount = 7;
+const TInt KPhSrvETelRetryTimeout = 100000; // us
+
+
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CPhSrvPhoneController::~CPhSrvPhoneController
+//
+// C++ destructor
+// -----------------------------------------------------------------------------
+//
+/*****************************************************
+* Series 60 Customer / ETel
+* Series 60 ETel API
+*****************************************************/
+CPhSrvPhoneController::~CPhSrvPhoneController()
+ {
+ iCustomPhone.Close();
+ iMobilePhone.Close();
+ iETelServer.Close();
+ }
+
+
+// -----------------------------------------------------------------------------
+// CPhSrvPhoneController::ConstructL
+//
+// Symbian OS 2nd phase constructor
+// -----------------------------------------------------------------------------
+//
+/*****************************************************
+* Series 60 Customer / ETel
+* Series 60 ETel API
+*****************************************************/
+void CPhSrvPhoneController::ConstructL()
+ {
+ TInt err = KErrNone;
+ TInt phones = 0; // no phones.
+
+
+ // Retry ETel connection if needed:
+ for ( TInt a = 0 ; a < KPhSrvETelRetryCount ; a++ )
+ {
+ err = iETelServer.Connect();
+ if ( err == KErrNone )
+ {
+ break;
+ }
+ User::After( KPhSrvETelRetryTimeout );
+ }
+ User::LeaveIfError( err );
+
+ err = iETelServer.LoadPhoneModule(KPhSrvTsyName);
+ if ( err != KErrNone && err != KErrAlreadyExists )
+ {
+ User::Leave( err );
+ }
+
+ RTelServer::TPhoneInfo info;
+ TBuf< KPhSrvTSYNameMaxLength > tsyName;
+ iETelServer.EnumeratePhones( phones );
+
+ TInt i = 0; // index starts from zero.
+ for (; i < phones ; i++ )
+ {
+ err = iETelServer.GetPhoneInfo( i, info );
+ User::LeaveIfError( err );
+
+ err = iETelServer.GetTsyName( i, tsyName );
+ User::LeaveIfError( err );
+
+ if ( !tsyName.CompareF( KPhSrvTsyName ) )
+ {
+ break;
+ }
+ }
+
+ if ( i == phones )
+ {
+ User::Leave( KErrNotSupported );
+ }
+
+ User::LeaveIfError(
+ iETelServer.SetExtendedErrorGranularity( RTelServer::EErrorExtended ) );
+
+ User::LeaveIfError( iMobilePhone.Open( iETelServer , info.iName ) );
+
+ User::LeaveIfError( iCustomPhone.Open( iMobilePhone ) );
+
+ }
+
+
+// -----------------------------------------------------------------------------
+// CPhSrvPhoneController::PhSrvETelServer
+//
+// Access the ETel session.
+// -----------------------------------------------------------------------------
+//
+/*****************************************************
+* Series 60 Customer / ETel
+* Series 60 ETel API
+*****************************************************/
+RTelServer& CPhSrvPhoneController::PhSrvETelServer()
+ {
+ return iETelServer;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CPhSrvPhoneController::PhSrvMobilePhone
+//
+// Access the GSM phone subsession.
+// -----------------------------------------------------------------------------
+//
+/*****************************************************
+* Series 60 Customer / ETel
+* Series 60 ETel API
+*****************************************************/
+RMobilePhone& CPhSrvPhoneController::PhSrvMobilePhone()
+ {
+ return iMobilePhone;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CPhSrvPhoneController::PhSrvCustomPhone
+//
+// Access the custom phone subsession.
+// -----------------------------------------------------------------------------
+//
+/*****************************************************
+* Series 60 Customer / ETel
+* Series 60 ETel API
+*****************************************************/
+RMmCustomAPI& CPhSrvPhoneController::PhSrvCustomPhone()
+ {
+ return iCustomPhone;
+ }
+
+// End of File