Explorar el Código

Ring buffer index incrementation

Ring buffer functions were not incrementing index, which caused improper work of these functions.
Mateusz Bugdalski hace 13 años
padre
commit
d2679884fe
Se han modificado 1 ficheros con 3 adiciones y 4 borrados
  1. 3 4
      serial.c

+ 3 - 4
serial.c

@@ -221,8 +221,6 @@ void serial_communicate(struct serial_device *port, int infd, int outfd) {
       n = write(port->fd, buf, n);
       ringbuf_move(&port->out_buf, n);
     }
-
-
     
     if(FD_ISSET(infd, &read_set)) {
       bytes = sizeof(port->out_buf.data) - port->out_buf.size;
@@ -271,7 +269,7 @@ int ringbuf_append(struct ring_buf *buf, const char *data, unsigned int len) {
   for(i=0; i<len; i++) {
     if(p>=sizeof(buf->data))
       p -= sizeof(buf->data);
-    buf->data[p] = data[i];
+    buf->data[p++] = data[i];
   }
   buf->size += len;
   return 0;
@@ -288,6 +286,7 @@ int ringbuf_getline(struct ring_buf *buf, char *data, unsigned int len) {
     if(p>=sizeof(buf->data))
       p -= sizeof(buf->data);
     if(buf->data[p]=='\r' || buf->data[p]=='\n') break;
+    p++;
   }
   
   if((len-datap-1)<i) return -1;
@@ -321,7 +320,7 @@ int ringbuf_getdata(struct ring_buf *buf, char *data, unsigned int len) {
   for(i=0; i<len; i++) {
     if(p>=sizeof(buf->data))
       p -= sizeof(buf->data);
-    data[i] = buf->data[p];
+    data[i] = buf->data[p++];
   }
   return len;
 }