OSA : OS_Msg_Wait_TO

OS_Msg_Wait_TO (msg_cb, os_msg_type_var, timeout)

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

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

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

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

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

msg_cb Дескриптор указателя на сообщение. Переменная типа OST_MSG_CB
os_msg_type_var Переменная типа OST_MSG; в нее будет помещен указатель на сообщение
timeout Время ожидания. Задается в системных тиках - периодах вызова сервиса OS_Timer

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

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

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

OST_MSG_CB uart_msg;
void Task (void)
{
    OST_MSG msg;
    for (;;) {
        /*...*/
        OS_Msg_Wait_TO (uart_msg, msg, 100);  // В течение 100 тиков ждем данные от UART
        if (OS_IsTimeout()) {
            // Не дождались - зажигаем красный светодиод
            RED_LED = 1;
        } else {
            // Дождались - обрабатываем сообщение
            /*...*/
        }
        /*...*/
    }
}

Old style name

OS_WaitMsgTimeout

См. также