/* Zipit battery status. * (c) 2005 Chris Studholme * GPL */ #include #include #include #include #include #include #include #include #include "i2c-dev.h" #include "hardware.h" volatile unsigned char* pbdr = (unsigned char*)(CLPS7111_VIRT_BASE+PBDR); static int i2c_open(int i2cbus) { char filename1[32]; char filename2[32]; char filename3[32]; int e1,e2,e3; int file; /* * Try all three variants and give the correct error message * upon failure */ sprintf(filename1,"/dev/i2c-%d",i2cbus); sprintf(filename2,"/dev/i2c%d",i2cbus); sprintf(filename3,"/dev/i2c/%d",i2cbus); if ((file = open(filename1,O_RDWR)) < 0) { e1 = errno; if ((file = open(filename2,O_RDWR)) < 0) { e2 = errno; if ((file = open(filename3,O_RDWR)) < 0) { e3 = errno; if(e1 == ENOENT && e2 == ENOENT && e3 == ENOENT) { fprintf(stderr,"Error: Could not open file `%s', `%s', or `%s': %s\n", filename1,filename2,filename3,strerror(ENOENT)); } if (e1 != ENOENT) { fprintf(stderr,"Error: Could not open file `%s' : %s\n", filename1,strerror(e1)); if(e1 == EACCES) fprintf(stderr,"Run as root?\n"); } if (e2 != ENOENT) { fprintf(stderr,"Error: Could not open file `%s' : %s\n", filename2,strerror(e2)); if(e2 == EACCES) fprintf(stderr,"Run as root?\n"); } if (e3 != ENOENT) { fprintf(stderr,"Error: Could not open file `%s' : %s\n", filename3,strerror(e3)); if(e3 == EACCES) fprintf(stderr,"Run as root?\n"); } return -1; } else { //filename = filename3; } } else { //filename = filename2; } } else { //filename = filename1; } return file; } int read_batlvl(int file) { int nsamples = 32; unsigned int sum = 0; int i; for (i=0; i=2 && strcmp(argv[1],"-l")==0) { while (1) { printf("%d\n",read_batlvl(file)); sleep(10); } } else { printf("%d%%",read_batlvl(file)); if (((*pbdr>>2)&1)==0) printf(" charging"); printf("\n"); } close(file); return 0; }