11#if DETWS_ENABLE_SLEEP_SCHED
13uint32_t detws_sleep_next(uint32_t now, uint32_t last_active_ms,
const DetwsSleepCfg *cfg)
18 uint32_t idle = (uint32_t)(now - last_active_ms);
19 if (idle < cfg->idle_ms)
22 uint32_t ceil_ms = cfg->max_ms < cfg->min_ms ? cfg->min_ms : cfg->max_ms;
23 if (cfg->ramp_ms == 0)
28 uint32_t doublings = (idle - cfg->idle_ms) / cfg->ramp_ms;
29 uint32_t window = cfg->min_ms ? cfg->min_ms : 1;
30 for (uint32_t i = 0; i < doublings; i++)
32 if (window >= ceil_ms || window > ceil_ms / 2)
41 if (window < cfg->min_ms)
Dynamic sleep-cycle scheduler (DETWS_ENABLE_SLEEP_SCHED).