phoneclientserver/phoneserver/Src/Standard/Standard_Aiw/CPhSrvSubSessionExtCall.cpp
branchRCL_3
changeset 20 987c9837762f
parent 19 7d48bed6ce0c
equal deleted inserted replaced
19:7d48bed6ce0c 20:987c9837762f
    15 *
    15 *
    16 */
    16 */
    17 
    17 
    18 
    18 
    19 // INCLUDE FILES
    19 // INCLUDE FILES
    20 #include "cphsrvsubsessionextcall.h" 
    20 #include "CPhSrvSubSessionExtCall.h"
    21 #include "cphsrvsession.h" 
    21 #include "CPhSrvSession.h"
    22 #include "cphsrvserver.h" 
    22 #include "CPhSrvServer.h"
    23 #include "mphsrvobjectnegotiators.h" 
    23 #include "MPhSrvObjectNegotiators.h"
    24 
    24 
    25 // Hash mark
    25 // Hash mark
    26 _LIT( KPhoneHash, "#" );
    26 _LIT( KPhoneHash, "#" );
    27 
    27 
    28 // dtmf chars
    28 // dtmf chars
    91             CmdSubSessionCloseL( aMessage );
    91             CmdSubSessionCloseL( aMessage );
    92             permissionStatus = ETrue;
    92             permissionStatus = ETrue;
    93             break;
    93             break;
    94         case EPhoneServerExtCallSubSessionMakeCall:
    94         case EPhoneServerExtCallSubSessionMakeCall:
    95             CreateCallArgsL( aMessage );
    95             CreateCallArgsL( aMessage );
    96             // Checks if telephone number contains dtmf string
    96 			// Checks if telephone number contains dtmf string
    97             dtmfNumber = IsDtmfPhoneNumber( iCallArgs->TelephoneNumber());
    97            	dtmfNumber = IsDtmfPhoneNumber( iCallArgs->TelephoneNumber());
    98             if ( !dtmfNumber )
    98            	if ( !dtmfNumber )
    99                 {
    99            	    {
   100                 // Checks if telephone number is USSD/SS string
   100            	    // Checks if telephone number is USSD/SS string
   101                 isSSUssd = ( iCallArgs->TelephoneNumber().Right( KPhoneHash().Length() ) == KPhoneHash );
   101            	    isSSUssd = ( iCallArgs->TelephoneNumber().Right( KPhoneHash().Length() ) == KPhoneHash );
   102                 if ( isSSUssd )
   102            	    if ( isSSUssd )
   103                     { 
   103            	        { 
   104                     // Capabilities needed if USSD/SS string
   104            	        // Capabilities needed if USSD/SS string
   105                     hasCapNetworkControlAndServices = aMessage.HasCapability( ECapabilityNetworkControl, 
   105                     hasCapNetworkControlAndServices = aMessage.HasCapability( ECapabilityNetworkControl, 
   106                                                               ECapabilityNetworkServices );
   106                                                               ECapabilityNetworkServices );
   107                     hasCapWriteAndReadDeviceData = aMessage.HasCapability( ECapabilityReadDeviceData, ECapabilityWriteDeviceData );
   107                     hasCapWriteAndReadDeviceData = aMessage.HasCapability( ECapabilityReadDeviceData, ECapabilityWriteDeviceData );
   108                     hasUssdSSCaps =  hasCapNetworkControlAndServices && hasCapWriteAndReadDeviceData;
   108                     hasUssdSSCaps =  hasCapNetworkControlAndServices && hasCapWriteAndReadDeviceData;
   109                     }   
   109            	        }   
   110                 }
   110            	    }
   111            if ( ( hasCapNetworkServices && !isSSUssd ) ||  hasUssdSSCaps )
   111            if ( ( hasCapNetworkServices && !isSSUssd ) ||  hasUssdSSCaps )
   112                 {
   112                 {
   113                 CmdSubSessionMakeCallL( aMessage );
   113                 CmdSubSessionMakeCallL( aMessage );
   114                 permissionStatus = ETrue;
   114                 permissionStatus = ETrue;
   115                 }
   115                 }
   158 // call requests.
   158 // call requests.
   159 // -----------------------------------------------------------------------------
   159 // -----------------------------------------------------------------------------
   160 //
   160 //
   161 void CPhSrvSubSessionExtCall::CmdSubSessionMakeCallL( 
   161 void CPhSrvSubSessionExtCall::CmdSubSessionMakeCallL( 
   162     const RMessage2& aMessage )
   162     const RMessage2& aMessage )
   163     {               
   163     {				
   164 
   164 
   165     // Submit a new request to the call manager
   165     // Submit a new request to the call manager
   166     MPhSrvNegotiatorCall& callNegotiator = PhoneSession().PhoneServer(
   166     MPhSrvNegotiatorCall& callNegotiator = PhoneSession().PhoneServer(
   167         ).CallNegotiatorL();
   167         ).CallNegotiatorL();
   168     callNegotiator.NegotiatorDialL( aMessage, *iCallArgs, *this );
   168     callNegotiator.NegotiatorDialL( aMessage, *iCallArgs, *this );
   192 // -----------------------------------------------------------------------------
   192 // -----------------------------------------------------------------------------
   193 //
   193 //
   194 void CPhSrvSubSessionExtCall::CreateCallArgsL( const RMessage2& aMessage )
   194 void CPhSrvSubSessionExtCall::CreateCallArgsL( const RMessage2& aMessage )
   195     {
   195     {
   196     HBufC8* package = HBufC8::NewLC( aMessage.Int1() ); 
   196     HBufC8* package = HBufC8::NewLC( aMessage.Int1() ); 
   197     TPtr8 calldata( package->Des() );
   197  	TPtr8 calldata( package->Des() );
   198     PhoneSession().Read(
   198 	PhoneSession().Read(
   199             aMessage,
   199             aMessage,
   200             0,
   200             0,
   201             calldata );
   201             calldata );
   202                                              
   202              								 
   203     iCallArgs = CPhCltExtPhoneDialData::NewL( *package );
   203    	iCallArgs = CPhCltExtPhoneDialData::NewL( *package );
   204     CleanupStack::PopAndDestroy( package );
   204    	CleanupStack::PopAndDestroy( package );
   205     }
   205     }
   206     
   206     
   207 // -----------------------------------------------------------------------------
   207 // -----------------------------------------------------------------------------
   208 // CPhSrvSubSessionExtCall::IsDtmfPhoneNumber
   208 // CPhSrvSubSessionExtCall::IsDtmfPhoneNumber
   209 // -----------------------------------------------------------------------------
   209 // -----------------------------------------------------------------------------