Функция переводит текущую задачу в ожидание на время не меньше чем timeout системных тиков. Если время ожидания истекло, а задача не была восстановлена (сервисом tn_task_wakeup()), задача будет выведена планировщиком из состояния ожидания и продолжит выполнение когда станет наиболее приоритетной.
Задача может быть переведена в ожидание с параметром TN_WAIT_INFINITE. В этом случае задача будет находится в ожидании до тех пор, пока не будет вызван сервис tn_task_wakeup() или tn_task_iwakeup().
Каждая задача имеет счетчик запросов на пробуждение. Если у текущей задачи этот счетчик больше или равен 1, то вызов сервиса tn_task_sleep() декрементирует счетчик, а задача продолжает выполнение.
Вызов:
TN_RETVAL tn_task_sleep (TN_TIMEOUT timeout);
Разрешен вызов:
В контексте задачи
Параметры функции:
timeouttimeout ⊆ [1..TN_WAIT_INFINITE], где TN_WAIT_INFINITE = 65‘535 для 16-битных контроллеров и TN_WAIT_INFINITE = 4‘294‘967‘295 для 32-битных контроллеров
Возвращаемые значения:
TERR_WRONG_PARAMtimeout = 0 (замечание: данный код возврата возможен только в случае использования сервисов с проверкой параметров)TERR_WCONTEXTTERR_NO_ERR
Пример вызова:
void TN_TASK Task1 (void *param) { for (;;) { /* ... */ tn_task_sleep(10); /* ... */ } }