phoneclientserver/phoneserver/Src/Standard/Standard_Aiw/CPhSrvSubSessionNotifier.cpp
changeset 46 2fa1fa551b0b
parent 42 35488577e233
child 48 78df25012fda
--- a/phoneclientserver/phoneserver/Src/Standard/Standard_Aiw/CPhSrvSubSessionNotifier.cpp	Mon Aug 23 15:50:31 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,623 +0,0 @@
-/*
-* Copyright (c) 2002-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:  Sub Session Notifier.
-*
-*/
-
-
-
-// INCLUDE FILES
-#include <phclttypes.h> 
-#include "cphsrvsubsessionnotifier.h" 
-#include "cphsrvsession.h" 
-#include "cphsrvserver.h" 
-#include "mphsrvemergencynegotiators.h" 
-#include "mphsrvobjectnegotiators.h" 
-#include "mphsrvcomhandnegotiators.h" 
-
-// CONSTANTS
-// None.
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-// -----------------------------------------------------------------------------
-// CPhSrvSubSessionNotifier::CPhSrvSubSessionNotifier
-// 
-// C++ Constructor
-// -----------------------------------------------------------------------------
-//
-CPhSrvSubSessionNotifier::CPhSrvSubSessionNotifier( CPhSrvSession& aSession )
-    :   CPhSrvSubSessionBase( aSession, EPhSrvSubSessionTypeCallNotifier ),
-        iTelNumberPckg( iTelNumber )
-    {
-    
-    }
-
-
-// -----------------------------------------------------------------------------
-// CPhSrvSubSessionNotifier::~CPhSrvSubSessionNotifier
-// 
-// C++ Destructor
-// -----------------------------------------------------------------------------
-//
-CPhSrvSubSessionNotifier::~CPhSrvSubSessionNotifier()
-    {
-    if ( PhoneSession().PhoneServer().IsCallNegotiator() )
-        {
-        PhoneSession().
-            PhoneServer().
-                CallNegotiator().
-                    SetNegotiatorReadyCallCancel( *this ); 
-        }   
-    if ( PhoneSession().PhoneServer().IsEmergencyCallNegotiator() )
-        {
-        PhoneSession().
-            PhoneServer().
-                EmergencyCallNegotiator().
-                    SetNegotiatorReadyCallCancel( *this );
-        }
-    if ( PhoneSession().PhoneServer().IsComHandNegotiator() )
-        {
-        PhoneSession().
-            PhoneServer().
-                ComHandNegotiator().
-                    SetNegotiatorReadyRequestCancel( *this );
-        
-        }
-    delete iDialData;
-    }
-
-
-// -----------------------------------------------------------------------------
-// CPhSrvSubSessionNotifier::ConstructL
-// 
-// Symbian OS 2nd phase constructor
-// -----------------------------------------------------------------------------
-//
-/*****************************************************
-*   Series 60 Customer / ETel
-*   Series 60  ETel API
-*****************************************************/
-void CPhSrvSubSessionNotifier::ConstructL()
-    {
-    CPhSrvSubSessionBase::ConstructL();
-    }
-
-
-// -----------------------------------------------------------------------------
-// CPhSrvSubSessionNotifier::PhSrvMessageDecoderCanProcessMessage
-// 
-// Framework function. Returns ETrue for the op codes that
-// this subsession can handle.
-// -----------------------------------------------------------------------------
-//
-TBool CPhSrvSubSessionNotifier::PhSrvMessageDecoderCanProcessMessage(
-        TInt aFunction )
-    {
-    switch( aFunction )
-        {
-        case EPhoneServerNotifySubSessionClose:
-        case EPhoneServerNotifySubSessionNotifyCallRequest:
-        case EPhoneServerNotifySubSessionNotifyCallRequestCancel:
-        case EPhoneServerNotifySubSessionReportCallResult:
-        case EPhoneServerNotifySubSessionDialData:
-
-        case EPhoneServerNotifyEmergencySubSessionNotifyCallRequest:
-        case EPhoneServerNotifyEmergencySubSessionNotifyCallRequestCancel:
-        case EPhoneServerNotifyEmergencySubSessionReportCallResult:
-
-        case EPhoneServerComHandNotifySubSessionComHandRequest:
-        case EPhoneServerComHandNotifySubSessionComHandRequestCancel:
-        case EPhoneServerComHandNotifySubSessionReportComHandResult:
-
-            return ETrue;
-
-        default:
-            return EFalse;
-        }   
-    }
-
-
-// -----------------------------------------------------------------------------
-// CPhSrvSubSessionNotifier::PhSrvMessageProcessorHandleMessageL
-// 
-// Framework function. Handle any op-codes here.
-// -----------------------------------------------------------------------------
-//
-void CPhSrvSubSessionNotifier::PhSrvMessageProcessorHandleMessageL(
-    const RMessage2& aMessage )
-    {
-    switch( aMessage.Function() )
-        {
-        case EPhoneServerNotifySubSessionClose:
-            CmdSubSessionCloseL( aMessage );
-            break;
-        case EPhoneServerNotifySubSessionNotifyCallRequest:
-            CmdSubSessionNotifyCallRequestL( aMessage );
-            break;
-        case EPhoneServerNotifySubSessionNotifyCallRequestCancel:
-            CmdSubSessionNotifyCallRequestCancelL( aMessage );
-            break;
-        case EPhoneServerNotifySubSessionReportCallResult:
-            CmdSubSessionReportCallResultL( aMessage );
-            break;
-        case EPhoneServerNotifySubSessionDialData:
-            CmdSubSessionDialDataL( aMessage );
-            break;
-        case EPhoneServerNotifyEmergencySubSessionNotifyCallRequest:
-            CmdSubSessionNotifyEmergencyL( aMessage );
-            break;
-        case EPhoneServerNotifyEmergencySubSessionNotifyCallRequestCancel:
-            CmdSubSessionNotifyEmergencyCancel( aMessage );
-            break;
-        case EPhoneServerNotifyEmergencySubSessionReportCallResult:
-            CmdSubSessionReportEmergencyCallResultL( aMessage );
-            break;  
-        case EPhoneServerComHandNotifySubSessionComHandRequest:
-            CmdSubSessionComHandNotifyRequestL( aMessage );
-            break;
-        case EPhoneServerComHandNotifySubSessionComHandRequestCancel:
-            CmdSubSessionComHandNotifyRequestCancelL( aMessage );
-            break;
-        case EPhoneServerComHandNotifySubSessionReportComHandResult:
-            CmdSubSessionComHandNotifyReportL( aMessage );
-            break;             
-        default:
-            PhoneSession().PanicClient(
-                aMessage,
-                EPhCltServerInitiatedPanicInvalidRequest );
-            break;
-        }
-    }
-
-
-// -----------------------------------------------------------------------------
-// CPhSrvSubSessionNotifier::InitiatorMakeAsynchronousCall
-// 
-// Called by the phone call negotiator when it wants this
-// object to initiate a call (on behalf of the external
-// interface).
-// -----------------------------------------------------------------------------
-//
-void CPhSrvSubSessionNotifier::InitiatorMakeAsynchronousCallL(
-      CPhCltExtPhoneDialData& aArgs )
-    {
-    // data length to send
-    const TInt dataLength = aArgs.CalculatePackageSize();
-    
-    const TPckg< TInt > pDataLength( dataLength );
-    //save dial data  
-    CmdSubSessionCloneDialDataL( aArgs );
-
-    PhoneSession().Write(
-    iPendingDialRequestPointer,
-    0,
-    pDataLength );   
-
-    // Indicate that the phone notifier should try and make the call.
-    if ( !iPendingDialRequestPointer.IsNull() )
-        {
-        iPendingDialRequestPointer.Complete( KErrNone );
-        }
-    iHavePendingDialRequestPointer = EFalse;
-    
-    }
-
-
-// -----------------------------------------------------------------------------
-// CPhSrvSubSessionNotifier::InitiatorIsReadyToMakeCall
-// 
-// Does this session have a pending request?
-// -----------------------------------------------------------------------------
-//
-TBool CPhSrvSubSessionNotifier::InitiatorIsReadyToMakeCall() const
-    {
-    return iHavePendingDialRequestPointer;
-    }
-
-
-// -----------------------------------------------------------------------------
-// CPhSrvSubSessionNotifier::CmdSubSessionCloseL
-// 
-// Close the sub-session
-// -----------------------------------------------------------------------------
-//
-void CPhSrvSubSessionNotifier::CmdSubSessionCloseL(
-    const RMessage2& aMessage )
-    {
-    PhoneSession().CloseSubSession( aMessage );
-    }
-
-
-// -----------------------------------------------------------------------------
-// CPhSrvSubSessionNotifier::CmdSubSessionNotifyCallRequestL
-// 
-// Setup an asynchronous request to handle external interface
-// call requests.
-// -----------------------------------------------------------------------------
-//
-void CPhSrvSubSessionNotifier::CmdSubSessionNotifyCallRequestL(
-    const RMessage2& aMessage )
-    {
-    // Update our pending request pointer if it's not already set
-    if  ( iHavePendingDialRequestPointer )
-        {
-        PhoneSession().PanicClient(
-            aMessage,
-            EPhCltServerInitiatedPanicRequestAlreadyActive );
-        }
-    else
-        {
-        iPendingDialRequestPointer = aMessage;
-        iHavePendingDialRequestPointer = ETrue;
-
-        // The phone app engine is ready to process a call request. 
-        // Tell the negotiator that we're ready to process any pending 
-        // requests.
-        MPhSrvNegotiatorCall& callNegotiator = 
-            PhoneSession().PhoneServer().CallNegotiatorL();
-        callNegotiator.SetNegotiatorReadyCallL( *this );
-        }
-    }
-
-
-// -----------------------------------------------------------------------------
-// CPhSrvSubSessionNotifier::CmdSubSessionNotifyCallRequestCancelL
-// 
-// Cancel an outstanding request to handle call initiations.
-// -----------------------------------------------------------------------------
-//
-void CPhSrvSubSessionNotifier::CmdSubSessionNotifyCallRequestCancelL(
-    const RMessage2& aMessage )
-    {
-    if  ( !iHavePendingDialRequestPointer )
-        {
-        PhoneSession().PanicClient(
-            aMessage,
-            EPhCltServerInitiatedPanicRequestNotActive );
-        }
-    else
-        {
-        if ( !iPendingDialRequestPointer.IsNull() )
-            {
-            iPendingDialRequestPointer.Complete( KErrCancel );
-            }
-        iHavePendingDialRequestPointer = EFalse;
-        }
-
-    aMessage.Complete( KErrNone );
-    }
-
-
-// -----------------------------------------------------------------------------
-// CPhSrvSubSessionNotifier::CmdSubSessionReportCallResultL
-// 
-// Tell the external call interface client the result of 
-// dialing a call.
-// -----------------------------------------------------------------------------
-//
-void CPhSrvSubSessionNotifier::CmdSubSessionReportCallResultL(
-    const RMessage2& aMessage )
-    {
-    // Get result
-    const TPhCltPhoneResults result = 
-        static_cast< TPhCltPhoneResults >( aMessage.Int0() );
-
-    // Tell call negotiator of result
-    MPhSrvNegotiatorCall& callNegotiator = 
-        PhoneSession().PhoneServer().CallNegotiatorL();
-    callNegotiator.SetNegotiatorAttemptedCallResponseValue( result );
-
-    // Complete the request
-    aMessage.Complete( KErrNone );
-    }
-
-// -----------------------------------------------------------------------------
-// CPhSrvSubSessionNotifier::CmdSubSessionCloneDialData
-// 
-// Clones call arguments to object
-// -----------------------------------------------------------------------------
-//
-void CPhSrvSubSessionNotifier::CmdSubSessionCloneDialDataL(
- CPhCltExtPhoneDialData& aArgs )
-    {
-    iDialData = CPhCltExtPhoneDialData::NewL();
-    iDialData->SetTelephoneNumber( aArgs.TelephoneNumber() );
-    iDialData->SetCallType( aArgs.CallType() );
-    iDialData->SetNameL( aArgs.Name() );
-    iDialData->SetWindowGroup( aArgs.WindowGroup() );
-    iDialData->SetRedial( aArgs.Redial() );
-    iDialData->SetRedialMaximumDuration( aArgs.RedialMaximumDuration() );
-    iDialData->SetContactLinkL( aArgs.ContactLink() );
-    iDialData->SetSubAddressL( aArgs.SubAddress() );
-    iDialData->SetShowNumber( aArgs.ShowNumber() );
-    iDialData->SetAllowMatch( aArgs.AllowMatch() );
-    iDialData->SetSATCall( aArgs.SATCall() );
-    iDialData->SetEndOtherCalls( aArgs.EndOtherCalls() );
-    iDialData->SetBearerL( aArgs.Bearer() );
-    iDialData->SetSendKeyPressed( aArgs.SendKeyPressed() );
-    iDialData->SetInitiateCall( aArgs.InitiateCall() );
-    iDialData->SetServiceId( aArgs.ServiceId() );
-    iDialData->SetUUIL( aArgs.UUI() );
-    }
-    
-// -----------------------------------------------------------------------------
-// CPhSrvSubSessionNotifier::CmdSubSessionDialDataL
-// 
-// Tell the external call interface client the result of 
-// dialing a call.
-// -----------------------------------------------------------------------------
-//  
-void CPhSrvSubSessionNotifier::CmdSubSessionDialDataL ( 
-    const RMessage2& aMessage )
-    {
-    HBufC8* package = NULL;
-    package = iDialData->PackLC();
-    if ( package )
-        {
-        PhoneSession().Write(
-        aMessage,
-        0,
-       *package );
-        aMessage.Complete( KErrNone );   
-        CleanupStack::PopAndDestroy( package );
-        }
-    delete iDialData;
-    iDialData = NULL;
-    }
-
-
-// -----------------------------------------------------------------------------
-// CPhSrvSubSessionNotifier::InitiatorMakeAsynchronousCall
-// 
-// Called by the phone call negotiator when it wants this
-// object to initiate a call (on behalf of the external
-// interface).
-// -----------------------------------------------------------------------------
-//
-void CPhSrvSubSessionNotifier::InitiatorMakeEmergencyCall( const RMessage2& aMessage )
-    {
-    
-    // Write to phone notifier's address space
-    PhoneSession().Read(
-        aMessage,
-        0,
-         iTelNumberPckg );
-    
-    PhoneSession().Write(
-        iPendingEmergencyRequestPointer,
-        0,
-        iTelNumberPckg );
-        
-    // Indicate that the phone notifier should try and make the call.
-    if ( !iPendingEmergencyRequestPointer.IsNull() )
-        {
-        iPendingEmergencyRequestPointer.Complete( KErrNone );
-        }
-    iHavePendingEmergencyRequestPointer = EFalse;
-    }
-
-
-// -----------------------------------------------------------------------------
-// CPhSrvSubSessionNotifier::InitiatorIsReadyToMakeCall
-// 
-// Does this session have a pending request?
-// -----------------------------------------------------------------------------
-//
-TBool CPhSrvSubSessionNotifier::InitiatorIsReadyToMakeEmergencyCall() const
-    {
-    return iHavePendingEmergencyRequestPointer;
-    }
-
-// -----------------------------------------------------------------------------
-// CPhSrvSubSessionNotifier::CmdSubSessionNotifyCallRequestL
-// 
-// Setup an asynchronous request to handle external interface
-// call requests.
-// -----------------------------------------------------------------------------
-//
-void CPhSrvSubSessionNotifier::CmdSubSessionNotifyEmergencyL(
-    const RMessage2& aMessage )
-    {
-    // Update our pending request pointer if it's not already set
-    if  ( iHavePendingEmergencyRequestPointer )
-        {
-        PhoneSession().PanicClient(
-            aMessage,
-            EPhCltServerInitiatedPanicRequestAlreadyActive );
-        }
-    else
-        {
-        iPendingEmergencyRequestPointer = aMessage;
-        iHavePendingEmergencyRequestPointer = ETrue;
-
-        // The phone app engine is ready to process a call request. 
-        // Tell the negotiator that we're ready to process any pending 
-        // requests.
-        MPhSrvEmergencyNegotiatorCall& emergencyNegotiator = 
-            PhoneSession().PhoneServer().EmergencyCallNegotiatorL();
-        emergencyNegotiator.SetNegotiatorReadyCall( *this );
-        }
-    }
-
-
-// -----------------------------------------------------------------------------
-// CPhSrvSubSessionNotifier::CmdSubSessionNotifyCallRequestCancelL
-// 
-// Cancel an outstanding request to handle call initiations.
-// -----------------------------------------------------------------------------
-//
-void CPhSrvSubSessionNotifier::CmdSubSessionNotifyEmergencyCancel(
-    const RMessage2& aMessage )
-    {
-    if  ( !iHavePendingEmergencyRequestPointer )
-        {
-        PhoneSession().PanicClient(
-            aMessage,
-            EPhCltServerInitiatedPanicRequestNotActive );
-        }
-    else
-        {
-        if ( !iPendingEmergencyRequestPointer.IsNull() )
-            {
-            iPendingEmergencyRequestPointer.Complete( KErrCancel );
-            }
-        iHavePendingEmergencyRequestPointer = EFalse;
-        }
-
-    aMessage.Complete( KErrNone );
-    }
-
-
-// -----------------------------------------------------------------------------
-// CPhSrvSubSessionNotifier::CmdSubSessionReportEmergencyCallResultL
-// 
-// Tell the external call interface client the result of 
-// dialing a call.
-// -----------------------------------------------------------------------------
-//
-void CPhSrvSubSessionNotifier::CmdSubSessionReportEmergencyCallResultL(
-    const RMessage2& aMessage )
-    {
-    // Get result
-    const TPhCltPhoneResults result = 
-        static_cast< TPhCltPhoneResults >( aMessage.Int0() );
-
-    // Tell call negotiator of result
-    MPhSrvEmergencyNegotiatorCall& emergencyNegotiator = 
-        PhoneSession().PhoneServer().EmergencyCallNegotiatorL();
-    emergencyNegotiator.SetNegotiatorAttemptedCallResponseValue( result );
-
-    // Complete the request
-    aMessage.Complete( KErrNone );
-    }
-
-// -----------------------------------------------------------------------------
-// CPhSrvSubSessionNotifier::InitiatorMakeAsynchronousComHandRequest
-// 
-// Called by the command handler negotiator when it wants this object to 
-// initiate a command handler request (on behalf of the external interface).
-// -----------------------------------------------------------------------------
-//
-void CPhSrvSubSessionNotifier::
-    InitiatorMakeAsynchronousComHandRequest( 
-    const TPhCltComHandCommandParameters& aParams )
-    {
-    // Package up the data to send
-    TPckgC< TPhCltComHandCommandParameters > 
-        comHandDetails( aParams );
-
-    // Write to command handler notifier's address space
-    PhoneSession().Write( 
-        iPendingComHandRequestPointer,
-        0,
-        comHandDetails );
-
-    // Indicate that the command handler notifier should try to perform the 
-    // request.
-    if ( !iPendingComHandRequestPointer.IsNull() )
-        {
-        iPendingComHandRequestPointer.Complete( KErrNone );
-        }
-    iHavePendingComHandRequestPointer = EFalse;
-    }
-
-
-// -----------------------------------------------------------------------------
-// CPhSrvSubSessionNotifier::InitiatorIsReadyToPerformRequest
-// 
-// Does this session have a pending request?
-// -----------------------------------------------------------------------------
-//
-TBool CPhSrvSubSessionNotifier::InitiatorIsReadyToPerformRequest() 
-    const
-    {
-    return iHavePendingComHandRequestPointer;
-    }
-
-// -----------------------------------------------------------------------------
-// CPhSrvSubSessionNotifier::CmdSubSessionComHandNotifyRequestL
-// 
-// Handle command handler notifier's request.
-// -----------------------------------------------------------------------------
-//
-void CPhSrvSubSessionNotifier::CmdSubSessionComHandNotifyRequestL( 
-    const RMessage2& aMessage )
-    {
-    // Update our pending request pointer if it's not already set
-    if  ( iHavePendingComHandRequestPointer )
-        {
-        PhoneSession().PanicClient(
-            aMessage,
-            EPhCltServerInitiatedPanicRequestAlreadyActive );
-        }
-    else
-        {
-        iPendingComHandRequestPointer = aMessage;
-        iHavePendingComHandRequestPointer = ETrue;
-
-        // The phone app engine is ready to process a command handler request.
-        // Tell the negotiator that we're ready to process any pending 
-        // requests.
-        MPhSrvComHandNegotiator& comHandNegotiator = 
-            PhoneSession().PhoneServer().ComHandNegotiatorL();
-        comHandNegotiator.SetNegotiatorReadyRequestL( *this );
-        }
-    }
-
-
-// -----------------------------------------------------------------------------
-// CPhSrvSubSessionNotifier::
-// CmdSubSessionComHandNotifyRequestCancelL
-// 
-// Handle command handler notifier's request cancel.
-// -----------------------------------------------------------------------------
-//
-void CPhSrvSubSessionNotifier::
-    CmdSubSessionComHandNotifyRequestCancelL( 
-        const RMessage2& aMessage )
-    {
-    if  ( iHavePendingComHandRequestPointer )
-        {
-        iPendingComHandRequestPointer.Complete( KErrCancel );
-        iHavePendingComHandRequestPointer = EFalse;
-        }
-
-    aMessage.Complete( KErrNone );
-    }
-
-
-// -----------------------------------------------------------------------------
-// CPhSrvSubSessionNotifier::CmdSubSessionComHandNotifyReportL
-// 
-// Tell the result of the request execution to the command handler client.
-// -----------------------------------------------------------------------------
-//
-void CPhSrvSubSessionNotifier::CmdSubSessionComHandNotifyReportL( 
-    const RMessage2& aMessage )
-    {
-    // Get result
-    const TPhCltPhoneResults result = 
-        static_cast< TPhCltPhoneResults >( aMessage.Int0() );
-
-    // Tell command handler negotiator of result
-    MPhSrvComHandNegotiator& comHandNegotiator = 
-        PhoneSession().PhoneServer().ComHandNegotiatorL();
-    comHandNegotiator.SetNegotiatorAttemptedRequestResponseValue( result );
-
-    // Complete the request
-    aMessage.Complete( KErrNone );
-    }
-
-// End of File