mmshplugins/mmshsipcrplugin/src/mussipcrplugin.cpp
changeset 0 f0cf47e981f9
child 32 73a1feb507fb
equal deleted inserted replaced
-1:000000000000 0:f0cf47e981f9
       
     1 /*
       
     2 * Copyright (c) 2005-2006 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:  The Mus ECOM interface implementation of the SIP
       
    15 *                stack client.
       
    16 *
       
    17 */
       
    18 
       
    19 
       
    20 
       
    21 #include "mussipcrplugin.h"
       
    22 #include "muscommon.h"
       
    23 #include "muslogger.h"
       
    24 #include "musmanager.h"
       
    25 #include "musuid.hrh"
       
    26 #include "musunittesting.h"
       
    27 
       
    28 #include <sipstrings.h>
       
    29 #include <sipstrconsts.h>
       
    30 #include <featmgr.h>
       
    31 
       
    32 _LIT8(KCapabilities,
       
    33 "<SIP_CLIENT ALLOW_STARTING=\"YES\">\
       
    34 <SIP_HEADERS>\
       
    35 <ACCEPT value=\"application/sdp\"/>\
       
    36 <ACCEPT_CONTACT value=\"*;+g.3gpp.cs-voice\"/>\
       
    37 </SIP_HEADERS>\
       
    38 <SDP_LINES>\
       
    39 <LINE name=\"m\" value=\"video 0 RTP/AVP 96\">\
       
    40 <MEDIA_ATTRIBUTE value=\"application:com.nokia.rtvs\"/>\
       
    41 <MEDIA_ATTRIBUTE value=\"X-application:com.nokia.rtvs\"/>\
       
    42 </LINE>\
       
    43 <LINE name=\"m\" value=\"audio 0 RTP/AVP 97\">\
       
    44 </LINE>\
       
    45 </SDP_LINES>\
       
    46 </SIP_CLIENT>");
       
    47 
       
    48 // -------------------------------------------------------------------------
       
    49 // Two-phased constructor.
       
    50 // -------------------------------------------------------------------------
       
    51 //
       
    52 CMusSipCrPlugin* CMusSipCrPlugin::NewL()
       
    53     {
       
    54     MUS_LOG( "mus: [MUSSCR]  -> CMusSipCrPlugin::NewL()" );
       
    55     CMusSipCrPlugin* self = new(ELeave) CMusSipCrPlugin;
       
    56     CleanupStack::PushL( self );
       
    57     self->ConstructL();
       
    58     CleanupStack::Pop( self );
       
    59     MUS_LOG( "mus: [MUSSCR]  <- CMusSipCrPlugin::NewL()" );
       
    60     return self;
       
    61     }
       
    62 
       
    63 
       
    64 // -------------------------------------------------------------------------
       
    65 // C++ destructor.
       
    66 // -------------------------------------------------------------------------
       
    67 //
       
    68 CMusSipCrPlugin::~CMusSipCrPlugin()
       
    69     {
       
    70     MUS_LOG( "mus: [MUSSCR]  -> CMusSipCrPlugin::~CMusSipCrPlugin()" );
       
    71     delete iManager;
       
    72     MUS_LOG( "mus: [MUSSCR]  <- CMusSipCrPlugin::~CMusSipCrPlugin()" );
       
    73     }
       
    74 
       
    75 
       
    76 // -------------------------------------------------------------------------
       
    77 // C++ constructor.
       
    78 // -------------------------------------------------------------------------
       
    79 //
       
    80 CMusSipCrPlugin::CMusSipCrPlugin()
       
    81     {
       
    82     }
       
    83 
       
    84 
       
    85 // -------------------------------------------------------------------------
       
    86 // Symbian second-phase constructor.
       
    87 // -------------------------------------------------------------------------
       
    88 //
       
    89 void CMusSipCrPlugin::ConstructL()
       
    90     {
       
    91     MUS_LOG( "mus: [MUSSCR]  -> CMusSipCrPlugin::ConstructL()" );
       
    92     iManager = CMusManager::NewL();
       
    93     MUS_LOG( "mus: [MUSSCR]  <- CMusSipCrPlugin::ConstructL()" );
       
    94     }
       
    95 
       
    96 
       
    97 // -------------------------------------------------------------------------
       
    98 // CMusSipCrPlugin::ChannelL
       
    99 // -------------------------------------------------------------------------
       
   100 //
       
   101 TUid CMusSipCrPlugin::ChannelL( RStringF aMethod,
       
   102     const TDesC8& /*aRequestUri*/,
       
   103     const RPointerArray<CSIPHeaderBase>& /*aHeaders*/,
       
   104     const TDesC8& /*aContent*/,
       
   105     const CSIPContentTypeHeader* /*aContentType*/)
       
   106     {
       
   107 	FeatureManager::InitializeLibL();
       
   108     TBool support = FeatureManager::FeatureSupported( KFeatureIdMultimediaSharing );
       
   109 	FeatureManager::UnInitializeLib();
       
   110 	TUid uid;
       
   111 	uid.iUid = ( TInt ) CMusManager::ESipInviteNotDesired;
       
   112 	if ( support )
       
   113 		{
       
   114 	    uid = DoChannelL( aMethod );  
       
   115 		}
       
   116     return uid;	
       
   117     }
       
   118 	
       
   119 	
       
   120 // -------------------------------------------------------------------------
       
   121 // CMusSipCrPlugin::DoChannelL
       
   122 // -------------------------------------------------------------------------
       
   123 TUid CMusSipCrPlugin::DoChannelL( RStringF aMethod )
       
   124     {
       
   125     MUS_LOG( "mus: [MUSSCR]  -> CMusSipCrPlugin::DoChannelL()" );
       
   126 
       
   127     if ( aMethod == SIPStrings::StringF( SipStrConsts::EOptions ) )
       
   128         {
       
   129         TUid uid;
       
   130         uid.iUid = ( TInt ) CMusManager::ESipOptions;
       
   131         MUS_LOG1( "mus: [MUSSCR]     <- CMusSipCrPlugin::DoChannelL(): KSipOptions %d",
       
   132                   uid.iUid );
       
   133         return uid;
       
   134         }
       
   135     else
       
   136         {
       
   137         MultimediaSharing::TMusAvailabilityStatus capability
       
   138             = iManager->AvailabilityL();
       
   139 
       
   140         if( capability < KErrNone || 
       
   141             capability >= MultimediaSharing::EErrServerShutDown )
       
   142             {
       
   143             TUid uid;
       
   144             uid.iUid = ( TInt ) CMusManager::ESipInviteNotDesired;
       
   145             MUS_LOG1( "mus: [MUSSCR]     <- CMusSipCrPlugin::DoChannelL(): \
       
   146                       KNotAllowedSipInvite %d", uid.iUid );
       
   147             return uid;
       
   148             }
       
   149         else
       
   150             {
       
   151             TUid uid;
       
   152             uid.iUid = ( TInt ) CMusManager::ESipInviteDesired;
       
   153             MUS_LOG1( "mus: [MUSSCR]     <- CMusSipCrPlugin::DoChannelL(): \
       
   154                       KAllowedSipInvite %d", uid.iUid );
       
   155             return uid;
       
   156             }
       
   157         }
       
   158     }
       
   159 
       
   160 
       
   161 
       
   162 // -------------------------------------------------------------------------
       
   163 // CMusSipCrPlugin::ConnectL
       
   164 // -------------------------------------------------------------------------
       
   165 //
       
   166 void CMusSipCrPlugin::ConnectL( TUid aUid )
       
   167     {
       
   168     MUS_LOG1( "mus: [MUSSCR]     -> CMusSipCrPlugin::ConnectL( %d )", aUid.iUid );
       
   169     if ( aUid.iUid == CMusManager::ESipOptions ||
       
   170          aUid.iUid == CMusManager::ESipInviteDesired ||
       
   171          aUid.iUid == CMusManager::ESipInviteNotDesired )
       
   172         {
       
   173         iManager->HandleSipRequestL(( CMusManager::TRequestType ) aUid.iUid );
       
   174         }
       
   175     else
       
   176         {
       
   177         MUS_LOG( "mus: [MUSSCR]  <- CMusSipCrPlugin::ChannelL()\
       
   178                        ( User::Leave KErrNotSupported )" );
       
   179         User::Leave( KErrNotSupported );
       
   180         }        
       
   181     MUS_LOG( "mus: [MUSSCR]  <- CMusSipCrPlugin::ConnectL()" );
       
   182     }
       
   183 
       
   184 
       
   185 // -------------------------------------------------------------------------
       
   186 // CMusSipCrPlugin::Capabilities()
       
   187 // -------------------------------------------------------------------------
       
   188 //
       
   189 const TDesC8& CMusSipCrPlugin::Capabilities()
       
   190     {
       
   191     MUS_LOG( "mus: [MUSSCR]  -> CMusSipCrPlugin::Capabilities()" );
       
   192     MUS_LOG( "mus: [MUSSCR]  <- CMusSipCrPlugin::Capabilities()" );
       
   193     return KCapabilities;
       
   194     }
       
   195 
       
   196 
       
   197 
       
   198