From 03864adbe2ad9f65f65715a9f6f9c441e196453a Mon Sep 17 00:00:00 2001
From: Andrew Tridgell <tridge@samba.org>
Date: Wed, 21 Nov 2012 23:02:21 +1100
Subject: [PATCH] Revert "Optimized APM_RC.InputCh() to prevent global
 interrupt disable each time a value is read."

This reverts commit 6ef0652efa2f7b0bb7702f8abee4b54e5de3b20e.

This doesn't look safe to me. See my email to the list.
---
 libraries/APM_RC/APM_RC_APM1.cpp | 11 +++--------
 libraries/APM_RC/APM_RC_APM2.cpp | 11 +++--------
 2 files changed, 6 insertions(+), 16 deletions(-)

diff --git a/libraries/APM_RC/APM_RC_APM1.cpp b/libraries/APM_RC/APM_RC_APM1.cpp
index 7f648e50f..1915efa1f 100644
--- a/libraries/APM_RC/APM_RC_APM1.cpp
+++ b/libraries/APM_RC/APM_RC_APM1.cpp
@@ -219,15 +219,10 @@ uint16_t APM_RC_APM1::InputCh(uint8_t ch)
         return _HIL_override[ch];
     }
 
-    // We need to block ICP4 interrupts during the read of 16 bit PWM values
-    uint8_t _timsk4 = TIMSK4;
-    TIMSK4 &= ~(1<<ICIE4);
-
-    // value
+    // we need to stop interrupts to be sure we get a correct 16 bit value
+    cli();
     result = _PWM_RAW[ch];
-
-   // Enable ICP4 interrupt if previously active
-    TIMSK4 = _timsk4;
+    sei();
 
     // Because timer runs at 0.5us we need to do value/2
     result >>= 1;
diff --git a/libraries/APM_RC/APM_RC_APM2.cpp b/libraries/APM_RC/APM_RC_APM2.cpp
index aa6847fa9..d78105227 100644
--- a/libraries/APM_RC/APM_RC_APM2.cpp
+++ b/libraries/APM_RC/APM_RC_APM2.cpp
@@ -241,16 +241,11 @@ uint16_t APM_RC_APM2::InputCh(unsigned char ch)
         return _HIL_override[ch];
     }
 
-    // We need to block ICP5 interrupts during the read of 16 bit PWM values
-    uint8_t _timsk5 = TIMSK5;
-    TIMSK5 &= ~(1<<ICIE5);
-
+    // we need to block interrupts during the read of a 16 bit
     // value
+    cli();
     result = _PWM_RAW[ch];
-
-    // Enable ICP5 interrupt if previously active
-    TIMSK5 = _timsk5;
-    
+    sei();
     // Because timer runs at 0.5us we need to do value/2
     result >>= 1;
 
-- 
GitLab