From 770d1f85bbc03c5d3828841fbb3ee30a89f6d1c3 Mon Sep 17 00:00:00 2001
From: Thibaut VIARD <thibaut.viard@atmel.com>
Date: Tue, 13 May 2014 00:30:04 +0200
Subject: [PATCH]  Fixing UART compilation

---
 cores/arduino/Arduino.h                   | 20 +++++++++++---------
 cores/arduino/SERCOM.cpp                  | 18 +++++++++---------
 cores/arduino/Uart.cpp                    |  3 ++-
 cores/arduino/Uart.h                      |  3 +--
 cores/validation/validation_core/test.cpp |  7 +++----
 5 files changed, 26 insertions(+), 25 deletions(-)

diff --git a/cores/arduino/Arduino.h b/cores/arduino/Arduino.h
index 05c02a9c..ee106b5b 100644
--- a/cores/arduino/Arduino.h
+++ b/cores/arduino/Arduino.h
@@ -74,16 +74,18 @@ typedef void (*voidFuncPtr)( void ) ;
 
 #ifdef __cplusplus
 } // extern "C"
+#endif // __cplusplus
 
-#include "WCharacter.h"
-#include "WString.h"
-#include "Tone.h"
-#include "WMath.h"
-#include "HardwareSerial.h"
-#include "wiring_pulse.h"
-#include "delay.h"
-#include "Uart.h"
-
+// The following headers are for C++ only compilation
+#ifdef __cplusplus
+  #include "WCharacter.h"
+  #include "WString.h"
+  #include "Tone.h"
+  #include "WMath.h"
+  #include "HardwareSerial.h"
+  #include "wiring_pulse.h"
+  #include "delay.h"
+  #include "Uart.h"
 #endif // __cplusplus
 
 // Include board variant
diff --git a/cores/arduino/SERCOM.cpp b/cores/arduino/SERCOM.cpp
index c5dc9bb6..2d31c245 100644
--- a/cores/arduino/SERCOM.cpp
+++ b/cores/arduino/SERCOM.cpp
@@ -536,35 +536,35 @@ void SERCOM::initClock()
 
 void SERCOM::initNVIC()
 {
-		IRQn_Type nvicID;
+		IRQn_Type Id;
 		
 		if(sercom == SERCOM0)
 		{
-			nvicID = SERCOM0_IRQn;
+			Id = SERCOM0_IRQn;
 		}
 		else if(sercom == SERCOM1)
 		{
-			nvicID = SERCOM1_IRQn;
+			Id = SERCOM1_IRQn;
 		}
 		else if(sercom == SERCOM2)
 		{
-			nvicID = SERCOM2_IRQn;
+			Id = SERCOM2_IRQn;
 		}
 		else if(sercom == SERCOM3)
 		{
-			nvicID = SERCOM3_IRQn;
+			Id = SERCOM3_IRQn;
 		}
 		else if(sercom == SERCOM4)
 		{
-			nvicID = SERCOM4_IRQn;
+			Id = SERCOM4_IRQn;
 		}
 		else if(sercom == SERCOM5)
 		{
-			nvicID = SERCOM5_IRQn;
+			Id = SERCOM5_IRQn;
 		}
 		
-	NVIC_EnableIRQ(nvicID);
-	NVIC_SetPriority (nvicID, (1<<__NVIC_PRIO_BITS) - 1);  /* set Priority for Systick Interrupt */
+	NVIC_EnableIRQ(Id);
+	NVIC_SetPriority (Id, (1<<__NVIC_PRIO_BITS) - 1);  /* set Priority */
 }
 
 /*	=========================
diff --git a/cores/arduino/Uart.cpp b/cores/arduino/Uart.cpp
index 683c4637..2bc363dd 100644
--- a/cores/arduino/Uart.cpp
+++ b/cores/arduino/Uart.cpp
@@ -1,5 +1,6 @@
 #include "Uart.h"
-
+#include "WVariant.h"
+#include "wiring_digital.h"
 
 Uart::Uart(SERCOM *s, uint8_t pinRX, uint8_t pinTX)
 {
diff --git a/cores/arduino/Uart.h b/cores/arduino/Uart.h
index 0d40392e..b8c64880 100644
--- a/cores/arduino/Uart.h
+++ b/cores/arduino/Uart.h
@@ -1,8 +1,6 @@
 #ifndef _SERCOM_UART_CLASS
 #define _SERCOM_UART_CLASS
 
-#include "wiring_digital.h"
-
 #include "HardwareSerial.h"
 #include "SERCOM.h"
 #include "RingBuffer.h"
@@ -36,6 +34,7 @@ class Uart : public HardwareSerial
 		SercomUartCharSize extractCharSize(uint8_t config);
 		SercomParityMode extractParity(uint8_t config);
 };
+
 extern Uart Serial;
 extern Uart Serial5;
 
diff --git a/cores/validation/validation_core/test.cpp b/cores/validation/validation_core/test.cpp
index 69c07012..ac1e28d1 100644
--- a/cores/validation/validation_core/test.cpp
+++ b/cores/validation/validation_core/test.cpp
@@ -45,9 +45,7 @@ void setup( void )
 
 //**********************************************
 
-/*
-  Serial1.begin( 115200 ) ;
-*/
+  Serial.begin( 115200 ) ;
 }
 
 static void led_step1( void )
@@ -81,7 +79,8 @@ void loop( void )
 
   // Test digitalRead: connect pin 2 to either GND or 3.3V. !!!! NOT on 5V pin !!!!
   pin_value=digitalRead( 2 ) ;
-  Serial.write( "pin 2 value is %s\n", (pin_value == LOW)?"LOW":"HIGH" ) ;
+  Serial.write( "pin 2 value is " ) ;
+  Serial.write( (pin_value == LOW)?"LOW\n":"HIGH\n" ) ;
   delay( 1000 ) ;              // wait for a second
 
 
-- 
GitLab