diff -r 630d2f34d719 -r 07a122eea281 cbsref/telephonyrefplugins/atltsy/atcommand/callcontrol/src/atclcc.cpp --- a/cbsref/telephonyrefplugins/atltsy/atcommand/callcontrol/src/atclcc.cpp Tue Aug 31 16:23:08 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,511 +0,0 @@ -// Copyright (c) 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: -// @file atclcc.cpp -// This contains CATClcc which query incoming or waitting call information. -// - -//system include - -//user include -#include "mslogger.h" -#include "atmanager.h" -#include "activecommandstore.h" -#include "atclcc.h" -#include "callinformationquerycompletenotify.h" -#include "ltsycommondefine.h" -#include "ltsycallinformationmanager.h" - -//const define -const TInt KLtsyClccReadTimeout = 2; - -//List current call information -_LIT8(KLtsyCLCCCommand, "AT+CLCC\r"); -_LIT8(KLtsyCLCCMatchString, "+CLCC:*"); - - -// --------------------------------------------------------------------------- -// CATClcc::NewL -// other items were commented in a header -// --------------------------------------------------------------------------- -CATClcc* CATClcc::NewL(CGlobalPhonemanager& aGloblePhone, - CCtsyDispatcherCallback& aCtsyDispatcherCallback) - { - LOGTEXT(_L8("[Ltsy CallControl] Starting CATClcc::NewL()")); - - CATClcc* self = CATClcc::NewLC(aGloblePhone, aCtsyDispatcherCallback); - CleanupStack::Pop(self); - return self; - } - -// --------------------------------------------------------------------------- -// CATClcc::NewLC -// other items were commented in a header -// --------------------------------------------------------------------------- -CATClcc* CATClcc::NewLC(CGlobalPhonemanager& aGloblePhone, - CCtsyDispatcherCallback& aCtsyDispatcherCallback) - { - LOGTEXT(_L8("[Ltsy CallControl] Starting CATClcc::NewLC()")); - - CATClcc* self = new (ELeave) CATClcc(aGloblePhone, aCtsyDispatcherCallback); - CleanupStack::PushL(self); - self->ConstructL(); - return self; - } - - -// --------------------------------------------------------------------------- -// CATClcc::~CATClcc -// other items were commented in a header -// --------------------------------------------------------------------------- -CATClcc::~CATClcc() - { - LOGTEXT(_L8("[Ltsy CallControl] Starting CATClcc::~CATClcc()")); - } - -// --------------------------------------------------------------------------- -// CATClcc::CATClcc -// other items were commented in a header -// --------------------------------------------------------------------------- -CATClcc::CATClcc(CGlobalPhonemanager& aGloblePhone, - CCtsyDispatcherCallback& aCtsyDispatcherCallback) - :CAtCommandBase(aGloblePhone, aCtsyDispatcherCallback) - { - LOGTEXT(_L8("[Ltsy CallControl] Starting CATClcc::CATClcc()")); - - iAtType = ELtsyAT_General_CLCC; - - iQueryCallInfoNotify = NULL; - InitVariable(); - } - -// --------------------------------------------------------------------------- -// CATClcc::ConstructL -// other items were commented in a header -// --------------------------------------------------------------------------- -void CATClcc::ConstructL() - { - LOGTEXT(_L8("[Ltsy CallControl] Starting CATClcc::ConstructL()")); - - //Invoke base class function - CAtCommandBase::ConstructL(); - - //Set read and write timeout - SetTimeOut(KLtsyDefaultWriteTimeOut, KLtsyClccReadTimeout); - - //Add expecting string - AddExpectStringL(KLtsyCLCCMatchString); - } - -// --------------------------------------------------------------------------- -// CATClcc::ExecuteCommand -// other items were commented in a header -// --------------------------------------------------------------------------- -void CATClcc::ExecuteCommand() - { - LOGTEXT(_L8("[Ltsy CallControl] Starting CATClcc::ExecuteCommand()")); - - iOKFounded = EFalse; - iTxBuffer.Copy(KLtsyCLCCCommand); - Write(); - iATStep = EATWaitForWriteComplete; - iProcessStates = EProcessInProgress; - } - -// --------------------------------------------------------------------------- -// CATClcc::InitVariable -// other items were commented in a header -// --------------------------------------------------------------------------- -void CATClcc::InitVariable() - { - LOGTEXT(_L8("[Ltsy CallControl] Starting CATClcc::InitVariable()")); - - iOKFounded = EFalse; - iIOStatus = KErrNone; - iATResult = KErrNone; - iATStep = EATNotInProgress; - iProcessStates = EProcessNotInProgress; - } - -// --------------------------------------------------------------------------- -// CATClcc::AddQueryCallInformationCompleteNotify -// other items were commented in a header -// --------------------------------------------------------------------------- -void CATClcc::AddQueryCallInformationCompleteNotify(MCallInformationQueryCompleteNotify* aQueryCallInfoNotify) - { - iQueryCallInfoNotify = aQueryCallInfoNotify; - } - -// --------------------------------------------------------------------------- -// CATClcc::GetProcessStates -// other items were commented in a header -// --------------------------------------------------------------------------- -CATClcc::TATProcessStates CATClcc::GetProcessStates() const - { - return iProcessStates; - } - -// --------------------------------------------------------------------------- -// CATClcc::SetProcessStates -// other items were commented in a header -// --------------------------------------------------------------------------- -void CATClcc::SetProcessStates(CATClcc::TATProcessStates aProcessState) - { - iProcessStates = aProcessState; - } - -// --------------------------------------------------------------------------- -// CATClcc::StartRequest -// other items were commented in a header -// --------------------------------------------------------------------------- -void CATClcc::StartRequest() - { - LOGTEXT(_L8("[Ltsy CallControl] Starting CATClcc::StartRequest()")); - - ExecuteCommand(); - } - -// --------------------------------------------------------------------------- -// CATClcc::ParseCLCCResponseL -// other items were commented in a header -// --------------------------------------------------------------------------- -void CATClcc::ParseCLCCResponseL(const TDesC8& aResponseBuf) - { - LOGTEXT(_L8("[Ltsy CallControl] Starting CATClcc::ParseCLCCResponseL()")); - - RArray array; - CleanupClosePushL(array); - iParser->ParseRespondedBuffer(array, aResponseBuf); - TInt nCount = array.Count(); - - // 1 2 3 4 5 6 - //+CLCC : , , , , - //Its count must >= 6 - if (nCount < 6) - { - CleanupStack::PopAndDestroy(1); - return; - } - - //Parse +CLCC :* buffer - //Only care Waiting call and incoming call - TInt nVal(0); - TLex8 tLex(array[3]); - if (tLex.Val(nVal) == KErrNone) - { - if (nVal == TLtsyCallInformation::EActiveCall || - nVal == TLtsyCallInformation::EHeldCall || - nVal == TLtsyCallInformation::EDialingCall || - nVal == TLtsyCallInformation::EAlertingCall ) - { - CleanupStack::PopAndDestroy(1); - LOGTEXT(_L8("[Ltsy CallControl] First Parse state of the call not find incoming call and waiting call")); - return; - } - - } - else - { - CleanupStack::PopAndDestroy(1); - LOGTEXT(_L8("[Ltsy CallControl] First Parse state of the call Failing")); - return; - } - - //Parse incoming call or waiting call - - //Call id - tLex.Assign(array[1]); - if ((tLex.Val(nVal) != KErrNone)|| - (nVal < KLtsyMinCallId) || - (nVal > KLtsyMaxCallId)) - { - CleanupStack::PopAndDestroy(1); - LOGTEXT(_L8("[Ltsy CallControl] Parse call id of the call Failing")); - return; - } - - //Parse call id success - TLtsyCallInformation& callinfo(iPhoneGlobals.GetCallInfoManager().GetCallInformationByCallId(nVal)); - callinfo.SetCallIdIsUsedInfo(TLtsyCallInformation::EUsed); - callinfo.SetCallId(nVal); - - TBool bSuccess(ETrue); - for (TInt n = 2; bSuccess && n < nCount; n++) - { - //Direction Call - if (n == 2) - { - tLex.Assign(array[n]); - if (tLex.Val(nVal) == KErrNone) - { - if (TLtsyCallInformation::EMoCall == nVal) - { - callinfo.SetCallDirection(TLtsyCallInformation::EMoCall); - } - else - { - callinfo.SetCallDirection(TLtsyCallInformation::EMtCall); - } - } - else - { - bSuccess = EFalse; - LOGTEXT(_L8("[Ltsy CallControl] Parse direction call Failing")); - } - } - - //State of the Call - if (n == 3) - { - tLex.Assign(array[n]); - if (tLex.Val(nVal) == KErrNone) - { - if (TLtsyCallInformation::EInComingCall == nVal) - { - callinfo.SetCallState(TLtsyCallInformation::EInComingCall); - } - else - { - callinfo.SetCallState(TLtsyCallInformation::EWaitingCall); - } - } - else - { - bSuccess = EFalse; - LOGTEXT(_L8("[Ltsy CallControl] Parse state of the call Failing")); - } - } - - //Teleservice - if (n == 4) - { - tLex.Assign(array[n]); - if (tLex.Val(nVal) == KErrNone) - { - if (TLtsyCallInformation::EVoiceCall == nVal) - { - callinfo.SetCallMode(TLtsyCallInformation::EVoiceCall); - } - else if (TLtsyCallInformation::EDataCall == nVal) - { - callinfo.SetCallMode(TLtsyCallInformation::EDataCall); - } - else if (TLtsyCallInformation::EFaxCall == nVal) - { - callinfo.SetCallMode(TLtsyCallInformation::EFaxCall); - } - else - { - callinfo.SetCallMode(TLtsyCallInformation::EUnKnowCall); - } - } - else - { - bSuccess = EFalse; - LOGTEXT(_L8("[Ltsy CallControl] Parse teleservice Failing")); - } - } - - //multiparty - if (n == 5) - { - tLex.Assign(array[n]); - if (tLex.Val(nVal) == KErrNone) - { - if (TLtsyCallInformation::ENotConference == nVal) - { - callinfo.SetConferenceCall(TLtsyCallInformation::ENotConference); - } - else - { - callinfo.SetConferenceCall(TLtsyCallInformation::EIsConference); - } - } - else - { - bSuccess = EFalse; - LOGTEXT(_L8("[Ltsy CallControl] Parse multiparty Failing")); - } - } - - //telenum - if (n == 6) - { - callinfo.SetMobileTelNum(array[n]); - } - - //type of address - if (n == 7) - { - tLex.Assign(array[n]); - if (tLex.Val(nVal) == KErrNone) - { - callinfo.SetAddressType(nVal); - } - else - { - bSuccess = EFalse; - LOGTEXT(_L8("[Ltsy CallControl] Parse type of address Failing")); - } - } - - //alpah - if (n == 8) - { - callinfo.SetMobileName(array[n]); - } - } - - //Parse failer - if (!bSuccess) - { - iPhoneGlobals.GetCallInfoManager().ResetCallInformationByCallId(callinfo.GetCallId()); - } - - CleanupStack::PopAndDestroy(1); - } - -// --------------------------------------------------------------------------- -// CATClcc::ParseResponseL -// other items were commented in a header -// --------------------------------------------------------------------------- -void CATClcc::ParseResponseL(const TDesC8& aResponseBuf) - { - LOGTEXT(_L8("[Ltsy CallControl] Starting CATClcc::ParseResponseL()")); - - //Process expecting string +CLCC : * - if (aResponseBuf.Match(KLtsyCLCCMatchString) == 0) - { - ParseCLCCResponseL(aResponseBuf); - } - else if (aResponseBuf.Match(KLtsyOkString) == 0) //Process expecting string OK - { - iATResult = KErrNone; - iProcessStates = EProcessOK; - iOKFounded = ETrue; - } - else if (aResponseBuf.Match(KLtsyErrorString) == 0) //Process expecting string ERROR - { - iATResult = KErrArgument; - iProcessStates = EProcessError; - iOKFounded = EFalse; - } - } - -// --------------------------------------------------------------------------- -// CATClcc::HandleIOError -// other items were commented in a header -// --------------------------------------------------------------------------- -void CATClcc::HandleIOError() - { - LOGTEXT(_L8("[Ltsy CallControl] Starting CATClcc::HandleIOError()")); - - iProcessStates = EProcessError; - - if (iQueryCallInfoNotify != NULL) - { - iQueryCallInfoNotify->QueryCallInformationComplete(iIOStatus); - } - } - -// --------------------------------------------------------------------------- -// CATClcc::HandleResponseError -// other items were commented in a header -// --------------------------------------------------------------------------- -void CATClcc::HandleResponseError() - { - LOGTEXT(_L8("[Ltsy CallControl] Starting CATClcc::HandleResponseError()")); - - if (iQueryCallInfoNotify != NULL) - { - iQueryCallInfoNotify->QueryCallInformationComplete(iATResult); - } - } - -// --------------------------------------------------------------------------- -// CATClcc::HandleCLCCComplete -// other items were commented in a header -// --------------------------------------------------------------------------- -void CATClcc::HandleCLCCComplete() - { - LOGTEXT(_L8("[Ltsy CallControl] Starting CATClcc::HandleCLCCComplete()")); - - if (iQueryCallInfoNotify != NULL) - { - iQueryCallInfoNotify->QueryCallInformationComplete(KErrNone); - } - } - -// --------------------------------------------------------------------------- -// CATClcc::Complete -// other items were commented in a header -// --------------------------------------------------------------------------- -void CATClcc::Complete() - { - LOGTEXT(_L8("[Ltsy CallControl] Starting CATClcc::Complete()")); - LOGTEXT2(_L8("[Ltsy CallControl] iIOStatus = %d"), iIOStatus); - LOGTEXT2(_L8("[Ltsy CallControl] iATResult = %d"), iATResult); - - //Remove Ative Command and stop timer - CAtCommandBase::Complete(); - - //Let other command can use I/O port - iPhoneGlobals.iEventSignalActive = EFalse; - } - -// --------------------------------------------------------------------------- -// CATClcc::EventSignal -// other items were commented in a header -// --------------------------------------------------------------------------- -void CATClcc::EventSignal(TAtEventSource /*aEventSource*/, TInt aStatus) - { - LOGTEXT(_L8("[Ltsy CallControl] Starting CATClcc::EventSignal()")); - LOGTEXT2(_L8("[Ltsy CallControl] aEventSource = %d\taStatus = %d"),aStatus); - - iIOStatus = aStatus; - if (iIOStatus != KErrNone) - { - HandleIOError(); - Complete(); - return; - } - - switch (iATStep) - { - case EATWaitForWriteComplete: - iATStep = EATReadComplete; - break; - - case EATReadComplete: - ClearCurrentLine(); - if (iATResult == KErrNone) - { - if (iOKFounded) - { - HandleCLCCComplete(); - Complete(); - } - } - else - { - HandleResponseError(); - Complete(); - } - break; - - default: - break; - } - } - -//End of file