diff --git a/source/lib/hal_mcu/hal_fr5_timer.c b/source/lib/hal_mcu/hal_fr5_timer.c
index 652f7bea1a1d4e02af71203efa83352f82cf5f68..bab4722ab7068da7beb7e8c970231e757eb21faf 100644
--- a/source/lib/hal_mcu/hal_fr5_timer.c
+++ b/source/lib/hal_mcu/hal_fr5_timer.c
@@ -1,7 +1,7 @@
 /******************************************************************************
- *  Filename: hal_f5_timerB0.c
+ *  Filename: hal_fr5_timer.c
  *
- *  Description: Timer abstration layer api
+ *  Description: Timer abstration layer api for FR5994
  *
  *  Copyright (C) 2013 Texas Instruments Incorporated - http://www.ti.com/
  *
@@ -33,6 +33,8 @@
  *  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  *  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
+ *  Modified by Edward Longman for the MSP430FR5994
+ *
  *******************************************************************************/
 
 #if defined (__MSP430FR5994__)
@@ -62,10 +64,10 @@ void hal_timer_init(unsigned int master_count) {
 
   // Start Timer 0 using the ACLK as a source (this enables the use of
   // various low power modes). Timer 0 will be used to keep RF burst time
-  TBCCR0  = master_count - 1;              // Seting for MASTER SCHEDULE
-  TBCCR1  = 0;                             // will be used for burst alignnment
-  TBCCR2  = 0;                             // will be used for expiration counter
-  TBCTL   = TBSSEL_1 + MC_1 + TBCLR + ID_0;// ACLK, Up to CCR0, clear TB0R, div/1
+  TACCR0  = master_count - 1;              // Seting for MASTER SCHEDULE
+  TACCR1  = 0;                             // will be used for burst alignnment
+  TACCR2  = 0;                             // will be used for expiration counter
+  TACTL   = TASSEL_2 + MC_1 + TACLR + ID_0;// SMCLK, Up to CCR0, clear TB0R, div/1
 
   return;
 }
