--- /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;
+ }