OSA : OS_Msg_Send_TO

OS_Msg_Send_TO (msg_cb, message, timeout)
OS_Msg_Send_I (msg_cb, message, timeout)

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

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

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

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

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

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

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

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

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

OST_MSG_CB msg_cb;
 
void Task (void)
{
    OST_MSG msg;
    static char Buffer[10];
    for (;;) {
        /*...*/
        OS_Msg_Send_TO (msg_cb, Buffer, 100);  // Пытаемся отправить сообщение. Если
                                               // дескриптор занят, то в течение 100
                                               // тиков ждем его освобождения.
        if (OS_IsTimeout()) {                  // Если дескриптор так и не освободился,
                                               // то обрабатываем эту ошибку
            /*...*/
        }
        /*...*/
    }
}

Old style name

OS_SendMsgTimeout

См. также