From 98f3386ea0e2143315ba05a99fc3968f8a8847e1 Mon Sep 17 00:00:00 2001
From: Randy Mackay <rmackay9@yahoo.com>
Date: Sat, 28 Jan 2012 12:25:47 +0900
Subject: [PATCH] Arduino 1.0 - changed all #includes of "WProgram.h",
 "wiring.h" and "WConstants.h to "Arduino.h". Modified FastSerial's write
 function to return size_t (number of bytes written).

---
 libraries/APM_RC/APM_RC_APM1.cpp              |  6 +++-
 libraries/APM_RC/APM_RC_APM2.cpp              |  6 +++-
 libraries/AP_ADC/AP_ADC_ADS7844.cpp           | 10 ++++--
 libraries/AP_ADC/AP_ADC_HIL.cpp               |  6 +++-
 .../AP_AnalogSource_Arduino.cpp               |  6 +++-
 libraries/AP_Baro/AP_Baro_BMP085.cpp          |  6 +++-
 libraries/AP_Baro/AP_Baro_BMP085_hil.cpp      |  6 +++-
 libraries/AP_Common/AP_Common.h               |  6 +++-
 libraries/AP_Common/AP_Vector.h               |  6 +++-
 libraries/AP_Common/c++.cpp                   |  6 +++-
 libraries/AP_Compass/AP_Compass_HMC5843.cpp   |  6 +++-
 libraries/AP_DCM/AP_DCM.h                     |  7 ++--
 libraries/AP_DCM/AP_DCM_HIL.h                 |  6 +++-
 libraries/AP_EEPROMB/AP_EEPROMB.h             |  7 ++--
 libraries/AP_GPS/AP_GPS_406.cpp               |  6 +++-
 libraries/AP_GPS/AP_GPS_HIL.cpp               |  6 +++-
 libraries/AP_GPS/AP_GPS_IMU.cpp               |  6 +++-
 libraries/AP_GPS/AP_GPS_MTK16.cpp             |  6 +++-
 libraries/AP_GPS/GPS.cpp                      |  6 +++-
 .../AP_InertialSensor_MPU6000.cpp             |  6 +++-
 libraries/AP_Navigation/Navigation.h          |  6 +++-
 .../AP_OpticalFlow_ADNS3080.cpp               |  6 +++-
 .../AP_PeriodicProcess/AP_TimerProcess.cpp    |  6 +++-
 libraries/AP_RC/AP_RC.cpp                     |  6 +++-
 libraries/AP_RC_Channel/AP_RC_Channel.cpp     |  6 +++-
 .../AP_RangeFinder_MaxsonarXL.cpp             |  6 +++-
 .../AP_RangeFinder_SharpGP2Y.cpp              |  6 +++-
 libraries/AP_RangeFinder/RangeFinder.cpp      |  6 +++-
 libraries/AP_Relay/AP_Relay.cpp               |  6 +++-
 libraries/DataFlash/DataFlash_APM2.cpp        |  6 +++-
 libraries/FastSerial/FastSerial.cpp           | 32 ++++++++++++++++++-
 libraries/FastSerial/FastSerial.h             |  4 +++
 libraries/I2C/I2C.cpp                         |  6 +++-
 libraries/I2C/I2C.h                           |  6 +++-
 libraries/ModeFilter/ModeFilter.cpp           |  6 +++-
 libraries/RC_Channel/RC_Channel.cpp           |  6 +++-
 libraries/Waypoints/Waypoints.h               |  6 +++-
 37 files changed, 212 insertions(+), 40 deletions(-)

diff --git a/libraries/APM_RC/APM_RC_APM1.cpp b/libraries/APM_RC/APM_RC_APM1.cpp
index cd242cd31..fa4995f8c 100644
--- a/libraries/APM_RC/APM_RC_APM1.cpp
+++ b/libraries/APM_RC/APM_RC_APM1.cpp
@@ -21,7 +21,11 @@
 #include "APM_RC_APM1.h"
 
 #include <avr/interrupt.h>
