1 /*
2  * Copyright (c) 2018-2022 mcumgr authors
3  * Copyright (c) 2022 Laird Connectivity
4  * Copyright (c) 2022-2023 Nordic Semiconductor ASA
5  *
6  * SPDX-License-Identifier: Apache-2.0
7  */
8 
9 #ifndef H_FS_MGMT_
10 #define H_FS_MGMT_
11 
12 #ifdef __cplusplus
13 extern "C" {
14 #endif
15 
16 /**
17  * Command IDs for file system management group.
18  */
19 #define FS_MGMT_ID_FILE				0
20 #define FS_MGMT_ID_STAT				1
21 #define FS_MGMT_ID_HASH_CHECKSUM		2
22 #define FS_MGMT_ID_SUPPORTED_HASH_CHECKSUM	3
23 #define FS_MGMT_ID_OPENED_FILE			4
24 
25 /**
26  * Command result codes for file system management group.
27  */
28 enum fs_mgmt_err_code_t {
29 	/** No error, this is implied if there is no ret value in the response */
30 	FS_MGMT_ERR_OK = 0,
31 
32 	/** Unknown error occurred. */
33 	FS_MGMT_ERR_UNKNOWN,
34 
35 	/** The specified file name is not valid. */
36 	FS_MGMT_ERR_FILE_INVALID_NAME,
37 
38 	/** The specified file does not exist. */
39 	FS_MGMT_ERR_FILE_NOT_FOUND,
40 
41 	/** The specified file is a directory, not a file. */
42 	FS_MGMT_ERR_FILE_IS_DIRECTORY,
43 
44 	/** Error occurred whilst attempting to open a file. */
45 	FS_MGMT_ERR_FILE_OPEN_FAILED,
46 
47 	/** Error occurred whilst attempting to seek to an offset in a file. */
48 	FS_MGMT_ERR_FILE_SEEK_FAILED,
49 
50 	/** Error occurred whilst attempting to read data from a file. */
51 	FS_MGMT_ERR_FILE_READ_FAILED,
52 
53 	/** Error occurred whilst trying to truncate file. */
54 	FS_MGMT_ERR_FILE_TRUNCATE_FAILED,
55 
56 	/** Error occurred whilst trying to delete file. */
57 	FS_MGMT_ERR_FILE_DELETE_FAILED,
58 
59 	/** Error occurred whilst attempting to write data to a file. */
60 	FS_MGMT_ERR_FILE_WRITE_FAILED,
61 
62 	/**
63 	 * The specified data offset is not valid, this could indicate that the file on the device
64 	 * has changed since the previous command. The length of the current file on the device is
65 	 * returned as "len", the user application needs to decide how to handle this (e.g. the
66 	 * hash of the file could be requested and compared with the hash of the length of the
67 	 * file being uploaded to see if they match or not).
68 	 */
69 	FS_MGMT_ERR_FILE_OFFSET_NOT_VALID,
70 
71 	/** The requested offset is larger than the size of the file on the device. */
72 	FS_MGMT_ERR_FILE_OFFSET_LARGER_THAN_FILE,
73 
74 	/** The requested checksum or hash type was not found or is not supported by this build. */
75 	FS_MGMT_ERR_CHECKSUM_HASH_NOT_FOUND,
76 
77 	/** The specified mount point was not found or is not mounted. */
78 	FS_MGMT_ERR_MOUNT_POINT_NOT_FOUND,
79 
80 	/** The specified mount point is that of a read-only filesystem. */
81 	FS_MGMT_ERR_READ_ONLY_FILESYSTEM,
82 
83 	/** The operation cannot be performed because the file is empty with no contents. */
84 	FS_MGMT_ERR_FILE_EMPTY,
85 };
86 
87 #ifdef __cplusplus
88 }
89 #endif
90 
91 #endif
92