Ver la versión completa : Leer bateria en F200
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, ¤tval, 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.
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:
Eso se merece unos anarchitos y que alguien lo ponga en la wiki, anímate ^^
*****, en vez de mejorar las cosas, las empeoran...
¿Donde está el empeoramiento? Creo recordar que las lecturas que daba antes eran casi aleatorias como quien dice de lo poco fiables que salían.
Yo solo veo un cambio.
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, ¤tval, 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. ;)
... 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.
siento ***** un rato... pero que coño son todas esas palabrejas? :D
para los que no tenemos idea de programació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.
Se puede implementar en el Gmenu2x?
Se puede implementar en el Gmenu2x?
Puedes implementarla donde quieras ;)
Un saludo.
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions Inc. All rights reserved.