-#include "WProgram.h"
+#if defined(ARDUINO) && ARDUINO >= 100
+	#include "Arduino.h"
+#else
+	#include "WProgram.h"
+#endif
 
 #if !defined(__AVR_ATmega1280__) && !defined(__AVR_ATmega2560__)
 # error Please check the Tools/Board menu to ensure you have selected Arduino Mega as your target.
diff --git a/libraries/APM_RC/APM_RC_APM2.cpp b/libraries/APM_RC/APM_RC_APM2.cpp
index f9e55fcac..225329499 100644
--- a/libraries/APM_RC/APM_RC_APM2.cpp
+++ b/libraries/APM_RC/APM_RC_APM2.cpp
@@ -20,7 +20,11 @@
 */
 #include "APM_RC_APM2.h"
 
-#include "WProgram.h"
+#if defined(ARDUINO) && ARDUINO >= 100
+	#include "Arduino.h"
+#else
+	#include "WProgram.h"
+#endif
 
 #if !defined(__AVR_ATmega1280__) && !defined(__AVR_ATmega2560__)
 # error Please check the Tools/Board menu to ensure you have selected Arduino Mega as your target.
diff --git a/libraries/AP_ADC/AP_ADC_ADS7844.cpp b/libraries/AP_ADC/AP_ADC_ADS7844.cpp
index 5eea6eb37..c3cf71cda 100644
--- a/libraries/AP_ADC/AP_ADC_ADS7844.cpp
+++ b/libraries/AP_ADC/AP_ADC_ADS7844.cpp
@@ -44,15 +44,19 @@
 	Channel 7 : Differential pressure sensor port
 
 */
+#include "AP_ADC_ADS7844.h"
+
 extern "C" {
 	// AVR LibC Includes
 	#include <inttypes.h>
 	#include <stdint.h>
 	#include <avr/interrupt.h>
-	#include "WConstants.h"
 }
-
-#include "AP_ADC_ADS7844.h"
+#if defined(ARDUINO) && ARDUINO >= 100
+	#include "Arduino.h"
+#else
+	#include "WConstants.h"
+#endif
 
 // Commands for reading ADC channels on ADS7844
 static const unsigned char 		adc_cmd[9]		= { 0x87, 0xC7, 0x97, 0xD7, 0xA7, 0xE7, 0xB7, 0xF7, 0x00 };
diff --git a/libraries/AP_ADC/AP_ADC_HIL.cpp b/libraries/AP_ADC/AP_ADC_HIL.cpp
index 5a0cb9258..80488682a 100644
--- a/libraries/AP_ADC/AP_ADC_HIL.cpp
+++ b/libraries/AP_ADC/AP_ADC_HIL.cpp
@@ -1,5 +1,9 @@
 #include "AP_ADC_HIL.h"
