gnokii-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Battery levels


From: Daniele Forsi
Subject: Re: Battery levels
Date: Thu, 1 Nov 2007 10:47:17 +0100
User-agent: KMail/1.9.4

Bastien Nocera wrote:

> I'm currently using some code similar to what's in xgnokii in 
> gnome-phone-manager:
> http://svn.gnome.org/viewvc/phonemgr/trunk/libgsm/phonemgr-listener.c?view=
>markup (see phonemgr_listener_battery_poll ())

I think that multply by 25 comes from 100 / 4 because max_battery_level == 4 
in the only drivers that use GN_BU_Arbitrary except a (rare) special case at
common/phones/nk6100.c:589 where it is set to 1

> Daniele's example code uses phone.max_battery_level from the driver:
> http://www.forsi.it/gnobatmon

I was wrong because it returns a valid percentage value only with drivers 
setting battery_level as GN_BU_Arbitrary, namely nk3110.c nk6100.c nk6160.c 
(I should have noted that I actually tested it only with nk6100.c)

the formula used in common/phones/nk6510.c is probably what I copied without 
undestanding the two different battery_unit settings:
3563: *(data->battery_level) = message[9] * 100 / 
state->driver.phone.max_battery_level;

> Which is correct? In my testing Daniele's option gave me thousands of
> percents using the nk6510 driver.

the most intuitive way to avoid  the magic number 25 could be something like 
this (not yet tested, guessed from looking at the sources for the drivers)

if (data->battery_unit == GN_BU_Percentage) {
        percent = data->battery_level;
} else {
        percent = data->battery_level * 100 / 
state->driver.phone.max_battery_level;
}

Thanks to your question I noticed that the gnapplet driver had a wrong value 
for battery_unit (corrected to GN_BU_Percentage since gnapplet.c revision 
1.34)

-- 
Daniele




reply via email to

[Prev in Thread] Current Thread [Next in Thread]