--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cellularsrvapitest/telephonydevsoundhaitest/etelmm/src/T_RMmCustomAPIData.cpp Tue Feb 02 01:41:59 2010 +0200
@@ -0,0 +1,280 @@
+/*
+* Copyright (c) 2005-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:
+*
+*/
+
+
+#include <cdbcols.h>
+#include <e32base.h>
+#include <e32def.h>
+
+// User Includes
+#include "T_RMmCustomAPIData.h"
+
+_LIT(KMobilePhoneKey, "RMobilePhone");
+
+_LIT(KChangeMode, "ChangeMode");
+_LIT(KCheckMode, "CheckMode");
+
+// Mode Change
+_LIT(KCmdSetSystemNetworkMode, "SetSystemNetworkMode");
+_LIT(KCmdGetCurrentSystemNetworkModes, "GetCurrentSystemNetworkModes");
+_LIT(KCmdUtilityModeCheck, "UtilityModeCheck");
+_LIT(KCmdOpen, "Open");
+_LIT(KCmdClose, "Close");
+
+_LIT(KGSM, "GSM");
+_LIT(KWCDMA, "WCDMA");
+_LIT(KDUAL, "Dual");
+
+const CDataWrapperBase::TEnumEntryTable CT_RMmCustomApiData::iEnumTestCaseMode[] =
+ {
+ { KGSM, RMmCustomAPI::KCapsNetworkModeGsm }, //GSM
+ { KWCDMA, RMmCustomAPI::KCapsNetworkModeUmts }, //WCDMA(3G)
+ { KDUAL, RMmCustomAPI::KCapsNetworkModeDual } //Dual, Phone decides
+ };
+
+
+
+/**
+ * Two phase constructor
+ *
+ * @leave system wide error
+ */
+CT_RMmCustomApiData* CT_RMmCustomApiData::NewL()
+ {
+ CT_RMmCustomApiData* ret = new(ELeave) CT_RMmCustomApiData();
+ CleanupStack::PushL(ret);
+ ret->ConstructL();
+ CleanupStack::Pop(ret);
+ return ret;
+ }
+
+
+/**
+ * Protected constructor. First phase construction
+ */
+CT_RMmCustomApiData::CT_RMmCustomApiData()
+: iActiveCallback(NULL),
+ iNetworkMode(0),
+ iCustomPhone(NULL)
+ {
+ }
+
+/**
+ * Second phase construction
+ *
+ * @internalComponent
+ *
+ * @return N/A
+ *
+ * @pre None
+ * @post None
+ *
+ * @leave system wide error
+ */
+void CT_RMmCustomApiData::ConstructL()
+ {
+ iCustomPhone = new (ELeave) RMmCustomAPI();
+ iActiveCallback = CActiveCallback::NewL(*this);
+ }
+
+/**
+ * Public destructor
+ */
+CT_RMmCustomApiData::~CT_RMmCustomApiData()
+ {
+ if(iCustomPhone)
+ {
+ delete iCustomPhone;
+ iCustomPhone = NULL;
+ }
+
+ if(iActiveCallback)
+ {
+ delete iActiveCallback;
+ iActiveCallback = NULL;
+ }
+
+ }
+
+/**
+ * Return a pointer to the object that the data wraps
+ *
+ * @return pointer to the object that the data wraps
+ */
+TAny* CT_RMmCustomApiData::GetObject()
+ {
+ return iCustomPhone;
+ }
+
+void CT_RMmCustomApiData::RunL(CActive* aActive, TInt aIndex)
+ {
+ DecOutstanding(); // One of the async calls has completed
+ TInt err = aActive->iStatus.Int();
+ if( err != KErrNone )
+ {
+ ERR_PRINTF2(_L("RunL Error %d"), err);
+ SetAsyncError( aIndex, err );
+ }
+ else
+ {
+ INFO_PRINTF1(_L("RunL completed successfully"));
+ }
+ }
+
+TBool CT_RMmCustomApiData::DoCommandL(const TTEFFunction& aCommand, const TTEFSectionName& aSection, const TInt aAsyncErrorIndex)
+ {
+ TBool ret = ETrue;
+
+ if ( aCommand==KCmdUtilityModeCheck )
+ {
+ DoCmdUtilityModeCheck(aSection);
+ }
+ else if ( aCommand==KCmdGetCurrentSystemNetworkModes )
+ {
+ DoCmdGetCurrentSystemNetworkModes(aAsyncErrorIndex);
+ }
+ else if ( aCommand==KCmdSetSystemNetworkMode )
+ {
+ DoCmdSetSystemNetworkMode(aSection, aAsyncErrorIndex);
+ }
+ else if (aCommand==KCmdOpen)
+ {
+ DoCmdOpen(aSection);
+ }
+ else if (aCommand==KCmdClose)
+ {
+ DoCmdClose();
+ }
+ else
+ {
+ ERR_PRINTF1(_L("Unknown command"));
+ ret = EFalse;
+ }
+ return ret;
+ }
+
+void CT_RMmCustomApiData::DoCmdClose()
+ {
+ INFO_PRINTF1(_L("*START*CT_RMmCustomApiData::DoCmdCloseCustomApi"));
+ iCustomPhone->Close();
+ INFO_PRINTF1(_L("*END*CT_RMmCustomApiData::DoCmdCloseCustomApi"));
+ }
+
+/**
+ * Selects the network phone that is currently used.
+ * @param aNetworkMode is the new network mode.
+ * @return Request status.
+ */
+void CT_RMmCustomApiData::DoCmdSetSystemNetworkMode(const TTEFSectionName& aSection, const TInt aAsyncErrorIndex)
+ {
+ INFO_PRINTF1(_L("*START*CT_RMmCustomApiData::ModeChange"));
+
+ TInt mode = 0;
+ if (!GetEnumFromConfig(aSection, KChangeMode, iEnumTestCaseMode, mode))
+ {
+ ERR_PRINTF2(_L("Error in getting parameter %S from INI file"), &KChangeMode);
+ SetBlockResult(EFail);
+ }
+ else
+ {
+ INFO_PRINTF2(_L("Change network mode to: %d"), mode);
+ // Setting the network mode, with aNetworkMode
+ INFO_PRINTF1(_L("Use RMmCustomAPI to set the phone mode."));
+ iCustomPhone->SetSystemNetworkMode(iActiveCallback->iStatus, static_cast<RMmCustomAPI::TNetworkModeCaps>(mode));
+ iActiveCallback->Activate(aAsyncErrorIndex);
+ IncOutstanding();
+ }
+ INFO_PRINTF1(_L("*END*CT_RMmCustomApiData::ModeChange"));
+ }
+
+/**
+ * Checks that the network mode of phone is the same as defined in parameter.
+ */
+void CT_RMmCustomApiData::DoCmdGetCurrentSystemNetworkModes(const TInt aAsyncErrorIndex)
+ {
+ INFO_PRINTF1(_L("*START*CT_RMmCustomApiData::DoCmdGetCurrentSystemNetworkModes"));
+
+ INFO_PRINTF1(_L("Get the current network mode from RMmCustomAPI."));
+
+ iCustomPhone->GetCurrentSystemNetworkModes(iActiveCallback->iStatus, iNetworkMode);
+ iActiveCallback->Activate(aAsyncErrorIndex);
+ IncOutstanding();
+
+ INFO_PRINTF1(_L("*END*CT_RMmCustomApiData::DoCmdGetCurrentSystemNetworkModes"));
+ }
+
+/**
+ * Checks that the network mode of phone is the same as defined in parameter.
+ */
+void CT_RMmCustomApiData::DoCmdUtilityModeCheck(const TTEFSectionName& aSection)
+ {
+ INFO_PRINTF1(_L("*START*CT_RMmCustomApiData::ModeCheck"));
+ TInt mode;
+ if (!GetEnumFromConfig(aSection, KCheckMode, iEnumTestCaseMode, mode))
+ {
+ ERR_PRINTF2(_L("Error in getting parameter %S from INI file"), &KChangeMode);
+ SetBlockResult(EFail);
+ }
+ else
+ {
+ INFO_PRINTF2(_L("Check network mode to: %d"), mode);
+ if ( iNetworkMode != static_cast<RMmCustomAPI::TNetworkModeCaps>(mode))
+ {
+ ERR_PRINTF1(_L("Network mode of phone is different to expected."));
+ SetBlockResult(EFail);
+ }
+ else
+ {
+ INFO_PRINTF1(_L("Mode check succeeded"));
+ }
+ }
+ INFO_PRINTF1(_L("*END*CT_RMmCustomApiData::ModeCheck"));
+ }
+
+
+void CT_RMmCustomApiData::DoCmdOpen(const TTEFSectionName& aSection)
+ {
+ INFO_PRINTF1(_L("*START*CT_RMmCustomApiData::DoCmdOpen"));
+ TPtrC mobilePhoneName;
+ if ( !GetStringFromConfig(aSection, KMobilePhoneKey(), mobilePhoneName) )
+ {
+ ERR_PRINTF2(_L("Error in getting parameter %S from INI file"), &KMobilePhoneKey);
+ SetBlockResult(EFail);
+ }
+ else
+ {
+ RMobilePhone* mobilePhoneObject = static_cast<RMobilePhone*>(GetDataObjectL(mobilePhoneName));
+ INFO_PRINTF1(_L("Initializing the custom phone API"));
+ TRAPD( error, iCustomPhone->Open(*mobilePhoneObject) );
+ if (error != KErrNone)
+ {
+ ERR_PRINTF2(_L("Failed to initialize the custom phone API with error %d"), error);
+ SetError(error);
+ }
+ else
+ {
+ INFO_PRINTF1(_L("Initialize the custom phone API Succeeded"));
+ }
+ }
+ INFO_PRINTF1(_L("*END*CT_RMmCustomApiData::DoCmdOpen"));
+ }
+
+
+
+
+
+