-#include "WProgram.h"
+#if defined(ARDUINO) && ARDUINO >= 100
+	#include "Arduino.h"
+#else
+	#include "WProgram.h"
+#endif
 
 /*
 	AP_ADC_HIL.cpp
diff --git a/libraries/AP_AnalogSource/AP_AnalogSource_Arduino.cpp b/libraries/AP_AnalogSource/AP_AnalogSource_Arduino.cpp
index 3406a59a2..ff9189e79 100644
--- a/libraries/AP_AnalogSource/AP_AnalogSource_Arduino.cpp
+++ b/libraries/AP_AnalogSource/AP_AnalogSource_Arduino.cpp
@@ -1,6 +1,10 @@
 /// -*- tab-width: 4; Mode: C++; c-basic-offset: 4; indent-tabs-mode: nil -*-
 
-#include "wiring.h"
+#if defined(ARDUINO) && ARDUINO >= 100
+	#include "Arduino.h"
+#else
+	#include "wiring.h"
+#endif
 #include "AP_AnalogSource_Arduino.h"
 
 float AP_AnalogSource_Arduino::read(void)
diff --git a/libraries/AP_Baro/AP_Baro_BMP085.cpp b/libraries/AP_Baro/AP_Baro_BMP085.cpp
index eefd9c5da..cf2b1bd52 100644
--- a/libraries/AP_Baro/AP_Baro_BMP085.cpp
+++ b/libraries/AP_Baro/AP_Baro_BMP085.cpp
@@ -39,8 +39,12 @@ extern "C" {
   // AVR LibC Includes
   #include <inttypes.h>
   #include <avr/interrupt.h>
-  #include "WConstants.h"
 }
+#if defined(ARDUINO) && ARDUINO >= 100
+  #include "Arduino.h"
+#else
+  #include "WConstants.h"
+#endif
 
 #include <AP_Common.h>
 #include <AP_Math.h>		// ArduPilot Mega Vector/Matrix math Library
diff --git a/libraries/AP_Baro/AP_Baro_BMP085_hil.cpp b/libraries/AP_Baro/AP_Baro_BMP085_hil.cpp
index 795326cb4..71577b8d4 100644
--- a/libraries/AP_Baro/AP_Baro_BMP085_hil.cpp
+++ b/libraries/AP_Baro/AP_Baro_BMP085_hil.cpp
@@ -4,8 +4,12 @@ extern "C" {
   // AVR LibC Includes
   #include <inttypes.h>
   #include <avr/interrupt.h>
-  #include "WConstants.h"
 }
+#if defined(ARDUINO) && ARDUINO >= 100
+  #include "Arduino.h"
+#else
+  #include "WConstants.h"
+#endif
 
 #include "AP_Baro_BMP085_hil.h"
 
diff --git a/libraries/AP_Common/AP_Common.h b/libraries/AP_Common/AP_Common.h
index 0ffe4aea3..64ff287f1 100644
--- a/libraries/AP_Common/AP_Common.h
+++ b/libraries/AP_Common/AP_Common.h
@@ -16,7 +16,11 @@
 #define _AP_COMMON_H
 
 // Get the common arduino functions
-#include "wiring.h"
+#if defined(ARDUINO) && ARDUINO >= 100
+	#include "Arduino.h"
+#else
+	#include "wiring.h"
+#endif
 // ... and remove some of their stupid macros
 #undef round
 #undef abs
diff --git a/libraries/AP_Common/AP_Vector.h b/libraries/AP_Common/AP_Vector.h
index a82018c38..bcd081a4d 100644
--- a/libraries/AP_Common/AP_Vector.h
+++ b/libraries/AP_Common/AP_Vector.h
@@ -22,7 +22,11 @@
 #include "../FastSerial/BetterStream.h"
 #include <stdlib.h>
 #include <inttypes.h>
-#include <WProgram.h>
+#if defined(ARDUINO) && ARDUINO >= 100
+	#include "Arduino.h"
+#else
+	#include <WProgram.h>
+#endif
 
 #ifdef ASSERT
 const static char vectorSource[] ="Vector.hpp";
diff --git a/libraries/AP_Common/c++.cpp b/libraries/AP_Common/c++.cpp
index a11b97ff9..8ea4bc4f4 100644
--- a/libraries/AP_Common/c++.cpp
+++ b/libraries/AP_Common/c++.cpp
@@ -9,7 +9,11 @@
 
 #include <stdlib.h>
 #include "c++.h"
-#include "WProgram.h"
+#if defined(ARDUINO) && ARDUINO >= 100
+	#include "Arduino.h"
+#else
+	#include "WProgram.h"
+#endif
 
 void * operator new(size_t size)
 {
diff --git a/libraries/AP_Compass/AP_Compass_HMC5843.cpp b/libraries/AP_Compass/AP_Compass_HMC5843.cpp
index 2f6b9e72c..6a160230b 100644
--- a/libraries/AP_Compass/AP_Compass_HMC5843.cpp
+++ b/libraries/AP_Compass/AP_Compass_HMC5843.cpp
@@ -15,8 +15,12 @@
 
 // AVR LibC Includes
 #include <math.h>
-#include "WConstants.h"
 #include <FastSerial.h>
+#if defined(ARDUINO) && ARDUINO >= 100
+	#include "Arduino.h"
+#else
+	#include "WConstants.h"
+#endif
 
 #include <I2C.h>
 #include "AP_Compass_HMC5843.h"
diff --git a/libraries/AP_DCM/AP_DCM.h b/libraries/AP_DCM/AP_DCM.h
index e3a6a8995..bf1a53947 100644
--- a/libraries/AP_DCM/AP_DCM.h
+++ b/libraries/AP_DCM/AP_DCM.h
@@ -10,12 +10,15 @@
 #include "../FastSerial/FastSerial.h"
 #include "../AP_Math/AP_Math.h"
 #include <inttypes.h>
-#include "WProgram.h"
 #include "../AP_Compass/AP_Compass.h"
 #include "../AP_ADC/AP_ADC.h"
 #include "../AP_GPS/AP_GPS.h"
 #include "../AP_IMU/AP_IMU.h"
-
+#if defined(ARDUINO) && ARDUINO >= 100
+	#include "Arduino.h"
+#else
+	#include "WProgram.h"
+#endif
 
 class AP_DCM
 {
diff --git a/libraries/AP_DCM/AP_DCM_HIL.h b/libraries/AP_DCM/AP_DCM_HIL.h
index a8266fcb0..ad59081f6 100644
--- a/libraries/AP_DCM/AP_DCM_HIL.h
+++ b/libraries/AP_DCM/AP_DCM_HIL.h
@@ -4,11 +4,15 @@
 #include "../FastSerial/FastSerial.h"
 #include "../AP_Math/AP_Math.h"
 #include <inttypes.h>
-#include "WProgram.h"
 #include "../AP_Compass/AP_Compass.h"
 #include "../AP_ADC/AP_ADC.h"
 #include "../AP_GPS/AP_GPS.h"
 #include "../AP_IMU/AP_IMU.h"
+#if defined(ARDUINO) && ARDUINO >= 100
+	#include "Arduino.h"
+#else
+	#include "WProgram.h"
+#endif
 
 
 class AP_DCM_HIL
diff --git a/libraries/AP_EEPROMB/AP_EEPROMB.h b/libraries/AP_EEPROMB/AP_EEPROMB.h
index 38b4d5019..f9378bc80 100644
--- a/libraries/AP_EEPROMB/AP_EEPROMB.h
+++ b/libraries/AP_EEPROMB/AP_EEPROMB.h
@@ -6,8 +6,11 @@
 #ifndef AP_EEPROMB_h
 #define AP_EEPROMB_h
 
-//#include <stdint.h>
-#include "WProgram.h"
+#if defined(ARDUINO) && ARDUINO >= 100
+	#include "Arduino.h"
+#else
+	#include "WProgram.h"
+#endif
 
 /// @class	AP_EEPROMB
 /// @brief	Object for reading and writing to the EEPROM
diff --git a/libraries/AP_GPS/AP_GPS_406.cpp b/libraries/AP_GPS/AP_GPS_406.cpp
index 30ca72a62..2dbc6139b 100644
--- a/libraries/AP_GPS/AP_GPS_406.cpp
+++ b/libraries/AP_GPS/AP_GPS_406.cpp
@@ -11,7 +11,11 @@
 
 #include "../FastSerial/FastSerial.h"	// because we need to change baud rates... ugh.
 #include "AP_GPS_406.h"
-#include "WProgram.h"
+#if defined(ARDUINO) && ARDUINO >= 100
+	#include "Arduino.h"
+#else
+	#include "WProgram.h"
+#endif
 
 static const char init_str[] = "$PSRF100,0,57600,8,1,0*37";
 
diff --git a/libraries/AP_GPS/AP_GPS_HIL.cpp b/libraries/AP_GPS/AP_GPS_HIL.cpp
index 38db02ba0..31fa56215 100644
--- a/libraries/AP_GPS/AP_GPS_HIL.cpp
+++ b/libraries/AP_GPS/AP_GPS_HIL.cpp
@@ -12,7 +12,11 @@
 //
 
 #include "AP_GPS_HIL.h"
-#include "WProgram.h"
+#if defined(ARDUINO) && ARDUINO >= 100
+	#include "Arduino.h"
+#else
+	#include "WProgram.h"
+#endif
 
 // Constructors ////////////////////////////////////////////////////////////////
 AP_GPS_HIL::AP_GPS_HIL(Stream *s) : GPS(s)
diff --git a/libraries/AP_GPS/AP_GPS_IMU.cpp b/libraries/AP_GPS/AP_GPS_IMU.cpp
index 8e5da67ae..9695fd6aa 100644
--- a/libraries/AP_GPS/AP_GPS_IMU.cpp
+++ b/libraries/AP_GPS/AP_GPS_IMU.cpp
@@ -28,7 +28,11 @@
 
 */
 #include "AP_GPS_IMU.h"
