SetPowerRequirement
(1)
IntPtr
(1)
BKL
(1)
KeepYourSmartphoneBacklightOn
(1)
ReleasePowerRequirement
(1)
WolfgangSetPowerRequirement
(1)
PowerState
(1)
SetPowerState
(1)

Why does this Backlight turn on/off class not work on my device

Asked By Wolfgang Hauer
28-Mar-07 12:57 PM
Hi all!

My device is a HTC P3300 (Phone + GPS) PDA.
I have from http://www.peterfoot.net/KeepYourSmartphoneBacklightOn.aspx
grabbed a class wich  should be able to turn the backlight ON/OFF. But it
does'nt work. I got a handle from
SetPowerRequirement(). But no change. Any ideas?

Thanks
Wolfgang


Public Class Backlight
Private Declare Function SetPowerRequirement Lib "coredll.dll" (ByVal
pvDevice As String, ByVal DeviceState As PowerState, ByVal DeviceFlags As
Integer, ByVal pvSystemState As IntPtr, ByVal StateFlags As Integer) As
IntPtr
Private Declare Function ReleasePowerRequirement Lib "coredll.dll" (ByVal
handle As IntPtr) As Integer
'ensure the power requirement is released
Protected Overrides Sub Finalize()
Release()
End Sub
'handle to the power requirement
Private handle As IntPtr
Private Enum PowerState
PwrDeviceUnspecified = -1
D0 = 0 'full on _
D1 = 1 'low power
D2 = 2 'standby
D3 = 3 'sleep
D4 = 4 'off
PwrDeviceMaximum = 5
End Enum
'keep the backlight lit
Public Sub Activate()
'request full power
handle = SetPowerRequirement("BKL1:", PowerState.D0, 1, IntPtr.Zero, 0)
End Sub
'keep the backlight lit
Public Sub DeActivate()
'request no power
handle = SetPowerRequirement("BKL1:", PowerState.D4, 1, IntPtr.Zero, 0)
End Sub
Public Function PowerSettingChanged() As Boolean
If handle = IntPtr.Zero Then
Return False
Else
Return True
End If
End Function
'release power requirement
Public Sub Release()
If handle.ToInt32() <> 0 Then
Dim result As Integer
result = ReleasePowerRequirement(handle)
handle = IntPtr.Zero
End If
End Sub
End Class

Device names can vary between different device types, you'll need to find an

Asked By Peter Foot [MVP]
28-Mar-07 04:03 PM
Device names can vary between different device types, you'll need to find an
alternative for BKL1: used in the example. Device names are stored in the
registry.

Peter

--
Peter Foot
Device Application Development MVP
www.peterfoot.net | www.inthehand.com

Thanks Peter!

Asked By Wolfgang Hauer
28-Mar-07 05:11 PM
Thanks Peter!

So i  can asume that there is no generic way to find out the devicename of
the backlight device?
And why i get a valid looking handle ?

Wolfgang

Hi!

Asked By Wolfgang Hauer
29-Mar-07 03:32 AM
Hi!

I have checked HKLM/drivers/active/builtin/backlight. The prefik is "BKL"
and the index is 1.
Any other idea?

Wolfgang
SetPowerRequirement won't turn the light on and off on its own, all it does is
Asked By Uncle Marvo
29-Mar-07 03:43 AM
SetPowerRequirement won't turn the light on and off on its own, all it does
is to tell Power Manager that YOU don't want it (or DO want it).

If something else overrides it, it will stay on (or off).
Hi!
Asked By Wolfgang Hauer
29-Mar-07 05:34 AM
Hi!

Is there a way to tell that damned thing that I am the master because I have
spend the bucks!!!

Or can i turn the complete LCD off /on

Wolfgang
Hammer?
Asked By NeilH
29-Mar-07 05:36 AM
Hammer?

have
Newsbeitrag
it
As
(ByVal
Why does this Backlight turn on/off class not work on my device
Asked By Uncle Marvo
29-Mar-07 05:42 AM
In reply to NeilH (neil@nospam.uk) who wrote this in


Good option. The other one is SetPowerState() :-)
PS There is a good reason why you should really not use SetPowerState() over
Asked By Uncle Marvo
29-Mar-07 05:44 AM
PS There is a good reason why you should really not use SetPowerState() over
SetPowerRequirement().

A really silly idea to use it on BTH1 etc, but I should think that turning
the backlight on/off won't have any damaging consequences.

Unc
Why does this Backlight turn on/off class not work on my device
Asked By Wolfgang Hauer
29-Mar-07 06:10 AM
I will post a new question: I need to save power!

Wolfgang
hmmm.i've always assumed that the backlight device is BKL1.
Asked By The PocketTV Team
29-Mar-07 06:57 AM
hmmm.

i've always assumed that the backlight device is BKL1.

the idea of SetPowerRequirement was that applications can programatically
configure the backlight, rather than use various tricks that are device
dependent.

if the name of the backlight device is something random that applications
must guess for each device, then thise would seem to defeat the original
purpose, no?

if there is a guaranteed method to recover the backlight device name, what
is it?  what registry key must be accessed?

thanks.
Why does this Backlight turn on/off class not work on my device
Asked By The PocketTV Team
29-Mar-07 06:59 AM
on some devices, it is called:

HKLM/drivers/active/builtin/FrontLight (i'm not kidding!)

so i guess that getting the name of the backlight device is a big guessing
game...

why can't that be standardized?
Why does this Backlight turn on/off class not work on my device
Asked By Peter Foot [MVP]
29-Mar-07 07:56 AM
For all the smartphones I've seen it's always been BKL1:, for Pocket PC
2003s I've seen a variety used, though maybe this has improved in more
recent versions, I haven't tried the code on WM5.0 Pocket PCs.

Peter

--
Peter Foot
Device Application Development MVP
www.peterfoot.net | www.inthehand.com
Post Question To EggHeadCafe