in lib/nxp/component/serial_manager/serial_manager.c [823:942]
serial_manager_status_t SerialManager_Init(serial_handle_t serialHandle, serial_manager_config_t *config)
{
serial_manager_handle_t *handle;
serial_manager_status_t status = kStatus_SerialManager_Error;
assert(config);
#if (defined(SERIAL_MANAGER_NON_BLOCKING_MODE) && (SERIAL_MANAGER_NON_BLOCKING_MODE > 0U))
assert(config->ringBuffer);
assert(config->ringBufferSize);
#endif
assert(serialHandle);
assert(SERIAL_MANAGER_HANDLE_SIZE >= sizeof(serial_manager_handle_t));
handle = (serial_manager_handle_t *)serialHandle;
(void)memset(handle, 0, SERIAL_MANAGER_HANDLE_SIZE);
#if (defined(SERIAL_MANAGER_NON_BLOCKING_MODE) && (SERIAL_MANAGER_NON_BLOCKING_MODE > 0U))
#if defined(OSA_USED)
#if (defined(SERIAL_MANAGER_USE_COMMON_TASK) && (SERIAL_MANAGER_USE_COMMON_TASK > 0U))
COMMON_TASK_init();
#else
if (KOSA_StatusSuccess != OSA_EventCreate((osa_event_handle_t)handle->event, true))
{
return kStatus_SerialManager_Error;
}
if (KOSA_StatusSuccess != OSA_TaskCreate((osa_task_handle_t)handle->taskId, OSA_TASK(SerialManager_Task), handle))
{
return kStatus_SerialManager_Error;
}
#endif
#endif
#endif
handle->type = config->type;
#if (defined(SERIAL_MANAGER_NON_BLOCKING_MODE) && (SERIAL_MANAGER_NON_BLOCKING_MODE > 0U))
handle->ringBuffer.ringBuffer = config->ringBuffer;
handle->ringBuffer.ringBufferSize = config->ringBufferSize;
#endif
switch (config->type)
{
#if (defined(SERIAL_PORT_TYPE_UART) && (SERIAL_PORT_TYPE_UART > 0U))
case kSerialPort_Uart:
status = Serial_UartInit(((serial_handle_t)&handle->lowLevelhandleBuffer[0]), config->portConfig);
#if (defined(SERIAL_MANAGER_NON_BLOCKING_MODE) && (SERIAL_MANAGER_NON_BLOCKING_MODE > 0U))
if ((serial_manager_status_t)kStatus_SerialManager_Success == status)
{
status = Serial_UartInstallTxCallback(((serial_handle_t)&handle->lowLevelhandleBuffer[0]),
SerialManager_TxCallback, handle);
if ((serial_manager_status_t)kStatus_SerialManager_Success == status)
{
status = Serial_UartInstallRxCallback(((serial_handle_t)&handle->lowLevelhandleBuffer[0]),
SerialManager_RxCallback, handle);
}
}
#endif
break;
#endif
#if (defined(SERIAL_PORT_TYPE_USBCDC) && (SERIAL_PORT_TYPE_USBCDC > 0U))
case kSerialPort_UsbCdc:
status = Serial_UsbCdcInit(((serial_handle_t)&handle->lowLevelhandleBuffer[0]), config->portConfig);
#if (defined(SERIAL_MANAGER_NON_BLOCKING_MODE) && (SERIAL_MANAGER_NON_BLOCKING_MODE > 0U))
if (kStatus_SerialManager_Success == status)
{
status = Serial_UsbCdcInstallTxCallback(((serial_handle_t)&handle->lowLevelhandleBuffer[0]),
SerialManager_TxCallback, handle);
if (kStatus_SerialManager_Success == status)
{
status = Serial_UsbCdcInstallRxCallback(((serial_handle_t)&handle->lowLevelhandleBuffer[0]),
SerialManager_RxCallback, handle);
}
}
#endif
break;
#endif
#if (defined(SERIAL_PORT_TYPE_SWO) && (SERIAL_PORT_TYPE_SWO > 0U))
case kSerialPort_Swo:
status = Serial_SwoInit(((serial_handle_t)&handle->lowLevelhandleBuffer[0]), config->portConfig);
#if (defined(SERIAL_MANAGER_NON_BLOCKING_MODE) && (SERIAL_MANAGER_NON_BLOCKING_MODE > 0U))
if (kStatus_SerialManager_Success == status)
{
status = Serial_SwoInstallTxCallback(((serial_handle_t)&handle->lowLevelhandleBuffer[0]),
SerialManager_TxCallback, handle);
}
#endif
break;
#endif
#if (defined(SERIAL_PORT_TYPE_USBCDC_VIRTUAL) && (SERIAL_PORT_TYPE_USBCDC_VIRTUAL > 0U))
case kSerialPort_UsbCdcVirtual:
status = Serial_UsbCdcVirtualInit(((serial_handle_t)&handle->lowLevelhandleBuffer[0]), config->portConfig);
#if (defined(SERIAL_MANAGER_NON_BLOCKING_MODE) && (SERIAL_MANAGER_NON_BLOCKING_MODE > 0U))
if (kStatus_SerialManager_Success == status)
{
status = Serial_UsbCdcVirtualInstallTxCallback(((serial_handle_t)&handle->lowLevelhandleBuffer[0]),
SerialManager_TxCallback, handle);
if (kStatus_SerialManager_Success == status)
{
status = Serial_UsbCdcVirtualInstallRxCallback(((serial_handle_t)&handle->lowLevelhandleBuffer[0]),
SerialManager_RxCallback, handle);
}
}
#endif
break;
#endif
default:
/*MISRA rule 16.4*/
break;
}
return status;
}