blob: 23c4a33fb1d84f270022337576daa68330616c40 [file] [log] [blame]
/*
* Copyright (c) 2018-2022 mcumgr authors
* Copyright (c) 2022 Laird Connectivity
* Copyright (c) 2022-2023 Nordic Semiconductor ASA
*
* SPDX-License-Identifier: Apache-2.0
*/
#ifndef H_FS_MGMT_
#define H_FS_MGMT_
#ifdef __cplusplus
extern "C" {
#endif
/**
* Command IDs for file system management group.
*/
#define FS_MGMT_ID_FILE 0
#define FS_MGMT_ID_STAT 1
#define FS_MGMT_ID_HASH_CHECKSUM 2
#define FS_MGMT_ID_SUPPORTED_HASH_CHECKSUM 3
#define FS_MGMT_ID_OPENED_FILE 4
/**
* Command result codes for file system management group.
*/
enum fs_mgmt_ret_code_t {
/** No error, this is implied if there is no ret value in the response */
FS_MGMT_RET_RC_OK = 0,
/** Unknown error occurred. */
FS_MGMT_RET_RC_UNKNOWN,
/** The specified file name is not valid. */
FS_MGMT_RET_RC_FILE_INVALID_NAME,
/** The specified file does not exist. */
FS_MGMT_RET_RC_FILE_NOT_FOUND,
/** The specified file is a directory, not a file. */
FS_MGMT_RET_RC_FILE_IS_DIRECTORY,
/** Error occurred whilst attempting to open a file. */
FS_MGMT_RET_RC_FILE_OPEN_FAILED,
/** Error occurred whilst attempting to seek to an offset in a file. */
FS_MGMT_RET_RC_FILE_SEEK_FAILED,
/** Error occurred whilst attempting to read data from a file. */
FS_MGMT_RET_RC_FILE_READ_FAILED,
/** Error occurred whilst trying to truncate file. */
FS_MGMT_RET_RC_FILE_TRUNCATE_FAILED,
/** Error occurred whilst trying to delete file. */
FS_MGMT_RET_RC_FILE_DELETE_FAILED,
/** Error occurred whilst attempting to write data to a file. */
FS_MGMT_RET_RC_FILE_WRITE_FAILED,
/**
* The specified data offset is not valid, this could indicate that the file on the device
* has changed since the previous command. The length of the current file on the device is
* returned as "len", the user application needs to decide how to handle this (e.g. the
* hash of the file could be requested and compared with the hash of the length of the
* file being uploaded to see if they match or not).
*/
FS_MGMT_RET_RC_FILE_OFFSET_NOT_VALID,
/** The requested offset is larger than the size of the file on the device. */
FS_MGMT_RET_RC_FILE_OFFSET_LARGER_THAN_FILE,
/** The requested checksum or hash type was not found or is not supported by this build. */
FS_MGMT_RET_RC_CHECKSUM_HASH_NOT_FOUND,
};
#ifdef CONFIG_MCUMGR_SMP_SUPPORT_ORIGINAL_PROTOCOL
/*
* @brief Translate FS mgmt group error code into MCUmgr error code
*
* @param ret #fs_mgmt_ret_code_t error code
*
* @return #mcumgr_err_t error code
*/
int fs_mgmt_translate_error_code(uint16_t ret);
#endif
#ifdef __cplusplus
}
#endif
#endif