Serial Passthrough program with Ring Buffer.
Fork of SerialPassthrough by
Diff: main.cpp
- 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); + } } }