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; |