I2CRTOS Driver by Helmut Schmücker. Removed included mbed-rtos library to prevent multiple definition. Make sure to include mbed-rtos library in your program!

Fork of I2cRtosDriver by Helmut Schmücker

Revision:
7:04824382eafb
Parent:
6:5b98c902a659
Child:
8:5be85bd4c5ba
--- a/I2CDriver.cpp	Sat Apr 20 20:06:44 2013 +0000
+++ b/I2CDriver.cpp	Sun Apr 28 15:08:04 2013 +0000
@@ -2,10 +2,13 @@
 #include "i2c_api.h"
 #include "error.h"
 
+#include "DigitalOut.h"
+
 using namespace mbed;
 using namespace rtos;
 
-//#define I2C_ISR_DRV_SIG (1<<7)
+DigitalOut osci(p12);
+
 #define DRV_USR_SIG (1<<6)
 
 const PinName I2CDriver::c_sdas[] = {p9,p28};
@@ -16,19 +19,23 @@
 #if defined(TARGET_LPC1768)
 void I2CDriver::channel_0_ISR()
 {
+    osci.write(1);
     osSignalSet( s_channels[0]->driver, I2C_ISR_DRV_SIG);
     NVIC_DisableIRQ(I2C1_IRQn);
+    osci.write(0);
 }
 #endif
 
 void I2CDriver::channel_1_ISR()
 {
+    osci.write(1);
     osSignalSet( s_channels[1]->driver, I2C_ISR_DRV_SIG);
 #if defined(TARGET_LPC1768) || defined(TARGET_LPC2368)
     NVIC_DisableIRQ(I2C2_IRQn);
 #elif defined(TARGET_LPC11U24)
     NVIC_DisableIRQ(I2C_IRQn);
 #endif
+    osci.write(0);
 }
 
 
@@ -105,6 +112,7 @@
                 tr.ret = i2c_read(&i2c, tr.adr, tr.dta, tr.len, (tr.rep?0:1));
                 break;
             case READ_MST_REG:
+                //printf("Disco\n");
                 tr.ret = i2c_write(&i2c, tr.adr,(const char*)&(tr.reg), 1, 0);
                 if(tr.ret)break; // error => bail out
                 tr.ret = i2c_read(&i2c, tr.adr, tr.dta, tr.len, (tr.rep?0:1));