Serial Passthrough program with Ring Buffer.

Dependencies:   RingBuffer mbed

Fork of SerialPassthrough by Sarah Marsh

Revision:
7:44d819c8b2c8
Parent:
6:2a3a62ee17fa
--- a/main.cpp	Tue Apr 11 20:16:53 2017 +0000
+++ b/main.cpp	Sat Jun 03 19:24:45 2017 +0000
@@ -1,35 +1,44 @@
 #include "mbed.h"
+#include "RingBuffer.h"
 
 RawSerial  pc(USBTX, USBRX);
 RawSerial  dev(D1, D0);
-DigitalOut led1(LED1);
-DigitalOut led4(LED4);
+
+RingBuffer pc2devBuffer(1024);
+RingBuffer dev2pcBuffer(1024);
 
 void dev_recv()
 {
-    led1 = !led1;
-    while(dev.readable()) {
-        pc.putc(dev.getc());
-    }
+    dev2pcBuffer.put(dev.getc());
 }
 
 void pc_recv()
 {
-    led4 = !led4;
-    while(pc.readable()) {
-        dev.putc(pc.getc());
-    }
+    pc2devBuffer.put(pc.getc());
 }
 
 int main()
 {
+    char tmp;
+    int ret;
     pc.baud(115200);
     dev.baud(115200);
 
     pc.attach(&pc_recv, Serial::RxIrq);
     dev.attach(&dev_recv, Serial::RxIrq);
 
-    while(1) {
-        sleep();
+    while(1)
+    {
+        ret = dev2pcBuffer.get(&tmp);
+        if( ret == 0 )
+        {
+            pc.putc(tmp);
+        }
+        
+        ret = pc2devBuffer.get(&tmp);
+        if( ret == 0 )
+        {
+            dev.putc(tmp);
+        }
     }
 }