mirror of
https://github.com/cesanta/mongoose.git
synced 2024-12-27 15:01:03 +08:00
CC3220 FS support
For now, we only support SPIFFS-in-a-box, same as CC3200. On CC3200SF it should be possible to have SPIFFS on built-in flash, but that is left for later. PUBLISHED_FROM=dee337c8cd8ed288c22abe9960eef81e6e90cc4a
This commit is contained in:
parent
d5a9000d46
commit
c7bea65ae7
48
mongoose.c
48
mongoose.c
@ -12675,12 +12675,22 @@ void fs_slfs_set_new_file_size(const char *name, size_t size);
|
||||
#if CS_PLATFORM == CS_P_CC3200
|
||||
#include <inc/hw_types.h>
|
||||
#endif
|
||||
#include <simplelink/include/simplelink.h>
|
||||
#include <simplelink/include/fs.h>
|
||||
|
||||
/* Amalgamated: #include "common/cs_dbg.h" */
|
||||
/* Amalgamated: #include "common/mg_mem.h" */
|
||||
|
||||
#if SL_MAJOR_VERSION_NUM < 2
|
||||
int slfs_open(const unsigned char *fname, uint32_t flags) {
|
||||
_i32 fh;
|
||||
_i32 r = sl_FsOpen(fname, flags, NULL /* token */, &fh);
|
||||
return (r < 0 ? r : fh);
|
||||
}
|
||||
#else /* SL_MAJOR_VERSION_NUM >= 2 */
|
||||
int slfs_open(const unsigned char *fname, uint32_t flags) {
|
||||
return sl_FsOpen(fname, flags, NULL /* token */);
|
||||
}
|
||||
#endif
|
||||
|
||||
/* From sl_fs.c */
|
||||
int set_errno(int e);
|
||||
const char *drop_dir(const char *fname, bool *is_slfs);
|
||||
@ -12712,18 +12722,18 @@ static int sl_fs_to_errno(_i32 r) {
|
||||
switch (r) {
|
||||
case SL_FS_OK:
|
||||
return 0;
|
||||
case SL_FS_FILE_NAME_EXIST:
|
||||
case SL_ERROR_FS_FILE_NAME_EXIST:
|
||||
return EEXIST;
|
||||
case SL_FS_WRONG_FILE_NAME:
|
||||
case SL_ERROR_FS_WRONG_FILE_NAME:
|
||||
return EINVAL;
|
||||
case SL_FS_ERR_NO_AVAILABLE_NV_INDEX:
|
||||
case SL_FS_ERR_NO_AVAILABLE_BLOCKS:
|
||||
case SL_ERROR_FS_NO_AVAILABLE_NV_INDEX:
|
||||
case SL_ERROR_FS_NOT_ENOUGH_STORAGE_SPACE:
|
||||
return ENOSPC;
|
||||
case SL_FS_ERR_FAILED_TO_ALLOCATE_MEM:
|
||||
case SL_ERROR_FS_FAILED_TO_ALLOCATE_MEM:
|
||||
return ENOMEM;
|
||||
case SL_FS_ERR_FILE_NOT_EXISTS:
|
||||
case SL_ERROR_FS_FILE_NOT_EXISTS:
|
||||
return ENOENT;
|
||||
case SL_FS_ERR_NOT_SUPPORTED:
|
||||
case SL_ERROR_FS_NOT_SUPPORTED:
|
||||
return ENOTSUP;
|
||||
}
|
||||
return ENXIO;
|
||||
@ -12751,9 +12761,9 @@ int fs_slfs_open(const char *pathname, int flags, mode_t mode) {
|
||||
SlFsFileInfo_t sl_fi;
|
||||
_i32 r = sl_FsGetInfo((const _u8 *) pathname, 0, &sl_fi);
|
||||
if (r == SL_FS_OK) {
|
||||
fi->size = sl_fi.FileLen;
|
||||
fi->size = SL_FI_FILE_SIZE(sl_fi);
|
||||
}
|
||||
am = FS_MODE_OPEN_READ;
|
||||
am = SL_FS_READ;
|
||||
} else {
|
||||
if (!(flags & O_TRUNC) || (flags & O_APPEND)) {
|
||||
// FailFS files cannot be opened for append and will be truncated
|
||||
@ -12773,18 +12783,18 @@ int fs_slfs_open(const char *pathname, int flags, mode_t mode) {
|
||||
}
|
||||
am = FS_MODE_OPEN_CREATE(new_size, 0);
|
||||
} else {
|
||||
am = FS_MODE_OPEN_WRITE;
|
||||
am = SL_FS_WRITE;
|
||||
}
|
||||
}
|
||||
_i32 r = sl_FsOpen((_u8 *) pathname, am, NULL, &fi->fh);
|
||||
LOG(LL_DEBUG, ("sl_FsOpen(%s, 0x%x) sz %u = %d, %d", pathname, (int) am,
|
||||
(unsigned int) new_size, (int) r, (int) fi->fh));
|
||||
if (r == SL_FS_OK) {
|
||||
fi->fh = slfs_open((_u8 *) pathname, am);
|
||||
LOG(LL_DEBUG, ("sl_FsOpen(%s, 0x%x) sz %u = %d", pathname, (int) am,
|
||||
(unsigned int) new_size, (int) fi->fh));
|
||||
int r;
|
||||
if (fi->fh >= 0) {
|
||||
fi->pos = 0;
|
||||
r = fd;
|
||||
} else {
|
||||
fi->fh = -1;
|
||||
r = set_errno(sl_fs_to_errno(r));
|
||||
r = set_errno(sl_fs_to_errno(fi->fh));
|
||||
}
|
||||
return r;
|
||||
}
|
||||
@ -12838,7 +12848,7 @@ int fs_slfs_stat(const char *pathname, struct stat *s) {
|
||||
if (r == SL_FS_OK) {
|
||||
s->st_mode = S_IFREG | 0666;
|
||||
s->st_nlink = 1;
|
||||
s->st_size = sl_fi.FileLen;
|
||||
s->st_size = SL_FI_FILE_SIZE(sl_fi);
|
||||
return 0;
|
||||
}
|
||||
return set_errno(sl_fs_to_errno(r));
|
||||
|
31
mongoose.h
31
mongoose.h
@ -1210,23 +1210,50 @@ int sl_set_ssl_opts(struct mg_connection *nc);
|
||||
|
||||
/* Compatibility with older versions of SimpleLink */
|
||||
#if SL_MAJOR_VERSION_NUM < 2
|
||||
|
||||
#define SL_ERROR_BSD_EAGAIN SL_EAGAIN
|
||||
#define SL_ERROR_BSD_EALREADY SL_EALREADY
|
||||
#define SL_ERROR_BSD_ENOPROTOOPT SL_ENOPROTOOPT
|
||||
#define SL_ERROR_BSD_ESECDATEERROR SL_ESECDATEERROR
|
||||
#define SL_ERROR_BSD_ESECSNOVERIFY SL_ESECSNOVERIFY
|
||||
#define SL_ERROR_FS_FAILED_TO_ALLOCATE_MEM SL_FS_ERR_FAILED_TO_ALLOCATE_MEM
|
||||
#define SL_ERROR_FS_FILE_HAS_NOT_BEEN_CLOSE_CORRECTLY \
|
||||
SL_FS_FILE_HAS_NOT_BEEN_CLOSE_CORRECTLY
|
||||
#define SL_ERROR_FS_FILE_NAME_EXIST SL_FS_FILE_NAME_EXIST
|
||||
#define SL_ERROR_FS_FILE_NOT_EXISTS SL_FS_ERR_FILE_NOT_EXISTS
|
||||
#define SL_ERROR_FS_NO_AVAILABLE_NV_INDEX SL_FS_ERR_NO_AVAILABLE_NV_INDEX
|
||||
#define SL_ERROR_FS_NOT_ENOUGH_STORAGE_SPACE SL_FS_ERR_NO_AVAILABLE_BLOCKS
|
||||
#define SL_ERROR_FS_NOT_SUPPORTED SL_FS_ERR_NOT_SUPPORTED
|
||||
#define SL_ERROR_FS_WRONG_FILE_NAME SL_FS_WRONG_FILE_NAME
|
||||
#define SL_ERROR_FS_INVALID_HANDLE SL_FS_ERR_INVALID_HANDLE
|
||||
#define SL_SOCKET_FD_ZERO SL_FD_ZERO
|
||||
#define SL_SOCKET_FD_SET SL_FD_SET
|
||||
#define SL_SOCKET_FD_ISSET SL_FD_ISSET
|
||||
#define SL_SO_SECURE_DOMAIN_NAME_VERIFICATION SO_SECURE_DOMAIN_NAME_VERIFICATION
|
||||
|
||||
#define SL_FS_READ FS_MODE_OPEN_READ
|
||||
#define SL_FS_WRITE FS_MODE_OPEN_WRITE
|
||||
|
||||
#define SL_FI_FILE_SIZE(fi) ((fi).FileLen)
|
||||
#define SL_FI_FILE_MAX_SIZE(fi) ((fi).AllocatedLen)
|
||||
|
||||
#define SlDeviceVersion_t SlVersionFull
|
||||
#define sl_DeviceGet sl_DevGet
|
||||
#define SL_DEVICE_GENERAL SL_DEVICE_GENERAL_CONFIGURATION
|
||||
#define SL_DEV_GET_LEN_TYPE _u8
|
||||
#else
|
||||
|
||||
#else /* SL_MAJOR_VERSION_NUM >= 2 */
|
||||
|
||||
#define FS_MODE_OPEN_CREATE(max_size, flag) \
|
||||
(SL_FS_CREATE | SL_FS_CREATE_MAX_SIZE(max_size))
|
||||
#define SL_FI_FILE_SIZE(fi) ((fi).Len)
|
||||
#define SL_FI_FILE_MAX_SIZE(fi) ((fi).MaxSize)
|
||||
|
||||
#define SL_DEV_GET_LEN_TYPE _u16
|
||||
#endif
|
||||
|
||||
#endif /* SL_MAJOR_VERSION_NUM < 2 */
|
||||
|
||||
int slfs_open(const unsigned char *fname, uint32_t flags);
|
||||
|
||||
#endif /* MG_NET_IF == MG_NET_IF_SIMPLELINK */
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user