Lines Matching refs:handle
49 typedef void (*uart_isr_t)(UART_Type *base, uart_handle_t *handle);
69 static size_t UART_TransferGetRxRingBufferLength(uart_handle_t *handle);
78 static bool UART_TransferIsRxRingBufferFull(uart_handle_t *handle);
174 static size_t UART_TransferGetRxRingBufferLength(uart_handle_t *handle) in UART_TransferGetRxRingBufferLength() argument
176 assert(handle); in UART_TransferGetRxRingBufferLength()
180 if (handle->rxRingBufferTail > handle->rxRingBufferHead) in UART_TransferGetRxRingBufferLength()
182 … size = (size_t)(handle->rxRingBufferHead + handle->rxRingBufferSize - handle->rxRingBufferTail); in UART_TransferGetRxRingBufferLength()
186 size = (size_t)(handle->rxRingBufferHead - handle->rxRingBufferTail); in UART_TransferGetRxRingBufferLength()
192 static bool UART_TransferIsRxRingBufferFull(uart_handle_t *handle) in UART_TransferIsRxRingBufferFull() argument
194 assert(handle); in UART_TransferIsRxRingBufferFull()
198 if (UART_TransferGetRxRingBufferLength(handle) == (handle->rxRingBufferSize - 1U)) in UART_TransferIsRxRingBufferFull()
627 uart_handle_t *handle, in UART_TransferCreateHandle() argument
631 assert(handle); in UART_TransferCreateHandle()
636 memset(handle, 0, sizeof(*handle)); in UART_TransferCreateHandle()
639 handle->rxState = kUART_RxIdle; in UART_TransferCreateHandle()
640 handle->txState = kUART_TxIdle; in UART_TransferCreateHandle()
643 handle->callback = callback; in UART_TransferCreateHandle()
644 handle->userData = userData; in UART_TransferCreateHandle()
662 s_uartHandle[instance] = handle; in UART_TransferCreateHandle()
669 void UART_TransferStartRingBuffer(UART_Type *base, uart_handle_t *handle, uint8_t *ringBuffer, size… in UART_TransferStartRingBuffer() argument
671 assert(handle); in UART_TransferStartRingBuffer()
675 handle->rxRingBuffer = ringBuffer; in UART_TransferStartRingBuffer()
676 handle->rxRingBufferSize = ringBufferSize; in UART_TransferStartRingBuffer()
677 handle->rxRingBufferHead = 0U; in UART_TransferStartRingBuffer()
678 handle->rxRingBufferTail = 0U; in UART_TransferStartRingBuffer()
690 void UART_TransferStopRingBuffer(UART_Type *base, uart_handle_t *handle) in UART_TransferStopRingBuffer() argument
692 assert(handle); in UART_TransferStopRingBuffer()
694 if (handle->rxState == kUART_RxIdle) in UART_TransferStopRingBuffer()
705 handle->rxRingBuffer = NULL; in UART_TransferStopRingBuffer()
706 handle->rxRingBufferSize = 0U; in UART_TransferStopRingBuffer()
707 handle->rxRingBufferHead = 0U; in UART_TransferStopRingBuffer()
708 handle->rxRingBufferTail = 0U; in UART_TransferStopRingBuffer()
711 status_t UART_TransferSendNonBlocking(UART_Type *base, uart_handle_t *handle, uart_transfer_t *xfer) in UART_TransferSendNonBlocking() argument
713 assert(handle); in UART_TransferSendNonBlocking()
721 if (kUART_TxBusy == handle->txState) in UART_TransferSendNonBlocking()
727 handle->txData = xfer->data; in UART_TransferSendNonBlocking()
728 handle->txDataSize = xfer->dataSize; in UART_TransferSendNonBlocking()
729 handle->txDataSizeAll = xfer->dataSize; in UART_TransferSendNonBlocking()
730 handle->txState = kUART_TxBusy; in UART_TransferSendNonBlocking()
741 void UART_TransferAbortSend(UART_Type *base, uart_handle_t *handle) in UART_TransferAbortSend() argument
743 assert(handle); in UART_TransferAbortSend()
747 handle->txDataSize = 0; in UART_TransferAbortSend()
748 handle->txState = kUART_TxIdle; in UART_TransferAbortSend()
751 status_t UART_TransferGetSendCount(UART_Type *base, uart_handle_t *handle, uint32_t *count) in UART_TransferGetSendCount() argument
753 assert(handle); in UART_TransferGetSendCount()
756 if (kUART_TxIdle == handle->txState) in UART_TransferGetSendCount()
761 *count = handle->txDataSizeAll - handle->txDataSize; in UART_TransferGetSendCount()
767 uart_handle_t *handle, in UART_TransferReceiveNonBlocking() argument
771 assert(handle); in UART_TransferReceiveNonBlocking()
795 if (kUART_RxBusy == handle->rxState) in UART_TransferReceiveNonBlocking()
805 if (handle->rxRingBuffer) in UART_TransferReceiveNonBlocking()
811 bytesToCopy = UART_TransferGetRxRingBufferLength(handle); in UART_TransferReceiveNonBlocking()
822 … xfer->data[bytesCurrentReceived++] = handle->rxRingBuffer[handle->rxRingBufferTail]; in UART_TransferReceiveNonBlocking()
825 if (handle->rxRingBufferTail + 1U == handle->rxRingBufferSize) in UART_TransferReceiveNonBlocking()
827 handle->rxRingBufferTail = 0U; in UART_TransferReceiveNonBlocking()
831 handle->rxRingBufferTail++; in UART_TransferReceiveNonBlocking()
840 handle->rxData = xfer->data + bytesCurrentReceived; in UART_TransferReceiveNonBlocking()
841 handle->rxDataSize = bytesToReceive; in UART_TransferReceiveNonBlocking()
842 handle->rxDataSizeAll = bytesToReceive; in UART_TransferReceiveNonBlocking()
843 handle->rxState = kUART_RxBusy; in UART_TransferReceiveNonBlocking()
852 if (handle->callback) in UART_TransferReceiveNonBlocking()
854 handle->callback(base, handle, kStatus_UART_RxIdle, handle->userData); in UART_TransferReceiveNonBlocking()
861 handle->rxData = xfer->data + bytesCurrentReceived; in UART_TransferReceiveNonBlocking()
862 handle->rxDataSize = bytesToReceive; in UART_TransferReceiveNonBlocking()
863 handle->rxDataSizeAll = bytesToReceive; in UART_TransferReceiveNonBlocking()
864 handle->rxState = kUART_RxBusy; in UART_TransferReceiveNonBlocking()
888 void UART_TransferAbortReceive(UART_Type *base, uart_handle_t *handle) in UART_TransferAbortReceive() argument
890 assert(handle); in UART_TransferAbortReceive()
893 if (!handle->rxRingBuffer) in UART_TransferAbortReceive()
905 handle->rxDataSize = 0U; in UART_TransferAbortReceive()
906 handle->rxState = kUART_RxIdle; in UART_TransferAbortReceive()
909 status_t UART_TransferGetReceiveCount(UART_Type *base, uart_handle_t *handle, uint32_t *count) in UART_TransferGetReceiveCount() argument
911 assert(handle); in UART_TransferGetReceiveCount()
914 if (kUART_RxIdle == handle->rxState) in UART_TransferGetReceiveCount()
924 *count = handle->rxDataSizeAll - handle->rxDataSize; in UART_TransferGetReceiveCount()
929 void UART_TransferHandleIRQ(UART_Type *base, uart_handle_t *handle) in UART_TransferHandleIRQ() argument
931 assert(handle); in UART_TransferHandleIRQ()
949 handle->rxState = kUART_RxFramingError; in UART_TransferHandleIRQ()
950 handle->rxDataSize = 0U; in UART_TransferHandleIRQ()
952 if (handle->callback) in UART_TransferHandleIRQ()
954 handle->callback(base, handle, kStatus_UART_FramingError, handle->userData); in UART_TransferHandleIRQ()
971 handle->rxState = kUART_RxParityError; in UART_TransferHandleIRQ()
972 handle->rxDataSize = 0U; in UART_TransferHandleIRQ()
974 if (handle->callback) in UART_TransferHandleIRQ()
976 handle->callback(base, handle, kStatus_UART_ParityError, handle->userData); in UART_TransferHandleIRQ()
993 if (handle->callback) in UART_TransferHandleIRQ()
995 handle->callback(base, handle, kStatus_UART_RxHardwareOverrun, handle->userData); in UART_TransferHandleIRQ()
1010 while ((count) && (handle->rxDataSize)) in UART_TransferHandleIRQ()
1013 tempCount = MIN(handle->rxDataSize, count); in UART_TransferHandleIRQ()
1019 UART_ReadNonBlocking(base, handle->rxData, tempCount); in UART_TransferHandleIRQ()
1020 handle->rxData += tempCount; in UART_TransferHandleIRQ()
1021 handle->rxDataSize -= tempCount; in UART_TransferHandleIRQ()
1025 if (!handle->rxDataSize) in UART_TransferHandleIRQ()
1027 handle->rxState = kUART_RxIdle; in UART_TransferHandleIRQ()
1029 if (handle->callback) in UART_TransferHandleIRQ()
1031 handle->callback(base, handle, kStatus_UART_RxIdle, handle->userData); in UART_TransferHandleIRQ()
1037 if (handle->rxRingBuffer) in UART_TransferHandleIRQ()
1042 if (UART_TransferIsRxRingBufferFull(handle)) in UART_TransferHandleIRQ()
1044 if (handle->callback) in UART_TransferHandleIRQ()
1046 … handle->callback(base, handle, kStatus_UART_RxRingBufferOverrun, handle->userData); in UART_TransferHandleIRQ()
1051 if (UART_TransferIsRxRingBufferFull(handle)) in UART_TransferHandleIRQ()
1054 if (handle->rxRingBufferTail + 1U == handle->rxRingBufferSize) in UART_TransferHandleIRQ()
1056 handle->rxRingBufferTail = 0U; in UART_TransferHandleIRQ()
1060 handle->rxRingBufferTail++; in UART_TransferHandleIRQ()
1065 handle->rxRingBuffer[handle->rxRingBufferHead] = base->D; in UART_TransferHandleIRQ()
1068 if (handle->rxRingBufferHead + 1U == handle->rxRingBufferSize) in UART_TransferHandleIRQ()
1070 handle->rxRingBufferHead = 0U; in UART_TransferHandleIRQ()
1074 handle->rxRingBufferHead++; in UART_TransferHandleIRQ()
1079 else if (!handle->rxDataSize) in UART_TransferHandleIRQ()
1097 if (((handle->rxState == kUART_RxFramingError) || (handle->rxState == kUART_RxParityError)) && in UART_TransferHandleIRQ()
1098 (!handle->rxRingBuffer)) in UART_TransferHandleIRQ()
1120 while ((count) && (handle->txDataSize)) in UART_TransferHandleIRQ()
1123 tempCount = MIN(handle->txDataSize, count); in UART_TransferHandleIRQ()
1129 UART_WriteNonBlocking(base, handle->txData, tempCount); in UART_TransferHandleIRQ()
1130 handle->txData += tempCount; in UART_TransferHandleIRQ()
1131 handle->txDataSize -= tempCount; in UART_TransferHandleIRQ()
1135 if (!handle->txDataSize) in UART_TransferHandleIRQ()
1137 handle->txState = kUART_TxIdle; in UART_TransferHandleIRQ()
1143 if (handle->callback) in UART_TransferHandleIRQ()
1145 handle->callback(base, handle, kStatus_UART_TxIdle, handle->userData); in UART_TransferHandleIRQ()
1152 void UART_TransferHandleErrorIRQ(UART_Type *base, uart_handle_t *handle) in UART_TransferHandleErrorIRQ() argument