Echo buffer circulaire

Revision:
10:8895b56c630c
Parent:
9:a9dfb95b5d8a
diff -r a9dfb95b5d8a -r 8895b56c630c main.cpp
--- a/main.cpp	Sun Nov 22 15:15:15 2020 +0000
+++ b/main.cpp	Mon Nov 23 22:19:13 2020 +0000
@@ -1,27 +1,33 @@
 #include "mbed.h"
-// Echo
+// Echo avec buffer circulaire
 // lien serie via USB avec Terarerm
-// GR 2020
 // Universite Paris-Saclay - IUT Cachan
 RawSerial pc_raw(USBTX, USBRX);  // ou SERIAL-TX, SERIAL_RX  ou PA_2,PA_3
+CircularBuffer < char, 1024> mon_buffer;  // buffer circulaire de 1024 char
 DigitalOut ledB(D8);
 void reception_symbole(void);
 int main()
 {
+    char symbole;
     pc_raw.baud(115200);
     pc_raw.attach(&reception_symbole);
-    pc_raw.printf("Echo test\r\n");
+    pc_raw.printf("Echo test buffer circulaire\r\n");
     ledB=0;
+    mon_buffer.reset();
     while(1) {
+        while(!mon_buffer.empty()) {
+            mon_buffer.pop(symbole);
+            pc_raw.putc(symbole);
+        }
     }
 }
 void reception_symbole(void)
 {
-    unsigned char c;
+    char symbole;
     if(pc_raw.readable()) {
         ledB=!ledB;
-        c=pc_raw.getc();
-        pc_raw.putc(c);
+        symbole=pc_raw.getc();
+        mon_buffer.push(symbole);
     }
 }