--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsymodel.cpp Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,276 @@
+// TestTelephonyModel.cpp
+// Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+// Implementation of the Class CTestTelephonyModel
+
+// CTSY include
+#include <bautils.h>
+
+#include "TestLtsyModel.h"
+#include "testltsycallshareddata.h"
+#include "TestLtsyPktSharedData.h"
+#include "TestLtsySmsSharedData.h"
+#include "TestLtsyPhoneStoreSharedData.h"
+
+// the file used to identify if we run on real environment
+//_LIT(KCTsyRealEnvFilePath, "z:\\systemtest\\testdata\\telephony\\ctsyrealenv.txt");
+//_LIT(KMmTsyModuleName, "PhoneTsy");
+
+/**
+ * Factory function
+ *
+ */
+CTestLtsyModel* CTestLtsyModel::NewL()
+ {
+ CTestLtsyModel* self = new (ELeave) CTestLtsyModel();
+ CleanupStack::PushL(self);
+ self->ConstructL();
+ CleanupStack::Pop();
+ return self;
+ }
+
+/**
+ * Destructor
+ *
+ */
+CTestLtsyModel::~CTestLtsyModel()
+ {
+ delete iSharedPhoneEnv;
+ delete iCallSharedData;
+ delete iPktSharedData;
+ delete iSmsSharedData;
+ delete iPhoneStoreSharedData;
+ }
+
+/**
+ * 2nd Constructor
+ *
+ */
+void CTestLtsyModel::ConstructL()
+ {
+ iSharedPhoneEnv = CTestLtsySharedEnv::NewL();
+ iCallSharedData = CTestLtsyCallSharedData::NewL();
+ iPktSharedData = CTestLtsyPktSharedData::NewL();
+ iSmsSharedData = CTestLtsySmsSharedData::NewL();
+ iPhoneStoreSharedData = CTestLtsyPhoneStoreSharedData::NewL();
+ }
+
+//=============================================================================
+// class CTestTelephonyAdaptorEnv
+//=============================================================================
+/**
+ * Constructor
+ *
+ */
+CTestLtsySharedEnv::CTestLtsySharedEnv()
+ {
+ // reset iPhoneInitialized
+ iPhoneInitialized = EFalse;
+ iPhoneIndex = -1;
+ }
+
+/**
+ * Destructor
+ */
+CTestLtsySharedEnv::~CTestLtsySharedEnv()
+ {
+ ClosePhone();
+ DestroyTelephony();
+ }
+
+/**
+ * Factory function
+ *
+ */
+CTestLtsySharedEnv* CTestLtsySharedEnv::NewL()
+ {
+ CTestLtsySharedEnv* self = new (ELeave) CTestLtsySharedEnv();
+ CleanupStack::PushL(self);
+ self->ConstructL();
+ CleanupStack::Pop();
+ return self;
+ }
+
+/**
+ * 2nd constructor
+ */
+void CTestLtsySharedEnv::ConstructL()
+ {
+ }
+
+/**
+ * Load phone module
+ *
+ * @param const TDesC& aModuleName The phone module used by ETel server for loading a specific TSY
+ */
+void CTestLtsySharedEnv::LoadModuleL(const TDesC& aModuleName)
+ {
+
+ RFs fs;
+ User::LeaveIfError(fs.Connect());
+ CleanupClosePushL(fs);
+ CleanupStack::PopAndDestroy(&fs);
+
+ TInt ret = iSharedTelServer.LoadPhoneModule(aModuleName);
+
+ if (ret != KErrNone)
+ {
+ iSharedTelServer.Close();
+ User::Leave(ret);
+ }
+ }
+
+/**
+ * Open the shared phone
+ *
+ * @param const TDesC& aModuleName The phone module used by ETel server for loading a specific TSY
+ */
+void CTestLtsySharedEnv::OpenPhoneL(const TDesC& aModuleName)
+ {
+ THandleInfo handleInfo;
+ iSharedTelServer.HandleInfo(&handleInfo);
+ if(iPhoneInitialized)
+ {
+ // a panic occurs if handleInfo.iNumThreads <= 0
+ if(handleInfo.iNumThreads <= 0)
+ {
+ iSharedPhone = NULL;
+ iPhoneInitialized = EFalse;
+ iSharedTelServer.Close();
+ }
+ else
+ {
+ // return if phone has already been opened before
+ return;
+ }
+ }
+
+ // make sure this pointer was NULL
+ ASSERT(iSharedPhone == NULL);
+
+ // make a copy of module name
+ iModuleName.Copy(aModuleName);
+
+ // start connect to ETel server
+ User::LeaveIfError(iSharedTelServer.Connect());
+ User::LeaveIfError(iSharedTelServer.ShareAuto());
+
+ // start load module
+ LoadModuleL(aModuleName);
+
+ // check if we can find corresponding phone object according to passed TSY module name
+ if(!FindPhoneIndex())
+ {
+ // the phone index could not be found
+ User::Leave(KErrNotFound);
+ }
+
+ // create a new RMobilePhone instance
+ iSharedPhone = new (ELeave) RMobilePhone();
+ RTelServer::TPhoneInfo phoneInfo;
+ User::LeaveIfError(iSharedTelServer.GetPhoneInfo(iPhoneIndex,phoneInfo));
+
+ // start openning phone
+ TInt ret = iSharedPhone->Open(iSharedTelServer,phoneInfo.iName);
+ if(ret != KErrNone)
+ {
+ User::Leave(ret);
+ }
+
+ iPhoneInitialized = ETrue;
+ }
+
+/**
+ * Find the phone index according to TSY name
+ *
+ */
+TBool CTestLtsySharedEnv::FindPhoneIndex()
+ {
+ TInt phoneNum = 0;
+ TInt err = iSharedTelServer.EnumeratePhones(phoneNum);
+ if(err != KErrNone)
+ {
+ return EFalse;
+ }
+
+ TBool found = EFalse;
+ for(TInt i = 0; i < phoneNum; i++)
+ {
+ RTelServer::TPhoneInfo phoneInfo;
+ TBuf<KModuleNameLen> moduleName;
+ err = iSharedTelServer.GetTsyName(i,moduleName);
+ if(err != KErrNone)
+ {
+ return EFalse;
+ }
+ else
+ {
+ if(moduleName.CompareF(iModuleName) == 0)
+ {
+ iPhoneIndex = i;
+ found = ETrue;
+ break;
+ }
+ }
+ }
+
+ return found;
+ }
+
+/**
+ * Close the shared phone and server
+ * Client must call this function, if it has called OpenPhoneL().
+ *
+ */
+void CTestLtsySharedEnv::ClosePhone()
+ {
+ // close and delete the shared phone
+ iSharedPhone->Close();
+ delete iSharedPhone;
+ iSharedPhone = NULL;
+
+ // unload the phone module
+ iSharedTelServer.UnloadPhoneModule(iModuleName);
+ iSharedTelServer.Close();
+
+ // reset iPhoneInitialized
+ iPhoneInitialized = EFalse;
+ }
+
+/**
+ * Create a CTelephony object and related resource.
+ *
+ */
+void CTestLtsySharedEnv::CreateTelephonyL()
+ {
+ iActiveSchaduler = new (ELeave) CActiveScheduler();
+ CActiveScheduler::Install(iActiveSchaduler);
+
+ iTelephony = CTelephony::NewL();
+ }
+
+/**
+ * Delete CTelephony object related source.
+ *
+ */
+void CTestLtsySharedEnv::DestroyTelephony()
+ {
+
+ delete iActiveSchaduler;
+ iActiveSchaduler = NULL;
+ delete iTelephony;
+ iTelephony = NULL;
+
+ delete iSharedPhone;
+ iSharedPhone = NULL;
+
+ // reset iPhoneInitialized
+ iPhoneInitialized = EFalse;
+ }
+
+CTelephony* CTestLtsySharedEnv::Telephony()
+ {
+ return iTelephony;
+ }
+
+// end of file