Here is some enhancements to batstat.c that
add the standard usage() and that allows to better understand
the -v output. It now gives also Watthours, Volts and Amperes.
--- batstat.corig Fri Oct 21 13:34:13 2005
+++ batstat.c Tue May 1 14:24:40 2007
@@ -173,6 +173,25 @@
exit(0);
}
+void
+usage(int interval)
+{
+ fprintf(stderr, "Options:\n");
+ fprintf(stderr, " -v dump raw output\n");
+ fprintf(stderr, " -x xtitle output (implies looping)\n");
+ fprintf(stderr, " -l loop\n");
+ fprintf(stderr, " -i sec number of seconds for each loop
(default is %d)\n", interval);
+ fprintf(stderr, " -p use poll on acpidrv\n");
+ fprintf(stderr, " -d # ACPI VIDEO switch ????\n");
+ fprintf(stderr, " -s display battery warning status\n");
+ fprintf(stderr, " -T display thermal status\n");
+ fprintf(stderr, " -w enable battery warning\n");
+ fprintf(stderr, " -W disable battery warning\n");
+ fprintf(stderr, " -I initialize the default batstat
parameters for low battery shutdown\n");
+ fprintf(stderr, " -P # set emergency poweroff threshold\n");
+ fprintf(stderr, " -S # set shutdown threshold\n");
+}
+
int
main(int argc, char **argv)
{
@@ -241,6 +260,7 @@
batwarn_init(fd);
break;
default:
+ usage(interval);
exit(1);
}
}
@@ -303,22 +323,22 @@
for (i = 0; i < nbat; i++) {
(void) printf("battery %d\n", i);
(void) printf("\tbif_unit = %x\n", bif[i].bif_unit);
- (void) printf("\tbif_design_cap = %x\n",
- bif[i].bif_design_cap);
- (void) printf("\tbif_last_cap = %x\n",
- bif[i].bif_last_cap);
+ (void) printf("\tbif_design_cap = %4x %2d.%3.3d Wh\n",
+ bif[i].bif_design_cap, bif[i].bif_design_cap /
1000, bif[i].bif_design_cap % 1000);
+ (void) printf("\tbif_last_cap = %4x %2d.%3.3d Wh\n",
+ bif[i].bif_last_cap, bif[i].bif_last_cap / 1000,
bif[i].bif_last_cap % 1000);
(void) printf("\tbif_tech = %x\n",
bif[i].bif_tech);
- (void) printf("\tbif_voltage = %x\n",
- bif[i].bif_voltage);
- (void) printf("\tbif_warn_cap = %x\n",
- bif[i].bif_warn_cap);
- (void) printf("\tbif_low_cap = %x\n",
- bif[i].bif_low_cap);
- (void) printf("\tbif_gran1_cap = %x\n",
- bif[i].bif_low_cap);
- (void) printf("\tbif_gran2_cap = %x\n",
- bif[i].bif_low_cap);
+ (void) printf("\tbif_voltage = %4x %2d.%3.3d V\n",
+ bif[i].bif_voltage, bif[i].bif_voltage / 1000,
bif[i].bif_voltage % 1000);
+ (void) printf("\tbif_warn_cap = %4x %2d.%3.3d Wh\n",
+ bif[i].bif_warn_cap, bif[i].bif_warn_cap / 1000,
bif[i].bif_warn_cap % 1000);
+ (void) printf("\tbif_low_cap = %4x %2d.%3.3d Wh\n",
+ bif[i].bif_low_cap, bif[i].bif_low_cap / 1000,
bif[i].bif_low_cap % 1000);
+ (void) printf("\tbif_gran1_cap = %4x %2d.%3.3d Wh\n",
+ bif[i].bif_low_cap, bif[i].bif_low_cap / 1000,
bif[i].bif_low_cap % 1000);
+ (void) printf("\tbif_gran2_cap = %4x %2d.%3.3d Wh\n",
+ bif[i].bif_low_cap, bif[i].bif_low_cap / 1000,
bif[i].bif_low_cap % 1000);
(void) printf("\tbif_model = %s\n", bif[i].bif_model);
(void) printf("\tbif_serial = %s\n", bif[i].bif_serial);
(void) printf("\tbif_type = %s\n", bif[i].bif_type);
@@ -333,14 +353,19 @@
}
if (verbose) {
+ int j, k;
+
for (i = 0; i < nbat; i++) {
(void) printf("battery %d\n", i);
(void) printf("\tbst_state = %x\n", bst[i].bst_state);
- (void) printf("\tbst_rate = %x\n", bst[i].bst_rate);
- (void) printf("\tbst_rem_cap = %x\n",
- bst[i].bst_rem_cap);
- (void) printf("\tbst_voltage = %x\n",
- bst[i].bst_voltage);
+ j = bst[i].bst_rate / bst[i].bst_voltage;
+ k = bst[i].bst_rate * 1000 / bst[i].bst_voltage;
+ (void) printf("\tbst_rate = %4x %2d.%3.3d W
(%d.%3.3d A)\n",
+ bst[i].bst_rate, bst[i].bst_rate / 1000,
bst[i].bst_rate % 1000, j, k % 1000);
+ (void) printf("\tbst_rem_cap = %4x %2d.%3.3d Wh\n",
+ bst[i].bst_rem_cap, bst[i].bst_rem_cap / 1000,
bst[i].bst_rem_cap % 1000);
+ (void) printf("\tbst_voltage = %4x %2d.%3.3d V\n",
+ bst[i].bst_voltage, bst[i].bst_voltage / 1000,
bst[i].bst_voltage % 1000);
}
}
Jörg
--
EMail:[EMAIL PROTECTED] (home) Jörg Schilling D-13353 Berlin
[EMAIL PROTECTED] (uni)
[EMAIL PROTECTED] (work) Blog: http://schily.blogspot.com/
URL: http://cdrecord.berlios.de/old/private/ ftp://ftp.berlios.de/pub/schily
_______________________________________________
opensolaris-code mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/opensolaris-code