MAX3100, an external serial device to add additional serial ports via SPI

Dependents:   FLIGHT_CONTROL_AND_COMMUNICATIONS_SYSTEM

Revision:
2:2a49171453d5
Parent:
1:46c8c60e744a
--- a/MAX3100.cpp	Mon Jan 17 01:14:16 2011 +0000
+++ b/MAX3100.cpp	Fri Aug 03 12:28:27 2012 +0000
@@ -37,6 +37,10 @@
     _cs_obj      = NULL;
     _cs_method   = NULL;
     
+    _isr_user_function = NULL;
+    _isr_user_obj      = NULL;
+    _isr_user_method   = NULL;
+    
     if (cs != NC) {    
         _cs = new DigitalOut(cs);
         _cs->write( 1 );
@@ -254,7 +258,23 @@
         rx_buffer[rx_buffer_in++] = (char)(data & 0xFF);
         if (rx_buffer_in >= MAX3100_RX_BUFFER_SIZE) rx_buffer_in = 0;
         if (rx_buffer_in == rx_buffer_out) rx_buffer_full = true;
-    }        
+    }
+    
+    int isrType = MAX3100::ISR;     
+    
+    if ( data & MAX3100_CONF_R ) {
+        isrType |= MAX3100::ISR_RX;     
+    }
+    
+    if ( tx_ready ) {
+        isrType |= MAX3100::ISR_TX;     
+    }
+    
+    
+    if (_isr_user_function != NULL) (*_isr_user_function)( isrType );
+    else {
+       if (_isr_user_obj && _isr_user_method) (_isr_user_obj->*_isr_user_method)( isrType );
+    }   
 }
 
 void