--- a/htiui/HtiServicePlugins/HtiSysInfoServicePlugin/src/HtiLightsController.cpp Thu Jul 15 18:39:46 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,405 +0,0 @@
-/*
-* Copyright (c) 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: Implementation for controlling S60 device lights.
-*
-*/
-
-
-// INCLUDE FILES
-#include <HtiDispatcherInterface.h>
-#include <HtiLogging.h>
-#include "HtiLightsController.h"
-
-// CONSTANTS
-const static TUid KSysInfoServiceUid = { 0x10210CC7 };
-
-const static TInt KLightStatusCmdLength = 2;
-const static TInt KLightOnCmdLength = 6;
-const static TInt KLightOffCmdLength = 5;
-const static TInt KLightBlinkCmdLength = 9;
-
-enum TSysInfoLightControlCommand
- {
- ELightStatus = 0x30,
- ELightOn = 0x31,
- ELightOff = 0x32,
- ELightBlink = 0x33
- };
-
-_LIT8( KErrDescrArgument, "Invalid argument" );
-_LIT8( KErrDescrLightOn, "LightOn failed" );
-_LIT8( KErrDescrLightOff, "LightOff failed" );
-_LIT8( KErrDescrLightBlink, "LightBlink failed" );
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-// -----------------------------------------------------------------------------
-// CHtiLightsController::NewL
-// Two-phased constructor.
-// -----------------------------------------------------------------------------
-//
-CHtiLightsController* CHtiLightsController::NewL( MHtiDispatcher* aDispatcher )
- {
- CHtiLightsController* self = new (ELeave) CHtiLightsController(
- aDispatcher );
- CleanupStack::PushL( self );
- self->ConstructL();
- CleanupStack::Pop();
- return self;
- }
-
-
-// -----------------------------------------------------------------------------
-// CHtiLightsController::CHtiLightsController
-// C++ default constructor.
-// -----------------------------------------------------------------------------
-//
-CHtiLightsController::CHtiLightsController(
- MHtiDispatcher* aDispatcher ):iDispatcher( aDispatcher ),
- iCommand( 0 ),
- iTarget( 0 ),
- iDuration( 0 ),
- iOnDuration( 0 ),
- iOffDuration( 0 ),
- iIntensity( 0 ),
- iFade( EFalse )
- {
- }
-
-
-// -----------------------------------------------------------------------------
-// CHtiLightsController::~CHtiLightsController()
-// Destructor
-// -----------------------------------------------------------------------------
-//
-CHtiLightsController::~CHtiLightsController()
- {
- HTI_LOG_TEXT("CHtiLightsController destroy");
- delete iLight;
- }
-
-// Second phase construction
-void CHtiLightsController::ConstructL()
- {
- HTI_LOG_TEXT("CHtiLightsController::ConstructL");
- iLight = CHWRMLight::NewL( this );
- }
-
-
-// -----------------------------------------------------------------------------
-// CHtiLightsController::ProcessMessageL
-// Called by the plugin when there is a message to be processed by
-// the lights controller.
-// -----------------------------------------------------------------------------
-//
-void CHtiLightsController::ProcessMessageL( const TDesC8& aMessage,
- TDes8& aReply )
- {
- HTI_LOG_FUNC_IN( "CHtiLightsController::ProcessMessageL" );
-
- iCommand = aMessage[0];
- iReply.Zero();
-
- switch ( iCommand )
- {
- case ELightStatus:
- {
- HTI_LOG_TEXT( "ELightStatus" );
- HandleLightStatusL( aMessage );
- break;
- }
-
- case ELightOn:
- {
- HTI_LOG_TEXT( "ELightOn" );
- HandleLightOnL( aMessage );
- break;
- }
-
- case ELightOff:
- {
- HTI_LOG_TEXT( "ELightOff" );
- HandleLightOffL( aMessage );
- break;
- }
-
- case ELightBlink:
- {
- HTI_LOG_TEXT( "ELightBlink" );
- HandleLightBlinkL( aMessage );
- break;
- }
-
- default:
- {
- // If comes here it's an error from caller.
- User::Leave( KErrArgument );
- }
- }
-
- aReply.Copy( iReply );
-
- HTI_LOG_FUNC_OUT("CHtiLightsController::ProcessMessageL");
- }
-
-
-// -----------------------------------------------------------------------------
-// CHtiLightsController::HandleLightStatusL
-// Gets the status of the given light target.
-// Returns "Not supported" for S60 2.x
-// -----------------------------------------------------------------------------
-//
-void CHtiLightsController::HandleLightStatusL( const TDesC8& aMessage )
- {
- HTI_LOG_FUNC_IN( "CHtiLightsController::HandleLightStatusL" );
-
- if ( aMessage.Length() != KLightStatusCmdLength )
- {
- iDispatcher->DispatchOutgoingErrorMessage(
- KErrArgument, KErrDescrArgument, KSysInfoServiceUid );
- }
-
- else
- {
- iTarget = aMessage[1];
- iReply.Append( iLight->LightStatus( iTarget ) );
- }
- HTI_LOG_FUNC_OUT( "CHtiLightsController::HandleLightStatusL" );
- }
-
-
-// -----------------------------------------------------------------------------
-// CHtiLightsController::HandleLightOnL
-// Turns on light with specified parameters.
-// For S60 2.x just turns on lights forever, parameters are ignored.
-// -----------------------------------------------------------------------------
-//
-void CHtiLightsController::HandleLightOnL( const TDesC8& aMessage )
- {
- HTI_LOG_FUNC_IN( "CHtiLightsController::HandleLightOnL" );
-
- if ( aMessage.Length() != KLightOnCmdLength )
- {
- iDispatcher->DispatchOutgoingErrorMessage(
- KErrArgument, KErrDescrArgument, KSysInfoServiceUid );
- return;
- }
-
- // parse values from message
- iTarget = aMessage[1];
- iDuration = aMessage[2] + ( aMessage[3] << 8 );
- iIntensity = aMessage[4];
- iFade = (TBool)aMessage[5];
-
- TInt err = KErrNone;
-
- // normalize possibly abnormal values
- if ( iIntensity < KHWRMLightMinIntensity )
- iIntensity = KHWRMDefaultIntensity;
-
- if ( iIntensity > KHWRMLightMaxIntensity )
- iIntensity = KHWRMLightMaxIntensity;
-
- if ( iDuration < 1 ) iDuration = KHWRMInfiniteDuration;
-
- // shoot
- TRAP( err, iLight->LightOnL( iTarget, iDuration, iIntensity, iFade ) );
-
- if ( err )
- {
- iDispatcher->DispatchOutgoingErrorMessage(
- err, KErrDescrLightOn, KSysInfoServiceUid );
- }
-
- else
- {
- iReply.Append( 0 );
- }
-
- HTI_LOG_FUNC_OUT( "CHtiLightsController::HandleLightOnL ");
- }
-
-
-// -----------------------------------------------------------------------------
-// CHtiLightsController::HandleLightOffL
-// Turns off light with specified parameters.
-// Returns "Not supported" for S60 2.x
-// -----------------------------------------------------------------------------
-//
-void CHtiLightsController::HandleLightOffL( const TDesC8& aMessage )
- {
- HTI_LOG_FUNC_IN( "CHtiLightsController::HandleLightOffL" );
-
- if ( aMessage.Length() != KLightOffCmdLength )
- {
- iDispatcher->DispatchOutgoingErrorMessage(
- KErrArgument, KErrDescrArgument, KSysInfoServiceUid );
- return;
- }
-
- // parse values from message
- iTarget = aMessage[1];
- iDuration = aMessage[2] + ( aMessage[3] << 8 );
- iFade = (TBool)aMessage[4];
-
- // normalize possibly abnormal values
- if ( iDuration < 1 ) iDuration = KHWRMInfiniteDuration;
-
- // shoot
- TRAPD( err, iLight->LightOffL( iTarget, iDuration, iFade ) );
-
- if ( err )
- {
- iDispatcher->DispatchOutgoingErrorMessage(
- err, KErrDescrLightOff, KSysInfoServiceUid );
- }
-
- else
- {
- iReply.Append( 0 );
- }
- HTI_LOG_FUNC_OUT( "CHtiLightsController::HandleLightOffL" );
- }
-
-
-// -----------------------------------------------------------------------------
-// CHtiLightsController::HandleLightBlinkL
-// Blinks light with specified parameters.
-// Returns "Not supported" for S60 2.x
-// -----------------------------------------------------------------------------
-//
-void CHtiLightsController::HandleLightBlinkL( const TDesC8& aMessage )
- {
- HTI_LOG_FUNC_IN( "CHtiLightsController::HandleLightBlinkL" );
-
- if ( aMessage.Length() != KLightBlinkCmdLength )
- {
- iDispatcher->DispatchOutgoingErrorMessage(
- KErrArgument, KErrDescrArgument, KSysInfoServiceUid );
- return;
- }
-
- // parse values from message
- iTarget = aMessage[1];
- iDuration = aMessage[2] + ( aMessage[3] << 8 );
- iOnDuration = aMessage[4] + ( aMessage[5] << 8 );
- iOffDuration = aMessage[6] + ( aMessage[7] << 8 );
- iIntensity = aMessage[8];
-
- // normalize possibly abnormal values
- if ( iIntensity < KHWRMLightMinIntensity )
- iIntensity = KHWRMDefaultIntensity;
-
- if ( iIntensity > KHWRMLightMaxIntensity )
- iIntensity = KHWRMLightMaxIntensity;
-
- if ( iDuration < 1 ) iDuration = KHWRMInfiniteDuration;
-
- if ( iOnDuration < 1 || iOffDuration < 1 )
- {
- iOnDuration = KHWRMDefaultCycleTime;
- iOffDuration = KHWRMDefaultCycleTime;
- }
-
- // shoot
- TRAPD( err, iLight->LightBlinkL(
- iTarget, iDuration, iOnDuration, iOffDuration, iIntensity ) );
-
- if ( err )
- {
- iDispatcher->DispatchOutgoingErrorMessage(
- err, KErrDescrLightBlink, KSysInfoServiceUid );
- }
-
- else
- {
- iReply.Append( 0 );
- }
- HTI_LOG_FUNC_OUT( "CHtiLightsController::HandleLightBlinkL" );
- }
-
-
-// -----------------------------------------------------------------------------
-// CHtiLightsController::LightStatusChanged
-// Called when status of any light target changes.
-// If infinite duration is requested, restores the state back to what was
-// last requested.
-// This method does not exist for S60 2.x
-// -----------------------------------------------------------------------------
-//
-void CHtiLightsController::LightStatusChanged( TInt aTarget,
- CHWRMLight::TLightStatus aStatus )
- {
- HTI_LOG_FORMAT( "Light status changed for target %d", aTarget );
- HTI_LOG_FORMAT( "New status = %d", aStatus );
- HTI_LOG_FORMAT( "Current target = %d", iTarget );
-
- TInt target = aTarget & iTarget;
- if ( !target )
- {
- HTI_LOG_TEXT( "Not interested about the target" );
- return;
- }
-
- HTI_LOG_TEXT( "Matches current target" );
-
- if ( iDuration != KHWRMInfiniteDuration )
- {
- return;
- }
-
- if ( ( aStatus == CHWRMLight::ELightOn && iCommand == ELightOn ) ||
- ( aStatus == CHWRMLight::ELightOff && iCommand == ELightOff ) ||
- ( aStatus == CHWRMLight::ELightBlink && iCommand == ELightBlink ) )
- {
- HTI_LOG_TEXT( "Status already OK" );
- return;
- }
-
- HTI_LOG_TEXT( "Infinite duration wanted - restore light status" );
- switch ( iCommand )
- {
- case ELightOn:
- {
- // Ignore error
- TRAPD( err, iLight->LightOnL(
- target, iDuration, iIntensity, iFade ) );
- HTI_LOG_FORMAT( "LightOnL return code %d", err );
- err = err; // to get rid of compiler warning for non-logging
- break;
- }
- case ELightOff:
- {
- // Ignore error
- TRAPD( err, iLight->LightOffL( target, iDuration, iFade ) );
- HTI_LOG_FORMAT( "LightOffL return code %d", err );
- err = err; // to get rid of compiler warning for non-logging
- break;
- }
- case ELightBlink:
- {
- // Ignore error
- TRAPD( err, iLight->LightBlinkL(
- target, iDuration, iOnDuration,
- iOffDuration, iIntensity ) );
- HTI_LOG_FORMAT( "LightBlinkL return code %d", err );
- err = err; // to get rid of compiler warning for non-logging
- break;
- }
- default:
- break;
- }
- }
-
-// End of file