OSA : OS_Bsem_Wait_TO

OS_Bsem_Wait_TO (bsem, timeout)

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

Ожидаем установку семафора с таймаутом. После того, как дождемся, семафор сбрасывается. Если так и не дождались, то выходим из ожидания по таймауту.

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

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

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

bsem ID бинарного семафора. Количество бинарных семафоров задается в файле OSAcfg.h константой OS_BSEMS
timeout Время ожидания. Задается в системных тиках - периодах вызова сервиса OS_Timer

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

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

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

#define BS_DATA_RECEIVED     0
 
void Task (void)
{
    for (;;) {
        /*...*/
        OS_Bsem_Wait_TO (BS_DATA_RECEIVED, 1000);   // 1000 тиков ждем установки семафора
        if (!OS_IsTimeout()) {
            // Обрабатываем данные
            /*...*/
        }
        /*...*/
    }
}

Old style name

OS_WaitBSemTimeout

См. также