resourcemgmt/hwresourcesmgr/server/src/HWRMLightCommonData.cpp
changeset 0 4e1aa6a622a0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/resourcemgmt/hwresourcesmgr/server/src/HWRMLightCommonData.cpp	Tue Feb 02 00:53:00 2010 +0200
@@ -0,0 +1,674 @@
+// Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+
+
+
+// INCLUDE FILES
+#include "HWRMtrace.h"
+#include "HWRMLightDomainCRKeys.h"
+#include "HWRMLightCommonData.h"
+#include "HWRMClientServer.h"
+#include "HWRMPrivatePSKeys.h"
+#include "HWRMConfiguration.h"
+#include "HWRMLightClientServer.h"
+#include "HWRMLightService.h"
+#include "HWRMLightCommands.h"
+#include "HWRMFeatureMgr.h"
+#include <featureuids.h>
+
+
+#include "HWRMTargetModifierPlugin.h"
+
+// EXTERNAL DATA STRUCTURES
+// None
+
+// EXTERNAL FUNCTION PROTOTYPES  
+// None
+
+// CONSTANTS
+/**
+* Minimum allowed sensor sensitivity setting for Light
+*/
+const TInt KHWRMLightMinSensitivity(1);
+
+/**
+* Maximum allowed sensor sensitivity setting for Light
+*/
+const TInt KHWRMLightMaxSensitivity(100);
+
+/**
+* Maximum inactivity time for lights on in seconds
+*/
+const TInt KHWRMLightMaxInactivity(60);
+
+/**
+* Minimum inactivity time for lights on in seconds
+*/
+const TInt KHWRMLightMinInactivity(5);
+
+/**
+* Default inactivity time for lights on in seconds.
+* Used if observer cannot be set up.
+*/
+const TInt KHWRMLightDefaultInactivity(15);
+
+// MACROS
+// None
+
+// LOCAL CONSTANTS AND MACROS
+// None
+
+// MODULE DATA STRUCTURES
+// None
+
+// LOCAL FUNCTION PROTOTYPES
+// None
+
+// FORWARD DECLARATIONS
+// None
+
+// ============================= LOCAL FUNCTIONS ===============================
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CHWRMLightCommonData::CHWRMLightCommonData
+// C++ constructor
+// -----------------------------------------------------------------------------
+//
+CHWRMLightCommonData::CHWRMLightCommonData()
+    {
+    COMPONENT_TRACE1(_L( "HWRM Server - CHWRMLightCommonData::CHWRMLightCommonData()" ) );
+    COMPONENT_TRACE1(_L( "HWRM Server - CHWRMLightCommonData::CHWRMLightCommonData - return" ) );
+    }
+
+// -----------------------------------------------------------------------------
+// CHWRMLightCommonData::ConstructL
+// Symbian 2nd phase constructor can leave.
+// -----------------------------------------------------------------------------
+//
+void CHWRMLightCommonData::ConstructL(CHWRMPluginHandler* aPluginHandler,
+                                      CHWRMReservationHandler* aReservationHandler)
+    {    
+    COMPONENT_TRACE1(_L( "HWRM Server - CHWRMLightCommonData::ConstructL()" ) );
+    
+    //The feature UID NFeature::KAmbientLightSensor is defined in featureuids.h
+    iSensorSupported = HWRMFeatureMgr::IsFeatureSupported( NFeature::KAmbientLightSensor );
+    // Load target modifier plugin, if such a thing exists.
+    // Plugin is not mandatory for HWRM functionality,
+    // but the light control logic will be broken if the plugin is dropped from the image.
+    TRAPD( err, iTargetModifier = CHWRMTargetModifierPlugin::NewL( KHWRMLightApiEComMatch ) );
+    if ( err != KErrNone )
+        {
+        COMPONENT_TRACE2(_L( "HWRM Server - CHWRMLightCommonData::ConstructL - Target modifier plugin not loaded; cause: %d" ), err );
+        }  
+    
+    COMPONENT_TRACE2(_L( "HWRM Server - CHWRMLightCommonData::ConstructL - Sensor support: 0x%x" ), iSensorSupported );
+      
+    ResetCenrepL();
+    
+    // Initialize full system target. Ensure that only supported targets are included.
+    if ( iTargetModifier )
+        {        
+        iFullSystemTarget = iTargetModifier->GetFullSystemTarget() & iSupportedTargets;
+        COMPONENT_TRACE2(_L( "HWRM Server - CHWRMLightCommonData::ConstructL - Full System Target: 0x%x" ), iFullSystemTarget );
+        }
+        
+    // Set up status P&S values
+    User::LeaveIfError(RProperty::Define(KPSUidHWResourceNotification, KHWRMLightStatus, RProperty::EByteArray, KNoCapability, KHWRMSidOnlyPolicy));
+    User::LeaveIfError(iLightStatusProperty.Attach(KPSUidHWResourceNotification, KHWRMLightStatus));
+    
+    TInt currentTarget( KHWRMLightFirstTarget );
+    
+    for( TInt i = 0; i < KHWRMLightMaxTargets; i++ )
+        {
+        THWRMStatusInfo info;
+        info.iTarget = currentTarget;
+        info.iStatus = CHWRMExtendedLight::ELightStatusUnknown;
+        iStatusList.AppendL( info );
+        // shift the mask and target ready for next loop
+        currentTarget <<= 1;
+        }
+        
+    TInt arraySize = ( sizeof( THWRMStatusInfo ) ) * KHWRMLightMaxTargets;
+    TPtr8 arrayPtr( ( TUint8* )&iStatusList[0], arraySize, arraySize );
+      
+    User::LeaveIfError( iLightStatusProperty.Set( arrayPtr ) );
+    
+    // Construct light service last so that the common data is in order to be used
+    // in service construction.
+    iLightService = CHWRMLightService::NewL(aPluginHandler, aReservationHandler, *this);
+    
+    // Reset intensity and sensitivity to update values to plugin, 
+    // as lightservice is not yet available when ResetCenrepL was called earlier.
+    SetDefaultIntensity(iDefaultIntensity, ETrue);
+
+    if ( iSensorSupported )
+        {
+        SetDefaultSensitivity(iDefaultSensitivity, ETrue);	
+        }
+
+    COMPONENT_TRACE1(_L( "HWRM Server - CHWRMLightCommonData::ConstructL - return " ) );
+    }
+
+// -----------------------------------------------------------------------------
+// CHWRMLightCommonData::NewL
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+CHWRMLightCommonData* CHWRMLightCommonData::NewL(CHWRMPluginHandler* aPluginHandler,
+                                                 CHWRMReservationHandler* aReservationHandler)
+    {
+    COMPONENT_TRACE1(_L( "HWRM Server - CHWRMLightCommonData::NewL()" ) );
+
+    CHWRMLightCommonData* self = new( ELeave ) CHWRMLightCommonData();
+    
+    CleanupStack::PushL( self );
+    self->ConstructL(aPluginHandler, aReservationHandler);
+    CleanupStack::Pop();
+
+    COMPONENT_TRACE2(_L( "HWRM Server - CHWRMLightCommonData::NewL - return 0x%x" ), self );
+    
+    return self;
+    }
+   
+// ---------------------------------------------------------
+// Destructor
+// ---------------------------------------------------------
+//
+CHWRMLightCommonData::~CHWRMLightCommonData()
+    {
+    COMPONENT_TRACE1(_L( "HWRM Server - CHWRMLightCommonData::~CHWRMLightCommonData()" ) );
+
+    delete iLightService;
+    iLightService = NULL;
+    
+    // Destroy target modifier plugin
+    delete iTargetModifier;
+    iTargetModifier = NULL;
+    
+    // Clean up central repository related data
+    CleanCenrep();
+
+    iLightStatusProperty.Close();
+
+    // NULL these references so that pc-lint will not complain. 
+    // They are cleaned in CleanCenrep();
+    iIntensityNotifyHandler = NULL;
+    iSensitivityNotifyHandler = NULL;
+    iSensorNotifyHandler = NULL;
+    iRepository = NULL;     
+    iLightsTimeoutObserver = NULL;   
+
+    COMPONENT_TRACE1(_L( "HWRM Server - CHWRMLightCommonData::~CHWRMLightCommonData - return" ) );
+    }
+
+// -----------------------------------------------------------------------------
+// CHWRMLightCommonData::PublishLightStatus
+// -----------------------------------------------------------------------------
+//
+void CHWRMLightCommonData::PublishLightStatus(TInt aTarget, CHWRMLight::TLightStatus aStatus)
+    {
+    COMPONENT_TRACE3(_L("HWRM Server - CHWRMLightCommonData::PublishLightStatus(0x%x, 0x%x)"), aTarget, aStatus); 
+
+    // Publish Light status to P&S. If publishing fails, something is very wrong
+    // with P&S, so ignore it. If it is memory issue, hopefully it will work 
+    // next time. If it is not, we can't do anything about it anyway.
+
+    TInt err(KErrNone);
+    
+    // Loop through target and update correct indexes of iStatusList
+    TInt currentTarget(KHWRMLightFirstTarget);
+    TInt currentStatus = aStatus;
+            
+    for ( int i = 0; i < KHWRMLightMaxTargets; i++ )
+        {
+        if ( aTarget & currentTarget )
+            {
+            THWRMStatusInfo info;
+            info.iTarget = currentTarget;
+            info.iStatus = currentStatus;
+            const TInt& target( info.iTarget );
+            TInt j = iStatusList.FindInOrder( target, FindByTarget ); 
+            
+            if ( j >= 0 && j < KHWRMLightMaxTargets )
+                {
+                iStatusList[j].iStatus = currentStatus;   
+            }
+            }    
+        // shift the mask and target ready for next loop
+        currentTarget <<= 1;
+        }
+    
+    COMPONENT_TRACE1( (_L("HWRM Server - CHWRMLightCommonData::PublishLightStatus - Setting light status property.") ) ); 
+    
+    TInt arraySize = ( sizeof( THWRMStatusInfo ) ) * KHWRMLightMaxTargets;
+    TPtr8 arrayPtr( ( TUint8* )&iStatusList[0], arraySize, arraySize );
+      
+    err = iLightStatusProperty.Set( arrayPtr );
+    
+    if ( err != KErrNone )
+        {
+        COMPONENT_TRACE2(_L("HWRM Server - CHWRMLightCommonData::PublishLightStatus - Property set failed: %d"), err );     
+        }
+    COMPONENT_TRACE1(_L("HWRM Server - CHWRMLightCommonData::PublishLightStatus - return")); 
+    }
+
+// -----------------------------------------------------------------------------
+// CHWRMLightCommonData::DefaultSensitivity
+// -----------------------------------------------------------------------------
+//
+TInt CHWRMLightCommonData::DefaultSensitivity() 
+    {
+    if ( !iRepository )
+        {
+        TRAP_IGNORE(ResetCenrepL());
+        }
+        
+    return iDefaultSensitivity;
+    }
+
+// -----------------------------------------------------------------------------
+// CHWRMLightCommonData::SensorEnabled
+// -----------------------------------------------------------------------------
+//
+TBool CHWRMLightCommonData::SensorEnabled() 
+    {
+    TBool retval(EFalse);
+    
+    if ( iSensorSupported )
+        {
+        if ( !iRepository )
+            {
+            TRAP_IGNORE(ResetCenrepL());
+            }
+        
+        retval = iSensorOn;
+        }
+        
+    return retval;
+    }
+    
+// -----------------------------------------------------------------------------
+// CHWRMLightCommonData::DefaultState
+// -----------------------------------------------------------------------------
+//
+CHWRMLight::TLightStatus CHWRMLightCommonData::DefaultState() const
+    {   
+    CHWRMLight::TLightStatus retval(CHWRMLight::ELightOn);
+    
+    if ( (User::InactivityTime()).Int() >= iInactivityLimit )
+        {
+        retval = CHWRMLight::ELightOff;
+        }
+        
+    COMPONENT_TRACE4(_L("HWRM Server - CHWRMLightCommonData::DefaultState - Inactivitity time: %d, Limit: %d, State: %d"), (User::InactivityTime()).Int(), iInactivityLimit, retval);                 
+        
+    return retval;
+    }
+    
+    
+// -----------------------------------------------------------------------------
+// CHWRMLightCommonData::HandleNotifyInt
+// -----------------------------------------------------------------------------
+//
+void CHWRMLightCommonData::HandleNotifyInt(TUint32 aId, TInt aNewValue)
+    {
+    COMPONENT_TRACE3(_L("HWRM Server - CHWRMLightCommonData::HandleNotifyInt(0x%x, 0x%x)"), aId, aNewValue) ; 
+
+    switch(aId)
+        {
+        case KLightIntensity:
+            {
+            SetDefaultIntensity(aNewValue);
+            break;
+            }
+        case KLightSensorSensitivity:
+            {
+            SetDefaultSensitivity(aNewValue);
+            break;
+            }
+        case KLightSensorInUse:
+            {
+            iSensorOn = (aNewValue != 0);
+            COMPONENT_TRACE2(_L("HWRM Server - CHWRMLightCommonData::HandleNotifyInt - Sensor set: %d"), iSensorOn); 
+            
+            // Set lights on unless sensor is not supported or inactivity time passed
+            if ( iLightService && 
+                 iSensorSupported &&
+                 DefaultState() == CHWRMLight::ELightOn )
+                {        
+                iLightService->SystemLightsOn();
+                }
+            
+            break;
+            }
+        default:
+            {
+            // Do nothing, as key does not concern us. 
+            COMPONENT_TRACE2(_L("HWRM Server - CHWRMLightCommonData::HandleNotifyInt - Invalid key notified: 0x%x"), aId ); 
+            break;
+            }
+        }
+
+    COMPONENT_TRACE1(_L("HWRM Server - CHWRMLightCommonData::HandleNotifyInt - return") ); 
+    }
+
+// -----------------------------------------------------------------------------
+// CHWRMLightCommonData::HandleNotifyError
+// -----------------------------------------------------------------------------
+//
+#if  defined(COMPONENT_TRACE_FLAG) && defined(_DEBUG)
+void CHWRMLightCommonData::HandleNotifyError(TUint32 aId, TInt error, CCenRepListener* aHandler)
+#else
+void CHWRMLightCommonData::HandleNotifyError(TUint32 /*aId*/, TInt /*error*/, CCenRepListener* /*aHandler*/)
+#endif
+    {
+    COMPONENT_TRACE4(_L("HWRM Server - CHWRMLightCommonData::HandleNotifyError(0x%x, 0x%x, 0x%x)"), aId, error, aHandler); 
+    
+    // Try to restart cenrep related functionality. If it fails, clean up and try to restart when values are asked next.
+    TRAPD(err, ResetCenrepL());
+    
+    if (err != KErrNone)
+        {
+        CleanCenrep();
+        COMPONENT_TRACE2(_L("HWRM Server - CHWRMLightCommonData::HandleNotifyError - Cenrep reset failed: %d"), err );
+        }
+
+    COMPONENT_TRACE1(_L("HWRM Server - CHWRMLightCommonData::HandleNotifyError - return") ); 
+    }
+
+// -----------------------------------------------------------------------------
+// CHWRMLightCommonData::SetDefaultIntensity
+// -----------------------------------------------------------------------------
+//
+void CHWRMLightCommonData::SetDefaultIntensity(TInt aValue, TBool aConstructCall)
+    {
+    iDefaultIntensity = aValue;
+    
+    if ( iDefaultIntensity < KHWRMLightMinIntensity )
+        {
+        iDefaultIntensity = KHWRMLightMinIntensity;
+        }
+    else if ( iDefaultIntensity > KHWRMLightMaxIntensity)
+        {
+        iDefaultIntensity = KHWRMLightMaxIntensity;
+        }
+    else
+        {
+        // no else
+        }
+        
+    // Update value to plugin, if iLightService is initialized
+    if ( iLightService )
+        {        
+        TInt target(iSupportedTargets);
+        
+        if(aConstructCall)
+         {
+             target = iFullSystemTarget; //During bootup, intensity of system targets supported in the platform are changed.
+         }
+                
+         TRAPD( err, iLightService->UpdateDefaultIntensityL(target, iDefaultIntensity) );
+        
+        if ( err != KErrNone )
+            {
+            COMPONENT_TRACE2(_L( "HWRM Server - CHWRMLightCommonData::SetDefaultIntensity - Error updating plugin: %d" ), err );
+            }
+        else
+            {
+            // Intensity change successful. 
+            // Set lights on unless sensor control is enabled or inactivity time passed or this is called from constructor
+            if ( !aConstructCall &&
+                 !(iSensorSupported && iSensorOn) && 
+                 DefaultState() == CHWRMLight::ELightOn )
+                {
+                iLightService->SystemLightsOn();
+                }
+            }
+        }
+        
+        
+    COMPONENT_TRACE2(_L( "HWRM Server - CHWRMLightCommonData::SetDefaultIntensity: %d" ), iDefaultIntensity );
+    }
+        
+// -----------------------------------------------------------------------------
+// CHWRMLightCommonData::SetDefaultSensitivity
+// -----------------------------------------------------------------------------
+//
+void CHWRMLightCommonData::SetDefaultSensitivity(TInt aValue, TBool aConstructCall)
+    {
+    iDefaultSensitivity = aValue;
+    
+    if ( iDefaultSensitivity < KHWRMLightMinSensitivity )
+        {
+        iDefaultSensitivity = KHWRMLightMinSensitivity;
+        }
+    else if ( iDefaultSensitivity > KHWRMLightMaxSensitivity)
+        {
+        iDefaultSensitivity = KHWRMLightMaxSensitivity;
+        }
+    else
+        {
+        // no else
+        }
+        
+    // Update value to plugin, if iLightService is initialized
+    if ( iLightService && iSensorSupported)
+        {        
+        TRAPD( err, iLightService->UpdateDefaultSensitivityL(iDefaultSensitivity) );
+        
+        if ( err != KErrNone )
+            {
+            COMPONENT_TRACE2(_L( "HWRM Server - CHWRMLightCommonData::SetDefaultSensitivity - Error updating plugin: %d" ), err );
+            }
+        else
+            {
+            // Sensitivity change successful.
+            // Set lights on unless sensor control is not enabled or inactivity time passed or this is called from constructor
+            if ( !aConstructCall &&
+                 iSensorOn && 
+                 DefaultState() == CHWRMLight::ELightOn )
+                {
+                iLightService->SystemLightsOn();
+                }
+            }
+        }
+        
+    COMPONENT_TRACE2(_L( "HWRM Server - CHWRMLightCommonData::SetDefaultSensitivity: %d" ), iDefaultSensitivity );
+    }
+    
+
+// -----------------------------------------------------------------------------
+// CHWRMLightCommonData::LightsTimeoutChange
+// -----------------------------------------------------------------------------
+//
+void CHWRMLightCommonData::LightsTimeoutChange(TInt aTimeout)
+    {
+    if ( aTimeout < KHWRMLightMinInactivity )
+        {
+        iInactivityLimit = KHWRMLightMinInactivity;
+        }
+    else if ( aTimeout > KHWRMLightMaxInactivity )
+        {
+        iInactivityLimit = KHWRMLightMaxInactivity;
+        }
+    else
+        {
+        iInactivityLimit = aTimeout;
+        }
+
+    COMPONENT_TRACE2(_L( "HWRM Server - CHWRMLightCommonData::LightsTimeoutChange: %d" ), iInactivityLimit );
+    }
+
+// -----------------------------------------------------------------------------
+// CHWRMLightCommonData::CleanCenrep
+// Cleans the central repository related functionality. 
+// -----------------------------------------------------------------------------
+//
+void CHWRMLightCommonData::CleanCenrep()
+    {
+    COMPONENT_TRACE1(_L("HWRM Server - CHWRMLightCommonData::CleanCenrep()") ); 
+
+    if ( iIntensityNotifyHandler )
+        {
+        iIntensityNotifyHandler->StopListening();        
+        }
+    if ( iSensitivityNotifyHandler )
+        {
+        iSensitivityNotifyHandler->StopListening();        
+        }
+    if ( iSensorNotifyHandler )
+        {
+        iSensorNotifyHandler->StopListening();        
+        }
+    
+    delete iIntensityNotifyHandler;
+    delete iSensitivityNotifyHandler;
+    delete iSensorNotifyHandler;
+    delete iRepository;   
+    delete iLightsTimeoutObserver; 
+    
+    iIntensityNotifyHandler = NULL;
+    iSensitivityNotifyHandler = NULL;
+    iSensorNotifyHandler = NULL;
+    iRepository = NULL;        
+    iLightsTimeoutObserver = NULL;
+
+    COMPONENT_TRACE1(_L( "HWRM Server - CHWRMLightCommonData::CleanCenrep - return" ) );
+    }
+    
+// -----------------------------------------------------------------------------
+// CHWRMLightCommonData::ResetCenrepL
+// (Re)starts the central repository related functionality. 
+// -----------------------------------------------------------------------------
+//
+void CHWRMLightCommonData::ResetCenrepL()
+    {
+    COMPONENT_TRACE1(_L("HWRM Server - CHWRMLightCommonData::ResetCenrep()") ); 
+
+    CleanCenrep();
+
+    // Get read only values from cenrep
+    iRepository = CRepository::NewL(KCRUidLightSettings);
+
+    TInt value(0);
+    User::LeaveIfError(iRepository->Get(KLightIntensity, value));
+    SetDefaultIntensity(value);
+    
+    User::LeaveIfError(iRepository->Get(KLightTargetMask, iSupportedTargets));        
+    COMPONENT_TRACE2(_L( "HWRM Server - CHWRMLightCommonData::ConstructL - iSupportedTargets: 0x%x" ), iSupportedTargets );
+    
+    // All target combinations up to all targets defined are legal, so snip the rest off
+    iSupportedTargets &= KHWRMAllTargets;       
+    
+    if ( iSensorSupported )
+        {        
+        User::LeaveIfError(iRepository->Get(KLightSensorSensitivity, value));
+        SetDefaultSensitivity(value);
+
+        User::LeaveIfError(iRepository->Get(KLightSensorInUse, value));
+        iSensorOn = (value != 0);
+        COMPONENT_TRACE2(_L( "HWRM Server - CHWRMLightCommonData::ConstructL - iSensorOn: %d" ), iSensorOn );
+        
+        TInt err = iRepository->Get(KLightSensorMask, iSensorTargets);
+        
+        if ( err == KErrNone )
+            {
+            // Sensor targets can only contain supported targets.
+            iSensorTargets &= iSupportedTargets; 
+            COMPONENT_TRACE2(_L( "HWRM Server - CHWRMLightCommonData::ConstructL - iSensorTargets: 0x%x" ), iSensorTargets );
+            }
+        else
+            {
+            iSensorTargets = iSupportedTargets;
+            COMPONENT_TRACE2(_L( "HWRM Server - CHWRMLightCommonData::ConstructL - Error getting sensor targets: %d, assuming all targets are sensor targets" ), err );
+            }
+        }
+        
+    // Set up cenrep notify handlers for each key 
+    // (separate handlers to ensure that notifications correctly also in repository resets)
+    iIntensityNotifyHandler = CCenRepListener::NewL(*this, 
+                                                *iRepository, 
+                                                KLightIntensity);
+    iIntensityNotifyHandler->StartListeningL();
+
+    if ( iSensorSupported )
+        {        
+        iSensitivityNotifyHandler = CCenRepListener::NewL(*this, 
+                                                    *iRepository, 
+                                                    KLightSensorSensitivity);
+        iSensorNotifyHandler = CCenRepListener::NewL(*this, 
+                                                    *iRepository, 
+                                                    KLightSensorInUse);
+        iSensitivityNotifyHandler->StartListeningL();
+        iSensorNotifyHandler->StartListeningL();
+        }
+
+
+    TRAPD( err, iLightsTimeoutObserver = CHWRMLightsTimeoutObserver::NewL(this));
+    
+    if ( err != KErrNone )
+        {
+        // Use default value if timeout observer cannot be created
+        iInactivityLimit = KHWRMLightDefaultInactivity;
+        COMPONENT_TRACE2(_L("HWRM Server - CHWRMLightCommonData::ResetCenrep - Using default lights timeout value: %d "),iInactivityLimit ); 
+        }
+    
+    COMPONENT_TRACE1(_L("HWRM Server - CHWRMLightCommonData::ResetCenrep - return") ); 
+    }
+    
+// -----------------------------------------------------------------------------
+// CHWRMLightCommonData::ModifyTargetL
+// Passes the call to target modifier plugin
+// -----------------------------------------------------------------------------
+//
+TInt CHWRMLightCommonData::ModifyTargetL(TInt aTarget)
+    {
+    // If target modifier plugin doesn't exist, just return the target
+    if ( iTargetModifier )
+        {
+        return iTargetModifier->ModifyTargetL( aTarget);
+        }
+    else
+        {
+        COMPONENT_TRACE1(_L("HWRM Server - CHWRMLightCommonData::ModifyTargetL - Target modifier plugin NULL, no modification") ); 
+        return aTarget;
+        }
+    }
+    
+// -----------------------------------------------------------------------------
+// CHWRMLightCommonData::FindByTarget
+// Finds item from iStatusList by target.
+// -----------------------------------------------------------------------------
+//
+TInt CHWRMLightCommonData::FindByTarget( const TInt* aTarget, 
+    const THWRMStatusInfo& aItem )
+    {
+    if ( *aTarget < aItem.iTarget )
+        {
+        return -1;
+        }
+    else if ( *aTarget > aItem.iTarget )
+        {
+        return 1;
+        }
+
+    return 0;
+    }
+// ========================== OTHER EXPORTED FUNCTIONS =========================
+
+//  End of File