-#include "WProgram.h"
+#if defined(ARDUINO) && ARDUINO >= 100
+	#include "Arduino.h"
+#else
+	#include "WProgram.h"
+#endif
 
 
 // Constructors ////////////////////////////////////////////////////////////////
diff --git a/libraries/AP_GPS/AP_GPS_MTK16.cpp b/libraries/AP_GPS/AP_GPS_MTK16.cpp
index 9b4f9a95b..7531917d0 100644
--- a/libraries/AP_GPS/AP_GPS_MTK16.cpp
+++ b/libraries/AP_GPS/AP_GPS_MTK16.cpp
@@ -13,7 +13,11 @@
 
 #include "AP_GPS_MTK16.h"
 #include <stdint.h>
-#include <wiring.h>
+#if defined(ARDUINO) && ARDUINO >= 100
+	#include "Arduino.h"
+#else
+	#include <wiring.h>
+#endif
 
 // Constructors ////////////////////////////////////////////////////////////////
 AP_GPS_MTK16::AP_GPS_MTK16(Stream *s) : GPS(s)
diff --git a/libraries/AP_GPS/GPS.cpp b/libraries/AP_GPS/GPS.cpp
index db5ef00d6..87c4c8f2e 100644
--- a/libraries/AP_GPS/GPS.cpp
+++ b/libraries/AP_GPS/GPS.cpp
@@ -1,7 +1,11 @@
 // -*- tab-width: 4; Mode: C++; c-basic-offset: 4; indent-tabs-mode: t -*-
 
 #include "GPS.h"
