blob: 4b9dcdbcd161ab9a7b65d61b18f0493455ff4e8b [file] [log] [blame]
Brian3afd6fc2014-04-02 20:41:49 -07001#include "aos/common/util/phased_loop.h"
brians343bc112013-02-10 01:53:46 +00002
Brian Silvermanf665d692013-02-17 22:11:39 -08003#include <string.h>
4
5#include "aos/common/logging/logging.h"
brians343bc112013-02-10 01:53:46 +00006#include "aos/common/time.h"
7
8namespace aos {
9namespace time {
10
11void PhasedLoopXMS(int ms, int offset) {
brians343bc112013-02-10 01:53:46 +000012 // TODO(brians): Tests!
Brian Silverman7645d2f2013-03-30 18:53:56 -070013 const Time frequency = Time::InMS(ms);
Brian Silverman0079a9d2013-10-24 15:57:35 -070014 SleepUntil((Time::Now() / static_cast<int32_t>(frequency.ToNSec())) *
15 static_cast<int32_t>(frequency.ToNSec()) +
Brian Silverman7645d2f2013-03-30 18:53:56 -070016 frequency + Time::InUS(offset));
brians343bc112013-02-10 01:53:46 +000017}
18
19} // namespace timing
20} // namespace aos