On Thu, 04 Nov 2010 19:49:24 +0200
Alexander Motin <m...@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
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to