gjhn

Dependents:   BLE_GENERALE

Fork of X_NUCLEO_IDB0XA1 by ST

Revision:
173:821942ac7d5a
Parent:
169:485bbcddf0c3
Child:
177:65d9b1b75fca
Child:
183:3bc6d59b9c81
--- a/source/BlueNRGDevice.cpp	Mon Nov 09 08:36:16 2015 +0100
+++ b/source/BlueNRGDevice.cpp	Tue Nov 10 06:25:29 2015 +0100
@@ -140,6 +140,14 @@
 	irq_.mode(PullDown); // betzw: set irq mode
 	irq_.rise(&HCI_Isr);
 
+	// betzw - WORKAROUND: exploit current mbed 'InterruptIn' implementation
+	//                     to handle spurious BlueNRG interrupts
+	irq_.fall(&HCI_Isr); // attach IRQ handler & enable IRQ 
+	irq_.fall(NULL);     // this doesn't clear the attachment but just disables the IRQ!
+                             // In this way spurious BlueNRG interrupts (e.g. IRQs happening
+	                     // even without being enabled) end up in a real IRQ handler 
+	                     // function rather than in a NULL pointer (i.e. in a hard fault).
+	
 	/* ToDo: Clear memory contents, reset the SD, etc. */
 	// By default, we set the device GAP role to PERIPHERAL
 	btle_init(BlueNRGGap::getInstance().getIsSetAddress(), GAP_PERIPHERAL_ROLE_IDB04A1);