OSDN Git Service

[UART] Load via S-Record is okay. Setting is 57600bps, 8N1, but some of noise (bit7...
[openi2cradio/OpenI2CRadio.git] / uart_termio.c
index 1af1c8e..5e70e25 100644 (file)
@@ -49,7 +49,7 @@ unsigned char uart_term_putstr(unsigned char *s)
     if((uart_getstat() & UART_WAKEUP) == 0) return 0; // Error
     while(s[p] != 0x00)
     {
-        uart_pushchar(s[p], 100); // Timeout = 10ms
+        uart_pushchar(s[p], 200); // Timeout = 10ms
         p++;
         if(p >= 255) return 0; // Overlen
     }
@@ -58,7 +58,7 @@ unsigned char uart_term_putstr(unsigned char *s)
 
 void uart_term_getstr(unsigned char *s, unsigned int timeout, unsigned char echo)
 {
-    unsigned char i = 0;
+    unsigned int i = 0;
     unsigned char c = 0x00;
     unsigned int tim;
     unsigned char pwr;
@@ -76,12 +76,15 @@ void uart_term_getstr(unsigned char *s, unsigned int timeout, unsigned char echo
               cnt = 0;
            }
            cnt++;
-            if(echo != 0) uart_pushchar(c, 0); // Echoback
+            if(echo != 0) uart_pushchar(c, 200); // Echoback
             if(c == '\b') { // BS
-                if(i > 0) i--;
-                s[i] = '\0';
-            } else {
-                s[i] = c;
+                if(i > 0) {
+                  s[i] = '\0';
+                  i--;
+               }
+            } else
+            if(c < 0x80) {
+               s[i] = c;
                 i++;
                 if((c == '\t') || (c == '\n') || (c == '\r')) break; // TAB OR CR
                 if(i >= 128) break;