usbmgmt/usbmgr/usbman/client/SRC/RUsb.cpp
changeset 36 1a2a19ee918d
parent 31 4bea936937d0
equal deleted inserted replaced
31:4bea936937d0 36:1a2a19ee918d
    17 
    17 
    18 #include <e32uid.h>
    18 #include <e32uid.h>
    19 #include <usbman.h>
    19 #include <usbman.h>
    20 #include <usb.h>
    20 #include <usb.h>
    21 #include <e32base.h>
    21 #include <e32base.h>
    22 #include "rusb.h"
       
    23 #include <usb/usblogger.h>
       
    24 
       
    25 #ifdef __FLOG_ACTIVE
       
    26 _LIT8(KLogComponent, "USBMAN");
       
    27 #endif
       
    28 
    22 
    29 #ifdef __USBMAN_NO_PROCESSES__
    23 #ifdef __USBMAN_NO_PROCESSES__
    30 #include <e32math.h>
    24 #include <e32math.h>
       
    25 #endif
       
    26 
       
    27 #include <usb/usblogger.h>
       
    28 
       
    29 #include "rusb.h"
       
    30 
       
    31 #include "OstTraceDefinitions.h"
       
    32 #ifdef OST_TRACE_COMPILER_IN_USE
       
    33 #include "RUsbTraces.h"
    31 #endif
    34 #endif
    32 
    35 
    33 
    36 
    34 static TInt StartServer()
    37 static TInt StartServer()
    35 //
    38 //
   107 	// from KErrNone
   110 	// from KErrNone
   108 	err = (server.ExitType() == EExitPanic) ? KErrServerTerminated : stat.Int();
   111 	err = (server.ExitType() == EExitPanic) ? KErrServerTerminated : stat.Int();
   109 
   112 
   110 	server.Close();
   113 	server.Close();
   111 	
   114 	
   112 	LOGTEXT2(_L8("USB server started successfully: err = %d\n"),err);
   115 	OstTrace1( TRACE_NORMAL, RUSB_STARTSERVER, "::StartServer;USB server started successfully: err=%d", err );
       
   116 	
   113 
   117 
   114 	return err;
   118 	return err;
   115 	}
   119 	}
   116 
   120 
   117 
   121 
   119 
   123 
   120 EXPORT_C RUsb::RUsb() 
   124 EXPORT_C RUsb::RUsb() 
   121 	: iDeviceStatePkg(0), iServiceStatePkg(0), iMessagePkg(0), 
   125 	: iDeviceStatePkg(0), iServiceStatePkg(0), iMessagePkg(0), 
   122 	  iHostPkg(TDeviceEventInformation())
   126 	  iHostPkg(TDeviceEventInformation())
   123 	{
   127 	{
   124 	LOG_LINE
   128 	OstTraceFunctionEntry0( RUSB_RUSB_CONS_ENTRY );
   125 	LOG_FUNC
   129 	OstTraceFunctionExit0( RUSB_RUSB_CONS_EXIT );
   126 	}
   130 	}
   127 
   131 
   128 EXPORT_C RUsb::~RUsb()
   132 EXPORT_C RUsb::~RUsb()
   129 	{
   133 	{
   130 	LOG_LINE
   134     OstTraceFunctionEntry0( RUSB_RUSB_DES_ENTRY );
   131 	LOG_FUNC
   135 	OstTraceFunctionExit0( RUSB_RUSB_DES_EXIT );
   132 	}
   136 	}
   133 
   137 
   134 EXPORT_C TVersion RUsb::Version() const
   138 EXPORT_C TVersion RUsb::Version() const
   135 	{
   139 	{
   136 	return(TVersion(KUsbSrvMajorVersionNumber,KUsbSrvMinorVersionNumber,KUsbSrvBuildVersionNumber));
   140 	return(TVersion(KUsbSrvMajorVersionNumber,KUsbSrvMinorVersionNumber,KUsbSrvBuildVersionNumber));
   137 	}
   141 	}
   138 
   142 
   139 EXPORT_C TInt RUsb::Connect()
   143 EXPORT_C TInt RUsb::Connect()
   140 	{
   144 	{
   141 	LOG_LINE
   145 	OstTraceFunctionEntry0( RUSB_CONNECT_ENTRY );
   142 	LOG_FUNC
       
   143 
       
   144 	TInt retry = 2;
   146 	TInt retry = 2;
   145 	
   147 	
   146 	FOREVER
   148 	FOREVER
   147 		{
   149 		{
   148 		// Create the session to UsbSrv with 10 asynchronous message slots
   150 		// Create the session to UsbSrv with 10 asynchronous message slots
   149 		TInt err = CreateSession(KUsbServerName, Version(), 10);
   151 		TInt err = CreateSession(KUsbServerName, Version(), 10);
   150 
   152 
   151 		if ((err != KErrNotFound) && (err != KErrServerTerminated))
   153 		if ((err != KErrNotFound) && (err != KErrServerTerminated))
   152 			{
   154 			{
       
   155 			OstTraceFunctionExit0( RUSB_CONNECT_EXIT );
   153 			return err;
   156 			return err;
   154 			}
   157 			}
   155 
   158 
   156 		if (--retry == 0)
   159 		if (--retry == 0)
   157 			{
   160 			{
       
   161 			OstTraceFunctionExit0( RUSB_CONNECT_EXIT_DUP1 );
   158 			return err;
   162 			return err;
   159 			}
   163 			}
   160 
   164 
   161 		err = StartServer();
   165 		err = StartServer();
   162 
   166 
   163 		if ((err != KErrNone) && (err != KErrAlreadyExists))
   167 		if ((err != KErrNone) && (err != KErrAlreadyExists))
   164 			{
   168 			{
       
   169 			OstTraceFunctionExit0( RUSB_CONNECT_EXIT_DUP2 );
   165 			return err;
   170 			return err;
   166 			}
   171 			}
   167 		}
   172 		}
   168 	}
   173 	}
   169 
   174 
   170 EXPORT_C void RUsb::Start(TRequestStatus& aStatus)
   175 EXPORT_C void RUsb::Start(TRequestStatus& aStatus)
   171 	{
   176 	{
   172 	LOG_LINE
   177 	OstTraceFunctionEntry0( RUSB_START_ENTRY );
   173 	LOG_FUNC
   178 	
   174 
       
   175 	SendReceive(EUsbStart, aStatus);
   179 	SendReceive(EUsbStart, aStatus);
       
   180 	OstTraceFunctionExit0( RUSB_START_EXIT );
   176 	}
   181 	}
   177 
   182 
   178 EXPORT_C void RUsb::StartCancel()
   183 EXPORT_C void RUsb::StartCancel()
   179 	{
   184 	{
   180 	LOG_LINE
   185 	OstTraceFunctionEntry0( RUSB_STARTCANCEL_ENTRY );
   181 	LOG_FUNC
       
   182 
       
   183 	SendReceive(EUsbStartCancel);
   186 	SendReceive(EUsbStartCancel);
       
   187 	OstTraceFunctionExit0( RUSB_STARTCANCEL_EXIT );
   184 	}
   188 	}
   185 
   189 
   186 EXPORT_C void RUsb::Stop()
   190 EXPORT_C void RUsb::Stop()
   187 	{
   191 	{
   188 	LOG_LINE
   192 	OstTraceFunctionEntry0( RUSB_STOP_ENTRY );
   189 	LOG_FUNC
       
   190 
       
   191 	SendReceive(EUsbStop);
   193 	SendReceive(EUsbStop);
       
   194 	OstTraceFunctionExit0( RUSB_STOP_EXIT );
   192 	}
   195 	}
   193 
   196 
   194 EXPORT_C void RUsb::Stop(TRequestStatus& aStatus)
   197 EXPORT_C void RUsb::Stop(TRequestStatus& aStatus)
   195 	{
   198 	{
   196 	LOG_LINE
   199 	OstTraceFunctionEntry0( RUSB_STOP_TREQUESTSTATUS_ENTRY );
   197 	LOG_FUNC
       
   198 
       
   199 	SendReceive(EUsbStop, aStatus);
   200 	SendReceive(EUsbStop, aStatus);
       
   201 	OstTraceFunctionExit0( RUSB_STOP_TREQUESTSTATUS_EXIT );
   200 	}
   202 	}
   201 
   203 
   202 EXPORT_C void RUsb::StopCancel()
   204 EXPORT_C void RUsb::StopCancel()
   203 	{
   205 	{
   204 	LOG_LINE
   206 	OstTraceFunctionEntry0( RUSB_STOPCANCEL_ENTRY );
   205 	LOG_FUNC
       
   206 
       
   207 	SendReceive(EUsbStopCancel);
   207 	SendReceive(EUsbStopCancel);
       
   208 	OstTraceFunctionExit0( RUSB_STOPCANCEL_EXIT );
   208 	}
   209 	}
   209 
   210 
   210 EXPORT_C TInt RUsb::GetServiceState(TUsbServiceState& aState)
   211 EXPORT_C TInt RUsb::GetServiceState(TUsbServiceState& aState)
   211 	{
   212 	{
   212 	LOG_LINE
   213 	OstTraceFunctionEntry0( RUSB_GETSERVICESTATE_ENTRY );
   213 	LOG_FUNC
       
   214 
       
   215 	TPckg<TUint32> pkg(aState);
   214 	TPckg<TUint32> pkg(aState);
   216 	TInt ret=SendReceive(EUsbGetCurrentState, TIpcArgs(&pkg));
   215 	TInt ret=SendReceive(EUsbGetCurrentState, TIpcArgs(&pkg));
   217 	aState=(TUsbServiceState)pkg();
   216 	aState=(TUsbServiceState)pkg();
       
   217 	OstTraceFunctionExit0( RUSB_GETSERVICESTATE_EXIT );
   218 	return ret;
   218 	return ret;
   219 	}
   219 	}
   220 
   220 
   221 EXPORT_C TInt RUsb::GetCurrentState(TUsbServiceState& aState)
   221 EXPORT_C TInt RUsb::GetCurrentState(TUsbServiceState& aState)
   222 	{
   222 	{
   223 	LOG_LINE
   223 	OstTraceFunctionEntry0( RUSB_GETCURRENTSTATE_ENTRY );
   224 	LOG_FUNC
       
   225 
       
   226 	return GetServiceState(aState);
   224 	return GetServiceState(aState);
   227 	}
   225 	}
   228 
   226 
   229 EXPORT_C void RUsb::ServiceStateNotification(TUsbServiceState& aState,
   227 EXPORT_C void RUsb::ServiceStateNotification(TUsbServiceState& aState,
   230 	TRequestStatus& aStatus)
   228 	TRequestStatus& aStatus)
   231 	{
   229 	{
   232 	LOG_LINE
   230 	OstTraceFunctionEntry0( RUSB_SERVICESTATENOTIFICATION_ENTRY );
   233 	LOG_FUNC
       
   234 
   231 
   235 	iServiceStatePkg.Set((TUint8*)&aState, sizeof(TUint32), sizeof(TUint32));
   232 	iServiceStatePkg.Set((TUint8*)&aState, sizeof(TUint32), sizeof(TUint32));
   236 
   233 
   237 	SendReceive(EUsbRegisterServiceObserver, TIpcArgs(&iServiceStatePkg), aStatus);
   234 	SendReceive(EUsbRegisterServiceObserver, TIpcArgs(&iServiceStatePkg), aStatus);
       
   235 	OstTraceFunctionExit0( RUSB_SERVICESTATENOTIFICATION_EXIT );
   238 	}
   236 	}
   239 
   237 
   240 EXPORT_C void RUsb::ServiceStateNotificationCancel()
   238 EXPORT_C void RUsb::ServiceStateNotificationCancel()
   241 	{
   239 	{
   242 	LOG_LINE
   240 	OstTraceFunctionEntry0( RUSB_SERVICESTATENOTIFICATIONCANCEL_ENTRY );
   243 	LOG_FUNC
       
   244 
       
   245 	SendReceive(EUsbCancelServiceObserver);
   241 	SendReceive(EUsbCancelServiceObserver);
       
   242 	OstTraceFunctionExit0( RUSB_SERVICESTATENOTIFICATIONCANCEL_EXIT );
   246 	}
   243 	}
   247 
   244 
   248 EXPORT_C TInt RUsb::GetDeviceState(TUsbDeviceState& aState)
   245 EXPORT_C TInt RUsb::GetDeviceState(TUsbDeviceState& aState)
   249 	{
   246 	{
   250 	LOG_LINE
   247 	OstTraceFunctionEntry0( RUSB_GETDEVICESTATE_ENTRY );
   251 	LOG_FUNC
       
   252 
       
   253 	TPckg<TUint32> pkg(aState);
   248 	TPckg<TUint32> pkg(aState);
   254 	TInt ret=SendReceive(EUsbGetCurrentDeviceState, TIpcArgs(&pkg));
   249 	TInt ret=SendReceive(EUsbGetCurrentDeviceState, TIpcArgs(&pkg));
   255 	aState=(TUsbDeviceState)pkg();
   250 	aState=(TUsbDeviceState)pkg();
       
   251 	OstTraceFunctionExit0( RUSB_GETDEVICESTATE_EXIT );
   256 	return ret;
   252 	return ret;
   257 	}
   253 	}
   258 
   254 
   259 EXPORT_C void RUsb::DeviceStateNotification(TUint aEventMask, TUsbDeviceState& aState,
   255 EXPORT_C void RUsb::DeviceStateNotification(TUint aEventMask, TUsbDeviceState& aState,
   260 											TRequestStatus& aStatus)
   256 											TRequestStatus& aStatus)
   261 	{
   257 	{
   262 	LOG_LINE
   258 	OstTraceFunctionEntry0( RUSB_DEVICESTATENOTIFICATION_ENTRY );
   263 	LOG_FUNC
       
   264 
       
   265 	iDeviceStatePkg.Set((TUint8*)&aState, sizeof(TUint32), sizeof(TUint32));
   259 	iDeviceStatePkg.Set((TUint8*)&aState, sizeof(TUint32), sizeof(TUint32));
   266 
   260 
   267 	SendReceive(EUsbRegisterObserver, TIpcArgs(aEventMask, &iDeviceStatePkg), aStatus);
   261 	SendReceive(EUsbRegisterObserver, TIpcArgs(aEventMask, &iDeviceStatePkg), aStatus);
       
   262 	OstTraceFunctionExit0( RUSB_DEVICESTATENOTIFICATION_EXIT );
   268 	}
   263 	}
   269 
   264 
   270 EXPORT_C void RUsb::DeviceStateNotificationCancel()
   265 EXPORT_C void RUsb::DeviceStateNotificationCancel()
   271 	{
   266 	{
   272 	LOG_LINE
   267 	OstTraceFunctionEntry0( RUSB_DEVICESTATENOTIFICATIONCANCEL_ENTRY );
   273 	LOG_FUNC
       
   274 
       
   275 	SendReceive(EUsbCancelObserver);
   268 	SendReceive(EUsbCancelObserver);
       
   269 	OstTraceFunctionExit0( RUSB_DEVICESTATENOTIFICATIONCANCEL_EXIT );
   276 	}
   270 	}
   277 
   271 
   278 EXPORT_C void RUsb::StateNotification(TUint aEventMask, TUsbDeviceState& aState, TRequestStatus& aStatus)
   272 EXPORT_C void RUsb::StateNotification(TUint aEventMask, TUsbDeviceState& aState, TRequestStatus& aStatus)
   279 	{
   273 	{
   280 	LOG_LINE
   274 	OstTraceFunctionEntry0( RUSB_STATENOTIFICATION_ENTRY );
   281 	LOG_FUNC
       
   282 
       
   283 	DeviceStateNotification(aEventMask, aState, aStatus);
   275 	DeviceStateNotification(aEventMask, aState, aStatus);
       
   276 	OstTraceFunctionExit0( RUSB_STATENOTIFICATION_EXIT );
   284 	}
   277 	}
   285 
   278 
   286 EXPORT_C void RUsb::StateNotificationCancel()
   279 EXPORT_C void RUsb::StateNotificationCancel()
   287 	{
   280 	{
   288 	LOG_LINE
   281 	OstTraceFunctionEntry0( RUSB_STATENOTIFICATIONCANCEL_ENTRY );
   289 	LOG_FUNC
       
   290 
       
   291 	DeviceStateNotificationCancel();
   282 	DeviceStateNotificationCancel();
       
   283 	OstTraceFunctionExit0( RUSB_STATENOTIFICATIONCANCEL_EXIT );
   292 	}
   284 	}
   293 	
   285 	
   294 EXPORT_C void RUsb::TryStart(TInt aPersonalityId, TRequestStatus& aStatus)
   286 EXPORT_C void RUsb::TryStart(TInt aPersonalityId, TRequestStatus& aStatus)
   295 	{
   287 	{
   296 	LOG_LINE
   288 	OstTraceFunctionEntry0( RUSB_TRYSTART_ENTRY );
   297 	LOG_FUNC
       
   298 
   289 
   299 	TIpcArgs ipcArgs(aPersonalityId);
   290 	TIpcArgs ipcArgs(aPersonalityId);
   300 	SendReceive(EUsbTryStart, ipcArgs, aStatus);
   291 	SendReceive(EUsbTryStart, ipcArgs, aStatus);
       
   292 	OstTraceFunctionExit0( RUSB_TRYSTART_EXIT );
   301 	}
   293 	}
   302 
   294 
   303 EXPORT_C void RUsb::TryStop(TRequestStatus& aStatus)
   295 EXPORT_C void RUsb::TryStop(TRequestStatus& aStatus)
   304 	{
   296 	{
   305 	LOG_LINE
   297 	OstTraceFunctionEntry0( RUSB_TRYSTOP_ENTRY );
   306 	LOG_FUNC
       
   307 
       
   308 	SendReceive(EUsbTryStop, aStatus);
   298 	SendReceive(EUsbTryStop, aStatus);
       
   299 	OstTraceFunctionExit0( RUSB_TRYSTOP_EXIT );
   309 	}
   300 	}
   310 	
   301 	
   311 EXPORT_C TInt RUsb::CancelInterest(TUsbReqType aMessageId)
   302 EXPORT_C TInt RUsb::CancelInterest(TUsbReqType aMessageId)
   312 	{
   303 	{
   313 	LOG_LINE
   304 	OstTraceFunctionEntry0( RUSB_CANCELINTEREST_ENTRY );
   314 	LOG_FUNC
       
   315 
   305 
   316 	TInt messageId;
   306 	TInt messageId;
   317 	switch (aMessageId)
   307 	switch (aMessageId)
   318 		{
   308 		{
   319 	case EStart:
   309 	case EStart:
   336 	return SendReceive(EUsbCancelInterest, ipcArgs);
   326 	return SendReceive(EUsbCancelInterest, ipcArgs);
   337 	}
   327 	}
   338 
   328 
   339 EXPORT_C TInt RUsb::GetDescription(TInt aPersonalityId, HBufC*& aLocalizedPersonalityDescriptor)
   329 EXPORT_C TInt RUsb::GetDescription(TInt aPersonalityId, HBufC*& aLocalizedPersonalityDescriptor)
   340 	{
   330 	{
   341 	LOG_LINE
   331 	OstTraceFunctionEntry0( RUSB_GETDESCRIPTION_ENTRY );
   342 	LOG_FUNC
       
   343 
       
   344 	TInt ret = KErrNone;
   332 	TInt ret = KErrNone;
   345 	// caller is responsible for freeing up memory allocatd for aLocalizedPersonalityDescriptor
   333 	// caller is responsible for freeing up memory allocatd for aLocalizedPersonalityDescriptor
   346 	TRAP(ret, aLocalizedPersonalityDescriptor = HBufC::NewL(KUsbStringDescStringMaxSize));
   334 	TRAP(ret, aLocalizedPersonalityDescriptor = HBufC::NewL(KUsbStringDescStringMaxSize));
   347 	if (ret == KErrNone)
   335 	if (ret == KErrNone)
   348 		{
   336 		{
   355 		{
   343 		{
   356 		// just in case caller tries to free the memory before checking the return code
   344 		// just in case caller tries to free the memory before checking the return code
   357 		aLocalizedPersonalityDescriptor = NULL;
   345 		aLocalizedPersonalityDescriptor = NULL;
   358 		}
   346 		}
   359 
   347 
       
   348 	OstTraceFunctionExit0( RUSB_GETDESCRIPTION_EXIT );
   360 	return ret;	
   349 	return ret;	
   361 	}
   350 	}
   362 	
   351 	
   363 EXPORT_C TInt RUsb::GetCurrentPersonalityId(TInt& aPersonalityId)
   352 EXPORT_C TInt RUsb::GetCurrentPersonalityId(TInt& aPersonalityId)
   364 	{
   353 	{
   365 	LOG_LINE
   354 	OstTraceFunctionEntry0( RUSB_GETCURRENTPERSONALITYID_ENTRY );
   366 	LOG_FUNC
       
   367 
   355 
   368 	TPckg<TInt> pkg0(aPersonalityId);
   356 	TPckg<TInt> pkg0(aPersonalityId);
   369 	TInt ret = SendReceive(EUsbGetCurrentPersonalityId, TIpcArgs(&pkg0));
   357 	TInt ret = SendReceive(EUsbGetCurrentPersonalityId, TIpcArgs(&pkg0));
   370 	aPersonalityId = static_cast<TInt>(pkg0());
   358 	aPersonalityId = static_cast<TInt>(pkg0());
       
   359 	OstTraceFunctionExit0( RUSB_GETCURRENTPERSONALITYID_EXIT );
   371 	return ret;	
   360 	return ret;	
   372 	}
   361 	}
   373 
   362 
   374 EXPORT_C TInt RUsb::GetSupportedClasses(TInt aPersonalityId, RArray<TUid>& aClassUids)
   363 EXPORT_C TInt RUsb::GetSupportedClasses(TInt aPersonalityId, RArray<TUid>& aClassUids)
   375 	{
   364 	{
   376 	LOG_LINE
   365 	OstTraceFunctionEntry0( RUSB_GETSUPPORTEDCLASSES_ENTRY );
   377 	LOG_FUNC
       
   378 
       
   379 	TInt ret = KErrNone;
   366 	TInt ret = KErrNone;
   380 	HBufC8* buf = NULL;
   367 	HBufC8* buf = NULL;
   381 	// +1 for the actual count of personality ids
   368 	// +1 for the actual count of personality ids
   382 	TRAP(ret, buf = HBufC8::NewL((KUsbMaxSupportedClasses + 1)*sizeof (TInt32)));
   369 	TRAP(ret, buf = HBufC8::NewL((KUsbMaxSupportedClasses + 1)*sizeof (TInt32)));
   383 	if (ret != KErrNone)
   370 	if (ret != KErrNone)
   384 		{
   371 		{
       
   372 		OstTraceFunctionExit0( RUSB_GETSUPPORTEDCLASSES_EXIT );
   385 		return ret;
   373 		return ret;
   386 		}
   374 		}
   387 
   375 
   388 	TPtr8 ptr8 = buf->Des();
   376 	TPtr8 ptr8 = buf->Des();
   389 	ret = SendReceive(EUsbGetSupportedClasses, TIpcArgs(aPersonalityId, &ptr8));
   377 	ret = SendReceive(EUsbGetSupportedClasses, TIpcArgs(aPersonalityId, &ptr8));
   392 		{
   380 		{
   393 		const TInt32* recvedIds = reinterpret_cast<const TInt32*>(buf->Ptr());
   381 		const TInt32* recvedIds = reinterpret_cast<const TInt32*>(buf->Ptr());
   394 		if (!recvedIds)
   382 		if (!recvedIds)
   395 			{
   383 			{
   396 			delete buf;
   384 			delete buf;
       
   385 			OstTraceFunctionExit0( RUSB_GETSUPPORTEDCLASSES_EXIT_DUP1 );
   397 			return KErrCorrupt;
   386 			return KErrCorrupt;
   398 			}
   387 			}
   399 			
   388 			
   400 		TInt arraySize = *recvedIds++;
   389 		TInt arraySize = *recvedIds++;
   401 		// Copy received supported class ids to aClassUids
   390 		// Copy received supported class ids to aClassUids
   430 				}
   419 				}
   431 			}
   420 			}
   432 		}
   421 		}
   433 		
   422 		
   434 	delete buf;
   423 	delete buf;
       
   424 	OstTraceFunctionExit0( RUSB_GETSUPPORTEDCLASSES_EXIT_DUP2 );
   435 	return ret;
   425 	return ret;
   436 	}
   426 	}
   437 	
   427 	
   438 EXPORT_C TInt RUsb::ClassSupported(TInt aPersonalityId, TUid aClassUid, TBool& aSupported)
   428 EXPORT_C TInt RUsb::ClassSupported(TInt aPersonalityId, TUid aClassUid, TBool& aSupported)
   439 	{
   429 	{
   440 	LOG_LINE
   430 	OstTraceFunctionEntry0( RUSB_CLASSSUPPORTED_ENTRY );
   441 	LOG_FUNC
       
   442 
   431 
   443 	TPckg<TInt32>  	pkg2(aSupported);
   432 	TPckg<TInt32>  	pkg2(aSupported);
   444 	TIpcArgs ipcArgs(aPersonalityId, aClassUid.iUid, &pkg2);
   433 	TIpcArgs ipcArgs(aPersonalityId, aClassUid.iUid, &pkg2);
   445 	
   434 	
   446 	TInt ret = SendReceive(EUsbClassSupported, ipcArgs);
   435 	TInt ret = SendReceive(EUsbClassSupported, ipcArgs);
   448 	if (ret == KErrNone)
   437 	if (ret == KErrNone)
   449 		{
   438 		{
   450 		aSupported = static_cast<TBool>(pkg2());		
   439 		aSupported = static_cast<TBool>(pkg2());		
   451 		}
   440 		}
   452 		
   441 		
       
   442 	OstTraceFunctionExit0( RUSB_CLASSSUPPORTED_EXIT );
   453 	return ret;
   443 	return ret;
   454 	}
   444 	}
   455 	
   445 	
   456 EXPORT_C TInt RUsb::GetPersonalityIds(RArray<TInt>& aPersonalityIds)
   446 EXPORT_C TInt RUsb::GetPersonalityIds(RArray<TInt>& aPersonalityIds)
   457 	{
   447 	{
   458 	LOG_LINE
   448 	OstTraceFunctionEntry0( RUSB_GETPERSONALITYIDS_ENTRY );
   459 	LOG_FUNC
       
   460 
       
   461 	TInt ret = KErrNone;
   449 	TInt ret = KErrNone;
   462 	HBufC8* buf = NULL;
   450 	HBufC8* buf = NULL;
   463 	// +1 for the actual count of personality ids
   451 	// +1 for the actual count of personality ids
   464 	TRAP(ret, buf = HBufC8::NewL((KUsbMaxSupportedPersonalities + 1)*sizeof (TInt)));
   452 	TRAP(ret, buf = HBufC8::NewL((KUsbMaxSupportedPersonalities + 1)*sizeof (TInt)));
   465 	if (ret != KErrNone)
   453 	if (ret != KErrNone)
   466 		{
   454 		{
       
   455 		OstTraceFunctionExit0( RUSB_GETPERSONALITYIDS_EXIT );
   467 		return ret;
   456 		return ret;
   468 		}
   457 		}
   469 
   458 
   470 	TPtr8 ptr8 = buf->Des();
   459 	TPtr8 ptr8 = buf->Des();
   471 	ret = SendReceive(EUsbGetPersonalityIds, TIpcArgs(&ptr8));
   460 	ret = SendReceive(EUsbGetPersonalityIds, TIpcArgs(&ptr8));
   474 		{
   463 		{
   475 		const TInt* recvedIds = reinterpret_cast<const TInt*>(buf->Ptr());
   464 		const TInt* recvedIds = reinterpret_cast<const TInt*>(buf->Ptr());
   476 		if (!recvedIds)
   465 		if (!recvedIds)
   477 			{
   466 			{
   478 			delete buf;
   467 			delete buf;
       
   468 			OstTraceFunctionExit0( RUSB_GETPERSONALITYIDS_EXIT_DUP1 );
   479 			return KErrCorrupt;
   469 			return KErrCorrupt;
   480 			}
   470 			}
   481 			
   471 			
   482 		TInt arraySize = *recvedIds++;
   472 		TInt arraySize = *recvedIds++;
   483 		// Copy received personality ids to aPersonalityIds
   473 		// Copy received personality ids to aPersonalityIds
   513 				}
   503 				}
   514 			}
   504 			}
   515 		}
   505 		}
   516 		
   506 		
   517 	delete buf;
   507 	delete buf;
       
   508 	OstTraceFunctionExit0( RUSB_GETPERSONALITYIDS_EXIT_DUP2 );
   518 	return ret;
   509 	return ret;
   519 	}
   510 	}
   520 	
   511 	
   521 EXPORT_C TInt RUsb::__DbgMarkHeap()
   512 EXPORT_C TInt RUsb::__DbgMarkHeap()
   522 	{
   513 	{
   565     return KErrNone;
   556     return KErrNone;
   566 #endif
   557 #endif
   567 	}
   558 	}
   568 
   559 
   569 EXPORT_C void panic()
   560 EXPORT_C void panic()
   570 	{
   561     { 
   571 	_USB_PANIC(KUsbCliPncCat, EUsbPanicRemovedExport);
   562     OstTrace1( TRACE_FATAL, RUSB_PANIC, "::panic;Panic reason=%d", EUsbPanicRemovedExport );
       
   563     User::Panic(KUsbCliPncCat, EUsbPanicRemovedExport);
   572 	}
   564 	}
   573 
   565 
   574 EXPORT_C TInt RUsb::SetCtlSessionMode(TBool aValue)
   566 EXPORT_C TInt RUsb::SetCtlSessionMode(TBool aValue)
   575 	{
   567 	{
   576 	LOG_LINE
   568 	OstTraceFunctionEntry0( RUSB_SETCTLSESSIONMODE_ENTRY );
   577 	LOG_FUNC
       
   578 
   569 
   579 	TPckg<TBool> pkg(aValue);
   570 	TPckg<TBool> pkg(aValue);
   580 	return SendReceive(EUsbSetCtlSessionMode, TIpcArgs(&pkg));
   571 	return SendReceive(EUsbSetCtlSessionMode, TIpcArgs(&pkg));
   581 	}
   572 	}
   582 
   573 
   583 EXPORT_C TInt RUsb::BusRequest()
   574 EXPORT_C TInt RUsb::BusRequest()
   584 	{
   575 	{
   585 	LOG_LINE
   576 	OstTraceFunctionEntry0( RUSB_BUSREQUEST_ENTRY );
   586 	LOG_FUNC
       
   587 
   577 
   588 	return SendReceive(EUsbBusRequest);
   578 	return SendReceive(EUsbBusRequest);
   589 	}
   579 	}
   590 
   580 
   591 EXPORT_C TInt RUsb::BusRespondSrp()
   581 EXPORT_C TInt RUsb::BusRespondSrp()
   592 	{
   582 	{
   593 	LOG_LINE
   583 	OstTraceFunctionEntry0( RUSB_BUSRESPONDSRP_ENTRY );
   594 	LOG_FUNC
       
   595 
   584 
   596 	return SendReceive(EUsbBusRespondSrp);
   585 	return SendReceive(EUsbBusRespondSrp);
   597 	}
   586 	}
   598 
   587 
   599 EXPORT_C TInt RUsb::BusClearError()
   588 EXPORT_C TInt RUsb::BusClearError()
   600 	{
   589 	{
   601 	LOG_LINE
   590 	OstTraceFunctionEntry0( RUSB_BUSCLEARERROR_ENTRY );
   602 	LOG_FUNC
       
   603 
       
   604 	return SendReceive(EUsbBusClearError);
   591 	return SendReceive(EUsbBusClearError);
   605 	}
   592 	}
   606 
   593 
   607 
   594 
   608 EXPORT_C TInt RUsb::BusDrop()
   595 EXPORT_C TInt RUsb::BusDrop()
   609 	{
   596 	{
   610 	LOG_LINE
   597 	OstTraceFunctionEntry0( RUSB_BUSDROP_ENTRY );
   611 	LOG_FUNC
       
   612 
       
   613 	return SendReceive(EUsbBusDrop);
   598 	return SendReceive(EUsbBusDrop);
   614 	}
   599 	}
   615 
   600 
   616 EXPORT_C void RUsb::MessageNotification(TRequestStatus& aStatus, TInt& aMessage)
   601 EXPORT_C void RUsb::MessageNotification(TRequestStatus& aStatus, TInt& aMessage)
   617 	{
   602 	{
   618 	LOG_LINE
   603 	OstTraceFunctionEntry0( RUSB_MESSAGENOTIFICATION_ENTRY );
   619 	LOG_FUNC
       
   620 
       
   621 	iMessagePkg.Set((TUint8*)&aMessage, sizeof(TInt), sizeof(TInt));
   604 	iMessagePkg.Set((TUint8*)&aMessage, sizeof(TInt), sizeof(TInt));
   622 
   605 
   623 	SendReceive(EUsbRegisterMessageObserver, TIpcArgs(&iMessagePkg), aStatus);
   606 	SendReceive(EUsbRegisterMessageObserver, TIpcArgs(&iMessagePkg), aStatus);
       
   607 	OstTraceFunctionExit0( RUSB_MESSAGENOTIFICATION_EXIT );
   624 	}
   608 	}
   625 
   609 
   626 EXPORT_C void RUsb::MessageNotificationCancel()
   610 EXPORT_C void RUsb::MessageNotificationCancel()
   627 	{
   611 	{
   628 	LOG_LINE
   612 	OstTraceFunctionEntry0( RUSB_MESSAGENOTIFICATIONCANCEL_ENTRY );
   629 	LOG_FUNC
       
   630 
       
   631 	SendReceive(EUsbCancelMessageObserver);
   613 	SendReceive(EUsbCancelMessageObserver);
       
   614 	OstTraceFunctionExit0( RUSB_MESSAGENOTIFICATIONCANCEL_EXIT );
   632 	}
   615 	}
   633 
   616 
   634 EXPORT_C void RUsb::HostEventNotification(TRequestStatus& aStatus,
   617 EXPORT_C void RUsb::HostEventNotification(TRequestStatus& aStatus,
   635 										  TDeviceEventInformation& aDeviceInformation)
   618 										  TDeviceEventInformation& aDeviceInformation)
   636 	{
   619 	{
   637 	LOG_LINE
   620 	OstTraceFunctionEntry0( RUSB_HOSTEVENTNOTIFICATION_ENTRY );
   638 	LOG_FUNC
       
   639 
   621 
   640 	iHostPkg.Set((TUint8*)&aDeviceInformation, sizeof(TDeviceEventInformation), sizeof(TDeviceEventInformation));
   622 	iHostPkg.Set((TUint8*)&aDeviceInformation, sizeof(TDeviceEventInformation), sizeof(TDeviceEventInformation));
   641 
   623 
   642 	SendReceive(EUsbRegisterHostObserver, TIpcArgs(&iHostPkg), aStatus);
   624 	SendReceive(EUsbRegisterHostObserver, TIpcArgs(&iHostPkg), aStatus);
       
   625 	OstTraceFunctionExit0( RUSB_HOSTEVENTNOTIFICATION_EXIT );
   643 	}
   626 	}
   644 	
   627 	
   645 EXPORT_C void RUsb::HostEventNotificationCancel()
   628 EXPORT_C void RUsb::HostEventNotificationCancel()
   646 	{
   629 	{
   647 	LOG_LINE
   630 	OstTraceFunctionEntry0( RUSB_HOSTEVENTNOTIFICATIONCANCEL_ENTRY );
   648 	LOG_FUNC
       
   649 
       
   650 	SendReceive(EUsbCancelHostObserver);
   631 	SendReceive(EUsbCancelHostObserver);
       
   632 	OstTraceFunctionExit0( RUSB_HOSTEVENTNOTIFICATIONCANCEL_EXIT );
   651 	}
   633 	}
   652 
   634 
   653 EXPORT_C TInt RUsb::EnableFunctionDriverLoading()
   635 EXPORT_C TInt RUsb::EnableFunctionDriverLoading()
   654 	{
   636 	{
   655 	LOG_LINE
   637 	OstTraceFunctionEntry0( RUSB_ENABLEFUNCTIONDRIVERLOADING_ENTRY );
   656 	LOG_FUNC
       
   657 
   638 
   658 	return SendReceive(EUsbEnableFunctionDriverLoading);
   639 	return SendReceive(EUsbEnableFunctionDriverLoading);
   659 	}
   640 	}
   660 
   641 
   661 EXPORT_C void RUsb::DisableFunctionDriverLoading()
   642 EXPORT_C void RUsb::DisableFunctionDriverLoading()
   662 	{
   643 	{
   663 	LOG_LINE
   644 	OstTraceFunctionEntry0( RUSB_DISABLEFUNCTIONDRIVERLOADING_ENTRY );
   664 	LOG_FUNC
       
   665 
       
   666 	SendReceive(EUsbDisableFunctionDriverLoading);
   645 	SendReceive(EUsbDisableFunctionDriverLoading);
       
   646 	OstTraceFunctionExit0( RUSB_DISABLEFUNCTIONDRIVERLOADING_EXIT );
   667 	}
   647 	}
   668 
   648 
   669 EXPORT_C TInt RUsb::GetSupportedLanguages(TUint aDeviceId, RArray<TUint>& aLangIds)
   649 EXPORT_C TInt RUsb::GetSupportedLanguages(TUint aDeviceId, RArray<TUint>& aLangIds)
   670 	{
   650 	{
   671 	LOG_LINE
   651 	OstTraceFunctionEntry0( RUSB_GETSUPPORTEDLANGUAGES_ENTRY );
   672 	LOG_FUNC
       
   673 
   652 
   674 	aLangIds.Reset();
   653 	aLangIds.Reset();
   675 
   654 
   676 	TInt ret = KErrNone;
   655 	TInt ret = KErrNone;
   677 	HBufC8* buf = NULL;
   656 	HBufC8* buf = NULL;
   678 	// +1 for the actual count of language ids
   657 	// +1 for the actual count of language ids
   679 	TRAP(ret, buf = HBufC8::NewL((KUsbMaxSupportedLanguageIds + 1)*sizeof (TUint)));
   658 	TRAP(ret, buf = HBufC8::NewL((KUsbMaxSupportedLanguageIds + 1)*sizeof (TUint)));
   680 	if (ret != KErrNone)
   659 	if (ret != KErrNone)
   681 		{
   660 		{
       
   661 		OstTraceFunctionExit0( RUSB_GETSUPPORTEDLANGUAGES_EXIT );
   682 		return ret;
   662 		return ret;
   683 		}
   663 		}
   684 
   664 
   685 	TPtr8 ptr8 = buf->Des();
   665 	TPtr8 ptr8 = buf->Des();
   686 	ret = SendReceive(EUsbGetSupportedLanguages, TIpcArgs(aDeviceId, &ptr8));
   666 	ret = SendReceive(EUsbGetSupportedLanguages, TIpcArgs(aDeviceId, &ptr8));
   689 		{
   669 		{
   690 		const TUint* recvedIds = reinterpret_cast<const TUint*>(buf->Ptr());
   670 		const TUint* recvedIds = reinterpret_cast<const TUint*>(buf->Ptr());
   691 		if (!recvedIds)
   671 		if (!recvedIds)
   692 			{
   672 			{
   693 			delete buf;
   673 			delete buf;
       
   674 			OstTraceFunctionExit0( RUSB_GETSUPPORTEDLANGUAGES_EXIT_DUP1 );
   694 			return KErrCorrupt;
   675 			return KErrCorrupt;
   695 			}
   676 			}
   696 			
   677 			
   697 		TInt arraySize = *recvedIds++;
   678 		TInt arraySize = *recvedIds++;
   698 		// Copy received language ids to aLangIds
   679 		// Copy received language ids to aLangIds
   706 				}
   687 				}
   707 			}
   688 			}
   708 		}
   689 		}
   709 		
   690 		
   710 	delete buf;	
   691 	delete buf;	
       
   692 	OstTraceFunctionExit0( RUSB_GETSUPPORTEDLANGUAGES_EXIT_DUP2 );
   711 	return ret;
   693 	return ret;
   712 	}
   694 	}
   713 	
   695 	
   714 EXPORT_C TInt RUsb::GetManufacturerStringDescriptor(TUint aDeviceId, TUint aLangId, TName& aString)
   696 EXPORT_C TInt RUsb::GetManufacturerStringDescriptor(TUint aDeviceId, TUint aLangId, TName& aString)
   715 	{
   697 	{
   716 	LOG_LINE
   698 	OstTraceFunctionEntry0( RUSB_GETMANUFACTURERSTRINGDESCRIPTOR_ENTRY );
   717 	LOG_FUNC
       
   718 
   699 
   719 	return SendReceive(EUsbGetManufacturerStringDescriptor, TIpcArgs(aDeviceId, aLangId, &aString));
   700 	return SendReceive(EUsbGetManufacturerStringDescriptor, TIpcArgs(aDeviceId, aLangId, &aString));
   720 	}
   701 	}
   721 
   702 
   722 EXPORT_C TInt RUsb::GetProductStringDescriptor(TUint aDeviceId, TUint aLangId, TName& aString)
   703 EXPORT_C TInt RUsb::GetProductStringDescriptor(TUint aDeviceId, TUint aLangId, TName& aString)
   723 	{
   704 	{
   724 	LOG_LINE
   705 	OstTraceFunctionEntry0( RUSB_GETPRODUCTSTRINGDESCRIPTOR_ENTRY );
   725 	LOG_FUNC
       
   726 
       
   727 	return SendReceive(EUsbGetProductStringDescriptor, TIpcArgs(aDeviceId, aLangId, &aString));
   706 	return SendReceive(EUsbGetProductStringDescriptor, TIpcArgs(aDeviceId, aLangId, &aString));
   728 	}
   707 	}
   729 
   708 
   730 EXPORT_C TInt RUsb::GetOtgDescriptor(TUint aDeviceId, TOtgDescriptor& aDescriptor)
   709 EXPORT_C TInt RUsb::GetOtgDescriptor(TUint aDeviceId, TOtgDescriptor& aDescriptor)
   731 	{
   710 	{
   732 	LOG_LINE
   711 	OstTraceFunctionEntry0( RUSB_GETOTGDESCRIPTOR_ENTRY );
   733 	LOG_FUNC
       
   734 		
       
   735 	TPckg<TOtgDescriptor> otgDescPkg(aDescriptor);
   712 	TPckg<TOtgDescriptor> otgDescPkg(aDescriptor);
   736 	
   713 	
   737 	TIpcArgs args;
   714 	TIpcArgs args;
   738 	args.Set(0, aDeviceId);
   715 	args.Set(0, aDeviceId);
   739 	args.Set(1, &otgDescPkg);
   716 	args.Set(1, &otgDescPkg);
   742 	}
   719 	}
   743 
   720 
   744 
   721 
   745 EXPORT_C TInt RUsb::RequestSession()
   722 EXPORT_C TInt RUsb::RequestSession()
   746 	{
   723 	{
   747 	LOG_LINE
   724 	OstTraceFunctionEntry0( RUSB_REQUESTSESSION_ENTRY );
   748 	LOG_FUNC
       
   749 
   725 
   750 	return SendReceive(EUsbRequestSession);
   726 	return SendReceive(EUsbRequestSession);
   751 	}
   727 	}
   752 
   728 
   753 EXPORT_C TInt RUsb::GetDetailedDescription(TInt /*aPersonalityId*/, HBufC*& /*aLocalizedPersonalityDescriptor*/)
   729 EXPORT_C TInt RUsb::GetDetailedDescription(TInt /*aPersonalityId*/, HBufC*& /*aLocalizedPersonalityDescriptor*/)
   754 	{
   730 	{
   755 	LOG_LINE
   731 	OstTraceFunctionEntry0( RUSB_GETDETAILEDDESCRIPTION_ENTRY );
   756 	LOG_FUNC
       
   757 	//This API has been deprecated
   732 	//This API has been deprecated
       
   733 	OstTraceFunctionExit0( RUSB_GETDETAILEDDESCRIPTION_EXIT );
   758 	return KErrNotSupported; 
   734 	return KErrNotSupported; 
   759 	}
   735 	}
   760 
   736 
   761 EXPORT_C TInt RUsb::GetPersonalityProperty(TInt aPersonalityId, TUint32& aProperty)
   737 EXPORT_C TInt RUsb::GetPersonalityProperty(TInt aPersonalityId, TUint32& aProperty)
   762 	{
   738 	{
   763 	LOG_LINE
   739 	OstTraceFunctionEntry0( RUSB_GETPERSONALITYPROPERTY_ENTRY );
   764 	LOG_FUNC
       
   765 
   740 
   766 	TPckg<TUint32> pkg(aProperty);
   741 	TPckg<TUint32> pkg(aProperty);
   767 	TInt ret = SendReceive(EUsbGetPersonalityProperty, TIpcArgs(aPersonalityId, &pkg));
   742 	TInt ret = SendReceive(EUsbGetPersonalityProperty, TIpcArgs(aPersonalityId, &pkg));
   768 	if (ret == KErrNone)
   743 	if (ret == KErrNone)
   769 		{
   744 		{
   770 		aProperty = static_cast<TUint32>(pkg());
   745 		aProperty = static_cast<TUint32>(pkg());
   771 		}
   746 		}
       
   747 	OstTraceFunctionExit0( RUSB_GETPERSONALITYPROPERTY_EXIT );
   772 	return ret;	
   748 	return ret;	
   773 	}
   749 	}
   774 
   750