screensaver/snsrdisplaycontrol_s60/src/snsrdisplaycontrolsession.cpp
changeset 97 66b5fe3c07fd
parent 90 3ac3aaebaee5
equal deleted inserted replaced
95:32e56106abf2 97:66b5fe3c07fd
    16 *
    16 *
    17 */
    17 */
    18 
    18 
    19 #include <power_save_display_mode.h>
    19 #include <power_save_display_mode.h>
    20 #include <hal.h>
    20 #include <hal.h>
    21 #include <coreapplicationuisdomainpskeys.h>
       
    22 #include <e32property.h>
       
    23 
    21 
    24 #include "snsrdisplaycontrolsession.h"
    22 #include "snsrdisplaycontrolsession.h"
    25 #include "snsrdisplaycontrolcommon.h"
    23 #include "snsrdisplaycontrolcommon.h"
    26 
       
    27 
       
    28 // ======== LOCAL FUNCTIONS ========
       
    29 
    24 
    30 
    25 
    31 // ======== MEMBER FUNCTIONS ========
    26 // ======== MEMBER FUNCTIONS ========
    32 
    27 
    33 
    28 
    89 // ---------------------------------------------------------------------------
    84 // ---------------------------------------------------------------------------
    90 //
    85 //
    91 void CSnsrDisplayControlSession::ServiceL( const RMessage2& aMessage )
    86 void CSnsrDisplayControlSession::ServiceL( const RMessage2& aMessage )
    92     {
    87     {
    93     TInt func = aMessage.Function();
    88     TInt func = aMessage.Function();
       
    89     RDEBUG1( "func", func )
       
    90     
    94     
    91     
    95     TInt err( KErrNone );
    92     TInt err( KErrNone );
    96     
    93     
    97     switch ( func )
    94     switch ( func )
    98         {
    95         {
    99         case ESnsrDispCtrlSrvDisplayOff:
    96         case ESnsrDispCtrlSrvDisplayOff:
   100             {
    97             {
       
    98             RDEBUG( "Switching display off" )
       
    99             
   101             // Disable touch
   100             // Disable touch
   102             HAL::Set( HALData::EPenState, 0 );
   101             TInt err1 = HAL::Set( HALData::EPenState, 0 );
       
   102             RDEBUG1( "disable touch err", err1 )
   103             
   103             
   104             // Lights off
   104             // Display off
   105             err = RProperty::Set(KPSUidCoreApplicationUIs, KLightsSSForcedLightsOn, 0);
   105             TInt err2 = HAL::Set( HALData::EDisplayState, 0 );
       
   106             RDEBUG1( "display off err", err2 )
       
   107             
       
   108             err = err1 || err2;
   106             break;
   109             break;
   107             }
   110             }
   108         case ESnsrDispCtrlSrvDisplayLowPower:
   111         case ESnsrDispCtrlSrvDisplayLowPower:
   109             {
   112             {
       
   113             RDEBUG( "Switching display to low power mode" )
       
   114             
   110             // Disable touch
   115             // Disable touch
   111             HAL::Set( HALData::EPenState, 0 );
   116             TInt err1 = HAL::Set( HALData::EPenState, 0 );
       
   117             RDEBUG1( "disable touch err", err1 )
   112             
   118             
   113             // Set display mode
   119             // Enable low power mode
   114             TInt startRow = aMessage.Int0();
   120             TInt startRow = aMessage.Int0();
   115             TInt endRow = aMessage.Int1();
   121             TInt endRow = aMessage.Int1();
       
   122             RDEBUG1( "first active row", startRow )
       
   123             RDEBUG1( "last active row", endRow )
       
   124             
   116             // TODO: for now, we pass a zero-filled pixel buffer to power save API.
   125             // TODO: for now, we pass a zero-filled pixel buffer to power save API.
   117             // This works fine with our reference hardware but some types of displays
   126             // This works fine with our reference hardware but some types of displays
   118             // might require passing the actual screen contents in this buffer.
   127             // might require passing the actual screen contents in this buffer.
   119             TUint16* ptr = const_cast<TUint16*>( iPowerSavePixelBuffer->Ptr() );
   128             TUint16* ptr = const_cast<TUint16*>( iPowerSavePixelBuffer->Ptr() );
   120             err = iPowerSave->Set(startRow, endRow, ptr);
   129             TInt err2 = iPowerSave->Set(startRow, endRow, ptr);
       
   130             RDEBUG1( "enable low power err", err2 )
       
   131             
       
   132             // Display on
       
   133             TInt err3 = HAL::Set( HALData::EDisplayState, 1 );
       
   134             RDEBUG1( "display on err", err3 );
       
   135             
       
   136             err = err1 || err2 || err3;
   121             break;
   137             break;
   122             }
   138             }
   123         case ESnsrDispCtrlSrvDisplayFullPower:
   139         case ESnsrDispCtrlSrvDisplayFullPower:
   124             {
   140             {
       
   141             RDEBUG( "Switching display to full power mode" )
       
   142             
   125             // Enable touch
   143             // Enable touch
   126             HAL::Set( HALData::EPenState, 1 );
   144             TInt err1 = HAL::Set( HALData::EPenState, 1 );
       
   145             RDEBUG1( "enable touch err", err1 )
   127             
   146             
   128             // Set display mode
   147             // Low power off
   129             err = iPowerSave->Exit();
   148             TInt err2 = iPowerSave->Exit();
       
   149             RDEBUG1( "disable low power err", err2 );
   130             
   150             
   131             // Lights on
   151             // Display on
   132             err = RProperty::Set(KPSUidCoreApplicationUIs, KLightsSSForcedLightsOn, 30) || err;
   152             TInt err3 = HAL::Set( HALData::EDisplayState, 1 );
       
   153             RDEBUG1( "display on err", err3 )
       
   154             
       
   155             err = err1 || err2 || err3;
   133             break;
   156             break;
   134             }
   157             }
   135         default:
   158         default:
   136             {
   159             {
   137             err = KErrNotSupported;
   160             err = KErrNotSupported;