-#include "WProgram.h"
+#if defined(ARDUINO) && ARDUINO >= 100
+	#include "Arduino.h"
+#else
+	#include "WProgram.h"
+#endif
 
 void
 GPS::update(void)
diff --git a/libraries/AP_InertialSensor/AP_InertialSensor_MPU6000.cpp b/libraries/AP_InertialSensor/AP_InertialSensor_MPU6000.cpp
index ccd6a67c4..3cfd3aefe 100644
--- a/libraries/AP_InertialSensor/AP_InertialSensor_MPU6000.cpp
+++ b/libraries/AP_InertialSensor/AP_InertialSensor_MPU6000.cpp
@@ -3,8 +3,12 @@
 
 #include "AP_InertialSensor_MPU6000.h"
 
-#include <wiring.h>
 #include <SPI.h>
+#if defined(ARDUINO) && ARDUINO >= 100
+	#include "Arduino.h"
+#else
+	#include <wiring.h>
+#endif
 
 // MPU 6000 registers
 #define MPUREG_WHOAMI 0x75 //
diff --git a/libraries/AP_Navigation/Navigation.h b/libraries/AP_Navigation/Navigation.h
index 4fce19da6..b0919854b 100644
--- a/libraries/AP_Navigation/Navigation.h
+++ b/libraries/AP_Navigation/Navigation.h
@@ -6,7 +6,11 @@
 #define XTRACK_ENTRY_ANGLE 3000			// Max angle used to correct for track following	degrees*100
 #include <GPS.h>						// ArduPilot GPS Library
 #include "Waypoints.h"					// ArduPilot Waypoints Library
-#include "WProgram.h"
+#if defined(ARDUINO) && ARDUINO >= 100
+	#include "Arduino.h"
+#else
+	#include "WProgram.h"
+#endif
 
 #define T7 10000000
 
