phoneclientserver/phoneserver/Src/Standard/Standard_Aiw/CPhSrvEmergencyRequestManager.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneclientserver/phoneserver/Src/Standard/Standard_Aiw/CPhSrvEmergencyRequestManager.cpp Tue Feb 02 01:11:09 2010 +0200
@@ -0,0 +1,201 @@
+/*
+* Copyright (c) 2002-2004 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: Call Request Manager.
+*
+*/
+
+
+
+// INCLUDES
+#include "CPhSrvEmergencyRequestManager.h"
+#include "CPhSrvSubSessionBase.h"
+#include "PhSrvUtils.h"
+
+
+// CONSTANTS
+
+// The size of the Notification manager storage.
+//const TInt KPhSrvNotificationManagerPendingCallGranularity = 4;
+
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CPhSrvEmergencyRequestManager::CPhSrvEmergencyRequestManager
+//
+// C++ constructor.
+// -----------------------------------------------------------------------------
+//
+CPhSrvEmergencyRequestManager::CPhSrvEmergencyRequestManager()
+ : iIsRequestPending( EFalse )
+ {
+ }
+
+
+// -----------------------------------------------------------------------------
+// CPhSrvEmergencyRequestManager::~CPhSrvEmergencyRequestManager
+//
+// C++ destructor.
+// -----------------------------------------------------------------------------
+//
+CPhSrvEmergencyRequestManager::~CPhSrvEmergencyRequestManager()
+ {
+ }
+
+
+// -----------------------------------------------------------------------------
+// CPhSrvEmergencyRequestManager::ConstructL
+//
+// Complete construction.
+// -----------------------------------------------------------------------------
+//
+void CPhSrvEmergencyRequestManager::ConstructL()
+ {
+ }
+
+
+// -----------------------------------------------------------------------------
+// CPhSrvEmergencyRequestManager::EmergencyDialL
+//
+// Initiate a dial request - called by the external call
+// interface. Checks if emergency initiator is ready and sets request pending if
+// emergency initiator hasn't been registered yet
+// -----------------------------------------------------------------------------
+//
+void CPhSrvEmergencyRequestManager::EmergencyDialL(
+ const RMessage2& aMessage )
+ {
+ // If we have no registered initiator then we can't make a call.
+ if ( !iEmergencyInitiator )
+ {
+ if( iIsRequestPending )
+ {
+ User::Leave( KErrAlreadyExists );
+ }
+ else
+ {
+ iPendingRequest = aMessage;
+ iIsRequestPending = ETrue;
+ }
+ }
+ else
+ {
+ DoMakeEmergencyDial( aMessage );
+ }
+ }
+
+
+// -----------------------------------------------------------------------------
+// CPhSrvEmergencyRequestManager::DoMakeEmergencyDial
+//
+// Do the actual emergency dial request for emergency initiator.
+// -----------------------------------------------------------------------------
+//
+void CPhSrvEmergencyRequestManager::DoMakeEmergencyDial( const RMessage2& aMessage )
+ {
+ iPendingRequestPointer= aMessage;
+
+ // Clear pending request status
+ iIsRequestPending = EFalse;
+
+ // Now see if the call notifier (initiator) is ready
+ if ( iEmergencyInitiator ->InitiatorIsReadyToMakeEmergencyCall() )
+ {
+ // Ask the call initiator to make the call (basically completes the
+ //phone app engine's outstanding call notifier request).
+ iEmergencyInitiator ->InitiatorMakeEmergencyCall( aMessage );
+ }
+ }
+
+
+// -----------------------------------------------------------------------------
+// CPhSrvEmergencyRequestManager::EmergencyDialCancel
+//
+// Cancel a pending dial request.
+// -----------------------------------------------------------------------------
+//
+void CPhSrvEmergencyRequestManager::EmergencyDialCancel()
+ {
+ // Clear pending request status
+ iIsRequestPending = EFalse;
+
+ if ( !iPendingRequestPointer.IsNull() )
+ {
+ iPendingRequestPointer.Complete( KErrCancel );
+ }
+ }
+
+
+// -----------------------------------------------------------------------------
+// CPhSrvEmergencyRequestManager::SetNegotiatorReadyCall
+//
+// Updates the negotiator so that it knows if the notifier
+// session is able to make a call.
+// -----------------------------------------------------------------------------
+//
+void CPhSrvEmergencyRequestManager::SetNegotiatorReadyCall(
+ MPhSrvEmergencyCall& aInitiator )
+ {
+ // There mustn't already be a call initiator, or the existing call
+ // initiator must be the same as the new one (otherwise, panic).
+ __ASSERT_ALWAYS( !iEmergencyInitiator || &aInitiator == iEmergencyInitiator,
+ PhoneServerUtils::Panic(
+ EPhoneServerPanicExistingCallInitiatorFault ) );
+
+ // Update our pointer
+ iEmergencyInitiator = &aInitiator;
+
+ if( iIsRequestPending )
+ {
+ DoMakeEmergencyDial( iPendingRequest );
+ }
+ }
+
+
+// -----------------------------------------------------------------------------
+// CPhSrvEmergencyRequestManager::SetNegotiatorReadyCallCancel
+//
+// Indicates that the initiator is no longer available
+// -----------------------------------------------------------------------------
+//
+void CPhSrvEmergencyRequestManager::SetNegotiatorReadyCallCancel(
+ MPhSrvEmergencyCall& aInitiator )
+ {
+ if ( iEmergencyInitiator && iEmergencyInitiator == &aInitiator )
+ {
+ iEmergencyInitiator = NULL;
+ }
+ }
+
+
+// -----------------------------------------------------------------------------
+// CPhSrvEmergencyRequestManager::SetNegotiatorAttemptedCallResponseValue
+//
+// Handle a response from the phone app engine - this is the
+// result of attempting to make a call (based upon a previous
+// clients external call request)
+// -----------------------------------------------------------------------------
+//
+void CPhSrvEmergencyRequestManager::SetNegotiatorAttemptedCallResponseValue(
+ TPhCltPhoneResults aResult )
+ {
+ if ( !iPendingRequestPointer.IsNull() )
+ {
+ iPendingRequestPointer.Complete( aResult );
+ }
+ }
+
+
+// End of File
+