diff -r 000000000000 -r f63038272f30 bluetoothengine/btmac/src/BTMonoCmdHandler/btmcnumber.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bluetoothengine/btmac/src/BTMonoCmdHandler/btmcnumber.cpp Mon Jan 18 20:28:57 2010 +0200 @@ -0,0 +1,164 @@ +/* +* Copyright (c) 2005 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: General Active Object offering asynchronous service +* +*/ + +#include "atcodec.h" +#include "btmcprotocol.h" +#include "btmcnumber.h" +#include +#include "debug.h" + +// ----------------------------------------------------------------------------- +// CBtmcNumber::NewL +// ----------------------------------------------------------------------------- +CBtmcNumber* CBtmcNumber::NewL( + MBtmcActiveObserver& aObserver, + CBtmcProtocol& aProtocol, + CActive::TPriority aPriority, + TInt aServiceId) + { + CBtmcNumber* self = new (ELeave) CBtmcNumber(aObserver, aProtocol, aPriority, aServiceId); + CleanupStack::PushL(self); + self->ConstructL(); + CleanupStack::Pop(self); + return self; + } + +// ----------------------------------------------------------------------------- +// CBtmcNumber::~CBtmcNumber +// ----------------------------------------------------------------------------- +CBtmcNumber::~CBtmcNumber() + { + TRACE_FUNC_ENTRY + Cancel(); + iStore.Close(); + iPhone.Close(); + iServer.UnloadPhoneModule(KMmTsyModuleName); + iServer.Close(); + TRACE_FUNC_EXIT + } + +// ------------------------------------------------------------------------------- +// CBtmcNumber::GoActive +// ------------------------------------------------------------------------------- +void CBtmcNumber::GoActive() + { + TRACE_ASSERT(!IsActive(), KErrGeneral); + iEntry.iIndex = 1; + iStore.Read(iStatus, iPckg); + SetActive(); + TRACE_FUNC + } + +// ------------------------------------------------------------------------------- +// CBtmcNumber::RunL +// ------------------------------------------------------------------------------- +void CBtmcNumber::RunL() + { + TRACE_FUNC_ENTRY + + RATResultPtrArray resarr; + ATObjArrayCleanupResetAndDestroyPushL(resarr); + CATResult* okerr = NULL; + if (iStatus == KErrNone) + { + TBuf8 nameBuf; + nameBuf.Copy(iEntry.iNumber.iTelNumber); + + TRACE_INFO((_L8("ao status %d, phonebook returned %S"), iStatus.Int(), &nameBuf)) + RATParamArray params; + CleanupClosePushL(params); + LEAVE_IF_ERROR(params.Append(TATParam())) + LEAVE_IF_ERROR(params.Append(TATParam(nameBuf, EATDQStringParam))) + + TBTMonoATPhoneNumberType numType; + if (nameBuf.Length() == 0) + { + numType = EBTMonoATPhoneNumberUnavailable; + } + else if(nameBuf.Locate('+') == 0) + { + numType = EBTMonoATPhoneNumberInternational; + } + else + { + numType = EBTMonoATPhoneNumberNational; + } + LEAVE_IF_ERROR(params.Append(TATParam(numType))) + LEAVE_IF_ERROR(params.Append(TATParam())) + LEAVE_IF_ERROR(params.Append(TATParam(4))) + CATResult* code = CATResult::NewL(EATCNUM, EATActionResult, ¶ms); + CleanupStack::PushL(code); + resarr.AppendL(code); + CleanupStack::Pop(code); + CleanupStack::PopAndDestroy(¶ms); + okerr = CATResult::NewL(EATOK); + } + else + { + okerr = CATResult::NewL(EATERROR); + } + CleanupStack::PushL(okerr); + resarr.AppendL(okerr); + CleanupStack::Pop(okerr); + iProtocol.SendResponseL(resarr); + CleanupStack::PopAndDestroy(&resarr); + Observer().RequestCompletedL(*this, iStatus.Int()); + TRACE_FUNC_EXIT + } + +// ------------------------------------------------------------------------------- +// CBtmcNumber::DoCancel +// ------------------------------------------------------------------------------- +void CBtmcNumber::DoCancel() + { + iStore.CancelAsyncRequest(EMobilePhoneStoreRead); + TRACE_FUNC + } + + +// ------------------------------------------------------------------------------- +// CBtmcNumber::RunError +// ------------------------------------------------------------------------------- +TInt CBtmcNumber::RunError(TInt /*aErr*/) + { + TRACE_FUNC + return KErrNone; + } + +// ----------------------------------------------------------------------------- +// CBtmcNumber::CBtmcNumber +// ----------------------------------------------------------------------------- +CBtmcNumber::CBtmcNumber( + MBtmcActiveObserver& aObserver, + CBtmcProtocol& aProtocol, + CActive::TPriority aPriority, + TInt aServiceId) + : CBtmcActive(aObserver, aPriority, aServiceId), iProtocol(aProtocol), iPckg(iEntry) + { + } + +void CBtmcNumber::ConstructL() + { + TRACE_FUNC_ENTRY + LEAVE_IF_ERROR(iServer.Connect()); + iServer.LoadPhoneModule(KMmTsyModuleName); + LEAVE_IF_ERROR(iPhone.Open(iServer, KMmTsyPhoneName)); + LEAVE_IF_ERROR(iStore.Open(iPhone));//, KETelIccMsisdnPhoneBook)); + TRACE_FUNC_EXIT + } + +// End of File