Date: Wed, 16 Jun 2004 14:23:23 -0600 (MDT) From: "M. Warner Losh" <imp@bsdimp.com> To: liamfoy@sepulcrum.org Cc: acpi@freebsd.org Subject: Re: apm problem Message-ID: <20040616.142323.91757134.imp@bsdimp.com> In-Reply-To: <20040616.135044.85075412.imp@bsdimp.com> References: <20040616171408.0f88c928.liamfoy@sepulcrum.org> <20040616.135044.85075412.imp@bsdimp.com>
next in thread | previous in thread | raw e-mail | index | archive | help
Here's my revised apm(8) patches. They fix a few minor nits that I introduced in the last pass. I have some similar fixes for the kernel. Warner Index: apm.c =================================================================== RCS file: /home/ncvs/src/usr.sbin/apm/apm.c,v retrieving revision 1.32 diff -u -r1.32 apm.c --- apm.c 27 May 2004 19:23:27 -0000 1.32 +++ apm.c 16 Jun 2004 20:22:31 -0000 @@ -34,6 +34,8 @@ #define APMDEV "/dev/apm" +#define APM_UNKNOWN 0xff /* Unknown in APM BIOS spec */ + #define xh(a) (((a) & 0xff00) >> 8) #define xl(a) ((a) & 0xff) #define APMERR(a) xh(a) @@ -156,7 +158,7 @@ printf("APM version: %d.%d\n", aip->ai_major, aip->ai_minor); printf("APM Management: %s\n", aip->ai_status ? "Enabled" : "Disabled"); printf("AC Line status: "); - if (aip->ai_acline >= 255) + if (aip->ai_acline == APM_UNKNOWN) printf("unknown"); else if (aip->ai_acline > 1) printf("invalid value (0x%x)", aip->ai_acline); @@ -164,7 +166,7 @@ printf("%s", line_msg[aip->ai_acline]); printf("\n"); printf("Battery status: "); - if (aip->ai_batt_stat >= 255) + if (aip->ai_batt_stat == APM_UNKNOWN) printf("unknown"); else if (aip->ai_batt_stat > 3) printf("invalid value (0x%x)", aip->ai_batt_stat); @@ -172,7 +174,7 @@ printf("%s", batt_msg[aip->ai_batt_stat]); printf("\n"); printf("Remaining battery life: "); - if (aip->ai_batt_life >= 255) + if (aip->ai_batt_life == APM_UNKNOWN) printf("unknown\n"); else if (aip->ai_batt_life <= 100) printf("%d%%\n", aip->ai_batt_life); @@ -194,7 +196,7 @@ } if (aip->ai_infoversion >= 1) { printf("Number of batteries: "); - if (aip->ai_batteries >= 255) + if (aip->ai_batteries == (u_int) -1) printf("unknown\n"); else { u_int i; @@ -208,12 +210,11 @@ continue; printf("Battery %d:\n", i); printf("\tBattery status: "); - if (aps.ap_batt_flag <= 255 && - (aps.ap_batt_flag & APM_BATT_NOT_PRESENT)) { + if (aps.ap_batt_flag & APM_BATT_NOT_PRESENT) { printf("not present\n"); continue; } - if (aps.ap_batt_stat >= 255) + if (aps.ap_batt_stat == APM_UNKNOWN) printf("unknown\n"); else if (aps.ap_batt_stat > 3) printf("invalid value (0x%x)\n", @@ -222,7 +223,7 @@ printf("%s\n", batt_msg[aps.ap_batt_stat]); printf("\tRemaining battery life: "); - if (aps.ap_batt_life >= 255) + if (aps.ap_batt_life == APM_UNKNOWN) printf("unknown\n"); else if (aps.ap_batt_life <= 100) printf("%d%%\n", aps.ap_batt_life); @@ -310,10 +311,8 @@ } } - if (aip->ai_infoversion >= 1) { + if (aip->ai_infoversion >= 1 && aip->ai_capabilities != 0xff00) { printf("APM Capabilities:\n"); - if (aip->ai_capabilities == 0xff00) - printf("\tunknown\n"); if (aip->ai_capabilities & 0x01) printf("\tglobal standby state\n"); if (aip->ai_capabilities & 0x02)
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20040616.142323.91757134.imp>