Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 4 Nov 2010 20:22:03 +0000
From:      Bruce Cran <bruce@cran.org.uk>
To:        Alexander Motin <mav@FreeBSD.org>
Cc:        svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, Bruce Cran <brucec@FreeBSD.org>
Subject:   Re: svn commit: r214781 - head/sbin/camcontrol
Message-ID:  <20101104202203.000043a6@unknown>
In-Reply-To: <4CD2F224.1040008@FreeBSD.org>
References:  <201011041524.oA4FOWd7063812@svn.freebsd.org> <4CD2F224.1040008@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, 04 Nov 2010 19:49:24 +0200
Alexander Motin <mav@FreeBSD.org> wrote:

> This will round period down. You will get 30 minutes instead of 59. In
> this case rounding up IMHO more appropriate. I agree that previous
> rounding up was over aggressive. I would prefer something like:
> 		sc = (t - 1) / (30 * 60) + 241;
> or at least
> 		sc = (t + 15 * 60) / (30 * 60) + 240;
> This will also make previous range unneeded.
> 
> Range "t <= (240 * 5)" probably also should be corrected to round up
> or at least closest.
> 

Of course rounding up is more suitable. Would the following patch be
ok:

Index: camcontrol.c
===================================================================
--- camcontrol.c	(revision 214793)
+++ camcontrol.c	(working copy)
@@ -4312,18 +4312,16 @@
 		cmd = ATA_SLEEP;
 		t = -1;
 	}
+
 	if (t < 0)
 		sc = 0;
 	else if (t <= (240 * 5))
-		sc = t / 5;
-	else if (t == (252 * 5))
+		sc = (t + 4) / 5;
+	else if (t <= (252 * 5))
 		/* special encoding for 21 minutes */
 		sc = 252;
-	else if (t < (30 * 60))
-		/* no encoding exists for 22-29 minutes, so set to 30
mins */
-		sc = 241;
 	else if (t <= (11 * 30 * 60))
-		sc = t / (30 * 60) + 240;
+		sc = (t - 1) / (30 * 60) + 241;
 	else
 		sc = 253;
 

-- 
Bruce Cran



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