Line data Source code
1 0 : /*
2 : * Copyright (c) 2016 Intel Corporation.
3 : *
4 : * SPDX-License-Identifier: Apache-2.0
5 : */
6 :
7 : #ifndef ZEPHYR_INCLUDE_FS_FS_INTERFACE_H_
8 : #define ZEPHYR_INCLUDE_FS_FS_INTERFACE_H_
9 :
10 : #include <stdint.h>
11 :
12 : #ifdef __cplusplus
13 : extern "C" {
14 : #endif
15 :
16 : #if defined(CONFIG_FILE_SYSTEM_MAX_FILE_NAME) && (CONFIG_FILE_SYSTEM_MAX_FILE_NAME - 0) > 0
17 :
18 : /* No in-tree file system supports name longer than 255 characters */
19 : #if (CONFIG_FILE_SYSTEM_LITTLEFS || CONFIG_FAT_FILESYSTEM_ELM || \
20 : CONFIG_FILE_SYSTEM_EXT2) && (CONFIG_FILE_SYSTEM_MAX_FILE_NAME > 255)
21 : #error "Max allowed CONFIG_FILE_SYSTEM_MAX_FILE_NAME is 255 characters, when any in-tree FS enabled"
22 : #endif
23 :
24 : /* Enabled FAT driver, without LFN, restricts name length to 12 characters */
25 : #if defined(CONFIG_FAT_FILESYSTEM_ELM) && !(CONFIG_FS_FATFS_LFN) && \
26 : (CONFIG_FILE_SYSTEM_MAX_FILE_NAME > 12)
27 : #error "CONFIG_FILE_SYSTEM_MAX_FILE_NAME can not be > 12 if FAT is enabled without LFN"
28 : #endif
29 :
30 : #define MAX_FILE_NAME CONFIG_FILE_SYSTEM_MAX_FILE_NAME
31 :
32 : #else
33 : /* Select from enabled file systems */
34 :
35 : #if defined(CONFIG_FAT_FILESYSTEM_ELM)
36 :
37 : #if defined(CONFIG_FS_FATFS_LFN)
38 : #define MAX_FILE_NAME CONFIG_FS_FATFS_MAX_LFN
39 : #else /* CONFIG_FS_FATFS_LFN */
40 : #define MAX_FILE_NAME 12 /* Uses 8.3 SFN */
41 : #endif /* CONFIG_FS_FATFS_LFN */
42 :
43 : #endif
44 :
45 : #if !defined(MAX_FILE_NAME) && defined(CONFIG_FILE_SYSTEM_EXT2)
46 : #define MAX_FILE_NAME 255
47 : #endif
48 :
49 : #if !defined(MAX_FILE_NAME) && defined(CONFIG_FILE_SYSTEM_LITTLEFS)
50 : #define MAX_FILE_NAME 255
51 : #endif
52 :
53 : #if !defined(MAX_FILE_NAME) && defined(CONFIG_FILE_SYSTEM_VIRTIOFS)
54 : #define MAX_FILE_NAME 255
55 : #endif
56 :
57 : #if !defined(MAX_FILE_NAME) /* filesystem selection */
58 : /* Use standard 8.3 when no filesystem is explicitly selected */
59 0 : #define MAX_FILE_NAME 12
60 : #endif /* filesystem selection */
61 :
62 : #endif /* CONFIG_FILE_SYSTEM_MAX_FILE_NAME */
63 :
64 :
65 : /* Type for fs_open flags */
66 0 : typedef uint8_t fs_mode_t;
67 :
68 : struct fs_mount_t;
69 :
70 : /**
71 : * @addtogroup file_system_api
72 : * @{
73 : */
74 :
75 : /**
76 : * @brief File object representing an open file
77 : *
78 : * The object needs to be initialized with fs_file_t_init().
79 : */
80 1 : struct fs_file_t {
81 : /** Pointer to file object structure */
82 1 : void *filep;
83 : /** Pointer to mount point structure */
84 1 : const struct fs_mount_t *mp;
85 : /** Open/create flags */
86 1 : fs_mode_t flags;
87 : };
88 :
89 : /**
90 : * @brief Directory object representing an open directory
91 : *
92 : * The object needs to be initialized with fs_dir_t_init().
93 : */
94 1 : struct fs_dir_t {
95 : /** Pointer to directory object structure */
96 1 : void *dirp;
97 : /** Pointer to mount point structure */
98 1 : const struct fs_mount_t *mp;
99 : };
100 :
101 : /**
102 : * @}
103 : */
104 :
105 : #ifdef __cplusplus
106 : }
107 : #endif
108 :
109 : #endif /* ZEPHYR_INCLUDE_FS_FS_INTERFACE_H_ */
|