cbsref/telephonyrefplugins/atltsy/atcommand/callcontrol/src/athangup.cpp
author hgs
Thu, 07 Oct 2010 11:24:36 +0100
changeset 76 91e0f833dd8b
parent 44 8b72faa1200f
permissions -rw-r--r--
201039_01
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
44
8b72faa1200f 201024_02
hgs
parents:
diff changeset
     1
// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
8b72faa1200f 201024_02
hgs
parents:
diff changeset
     2
// All rights reserved.
8b72faa1200f 201024_02
hgs
parents:
diff changeset
     3
// This component and the accompanying materials are made available
8b72faa1200f 201024_02
hgs
parents:
diff changeset
     4
// under the terms of "Eclipse Public License v1.0"
8b72faa1200f 201024_02
hgs
parents:
diff changeset
     5
// which accompanies this distribution, and is available
8b72faa1200f 201024_02
hgs
parents:
diff changeset
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
8b72faa1200f 201024_02
hgs
parents:
diff changeset
     7
//
8b72faa1200f 201024_02
hgs
parents:
diff changeset
     8
// Initial Contributors:
8b72faa1200f 201024_02
hgs
parents:
diff changeset
     9
// Nokia Corporation - initial contribution.
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    10
//
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    11
// Contributors:
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    12
//
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    13
// Description:
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    14
// Hangup a ongoning call
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    15
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    16
//system include
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    17
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    18
//user include
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    19
#include "athangup.h"
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    20
#include "atmanager.h"
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    21
#include "activecommandstore.h"
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    22
#include "mslogger.h"
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    23
#include "ltsycallinformationmanager.h"
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    24
#include "allcallreleasecompleteobserver.h"
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    25
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    26
//const define
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    27
const TInt KLtsyHangupReadTimeout = 2;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    28
_LIT8(KLtsyHangUpAllCallCommand, "ATH\r"); //ATH0
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    29
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    30
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    31
CATHangUp* CATHangUp::NewL(CGlobalPhonemanager& aGloblePhone,
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    32
			               CCtsyDispatcherCallback& aCtsyDispatcherCallback)
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    33
	{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    34
	LOGTEXT(_L8("[Ltsy CallControl] Starting CATHangUp::NewL()"));
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    35
	
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    36
	CATHangUp* self = CATHangUp::NewLC(aGloblePhone, aCtsyDispatcherCallback);
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    37
	CleanupStack::Pop(self);
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    38
	return self;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    39
	}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    40
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    41
CATHangUp* CATHangUp::NewLC(CGlobalPhonemanager& aGloblePhone,
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    42
			               CCtsyDispatcherCallback& aCtsyDispatcherCallback)
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    43
	{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    44
	LOGTEXT(_L8("[Ltsy CallControl] Starting CATHangUp::NewLC()"));
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    45
	
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    46
	CATHangUp* self = new (ELeave) CATHangUp(aGloblePhone, aCtsyDispatcherCallback);
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    47
	CleanupStack::PushL(self);
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    48
	self->ConstructL();
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    49
	return self;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    50
	}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    51
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    52
CATHangUp::~CATHangUp()
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    53
	{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    54
	LOGTEXT(_L8("[Ltsy CallControl] Starting CATHangUp::~CATHangUp()"));
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    55
	}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    56
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    57
CATHangUp::CATHangUp(CGlobalPhonemanager& aGloblePhone,
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    58
		             CCtsyDispatcherCallback& aCtsyDispatcherCallback)
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    59
					 :CAtCommandBase(aGloblePhone, aCtsyDispatcherCallback)
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    60
	{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    61
	LOGTEXT(_L8("[Ltsy CallControl] Starting CATHangUp::CATHangUp()"));
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    62
	
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    63
	iAtType = ELtsyAT_Call_ATH;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    64
	iIOStatus = KErrNone;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    65
	iATResult = KErrNone;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    66
	iHangupStep = EATHangUpNotInProgress;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    67
	iHangupOperator = EUnknownAPI;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    68
	iAllCallReleaseObserver = NULL;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    69
	}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    70
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    71
void CATHangUp::ConstructL()
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    72
	{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    73
	LOGTEXT(_L8("[Ltsy CallControl] Starting CATHangUp::ConstructL()"));
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    74
	
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    75
	//Invoke base class function
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    76
	CAtCommandBase::ConstructL();
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    77
	
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    78
	//Set read and write timeout
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    79
	SetTimeOut(KLtsyDefaultWriteTimeOut, KLtsyHangupReadTimeout);
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    80
	}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    81
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    82
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    83
void CATHangUp::ExecuteCommand()
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    84
	{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    85
	LOGTEXT(_L8("[Ltsy CallControl] Starting CATHangUp::ExecuteCommand()"));
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    86
	
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    87
	iTxBuffer.Copy(KLtsyHangUpAllCallCommand);
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    88
	Write();
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    89
	iHangupStep = EATHangUpWaitForWriteComplete;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    90
	}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    91
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    92
void CATHangUp::StartRequest()
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    93
	{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    94
	LOGTEXT(_L8("[Ltsy CallControl] Starting CATHangUp::StartRequest()"));
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    95
	
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    96
	ExecuteCommand();
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    97
	}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    98
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    99
void CATHangUp::AddAllCallReleaseObserver(MAllCallReleaseCompleteObserver* aObserver)
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   100
	{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   101
	LOGTEXT(_L8("[Ltsy CallControl] Starting CATHangUp::AddAllCallReleaseObserver()"));
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   102
	
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   103
	iAllCallReleaseObserver = aObserver;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   104
	}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   105
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   106
void CATHangUp::InitVariable()
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   107
	{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   108
	iAtType = ELtsyAT_Call_ATH;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   109
	iIOStatus = KErrNone;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   110
	iATResult = KErrNone;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   111
	iHangupStep = EATHangUpNotInProgress;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   112
	iHangupOperator = EUnknownAPI;	
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   113
	}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   114
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   115
void CATHangUp::SetHangupOperator(THangupOperator aOperator)
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   116
	{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   117
	LOGTEXT(_L8("[Ltsy CallControl] Starting CATHangUp::SetHangupOperator()"));
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   118
	
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   119
	iHangupOperator = aOperator;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   120
	}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   121
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   122
void CATHangUp::HandleIOError()
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   123
	{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   124
	LOGTEXT(_L8("[Ltsy CallControl] Starting CATHangUp::HandleIOError()"));
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   125
	
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   126
	if (iHangupOperator == ECustomAPI)
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   127
		{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   128
		iCtsyDispatcherCallback.CallbackCallControlTerminateAllCallsComp(iIOStatus);
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   129
		}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   130
	else if (iHangupOperator == ERMobilePhoneAPI)
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   131
		{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   132
		iCtsyDispatcherCallback.CallbackPhoneTerminateAllCallsComp(iIOStatus);
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   133
		}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   134
	else
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   135
		{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   136
		LOGTEXT(_L8("[Ltsy CallControl] Hangup unknown operator!!!!"));
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   137
		}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   138
	}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   139
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   140
void CATHangUp::HandleResponseError()
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   141
	{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   142
	LOGTEXT(_L8("[Ltsy CallControl] Starting CATHangUp::HandleResponseError()"));
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   143
	
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   144
	if (iHangupOperator == ECustomAPI)
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   145
		{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   146
		iCtsyDispatcherCallback.CallbackCallControlTerminateAllCallsComp(iATResult);
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   147
		}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   148
	else if (iHangupOperator == ERMobilePhoneAPI)
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   149
		{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   150
		iCtsyDispatcherCallback.CallbackPhoneTerminateAllCallsComp(iATResult);
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   151
		}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   152
	else
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   153
		{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   154
		LOGTEXT(_L8("[Ltsy CallControl] Hangup unknown operator!!!!"));
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   155
		}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   156
	}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   157
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   158
void CATHangUp::HandleDisconnectedComplete()
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   159
	{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   160
	LOGTEXT(_L8("[Ltsy CallControl] Starting CATHangUp::HandleDisconnectedComplete()"));
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   161
	
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   162
	if (iHangupOperator == ECustomAPI)
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   163
		{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   164
		iCtsyDispatcherCallback.CallbackCallControlTerminateAllCallsComp(iATResult);
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   165
		}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   166
	else if (iHangupOperator == ERMobilePhoneAPI)
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   167
		{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   168
		iCtsyDispatcherCallback.CallbackPhoneTerminateAllCallsComp(iATResult);
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   169
		}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   170
	else 
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   171
		{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   172
		LOGTEXT(_L8("[Ltsy CallControl] Hangup unknown operator!!!!"));
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   173
		if (iAllCallReleaseObserver == NULL)
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   174
			{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   175
			return;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   176
			}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   177
		}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   178
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   179
	//Notify CTSY all call idel
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   180
	for (TInt n = KLtsyMinCallId; n <= KLtsyMaxCallId; n++)
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   181
		{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   182
		TLtsyCallInformation& tCallInfo(iPhoneGlobals.GetCallInfoManager().GetCallInformationByCallId(n));
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   183
		if (tCallInfo.GetCallIdIsUsedInfo() == TLtsyCallInformation::EUsed)
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   184
			{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   185
			
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   186
			if (tCallInfo.GetCallState() == TLtsyCallInformation::EInComingCall ||
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   187
				tCallInfo.GetCallState() == TLtsyCallInformation::EWaitingCall	)
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   188
				{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   189
				iCtsyDispatcherCallback.CallbackCallControlNotifyCallStatusChangeInd(KErrGsmCCCallRejected, 
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   190
						                                                             n, 
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   191
						                                                             RMobileCall::EStatusDisconnecting);			
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   192
				iCtsyDispatcherCallback.CallbackCallControlNotifyCallStatusChangeInd(KErrGsmCCCallRejected, 
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   193
																					 n,
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   194
																					 RMobileCall::EStatusIdle);				
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   195
				}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   196
			else
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   197
				{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   198
				iCtsyDispatcherCallback.CallbackCallControlNotifyCallStatusChangeInd(KErrGsmCCNormalCallClearing, 
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   199
						                                                             n, 
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   200
						                                                             RMobileCall::EStatusDisconnecting);			
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   201
				iCtsyDispatcherCallback.CallbackCallControlNotifyCallStatusChangeInd(KErrGsmCCNormalCallClearing, 
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   202
																					 n,
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   203
																					 RMobileCall::EStatusIdle);				
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   204
				}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   205
			}		
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   206
		}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   207
	
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   208
	//Setting all call id state unused
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   209
	iPhoneGlobals.GetCallInfoManager().ResetAllCalInformation();
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   210
	}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   211
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   212
void CATHangUp::ParseResponseL(const TDesC8& aResponseBuf)
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   213
	{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   214
	LOGTEXT(_L8("[Ltsy CallControl] Starting CATHangUp::ParseResponseL()"));
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   215
	
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   216
	if (aResponseBuf.Match(KLtsyOkString) == 0)
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   217
		{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   218
		LOGTEXT(_L8("[Ltsy CallControl] Hang up call reponse is OK"));
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   219
		
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   220
		iATResult = KErrNone;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   221
		}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   222
	else if (aResponseBuf.Match(KLtsyErrorString) == 0)
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   223
		{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   224
		LOGTEXT(_L8("[Ltsy CallControl] Hang up call reponse is Error"));
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   225
		
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   226
		iATResult = KErrArgument;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   227
		}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   228
	}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   229
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   230
void CATHangUp::Complete()
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   231
	{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   232
	LOGTEXT(_L8("[Ltsy CallControl] Starting CATHangUp::Complete()"));
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   233
	LOGTEXT2(_L8("[Ltsy CallControl] iIOStatus = %d"), iIOStatus);
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   234
	LOGTEXT2(_L8("[Ltsy CallControl] iATResult = %d"), iATResult);
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   235
	
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   236
	//Remove Ative Command and stop timer
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   237
	CAtCommandBase::Complete();
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   238
		
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   239
	//Let other command can use I/O port
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   240
	if (iAllCallReleaseObserver == NULL)
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   241
		{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   242
		iPhoneGlobals.iEventSignalActive = EFalse;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   243
		}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   244
	else
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   245
		{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   246
		if (iIOStatus != KErrNone)
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   247
			{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   248
			iAllCallReleaseObserver->ReleaseAllCallComplete(iIOStatus);
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   249
			}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   250
		else
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   251
			{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   252
			iAllCallReleaseObserver->ReleaseAllCallComplete(iATResult);
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   253
			}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   254
		}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   255
	}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   256
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   257
void CATHangUp::EventSignal(TAtEventSource /*aEventSource*/, TInt aStatus)
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   258
	{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   259
	LOGTEXT(_L8("[Ltsy CallControl] Starting CATHangUp::EventSignal()"));
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   260
	LOGTEXT2(_L8("[Ltsy CallControl] aEventSource = %d\taStatus = %d"),aStatus);
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   261
	
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   262
	iIOStatus = aStatus;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   263
	if (iIOStatus != KErrNone)
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   264
		{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   265
		HandleIOError();
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   266
		Complete();
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   267
		return;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   268
		}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   269
	
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   270
	switch (iHangupStep)
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   271
		{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   272
		case EATHangUpWaitForWriteComplete:
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   273
			iHangupStep = EATHangUpReadComplete;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   274
			break;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   275
			
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   276
		case EATHangUpReadComplete:
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   277
			if (iATResult == KErrNone)
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   278
				{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   279
				HandleDisconnectedComplete();
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   280
				}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   281
			else
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   282
				{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   283
				HandleResponseError();
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   284
				}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   285
			Complete();
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   286
			break;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   287
			
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   288
		default:
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   289
			break;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   290
		}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   291
	}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   292
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   293
//End of file