--- a/mmsharing/mmshavailability/src/musavaoptionhandler.cpp Tue Aug 31 15:12:07 2010 +0300
+++ b/mmsharing/mmshavailability/src/musavaoptionhandler.cpp Wed Sep 01 12:31:01 2010 +0100
@@ -33,7 +33,6 @@
#include "musavaterminal.h"
#include "mussettingskeys.h"
#include "mussettings.h"
-#include "mussesseioninformationapi.h"
_LIT( KMusSipPrefix, "sip:" );
@@ -142,21 +141,6 @@
( MMusAvaSipAdapter& ) *iSipAgent,
KMusOptionsHandlerIndex );
- MUS_LOG( "mus: [MUSAVA] Check fast mode capability" )
-
- TRAPD( err,
- iFastModeCapable =
- MultimediaSharingSettings::FastStartupModeL() == MusSettingsKeys::EFastModeOn &&
- MultimediaSharingSettings::VideoDirectionL() == MusSettingsKeys::ETwoWayVideo &&
- MultimediaSharingSettings::CapabilityQuerySettingL() == MusSettingsKeys::EParallel );
- if ( err == KErrNoMemory )
- {
- User::Leave( err );
- }
-
- MUS_LOG2( "mus: [MUSAVA] Fast mode check, err:%d, capable:%d",
- err, iFastModeCapable )
-
MUS_LOG( "mus: [MUSAVA] <- CMusAvaOptionHandler::ConstructL()" )
}
@@ -167,13 +151,8 @@
//
TBool CMusAvaOptionHandler::CapabilityQueryAnswered( TBool aAnswered )
{
- MUS_LOG1( "mus: [MUSAVA] <-> CMusAvaOptionHandler::CapabilityQueryAnswered():%d",
- aAnswered )
-
iCapabilityQueryAnswered = aAnswered ? aAnswered : iCapabilityQueryAnswered;
- HandleFastModeQueryAnswered();
-
return iCapabilityQueryAnswered;
}
@@ -252,13 +231,13 @@
if ( variantSetting == MusSettingsKeys::EOperatorSpecific
&& iSettings.CallDirection() == 2 && !iCapabilitiesRequestAnswered )
{ // terminated party
- DoSetState( MMusAvaObserver::EMusAvaStatusOptionsNotSent );
+ SetState( MMusAvaObserver::EMusAvaStatusOptionsNotSent );
}
else if ( MusSettingsKeys::ESequential ==
MultimediaSharingSettings::CapabilityQuerySettingL()
&& iSettings.CallDirection() == 2 && !iCapabilitiesRequestAnswered )
{ // terminated party
- DoSetState( MMusAvaObserver::EMusAvaStatusOptionsNotSent );
+ SetState( MMusAvaObserver::EMusAvaStatusOptionsNotSent );
}
else
{
@@ -289,11 +268,11 @@
if ( iCapabilityExchange->
TerminalL( sipAddress8->Des() ).QueryExecuting() )
{
- DoSetState( MMusAvaObserver::EMusAvaStatusOptionsSent );
+ SetState( MMusAvaObserver::EMusAvaStatusOptionsSent );
}
else
{
- DoSetState( MMusAvaObserver::EMusAvaStatusAvailable );
+ SetState( MMusAvaObserver::EMusAvaStatusAvailable );
}
CleanupStack::PopAndDestroy( sipAddress8 );
}
@@ -302,24 +281,24 @@
// since we did not send any options set the state EMusAvaStatusNotExecuted.
else if( err == KErrSIPInvalidRegistrationState )
{
- DoSetState( MMusAvaObserver::EMusAvaStatusNotExecuted );
+ SetState( MMusAvaObserver::EMusAvaStatusNotExecuted );
}
// anything other than this should be considered default , means options sent
// and was not successful.
else
{
- DoSetState( MMusAvaObserver::EMusAvaOptionNotAvailable );
+ SetState( MMusAvaObserver::EMusAvaOptionNotAvailable );
}
}
else
{
- DoSetState( MMusAvaObserver::EMusAvaStatusOptionsNotSent );
+ SetState( MMusAvaObserver::EMusAvaStatusOptionsNotSent );
}
}
else
{
// option sending not needed
- DoSetState( MMusAvaObserver::EMusAvaStatusOptionsNotSent );
+ SetState( MMusAvaObserver::EMusAvaStatusOptionsNotSent );
}
}
@@ -348,23 +327,6 @@
return MMusAvaObserver::EMusAvaOptionHandler;
}
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusAvaOptionHandler::PrepareForReceivedInviteL()
- {
- MUS_LOG( "mus: [MUSAVA] -> CMusAvaOptionHandler::PrepareForReceivedInviteL()" )
-
- if ( iFastModeAvailabilityDelayed )
- {
- MUS_LOG( "mus: [MUSAVA] Set delayed availability" )
- SetState( MMusAvaObserver::EMusAvaStatusAvailable );
- iFastModeAvailabilityDelayed = EFalse;
- }
-
- MUS_LOG( "mus: [MUSAVA] <- CMusAvaOptionHandler::PrepareForReceivedInviteL()" )
- }
// -----------------------------------------------------------------------------
//
@@ -379,17 +341,19 @@
{
// tell the upper layer that
// query was succesfull. VS is available
- DoSetState( MMusAvaObserver::EMusAvaStatusAvailable );
+ //record the number
+ iSettings.SetOptionSentNumber( iSettings.TelNumber() );
+ SetState( MMusAvaObserver::EMusAvaStatusAvailable );
}
else if ( aSentQuery.Result() == KCapabilityCapabilitiesForbidden )
{
// query returned with response "403 Forbidden". VS is NOT available
- DoSetState( MMusAvaObserver::EMusAvaFailureCode );
+ SetState( MMusAvaObserver::EMusAvaFailureCode );
}
else
{
//query failed. VS is NOT available
- DoSetState( MMusAvaObserver::EMusAvaOptionNotAvailable );
+ SetState( MMusAvaObserver::EMusAvaOptionNotAvailable );
}
MUS_LOG(
@@ -436,7 +400,6 @@
"mus: [MUSAVA] -> CMusAvaOptionHandler::\
SetCapabilitiesResolvedForCingular()" )
iCapabilitiesRequestAnswered = ETrue;
-
TRAPD( error, DoExecuteL() );
if ( error )
{
@@ -571,214 +534,8 @@
{
MUS_LOG("mus: [MUSAVA] -> CMusAvaOptionHandler::VideoCodecsResolvedL()" )
- iSettings.SetVideoCodecsL( aVideoCodecs );
+ iSettings.SetVideoCodecsL(aVideoCodecs);
MUS_LOG("mus: [MUSAVA] <- CMusAvaOptionHandler::VideoCodecsResolvedL()" )
}
-
-// -----------------------------------------------------------------------------
-// If MO side fast mode negotiation has failed, cannot change the value anymore
-// as it is very likely that automatic invitation fails as well.
-// -----------------------------------------------------------------------------
-//
-void CMusAvaOptionHandler::FastModeResolved( MusSettingsKeys::TFastMode aMode )
- {
- MUS_LOG1("mus: [MUSAVA] -> CMusAvaOptionHandler::FastModeResolved():%d",
- aMode )
-
- if ( FastModeNegotiationFailedMO() )
- {
- MUS_LOG("mus: [MUSAVA] Ignore setting as failed already" )
- }
- else
- {
- iSettings.SetFastMode( aMode );
- }
-
- MUS_LOG("mus: [MUSAVA] <- CMusAvaOptionHandler::FastModeResolved()" )
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TInt CMusAvaOptionHandler::DoSetState( MMusAvaObserver::TAvailabilityStatus aNewState )
- {
- MUS_LOG1( "mus: [MUSAVA] -> CMusAvaOptionHandler::DoSetState() state:%d",
- aNewState )
- TInt err( KErrNone );
-
- if ( iFastModeCapable )
- {
- TRAP( err, aNewState = HandleFastModeL( aNewState ) );
- }
-
- SetState( aNewState );
-
- MUS_LOG1("mus: [MUSAVA] <- CMusAvaOptionHandler::DoSetState(), err:%d", err )
-
- return err;
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-MMusAvaObserver::TAvailabilityStatus CMusAvaOptionHandler::HandleFastModeL(
- MMusAvaObserver::TAvailabilityStatus aNewState )
- {
- MUS_LOG("mus: [MUSAVA] -> CMusAvaOptionHandler::HandleFastModeL()" )
-
- switch ( aNewState )
- {
- case MMusAvaObserver::EMusAvaOptionNotAvailable:
- {
- aNewState = HandleFastModeOptionNotAvailableL( aNewState );
- break;
- }
- case MMusAvaObserver::EMusAvaStatusOptionsNotSent:
- {
- aNewState = HandleFastModeOptionsNotSentL( aNewState );
- break;
- }
- case MMusAvaObserver::EMusAvaStatusAvailable:
- {
- aNewState = HandleFastModeAvailableL( aNewState );
- break;
- }
- default:
- {
- break;
- }
- }
-
- MUS_LOG("mus: [MUSAVA] <- CMusAvaOptionHandler::HandleFastModeL()" )
-
- return aNewState;
- }
-
-// -----------------------------------------------------------------------------
-// If fast mode and call originator, application is started
-// automatically at background with two-way MO use case. If fast mode is
-// negotiated, availability publishing is delayed at MT side until invitation
-// is received (as MO will send invite automatically).
-// -----------------------------------------------------------------------------
-//
-MMusAvaObserver::TAvailabilityStatus CMusAvaOptionHandler::HandleFastModeAvailableL(
- MMusAvaObserver::TAvailabilityStatus aNewState )
- {
- MUS_LOG("mus: [MUSAVA] -> CMusAvaOptionHandler::HandleFastModeAvailableL()" )
-
- __ASSERT_ALWAYS( iSettings.Observer(), User::Leave( KErrNotReady ) );
-
- if ( State() != MMusAvaObserver::EMusAvaStatusAvailable &&
- iSettings.FastMode() == MusSettingsKeys::EFastModeOn )
- {
- if ( iSettings.CallDirection() == NMusSessionInformationApi::ECallOrginated )
- {
- MUS_LOG("mus: [MUSAVA] Starting application at background" )
- iSettings.Observer()->StartApplicationL( MultimediaSharing::EMusTwoWayVideo );
- }
- else
- {
- MUS_LOG("mus: [MUSAVA] Delay availability publishing" )
- iFastModeAvailabilityDelayed = ETrue;
- aNewState = State();
- }
- }
-
- MUS_LOG("mus: [MUSAVA] <- CMusAvaOptionHandler::HandleFastModeAvailableL()" )
-
- return aNewState;
- }
-
-// -----------------------------------------------------------------------------
-// If fast mode and call terminated side, answering to 200 ok is already enough
-// to set us available in delayed manner as other end can start sending
-// invitation already after getting fast mode information in answer.
-// -----------------------------------------------------------------------------
-//
-void CMusAvaOptionHandler::HandleFastModeQueryAnswered()
- {
- if ( FastModeNegotiatedByAnswerMT() )
- {
- MUS_LOG( "mus: [MUSAVA] Set fastmode available already as answered" )
-
- // Will result delayed availability handling
- DoSetState( MMusAvaObserver::EMusAvaStatusOptionsNotSent );
- }
- }
-
-// -----------------------------------------------------------------------------
-// If options wasn't sent because of missing information, state can be set to
-// available immediately as MT cannot start waiting for invite unless it is
-// sure that other end is about to send it.
-// -----------------------------------------------------------------------------
-//
-MMusAvaObserver::TAvailabilityStatus
-CMusAvaOptionHandler::HandleFastModeOptionsNotSentL(
- MMusAvaObserver::TAvailabilityStatus aNewState )
- {
- MUS_LOG("mus: [MUSAVA] -> CMusAvaOptionHandler::HandleFastModeOptionsNotSentL()" )
-
- if ( FastModeNegotiatedByAnswerMT() )
- {
- MUS_LOG("mus: [MUSAVA] Answered already, set available" )
- // Make available but start waiting for invitation
- aNewState = HandleFastModeAvailableL( MMusAvaObserver::EMusAvaStatusAvailable );
- }
-
- MUS_LOG("mus: [MUSAVA] <- CMusAvaOptionHandler::HandleFastModeOptionsNotSentL()" )
-
- return aNewState;
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-MMusAvaObserver::TAvailabilityStatus
-CMusAvaOptionHandler::HandleFastModeOptionNotAvailableL(
- MMusAvaObserver::TAvailabilityStatus aNewState )
- {
- MUS_LOG("mus: [MUSAVA] -> CMusAvaOptionHandler::HandleFastModeOptionNotAvailableL()" )
-
- if ( iFastModeAvailabilityDelayed ||
- State() == MMusAvaObserver::EMusAvaStatusAvailable )
- {
- MUS_LOG("mus: [MUSAVA] In delayed mode or available, ignore" )
- aNewState = State();
- }
-
- MUS_LOG("mus: [MUSAVA] <- CMusAvaOptionHandler::HandleFastModeOptionNotAvailableL()" )
-
- return aNewState;
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TBool CMusAvaOptionHandler::FastModeNegotiatedByAnswerMT()
- {
- return ( iFastModeCapable &&
- iCapabilityQueryAnswered &&
- iSettings.FastMode() == MusSettingsKeys::EFastModeOn &&
- iSettings.CallDirection() == NMusSessionInformationApi::ECallTerminated );
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TBool CMusAvaOptionHandler::FastModeNegotiationFailedMO()
- {
- return ( iFastModeCapable &&
- iSettings.FastMode() != MusSettingsKeys::EFastModeOn &&
- iSettings.CallDirection() == NMusSessionInformationApi::ECallOrginated &&
- State() != MMusAvaObserver::EMusAvaStatusAvailable &&
- State() != MMusAvaObserver::EMusAvaStatusOptionsSent );
- }
-
-// End of file