Функция предназначена для отсылки сообщения data_ptr
через очередь сообщений dque
из прерывания.
Если очередь задач, ожидающих сообщение не пуста, сервис переводит первую в очереди задачу в состояние готовой к выполнению и передает сообщение data_ptr
в эту задачу, минуя буфер сообщений.
Если ни одна из задач системы не ожидает сообщение, параметр data_ptr
кладется в конец буфера сообщений очереди. Если буфер сообщений заполнен, то функция возвращает код ошибки TERR_TIMEOUT
.
Вызов:
TN_RETVAL tn_queue_isend_polling (TN_DQUE *dque, void *data_ptr);
Разрешен вызов:
В прерывании
Параметры функции:
dque
data_ptr
Возвращаемые значения:
TERR_WRONG_PARAM
TERR_NOEXS
TERR_WCONTEXT
TERR_TIMEOUT
TERR_NO_ERR
Пример вызова:
extern TN_DQUE queue TN_DATA; extern MY_MSG message; tn_sys_interrupt (_T2Interrupt) /* прерывание от таймера */ { IFS0bits.T2IF = 0; /* сброс флага прерывания */ message.a = 1; message.b = 2; if (tn_queue_isend_polling(&queue, (void*)&message) == TERR_NO_ERR) { /* ... */ } }