X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/8fce4520de1f257819b16f9253fa28dcdae743f4..59ecf21e36b2332f6adf2a568ef555283d8c119a:/lunaix-os/includes/hal/serial.h diff --git a/lunaix-os/includes/hal/serial.h b/lunaix-os/includes/hal/serial.h index b2fdf5e..c346c51 100644 --- a/lunaix-os/includes/hal/serial.h +++ b/lunaix-os/includes/hal/serial.h @@ -2,10 +2,12 @@ #define __LUNAIX_SERIAL_H #include -#include #include #include #include +#include + +#include #define SERIAL_RW_RX 0x0 #define SERIAL_RW_TX 0x1 @@ -24,12 +26,12 @@ struct serial_dev { struct llist_header sdev_list; struct device* dev; - mutex_t lock; struct waitq wq_rxdone; struct waitq wq_txdone; + struct term* at_term; void* backend; - struct fifo_buf rxbuf; + struct rbuffer rxbuf; int wr_len; /** @@ -42,8 +44,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);