--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/convergedcallengine/csplugin/src/cspvoicecall.cpp Tue Feb 02 01:11:09 2010 +0200
@@ -0,0 +1,244 @@
+/*
+* Copyright (c) 2007 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: Implements class CSPVoiceCall which provides call functionality
+*
+*/
+
+
+#include <etelmm.h>
+#include <etel.h>
+#include <mccpcallobserver.h>
+#include <cccecallparameters.h>
+
+#include "cspvoicecall.h"
+#include "cspetelcallrequester.h"
+#include "cspetelcalleventmonitor.h"
+#include "cspetelcallstatusmonitor.h"
+#include "csplogger.h"
+#include "csppanic.pan"
+#include "cspconsts.h"
+#include "mcspcommoninfo.h"
+
+
+// ---------------------------------------------------------------------------
+// CSPVoiceCall::NewL Two phased construction.
+// ---------------------------------------------------------------------------
+//
+CSPVoiceCall* CSPVoiceCall::NewL( const TDesC& aName,
+ RMobileLine& aLine, TBool aMobileOriginated,
+ const CCCECallParameters& aParams,
+ MCSPCommonInfo& aCommonInfo,
+ TBool aIsEmergency )
+ {
+ CSPLOGSTRING(CSPOBJECT, "CSPVoiceCall::NewL <");
+
+ CSPVoiceCall* self = new ( ELeave ) CSPVoiceCall( aLine,
+ aMobileOriginated,
+ aName,
+ aCommonInfo,
+ aIsEmergency );
+ CleanupStack::PushL( self );
+ self->ConstructL( aParams );
+ CleanupStack::Pop( self );
+ CSPLOGSTRING(CSPOBJECT, "CSPVoiceCall::NewL >");
+ return self;
+ }
+
+// ---------------------------------------------------------------------------
+// CSPVoiceCall::~CSPVoiceCall
+// ---------------------------------------------------------------------------
+//
+CSPVoiceCall::~CSPVoiceCall()
+ {
+ CSPLOGSTRING(CSPOBJECT, "CSPVoiceCall::~CSPVoiceCall");
+ }
+
+// ---------------------------------------------------------------------------
+// CSPVoiceCall::GoOneToOneL
+// Goes one to one from conference.
+// ---------------------------------------------------------------------------
+//
+TInt CSPVoiceCall::GoOneToOne( )
+ {
+ CSPLOGSTRING(CSPREQIN, "CSPVoiceCall::GoOneToOne");
+ return iRequester->MakeRequest(
+ CSPEtelCallRequester::ERequestTypeGoOneToOne );
+ }
+
+// ---------------------------------------------------------------------------
+// From class MCCPCSCall
+// CSPVoiceCall::Dial
+// ---------------------------------------------------------------------------
+//
+TInt CSPVoiceCall::DialFdnCond( TBool aFdnCond )
+ {
+ CSPLOGSTRING(CSPREQIN, "CSPVoiceCall::DialFdnCond <");
+
+ if ( !iMobileOriginated )
+ {
+ CSPLOGSTRING(CSPINT,
+ "CSPVoiceCall::DialFdnCond MT CALL, Dial not supported");
+ return KErrNotSupported;
+ }
+
+ CSPLOGSTRING(CSPINT, "CSPVoiceCall::DialFdnCond making request");
+
+ SetDefaultCallParameters();
+ iCommonInfo.InitializeCallParameters( iCallParams );
+ iCallParams.iSubAddress = iParams->SubAddress();
+ iCallParams.iBearerCap1 = iParams->Bearer();
+
+ if ( CCCECallParameters::ECCECallOriginSAT == iParams->Origin() )
+ {
+ iCallParams.iCallParamOrigin = RMobileCall::EOriginatorSIM;
+ }
+
+ TInt err(KErrNone);
+ if ( aFdnCond )
+ {
+ err = iRequester->MakeDialRequest( iCallParamsPckg, iRemotePartyNumber );
+ }
+ else
+ {
+ err = iRequester->MakeDialNoFdnCheckRequest(
+ iCallParamsPckg, iRemotePartyNumber );
+ }
+ CSPLOGSTRING2(CSPINT, "CSPVoiceCall::DialFdnCond > res: %d", err );
+ return err;
+ }
+
+// ---------------------------------------------------------------------------
+// Make the DialEmergencyCall request to ETel ( impl. of MCCPEmergencyCall )
+// ---------------------------------------------------------------------------
+//
+TInt CSPVoiceCall::Dial( const TDesC& aEmergencyNumber )
+ {
+ CSPLOGSTRING2(CSPREQIN, "CSPVoiceCall::Dial EMERGENCY %S", &aEmergencyNumber);
+ iDialCompletionCode = KErrNone;
+ iTerminationErrorNotified = EFalse;
+ iIsEmergencyCall = ETrue;
+ iEmergencyNumber.Zero();
+ TInt emergencyNumberLength = aEmergencyNumber.Length();
+
+ if ( emergencyNumberLength > 0 &&
+ emergencyNumberLength <= RMobileENStore::KEmergencyNumberSize )
+ {
+ iEmergencyNumber.Append( aEmergencyNumber );
+ }
+ else if ( emergencyNumberLength > RMobileENStore::KEmergencyNumberSize )
+ {
+ CSPLOGSTRING(CSPERROR, "CSPVoiceCall::Dial invalid argument" );
+ return KErrArgument;
+ }
+
+ CSPLOGSTRING2(CSPREQIN, "CSPVoiceCall::Dial using %S", &iEmergencyNumber);
+
+ TInt err( iRequester->MakeDialEmergencyRequest( iEmergencyNumber ) );
+
+ CSPLOGSTRING2(CSPINT, "CSPVoiceCall::Dial res %d", err );
+ return err;
+ }
+
+// ---------------------------------------------------------------------------
+// From class MCCPCall
+// CSPVoiceCall::Answer
+// ---------------------------------------------------------------------------
+//
+TInt CSPVoiceCall::Answer()
+ {
+ CSPLOGSTRING(CSPREQIN, "CSPVoiceCall::Answer");
+ return CSPCall::Answer();
+ }
+
+// ---------------------------------------------------------------------------
+// From class MCCPCall
+// CSPCall::HangUp
+// ---------------------------------------------------------------------------
+//
+TInt CSPVoiceCall::HangUp()
+ {
+ CSPLOGSTRING(CSPREQIN, "CSPVoiceCall::HangUp");
+ return CSPCall::HangUp();
+ }
+
+// ---------------------------------------------------------------------------
+// From class MCCPCall
+// CSPVoiceCall::Cancel
+// ---------------------------------------------------------------------------
+//
+TInt CSPVoiceCall::Cancel()
+ {
+ CSPLOGSTRING(CSPREQIN, "CSPVoiceCall::Cancel");
+ return CSPCall::Cancel();
+ }
+
+// ---------------------------------------------------------------------------
+// From class MCCPCSCall
+// CSPVoiceCall::SwitchAlternatingCall
+// ---------------------------------------------------------------------------
+//
+TInt CSPVoiceCall::SwitchAlternatingCall()
+ {
+ CSPLOGSTRING(CSPERROR, "CSPVoiceCall::SwitchAlternatingCall not supported!");
+ return KErrNotSupported;
+ }
+
+// ---------------------------------------------------------------------------
+// CSPVoiceCall::CSPVoiceCall
+// ---------------------------------------------------------------------------
+//
+CSPVoiceCall::CSPVoiceCall( RMobileLine& aLine,
+ TBool aMobileOriginated,
+ const TDesC& aName,
+ MCSPCommonInfo& aCommonInfo,
+ TBool aIsEmergency ):CSPCall( aLine,
+ aMobileOriginated, aName,
+ aCommonInfo, aIsEmergency ),
+ iCallParams(),
+ iCallParamsPckg (iCallParams)
+
+ {
+ CSPLOGSTRING(CSPOBJECT, "CSPVoiceCall::CSPVoiceCall");
+ }
+
+// ---------------------------------------------------------------------------
+// CSPVoiceCall::ConstructL
+// Constructing CSPVoiceCall for MT call.
+// ---------------------------------------------------------------------------
+//
+void CSPVoiceCall::ConstructL( const CCCECallParameters& aParams )
+ {
+ CSPLOGSTRING(CSPOBJECT, "CSPVoiceCall::ConstructL <");
+ CSPCall::ConstructL( aParams );
+ CSPLOGSTRING(CSPOBJECT, "CSPVoiceCall::ConstructL >");
+ }
+
+// ---------------------------------------------------------------------------
+// CSPVoiceCall::SetDefaultCallParameters
+// ---------------------------------------------------------------------------
+//
+void CSPVoiceCall::SetDefaultCallParameters()
+ {
+ CSPLOGSTRING(CSPOBJECT, "CSPVoiceCall::SetDefaultCallParameters");
+
+ //Set defaults
+ iCallParams.iSpeakerControl = RMobileCall::EMonitorSpeakerControlAlwaysOn;
+ iCallParams.iSpeakerVolume = RMobileCall::EMonitorSpeakerVolumeMedium;
+ iCallParams.iInterval = KCSPDefaultInterval;
+ iCallParams.iWaitForDialTone = RMobileCall::EDialToneNoWait;
+ iCallParams.iIdRestrict = RMobileCall::EIdRestrictDefault;
+ iCallParams.iAutoRedial = KCSPDefaultAutoRedial;
+ }
+
+// End of File