phoneengine/callhandling/src/cpesystemcallstate.cpp
changeset 36 2eacb6118286
parent 30 ebdbd102c78a
child 37 ba76fc04e6c2
--- a/phoneengine/callhandling/src/cpesystemcallstate.cpp	Fri May 14 15:51:57 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,537 +0,0 @@
-/*
-* Copyright (c) 2008 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:  This file contains the implementation of CPESystemCallState class 
-*                member functions.
-*
-*/
-
-
-// INCLUDE FILES
-#include <talogger.h>
-#include <pepanic.pan>
-#include <ctsydomainpskeys.h>
-
-#include "cpesystemcallstate.h"
-#include "cpecallarrayowner.h"
-#include "mpedatastore.h"
-#include "cpesinglecall.h"
-
-// EXTERNAL DATA STRUCTURES
-// None.
-
-// EXTERNAL FUNCTION PROTOTYPES  
-// None.
-
-// CONSTANTS
-// None.
-
-// MACROS
-// None.
-
-// LOCAL CONSTANTS AND MACROS
-// None.
-
-// MODULE DATA STRUCTURES
-// None.
-
-// LOCAL FUNCTION PROTOTYPES
-// None.
-
-// FORWARD DECLARATIONS
-// None.
-
-// ==================== LOCAL FUNCTIONS ====================
-// None.
-
-// ================= MEMBER FUNCTIONS =======================
-
-// -----------------------------------------------------------------------------
-// CPESystemCallState::CPESystemCallState
-// C++ default constructor can NOT contain any code, that
-// might leave.
-// -----------------------------------------------------------------------------
-//
-CPESystemCallState::CPESystemCallState( 
-         CPECallArrayOwner& aCallArrayOwner,
-         MPEDataStore& aDataStore ) : 
-         iCallArrayOwner( aCallArrayOwner ),
-         iDataStore( aDataStore ),
-         iCallStateTsy( EPSCTsyCallStateUninitialized ),
-         iCallTypeTsy( EPSCTsyCallTypeUninitialized )
-    {
-    }
-
-// Destructor
-CPESystemCallState::~CPESystemCallState()
-    {
-    TEFLOGSTRING( KTAOBJECT, 
-        "CALL CPESystemCallState::~CPESystemCallState start" );
-    iCallStateProperty.Close();
-    iCallTypeProperty.Close();
-    TEFLOGSTRING( KTAOBJECT, 
-        "CALL CPESystemCallState::~CPESystemCallState complete" );
-    }    
-
-// -----------------------------------------------------------------------------
-// CPESystemCallState::NewL
-// -----------------------------------------------------------------------------
-//
-CPESystemCallState* CPESystemCallState::NewL( 
-        CPECallArrayOwner& aCallArrayOwner,
-        MPEDataStore& aDataStore )
-    {
-    TEFLOGSTRING( KTAOBJECT,
-         "CALL CPESystemCallState::NewL: start." );
-    
-    CPESystemCallState* self = new ( ELeave ) CPESystemCallState( aCallArrayOwner, aDataStore );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-
-    TEFLOGSTRING( KTAOBJECT, 
-        "CALL CPESystemCallState::NewL: complete." );
-    
-    return self;
-    }
-    
-// -----------------------------------------------------------------------------
-// CPESystemCallState::ConstructL
-// -----------------------------------------------------------------------------
-//
-void CPESystemCallState::ConstructL()
-
-    {
-    // Attach and initialize publish & subscribe properties
-    TInt r( KErrNone );
-    RProperty::TType type( RProperty::EInt );
-    TSecurityPolicy readPolicy( ECapability_None );
-    TSecurityPolicy writePolicy( ECapabilityWriteDeviceData );
-    
-    TEFLOGSTRING( KTAOBJECT,
-         "CALL CPESystemCallState::ConstructL: start." );
-    iCallStateInCenRep = EPSCTsyCallStateNone;
-    iCallTypeInCenRep = EPSCTsyCallTypeNone;
-    
-    User::LeaveIfError( 
-        iCallStateProperty.Attach( KPSUidCtsyCallInformation, KCTsyCallState ) );  
-    r =  iCallStateProperty.Set( iCallStateInCenRep );
-    if ( KErrNotFound == r )
-        {
-        // Not defined yet - do so here
-        User::LeaveIfError( RProperty::Define( KPSUidCtsyCallInformation, 
-            KCTsyCallState, 
-            type,
-            readPolicy,
-            writePolicy ) );
-        r = iCallStateProperty.Set( iCallStateInCenRep );
-        }
-    User::LeaveIfError( r );
-    
-    User::LeaveIfError( 
-        iCallTypeProperty.Attach( KPSUidCtsyCallInformation, KCTsyCallType ) );   
-    r =  iCallTypeProperty.Set( iCallTypeInCenRep );
-    if ( KErrNotFound == r )
-        {
-        // Not defined yet - do so here
-        User::LeaveIfError( RProperty::Define( KPSUidCtsyCallInformation, 
-            KCTsyCallType, 
-            type,
-            readPolicy,
-            writePolicy ) );
-        r = iCallTypeProperty.Set( iCallTypeInCenRep );
-        }
-    User::LeaveIfError( r );
-    
-    TEFLOGSTRING( KTAOBJECT, 
-        "CALL CPESystemCallState::ConstructL: complete." );
-    }
-    
-// -----------------------------------------------------------------------------
-// CPESystemCallState::CreateCallL
-// -----------------------------------------------------------------------------
-//
-void CPESystemCallState::NotifySystemCallStateChanged( 
-        MEngineMonitor::TPEMessagesFromPhoneEngine aMessage,
-        TInt aCallId )
-    {
-    TEFLOGSTRING3( 
-        KTAINT, 
-        "CALL CPECallHandling::NotifySystemCallStateChanged, message id: %d, call id: %d", 
-        aMessage, 
-        aCallId );
-        
-    iCallStateTsy = EPSCTsyCallStateUninitialized;
-    iCallTypeTsy = EPSCTsyCallTypeUninitialized;
-    TInt updateError( KErrNone );
-    TInt updateErrorTsy( KErrNone );
-    
-    switch ( aMessage )
-        {
-        case MEngineMonitor::EPEMessageIncoming:
-            HandleIncoming( aCallId );
-            break;
-        case MEngineMonitor::EPEMessageAnswering:
-            HandleAnswering( aCallId );
-            break;
-        case MEngineMonitor::EPEMessageDialing:
-            HandleDialling( aCallId );
-            break;
-        case MEngineMonitor::EPEMessageConnecting:
-        case MEngineMonitor::EPEMessageConnectingWithInband:
-            HandleConnecting( aCallId );
-            break;
-        case MEngineMonitor::EPEMessageConnected:
-            HandleConnected( aCallId );
-            break;
-        case MEngineMonitor::EPEMessageDisconnecting:
-        case MEngineMonitor::EPEMessageDisconnectingWithInband:
-            HandleDisconnecting( aCallId );
-            break;
-        case MEngineMonitor::EPEMessageIdle:
-            HandleIdle( aCallId );
-            break;
-        case MEngineMonitor::EPEMessageHeld:
-            HandleHeld( aCallId );
-            break;
-        case MEngineMonitor::EPEMessageCallControlCapsChanged:
-            HandleCallControlCapsChanged();
-            break;
-        case MEngineMonitor::EPEMessageRemotePartyInfoChanged:
-            HandleRemotePartyChanged( aCallId );
-            break;
-        default:
-            // Other messages cause no action.
-            break;
-        } 
-
-    if ( iCallStateTsy != EPSCTsyCallStateUninitialized && 
-         iCallStateTsy != iCallStateInCenRep )
-        {
-        TEFLOGSTRING2( 
-            KTAREQOUT, 
-            "CALL CPECallHandling::NotifySystemCallStateChanged request rproperty::set, Call State Tsy: %d", 
-            iCallStateTsy );
-        updateErrorTsy = RProperty::Set( KPSUidCtsyCallInformation, 
-        KCTsyCallState, iCallStateTsy );
-        iCallStateInCenRep = iCallStateTsy;
-        }
-
-    if ( iCallTypeTsy != EPSCTsyCallTypeUninitialized && 
-         !updateError && 
-         !updateErrorTsy && 
-         iCallTypeTsy != iCallTypeInCenRep )
-        {
-        TEFLOGSTRING2( 
-            KTAREQOUT, 
-            "CALL CPECallHandling::NotifySystemCallStateChanged request rproperty::set, Call Type: %d", 
-            iCallTypeTsy );
-        updateError = iCallTypeProperty.Set( iCallTypeTsy );
-        updateErrorTsy = RProperty::Set( KPSUidCtsyCallInformation, 
-        KCTsyCallType, iCallTypeTsy );
-        iCallTypeInCenRep = iCallTypeTsy;
-        }
-
-    if ( updateError || updateErrorTsy )
-        {// Logs error - but does not return it
-        TEFLOGSTRING2( 
-            KTAERROR, 
-            "CALL CPECallHandling::NOTIFYSYSTEMCALLSTATECHANGED: UNABLE TO UPDATE SYSTEM KEYS, ERROR = %d", 
-            updateError || updateErrorTsy );
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CPESystemCallState::HandleIncoming
-// -----------------------------------------------------------------------------
-//
-void CPESystemCallState::HandleIncoming( TInt aCallId )
-    {
-    TEFLOGSTRING( KTAINT, "CALL CPESystemCallState::HandleIncoming" );
-    CPESingleCall* callData = iCallArrayOwner.GetCallObject( aCallId );
-    if( !callData )
-        {
-        TEFLOGSTRING2( 
-            KTAERROR, 
-            "CALL CPECallHandling::HandleIncoming: call not found, call id  = %d", 
-            aCallId );
-        __ASSERT_DEBUG( callData, Panic( EPEPanicCallDataNull) );
-        return;
-        }
-    iCallStateTsy = EPSCTsyCallStateRinging;
-    SetCallInformatioAPICallType( *callData );
-    }
-    
-// -----------------------------------------------------------------------------
-// CPESystemCallState::HandleDialling
-// -----------------------------------------------------------------------------
-//
-void CPESystemCallState::HandleDialling( TInt aCallId )
-    {
-    TEFLOGSTRING( KTAINT, "CALL CPESystemCallState::HandleDialling" );
-    CPESingleCall* callData = iCallArrayOwner.GetCallObject( aCallId );
-    if( !callData )
-        {
-        TEFLOGSTRING2( 
-            KTAERROR, 
-            "CALL CPECallHandling::HandleDialling: call not found, call id  = %d", 
-            aCallId );
-        __ASSERT_DEBUG( callData, Panic( EPEPanicCallDataNull) );
-        return;
-        }
-    iCallStateTsy = EPSCTsyCallStateDialling;
-    SetCallInformatioAPICallType( *callData );
-    }
-    
-// -----------------------------------------------------------------------------
-// CPESystemCallState::HandleConnected
-// -----------------------------------------------------------------------------
-//
-void CPESystemCallState::HandleConnected( TInt aCallId )
-    {
-    TEFLOGSTRING( KTAINT, "CALL CPESystemCallState::HandleConnected" );
-    CPESingleCall* callData = iCallArrayOwner.GetCallObject( aCallId );
-    if( !callData )
-        {
-        TEFLOGSTRING2( 
-            KTAERROR, 
-            "CALL CPECallHandling::HandleConnected: call not found, call id  = %d", 
-            aCallId );
-        __ASSERT_DEBUG( callData, Panic( EPEPanicCallDataNull) );
-        return;
-        }
-    
-    if ( !iCallArrayOwner.CallByState( EPEStateRinging ) )
-        {
-        iCallStateTsy = EPSCTsyCallStateConnected;
-        // Needs update also CallType. Even when replace Video Call, see error ELYG-7AWC2N.    
-        SetCallInformatioAPICallType( *callData );
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CPESystemCallState::HandleRemotePartyChanged
-// -----------------------------------------------------------------------------
-//
-void CPESystemCallState::HandleRemotePartyChanged( TInt aCallId )
-    {
-    TEFLOGSTRING( KTAINT, "CALL CPESystemCallState::HandleRemotePartyChanged" );
-    CPESingleCall* callData = iCallArrayOwner.GetCallObject( aCallId );
-    if( !callData )
-        {
-        TEFLOGSTRING2( 
-            KTAERROR, 
-            "CALL CPECallHandling::HandleRemotePartyChanged: call not found, call id  = %d", 
-            aCallId );
-        __ASSERT_DEBUG( callData, Panic( EPEPanicCallDataNull) );
-        return;
-        }
-    CPESingleCall* connectedCallData = iCallArrayOwner.CallPointerByState( EPEStateConnected );
-
-    if ( connectedCallData )
-        {
-        iCallStateTsy = EPSCTsyCallStateConnected;
-        // Needs update also CallType. Even when replace Video Call, see error ELYG-7AWC2N.    
-        SetCallInformatioAPICallType( *callData );
-        }
-    }
-    
-// -----------------------------------------------------------------------------
-// CPESystemCallState::HandleDisconnecting
-// -----------------------------------------------------------------------------
-//
-void CPESystemCallState::HandleDisconnecting( TInt aCallId )
-    {
-    TEFLOGSTRING( KTAINT, "CALL CPESystemCallState::HandleDisconnecting" );
-    CPESingleCall* callData = iCallArrayOwner.GetCallObject( aCallId );
-    if( !callData )
-        {
-        TEFLOGSTRING2( 
-            KTAERROR, 
-            "CALL CPECallHandling::HandleDisconnecting: call not found, call id  = %d", 
-            aCallId );
-        __ASSERT_DEBUG( callData, Panic( EPEPanicCallDataNull) );
-        return;
-        }
-    if ( !iCallArrayOwner.CallByState( EPEStateConnected ) &&
-         !iCallArrayOwner.CallByState( EPEStateHeld ) &&
-         !iCallArrayOwner.CallByState( EPEStateDialing ) && 
-         !iCallArrayOwner.CallByState( EPEStateConnecting ) && 
-         !iCallArrayOwner.CallByState( EPEStateRinging ) )
-        {
-        iCallStateTsy = EPSCTsyCallStateDisconnecting;
-        SetCallInformatioAPICallType( *callData );
-        }
-    }
-    
-// -----------------------------------------------------------------------------
-// CPESystemCallState::HandleIdle
-// -----------------------------------------------------------------------------
-//
-void CPESystemCallState::HandleIdle( TInt /*aCallId*/ )
-    {
-    TEFLOGSTRING( KTAINT, "CALL CPESystemCallState::HandleIdle" );
-    if ( !iCallArrayOwner.ActiveCallCount() )
-        {
-        iCallStateTsy = EPSCTsyCallStateNone;
-        iCallTypeTsy = EPSCTsyCallTypeNone;
-        }
-    else
-        {
-         // There is other active / waiting call(s)
-        CPESingleCall* ringingCallData = iCallArrayOwner.CallPointerByState( EPEStateRinging );
-        if ( !ringingCallData )
-            {
-            CPESingleCall* connectedCallData = iCallArrayOwner.CallPointerByState( EPEStateConnected );
-            CPESingleCall* heldCallData = iCallArrayOwner.CallPointerByState( EPEStateHeld );
-            if ( connectedCallData )
-                {
-                iCallStateTsy = EPSCTsyCallStateConnected;
-                SetCallInformatioAPICallType( *connectedCallData );
-                }                    
-            else if ( heldCallData )
-                {
-                iCallStateTsy = EPSCTsyCallStateHold;
-                SetCallInformatioAPICallType( *heldCallData );
-                }
-            }
-        else
-            {
-            iCallStateTsy = EPSCTsyCallStateRinging;
-            SetCallInformatioAPICallType( *ringingCallData );
-            }   
-        }
-    }
-    
-// -----------------------------------------------------------------------------
-// CPESystemCallState::HandleHeld
-// -----------------------------------------------------------------------------
-//
-void CPESystemCallState::HandleHeld( TInt aCallId )
-    {
-    TEFLOGSTRING( KTAINT, "CALL CPESystemCallState::HandleHeld" );
-    CPESingleCall* callData = iCallArrayOwner.GetCallObject( aCallId );
-    if( !callData )
-        {
-        TEFLOGSTRING2( 
-            KTAERROR, 
-            "CALL CPECallHandling::HandleHeld: call not found, call id  = %d", 
-            aCallId );
-        __ASSERT_DEBUG( callData, Panic( EPEPanicCallDataNull) );
-        return;
-        }
-
-    if( !iCallArrayOwner.CallByState( EPEStateDialing ) &&
-        !iCallArrayOwner.CallByState( EPEStateRinging ) &&
-        !iCallArrayOwner.CallByState( EPEStateConnecting ) &&
-        !iCallArrayOwner.CallByState( EPEStateConnected )&&
-        !iCallArrayOwner.CallByState( EPEStateAnswering ) )
-        {
-        iCallStateTsy = EPSCTsyCallStateHold;
-        SetCallInformatioAPICallType( *callData );
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CPESystemCallState::HandleAnswering
-// -----------------------------------------------------------------------------
-//
-void CPESystemCallState::HandleAnswering( TInt aCallId )
-    {
-    TEFLOGSTRING( KTAINT, "CALL CPESystemCallState::HandleAnswering" );
-    CPESingleCall* callData = iCallArrayOwner.GetCallObject( aCallId );
-    if( !callData )
-        {
-        TEFLOGSTRING2( 
-            KTAERROR, 
-            "CALL CPECallHandling::HandleHeld: call not found, call id  = %d", 
-            aCallId );
-        __ASSERT_DEBUG( callData, Panic( EPEPanicCallDataNull) );
-        return;
-        }
-    
-    iCallStateTsy = EPSCTsyCallStateAnswering; 
-    SetCallInformatioAPICallType( *callData );
-    }
-
-// -----------------------------------------------------------------------------
-// CPESystemCallState::HandleConnecting
-// -----------------------------------------------------------------------------
-//
-void CPESystemCallState::HandleConnecting( TInt aCallId )
-    {
-    TEFLOGSTRING( KTAINT, "CALL CPESystemCallState::HandleConnecting" );
-    CPESingleCall* callData = iCallArrayOwner.GetCallObject( aCallId );
-    if( !callData )
-        {
-        TEFLOGSTRING2( 
-            KTAERROR, 
-            "CALL CPECallHandling::HandleHeld: call not found, call id  = %d", 
-            aCallId );
-        __ASSERT_DEBUG( callData, Panic( EPEPanicCallDataNull) );
-        return;
-        }
-    
-    iCallStateTsy = EPSCTsyCallStateAlerting;
-    SetCallInformatioAPICallType( *callData );
-    }
-
-// -----------------------------------------------------------------------------
-// CPESystemCallState::HandleCallControlCapsChanged
-// -----------------------------------------------------------------------------
-//
-void CPESystemCallState::HandleCallControlCapsChanged()
-    {
-    TEFLOGSTRING( KTAINT, "CALL CPESystemCallState::HandleCallControlCapsChanged" );
-    CPESingleCall* callData = iCallArrayOwner.CallPointerByState( EPEStateConnected );
-    if( callData && !iCallArrayOwner.CallByState( EPEStateRinging ) )
-        {
-        iCallStateTsy = EPSCTsyCallStateConnected;
-        SetCallInformatioAPICallType( *callData );
-        }
-    }
-    
-// -----------------------------------------------------------------------------
-// CPESystemCallState::SetCallInformatioAPICallType
-// -----------------------------------------------------------------------------
-//
-void CPESystemCallState::SetCallInformatioAPICallType( CPESingleCall& aCallData )
-    {
-    TEFLOGSTRING( KTAINT, "CALL CPESystemCallState::SetCallInformatioAPICallType" );
-    switch ( aCallData.Call().Parameters().CallType() )
-        {
-        case CCPCall::ECallTypeCSVoice:
-            TEFLOGSTRING( KTAINT, "CALL CPESystemCallState::SetCallInformatioAPICallType EPSCTsyCallTypeCSVoice" );
-            iCallTypeTsy = EPSCTsyCallTypeCSVoice;
-            break;
-        case CCPCall::ECallTypePS:
-            TEFLOGSTRING( KTAINT, "CALL CPESystemCallState::SetCallInformatioAPICallType EPSCTsyCallTypeVoIP" );
-            iCallTypeTsy = EPSCTsyCallTypeVoIP;
-            break;
-        case CCPCall::ECallTypeVideo:
-            TEFLOGSTRING( KTAINT, "CALL CPESystemCallState::SetCallInformatioAPICallType EPSCTsyCallTypeH324Multimedia" );
-            iCallTypeTsy = EPSCTsyCallTypeH324Multimedia;
-            break;
-        default:
-            TEFLOGSTRING( 
-                KTAERROR, 
-                "CALL CPECallHandling::SetCallInformatioAPICallType: call type not recognised" );
-            __ASSERT_DEBUG( EFalse, Panic( EPEPanicCallDataNull) );
-            break;
-        }
-    }
-    
-// ================= OTHER EXPORTED FUNCTIONS ===============================
-
-
-// End of File