telephonyserverplugins/simtsy/src/CSimPhoneFactory.cpp
changeset 0 3553901f7fa8
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/telephonyserverplugins/simtsy/src/CSimPhoneFactory.cpp	Tue Feb 02 01:41:59 2010 +0200
@@ -0,0 +1,180 @@
+// Copyright (c) 1997-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:
+// SIMPHONEFACTORY.CPP
+// Phone Factory Class for the Simulator TSY
+// This file contains the implementation for the CSimPhoneFactory Class.
+// 
+//
+
+/**
+ @file
+*/
+
+#include "CSimPhoneFactory.h"
+#include "CSimPhone.h"
+#include "../inc/utils.h"
+
+extern "C"
+/**
+*	This function must be exported as the first ordinal from the DLL.
+*	The ETel Server will call this function to create a phone factory class,
+*	from which ultimately all other classes are derived.
+*/
+	{
+	IMPORT_C CPhoneFactoryBase* LibEntry(void);
+	}
+
+EXPORT_C CPhoneFactoryBase* LibEntry()
+/**
+*	Create a phone factory class.
+*/
+	{
+	return new CSimPhoneFactory;
+	}
+
+CSimPhoneFactory::CSimPhoneFactory()
+/**
+*	Return the DLL version number.
+*/
+	{
+	iVersion=TVersion(KEtelMajorVersionNumber,KEtelMinorVersionNumber,KEtelBuildVersionNumber);
+	}
+
+CSimPhoneFactory::~CSimPhoneFactory()
+	{}
+
+
+CPhoneBase* CSimPhoneFactory::NewPhoneL(const TDesC& aName)
+/**
+* Creates and returns a pointer to a new phone object.
+*
+* @param aName Name of the GSM phone ('GsmPhone')
+* @return CPhoneBase pointer to the new CSimPhone object, if the phone name is valid
+*         NULL otherwise 
+* @leave Leave This function may leave for many reasons
+*/
+	{
+	if (aName.CompareF(KPhoneName)!=0)
+		{
+		User::Leave(KErrNotFound);
+		}
+	CSimPhone* newPhone= CSimPhone::NewL(iPhoneBaseRef);
+	return newPhone;
+	}
+
+TInt CSimPhoneFactory::EnumeratePhones()
+/**
+* Returns the number of phones supported by the TSY. 
+*
+* @return TInt Number of phone supported.  Only 1 phone is supported.
+*/
+	{
+	return KNumberOfPhones;
+	}
+
+TInt CSimPhoneFactory::GetPhoneInfo(const TInt aIndex, RTelServer::TPhoneInfo& aInfo)
+/**
+* Retrieves phone information
+*
+* @param aIndex There is only one phone, so the valid index is zero.
+* @param aInfo Structure containing name of phone, number of lines and type of network
+* @return TInt An error code.
+*/
+	{
+	if(aIndex!=0)
+		return KErrNotFound;
+	aInfo.iName.Copy(KPhoneName);
+	aInfo.iNumberOfLines=KNumberOfLines;
+	aInfo.iNetworkType=RTelServer::ENetworkTypeMobileDigital;
+	aInfo.iExtensions=(TUint)0;		// Note that the Multimode ETel API extension number should be inserted here.
+	return KErrNone;
+	}
+
+TBool CSimPhoneFactory::IsSupported(const TInt aMixin)
+/**
+* Returns a boolean indicating the support of extended functionality.
+*
+* @param aMixin Limited subset of Muiltimode Etel API functionality
+* @return ETrue aMixin functionality is supported
+*		  EFalse aMixin functionality is not supported
+*/
+	{
+	switch (aMixin)
+		{
+	case KETelExtMultimodeV1:  // 3000 is unique reference for Multimode Etel v1.0 API
+	case KETelFuncMobileNetwork:
+	case KETelFuncMobilePower:
+	case KETelFuncMobileSignal:
+	case KETelFuncMobileIndicator:
+	case KETelFuncMobileDTMF:
+	case KETelFuncMobileDataCall:
+	case KETelFuncMobileEmergencyCall:
+	case KETelFuncMobileSmsMessaging:
+	case KETelFuncMobilePhonebook:
+	case KETelFuncMobileOwnNumberStore:
+	case KETelFuncMobileSmsStore:
+//	case KETelFuncMobileSmspStore:
+	case KETelExtPcktV1:	//Packet API
+	case KETelExtSatV1:
+	//security is not supported by alll modules of the tsy
+	case RMobileCall::KETelMobileDataCallParamsV1:
+	case RMobileCall::KETel3rdPartyCallParamsV1:
+		return ETrue;
+	case KETelExtMultimodeV2:
+	case KETelExtPcktV2:	//Packet API	
+	case KETelExtSatV2:	
+ 	case KEtelFuncMobileMultimediaCallSettings:
+	case KEtelFuncMobileNetworkSecurity:
+ 	case KEtelFuncMobileUSIMApplications:
+ 		return CheckSupportAgainstVersion(2);
+	case KETelExtMultimodeV3:
+	case KETelExtPcktV3:	//Packet API	
+ 		return CheckSupportAgainstVersion(3);	
+	case KETelExtMultimodeV4:
+ 		return CheckSupportAgainstVersion(4);
+	case KEtelExtMultimodeV5:
+ 		return CheckSupportAgainstVersion(5);	
+	case KEtelExtMultimodeV6:
+ 		return CheckSupportAgainstVersion(6);
+	case KEtelExtMultimodeV9:
+	case KEtelFuncCellInfo:
+		return CheckSupportAgainstVersion(9);
+	default:
+		return EFalse;
+		}
+	}
+
+TBool CSimPhoneFactory::CheckSupportAgainstVersion(const TInt& aVersion)
+	{
+	TBool ret = EFalse;
+	
+	if(iPhoneBaseRef == NULL)
+		{
+		ret = ETrue;
+		}
+	else
+		{
+		CSimPhone* thePhone = static_cast<CSimPhone*>(iPhoneBaseRef);
+		if(thePhone->iSimTsyVersion >= aVersion)
+			{
+			ret = ETrue;
+			}
+		else
+			{
+			ret = EFalse;
+			}
+	}
+	
+	return ret;
+	}