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()) { // Если дескриптор так и не освободился, // то обрабатываем эту ошибку /*...*/ } /*...*/ } }
OS_SendMsgTimeout