usbmgmt/usbmgr/usbman/chargingplugin/src/chargingstates.cpp
branchRCL_3
changeset 16 012cc2ee6408
parent 15 f92a4f87e424
equal deleted inserted replaced
15:f92a4f87e424 16:012cc2ee6408
     1 /*
     1 /*
     2 * Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
     2 * Copyright (c) 2009 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".
    18 
    18 
    19 /** @file
    19 /** @file
    20 @internalComponent
    20 @internalComponent
    21 */
    21 */
    22 
    22 
       
    23 #include "chargingstates.h"
    23 #include <usb/usblogger.h>
    24 #include <usb/usblogger.h>
    24 #include "chargingstates.h"
       
    25 #include "reenumerator.h"
    25 #include "reenumerator.h"
    26 #include "OstTraceDefinitions.h"
    26 
    27 #ifdef OST_TRACE_COMPILER_IN_USE
    27 #ifdef __FLOG_ACTIVE
    28 #include "chargingstatesTraces.h"
    28 _LIT8(KLogComponent, "USBCHARGEStates");
    29 #endif
    29 #endif
    30 
       
    31 
       
    32 
    30 
    33 // Charging plugin base state
    31 // Charging plugin base state
    34 
    32 
    35 // Empty virtual function implement to give a base of each state class. 
    33 // Empty virtual function implement to give a base of each state class. 
    36 // A concrete state class can overlap them according to actual demand.
    34 // A concrete state class can overlap them according to actual demand.
    37 void TUsbBatteryChargingPluginStateBase::UsbServiceStateChange(TInt aLastError,
    35 void TUsbBatteryChargingPluginStateBase::UsbServiceStateChange(TInt aLastError,
    38     TUsbServiceState aOldState, TUsbServiceState aNewState)
    36     TUsbServiceState aOldState, TUsbServiceState aNewState)
    39     {
    37     {
    40     OstTraceFunctionEntry0( REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_USBSERVICESTATECHANGE_ENTRY );
    38     LOG_FUNC
    41     
    39     
    42     (void)aLastError;
    40     (void)aLastError;
    43     (void)aOldState;
    41     (void)aOldState;
    44     (void)aNewState;
    42     (void)aNewState;
    45     
    43     
    46     // Not use
    44     // Not use
    47     OstTraceFunctionExit0( REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_USBSERVICESTATECHANGE_EXIT );
       
    48     }
    45     }
    49 
    46 
    50 void TUsbBatteryChargingPluginStateBase::UsbDeviceStateChange(TInt aLastError,
    47 void TUsbBatteryChargingPluginStateBase::UsbDeviceStateChange(TInt aLastError,
    51     TUsbDeviceState aOldState, TUsbDeviceState aNewState)
    48     TUsbDeviceState aOldState, TUsbDeviceState aNewState)
    52     {
    49     {
    53     OstTraceFunctionEntry0( REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_USBDEVICESTATECHANGE_ENTRY );
    50     LOG_FUNC
    54     
    51     
    55     (void)aLastError;
    52     (void)aLastError;
    56     (void)aOldState;
    53     (void)aOldState;
    57     (void)aNewState;
    54     (void)aNewState;
    58     OstTraceFunctionExit0( REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_USBDEVICESTATECHANGE_EXIT );
       
    59     }
    55     }
    60 
    56 
    61 void TUsbBatteryChargingPluginStateBase::HandleRepositoryValueChangedL(
    57 void TUsbBatteryChargingPluginStateBase::HandleRepositoryValueChangedL(
    62     const TUid& aRepository, TUint aId, TInt aVal)
    58     const TUid& aRepository, TUint aId, TInt aVal)
    63     {
    59     {
    64     OstTraceFunctionEntry0( REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_HANDLEREPOSITORYVALUECHANGEDL_ENTRY );
    60     LOG_FUNC
    65     
    61     
    66     OstTraceExt3( TRACE_NORMAL, REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_HANDLEREPOSITORYVALUECHANGEDL, 
    62     LOGTEXT4(_L8(">>TUsbBatteryChargingPluginStateBase::HandleRepositoryValueChangedL aRepository = 0x%08x, aId = %d, aVal = %d"), aRepository, aId, aVal);
    67             "TUsbBatteryChargingPluginStateBase::HandleRepositoryValueChangedL;aRepository = 0x%08x;aId=%d;aVal=%d", 
    63     LOGTEXT3(_L8("Plugin State = %d, Device State = %d"), iParent.iPluginState, iParent.iDeviceState);
    68             aRepository.iUid, aId, (TInt32)aVal );
       
    69     OstTraceExt2( TRACE_NORMAL, REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_HANDLEREPOSITORYVALUECHANGEDL_DUP1, 
       
    70             "TUsbBatteryChargingPluginStateBase::HandleRepositoryValueChangedL;Plugin State = %d, Device State = %d",
       
    71             iParent.iPluginState, iParent.iDeviceState );
       
    72     
    64     
    73     if ((aRepository == KUsbBatteryChargingCentralRepositoryUid) &&
    65     if ((aRepository == KUsbBatteryChargingCentralRepositoryUid) &&
    74             (aId == KUsbBatteryChargingKeyEnabledUserSetting))
    66             (aId == KUsbBatteryChargingKeyEnabledUserSetting))
    75         {
    67         {
    76         iParent.iUserSetting = (TUsbBatteryChargingUserSetting)aVal;
    68         iParent.iUserSetting = (TUsbBatteryChargingUserSetting)aVal;
    91                 }
    83                 }
    92             
    84             
    93             iParent.SetState(EPluginStateUserDisabled);
    85             iParent.SetState(EPluginStateUserDisabled);
    94             }
    86             }
    95         }
    87         }
    96     OstTraceFunctionExit0( REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_HANDLEREPOSITORYVALUECHANGEDL_EXIT );
       
    97     }
    88     }
    98     
    89     
    99 void TUsbBatteryChargingPluginStateBase::DeviceStateTimeout()
    90 void TUsbBatteryChargingPluginStateBase::DeviceStateTimeout()
   100     {
    91     {
   101     OstTraceFunctionEntry0( REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_DEVICESTATETIMEOUT_ENTRY );
    92     LOG_FUNC
   102     OstTraceExt3( TRACE_NORMAL, REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_DEVICESTATETIMEOUT, "TUsbBatteryChargingPluginStateBase::DeviceStateTimeout;Time: %u Plugin State = %d, Device State = %d", User::NTickCount(), (TInt32)iParent.iPluginState, (TInt32)iParent.iDeviceState );
    93     LOGTEXT4(_L8("Time: %d Plugin State = %d, Device State = %d"), User::NTickCount(), iParent.iPluginState, iParent.iDeviceState);
   103     
    94     
   104     iParent.iDeviceReEnumerator->Cancel(); // cancel re-enumeration AO
    95     iParent.iDeviceReEnumerator->Cancel(); // cancel re-enumeration AO
   105     
    96     
   106     if(iParent.iUserSetting) // User allow charging already and not in negotiating process...
    97     if(iParent.iUserSetting) // User allow charging already and not in negotiating process...
   107         {
    98         {
   108         // Should not happen !!! Otherwise, something wrong!!!
    99         // Should not happen !!! Otherwise, something wrong!!!
   109         iParent.SetState(EPluginStateIdle);
   100         iParent.SetState(EPluginStateIdle);
   110         }
   101         }
   111     OstTraceFunctionExit0( REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_DEVICESTATETIMEOUT_EXIT );
       
   112     }
   102     }
   113 
   103 
   114 // For host OTG enabled charging plug-in
   104 // For host OTG enabled charging plug-in
   115 #ifdef SYMBIAN_ENABLE_USB_OTG_HOST_PRIV
   105 #ifdef SYMBIAN_ENABLE_USB_OTG_HOST_PRIV
   116 void TUsbBatteryChargingPluginStateBase::MpsoIdPinStateChanged(TInt aValue)
   106 void TUsbBatteryChargingPluginStateBase::MpsoIdPinStateChanged(TInt aValue)
   117     {
   107     {
   118     OstTraceFunctionEntry0( REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_MPSOIDPINSTATECHANGED_ENTRY );
   108     LOG_FUNC
   119 
   109     
   120     OstTrace1( TRACE_NORMAL, REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_MPSOIDPINSTATECHANGED, "TUsbBatteryChargingPluginStateBase::MpsoIdPinStateChanged;IdPinState changed => %d", aValue );
   110     LOGTEXT2(_L8("IdPinState changed => %d"), aValue);
   121     
   111     
   122     // Disable charging here when IdPin is present
   112     // Disable charging here when IdPin is present
   123     // When IdPin disappears (i.e. the phone becomes B-Device), all necessary step are performed 
   113     // When IdPin disappears (i.e. the phone becomes B-Device), all necessary step are performed 
   124     // in UsbDeviceStateChange() method
   114     // in UsbDeviceStateChange() method
   125 
   115 
   135                 }
   125                 }
   136 
   126 
   137             TRAP_IGNORE(iParent.SetInitialConfigurationL());
   127             TRAP_IGNORE(iParent.SetInitialConfigurationL());
   138             iParent.SetState(EPluginStateBEndedCableNotPresent);
   128             iParent.SetState(EPluginStateBEndedCableNotPresent);
   139             
   129             
   140             OstTraceFunctionExit0( REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_MPSOIDPINSTATECHANGED_EXIT );
       
   141             return;
   130             return;
   142 
   131 
   143         case EUsbBatteryChargingIdPinBRole:
   132         case EUsbBatteryChargingIdPinBRole:
   144             iParent.SetState(EPluginStateIdle);
   133             iParent.SetState(EPluginStateIdle);
   145             break;
   134             break;
   150                 iParent.StopCharging();
   139                 iParent.StopCharging();
   151                 }     
   140                 }     
   152             iParent.SetState(EPluginStateIdle);
   141             iParent.SetState(EPluginStateIdle);
   153             break;
   142             break;
   154         }
   143         }
   155     OstTraceFunctionExit0( REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_MPSOIDPINSTATECHANGED_EXIT_DUP1 );
       
   156     }
   144     }
   157 
   145 
   158 void TUsbBatteryChargingPluginStateBase::MpsoOtgStateChangedL(TUsbOtgState aNewState)
   146 void TUsbBatteryChargingPluginStateBase::MpsoOtgStateChangedL(TUsbOtgState aNewState)
   159     {
   147     {
   160     OstTraceFunctionEntry0( REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_MPSOOTGSTATECHANGEDL_ENTRY );
   148     LOG_FUNC
   161     
   149     
   162     iParent.iOtgState = aNewState;
   150     iParent.iOtgState = aNewState;
   163     
   151     
   164     // Not use currently
   152     // Not use currently
   165     OstTraceFunctionExit0( REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_MPSOOTGSTATECHANGEDL_EXIT );
       
   166     }
   153     }
   167 #endif
   154 #endif
   168 
   155 
   169 void TUsbBatteryChargingPluginStateBase::MpsoVBusStateChanged(TInt aNewState)
   156 void TUsbBatteryChargingPluginStateBase::MpsoVBusStateChanged(TInt aNewState)
   170     {
   157     {
   171     OstTraceFunctionEntry0( REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_MPSOVBUSSTATECHANGED_ENTRY );
   158     LOG_FUNC
   172     
   159     
   173     if (aNewState == iParent.iVBusState)
   160     if (aNewState == iParent.iVBusState)
   174         {
   161         {
   175         OstTrace1( TRACE_NORMAL, REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_MPSOVBUSSTATECHANGED, "TUsbBatteryChargingPluginStateBase::MpsoVBusStateChanged;Receive VBus State Change notification without any state change: aNewState = %d", aNewState );
   162         LOGTEXT2(_L8("Receive VBus State Change notification without any state change: aNewState = %d"), aNewState);
   176         OstTraceFunctionExit0( REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_MPSOVBUSSTATECHANGED_EXIT );
       
   177         return;//should not happen??
   163         return;//should not happen??
   178         }
   164         }
   179 
   165 
   180     OstTraceExt2( TRACE_NORMAL, REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_MPSOVBUSSTATECHANGED_DUP1, "TUsbBatteryChargingPluginStateBase::MpsoVBusStateChanged;VBusState changed from %d to %d", iParent.iVBusState, aNewState );
   166     LOGTEXT3(_L8("VBusState changed from %d to %d"), iParent.iVBusState, aNewState);
   181     
   167     
   182     iParent.iVBusState = aNewState;
   168     iParent.iVBusState = aNewState;
   183     if (aNewState == 0) // VBus drop down - we have disconnected from host
   169     if (aNewState == 0) // VBus drop down - we have disconnected from host
   184         {
   170         {
   185         if (iParent.iPluginState == EPluginStateCharging)
   171         if (iParent.iPluginState == EPluginStateCharging)
   188             }
   174             }
   189         iParent.SetState(EPluginStateIdle);
   175         iParent.SetState(EPluginStateIdle);
   190         }
   176         }
   191     
   177     
   192     // The handling of VBus on will be down in DeviceStateChanged implicitly
   178     // The handling of VBus on will be down in DeviceStateChanged implicitly
   193     OstTraceFunctionExit0( REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_MPSOVBUSSTATECHANGED_EXIT_DUP1 );
       
   194     }
   179     }
   195 
   180 
   196 
   181 
   197 TUsbBatteryChargingPluginStateBase::TUsbBatteryChargingPluginStateBase (
   182 TUsbBatteryChargingPluginStateBase::TUsbBatteryChargingPluginStateBase (
   198         CUsbBatteryChargingPlugin& aParentStateMachine ): 
   183         CUsbBatteryChargingPlugin& aParentStateMachine ): 
   199         iParent(aParentStateMachine)
   184         iParent(aParentStateMachine)
   200     {
   185     {
   201     OstTraceFunctionEntry0( REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_TUSBBATTERYCHARGINGPLUGINSTATEBASE_CONS_ENTRY );
   186     LOG_FUNC
   202     OstTraceFunctionExit0( REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_TUSBBATTERYCHARGINGPLUGINSTATEBASE_CONS_EXIT );
       
   203     }
   187     }
   204 
   188 
   205         
   189         
   206 // Charging plugin idle state
   190 // Charging plugin idle state
   207 
   191 
   208 TUsbBatteryChargingPluginStateIdle::TUsbBatteryChargingPluginStateIdle (
   192 TUsbBatteryChargingPluginStateIdle::TUsbBatteryChargingPluginStateIdle (
   209         CUsbBatteryChargingPlugin& aParentStateMachine ) :
   193         CUsbBatteryChargingPlugin& aParentStateMachine ) :
   210     TUsbBatteryChargingPluginStateBase(aParentStateMachine)
   194     TUsbBatteryChargingPluginStateBase(aParentStateMachine)
   211     {
   195     {
   212     OstTraceFunctionEntry0( REF_TUSBBATTERYCHARGINGPLUGINSTATEIDLE_TUSBBATTERYCHARGINGPLUGINSTATEIDLE_CONS_ENTRY );
   196     LOG_FUNC
   213     OstTraceFunctionExit0( REF_TUSBBATTERYCHARGINGPLUGINSTATEIDLE_TUSBBATTERYCHARGINGPLUGINSTATEIDLE_CONS_EXIT );
       
   214     };
   197     };
   215 
   198 
   216 void TUsbBatteryChargingPluginStateIdle::UsbDeviceStateChange(
   199 void TUsbBatteryChargingPluginStateIdle::UsbDeviceStateChange(
   217         TInt aLastError, TUsbDeviceState aOldState, TUsbDeviceState aNewState)
   200         TInt aLastError, TUsbDeviceState aOldState, TUsbDeviceState aNewState)
   218     {
   201     {
   219     OstTraceFunctionEntry0( REF_TUSBBATTERYCHARGINGPLUGINSTATEIDLE_USBDEVICESTATECHANGE_ENTRY );
   202     LOG_FUNC
   220 
   203 
   221     OstTraceExt3( TRACE_NORMAL, REF_TUSBBATTERYCHARGINGPLUGINSTATEIDLE_USBDEVICESTATECHANGE, "TUsbBatteryChargingPluginStateIdle::UsbDeviceStateChange;aLastError=%d;aOldState=%d;aNewState=%d", aLastError, aOldState, aNewState );
   204     LOGTEXT4(_L8(">>TUsbBatteryChargingPluginStateIdle::UsbDeviceStateChange LastError = %d, aOldState = %d, aNewState = %d"), aLastError, aOldState, aNewState);
   222     (void)aLastError;
   205     (void)aLastError;
   223     (void)aOldState;
   206     (void)aOldState;
   224     iParent.iDeviceState = aNewState;
   207     iParent.iDeviceState = aNewState;
   225     iParent.LogStateText(aNewState);
   208     iParent.LogStateText(aNewState);
   226     
   209     
   240                 iParent.SetState(EPluginStateUserDisabled);
   223                 iParent.SetState(EPluginStateUserDisabled);
   241                 }
   224                 }
   242             }
   225             }
   243             break;
   226             break;
   244         }
   227         }
   245     OstTraceFunctionExit0( REF_TUSBBATTERYCHARGINGPLUGINSTATEIDLE_USBDEVICESTATECHANGE_EXIT );
       
   246     }
   228     }
   247     
   229     
   248     
   230     
   249 // Charging plugin current negotiating state
   231 // Charging plugin current negotiating state
   250 
   232 
   251 TUsbBatteryChargingPluginStateCurrentNegotiating::TUsbBatteryChargingPluginStateCurrentNegotiating (
   233 TUsbBatteryChargingPluginStateCurrentNegotiating::TUsbBatteryChargingPluginStateCurrentNegotiating (
   252         CUsbBatteryChargingPlugin& aParentStateMachine ) :
   234         CUsbBatteryChargingPlugin& aParentStateMachine ) :
   253     TUsbBatteryChargingPluginStateBase(aParentStateMachine)
   235     TUsbBatteryChargingPluginStateBase(aParentStateMachine)
   254     {
   236     {
   255     OstTraceFunctionEntry0( REF_TUSBBATTERYCHARGINGPLUGINSTATECURRENTNEGOTIATING_TUSBBATTERYCHARGINGPLUGINSTATECURRENTNEGOTIATING_CONS_ENTRY );
   237     LOG_FUNC
   256     OstTraceFunctionExit0( REF_TUSBBATTERYCHARGINGPLUGINSTATECURRENTNEGOTIATING_TUSBBATTERYCHARGINGPLUGINSTATECURRENTNEGOTIATING_CONS_EXIT );
       
   257     };
   238     };
   258     
   239     
   259 void TUsbBatteryChargingPluginStateCurrentNegotiating::UsbDeviceStateChange(
   240 void TUsbBatteryChargingPluginStateCurrentNegotiating::UsbDeviceStateChange(
   260         TInt aLastError, TUsbDeviceState aOldState, TUsbDeviceState aNewState)
   241         TInt aLastError, TUsbDeviceState aOldState, TUsbDeviceState aNewState)
   261     {
   242     {
   262     OstTraceFunctionEntry0( REF_TUSBBATTERYCHARGINGPLUGINSTATECURRENTNEGOTIATING_USBDEVICESTATECHANGE_ENTRY );
   243     LOG_FUNC
   263 
   244 
   264     OstTraceExt3( TRACE_NORMAL, REF_TUSBBATTERYCHARGINGPLUGINSTATECURRENTNEGOTIATING_USBDEVICESTATECHANGE, "TUsbBatteryChargingPluginStateCurrentNegotiating::UsbDeviceStateChange;aLastError=%d;aOldState=%d;aNewState=%d", aLastError, aOldState, aNewState );
   245     LOGTEXT4(_L8(">>TUsbBatteryChargingPluginStateCurrentNegotiating::UsbDeviceStateChange LastError = %d, aOldState = %d, aNewState = %d"), aLastError, aOldState, aNewState);
   265     (void)aLastError;
   246     (void)aLastError;
   266     (void)aOldState;
   247     (void)aOldState;
   267     iParent.iDeviceState = aNewState;
   248     iParent.iDeviceState = aNewState;
   268     iParent.LogStateText(aNewState);
   249     iParent.LogStateText(aNewState);
   269     
   250     
   272         case EUsbDeviceStateConfigured:
   253         case EUsbDeviceStateConfigured:
   273             if (iParent.IsUsbChargingPossible())
   254             if (iParent.IsUsbChargingPossible())
   274                 {
   255                 {
   275                 iParent.iDeviceStateTimer->Cancel();
   256                 iParent.iDeviceStateTimer->Cancel();
   276                 
   257                 
   277                 OstTrace1( TRACE_NORMAL, REF_TUSBBATTERYCHARGINGPLUGINSTATECURRENTNEGOTIATING_USBDEVICESTATECHANGE_DUP1, "TUsbBatteryChargingPluginStateCurrentNegotiating::UsbDeviceStateChange;iParent.iAvailableMilliAmps=%d", iParent.iAvailableMilliAmps );
   258                 LOGTEXT2(_L8("iParent.iAvailableMilliAmps = %d"),iParent.iAvailableMilliAmps);
   278                 iParent.iAvailableMilliAmps = iParent.iRequestedCurrentValue;
   259                 iParent.iAvailableMilliAmps = iParent.iRequestedCurrentValue;
   279                 
   260                 
   280                 if(0 != iParent.iRequestedCurrentValue)
   261                 if(0 != iParent.iRequestedCurrentValue)
   281                     {
   262                     {
   282                     // A non-zero value was accepted by host, charging 
   263                     // A non-zero value was accepted by host, charging 
   283                     // can be performed now.
   264                     // can be performed now.
   284                     iParent.StartCharging(iParent.iAvailableMilliAmps);                     
   265                     iParent.StartCharging(iParent.iAvailableMilliAmps);                     
   285                     OstTrace1( TRACE_NORMAL, REF_TUSBBATTERYCHARGINGPLUGINSTATECURRENTNEGOTIATING_USBDEVICESTATECHANGE_DUP2, "TUsbBatteryChargingPluginStateCurrentNegotiating::UsbDeviceStateChange;PluginState => EPluginStateCharging(%d)", iParent.iPluginState );
   266                     LOGTEXT2(_L8("PluginState => EPluginStateCharging(%d)"),iParent.iPluginState);
   286                     iParent.SetNegotiatedCurrent(iParent.iAvailableMilliAmps);
   267                     iParent.SetNegotiatedCurrent(iParent.iAvailableMilliAmps);
   287                     }
   268                     }
   288                 else
   269                 else
   289                     {
   270                     {
   290                     // Host can only accept 0 charging current
   271                     // Host can only accept 0 charging current
   291                     // No way to do charging
   272                     // No way to do charging
   292                     iParent.SetState(EPluginStateNoValidCurrent);
   273                     iParent.SetState(EPluginStateNoValidCurrent);
   293                     OstTrace1( TRACE_NORMAL, REF_TUSBBATTERYCHARGINGPLUGINSTATECURRENTNEGOTIATING_USBDEVICESTATECHANGE_DUP3, "TUsbBatteryChargingPluginStateCurrentNegotiating::UsbDeviceStateChange;No more current value to try, iPluginState turned to %d", iParent.iPluginState );
   274                     LOGTEXT2(_L8("No more current value to try, iPluginState turned to %d"), iParent.iPluginState);
   294                     }
   275                     }
   295                 }
   276                 }
   296             
   277             
   297             break;
   278             break;
   298         
   279         
   302             
   283             
   303             
   284             
   304         default:
   285         default:
   305             break;
   286             break;
   306         }
   287         }
   307     OstTraceFunctionExit0( REF_TUSBBATTERYCHARGINGPLUGINSTATECURRENTNEGOTIATING_USBDEVICESTATECHANGE_EXIT );
       
   308     }
   288     }
   309 
   289 
   310 void TUsbBatteryChargingPluginStateCurrentNegotiating::DeviceStateTimeout()
   290 void TUsbBatteryChargingPluginStateCurrentNegotiating::DeviceStateTimeout()
   311     {
   291     {
   312     OstTraceFunctionEntry0( REF_TUSBBATTERYCHARGINGPLUGINSTATECURRENTNEGOTIATING_DEVICESTATETIMEOUT_ENTRY );
   292     LOG_FUNC
   313     OstTraceExt3( TRACE_NORMAL, REF_TUSBBATTERYCHARGINGPLUGINSTATECURRENTNEGOTIATING_DEVICESTATETIMEOUT, "TUsbBatteryChargingPluginStateCurrentNegotiating::DeviceStateTimeout;Time: %d Plugin State = %d, Device State = %d", User::NTickCount(), (TInt32)iParent.iPluginState, (TInt32)iParent.iDeviceState );
   293     LOGTEXT4(_L8("Time: %d Plugin State = %d, Device State = %d"), User::NTickCount(), iParent.iPluginState, iParent.iDeviceState);
   314     
   294     
   315     iParent.iDeviceReEnumerator->Cancel(); // cancel re-enumeration AO
   295     iParent.iDeviceReEnumerator->Cancel(); // cancel re-enumeration AO
   316     
   296     
   317     if(iParent.iRequestedCurrentValue != 0)
   297     if(iParent.iRequestedCurrentValue != 0)
   318         {
   298         {
   323         {
   303         {
   324         // The Host doesn't accept 0ma power request?
   304         // The Host doesn't accept 0ma power request?
   325         // Assume it will never happens.
   305         // Assume it will never happens.
   326         iParent.SetState(EPluginStateNoValidCurrent);
   306         iParent.SetState(EPluginStateNoValidCurrent);
   327         }
   307         }
   328     OstTraceFunctionExit0( REF_TUSBBATTERYCHARGINGPLUGINSTATECURRENTNEGOTIATING_DEVICESTATETIMEOUT_EXIT );
       
   329     }
   308     }
   330 
   309 
   331 
   310 
   332 // Charging plugin charing state
   311 // Charging plugin charing state
   333 
   312 
   334     
   313     
   335 TUsbBatteryChargingPluginStateCharging::TUsbBatteryChargingPluginStateCharging (
   314 TUsbBatteryChargingPluginStateCharging::TUsbBatteryChargingPluginStateCharging (
   336         CUsbBatteryChargingPlugin& aParentStateMachine ) :
   315         CUsbBatteryChargingPlugin& aParentStateMachine ) :
   337     TUsbBatteryChargingPluginStateBase(aParentStateMachine)
   316     TUsbBatteryChargingPluginStateBase(aParentStateMachine)
   338     {
   317     {
   339     OstTraceFunctionEntry0( REF_TUSBBATTERYCHARGINGPLUGINSTATECHARGING_TUSBBATTERYCHARGINGPLUGINSTATECHARGING_CONS_ENTRY );
   318     LOG_FUNC
   340     OstTraceFunctionExit0( REF_TUSBBATTERYCHARGINGPLUGINSTATECHARGING_TUSBBATTERYCHARGINGPLUGINSTATECHARGING_CONS_EXIT );
       
   341     }
   319     }
   342 
   320 
   343 void TUsbBatteryChargingPluginStateCharging::UsbDeviceStateChange(
   321 void TUsbBatteryChargingPluginStateCharging::UsbDeviceStateChange(
   344         TInt aLastError, TUsbDeviceState aOldState, TUsbDeviceState aNewState)
   322         TInt aLastError, TUsbDeviceState aOldState, TUsbDeviceState aNewState)
   345     {
   323     {
   346     OstTraceFunctionEntry0( REF_TUSBBATTERYCHARGINGPLUGINSTATECHARGING_USBDEVICESTATECHANGE_ENTRY );
   324     LOG_FUNC
   347 
   325 
   348     OstTraceExt3( TRACE_NORMAL, REF_TUSBBATTERYCHARGINGPLUGINSTATECHARGING_USBDEVICESTATECHANGE, "TUsbBatteryChargingPluginStateCharging::UsbDeviceStateChange;aLastError=%d;aOldState=%d;aNewState=%d", aLastError, aOldState, aNewState );
   326     LOGTEXT4(_L8(">>TUsbBatteryChargingPluginStateCharging::UsbDeviceStateChange LastError = %d, aOldState = %d, aNewState = %d"), aLastError, aOldState, aNewState);
   349     (void)aLastError;
   327     (void)aLastError;
   350     (void)aOldState;
   328     (void)aOldState;
   351     iParent.iDeviceState = aNewState;
   329     iParent.iDeviceState = aNewState;
   352     iParent.LogStateText(aNewState);
   330     iParent.LogStateText(aNewState);
   353 
   331 
   369             break;
   347             break;
   370                             
   348                             
   371         default:
   349         default:
   372             break;
   350             break;
   373         }
   351         }
   374     OstTraceFunctionExit0( REF_TUSBBATTERYCHARGINGPLUGINSTATECHARGING_USBDEVICESTATECHANGE_EXIT );
       
   375     }
   352     }
   376 
   353 
   377 // Charging plugin negotiated fail state
   354 // Charging plugin negotiated fail state
   378     
   355     
   379     
   356     
   380 TUsbBatteryChargingPluginStateNoValidCurrent::TUsbBatteryChargingPluginStateNoValidCurrent (
   357 TUsbBatteryChargingPluginStateNoValidCurrent::TUsbBatteryChargingPluginStateNoValidCurrent (
   381         CUsbBatteryChargingPlugin& aParentStateMachine ) :
   358         CUsbBatteryChargingPlugin& aParentStateMachine ) :
   382     TUsbBatteryChargingPluginStateBase(aParentStateMachine)
   359     TUsbBatteryChargingPluginStateBase(aParentStateMachine)
   383     {
   360     {
   384     OstTraceFunctionEntry0( REF_TUSBBATTERYCHARGINGPLUGINSTATENOVALIDCURRENT_TUSBBATTERYCHARGINGPLUGINSTATENOVALIDCURRENT_CONS_ENTRY );
   361     LOG_FUNC
   385     OstTraceFunctionExit0( REF_TUSBBATTERYCHARGINGPLUGINSTATENOVALIDCURRENT_TUSBBATTERYCHARGINGPLUGINSTATENOVALIDCURRENT_CONS_EXIT );
       
   386     };
   362     };
   387 
   363 
   388     
   364     
   389 // Charging plugin idle negotiated state
   365 // Charging plugin idle negotiated state
   390 
   366 
   391 TUsbBatteryChargingPluginStateIdleNegotiated::TUsbBatteryChargingPluginStateIdleNegotiated (
   367 TUsbBatteryChargingPluginStateIdleNegotiated::TUsbBatteryChargingPluginStateIdleNegotiated (
   392         CUsbBatteryChargingPlugin& aParentStateMachine ) :
   368         CUsbBatteryChargingPlugin& aParentStateMachine ) :
   393     TUsbBatteryChargingPluginStateBase(aParentStateMachine)
   369     TUsbBatteryChargingPluginStateBase(aParentStateMachine)
   394     {
   370     {
   395     OstTraceFunctionEntry0( REF_TUSBBATTERYCHARGINGPLUGINSTATEIDLENEGOTIATED_TUSBBATTERYCHARGINGPLUGINSTATEIDLENEGOTIATED_CONS_ENTRY );
   371     LOG_FUNC
   396     OstTraceFunctionExit0( REF_TUSBBATTERYCHARGINGPLUGINSTATEIDLENEGOTIATED_TUSBBATTERYCHARGINGPLUGINSTATEIDLENEGOTIATED_CONS_EXIT );
       
   397     };
   372     };
   398 
   373 
   399 void TUsbBatteryChargingPluginStateIdleNegotiated::UsbDeviceStateChange(
   374 void TUsbBatteryChargingPluginStateIdleNegotiated::UsbDeviceStateChange(
   400         TInt aLastError, TUsbDeviceState aOldState, TUsbDeviceState aNewState)
   375         TInt aLastError, TUsbDeviceState aOldState, TUsbDeviceState aNewState)
   401     {
   376     {
   402     OstTraceFunctionEntry0( REF_TUSBBATTERYCHARGINGPLUGINSTATEIDLENEGOTIATED_USBDEVICESTATECHANGE_ENTRY );
   377     LOG_FUNC
   403 
   378 
   404     OstTraceExt3( TRACE_NORMAL, REF_TUSBBATTERYCHARGINGPLUGINSTATEIDLENEGOTIATED_USBDEVICESTATECHANGE, "TUsbBatteryChargingPluginStateIdleNegotiated::UsbDeviceStateChange;aLastError=%d;aOldState=%d;aNewState=%d", aLastError, aOldState, aNewState );
   379     LOGTEXT4(_L8(">>TUsbBatteryChargingPluginStateIdleNegotiated::UsbDeviceStateChange LastError = %d, aOldState = %d, aNewState = %d"), aLastError, aOldState, aNewState);
   405     (void)aLastError;
   380     (void)aLastError;
   406     (void)aOldState;
   381     (void)aOldState;
   407     iParent.iDeviceState = aNewState;
   382     iParent.iDeviceState = aNewState;
   408     iParent.LogStateText(aNewState);
   383     iParent.LogStateText(aNewState);
   409 
   384 
   420             break;
   395             break;
   421 
   396 
   422         default:
   397         default:
   423             break;
   398             break;
   424         }
   399         }
   425     OstTraceFunctionExit0( REF_TUSBBATTERYCHARGINGPLUGINSTATEIDLENEGOTIATED_USBDEVICESTATECHANGE_EXIT );
       
   426     }
   400     }
   427  
   401  
   428 // Charging plugin user disabled state
   402 // Charging plugin user disabled state
   429     
   403     
   430 TUsbBatteryChargingPluginStateUserDisabled::TUsbBatteryChargingPluginStateUserDisabled (
   404 TUsbBatteryChargingPluginStateUserDisabled::TUsbBatteryChargingPluginStateUserDisabled (
   431         CUsbBatteryChargingPlugin& aParentStateMachine ) :
   405         CUsbBatteryChargingPlugin& aParentStateMachine ) :
   432     TUsbBatteryChargingPluginStateBase(aParentStateMachine)
   406     TUsbBatteryChargingPluginStateBase(aParentStateMachine)
   433     {
   407     {
   434     OstTraceFunctionEntry0( REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_CONS_ENTRY );
   408     LOG_FUNC
   435     OstTraceFunctionExit0( REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_CONS_EXIT );
       
   436     };
   409     };
   437 
   410 
   438 
   411 
   439 void TUsbBatteryChargingPluginStateUserDisabled::UsbDeviceStateChange(
   412 void TUsbBatteryChargingPluginStateUserDisabled::UsbDeviceStateChange(
   440         TInt aLastError, TUsbDeviceState aOldState, TUsbDeviceState aNewState)
   413         TInt aLastError, TUsbDeviceState aOldState, TUsbDeviceState aNewState)
   441     {
   414     {
   442     OstTraceFunctionEntry0( REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_USBDEVICESTATECHANGE_ENTRY );
   415     LOG_FUNC
   443 
   416 
   444     OstTraceExt3( TRACE_NORMAL, REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_USBDEVICESTATECHANGE, "TUsbBatteryChargingPluginStateUserDisabled::UsbDeviceStateChange;aLastError=%d;aOldState=%d;aNewState=%d", aLastError, aOldState, aNewState );
   417     LOGTEXT4(_L8(">>TUsbBatteryChargingPluginStateUserDisabled::UsbDeviceStateChange LastError = %d, aOldState = %d, aNewState = %d"), aLastError, aOldState, aNewState);
   445     (void)aLastError;
   418     (void)aLastError;
   446     (void)aOldState;
   419     (void)aOldState;
   447     iParent.iDeviceState = aNewState;
   420     iParent.iDeviceState = aNewState;
   448     iParent.LogStateText(aNewState);
   421     iParent.LogStateText(aNewState);
   449     OstTraceFunctionExit0( REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_USBDEVICESTATECHANGE_EXIT );
       
   450     }
   422     }
   451 
   423 
   452 void TUsbBatteryChargingPluginStateUserDisabled::HandleRepositoryValueChangedL(
   424 void TUsbBatteryChargingPluginStateUserDisabled::HandleRepositoryValueChangedL(
   453     const TUid& aRepository, TUint aId, TInt aVal)
   425     const TUid& aRepository, TUint aId, TInt aVal)
   454     {
   426     {
   455     OstTraceFunctionEntry0( REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_HANDLEREPOSITORYVALUECHANGEDL_ENTRY );
   427     LOG_FUNC
   456     
   428     
   457     OstTrace1( TRACE_NORMAL, REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_HANDLEREPOSITORYVALUECHANGEDL, "TUsbBatteryChargingPluginStateUserDisabled::HandleRepositoryValueChangedL;aRepository = 0x%08x", aRepository.iUid );
   429     LOGTEXT4(_L8(">>TUsbBatteryChargingPluginStateUserDisabled::HandleRepositoryValueChangedL aRepository = 0x%08x, aId = %d, aVal = %d"), aRepository, aId, aVal);
   458     OstTraceExt2( TRACE_NORMAL, REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_HANDLEREPOSITORYVALUECHANGEDL_DUP1, "TUsbBatteryChargingPluginStateUserDisabled::HandleRepositoryValueChangedL;aId=%d;aVal=%d", aId, aVal );
   430     LOGTEXT3(_L8("Plugin State = %d, Device State = %d"), iParent.iPluginState, iParent.iDeviceState);
   459     OstTraceExt2( TRACE_NORMAL, REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_HANDLEREPOSITORYVALUECHANGEDL_DUP2, "TUsbBatteryChargingPluginStateUserDisabled::HandleRepositoryValueChangedL;iParent.iPluginState=%d;iParent.iDeviceState=%d", iParent.iPluginState, iParent.iDeviceState );
       
   460     
   431     
   461     if ((aRepository == KUsbBatteryChargingCentralRepositoryUid) &&
   432     if ((aRepository == KUsbBatteryChargingCentralRepositoryUid) &&
   462             (aId == KUsbBatteryChargingKeyEnabledUserSetting))
   433             (aId == KUsbBatteryChargingKeyEnabledUserSetting))
   463         {
   434         {
   464         iParent.iUserSetting = (TUsbBatteryChargingUserSetting)aVal;
   435         iParent.iUserSetting = (TUsbBatteryChargingUserSetting)aVal;
   470             if ((iParent.iPluginState == EPluginStateIdleNegotiated)
   441             if ((iParent.iPluginState == EPluginStateIdleNegotiated)
   471                     && (iParent.iDeviceState == EUsbDeviceStateConfigured))
   442                     && (iParent.iDeviceState == EUsbDeviceStateConfigured))
   472                 {
   443                 {
   473                 iParent.StartCharging(iParent.iAvailableMilliAmps); // Go to charing state implicitly
   444                 iParent.StartCharging(iParent.iAvailableMilliAmps); // Go to charing state implicitly
   474                 }
   445                 }
   475             OstTrace1( TRACE_NORMAL, REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_HANDLEREPOSITORYVALUECHANGEDL_DUP3, "TUsbBatteryChargingPluginStateUserDisabled::HandleRepositoryValueChangedL;PluginState => %d", iParent.iPluginState );
   446             LOGTEXT2(_L8("PluginState => %d"), iParent.iPluginState);
   476             }
   447             }
   477         }
   448         }
   478     OstTraceFunctionExit0( REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_HANDLEREPOSITORYVALUECHANGEDL_EXIT );
       
   479     }
   449     }
   480 
   450 
   481 // For host OTG enabled charging plug-in
   451 // For host OTG enabled charging plug-in
   482 #ifdef SYMBIAN_ENABLE_USB_OTG_HOST_PRIV
   452 #ifdef SYMBIAN_ENABLE_USB_OTG_HOST_PRIV
   483 void TUsbBatteryChargingPluginStateUserDisabled::MpsoIdPinStateChanged(TInt aValue)
   453 void TUsbBatteryChargingPluginStateUserDisabled::MpsoIdPinStateChanged(TInt aValue)
   484     {
   454     {
   485     OstTraceFunctionEntry0( REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_MPSOIDPINSTATECHANGED_ENTRY );
   455     LOG_FUNC
   486     
   456     
   487     OstTrace1( TRACE_NORMAL, REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_MPSOIDPINSTATECHANGED, "TUsbBatteryChargingPluginStateUserDisabled::MpsoIdPinStateChanged;IdPinState changed => %d", aValue );
   457     LOGTEXT2(_L8("IdPinState changed => %d"), aValue);
   488     
   458     
   489     // Disable charging here when IdPin is present
   459     // Disable charging here when IdPin is present
   490     // When IdPin disappears (i.e. the phone becomes B-Device), all necessary step are performed 
   460     // When IdPin disappears (i.e. the phone becomes B-Device), all necessary step are performed 
   491     // in UsbDeviceStateChange() method
   461     // in UsbDeviceStateChange() method
   492 
   462 
   496         {
   466         {
   497         case EUsbBatteryChargingIdPinARole:
   467         case EUsbBatteryChargingIdPinARole:
   498             TRAP_IGNORE(iParent.SetInitialConfigurationL());
   468             TRAP_IGNORE(iParent.SetInitialConfigurationL());
   499             iParent.PushRecoverState(EPluginStateBEndedCableNotPresent);
   469             iParent.PushRecoverState(EPluginStateBEndedCableNotPresent);
   500             
   470             
   501             OstTraceFunctionExit0( REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_MPSOIDPINSTATECHANGED_EXIT );
       
   502             return;
   471             return;
   503 
   472 
   504         case EUsbBatteryChargingIdPinBRole:
   473         case EUsbBatteryChargingIdPinBRole:
   505             iParent.PushRecoverState(EPluginStateIdle);
   474             iParent.PushRecoverState(EPluginStateIdle);
   506             break;
   475             break;
   507 
   476 
   508         default:     
   477         default:     
   509             iParent.SetState(EPluginStateIdle);
   478             iParent.SetState(EPluginStateIdle);
   510             break;
   479             break;
   511         }
   480         }
   512     OstTraceFunctionExit0( REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_MPSOIDPINSTATECHANGED_EXIT_DUP1 );
       
   513     }
   481     }
   514 
   482 
   515 #endif     
   483 #endif     
   516  
   484  
   517 void TUsbBatteryChargingPluginStateUserDisabled::MpsoVBusStateChanged(TInt aNewState)
   485 void TUsbBatteryChargingPluginStateUserDisabled::MpsoVBusStateChanged(TInt aNewState)
   518     {
   486     {
   519     OstTraceFunctionEntry0( REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_MPSOVBUSSTATECHANGED_ENTRY );
   487     LOG_FUNC
   520     
   488     
   521     if (aNewState == iParent.iVBusState)
   489     if (aNewState == iParent.iVBusState)
   522         {
   490         {
   523         OstTrace1( TRACE_NORMAL, REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_MPSOVBUSSTATECHANGED, "TUsbBatteryChargingPluginStateUserDisabled::MpsoVBusStateChanged;Receive VBus State Change notification without any state change: aNewState = %d", aNewState );
   491         LOGTEXT2(_L8("Receive VBus State Change notification without any state change: aNewState = %d"), aNewState);
   524         OstTraceFunctionExit0( REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_MPSOVBUSSTATECHANGED_EXIT );
       
   525         return;
   492         return;
   526         }
   493         }
   527 
   494 
   528     OstTraceExt2( TRACE_NORMAL, REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_MPSOVBUSSTATECHANGED_DUP1, "TUsbBatteryChargingPluginStateUserDisabled::MpsoVBusStateChanged;VBusState changed from %d to %d", iParent.iVBusState, aNewState );
   495     LOGTEXT3(_L8("VBusState changed from %d to %d"), iParent.iVBusState, aNewState);
   529     
   496     
   530     iParent.iVBusState = aNewState;
   497     iParent.iVBusState = aNewState;
   531     if (aNewState == 0) // VBus drop down - we have disconnected from host
   498     if (aNewState == 0) // VBus drop down - we have disconnected from host
   532         {
   499         {
   533         iParent.iRequestedCurrentValue = 0;
   500         iParent.iRequestedCurrentValue = 0;
   536         
   503         
   537         iParent.iPluginStateToRecovery = EPluginStateIdle;
   504         iParent.iPluginStateToRecovery = EPluginStateIdle;
   538         }
   505         }
   539     
   506     
   540     // The handling of VBus on will be down in DeviceStateChanged implicitly
   507     // The handling of VBus on will be down in DeviceStateChanged implicitly
   541     OstTraceFunctionExit0( REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_MPSOVBUSSTATECHANGED_EXIT_DUP1 );
       
   542     }
   508     }
   543 
   509 
   544 
   510 
   545 // Charging plugin A-role state
   511 // Charging plugin A-role state
   546     
   512     
   547 TUsbBatteryChargingPluginStateBEndedCableNotPresent::TUsbBatteryChargingPluginStateBEndedCableNotPresent (
   513 TUsbBatteryChargingPluginStateBEndedCableNotPresent::TUsbBatteryChargingPluginStateBEndedCableNotPresent (
   548         CUsbBatteryChargingPlugin& aParentStateMachine ) :
   514         CUsbBatteryChargingPlugin& aParentStateMachine ) :
   549     TUsbBatteryChargingPluginStateBase(aParentStateMachine)
   515     TUsbBatteryChargingPluginStateBase(aParentStateMachine)
   550     {
   516     {
   551     OstTraceFunctionEntry0( RES_TUSBBATTERYCHARGINGPLUGINSTATEBENDEDCABLENOTPRESENT_TUSBBATTERYCHARGINGPLUGINSTATEBENDEDCABLENOTPRESENT_CONS_ENTRY );
   517     LOG_FUNC
   552     OstTraceFunctionExit0( RES_TUSBBATTERYCHARGINGPLUGINSTATEBENDEDCABLENOTPRESENT_TUSBBATTERYCHARGINGPLUGINSTATEBENDEDCABLENOTPRESENT_CONS_EXIT );
       
   553     };
   518     };
   554     
   519     
   555     
   520     
   556 
   521