/*
 *  ======== EUSCI_A0_graceInit ========
 *  Initialize Config for the MSP430 eUSCI_A0
 */
void EUSCI_A0_graceInit(void)
{

    /* USER CODE START (section: EUSCI_A0_graceInit_prologue) */
    /* User initialization code */
    /* USER CODE END (section: EUSCI_A0_graceInit_prologue) */

    /* initialize UART for 115200 baud (based on a 8000000 Hz clock) */
    if (STATUS_FAIL == EUSCI_A_UART_initAdvance(EUSCI_A0_BASE, EUSCI_A_UART_CLOCKSOURCE_SMCLK, 4, 5, 85,
                        EUSCI_A_UART_NO_PARITY, EUSCI_A_UART_LSB_FIRST, EUSCI_A_UART_ONE_STOP_BIT, EUSCI_A_UART_MODE, 1)) {
        return;
    }

    /* enable eUSCI UART */
    EUSCI_A_UART_enable(EUSCI_A0_BASE);

    /* set deglitch time */
    EUSCI_A_UART_selectDeglitchTime(EUSCI_A0_BASE, EUSCI_A_UART_DEGLITCH_TIME_200ns);

    /* disable eUSCI UART transmit interrupt */
    EUSCI_A_UART_disableInterrupt(EUSCI_A0_BASE, EUSCI_A_UART_TRANSMIT_INTERRUPT);

    /* disable eUSCI UART receive interrupt */
    EUSCI_A_UART_disableInterrupt(EUSCI_A0_BASE, EUSCI_A_UART_RECEIVE_INTERRUPT);

    /* USER CODE START (section: EUSCI_A0_graceInit_epilogue) */
    /* User code */
    /* USER CODE END (section: EUSCI_A0_graceInit_epilogue) */

}
void uart_a0_tx_rdy_handler(void) {
	char c;
	if (ring_buffer_get(_uart_a0_tx_ringbuffer_id, &c) == 0) {
		UCA0TXBUF = c;
		EUSCI_A_UART_enableInterrupt(EUSCI_A0_BASE,
		EUSCI_A_UART_TRANSMIT_INTERRUPT);
	} else { // ringbuffer empty, nothing to send anymore...
		EUSCI_A_UART_disableInterrupt(EUSCI_A0_BASE,
		EUSCI_A_UART_TRANSMIT_INTERRUPT);
		UCA0IFG |= EUSCI_A_UART_TRANSMIT_INTERRUPT_FLAG;
	}
}