OSA : OS_Wait_TO

OS_Wait_TO (condition, timeout)

Разрешен вызов только в контексте задачиПереключает контекстСервис использует таймаут

Переводит задачу в режим ожидания до тех пор, пока не будет выполнено заданное условие или не пройдет время, укзаанное параметром timeout. Условием condition в данном случае может быть любое выражение перечислимого типа (bool, char, int и т.д.). Как только условие выполняется, задача переходит в состояние готовности и, как только задача становится самой приоритетной из всех готовых, она получает управление. Исключение - состязяние приоритетов.

Разрешен вызов:

Только из задачи

Параметры функции:

condition Любое выражение перечислимого типа.
timeout Время ожидания. Задается в системных тиках - периодах вызова сервиса OS_Timer

Возвращаемое значение:

таймаут Если вышли из ожидания по таймауту, то сервис OS_IsTimeout возвратит true

Пример вызова:

void Task (void)
{
    char b;
    for (;;) {
        /*...*/
        OS_Wait_TO (RCIF, 100);   // Ждем 100 мс, когда придет байт по USART
        if (!OS_IsTimeout()) {
            b = RCREG;
        }
        /*...*/
    }
}

Old style name

OS_WaitConditionTimeout

OS_Cond_Wait_TO

См. также