Parcourir la source

Ring buffer index incrementation

Ring buffer functions were not incrementing index, which caused improper work of these functions.
Mateusz Bugdalski il y a 13 ans
Parent
commit
d2679884fe
1 fichiers modifiés avec 3 ajouts et 4 suppressions
  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;
 }