void hwtimer_arch_set_absolute(unsigned long value, short timer) { DEBUG("hwtimer_arch_set_absolute(%lu, %i)\n", value, timer); value -= native_hwtimer_now; hwtimer_arch_set(value, timer); return; }
static int _hwtimer_set(unsigned long offset, void (*callback)(void*), void *ptr, bool absolute) { DEBUG("_hwtimer_set: offset=%lu callback=%p ptr=%p absolute=%d\n", offset, callback, ptr, absolute); if (!inISR()) { dINT(); } int n = lifo_get(lifo); if (n == -1) { if (!inISR()) { eINT(); } puts("No hwtimer left."); return -1; } timer[n].callback = callback; timer[n].data = ptr; if (absolute) { DEBUG("hwtimer_arch_set_absolute n=%d\n", n); hwtimer_arch_set_absolute(offset, n); } else { DEBUG("hwtimer_arch_set n=%d\n", n); hwtimer_arch_set(offset, n); } lpm_prevent_sleep++; if (!inISR()) { eINT(); } return n; }