mtpfws/mtpfw/daemon/server/src/cmtpserversession.cpp
changeset 49 c20dd21d1eb4
parent 20 6e82ae192c3a
equal deleted inserted replaced
41:2c19c7cf5550 49:c20dd21d1eb4
    23 #include "rmtpframework.h"
    23 #include "rmtpframework.h"
    24 #include "cmtpframeworkconfig.h"
    24 #include "cmtpframeworkconfig.h"
    25 #include "cmtpdataprovidercontroller.h"
    25 #include "cmtpdataprovidercontroller.h"
    26 #include "cmtpparserrouter.h"
    26 #include "cmtpparserrouter.h"
    27 #include "e32def.h"
    27 #include "e32def.h"
    28 __FLOG_STMT(_LIT8(KComponent,"ServerSession");)
    28 #include "mtpdebug.h"
       
    29 #include "OstTraceDefinitions.h"
       
    30 #ifdef OST_TRACE_COMPILER_IN_USE
       
    31 #include "cmtpserversessionTraces.h"
       
    32 #endif
       
    33 
    29 
    34 
    30 
    35 
    31 /**
    36 /**
    32 Constructor.
    37 Constructor.
    33 */
    38 */
    34 CMTPServerSession::CMTPServerSession()
    39 CMTPServerSession::CMTPServerSession()
    35     {
    40     {
    36     __FLOG_OPEN(KMTPSubsystem, KComponent);
    41     OstTraceFunctionEntry0( CMTPSERVERSESSION_CMTPSERVERSESSION_CONS_ENTRY );
    37     __FLOG(_L8("CMTPServerSession - Entry"));
    42     OstTraceFunctionExit0( CMTPSERVERSESSION_CMTPSERVERSESSION_CONS_EXIT );
    38     __FLOG(_L8("CMTPServerSession - Exit"));
       
    39     }
    43     }
    40     
    44     
    41 /**
    45 /**
    42 Destructor.
    46 Destructor.
    43 */
    47 */
    44 CMTPServerSession::~CMTPServerSession()
    48 CMTPServerSession::~CMTPServerSession()
    45     {
    49     {
    46     __FLOG(_L8("~CMTPServerSession - Entry"));
    50     OstTraceFunctionEntry0( CMTPSERVERSESSION_CMTPSERVERSESSION_DES_ENTRY );
    47     static_cast<CMTPServer*>(const_cast<CServer2*>(CSession2::Server()))->DropSession();
    51     static_cast<CMTPServer*>(const_cast<CServer2*>(CSession2::Server()))->DropSession();
    48     iSingletons.Close();
    52     iSingletons.Close();
    49     __FLOG(_L8("~CMTPServerSession - Exit"));
    53     OstTraceFunctionExit0( CMTPSERVERSESSION_CMTPSERVERSESSION_DES_EXIT );
    50     __FLOG_CLOSE;
       
    51     }
    54     }
    52     
    55     
    53 void CMTPServerSession::CreateL()
    56 void CMTPServerSession::CreateL()
    54     {
    57     {
    55     __FLOG(_L8("CreateL - Entry"));
    58     OstTraceFunctionEntry0( CMTPSERVERSESSION_CREATEL_ENTRY );
    56     iSingletons.OpenL();
    59     iSingletons.OpenL();
    57     static_cast<CMTPServer*>(const_cast<CServer2*>(CSession2::Server()))->AddSession();
    60     static_cast<CMTPServer*>(const_cast<CServer2*>(CSession2::Server()))->AddSession();
    58     __FLOG(_L8("CreateL - Exit"));
    61     OstTraceFunctionExit0( CMTPSERVERSESSION_CREATEL_EXIT );
    59     }
    62     }
    60 
    63 
    61 void CMTPServerSession::ServiceL(const RMessage2& aMessage)
    64 void CMTPServerSession::ServiceL(const RMessage2& aMessage)
    62     {
    65     {
    63     __FLOG(_L8("ServiceL - Entry"));
    66     OstTraceFunctionEntry0( CMTPSERVERSESSION_SERVICEL_ENTRY );
    64     switch (aMessage.Function())
    67     switch (aMessage.Function())
    65         {
    68         {
    66     case EMTPClientStartTransport:
    69     case EMTPClientStartTransport:
    67         __FLOG(_L8("StartTransport message received"));        
    70         OstTrace0( TRACE_NORMAL, CMTPSERVERSESSION_SERVICEL, "StartTrasport message received" );      
    68         DoStartTransportL(aMessage);
    71         DoStartTransportL(aMessage);
    69         break;
    72         break;
    70     case EMTPClientStopTransport:
    73     case EMTPClientStopTransport:      
    71         __FLOG(_L8("StopTransport message received"));
    74         OstTrace0( TRACE_NORMAL, DUP1_CMTPSERVERSESSION_SERVICEL, "StopTransport message received" );       
    72         DoStopTransport(aMessage);
    75         DoStopTransport(aMessage);
    73         break;
    76         break;
    74      case EMTPClientIsAvailable :
    77      case EMTPClientIsAvailable :                 
    75         __FLOG(_L8("IsAvailable message received"));
    78         OstTrace0( TRACE_NORMAL, DUP2_CMTPSERVERSESSION_SERVICEL, "IsAvailable message received" );    
    76         DoIsAvailableL(aMessage);
    79         DoIsAvailableL(aMessage);
    77      
    80      
    78         break;
    81         break;
    79     default:
    82     default:
    80         __FLOG(_L8("Unrecognised message received"));
    83         
       
    84         OstTrace0( TRACE_WARNING, DUP3_CMTPSERVERSESSION_SERVICEL, "Unrecognised message received" );
    81         break;        
    85         break;        
    82         }
    86         }
    83     __FLOG(_L8("ServiceL - Exit"));
    87     OstTraceFunctionExit0( CMTPSERVERSESSION_SERVICEL_EXIT );
    84     }
    88     }
    85 TBool CMTPServerSession::CheckIsAvailableL(TUid aNewUID,TUid aCurUID)
    89 TBool CMTPServerSession::CheckIsAvailableL(TUid aNewUID,TUid aCurUID)
    86 {
    90 {
       
    91         OstTraceFunctionEntry0( CMTPSERVERSESSION_CHECKISAVAILABLEL_ENTRY );
    87 
    92 
    88 	    TInt SwitchEnabled;
    93 	    TInt SwitchEnabled;
    89 	    iSingletons.FrameworkConfig().GetValueL(CMTPFrameworkConfig::ETransportSwitchEnabled, SwitchEnabled);	    
    94 	    iSingletons.FrameworkConfig().GetValueL(CMTPFrameworkConfig::ETransportSwitchEnabled, SwitchEnabled);	    
    90 	    if(!SwitchEnabled )
    95 	    if(!SwitchEnabled )
    91 		    {		    
    96 		    {		    
       
    97 		    OstTraceFunctionExit0( CMTPSERVERSESSION_CHECKISAVAILABLEL_EXIT );
    92 		    return EFalse;
    98 		    return EFalse;
    93 		    }
    99 		    }
    94        TBuf<30> value;
   100        TBuf<30> value;
    95        iSingletons.FrameworkConfig().GetValueL(CMTPFrameworkConfig::ETransportHighPriorityUID,value);	    	    
   101        iSingletons.FrameworkConfig().GetValueL(CMTPFrameworkConfig::ETransportHighPriorityUID,value);	    	    
    96 	   TUint HighUID;	    
   102 	   TUint HighUID;	    
    97 	   TLex lex(value);	    
   103 	   TLex lex(value);	    
    98 	   TInt conErr = lex.Val(HighUID,EHex);
   104 	   TInt conErr = lex.Val(HighUID,EHex);
    99 	   if(aCurUID.iUid == HighUID)
   105 	   if(aCurUID.iUid == HighUID)
   100 		    {
   106 		    {
       
   107 		    OstTraceFunctionExit0( DUP1_CMTPSERVERSESSION_CHECKISAVAILABLEL_EXIT );
   101 		    return EFalse;	
   108 		    return EFalse;	
   102 
   109 
   103 		    }
   110 		    }
   104 	   else if(aNewUID.iUid ==HighUID)
   111 	   else if(aNewUID.iUid ==HighUID)
   105 		    {
   112 		    {
       
   113 	    	OstTraceFunctionExit0( DUP2_CMTPSERVERSESSION_CHECKISAVAILABLEL_EXIT );
   106 	    	return ETrue;
   114 	    	return ETrue;
   107 		    }
   115 		    }
       
   116 	   OstTraceFunctionExit0( DUP3_CMTPSERVERSESSION_CHECKISAVAILABLEL_EXIT );
   108 	   return EFalse;	
   117 	   return EFalse;	
   109 }
   118 }
   110 /**
   119 /**
   111 Starts up the specified MTP transport protocol.
   120 Starts up the specified MTP transport protocol.
   112 @param aTransport The implementation UID of the transport protocol implemetation.
   121 @param aTransport The implementation UID of the transport protocol implemetation.
   113 @leave One of the system wide error codes, if a processing error occurs.
   122 @leave One of the system wide error codes, if a processing error occurs.
   114 */
   123 */
   115 void CMTPServerSession::DoStartTransportL(const RMessage2& aMessage)
   124 void CMTPServerSession::DoStartTransportL(const RMessage2& aMessage)
   116     {
   125     {
   117     __FLOG(_L8("DoStartTransportL - Entry"));
   126     OstTraceFunctionEntry0( CMTPSERVERSESSION_DOSTARTTRANSPORTL_ENTRY );
       
   127 
   118     TUid newUID = TUid::Uid(aMessage.Int0()); 
   128     TUid newUID = TUid::Uid(aMessage.Int0()); 
   119     TUid curUID = iSingletons.ConnectionMgr().TransportUid();
   129     TUid curUID = iSingletons.ConnectionMgr().TransportUid();
   120     if(curUID !=(KNullUid))  // Another Transport is already running
   130     if(curUID !=(KNullUid))  // Another Transport is already running
   121 		{
   131 		{
   122     	if(!CheckIsAvailableL(newUID,curUID))
   132     	if(!CheckIsAvailableL(newUID,curUID))
   123     		{
   133     		{
   124     		aMessage.Complete(KErrServerBusy);
   134     		aMessage.Complete(KErrServerBusy);
   125     		iSingletons.ConnectionMgr().QueueTransportL( newUID, NULL );
   135     		iSingletons.ConnectionMgr().QueueTransportL( newUID, NULL );
       
   136     		OstTraceFunctionExit0( CMTPSERVERSESSION_DOSTARTTRANSPORTL_EXIT );
   126     		return;
   137     		return;
   127     		}
   138     		}
   128 	    iSingletons.ConnectionMgr().StopTransport(curUID);
   139 	    iSingletons.ConnectionMgr().StopTransport(curUID);
   129     	}
   140     	}
   130     
   141     
   148     		{
   159     		{
   149     		aMessage.Complete(KErrNone);
   160     		aMessage.Complete(KErrNone);
   150     		}
   161     		}
   151     	else 
   162     	else 
   152     		{
   163     		{
   153     		User::LeaveIfError( err );
   164     		LEAVEIFERROR(err, OstTrace0(TRACE_ERROR, CMTPSERVERSESSION_DOSTARTTRANSPORTL, "start transport error"));
   154     		}
   165     		}
   155     	CleanupStack::PopAndDestroy(paramHbuf);
   166     	CleanupStack::PopAndDestroy(paramHbuf);
   156     	}
   167     	}
   157     else
   168     else
   158     	{
   169     	{
   166     	iSingletons.DpController().LoadDataProvidersL();
   177     	iSingletons.DpController().LoadDataProvidersL();
   167     	iSingletons.Router().ConfigureL();
   178     	iSingletons.Router().ConfigureL();
   168     	}
   179     	}
   169     
   180     
   170     
   181     
   171     __FLOG(_L8("DoStartTransportL - Exit"));
   182     OstTraceFunctionExit0( DUP1_CMTPSERVERSESSION_DOSTARTTRANSPORTL_EXIT );
   172     }  
   183     }  
   173 
   184 
   174 
   185 
   175 /**
   186 /**
   176 Shuts down the specified MTP transport protocol.
   187 Shuts down the specified MTP transport protocol.
   177 @param aTransport The implementation UID of the transport protocol implemetation.
   188 @param aTransport The implementation UID of the transport protocol implemetation.
   178 */  
   189 */  
   179 void CMTPServerSession::DoStopTransport(const RMessage2& aMessage)
   190 void CMTPServerSession::DoStopTransport(const RMessage2& aMessage)
   180     {
   191     {
   181     __FLOG(_L8("DoStopTransport - Entry"));
   192     OstTraceFunctionEntry0( CMTPSERVERSESSION_DOSTOPTRANSPORT_ENTRY );
   182    iSingletons.ConnectionMgr().StopTransport( TUid::Uid( aMessage.Int0() ), ETrue );
   193    iSingletons.ConnectionMgr().StopTransport( TUid::Uid( aMessage.Int0() ), ETrue );
   183     aMessage.Complete(KErrNone);
   194     aMessage.Complete(KErrNone);
   184     __FLOG(_L8("DoStopTransport - Exit"));
   195     OstTraceFunctionExit0( CMTPSERVERSESSION_DOSTOPTRANSPORT_EXIT );
   185     }
   196     }
   186 
   197 
   187 /**
   198 /**
   188 Checks whether MTP Framework shall allow the StartTransport Command for given transport.
   199 Checks whether MTP Framework shall allow the StartTransport Command for given transport.
   189 @param aTransport The implementation UID of the transport protocol implementation.
   200 @param aTransport The implementation UID of the transport protocol implementation.
   190 @leave One of the system wide error codes, if a processing error occurs.
   201 @leave One of the system wide error codes, if a processing error occurs.
   191 */  
   202 */  
   192 void CMTPServerSession::DoIsAvailableL(const RMessage2& aMessage)
   203 void CMTPServerSession::DoIsAvailableL(const RMessage2& aMessage)
   193     {
   204     {
   194     __FLOG(_L8("DoStopTransport - Entry"));
   205     OstTraceFunctionEntry0( CMTPSERVERSESSION_DOISAVAILABLEL_ENTRY );
   195    
   206    
   196    TUid newUID = TUid::Uid(aMessage.Int0()); 
   207    TUid newUID = TUid::Uid(aMessage.Int0()); 
   197    TUid curUID = iSingletons.ConnectionMgr().TransportUid();
   208    TUid curUID = iSingletons.ConnectionMgr().TransportUid();
   198    
   209    
   199    if(curUID !=(KNullUid))  // Another Transport is already running
   210    if(curUID !=(KNullUid))  // Another Transport is already running
   200 		{
   211 		{
   201 		if(curUID== newUID)
   212 		if(curUID== newUID)
   202 			{
   213 			{
   203     		aMessage.Complete(KErrAlreadyExists); 	
   214     		aMessage.Complete(KErrAlreadyExists); 	
       
   215     		OstTraceFunctionExit0( CMTPSERVERSESSION_DOISAVAILABLEL_EXIT );
   204     		return;				
   216     		return;				
   205 			}
   217 			}
   206     	else if(!CheckIsAvailableL(newUID,curUID))
   218     	else if(!CheckIsAvailableL(newUID,curUID))
   207     		{
   219     		{
   208     		aMessage.Complete(KErrServerBusy); 	
   220     		aMessage.Complete(KErrServerBusy); 	
       
   221     		OstTraceFunctionExit0( DUP1_CMTPSERVERSESSION_DOISAVAILABLEL_EXIT );
   209     		return;
   222     		return;
   210     		}	    
   223     		}	    
   211     	}
   224     	}
   212 
   225 
   213     aMessage.Complete(KErrNone);
   226     aMessage.Complete(KErrNone);
   214     __FLOG(_L8("DoStopTransport - Exit"));
   227 
       
   228     OstTraceFunctionExit0( DUP2_CMTPSERVERSESSION_DOISAVAILABLEL_EXIT );
   215     }
   229     }
   216 
   230 
   217 TBool CMTPServerSession::CheckIsBlueToothTransport(TUid aNewUid)
   231 TBool CMTPServerSession::CheckIsBlueToothTransport(TUid aNewUid)
   218 	{
   232 	{
   219 	TInt32 bluetoothUid = 0x10286FCB;
   233 	TInt32 bluetoothUid = 0x10286FCB;