usbengines/usbotgwatcher/src/cusbotgwatcher.cpp
changeset 3 47c263f7e521
parent 1 705ec7b86991
child 13 7068aba64af5
child 25 8c311f9acc5e
equal deleted inserted replaced
2:468cfcb53fd1 3:47c263f7e521
   261         {
   261         {
   262         HandleHostProblemL(EUsbWatcherErrorInConnection);
   262         HandleHostProblemL(EUsbWatcherErrorInConnection);
   263         return;
   263         return;
   264         }
   264         }
   265 
   265 
   266     TInt err = iUsbServiceControl->Start(iPersonalityId);
   266     TInt err = iUsbServiceControl->StartL(iPersonalityId);
   267     if (KErrNone != err)
   267     if (KErrNone != err)
   268         {
   268         {
   269             FTRACE( FPrint(_L( "[USBOTGWATCHER]\tCUsbOtgWatcher::StartSessionL Can not start usb services. reason = %d" ), err));
   269             FTRACE( FPrint(_L( "[USBOTGWATCHER]\tCUsbOtgWatcher::StartSessionL Can not start usb services. reason = %d" ), err));
   270         HandleHostProblemL(EUsbWatcherCanNotStartUsbServices);
   270         HandleHostProblemL(EUsbWatcherCanNotStartUsbServices);
   271         return;
   271         return;
   323         FLOG( _L( "[USBOTGWATCHER]\tCUsbOtgWatcher::IdPinOffL Before DisableFunctionDriverLoad " ) );
   323         FLOG( _L( "[USBOTGWATCHER]\tCUsbOtgWatcher::IdPinOffL Before DisableFunctionDriverLoad " ) );
   324     Usb().DisableFunctionDriverLoading();
   324     Usb().DisableFunctionDriverLoading();
   325 
   325 
   326         FLOG( _L( "[USBOTGWATCHER]\tCUsbOtgWatcher::IdPinOffL Before TryStop" ) );
   326         FLOG( _L( "[USBOTGWATCHER]\tCUsbOtgWatcher::IdPinOffL Before TryStop" ) );
   327 
   327 
   328     TInt err = iUsbServiceControl->Stop();
   328     TInt err = iUsbServiceControl->StopL();
   329 
   329 
   330     if (KErrNone != err)
   330     if (KErrNone != err)
   331         {
   331         {
   332             FLOG( _L( "[USBOTGWATCHER]\tCUsbOtgWatcher::IdPinOnL ErrorStoppingUsbServices" ) );
   332             FLOG( _L( "[USBOTGWATCHER]\tCUsbOtgWatcher::IdPinOnL ErrorStoppingUsbServices" ) );
   333         Panic(ECanNotStopUsbServices);
   333         Panic(ECanNotStopUsbServices);
   864 // 
   864 // 
   865 // ---------------------------------------------------------------------------
   865 // ---------------------------------------------------------------------------
   866 //
   866 //
   867 void CUsbOtgWatcher::UsbServiceControlReqCompletedL(TInt aError)
   867 void CUsbOtgWatcher::UsbServiceControlReqCompletedL(TInt aError)
   868     {
   868     {
   869         FLOG( _L( "[USBOTGWATCHER]\tCUsbOtgWatcher::UsbServiceControlReqCompleted" ) );
   869     FTRACE( FPrint(_L( "[USBOTGWATCHER]\tCUsbOtgWatcher::UsbServiceControlReqCompleted Error returned by UsbServiceControl = %d" ), aError));    
   870 
   870     
   871     if (KErrNone != aError)
   871     switch(aError)
   872         {
   872     {
   873             FTRACE( FPrint(_L( "[USBOTGWATCHER]\tCUsbOtgWatcher::UsbServiceControlReqCompleted Error returned by UsbServiceControl = %d" ), aError));
   873     case KErrInUse: 
       
   874     // usb services already started (this might happen if more than one idpin on event come)
       
   875         {
       
   876         return;
       
   877         }
       
   878         
       
   879     case KErrNone:
       
   880         {
       
   881         break; // do normal routine
       
   882         }
       
   883         
       
   884     default: // handle the issue
       
   885         {
   874         HandleHostProblemL(EUsbWatcherCanNotStartUsbServices);
   886         HandleHostProblemL(EUsbWatcherCanNotStartUsbServices);
   875         return;
   887         return;
   876         }
   888         }
       
   889     }
   877 
   890 
   878     TUsbServiceState serviceState;
   891     TUsbServiceState serviceState;
   879     TInt err = iUsb.GetServiceState(serviceState);
   892     TInt err = iUsb.GetServiceState(serviceState);
   880 
   893 
   881     if (KErrNone != err)
   894     if (KErrNone != err)
   985         User::Leave(KErrGeneral);
   998         User::Leave(KErrGeneral);
   986         }
   999         }
   987 
  1000 
   988         FLOG( _L( "[USBOTGWATCHER]\tCUsbOtgWatcher::SelfTestL Observers destructors." ) );
  1001         FLOG( _L( "[USBOTGWATCHER]\tCUsbOtgWatcher::SelfTestL Observers destructors." ) );
   989 
  1002 
   990     delete iIdPinObserver;
  1003     // idpinobserver is deleted later        
   991     iIdPinObserver = 0;
       
   992     
       
   993     // Vbus observer is deleted later
  1004     // Vbus observer is deleted later
   994     
  1005     
   995     delete iOtgStateObserver;
  1006     delete iOtgStateObserver;
   996     iOtgStateObserver = 0;
  1007     iOtgStateObserver = 0;
   997     delete iBusActivityObserver;
  1008     delete iBusActivityObserver;
  1042     delete usbnotifmanager; 
  1053     delete usbnotifmanager; 
  1043     
  1054     
  1044     // VBus observer is deleted here, due to it is used by usbnotifmanager.usbindicatornotifier
  1055     // VBus observer is deleted here, due to it is used by usbnotifmanager.usbindicatornotifier
  1045     delete iVBusObserver;
  1056     delete iVBusObserver;
  1046     iVBusObserver = 0;
  1057     iVBusObserver = 0;
       
  1058     
       
  1059     // id pin observer is deleted here due to it is used by usbnotifmanager.usbindicatornotifier
       
  1060     delete iIdPinObserver;
       
  1061     iIdPinObserver = 0;
  1047         
  1062         
  1048         FLOG( _L( "[USBOTGWATCHER]\tCUsbOtgWatcher::SelfTestL Destructing states." ) );
  1063         FLOG( _L( "[USBOTGWATCHER]\tCUsbOtgWatcher::SelfTestL Destructing states." ) );
  1049         
  1064         
  1050     iStates.ResetAndDestroy();
  1065     iStates.ResetAndDestroy();
  1051 
  1066