// returns last value of predicate sbool sleepWhile(IF0 pred, O... _) { optPar int interval = 50; // ms optPar double max = 10.0; // seconds long time = sysNow(); do { if (!pred!) false; sleep(interval); } while (sysNow() <= time+toMS(max)); true; }