diff --git a/libraries/AP_OpticalFlow/AP_OpticalFlow_ADNS3080.cpp b/libraries/AP_OpticalFlow/AP_OpticalFlow_ADNS3080.cpp
index 85c6251b0..dc24db139 100644
--- a/libraries/AP_OpticalFlow/AP_OpticalFlow_ADNS3080.cpp
+++ b/libraries/AP_OpticalFlow/AP_OpticalFlow_ADNS3080.cpp
@@ -24,8 +24,12 @@
 */
 
 #include "AP_OpticalFlow_ADNS3080.h"
-#include "WProgram.h"
 #include "SPI.h"
+#if defined(ARDUINO) && ARDUINO >= 100
+	#include "Arduino.h"
+#else
+	#include "WProgram.h"
+#endif
 
 #define AP_SPI_TIMEOUT 1000
 
diff --git a/libraries/AP_PeriodicProcess/AP_TimerProcess.cpp b/libraries/AP_PeriodicProcess/AP_TimerProcess.cpp
index 5ba103de2..767efacfb 100644
--- a/libraries/AP_PeriodicProcess/AP_TimerProcess.cpp
+++ b/libraries/AP_PeriodicProcess/AP_TimerProcess.cpp
@@ -5,9 +5,13 @@
 extern "C" {
 #include <inttypes.h>
 #include <stdint.h>
-#include "WConstants.h"
 #include <avr/interrupt.h>
 }
+#if defined(ARDUINO) && ARDUINO >= 100
+	#include "Arduino.h"
+#else
+	#include "WConstants.h"
+#endif
 
 uint8_t AP_TimerProcess::_period;
 ap_procedure AP_TimerProcess::_proc[AP_TIMERPROCESS_MAX_PROCS];
diff --git a/libraries/AP_RC/AP_RC.cpp b/libraries/AP_RC/AP_RC.cpp
index 8c2db835c..ee20c5f1e 100644
--- a/libraries/AP_RC/AP_RC.cpp
+++ b/libraries/AP_RC/AP_RC.cpp
@@ -10,8 +10,12 @@
 */
 
 #include "AP_RC.h"
-#include "WProgram.h"
 #include <avr/interrupt.h>
+#if defined(ARDUINO) && ARDUINO >= 100
+	#include "Arduino.h"
+#else
+	#include "WProgram.h"
+#endif
 
 // Variable definition for interrupt
 volatile uint16_t timer1count   = 0;
diff --git a/libraries/AP_RC_Channel/AP_RC_Channel.cpp b/libraries/AP_RC_Channel/AP_RC_Channel.cpp
index 9c8c8a6ca..eea2e91b3 100644
--- a/libraries/AP_RC_Channel/AP_RC_Channel.cpp
+++ b/libraries/AP_RC_Channel/AP_RC_Channel.cpp
@@ -11,7 +11,11 @@
 
 #include <math.h>
 #include <avr/eeprom.h>
-#include "WProgram.h"
+#if defined(ARDUINO) && ARDUINO >= 100
+	#include "Arduino.h"
+#else
+	#include "WProgram.h"
+#endif
 #include "AP_RC_Channel.h"
 
 #define ANGLE 0
diff --git a/libraries/AP_RangeFinder/AP_RangeFinder_MaxsonarXL.cpp b/libraries/AP_RangeFinder/AP_RangeFinder_MaxsonarXL.cpp
index 3e8b6019f..20915092d 100644
--- a/libraries/AP_RangeFinder/AP_RangeFinder_MaxsonarXL.cpp
+++ b/libraries/AP_RangeFinder/AP_RangeFinder_MaxsonarXL.cpp
@@ -26,7 +26,11 @@
 */
 
 // AVR LibC Includes
-#include "WConstants.h"
+#if defined(ARDUINO) && ARDUINO >= 100
+	#include "Arduino.h"
+#else
+	#include "WConstants.h"
+#endif
 #include "AP_RangeFinder_MaxsonarXL.h"
 
 // Constructor //////////////////////////////////////////////////////////////
diff --git a/libraries/AP_RangeFinder/AP_RangeFinder_SharpGP2Y.cpp b/libraries/AP_RangeFinder/AP_RangeFinder_SharpGP2Y.cpp
index bb8a20c89..3f08bb7dc 100644
--- a/libraries/AP_RangeFinder/AP_RangeFinder_SharpGP2Y.cpp
+++ b/libraries/AP_RangeFinder/AP_RangeFinder_SharpGP2Y.cpp
@@ -26,7 +26,11 @@
 */
 
 // AVR LibC Includes
