Webserver+3d print
Diff: common/fs_port.h
- Revision:
- 0:8918a71cdbe9
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/common/fs_port.h Sat Feb 04 18:15:49 2017 +0000 @@ -0,0 +1,148 @@ +/** + * @file fs_port.h + * @brief File system abstraction layer + * + * @section License + * + * Copyright (C) 2010-2017 Oryx Embedded SARL. All rights reserved. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * @author Oryx Embedded SARL (www.oryx-embedded.com) + * @version 1.7.6 + **/ + +#ifndef _FS_PORT_H +#define _FS_PORT_H + +//Dependencies +#include "fs_port_config.h" +#include "os_port.h" +#include "date_time.h" +#include "error.h" + +//Number of files that can be opened simultaneously +#ifndef FS_MAX_FILES + #define FS_MAX_FILES 8 +#elif (FS_MAX_FILES < 1) + #error FS_MAX_FILES parameter is not valid +#endif + +//Number of directories that can be opened simultaneously +#ifndef FS_MAX_DIRS + #define FS_MAX_DIRS 8 +#elif (FS_MAX_DIRS < 1) + #error FS_MAX_DIRS parameter is not valid +#endif + +//Maximum filename length +#ifndef FS_MAX_NAME_LEN + #define FS_MAX_NAME_LEN 127 +#elif (FS_MAX_NAME_LEN < 11) + #error FS_MAX_NAME_LEN parameter is not valid +#endif + + +/** + * @brief File attributes + **/ + +typedef enum +{ + FS_FILE_ATTR_READ_ONLY = 0x01, + FS_FILE_ATTR_HIDDEN = 0x02, + FS_FILE_ATTR_SYSTEM = 0x04, + FS_FILE_ATTR_VOLUME_NAME = 0x08, + FS_FILE_ATTR_DIRECTORY = 0x10, + FS_FILE_ATTR_ARCHIVE = 0x20 +} FsFileAttributes; + + +/** + * @brief File access mode + **/ + +typedef enum +{ + FS_FILE_MODE_READ = 1, + FS_FILE_MODE_WRITE = 2, + FS_FILE_MODE_CREATE = 4, + FS_FILE_MODE_TRUNC = 8 +} FsFileMode; + + +/** + * @brief File seek origin + **/ + +typedef enum +{ + FS_SEEK_SET = 0, + FS_SEEK_CUR = 1, + FS_SEEK_END = 2 +} FsSeekOrigin; + + +/** + * @brief Directory entry + **/ + +typedef struct +{ + uint32_t attributes; + uint32_t size; + DateTime modified; + char_t name[FS_MAX_NAME_LEN + 1]; +} FsDirEntry; + + +/** + * @brief File handle + **/ + +typedef void FsFile; + + +/** + * @brief Directory handle + **/ + +typedef void FsDir; + + +//File system abstraction layer +error_t fsInit(void); + +bool_t fsFileExists(const char_t *path); +error_t fsGetFileSize(const char_t *path, uint32_t *size); +error_t fsRenameFile(const char_t *oldPath, const char_t *newPath); +error_t fsDeleteFile(const char_t *path); + +FsFile *fsOpenFile(const char_t *path, uint_t mode); +error_t fsSeekFile(FsFile *file, int_t offset, uint_t origin); +error_t fsWriteFile(FsFile *file, void *data, size_t length); +error_t fsReadFile(FsFile *file, void *data, size_t size, size_t *length); +void fsCloseFile(FsFile *file); + +bool_t fsDirExists(const char_t *path); +error_t fsCreateDir(const char_t *path); +error_t fsRemoveDir(const char_t *path); + +FsDir *fsOpenDir(const char_t *path); +error_t fsReadDir(FsDir *dir, FsDirEntry *dirEntry); +void fsCloseDir(FsDir *dir); + +#endif +