in lib/nxp/component/serial_manager/serial_manager.c [382:466]
static void SerialManager_Task(void *param)
{
serial_manager_handle_t *handle = (serial_manager_handle_t *)param;
serial_manager_write_handle_t *serialWriteHandle;
serial_manager_read_handle_t *serialReadHandle;
uint32_t primask;
serial_manager_callback_message_t msg;
if (NULL != handle)
{
#if defined(OSA_USED)
#if (defined(SERIAL_MANAGER_USE_COMMON_TASK) && (SERIAL_MANAGER_USE_COMMON_TASK > 0U))
#else
osa_event_flags_t ev = 0;
do
{
if (KOSA_StatusSuccess ==
OSA_EventWait((osa_event_handle_t)handle->event, osaEventFlagsAll_c, false, osaWaitForever_c, &ev))
{
if (ev & SERIAL_EVENT_DATA_SENT)
#endif
#endif
{
serialWriteHandle =
(serial_manager_write_handle_t *)(void *)LIST_GetHead(&handle->completedWriteHandleHead);
while (NULL != serialWriteHandle)
{
SerialManager_RemoveHead(&handle->completedWriteHandleHead);
msg.buffer = serialWriteHandle->transfer.buffer;
msg.length = serialWriteHandle->transfer.soFar;
serialWriteHandle->transfer.buffer = NULL;
if (NULL != serialWriteHandle->callback)
{
serialWriteHandle->callback(serialWriteHandle->callbackParam, &msg,
serialWriteHandle->transfer.status);
}
serialWriteHandle =
(serial_manager_write_handle_t *)(void *)LIST_GetHead(&handle->completedWriteHandleHead);
}
}
#if defined(OSA_USED)
#if (defined(SERIAL_MANAGER_USE_COMMON_TASK) && (SERIAL_MANAGER_USE_COMMON_TASK > 0U))
#else
if (ev & SERIAL_EVENT_DATA_RECEIVED)
#endif
#endif
{
primask = DisableGlobalIRQ();
serialReadHandle = handle->openedReadHandleHead;
EnableGlobalIRQ(primask);
if (NULL != serialReadHandle)
{
if (NULL != serialReadHandle->transfer.buffer)
{
if (serialReadHandle->transfer.soFar >= serialReadHandle->transfer.length)
{
msg.buffer = serialReadHandle->transfer.buffer;
msg.length = serialReadHandle->transfer.soFar;
serialReadHandle->transfer.buffer = NULL;
if (NULL != serialReadHandle->callback)
{
serialReadHandle->callback(serialReadHandle->callbackParam, &msg,
serialReadHandle->transfer.status);
}
}
}
}
}
#if defined(OSA_USED)
#if (defined(SERIAL_MANAGER_USE_COMMON_TASK) && (SERIAL_MANAGER_USE_COMMON_TASK > 0U))
#else
}
} while (gUseRtos_c);
#endif
#endif
}
}