Mercurial > hg > ishara
annotate sched/HRTimer.java @ 61:eff6bddf82e3 tip
Finally implemented perceptual brightness thing.
author | samer |
---|---|
date | Sun, 11 Oct 2015 10:20:42 +0100 |
parents | 7357e1dc2ad6 |
children |
rev | line source |
---|---|
samer@0 | 1 |
samer@0 | 2 package saml.sched; |
samer@0 | 3 |
samer@0 | 4 public class HRTimer { |
samer@0 | 5 |
samer@2 | 6 private static long min_sleep=1200000; // 1.2 ms |
samer@2 | 7 private static long wake_before=500000; // 0.5ms |
samer@0 | 8 |
samer@0 | 9 public static void setMinimumSleepTime(long t) { min_sleep=t; } |
samer@0 | 10 public static void setWakePrealarm(long t) { wake_before=t; } |
samer@0 | 11 |
samer@0 | 12 public static long now() { return System.nanoTime(); } |
samer@0 | 13 public static long sleepUntil(long t1) throws Exception { |
samer@0 | 14 long t0=System.nanoTime(); |
samer@0 | 15 long dt=t1-t0; |
samer@0 | 16 // System.out.println("need to wait for " + dt +"ns"); |
samer@0 | 17 if (dt>min_sleep) { |
samer@0 | 18 long sleep_time=dt-wake_before; |
samer@0 | 19 long millis=sleep_time/1000000; |
samer@0 | 20 int nanos=(int)(sleep_time-millis*1000000); |
samer@0 | 21 // System.out.println("will sleep for "+millis+"ms + "+nanos+"ns"); |
samer@0 | 22 Thread.sleep(millis,nanos); |
samer@0 | 23 } |
samer@0 | 24 |
samer@0 | 25 // go into a tight loop for the last few microseconds |
samer@0 | 26 t0=System.nanoTime(); |
samer@0 | 27 // System.out.println("need to spin for "+(t1-t0)+"ns"); |
samer@0 | 28 while (t0<t1) t0=System.nanoTime(); |
samer@0 | 29 return t0-t1; |
samer@0 | 30 } |
samer@0 | 31 |
samer@0 | 32 public static long estimateMinSleep() throws Exception { |
samer@0 | 33 long t0,t1; |
samer@0 | 34 |
samer@0 | 35 t0=System.nanoTime(); |
samer@0 | 36 Thread.sleep(0,1); |
samer@0 | 37 t1=System.nanoTime(); |
samer@0 | 38 return t1-t0; |
samer@0 | 39 } |
samer@0 | 40 |
samer@0 | 41 public static long estimateGranularity() { |
samer@0 | 42 long t0, t1; |
samer@0 | 43 t0=System.nanoTime(); |
samer@0 | 44 t1=System.nanoTime(); |
samer@0 | 45 return t1-t0; |
samer@0 | 46 } |
samer@0 | 47 }; |