diff --git a/components/esp_driver_uart/include/driver/esp_private/uart_vfs.h b/components/esp_driver_uart/include/driver/esp_private/uart_vfs.h index c83e513ab5..b74996ae6f 100644 --- a/components/esp_driver_uart/include/driver/esp_private/uart_vfs.h +++ b/components/esp_driver_uart/include/driver/esp_private/uart_vfs.h @@ -20,7 +20,7 @@ extern "C" { * * @return pointer to structure esp_vfs_t */ -const esp_vfs_t *esp_vfs_uart_get_vfs(void); +const esp_vfs_fs_ops_t *esp_vfs_uart_get_vfs(void); #ifdef __cplusplus } diff --git a/components/esp_driver_uart/src/uart_vfs.c b/components/esp_driver_uart/src/uart_vfs.c index 6e5a0dbfaf..6c38b41867 100644 --- a/components/esp_driver_uart/src/uart_vfs.c +++ b/components/esp_driver_uart/src/uart_vfs.c @@ -985,8 +985,29 @@ static int uart_tcflush(int fd, int select) } #endif // CONFIG_VFS_SUPPORT_TERMIOS -static const esp_vfs_t uart_vfs = { - .flags = ESP_VFS_FLAG_DEFAULT, +#ifdef CONFIG_VFS_SUPPORT_DIR +static const esp_vfs_dir_ops_t s_vfs_uart_dir = { + .access = &uart_access, +}; +#endif // CONFIG_VFS_SUPPORT_DIR + +#ifdef CONFIG_VFS_SUPPORT_SELECT +static const esp_vfs_select_ops_t s_vfs_uart_select = { + .start_select = &uart_start_select, + .end_select = &uart_end_select, +}; +#endif // CONFIG_VFS_SUPPORT_SELECT + +#ifdef CONFIG_VFS_SUPPORT_TERMIOS +static const esp_vfs_termios_ops_t s_vfs_uart_termios = { + .tcsetattr = &uart_tcsetattr, + .tcgetattr = &uart_tcgetattr, + .tcdrain = &uart_tcdrain, + .tcflush = &uart_tcflush, +}; +#endif // CONFIG_VFS_SUPPORT_TERMIOS + +static const esp_vfs_fs_ops_t s_vfs_uart = { .write = &uart_write, .open = &uart_open, .fstat = &uart_fstat, @@ -995,28 +1016,24 @@ static const esp_vfs_t uart_vfs = { .fcntl = &uart_fcntl, .fsync = &uart_fsync, #ifdef CONFIG_VFS_SUPPORT_DIR - .access = &uart_access, + .dir = &s_vfs_uart_dir, #endif // CONFIG_VFS_SUPPORT_DIR #ifdef CONFIG_VFS_SUPPORT_SELECT - .start_select = &uart_start_select, - .end_select = &uart_end_select, + .select = &s_vfs_uart_select, #endif // CONFIG_VFS_SUPPORT_SELECT #ifdef CONFIG_VFS_SUPPORT_TERMIOS - .tcsetattr = &uart_tcsetattr, - .tcgetattr = &uart_tcgetattr, - .tcdrain = &uart_tcdrain, - .tcflush = &uart_tcflush, + .termios = &s_vfs_uart_termios, #endif // CONFIG_VFS_SUPPORT_TERMIOS }; -const esp_vfs_t *esp_vfs_uart_get_vfs(void) +const esp_vfs_fs_ops_t *esp_vfs_uart_get_vfs(void) { - return &uart_vfs; + return &s_vfs_uart; } void uart_vfs_dev_register(void) { - ESP_ERROR_CHECK(esp_vfs_register("/dev/uart", &uart_vfs, NULL)); + ESP_ERROR_CHECK(esp_vfs_register_fs("/dev/uart", &s_vfs_uart, ESP_VFS_FLAG_STATIC, NULL)); } int uart_vfs_dev_port_set_rx_line_endings(int uart_num, esp_line_endings_t mode)