changed to terminate the event data with a zero character instead of line feed character

This commit is contained in:
nifi 2006-07-03 11:29:16 +00:00
parent d376b3fe9d
commit a63bbe05ba

View file

@ -28,7 +28,7 @@
* *
* This file is part of the Contiki operating system. * This file is part of the Contiki operating system.
* *
* @(#)$Id: serial.c,v 1.1 2006/06/17 22:41:17 adamdunkels Exp $ * @(#)$Id: serial.c,v 1.2 2006/07/03 11:29:16 nifi Exp $
*/ */
#include "serial.h" #include "serial.h"
#include <string.h> /* for memcpy() */ #include <string.h> /* for memcpy() */
@ -44,8 +44,8 @@
#define END 0x0a #define END 0x0a
static char buffer[BUFSIZE], appbuffer[BUFSIZE]; static char buffer[BUFSIZE], appbuffer[BUFSIZE];
static unsigned char bufwptr; static volatile unsigned char bufwptr;
static char buffer_full = 0; static volatile char buffer_full = 0;
PROCESS(serial_process, "Serial driver"); PROCESS(serial_process, "Serial driver");
@ -56,16 +56,18 @@ int
serial_input_byte(unsigned char c) serial_input_byte(unsigned char c)
{ {
if(!buffer_full && !IGNORE_CHAR(c)) { if(!buffer_full && !IGNORE_CHAR(c)) {
buffer[bufwptr] = c;
if(bufwptr < BUFSIZE) {
++bufwptr;
}
if(c == END) { if(c == END) {
/* terminate the string */
buffer[bufwptr++] = '\0';
buffer_full++; buffer_full++;
process_poll(&serial_process); process_poll(&serial_process);
return 1; return 1;
} }
/* reserve space for the terminating zero character */
if(bufwptr < (BUFSIZE - 1)) {
buffer[bufwptr++] = c;
}
} }
return 0; return 0;
} }
@ -85,8 +87,8 @@ PROCESS_THREAD(serial_process, ev, data)
if(buffer_full) { if(buffer_full) {
memcpy(appbuffer, buffer, bufwptr); memcpy(appbuffer, buffer, bufwptr);
process_post(PROCESS_BROADCAST, serial_event_message, appbuffer); process_post(PROCESS_BROADCAST, serial_event_message, appbuffer);
buffer_full = 0;
bufwptr = 0; bufwptr = 0;
buffer_full = 0;
} }
} }