-#include "WConstants.h"
+#if defined(ARDUINO) && ARDUINO >= 100
+	#include "Arduino.h"
+#else
+	#include "WConstants.h"
+#endif
 #include "AP_RangeFinder_SharpGP2Y.h"
 
 // Constructor //////////////////////////////////////////////////////////////
diff --git a/libraries/AP_RangeFinder/RangeFinder.cpp b/libraries/AP_RangeFinder/RangeFinder.cpp
index 582e072d6..63945e5ab 100644
--- a/libraries/AP_RangeFinder/RangeFinder.cpp
+++ b/libraries/AP_RangeFinder/RangeFinder.cpp
@@ -13,7 +13,11 @@
 */
 
 // AVR LibC Includes
-#include "WConstants.h"
+#if defined(ARDUINO) && ARDUINO >= 100
+	#include "Arduino.h"
+#else
+	#include "WConstants.h"
+#endif
 #include "RangeFinder.h"
 
 
diff --git a/libraries/AP_Relay/AP_Relay.cpp b/libraries/AP_Relay/AP_Relay.cpp
index 0c62abb44..800e35ea7 100644
--- a/libraries/AP_Relay/AP_Relay.cpp
+++ b/libraries/AP_Relay/AP_Relay.cpp
@@ -8,7 +8,11 @@
  */
 
 #include <avr/io.h>
-#include "wiring.h"
+#if defined(ARDUINO) && ARDUINO >= 100
+	#include "Arduino.h"
+#else
+	#include "wiring.h"
+#endif
 
 #include "AP_Relay.h"
 
diff --git a/libraries/DataFlash/DataFlash_APM2.cpp b/libraries/DataFlash/DataFlash_APM2.cpp
index 72e336e2e..a1a2897fc 100644
--- a/libraries/DataFlash/DataFlash_APM2.cpp
+++ b/libraries/DataFlash/DataFlash_APM2.cpp
@@ -36,8 +36,12 @@ extern "C" {
   // AVR LibC Includes
   #include <inttypes.h>
   #include <avr/interrupt.h>
-  #include "WConstants.h"
 }
+#if defined(ARDUINO) && ARDUINO >= 100
+	#include "Arduino.h"
+#else
+	#include "WConstants.h"
+#endif
 
 #include "DataFlash_APM2.h"
 
diff --git a/libraries/FastSerial/FastSerial.cpp b/libraries/FastSerial/FastSerial.cpp
index 75c8e850f..efc8c896e 100644
--- a/libraries/FastSerial/FastSerial.cpp
+++ b/libraries/FastSerial/FastSerial.cpp
@@ -31,7 +31,12 @@
 
 //#include "../AP_Common/AP_Common.h"
 #include "FastSerial.h"
-#include "WProgram.h"
+
+#if defined(ARDUINO) && ARDUINO >= 100
+	#include "Arduino.h"
+#else
+	#include "WProgram.h"
+#endif
 
 #if   defined(UDR3)
 # define FS_MAX_PORTS   4
@@ -197,6 +202,30 @@ void FastSerial::flush(void)
 	_txBuffer->tail = _txBuffer->head;
 }
 
+#if defined(ARDUINO) && ARDUINO >= 100
+size_t FastSerial::write(uint8_t c)
+{
+	uint16_t i;
+
+	if (!_open) // drop bytes if not open
+		return 0;
+
+	// wait for room in the tx buffer
+	i = (_txBuffer->head + 1) & _txBuffer->mask;
+	while (i == _txBuffer->tail)
+		;
+
+	// add byte to the buffer
+	_txBuffer->bytes[_txBuffer->head] = c;
+	_txBuffer->head = i;
+
+	// enable the data-ready interrupt, as it may be off if the buffer is empty
+	*_ucsrb |= _portTxBits;
+
+	// return number of bytes written (always 1)
+	return 1;
+}
+#else
 void FastSerial::write(uint8_t c)
 {
 	uint16_t i;
@@ -216,6 +245,7 @@ void FastSerial::write(uint8_t c)
 	// enable the data-ready interrupt, as it may be off if the buffer is empty
 	*_ucsrb |= _portTxBits;
 }
