+ return (((status_t)kStatus_Success == status) ? (int)size : -1);\r
+}\r
+\r
+int DbgConsole_SendDataReliable(uint8_t *ch, size_t size)\r
+{\r
+#if defined(DEBUG_CONSOLE_TRANSFER_NON_BLOCKING)\r
+#if (defined(DEBUG_CONSOLE_TX_RELIABLE_ENABLE) && (DEBUG_CONSOLE_TX_RELIABLE_ENABLE > 0U))\r
+ status_t status = kStatus_SerialManager_Error;\r
+ uint32_t sendDataLength;\r
+ uint32_t totalLength = size;\r
+ int sentLength;\r
+#endif /* DEBUG_CONSOLE_TX_RELIABLE_ENABLE */\r
+#else\r
+ status_t status = kStatus_SerialManager_Error;\r
+#endif /* DEBUG_CONSOLE_TRANSFER_NON_BLOCKING */\r
+\r
+ assert(NULL != ch);\r
+ assert(0 != size);\r
+\r
+ if (NULL == g_serialHandle)\r
+ {\r
+ return 0;\r
+ }\r
+\r
+#if defined(DEBUG_CONSOLE_TRANSFER_NON_BLOCKING)\r
+\r
+#if (defined(DEBUG_CONSOLE_TX_RELIABLE_ENABLE) && (DEBUG_CONSOLE_TX_RELIABLE_ENABLE > 0U))\r
+ do\r
+ {\r
+ uint32_t regPrimask = DisableGlobalIRQ();\r
+ if (s_debugConsoleState.writeRingBuffer.ringHead != s_debugConsoleState.writeRingBuffer.ringTail)\r
+ {\r
+ sendDataLength =\r
+ (s_debugConsoleState.writeRingBuffer.ringHead + s_debugConsoleState.writeRingBuffer.ringBufferSize -\r
+ s_debugConsoleState.writeRingBuffer.ringTail) %\r
+ s_debugConsoleState.writeRingBuffer.ringBufferSize;\r
+ }\r
+ else\r
+ {\r
+ sendDataLength = 0U;\r
+ }\r
+ sendDataLength = s_debugConsoleState.writeRingBuffer.ringBufferSize - sendDataLength - 1U;\r
+\r
+ if (sendDataLength > 0U)\r
+ {\r
+ if (sendDataLength > totalLength)\r
+ {\r
+ sendDataLength = totalLength;\r
+ }\r
+\r
+ sentLength = DbgConsole_SendData(&ch[size - totalLength], sendDataLength);\r
+ if (sentLength > 0)\r
+ {\r
+ totalLength = totalLength - (uint32_t)sentLength;\r
+ }\r
+ }\r
+ EnableGlobalIRQ(regPrimask);\r
+\r
+ if (totalLength != 0U)\r
+ {\r
+ status = DbgConsole_Flush();\r
+ if ((status_t)kStatus_Success != status)\r
+ {\r
+ break;\r
+ }\r
+ }\r
+ } while (totalLength != 0U);\r
+ return (status_t)(uint32_t)((uint32_t)size - totalLength);\r
+#else\r
+ return DbgConsole_SendData(ch, size);\r
+#endif /* DEBUG_CONSOLE_TX_RELIABLE_ENABLE */\r
+\r
+#else\r
+ status = (status_t)SerialManager_WriteBlocking(\r
+ ((serial_write_handle_t)&s_debugConsoleState.serialWriteHandleBuffer[0]), ch, size);\r
+ return (((status_t)kStatus_Success == status) ? (int)size : -1);\r
+#endif /* DEBUG_CONSOLE_TRANSFER_NON_BLOCKING */\r