properly drop characters when buffer is full

fix by David Kopf
This commit is contained in:
maralvira 2010-07-06 13:39:34 +00:00
parent 3fc00a8bed
commit 5b44d6a29a

View file

@ -30,7 +30,7 @@
* This file is part of libmc1322x: see http://mc1322x.devl.org * This file is part of libmc1322x: see http://mc1322x.devl.org
* for details. * for details.
* *
* $Id: uart1.c,v 1.1 2010/06/10 14:55:39 maralvira Exp $ * $Id: uart1.c,v 1.2 2010/07/06 13:39:34 maralvira Exp $
*/ */
#include <mc1322x.h> #include <mc1322x.h>
@ -65,8 +65,9 @@ void uart1_putc(char c) {
u1_head += 1; u1_head += 1;
if (u1_head >= sizeof(u1_tx_buf)) if (u1_head >= sizeof(u1_tx_buf))
u1_head = 0; u1_head = 0;
if (u1_head == u1_tail) /* drop chars when no room */ if (u1_head == u1_tail) { /* drop chars when no room */
return; if (u1_head) { u1_head -=1; } else { u1_head = sizeof(u1_tx_buf); }
}
enable_irq(UART1); enable_irq(UART1);
} }
} }