@@ -88,7 +90,7 @@ void hal_timer_init(unsigned int master_count) {
  */
 void hal_timer_adjust(unsigned int adjust) {
 
-  TB0R = adjust;
+  TA0R = adjust;
 
   return;
 }
@@ -110,7 +112,7 @@ void hal_timer_adjust(unsigned int adjust) {
  */
 unsigned int hal_timer_get(void) {
 
-	return(TB0R);
+	return(TA0R);
 }
 
 
@@ -138,12 +140,12 @@ unsigned int hal_timer_get_time(unsigned long *sec, unsigned long *ms) {
 	/* grap the time counter values from the global value */
 	*sec = time_counter;
 
-	/* grap the time counter value (1/32768) second resolution */
-	ms_uint = TB0R;
+	/* grap the time counter value (1/250000) second resolution */
+	ms_uint = TA0R;
 
 	/* convert information to milliseconds */
 	ms_long = (unsigned long)ms_uint * 1000;
-	ms_long = ms_long>>15;
+	ms_long = ms_long>>18;
 	*ms = ms_long;
 
 	/* return count value */
@@ -169,7 +171,7 @@ unsigned int hal_timer_get_time(unsigned long *sec, unsigned long *ms) {
 void hal_timer_stop(void) {
 
   /* clear timer configuration register, stopping the timer */
-  TBCTL = 0;
+  TACTL = 0;
 
   return;
 }
@@ -192,13 +194,13 @@ void hal_timer_stop(void) {
 void hal_timer_expire(void) {
 
   /* enable timer interrupt */
-  TBCCTL1 = CCIE;
+  TACCTL1 = CCIE;
 
   /* enter low power mode and wait */
   _BIS_SR(LPM0_bits + GIE);
 
   /* disable interrupt again */
-  TBCCTL1 = 0;
+  TACCTL1 = 0;
 
   return;
 }
@@ -219,76 +221,55 @@ void hal_timer_expire(void) {
  *
  */
 unsigned int hal_timer_wait(unsigned int time) {
-  unsigned int wait_count, TBR_init;
+  unsigned int wait_count, TAR_init;
 
-  TBR_init = TB0R;   // store the current value of the timer register
-  wait_count = TBR_init + time;
+  TAR_init = TA0R;   // store the current value of the timer register
+  wait_count = TAR_init + time;
 
-  // if the requested wait time exceeds the TBCCR0 (max value) then make a loop
-  while(wait_count > TBCCR0) {
+  // if the requested wait time exceeds the TACCR0 (max value) then make a loop
+  while(wait_count > TACCR0) {
 
 	  // configure the timeout for 1 less than the master clock
-	  TBCCR2  = TBCCR0-1;
+	  TACCR2  = TACCR0-1;
 
 	  // calculate the remaining wait time remaining
-	  wait_count = wait_count - (TBCCR2 - TBR_init);
+	  wait_count = wait_count - (TACCR2 - TAR_init);
 
 	  // do not count the initial timer values more that once, zero it out
 	  timer_event = 0;
-	  TBR_init = 0;
+	  TAR_init = 0;
 
 	  // enable interupts and wait for timer (or CC1x GDO ISR)
-	  TBCCTL2 = CCIE;                       // interrupt enabled
+	  TACCTL2 = CCIE;                       // interrupt enabled
 	  _BIS_SR(LPM0_bits + GIE);             // Enter LPM0
 
       // check to see if the timer woke us up or not
 	  if (timer_event == 0)
 		  // it did not, return imidiately and note time actual delay
-		  return (time - (wait_count - TB0R));
+		  return (time - (wait_count - TA0R));
   }
 
   // in the case of loop, this executes the remaining wait, in the case of no
   // loop this is the only wait that gets executed
 
   /* define maximum timeout by using timer counter 2 */
-  TBCCR2  = wait_count;
+  TACCR2  = wait_count;
 
   /* enable interrupt */
-  TBCCTL2 = CCIE;
+  TACCTL2 = CCIE;
 
   /* enter low power mode and wait for event (timer or radio) */
   _BIS_SR(LPM0_bits + GIE);
 
   /* disable interupts on CCR2 */
-  TBCCTL2 = 0;
+  TACCTL2 = 0;
 
   /* return the time spend in sleep */
-  return (time - (wait_count-TB0R));
-}
-
-/******************************************************************************
- * @fn         TIMERB0_ISR
- *
- * @brief      Timer interrupt service routine
- *
- *
- * input parameters
- *
- * @param       void
- *
- * output parameters
- *
- * @return      void
- *
- */
-// Timer B0 interrupt service routine
-#pragma vector=TIMERB0_VECTOR
-__interrupt void TIMERB0_ISR (void) {
-   //_BIC_SR_IRQ(LPM3_bits);                       // Clear LPM3 bits from 0(SR)
+  return (time - (wait_count-TA0R));
 }
 
 /******************************************************************************
- * @fn         TIMERB0_ISR
+ * @fn         TIMERA2_ISR
  *
  * @brief      Timer interrupt service routine
  *
@@ -302,31 +283,32 @@ __interrupt void TIMERB0_ISR (void) {
  * @return      void
  *
  */
-#pragma vector=TIMERB1_VECTOR
-__interrupt void TIMERB1_ISR(void) {
+ void __attribute__((interrupt(TIMERA1_VECTOR))) TIMERA_ISR(void){
+//#pragma vector=TIMERB1_VECTOR
+//__interrupt void TIMERB1_ISR(void) {
 
 	/* Any access, read or write, of the TBIV register automatically
 	 * resets the highest "pending" interrupt flag. */
 
-	switch( __even_in_range(TBIV,14) ) {
-    case  TB0IV_NONE: break;               // No interrupt
-    case  TB0IV_TBCCR1:                    // Used to wake up radio from sleep
-      timer_event = TB0IV_TBCCR1;
+	switch( __even_in_range(TAIV,14) ) {
+    case  TA0IV_NONE: break;               // No interrupt
+    case  TA0IV_TBCCR1:                    // Used to wake up radio from sleep
+      timer_event = TA0IV_TACCR1;
       _BIC_SR_IRQ(LPM3_bits);              // Clear LPM3 bits from 0(SR)
       break;
-    case  TB0IV_TBCCR2:                    // Use as secondary timer function
-       timer_event = TB0IV_TBCCR2;
+    case  TA0IV_TACCR2:                    // Use as secondary timer function
+       timer_event = TA0IV_TACCR2;
       _BIC_SR_IRQ(LPM3_bits);              // Clear LPM3 bits from 0(SR)
       break;
-    case  TB0IV_TBCCR3:                    // CCR3 not used
+    case  TA0IV_TACCR3:                    // CCR3 not used
     	break;
-    case  TB0IV_TBCCR4:                    // CCR4 not used
+    case  TA0IV_TACCR4:                    // CCR4 not used
     	break;
-    case  TB0IV_TBCCR5:                    // CCR5 not used
+    case  TA0IV_TACCR5:                    // CCR5 not used
     	break;
-    case  TB0IV_TBCCR6:                    // CCR6 not used
+    case  TA0IV_TACCR6:                    // CCR6 not used
     	break;
-    case  TB0IV_TBIFG:                     // IFG not used
+    case  TA0IV_TAIFG:                     // IFG not used
     	break;
     default:
     	break;
diff --git a/source/lib/hal_mcu/hal_mcu.c b/source/lib/hal_mcu/hal_mcu.c
index ed39e749b90f8f28cb543ee48c333f196d9aafaa..48eb9bec42d3644f15aab73da65ef4afcfc0704f 100644
--- a/source/lib/hal_mcu/hal_mcu.c
+++ b/source/lib/hal_mcu/hal_mcu.c
@@ -33,10 +33,13 @@
  *  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  *  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
+ *  Modified by Edward Longman for the MSP430FR5994
+ *
  *******************************************************************************/
 
 #include "msp430.h"
-#include "../radio_drv/hal_spi_rf.h"
+// TODO Provide the define statements needed from this file.
+#include "hal_spi_rf.h"
 
 #if defined (__MSP430F5438A__)
 /*******************************************************************************
@@ -96,38 +99,37 @@ void msp_setup(void) {
  * @return none
  *******************************************************************************/
 void msp_setup(void) {
-
-	// Enable the interupts on port 2 to catch the user button (TRXEB)
-
-	BUTTON_DIR   &= ~BUTTON_PIN;       // input direction
-	BUTTON_OUT   |=  BUTTON_PIN;       // set high on port
-	BUTTON_PxIE  |=  BUTTON_PIN;       // enable interupt
-	BUTTON_PxIES |=  BUTTON_PIN;       // Hi/lo edge
-	BUTTON_REN   |=  BUTTON_PIN;       // Pull up resistor
-	BUTTON_PxIES &= ~BUTTON_PIN;       // IFG cleared
-
-	// Setup the XTAL ports to use the external 32K oscillilator
-	P5SEL |= BIT4+BIT5;                            // Select XT1
-	UCSCTL6 |= XCAP_3;                             // Internal load cap
-
-	// Loop until XT1,XT2 & DCO stabilizes
-	do  {
-		UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + DCOFFG);
-		// Clear XT2,XT1,DCO fault flags
-		SFRIFG1 &= ~OFIFG;                      // Clear fault flags
-	} while (SFRIFG1&OFIFG);                  // Test oscillator fault flag
-	UCSCTL6 &= ~(XT1DRIVE_3);                 // Xtal is now stable, reduce drive
-
-	// Set up clock system on MCU to fit your system
-	// Target specific implementation
-	UCSCTL0 = 0x00;                           // Set lowest possible DCOx, MODx
-	UCSCTL1 = DCORSEL_6;                      // Select suitable range
-	UCSCTL2 = 488;                            // DCO = 488 * 32768Hz ~= 16MHz
-	UCSCTL4 = SELA__XT1CLK | SELS__DCOCLK | SELM__DCOCLK ;
-
-	// Setup Watch dog timer for 1 second tick using 32Khz XTAL on MSP430F5438A
-	WDTCTL = WDT_ADLY_1000;                    // WDT 15.6ms, ACLK, interval timer
-	SFRIE1 |= WDTIE;                           // Enable WDT interrupt
+    // Enable the interupts on port 2 to catch the user button (TRXEB)
+
+    BUTTON_DIR   &= ~BUTTON_PIN;       // input direction
+    BUTTON_OUT   |=  BUTTON_PIN;       // set high on port
+    BUTTON_PxIE  |=  BUTTON_PIN;       // enable interupt
+    BUTTON_PxIES |=  BUTTON_PIN;       // Hi/lo edge
+    BUTTON_REN   |=  BUTTON_PIN;       // Pull up resistor
+    BUTTON_PxIES &= ~BUTTON_PIN;       // IFG cleared
+
+    // Setup the XTAL ports to use the external 32K oscillilator
+    P5SEL |= BIT4+BIT5;                            // Select XT1
+    UCSCTL6 |= XCAP_3;                             // Internal load cap
+
+    // Loop until XT1,XT2 & DCO stabilizes
+    do  {
+        UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + DCOFFG);
+        // Clear XT2,XT1,DCO fault flags
+        SFRIFG1 &= ~OFIFG;                      // Clear fault flags
+    } while (SFRIFG1&OFIFG);                  // Test oscillator fault flag
+    UCSCTL6 &= ~(XT1DRIVE_3);                 // Xtal is now stable, reduce drive
+
+    // Set up clock system on MCU to fit your system
+    // Target specific implementation
+    UCSCTL0 = 0x00;                           // Set lowest possible DCOx, MODx
+    UCSCTL1 = DCORSEL_6;                      // Select suitable range
+    UCSCTL2 = 488;                            // DCO = 488 * 32768Hz ~= 16MHz
+    UCSCTL4 = SELA__XT1CLK | SELS__DCOCLK | SELM__DCOCLK ;
+
+    // Setup Watch dog timer for 1 second tick using 32Khz XTAL on MSP430F5438A
+    WDTCTL = WDT_ADLY_1000;                    // WDT 15.6ms, ACLK, interval timer
+    SFRIE1 |= WDTIE;                           // Enable WDT interrupt
 }
 
 #endif
@@ -164,3 +166,41 @@ void msp_setup(void) {
 
 }
 #endif
+
+#if defined (__MSP430FR5994__)
+/*******************************************************************************
+ * @brief Setup all the peripherals of the MSP430, set the CPU speed to 16MHz,
+ *        enable the 250kHz and configure WDT for a 1 sec tick speed.
+ *
+ *        (MSP430FR5994 version)
+ *
+ * @param  none
+ *
+ * @return none
+ *******************************************************************************/
+void msp_setup(void) {
+
+	// Enable the interupts on port 2 to catch the user button (TRXEB)
+
+	BUTTON_DIR   &= ~BUTTON_PIN;       // input direction
+	BUTTON_OUT   |=  BUTTON_PIN;       // set high on port
+	BUTTON_PxIE  |=  BUTTON_PIN;       // enable interupt
+	BUTTON_PxIES |=  BUTTON_PIN;       // Hi/lo edge
+	BUTTON_REN   |=  BUTTON_PIN;       // Pull up resistor
+	BUTTON_PxIES &= ~BUTTON_PIN;       // IFG cleared
+
+	// Removed XTAL configuration and DCO Fault detection as not on exp430_fr5994
+
+	// Set up clock system on MCU to fit your system
+	// Target specific implementation
+	UCSCTL0 = 0x00;                           // Set lowest possible DCOx, MODx
+	UCSCTL1 = DCORSEL_6;                      // Select suitable range
+	UCSCTL2 = 488;                            // DCO = 488 * 32768Hz ~= 16MHz
+	UCSCTL4 = SELA_LFXTCLK | SELS__DCOCLK | SELM__DCOCLK ;
+
+	// Setup Watch dog timer for 0.5 second tick using 16MHz DCO on MSP430FR5994
+    // WDT 0.5s @ 16mHz, SMCLK, interval timer
+	WDTCTL = WDTPWD + WDTSEL_0 + WDTTMSEL + WDTIS_2;
+	SFRIE1 |= WDTIE;                           // Enable WDT interrupt
+}
+#endif
diff --git a/source/lib/radio_drv/hal_spi_rf.c b/source/lib/radio_drv/hal_spi_rf.c
index 197e375a92ac5504c93e59d554ede8eccdb07e4f..7254eeb766e874db5ee41c039e779ae8a3cffb06 100644
--- a/source/lib/radio_drv/hal_spi_rf.c
+++ b/source/lib/radio_drv/hal_spi_rf.c
@@ -130,7 +130,7 @@ void trxRfSpiInterfaceInit(uint8 prescalerValue)
 }
 #endif
 
-#if defined (__MSP430F5438A__) || defined (__MSP430F5529__)
+#if defined (__MSP430F5438A__) || defined (__MSP430F5529__) || defined (__MSP430FR5994__)
 
 /******************************************************************************
  * @fn          trxRfSpiInterfaceInit
diff --git a/source/lib/radio_drv/hal_spi_rf.h b/source/lib/radio_drv/hal_spi_rf.h
index c940b09821f7916042aa896685e373acc65fa007..098ab0b51a6662f0b150fc3103482e38d7650ef5 100644
--- a/source/lib/radio_drv/hal_spi_rf.h
+++ b/source/lib/radio_drv/hal_spi_rf.h
@@ -49,6 +49,9 @@
 #if defined (__MSP430F5529__)
   #include "hal_spi_rf_exp5529.h"
 #endif
+#if defined (__MSP430FR5994__)
+  #include "hal_spi_rf_exp430fr5994.h"
+#endif
 
 // CC Chip versions
 #define DEV_UNKNOWN       10
diff --git a/source/lib/radio_drv/hal_spi_rf_exp430fr5994.h b/source/lib/radio_drv/hal_spi_rf_exp430fr5994.h
index e270d86f77d07cc7fefee47e835b975ad8e69aea..44a4f7730604a48b0073fbbc9430f34bcbbac1a5 100644
--- a/source/lib/radio_drv/hal_spi_rf_exp430fr5994.h
+++ b/source/lib/radio_drv/hal_spi_rf_exp430fr5994.h
@@ -1,15 +1,11 @@
 /******************************************************************************
-*  Filename: hal_spi_rf_exp5529.h
+*  Filename: hal_spi_rf_exp430_fr5994.h
 *
-*  Description: Common header file for spi access to the different tranceiver
-*               radios. Supports CC1101/CC112X radios
-*				 
-*  Copyright (C) 2013 Texas Instruments Incorporated - http://www.ti.com/
+*  Description: Common header file for spi access to different traceiver radios
+*               Supports CC112X radio.
 *
+*  Copyright (C) 2013 Texas Instruments Incorporated - http://www.ti.com/
 *
-*  Redistribution and use in source and binary forms, with or without
-*  modification, are permitted provided that the following conditions
-*  are met:
 *
 *    Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
@@ -22,6 +18,10 @@
 *    its contributors may be used to endorse or promote products derived
 *    from this software without specific prior written permission.
 *
+*    Neither the name of Texas Instruments Incorporated nor the names of
+*    its contributors may be used to endorse or promote products derived
+*    from this software without specific prior written permission.
+*
 *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
@@ -34,6 +34,8 @@
 *  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 *  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
+*  Modified from hals_spi_rf_exp5594.h by Edward Longman
+*
 *******************************************************************************/
 
 #ifndef HAL_SPI_RF_TRXEB_H
@@ -53,84 +55,84 @@ extern "C" {
 /******************************************************************************
  * DEFINE THE TRANSCEIVER TO USE
  */
-#define USE_CC1101                     /* use the CC110x transciever commands */
-//#define USE_CC112X                     /* use the CC112x transciever commands */
-#define RF_XTAL 26000                  /* default is 26000 for CC1101 */
+//#define USE_CC1101                     /* use the CC110x transciever commands */
+#define USE_CC112X                     /* use the CC112x transciever commands */
+#define RF_XTAL 32000                  /* default is 26000 for CC1101 */
                                        /* 32000 for CC1120 */
 									   /* 40000 for CC1125 */
-//#define ENABLE_RANGE_EXTENDER          /* use external range extender */
+#define ENABLE_RANGE_EXTENDER          /* use external range extender */
 
 /******************************************************************************
  * CONSTANTS
  */
 
 /* Transceiver SPI signal */
-#define     RF_PORT_SEL            P3SEL
-#define     RF_PORT_OUT            P3OUT
-#define     RF_PORT_DIR            P3DIR
-#define     RF_PORT_IN             P3IN
+#define     RF_PORT_SEL            P5SEL
+#define     RF_PORT_OUT            P5OUT
+#define     RF_PORT_DIR            P5DIR
+#define     RF_PORT_IN             P5IN
 
 #define     RF_MOSI_PIN            BIT0
 #define     RF_MISO_PIN            BIT1
 #define     RF_SCLK_PIN            BIT2
 
 /* Transceiver chip select signal */
-#define     RF_CS_N_PORT_SEL       P2SEL
-#define     RF_CS_N_PORT_DIR       P2DIR
-#define     RF_CS_N_PORT_OUT       P2OUT
-#define     RF_CS_N_PIN            BIT2
+#define     RF_CS_N_PORT_SEL       P4SEL
+#define     RF_CS_N_PORT_DIR       P4DIR
+#define     RF_CS_N_PORT_OUT       P4OUT
+#define     RF_CS_N_PIN            BIT4
 
 /* Transciever optional reset signal */
-#define     RF_RESET_N_PORT_SEL       P2SEL
-#define     RF_RESET_N_PORT_DIR       P2DIR
-#define     RF_RESET_N_PORT_OUT       P2OUT
-#define     RF_RESET_N_PIN            BIT6
+#define     RF_RESET_N_PORT_SEL       P8SEL
+#define     RF_RESET_N_PORT_DIR       P8DIR
+#define     RF_RESET_N_PORT_OUT       P8OUT
+#define     RF_RESET_N_PIN            BIT3
 
 /* CC1190 Control signals */
-#define    RF_LNA_EN_PxOUT         P1OUT
-#define    RF_LNA_EN_PxDIR         P1DIR
-#define    RF_LNA_EN_PIN           BIT6
+#define    RF_LNA_EN_PxOUT         P6OUT
+#define    RF_LNA_EN_PxDIR         P6DIR
+#define    RF_LNA_EN_PIN           BIT2
 
-#define    RF_PA_EN_PxOUT          P2OUT
-#define    RF_PA_EN_PxDIR          P2DIR
-#define    RF_PA_EN_PIN            BIT7
+#define    RF_PA_EN_PxOUT          P6OUT
+#define    RF_PA_EN_PxDIR          P6DIR
+#define    RF_PA_EN_PIN            BIT3
 
 /* Transceiver interrupt configuration */
-#define     RF_PORT_VECTOR         PORT2_VECTOR
-#define     RF_GDO_OUT             P2OUT
-#define     RF_GDO_DIR             P2DIR
-#define     RF_GDO_IN              P2IN
-#define     RF_GDO_SEL             P2SEL
-#define     RF_GDO_PxIES           P2IES
-#define     RF_GDO_PxIFG           P2IFG
-#define     RF_GDO_PxIE            P2IE
-#define     RF_GDO_PIN             BIT0
+#define     RF_PORT_VECTOR         PORT5_VECTOR
+#define     RF_GDO_OUT             P5OUT
+#define     RF_GDO_DIR             P5DIR
+#define     RF_GDO_IN              P5IN
+#define     RF_GDO_SEL             P5SEL
+#define     RF_GDO_PxIES           P5IES
+#define     RF_GDO_PxIFG           P5IFG
+#define     RF_GDO_PxIE            P5IE
+#define     RF_GDO_PIN             BIT7
 
 /* Optional button interrupt configuration */
-#define     BUTTON_VECTOR          PORT1_VECTOR
-#define     BUTTON_OUT             P1OUT
-#define     BUTTON_DIR             P1DIR
-#define     BUTTON_IN              P1IN
-#define     BUTTON_SEL             P1SEL
-#define     BUTTON_PxIES           P1IES
-#define     BUTTON_PxIFG           P1IFG
-#define     BUTTON_PxIE            P1IE
-#define     BUTTON_PIN             BIT1
-#define     BUTTON_REN             P1REN
+#define     BUTTON_VECTOR          PORT5_VECTOR
+#define     BUTTON_OUT             P5DIR
+#define     BUTTON_DIR             P5DIR
+#define     BUTTON_IN              P5IN
+#define     BUTTON_SEL             P5SEL
+#define     BUTTON_PxIES           P5IES
+#define     BUTTON_PxIFG           P5IFG
+#define     BUTTON_PxIE            P5IE
+#define     BUTTON_PIN             BIT5
+#define     BUTTON_REN             P5REN
 
 /* Macro to enable LEDs */
 #define     LED1_PxOUT      P1OUT
 #define     LED1_PxDIR      P1DIR
 #define     LED1_PIN        BIT0
-#define     LED2_PxOUT      P4OUT
-#define     LED2_PxDIR      P4DIR
-#define     LED2_PIN        BIT7
+#define     LED2_PxOUT      P1OUT
+#define     LED2_PxDIR      P1DIR
+#define     LED2_PIN        BIT1
 #define     LED3_PxOUT      P1OUT
 #define     LED3_PxDIR      P1DIR
 #define     LED3_PIN        BIT0
-#define     LED4_PxOUT      P4OUT
-#define     LED4_PxDIR      P4DIR
-#define     LED4_PIN        BIT7
+#define     LED4_PxOUT      P1OUT
+#define     LED4_PxDIR      P1DIR
+#define     LED4_PIN        BIT1
 
 #define     HAL_LED1_ON()     LED1_PxOUT |= LED1_PIN
 #define     HAL_LED2_ON()     LED2_PxOUT |= LED2_PIN
@@ -169,7 +171,7 @@ extern "C" {
 #define RF_SPI_WAIT_MISO_LOW(x)     st( uint8 count = 200; \
                                            while(RF_PORT_IN & RF_SPI_MISO_PIN) \
                                            { \
-                                              __delay_cycles(5000); \
+                                              __delay_cycles(5000);\
                                               count--; \
                                               if (count == 0) break; \
                                            } \