integrate C/LDFLAGS into LunaBuild flow
[lunaix-os.git] / lunaix-os / includes / hal / serial.h
index b2fdf5ebc2ff6906a2d6f9570562fc11c99c63a4..f65fd08aa74483dcb8422990da737f6d3a20b53a 100644 (file)
@@ -2,10 +2,12 @@
 #define __LUNAIX_SERIAL_H
 
 #include <lunaix/device.h>
-#include <lunaix/ds/fifo.h>
 #include <lunaix/ds/llist.h>
 #include <lunaix/ds/mutex.h>
 #include <lunaix/ds/waitq.h>
+#include <lunaix/ds/rbuffer.h>
+
+#include <usr/lunaix/serial.h>
 
 #define SERIAL_RW_RX 0x0
 #define SERIAL_RW_TX 0x1
@@ -24,12 +26,11 @@ struct serial_dev
 {
     struct llist_header sdev_list;
     struct device* dev;
-    mutex_t lock;
     struct waitq wq_rxdone;
     struct waitq wq_txdone;
     void* backend;
 
-    struct fifo_buf rxbuf;
+    struct rbuffer rxbuf;
     int wr_len;
 
     /**
@@ -42,8 +43,18 @@ struct serial_dev
     int (*exec_cmd)(struct serial_dev* sdev, u32_t, va_list);
 };
 
+/**
+ * @brief Create a serial device.
+ *
+ *
+ * @param if_ident a string that differentiate the underlying interface of
+ * serial ports
+ * @param with_tty whether a `/dev/tty*` will be automatically created and
+ * attach to it.
+ * @return struct serial_dev*
+ */
 struct serial_dev*
-serial_create();
+serial_create(struct devclass* class, char* if_ident);
 
 void
 serial_readone(struct serial_dev* sdev, u8_t* val);