usbengines/usbwatcher/src/cusbwatcher.cpp
changeset 75 809df41c314e
parent 38 218231f2b3b3
child 85 ad9d655827ef
equal deleted inserted replaced
57:62e6d990246c 75:809df41c314e
   253                     aStateOld);
   253                     aStateOld);
   254                 break;
   254                 break;
   255                 }
   255                 }
   256             LOG1( "Starting USB personality in device state: %d", aStateNew );
   256             LOG1( "Starting USB personality in device state: %d", aStateNew );
   257             iPersonalityHandler->StateChangeNotify( aStateOld, aStateNew );
   257             iPersonalityHandler->StateChangeNotify( aStateOld, aStateNew );
   258             // Check AskOnConnection setting every time
       
   259             if( ( iSupportedPersonalities.Count() > 1 ) &&
       
   260                     !IsAskOnConnectionSuppression() )
       
   261                 {
       
   262                 // read setting if there is more than one personality
       
   263                 iPersonalityRepository->Get(
       
   264                         KUsbWatcherChangeOnConnectionSetting,
       
   265                         iAskOnConnectionSetting );
       
   266                 }
       
   267 
   258 
   268             if( ( iState == EUsbIdle ) && !iPersonalityChangeOngoing )
   259             if( ( iState == EUsbIdle ) && !iPersonalityChangeOngoing )
   269                 {
   260                 {
   270                 Start();
   261                 Start();
   271                 }
   262                 }
   272             else if( ( iState != EUsbStarted ) && !iPersonalityChangeOngoing )
   263             else if( ( iState != EUsbStarted ) && !iPersonalityChangeOngoing )
   273                 {
   264                 {
   274                 Cancel();
   265                 Cancel();
   275                 Start();
   266                 Start();
   276                 }
   267                 }
   277 
       
   278             // Let's turn ask on connection off after start cause we will
       
   279             // issue it only when cable is connected
       
   280             iAskOnConnectionSetting = KUsbWatcherChangeOnConnectionOff;
       
   281 
   268 
   282             //start usbdevcon only in normal global state
   269             //start usbdevcon only in normal global state
   283             TInt globalState =
   270             TInt globalState =
   284                     CUsbGlobalSystemStateObserver::GlobalSystemState();
   271                     CUsbGlobalSystemStateObserver::GlobalSystemState();
   285             if( ( ESwStateNormalRfOn == globalState ) ||
   272             if( ( ESwStateNormalRfOn == globalState ) ||
   529 
   516 
   530     LOG1( "USB device state after unlock: %d", state );
   517     LOG1( "USB device state after unlock: %d", state );
   531     if( EUsbDeviceStateAttached == state || EUsbDeviceStatePowered == state)
   518     if( EUsbDeviceStateAttached == state || EUsbDeviceStatePowered == state)
   532         {
   519         {
   533         LOG( "Starting USB personality" );
   520         LOG( "Starting USB personality" );
   534         TInt err = iPersonalityRepository->Get(
   521         Start();
   535            KUsbWatcherChangeOnConnectionSetting, iAskOnConnectionSetting );
       
   536         if( KErrNone == err )
       
   537             {
       
   538             Start();
       
   539             iAskOnConnectionSetting = KUsbWatcherChangeOnConnectionOff;
       
   540             }
       
   541         else
       
   542             {
       
   543             LOG1( "Error: CRepository::Get = %d", err );
       
   544             }
       
   545         }
   522         }
   546     }
   523     }
   547 
   524 
   548 // ----------------------------------------------------------------------------
   525 // ----------------------------------------------------------------------------
   549 // This method is called when client wants to set new personality.
   526 // This method is called when client wants to set new personality.
   769                 RProperty::Set( KPSUidUsbWatcher,
   746                 RProperty::Set( KPSUidUsbWatcher,
   770                         KUsbWatcherSelectedPersonality, iPersonalityId );
   747                         KUsbWatcherSelectedPersonality, iPersonalityId );
   771                 iStarted = ETrue;
   748                 iStarted = ETrue;
   772                 // Restore personality to normal in charging mode
   749                 // Restore personality to normal in charging mode
   773                 iSetPreviousPersonalityOnDisconnect = ETrue;
   750                 iSetPreviousPersonalityOnDisconnect = ETrue;
   774                 iPersonalityHandler->StartPersonality( iPersonalityId,
   751                 iPersonalityHandler->StartPersonality( iPersonalityId, iStatus );
   775                     KUsbWatcherChangeOnConnectionOff, iStatus );
       
   776                 }
   752                 }
   777             else
   753             else
   778                 {
   754                 {
   779                 LOG1( "GetChargingPersonalityId = %d. Not started", ret );
   755                 LOG1( "GetChargingPersonalityId = %d. Not started", ret );
   780                 }
   756                 }
   789                 {
   765                 {
   790                 iGlobalStateObserver->Cancel();
   766                 iGlobalStateObserver->Cancel();
   791                 RProperty::Set( KPSUidUsbWatcher,
   767                 RProperty::Set( KPSUidUsbWatcher,
   792                             KUsbWatcherSelectedPersonality, iPersonalityId );
   768                             KUsbWatcherSelectedPersonality, iPersonalityId );
   793                 iStarted = ETrue;
   769                 iStarted = ETrue;
   794                 iPersonalityHandler->StartPersonality( iPersonalityId,
   770                 iPersonalityHandler->StartPersonality( iPersonalityId, iStatus );
   795                         iAskOnConnectionSetting, iStatus );
       
   796                 }
   771                 }
   797             else
   772             else
   798                 {
   773                 {
   799                 LOG( "Device LOCKED, USB personality NOT start" );
   774                 LOG( "Device LOCKED, USB personality NOT start" );
   800                 }
   775                 }
  1013     TInt ret = iPersonalityRepository->Get(
   988     TInt ret = iPersonalityRepository->Get(
  1014             KUsbWatcherChargingDefaultPersonality, aPersonalityId );
   989             KUsbWatcherChargingDefaultPersonality, aPersonalityId );
  1015     return ret;
   990     return ret;
  1016     }
   991     }
  1017 
   992 
  1018 // ----------------------------------------------------------------------------
   993 
  1019 // Check if there is an observer with ask on connection suppression
       
  1020 // ----------------------------------------------------------------------------
       
  1021 //
       
  1022 TBool CUsbWatcher::IsAskOnConnectionSuppression()
       
  1023     {
       
  1024     LOG_FUNC
       
  1025     
       
  1026     TBool ret( EFalse );
       
  1027     for( TInt i = 0; i < iObservers.Count(); i++ )
       
  1028         {
       
  1029         if( iObservers[i]->IsAskOnConnectionSuppressed() )
       
  1030             {
       
  1031             ret = ETrue;
       
  1032             break;
       
  1033             }
       
  1034         }
       
  1035     LOG1( "Return = %d", ret );
       
  1036     return ret;
       
  1037     }
       
  1038 
   994 
  1039 // ----------------------------------------------------------------------------
   995 // ----------------------------------------------------------------------------
  1040 // Check current A or B device state
   996 // Check current A or B device state
  1041 // ----------------------------------------------------------------------------
   997 // ----------------------------------------------------------------------------
  1042 //
   998 //