diff -r 000000000000 -r 3553901f7fa8 cellularsrvapitest/telephonydevsoundhaitest/etelmm/src/T_RMobilePhoneData.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/cellularsrvapitest/telephonydevsoundhaitest/etelmm/src/T_RMobilePhoneData.cpp Tue Feb 02 01:41:59 2010 +0200 @@ -0,0 +1,195 @@ +/* +* 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 +#include +#include + +// User Includes +#include "T_RMobilePhoneData.h" + + +_LIT(KTelServerKey, "RTelServer"); +_LIT(KPhone, "Phone"); + +/*@{*/ +//LIT's for commands +_LIT(KCmdOpen, "Open"); +_LIT(KCmdClose, "Close"); +_LIT(KCmdInitialise, "Initialise"); +/*}@*/ + +/** + * Two phase constructor + * + * @leave system wide error + */ +CT_RMobilePhoneData* CT_RMobilePhoneData::NewL() + { + CT_RMobilePhoneData* ret=new (ELeave) CT_RMobilePhoneData(); + CleanupStack::PushL(ret); + ret->ConstructL(); + CleanupStack::Pop(ret); + return ret; + } + + +/** + * Protected constructor. First phase construction + */ +CT_RMobilePhoneData::CT_RMobilePhoneData() +:iMobilePhone(NULL) + { + } + +/** + * Second phase construction + * + * @internalComponent + * + * @return N/A + * + * @pre None + * @post None + * + * @leave system wide error + */ +void CT_RMobilePhoneData::ConstructL() + { + iMobilePhone = new (ELeave) RMobilePhone(); + } + +/** + * Public destructor + */ +CT_RMobilePhoneData::~CT_RMobilePhoneData() + { + if(iMobilePhone) + { + delete iMobilePhone; + iMobilePhone = NULL; + } + } + +/** + * Return a pointer to the object that the data wraps + * + * @return pointer to the object that the data wraps + */ +TAny* CT_RMobilePhoneData::GetObject() + { + return iMobilePhone; + } + +TBool CT_RMobilePhoneData::DoCommandL(const TTEFFunction& aCommand, const TTEFSectionName& aSection, const TInt /*aAsyncErrorIndex*/) + { + TBool ret = ETrue; + + if ( aCommand==KCmdOpen ) + { + DoCmdOpen(aSection); + } + else if ( aCommand==KCmdClose ) + { + DoCmdClose(); + } + else if ( aCommand==KCmdInitialise ) + { + DoCmdInitialise(); + } + else + { + ret = EFalse; + ERR_PRINTF1(_L("Unknown command")); + } + + return ret; + } + +//== Mobile Line functions +void CT_RMobilePhoneData::DoCmdOpen(const TDesC& aSection) + { + INFO_PRINTF1(_L("*START*CT_RMobilePhoneData::DoCmdOpen")); + // Check that first phone is available and log phone name. + RTelServer::TPhoneInfo info; + // Reading phone info for the first available phone + TBool dataOk = ETrue; + TInt parPhone = 0; + if ( !GetIntFromConfig(aSection, KPhone(), parPhone) ) + { + ERR_PRINTF2(_L("Error in getting parameter %S from INI file"), &KPhone); + SetBlockResult(EFail); + dataOk = EFalse; + } + TPtrC telServerName; + if ( !GetStringFromConfig(aSection, KTelServerKey(), telServerName) ) + { + ERR_PRINTF2(_L("Error in getting parameter %S from INI file"), &KTelServerKey); + SetBlockResult(EFail); + dataOk = EFalse; + } + if ( dataOk ) + { + RTelServer* telServerObject = static_cast(GetDataObjectL(telServerName)); + INFO_PRINTF1(_L("Check if phone info was found.")); + TRAPD ( error, telServerObject->GetPhoneInfo(parPhone, info) ); + if (error != KErrNone) + { + ERR_PRINTF2(_L("Failed to read phone info for phone KFirstPhone with error %d"), error); + SetError(error); + } + else + { + // Connect to RMobilePhone interface. + INFO_PRINTF1(_L("Opening connection to phone")); + error = iMobilePhone->Open(*telServerObject, info.iName); + if (error != KErrNone) + { + ERR_PRINTF2(_L("Connection to phone failed with error %d"), error); + SetError(error); + } + else + { + INFO_PRINTF1(_L("Opening connection to phone sucessfull")); + } + } + } + INFO_PRINTF1(_L("*END*CT_RMobilePhoneData::DoCmdOpen")); + } + +void CT_RMobilePhoneData::DoCmdInitialise() + { + INFO_PRINTF1(_L("*START*CT_RMobilePhoneData::DoCmdInitialise")); + INFO_PRINTF1(_L("Initialising the phone")); + TRAPD( error, iMobilePhone->Initialise() ); + if (error != KErrNone) + { + ERR_PRINTF2(_L("Failed to initalise the phone with error %d"), error); + SetError(error); + } + INFO_PRINTF1(_L("*END*CT_RMobilePhoneData::DoCmdInitialise")); + } + +void CT_RMobilePhoneData::DoCmdClose() + { + INFO_PRINTF1(_L("*START*CT_RMobilePhoneData::DoCmdClosePhone")); + INFO_PRINTF1(_L("Closing mobile phone session...")); + iMobilePhone->Close(); + INFO_PRINTF1(_L("*END*CT_RMobilePhoneData::DoCmdInitialise")); + } +