From 0c9f0d50a52f72e5da5eb6b0a97aa7e743597248 Mon Sep 17 00:00:00 2001
From: Martino Facchin <m.facchin@arduino.cc>
Date: Mon, 2 Mar 2015 13:22:07 +0100
Subject: [PATCH] Revert "Temporary fix for pulseIn() regression."

This reverts commit 8ddc5198f6ef8b2816a61b7b0fcce99f927d11a0.
To be substituted by ASM generated code
---
 .../arduino/avr/cores/arduino/wiring_pulse.c  | 24 ++++---------------
 1 file changed, 4 insertions(+), 20 deletions(-)

diff --git a/hardware/arduino/avr/cores/arduino/wiring_pulse.c b/hardware/arduino/avr/cores/arduino/wiring_pulse.c
index 830c45408..0d968865d 100644
--- a/hardware/arduino/avr/cores/arduino/wiring_pulse.c
+++ b/hardware/arduino/avr/cores/arduino/wiring_pulse.c
@@ -61,25 +61,9 @@ unsigned long pulseIn(uint8_t pin, uint8_t state, unsigned long timeout)
 		width++;
 	}
 
-	// convert the reading to microseconds. There will be some error introduced by
+	// convert the reading to microseconds. The loop has been determined
+	// to be 20 clock cycles long and have about 16 clocks between the edge
+	// and the start of the loop. There will be some error introduced by
 	// the interrupt handlers.
-
-	// Conversion constants are compiler-dependent, different compiler versions
-	// have different levels of optimization.
-#if __GNUC__==4 && __GNUC_MINOR__==3 && __GNUC_PATCHLEVEL__==2
-	// avr-gcc 4.3.2
-	return clockCyclesToMicroseconds(width * 21 + 16);
-#elif __GNUC__==4 && __GNUC_MINOR__==8 && __GNUC_PATCHLEVEL__==1
-	// avr-gcc 4.8.1
-	return clockCyclesToMicroseconds(width * 24 + 16);
-#elif __GNUC__<=4 && __GNUC_MINOR__<=3
-	// avr-gcc <=4.3.x
-	#warning "pulseIn() results may not be accurate"
-	return clockCyclesToMicroseconds(width * 21 + 16);
-#else
-	// avr-gcc >4.3.x
-	#warning "pulseIn() results may not be accurate"
-	return clockCyclesToMicroseconds(width * 24 + 16);
-#endif
-
+	return clockCyclesToMicroseconds(width * 21 + 16); 
 }