函数 | |
UINT32 | SerialTypeGet (VOID) |
STATIC VOID | SerialTypeSet (const CHAR *deviceName) |
设置串口类型,从这里看鸿蒙暂时支持两种串口 更多... | |
STATIC INT32 | SerialOpen (struct file *filep) |
打开串口设备 更多... | |
STATIC INT32 | SerialClose (struct file *filep) |
关闭串口设备 更多... | |
STATIC ssize_t | SerialRead (struct file *filep, CHAR *buffer, size_t bufLen) |
读取串口数据,参数 filep 是由 /dev/serial 打开获得的文件 更多... | |
STATIC ssize_t | SerialWrite (struct file *filep, const CHAR *buffer, size_t bufLen) |
写入串口数据 更多... | |
STATIC INT32 | SerialIoctl (struct file *filep, INT32 cmd, unsigned long arg) |
控制串口设备 更多... | |
STATIC INT32 | SerialPoll (struct file *filep, poll_table *fds) |
事件查询, UartHostPollEvent(Uart) --> Hi35xxPollEvent --> poll_wait 更多... | |
INT32 | virtual_serial_init (const CHAR *deviceName) |
虚拟串口初始化,注册驱动程序 ,例如 : deviceName = "/dev/uartdev-0" 更多... | |
INT32 | virtual_serial_deinit (VOID) |
串口设备去初始化,其实就是注销驱动程序 更多... | |
变量 | |
STATIC volatile UINT32 | g_serialType = 0 |
STATIC struct file | g_serialFilep |
STATIC const struct file_operations_vfs | g_serialDevOps |
控制串口设备
在文件 virtual_serial.c 第 175 行定义.
打开串口设备
在文件 virtual_serial.c 第 78 行定义.
事件查询, UartHostPollEvent(Uart) --> Hi35xxPollEvent --> poll_wait
在文件 virtual_serial.c 第 198 行定义.
读取串口数据,参数 filep 是由 /dev/serial 打开获得的文件
在文件 virtual_serial.c 第 122 行定义.
UINT32 SerialTypeGet | ( | VOID | ) |
STATIC VOID SerialTypeSet | ( | const CHAR * | deviceName | ) |
写入串口数据
在文件 virtual_serial.c 第 152 行定义.
INT32 virtual_serial_deinit | ( | VOID | ) |
串口设备去初始化,其实就是注销驱动程序
在文件 virtual_serial.c 第 324 行定义.
虚拟串口初始化,注册驱动程序 ,例如 : deviceName = "/dev/uartdev-0"
在文件 virtual_serial.c 第 282 行定义.
STATIC const struct file_operations_vfs g_serialDevOps |
串口实现VFS接口, 以hi35xx为例,列出底层路径 调用读/写的过程如下,一直调到UART最底层驱动 g_consoleDevOps(上级) g_serialDevOps(本级) g_uartDevFops g_uartHostMethod Pl011Read (读) memcpy_s(buf,rxTransfer->data, ... ) g_pl011Uops (写) Pl011StartTx UartPutsReg 控制函数实现 static int32_t UartDevIoctl(struct file *filep, int32_t cmd, unsigned long arg) { int32_t ret = HDF_FAILURE; struct UartHost *host = NULL; if (filep == NULL || filep->f_vnode == NULL) { return HDF_ERR_INVALID_PARAM; } struct drv_data *drv = (struct drv_data *)filep->f_vnode->data; host = (struct UartHost *)drv->priv;
switch (cmd) { case UART_CFG_BAUDRATE: ret = UartHostSetBaud(host, arg); break; case UART_CFG_RD_BLOCK: if (arg == UART_RD_BLOCK) { ret = UartHostSetTransMode(host, UART_MODE_RD_BLOCK); } else if (arg == UART_RD_NONBLOCK) { ret = UartHostSetTransMode(host, UART_MODE_RD_NONBLOCK); } break; case UART_CFG_ATTR: ret = UartCfgAttr(host, arg); break; case TIOCGWINSZ: /* Simply support ioctl(f->fd, TIOCGWINSZ, &wsz) system call, and the detailed design will be done later * / ret = LOS_OK; break; default: HDF_LOGE("%s cmd %d not support", func, cmd); ret = HDF_ERR_NOT_SUPPORT; break; } return ret; }
在文件 virtual_serial.c 第 268 行定义.
STATIC struct file g_serialFilep |
在文件 virtual_serial.c 第 61 行定义.
STATIC volatile UINT32 g_serialType = 0 |
在文件 virtual_serial.c 第 60 行定义.