From 3c317116391eb10afc8697c1edba89dc85683d30 Mon Sep 17 00:00:00 2001
From: Edward Longman <el7g15@soton.ac.uk>
Date: Fri, 5 Jul 2019 19:44:27 +0100
Subject: [PATCH] Fix the backchannel EUSCI number

---
 source/lib/uart_drv/uart_drv.c | 68 ++++++++++++++++------------------
 1 file changed, 32 insertions(+), 36 deletions(-)

diff --git a/source/lib/uart_drv/uart_drv.c b/source/lib/uart_drv/uart_drv.c
index ee2315e..e2dbf73 100644
--- a/source/lib/uart_drv/uart_drv.c
+++ b/source/lib/uart_drv/uart_drv.c
@@ -33,6 +33,7 @@
 #include "uart_drv.h"
 #include  "msp430.h"
 #include "circ_buf.h"
+#include "../radio_drv/hal_types.h"
 
 /* defines the size of the circular buffers */
 #define TX_UART_BUFFER_SIZE 80
@@ -460,40 +461,40 @@ void hal_uart_init(void)
 	rx_end_of_str = NO_END_OF_LINE_DETECTED;
 	rx_str_length = 0;
 
-    //Due to 3 peripherals per port there are more select bits.
-    UART_PORT_SEL0 |= UART_PIN_RXD + UART_PIN_TXD;
-    UART_PORT_SEL1 &= ~(UART_PIN_RXD + UART_PIN_TXD);
+  //Due to 3 peripherals per port there are more select bits.
+  UART_PORT_SEL1 |= UART_PIN_RXD + UART_PIN_TXD;
+  UART_PORT_SEL0 &= ~(UART_PIN_RXD + UART_PIN_TXD);
 	UART_PORT_DIR |= UART_PIN_TXD;
 	UART_PORT_DIR &= ~UART_PIN_RXD;
 
 	/* 9600 bits per second on 32768 ACLK */
     /*
-	UCA1CTL1 |= UCSWRST;                        // Reset State
-	UCA1CTL1 |= UCSSEL_1;                       // ACLK
-	UCA1CTL0 = UCMODE_0;
-	UCA1CTL0 &= ~UC7BIT;                        // 8bit char
+	UCA0CTL1 |= UCSWRST;                        // Reset State
+	UCA0CTL1 |= UCSSEL_1;                       // ACLK
+	UCA0CTL0 = UCMODE_0;
+	UCA0CTL0 &= ~UC7BIT;                        // 8bit char
 
-	UCA1BR0 = 3;                                // 9600 bits per second
-	UCA1BR1 = 0;
+	UCA0BR0 = 3;                                // 9600 bits per second
+	UCA0BR1 = 0;
 
-	UCA1MCTL = UCBRS1 + UCBRS0;                 // Modulation UCBRSx = 3
-	UCA1CTL1 &= ~UCSWRST;
+	UCA0MCTL = UCBRS1 + UCBRS0;                 // Modulation UCBRSx = 3
+	UCA0CTL1 &= ~UCSWRST;
     */
 
 	/* 115200 bits per second on 16MHz SMCLK */
-	UCA1CTL1 |= UCSWRST;                        // Reset State
-	UCA1CTL1 |= UCSSEL_2;                       // SMCLK
-	UCA1CTL0 = UCMODE_0;
-	UCA1CTL0 &= ~UC7BIT;                        // 8bit char
+	UCA0CTL1 |= UCSWRST;                        // Reset State
+	UCA0CTL1 |= UCSSEL_2;                       // SMCLK
+	UCA0CTL0 = UCMODE_0;
+	UCA0CTL0 &= ~UC7BIT;                        // 8bit char
 
-	UCA1BR0 = 138;                              // 115200 bits per second
-	UCA1BR1 = 0;
+	UCA0BR0 = 138;                              // 115200 bits per second
+	UCA0BR1 = 0;
 
 	//Slight different modulation options in FR5994
 	UCA0MCTLW = UCBRS2 + UCBRS1 + UCBRS0;
-	UCA1CTL1 &= ~UCSWRST;
+	UCA0CTL1 &= ~UCSWRST;
 
-	UCA1IE |= UCRXIE;                           // Enable USCI_A0 RX interrupt
+	UCA0IE |= UCRXIE;                           // Enable USCI_A0 RX interrupt
 
 	__bis_SR_register(GIE);                     // Enable Interrupts
 }
@@ -508,9 +509,9 @@ void hal_uart_init(void)
  **************************************************************************/
 void hal_uart_deinit(void)
 {
-	UCA1IE &= ~UCRXIE;
-	UCA1IE &= ~UCTXIE;
-	UCA1CTL1 = UCSWRST;                          //Reset State
+	UCA0IE &= ~UCRXIE;
+	UCA0IE &= ~UCTXIE;
+	UCA0CTL1 = UCSWRST;                          //Reset State
 	//Due to 3 peripherals per port there are more select bits.
 	UART_PORT_SEL0 &= ~( UART_PIN_RXD + UART_PIN_TXD);
 	UART_PORT_SEL1 &= ~( UART_PIN_RXD + UART_PIN_TXD);
@@ -532,29 +533,23 @@ void hal_uart_start_tx(void)
 	if(isr_state == TX_ISR_OFF) {
 		ENTER_CRITICAL_SECTION(isr_flag);
 		isr_state = TX_ISR_ON;
-		UCA1IE |= UCTXIE;
-		UCA1TXBUF = circ_buf_get_data(&uart_tx_buf);
+		UCA0IE |= UCTXIE;
+		UCA0TXBUF = circ_buf_get_data(&uart_tx_buf);
 		LEAVE_CRITICAL_SECTION(isr_flag);
 	}
 }
 
 // Echo back RXed character, confirm TX buffer is ready first
-#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
-#pragma vector=USCI_A1_VECTOR
-__interrupt void USCI_A1_ISR(void)
-#elif defined(__GNUC__)
-void __attribute__ ((interrupt(USCI_A1_VECTOR))) USCI_A1_ISR (void)
-#else
-#error Compiler not supported!
-#endif
+HAL_ISR_FUNC_DECLARATION(eUSCI_isr, EUSCI_A0)
 {
 	char tmp_uart_data;
-	switch(__even_in_range(UCA1IV,4))
+	P1OUT ^= BIT0;
+	switch(__even_in_range(UCA0IV,4))
 	{
 	case UCIV__NONE:
 		break;                             // Vector 0 - no interrupt
 	case UCIV__UCRXIFG:                                   // Vector 2 - RXIFG
-		tmp_uart_data = UCA1RXBUF;
+		tmp_uart_data = UCA0RXBUF;
 
 		circ_buf_put_data(&uart_rx_buf, tmp_uart_data);
 
@@ -571,11 +566,12 @@ void __attribute__ ((interrupt(USCI_A1_VECTOR))) USCI_A1_ISR (void)
 	case UCIV__UCTXIFG:
 		// check if there is more data to send
 		if(circ_buf_remainder(&uart_tx_buf) < uart_tx_buf.size_of_buffer) {
-			UCA1TXBUF = circ_buf_get_data(&uart_tx_buf);
+			UCA0TXBUF = circ_buf_get_data(&uart_tx_buf);
 		} else {
 			isr_state = TX_ISR_OFF;
-			UCA1IE &= ~UCTXIE;                        // Disable USCI_A0 TX interrupt
+			UCA0IE &= ~UCTXIE;                        // Disable USCI_A0 TX interrupt
 		}
+		P1OUT ^= BIT0;
 		break;                             // Vector 4 - TXIFG
 	default:
 		break;
-- 
GitLab