mirror of https://github.com/ARMmbed/mbed-os.git
				
				
				
			Restore single-param InterruptIn ctor, to maintain binary compatibility (for Wi-Fi drivers).
Revert "simplify InterruptIn - default parameter instead of multiple constructors"; add comment.
This reverts commit d28dbf6702.
			
			
				pull/6239/head
			
			
		
							parent
							
								
									087b4281f6
								
							
						
					
					
						commit
						895e19ae0f
					
				| 
						 | 
				
			
			@ -19,16 +19,33 @@
 | 
			
		|||
 | 
			
		||||
namespace mbed {
 | 
			
		||||
 | 
			
		||||
// Note: This single-parameter constructor exists to maintain binary
 | 
			
		||||
//       compatibility.
 | 
			
		||||
//       If not for that, we could simplify by having only the 2-param
 | 
			
		||||
//       constructor, with a default value for the PinMode.
 | 
			
		||||
InterruptIn::InterruptIn(PinName pin) : gpio(),
 | 
			
		||||
                                        gpio_irq(),
 | 
			
		||||
                                        _rise(NULL),
 | 
			
		||||
                                        _fall(NULL) {
 | 
			
		||||
    // No lock needed in the constructor
 | 
			
		||||
    irq_init(pin);
 | 
			
		||||
    gpio_init_in(&gpio, pin);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
InterruptIn::InterruptIn(PinName pin, PinMode mode) :
 | 
			
		||||
                                        gpio(),
 | 
			
		||||
                                        gpio_irq(),
 | 
			
		||||
                                        _rise(NULL),
 | 
			
		||||
                                        _fall(NULL) {
 | 
			
		||||
    // No lock needed in the constructor
 | 
			
		||||
    gpio_irq_init(&gpio_irq, pin, (&InterruptIn::_irq_handler), (uint32_t)this);
 | 
			
		||||
    irq_init(pin);
 | 
			
		||||
    gpio_init_in_ex(&gpio, pin, mode);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void InterruptIn::irq_init(PinName pin) {
 | 
			
		||||
   gpio_irq_init(&gpio_irq, pin, (&InterruptIn::_irq_handler), (uint32_t)this);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
InterruptIn::~InterruptIn() {
 | 
			
		||||
    // No lock needed in the destructor
 | 
			
		||||
    gpio_irq_free(&gpio_irq);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -61,14 +61,18 @@ class InterruptIn : private NonCopyable<InterruptIn> {
 | 
			
		|||
 | 
			
		||||
public:
 | 
			
		||||
 | 
			
		||||
    /** Create an InterruptIn connected to the specified pin
 | 
			
		||||
     *
 | 
			
		||||
     *  @param pin InterruptIn pin to connect to
 | 
			
		||||
     */
 | 
			
		||||
    InterruptIn(PinName pin);
 | 
			
		||||
    /** Create an InterruptIn connected to the specified pin,
 | 
			
		||||
     *  with the pin configured to the specified mode.
 | 
			
		||||
     *  and the pin configured to the specified mode.
 | 
			
		||||
     *
 | 
			
		||||
     *  @param pin InterruptIn pin to connect to
 | 
			
		||||
     *  @param mode The mode to set the pin to (PullUp/PullDown/etc.)
 | 
			
		||||
     */
 | 
			
		||||
    InterruptIn(PinName pin, PinMode mode = PullDefault);
 | 
			
		||||
 | 
			
		||||
    InterruptIn(PinName pin, PinMode mode);
 | 
			
		||||
    virtual ~InterruptIn();
 | 
			
		||||
 | 
			
		||||
    /** Read the input, represented as 0 or 1 (int)
 | 
			
		||||
| 
						 | 
				
			
			@ -156,6 +160,8 @@ protected:
 | 
			
		|||
 | 
			
		||||
    Callback<void()> _rise;
 | 
			
		||||
    Callback<void()> _fall;
 | 
			
		||||
 | 
			
		||||
    void irq_init(PinName pin);
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
} // namespace mbed
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue