/****************************************************************************** * @fn HalUARTWriteISR * * @brief Write a buffer to the UART. * * @param buf - pointer to the buffer that will be written, not freed * len - length of * * @return length of the buffer that was sent *****************************************************************************/ static uint16 HalUARTWriteISR(uint8 *buf, uint16 len) { uint16 cnt; // Enforce all or none. if (HAL_UART_ISR_TX_AVAIL() < len) { return 0; } for (cnt = 0; cnt < len; cnt++) { isrCfg.txBuf[isrCfg.txTail] = *buf++; isrCfg.txMT = 0; if (isrCfg.txTail >= HAL_UART_ISR_TX_MAX-1) { isrCfg.txTail = 0; } else { isrCfg.txTail++; } // Keep re-enabling ISR as it might be keeping up with this loop due to other ints. IEN2 |= UTXxIE; } return cnt; }
/****************************************************************************** * @fn HalUARTWriteISR * * @brief Write a buffer to the UART. * * @param buf - pointer to the buffer that will be written, not freed * len - length of * * @return length of the buffer that was sent *****************************************************************************/ uint16 HalUARTWriteISR(uint8 *buf, uint16 len) { uint16 cnt; // Enforce all or none. if (HAL_UART_ISR_TX_AVAIL() < len) { return 0; } for (cnt = 0; cnt < len; cnt++) { isrCfg.txBuf[isrCfg.txTail] = *buf++; isrCfg.txMT = 0; if (isrCfg.txTail >= HAL_UART_ISR_TX_MAX-1) { isrCfg.txTail = 0; } else { isrCfg.txTail++; } UTXxIF = 1; } return cnt; }