PDA

Ver la versión completa : Leer bateria en F200



javiero
06/05/2008, 16:13
Buenas:

He probado la forma de leer el estado de la bateria en mi F200, y no funciona.
Imagino que ha cambiado algo desde el modelo F100 al F200.

Alguien tiene información sobre como leer el estado en una F200 ?

Esto fue lo que probe:
devbatt = open("/dev/batt", O_RDONLY);
read (devbatt, &currentval, 2);
close (devbatt);

la putada es que siempre devuelve 0 en currentval

A ver si alguien puede echarme un cable.

Gracias de antemano ;)

DMusta1ne
06/05/2008, 21:21
En la f-200 eliminaron los registros donde se leían los valores de carga de la batería.

javiero
06/05/2008, 21:42
Hola DMusta1ne

Siento contrariarte, pero buscando por todos lados, al final he encontrado el problema y la solución.

Al parecer han eliminado el device /dev/batt y lo han sustituido por otro device que no da un valor tan aproximado de la bateria, sino solamente de si esta ALTA/MEDIA/BAJA/VACIA.

Aqui pongo el codigo que he encontrado por si le viene bien a alguien mas
--------------------------------------------------------------------------
#define BATT_LEVEL_HIGH 0
#define BATT_LEVEL_MID 1
#define BATT_LEVEL_LOW 2
#define BATT_LEVEL_EMPTY 3

typedef struct {
unsigned short batt;
unsigned short remocon;
} MMSP2ADC;

int mmsp2adc(void)
{
int fd, rv;
MMSP2ADC val;
fd = open("/dev/mmsp2adc", O_RDONLY);

if (fd < 0) {
fprintf (stderr, "cannot open /dev/mmsp2adc, errno = %d\n", errno);
return -1;
}

rv = read (fd, &val, sizeof(MMSP2ADC));
//printf ("rv %d, val.batt %d, val.remocon %d\n", rv, val.batt, val.remocon);
close (fd);

return val.batt;
}
--------------------------------------------------------------

Lo he probado en mi F200, y funciona.

Saludos. :brindis:

Theck
08/05/2008, 16:04
Eso se merece unos anarchitos y que alguien lo ponga en la wiki, an&#237;mate ^^

dj syto
08/05/2008, 16:11
*****, en vez de mejorar las cosas, las empeoran...

Theck
08/05/2008, 16:22
&#191;Donde est&#225; el empeoramiento? Creo recordar que las lecturas que daba antes eran casi aleatorias como quien dice de lo poco fiables que sal&#237;an.

Yo solo veo un cambio.

javiero
08/05/2008, 16:32
Buenas:

Aqui os dejo unas pequeñas funciones que me he currado para poder unificar la lectura de bateria en ambos modelo, y de regalo saber que modelo de consola está funcionando el programa en base a la lectura de la bateria.

-------------------------------------------------------------------------
int BateriaF200(void) //mmsp2adc
{
int fd, rv;
MMSP2ADC val;
fd = open("/dev/mmsp2adc", O_RDONLY);
if (fd < 0) {
return -1;
} else {
rv = read (fd, &val, sizeof(MMSP2ADC));
close (fd);
return val.batt; // Devolverá 0=ALTA , 1=MEDIA, 2=BAJA, 3=VACIA
}
}

int BateriaF100(void)
{
int devbatt;
unsigned short currentval=0;
int retorno=-1;

devbatt = open("/dev/batt", O_RDONLY);
read (devbatt, &currentval, 2);
close (devbatt);

if (currentval>900) {
retorno= 0; // ALTA o Cargador
} else if (currentval>745) {
retorno= 1; // MEDIA
} else if (currentval>678) {
retorno= 2; // BAJA
} else {
retorno= 3; // VACIA
}
return retorno; // para ser compatible con el formato que tiene la F200
}


int NivelBateria(void) // Esta función funcionará en ambas consolas
{
int valor;

valor = BateriaF200();

if (valor==-1) {
valor = BateriaF100();
}

return valor;
}

int ModeloConsola(void) // Y esto es una manera burda de averiguar el tipo de consola
{
if (BateriaF200()==-1) {
return 100; // F100
} else {
return 200; // F200
}
}

------------------------------------------------------------------

Un saludo. ;)

jcom
08/05/2008, 19:09
... Creo recordar que las lecturas que daba antes eran casi aleatorias como quien dice de lo poco fiables que salían.
...

Si se leen unos cuantos valores y se calcula la media la cosa se estabiliza bastante.

Zizti
09/05/2008, 13:03
siento ***** un rato... pero que co&#241;o son todas esas palabrejas? :D

para los que no tenemos idea de programaci&#243;n tiene alguna utilidad??

kID_kORN
09/05/2008, 14:10
siento ***** un rato... pero que **** son todas esas palabrejas?

para los que no tenemos idea de programación tiene alguna utilidad??

Es una forma de leer la batería de la consola independientemente del modelo, muy util si quieres desarrollar una aplicación que lea esta información sin tener en cuenta en que modelo de la consola se va a usar.

Multi
09/05/2008, 15:07
Se puede implementar en el Gmenu2x?

javiero
09/05/2008, 15:20
Se puede implementar en el Gmenu2x?

Puedes implementarla donde quieras ;)

Un saludo.