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

Reply via email to