Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 16 Jun 2004 21:39:46 +0100
From:      Liam Foy <liamfoy@sepulcrum.org>
To:        "M. Warner Losh" <imp@bsdimp.com>
Cc:        acpi@freebsd.org
Subject:   Re: apm problem
Message-ID:  <20040616213946.6f7def3d.liamfoy@sepulcrum.org>
In-Reply-To: <20040616.142323.91757134.imp@bsdimp.com>
References:  <20040616171408.0f88c928.liamfoy@sepulcrum.org> <20040616.135044.85075412.imp@bsdimp.com> <20040616.142323.91757134.imp@bsdimp.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, 16 Jun 2004 14:23:23 -0600 (MDT)
"M. Warner Losh" <imp@bsdimp.com> wrote:

> 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 */

Do you not mean 0xffffffff ?

> +
>  #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)

I agree with the ai_infoversion change above, and from your other mail about changing
the number of batteries from 0 to -1. Has nate gave any feedback ?

I have also made some recent changes which have been commited which have changed the
structure of the apm code. I am willing to change the code from >= 255 to == APM_UNKNOWN
if it is decided this is what the correct way and it is agreeded upon.


- Liam J. Foy <liamfoy@sepulcrum.org>




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20040616213946.6f7def3d.liamfoy>