+#endif
 
 // Buffer management ///////////////////////////////////////////////////////////
 
diff --git a/libraries/FastSerial/FastSerial.h b/libraries/FastSerial/FastSerial.h
index bc0417a7c..5fcaa95c7 100644
--- a/libraries/FastSerial/FastSerial.h
+++ b/libraries/FastSerial/FastSerial.h
@@ -116,7 +116,11 @@ public:
 	virtual int read(void);
 	virtual int peek(void);
 	virtual void flush(void);
+#if defined(ARDUINO) && ARDUINO >= 100
+	virtual size_t write(uint8_t c);
+#else
 	virtual void write(uint8_t c);
+#endif
 	using BetterStream::write;
 	//@}
 
diff --git a/libraries/I2C/I2C.cpp b/libraries/I2C/I2C.cpp
index 52fb607f8..2b699b8cc 100644
--- a/libraries/I2C/I2C.cpp
+++ b/libraries/I2C/I2C.cpp
@@ -31,9 +31,13 @@
   Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 */
 
-#include "WProgram.h"
 #include <inttypes.h>
 #include "I2C.h"
+#if defined(ARDUINO) && ARDUINO >= 100
+	#include "Arduino.h"
+#else
+	#include "WProgram.h"
+#endif
 
 
 
diff --git a/libraries/I2C/I2C.h b/libraries/I2C/I2C.h
index 32737173d..ca957312a 100644
--- a/libraries/I2C/I2C.h
+++ b/libraries/I2C/I2C.h
@@ -31,8 +31,12 @@
   Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 */
 
-#include "WProgram.h"
 #include <inttypes.h>
+#if defined(ARDUINO) && ARDUINO >= 100
+	#include "Arduino.h"
+#else
+	#include "WProgram.h"
+#endif
 
 #ifndef I2C_h
 #define I2C_h
diff --git a/libraries/ModeFilter/ModeFilter.cpp b/libraries/ModeFilter/ModeFilter.cpp
index b7f4d3c76..cf282d56f 100644
--- a/libraries/ModeFilter/ModeFilter.cpp
+++ b/libraries/ModeFilter/ModeFilter.cpp
@@ -14,7 +14,11 @@
 #include "ModeFilter.h"
 
 #include <avr/interrupt.h>
-#include "WProgram.h"
+#if defined(ARDUINO) && ARDUINO >= 100
+	#include "Arduino.h"
+#else
+	#include "WProgram.h"
+#endif
 
 
 // Constructors ////////////////////////////////////////////////////////////////
diff --git a/libraries/RC_Channel/RC_Channel.cpp b/libraries/RC_Channel/RC_Channel.cpp
index 37f90e0cd..bd94992ab 100644
--- a/libraries/RC_Channel/RC_Channel.cpp
+++ b/libraries/RC_Channel/RC_Channel.cpp
@@ -11,7 +11,11 @@
 
 #include <math.h>
 #include <avr/eeprom.h>
-#include "WProgram.h"
+#if defined(ARDUINO) && ARDUINO >= 100
+	#include "Arduino.h"
+#else
+	#include "WProgram.h"
+#endif
 #include "RC_Channel.h"
 
 #define RC_CHANNEL_ANGLE 0
diff --git a/libraries/Waypoints/Waypoints.h b/libraries/Waypoints/Waypoints.h
index ddf03378a..2830da3be 100644
--- a/libraries/Waypoints/Waypoints.h
+++ b/libraries/Waypoints/Waypoints.h
@@ -2,8 +2,12 @@
 #define Waypoints_h
 
 #include <inttypes.h>
-#include "WProgram.h"
 #include <avr/eeprom.h>
+#if defined(ARDUINO) && ARDUINO >= 100
+	#include "Arduino.h"
+#else
+	#include "WProgram.h"
+#endif
 
 class Waypoints
 {
-- 
GitLab