usbmgmt/usbmgr/host/functiondrivers/ms/msmm/client/src/msmmclient.cpp
branchRCL_3
changeset 42 f92a4f87e424
parent 0 c9bc50fca66e
child 43 012cc2ee6408
equal deleted inserted replaced
37:d3e8e7d462dd 42:f92a4f87e424
     1 /*
     1 /*
     2 * Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
     2 * Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
     3 * All rights reserved.
     3 * All rights reserved.
     4 * This component and the accompanying materials are made available
     4 * This component and the accompanying materials are made available
     5 * under the terms of "Eclipse Public License v1.0"
     5 * under the terms of "Eclipse Public License v1.0"
     6 * which accompanies this distribution, and is available
     6 * which accompanies this distribution, and is available
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
    24 #include <usb/usblogger.h>
    24 #include <usb/usblogger.h>
    25 
    25 
    26 #include <e32cmn.h>
    26 #include <e32cmn.h>
    27 
    27 
    28 #include "srvdef.h"
    28 #include "srvdef.h"
       
    29 #include "OstTraceDefinitions.h"
       
    30 #ifdef OST_TRACE_COMPILER_IN_USE
       
    31 #include "msmmclientTraces.h"
       
    32 #endif
       
    33 
    29  
    34  
    30 #ifdef __FLOG_ACTIVE
       
    31 _LIT8(KLogComponent, "UsbHostMsmmClient");
       
    32 #endif
       
    33 
       
    34 // Costants
    35 // Costants
    35 const TInt KConnectRetry = 0x2;
    36 const TInt KConnectRetry = 0x2;
    36 
    37 
    37 //---------------------------------------------------------------------------
    38 //---------------------------------------------------------------------------
    38 //
    39 //
    39 // NON-MEMBER FUNCTIONS
    40 // NON-MEMBER FUNCTIONS
    40 
    41 
    41 static TInt StartServer()
    42 static TInt StartServer()
    42     {
    43     {
    43     LOG_STATIC_FUNC_ENTRY
    44     OstTraceFunctionEntry0( MSMMCLIENT_SRC_STARTSERVER_ENTRY );
    44     
    45     
    45     TInt ret = KErrNone;
    46     TInt ret = KErrNone;
    46 
    47 
    47     // Create the server process
    48     // Create the server process
    48     const TUidType serverUid(KNullUid, KNullUid, KMsmmServUid);
    49     const TUidType serverUid(KNullUid, KNullUid, KMsmmServUid);
    51     ret = server.Create(KMsmmServerBinaryName, KNullCommand, serverUid);
    52     ret = server.Create(KMsmmServerBinaryName, KNullCommand, serverUid);
    52 
    53 
    53     // Was server process created OK?
    54     // Was server process created OK?
    54     if (KErrNone != ret)
    55     if (KErrNone != ret)
    55         {
    56         {
       
    57         OstTraceFunctionExit0( MSMMCLIENT_SRC_STARTSERVER_EXIT );
    56         return ret;
    58         return ret;
    57         }
    59         }
    58 
    60 
    59     // Set up Rendezvous so that server thread can signal correct startup
    61     // Set up Rendezvous so that server thread can signal correct startup
    60     TRequestStatus serverDiedRequestStatus;
    62     TRequestStatus serverDiedRequestStatus;
    75 
    77 
    76     // determine the reason for the server exit
    78     // determine the reason for the server exit
    77     TInt exitReason = (EExitPanic == server.ExitType()) ? 
    79     TInt exitReason = (EExitPanic == server.ExitType()) ? 
    78             KErrGeneral : serverDiedRequestStatus.Int();
    80             KErrGeneral : serverDiedRequestStatus.Int();
    79     server.Close();
    81     server.Close();
       
    82     OstTraceFunctionExit0( MSMMCLIENT_SRC_STARTSERVER_EXIT_DUP1 );
    80     return exitReason;
    83     return exitReason;
    81     }
    84     }
    82 
    85 
    83 //---------------------------------------------------------------------------
    86 //---------------------------------------------------------------------------
    84 // RMsmmSession
    87 // RMsmmSession
    85 //
    88 //
    86 // Public member functions
    89 // Public member functions
    87 
    90 
    88 EXPORT_C TInt RMsmmSession::Connect()
    91 EXPORT_C TInt RMsmmSession::Connect()
    89     {
    92     {
    90     LOG_FUNC
    93     OstTraceFunctionEntry0( RMSMMSESSION_CONNECT_ENTRY );
    91     
    94     
    92     TInt retry = KConnectRetry; // Attempt connect twice then give up
    95     TInt retry = KConnectRetry; // Attempt connect twice then give up
    93     TInt ret(KErrNone);
    96     TInt ret(KErrNone);
    94     FOREVER
    97     FOREVER
    95         {
    98         {
   111             }
   114             }
   112         }
   115         }
   113 
   116 
   114     if (KErrNone != ret)
   117     if (KErrNone != ret)
   115         {
   118         {
   116         LOGTEXT2(_L("Underlying error value = %d"), ret)
   119         OstTrace1( TRACE_ERROR, RMSMMSESSION_CONNECT, 
       
   120                 "Underlying error value = %d", ret );
       
   121         
   117         ret = KErrCouldNotConnect;
   122         ret = KErrCouldNotConnect;
   118         }
   123         }
   119     
   124     
       
   125     OstTraceFunctionExit0( RMSMMSESSION_CONNECT_EXIT );
   120     return ret; 
   126     return ret; 
   121     }
   127     }
   122 
   128 
   123 EXPORT_C TInt RMsmmSession::Disconnect()
   129 EXPORT_C TInt RMsmmSession::Disconnect()
   124     {
   130     {
   125     LOG_FUNC
   131     OstTraceFunctionEntry0( RMSMMSESSION_DISCONNECT_ENTRY );
   126     
       
   127     Close();
   132     Close();
       
   133     OstTraceFunctionExit0( RMSMMSESSION_DISCONNECT_EXIT );
   128     return KErrNone;
   134     return KErrNone;
   129     }
   135     }
   130 
   136 
   131 // Called to provide the version number of the server we require for this API
   137 // Called to provide the version number of the server we require for this API
   132 EXPORT_C TVersion RMsmmSession::Version() const
   138 EXPORT_C TVersion RMsmmSession::Version() const
   133     {
   139     {
   134     LOG_FUNC
   140     OstTraceFunctionEntry0( RMSMMSESSION_VERSION_ENTRY );
   135     
   141     
   136     return TVersion(KMsmmServMajorVersionNumber,
   142     return TVersion(KMsmmServMajorVersionNumber,
   137                     KMsmmServMinorVersionNumber,
   143                     KMsmmServMinorVersionNumber,
   138                     KMsmmServBuildVersionNumber);
   144                     KMsmmServBuildVersionNumber);
   139     }
   145     }
   140 
   146 
   141 EXPORT_C TInt RMsmmSession::AddFunction(
   147 EXPORT_C TInt RMsmmSession::AddFunction(
   142         const TUSBMSDeviceDescription& aDevice,
   148         const TUSBMSDeviceDescription& aDevice,
   143         TUint8 aInterfaceNumber, TUint32 aInterfaceToken)
   149         TUint8 aInterfaceNumber, TUint32 aInterfaceToken)
   144     {
   150     {
   145     LOG_FUNC
   151     OstTraceFunctionEntry0( RMSMMSESSION_ADDFUNCTION_ENTRY );
   146     
   152     
   147     TInt ret(KErrNone);
   153     TInt ret(KErrNone);
   148     
   154     
   149     TIpcArgs usbmsIpcArgs;
   155     TIpcArgs usbmsIpcArgs;
   150     iDevicePkg = aDevice; // Package the device description
   156     iDevicePkg = aDevice; // Package the device description
   152     usbmsIpcArgs.Set(1, aInterfaceNumber);
   158     usbmsIpcArgs.Set(1, aInterfaceNumber);
   153     usbmsIpcArgs.Set(2, aInterfaceToken);
   159     usbmsIpcArgs.Set(2, aInterfaceToken);
   154 
   160 
   155     ret = SendReceive(EHostMsmmServerAddFunction, usbmsIpcArgs);
   161     ret = SendReceive(EHostMsmmServerAddFunction, usbmsIpcArgs);
   156     
   162     
       
   163     OstTraceFunctionExit0( RMSMMSESSION_ADDFUNCTION_EXIT );
   157     return ret;
   164     return ret;
   158     }
   165     }
   159 
   166 
   160 EXPORT_C TInt RMsmmSession::RemoveDevice(TUint aDevice)
   167 EXPORT_C TInt RMsmmSession::RemoveDevice(TUint aDevice)
   161     {
   168     {
   162     LOG_FUNC
   169     OstTraceFunctionEntry0( RMSMMSESSION_REMOVEDEVICE_ENTRY );
   163     
   170     
   164     TInt ret(KErrNone);
   171     TInt ret(KErrNone);
   165 
   172 
   166     TIpcArgs usbmsIpcArgs(aDevice);
   173     TIpcArgs usbmsIpcArgs(aDevice);
   167 
   174 
   168     ret = SendReceive(EHostMsmmServerRemoveDevice, usbmsIpcArgs);
   175     ret = SendReceive(EHostMsmmServerRemoveDevice, usbmsIpcArgs);
   169     
   176     
       
   177     OstTraceFunctionExit0( RMSMMSESSION_REMOVEDEVICE_EXIT );
   170     return ret;
   178     return ret;
   171     }
   179     }
   172 
   180 
   173 EXPORT_C TInt RMsmmSession::__DbgFailNext(TInt aCount)
   181 EXPORT_C TInt RMsmmSession::__DbgFailNext(TInt aCount)
   174     {
   182     {
   175     LOG_FUNC
   183     OstTraceFunctionEntry0( RMSMMSESSION_DBGFAILNEXT_ENTRY );
   176     
   184     
   177 #ifdef _DEBUG
   185 #ifdef _DEBUG
   178     return SendReceive(EHostMsmmServerDbgFailNext, TIpcArgs(aCount));
   186     return SendReceive(EHostMsmmServerDbgFailNext, TIpcArgs(aCount));
   179 #else
   187 #else
   180     (void)aCount;
   188     (void)aCount;
       
   189     OstTraceFunctionExit0( RMSMMSESSION_DBGFAILNEXT_EXIT );
   181     return KErrNone;
   190     return KErrNone;
   182 #endif
   191 #endif
   183     }
   192     }
   184 
   193 
   185 EXPORT_C TInt RMsmmSession::__DbgAlloc()
   194 EXPORT_C TInt RMsmmSession::__DbgAlloc()
   186     {
   195     {
   187     LOG_FUNC
   196     OstTraceFunctionEntry0( RMSMMSESSION_DBGALLOC_ENTRY );
   188     
   197     
   189 #ifdef _DEBUG
   198 #ifdef _DEBUG
   190     return SendReceive(EHostMsmmServerDbgAlloc);
   199     return SendReceive(EHostMsmmServerDbgAlloc);
   191 #else
   200 #else
       
   201     OstTraceFunctionExit0( RMSMMSESSION_DBGALLOC_EXIT );
   192     return KErrNone;
   202     return KErrNone;
   193 #endif
   203 #endif
   194     }
   204     }
   195 
   205 
   196 // End of file
   206 // End of file