#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 <hal/term.h>
+
+#include <usr/lunaix/serial.h>
#define SERIAL_RW_RX 0x0
#define SERIAL_RW_TX 0x1
struct waitq wq_txdone;
void* backend;
- struct fifo_buf rxbuf;
+ struct rbuffer rxbuf;
int wr_len;
+ struct termport_potens* tp_cap;
+
/**
* @brief Write buffer to TX. The return code indicate
* the transaction is either done in synced mode (TX_DONE) or will be
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(struct devclass* class);
+serial_create(struct devclass* class, char* if_ident);
void
serial_readone(struct serial_dev* sdev, u8_t* val);