|
- // Copyright 2011 Olivier Gillet.
- //
- // Author: Olivier Gillet (ol.gillet@gmail.com)
- //
- // 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 3 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, see <http://www.gnu.org/licenses/>.
- //
- // -----------------------------------------------------------------------------
- //
- // FatFS wrappers.
-
- #ifndef AVRLIBX_FILESYSTEM_FILE_H_
- #define AVRLIBX_FILESYSTEM_FILE_H_
-
- #include <string.h>
-
- #include "avrlibx/avrlibx.h"
-
- #include "avrlibx/filesystem/filesystem.h"
-
- namespace avrlibx {
-
- enum FileAttributes {
- FS_READ = FA_READ,
- FS_WRITE = FA_WRITE,
- FS_OPEN_EXISTING = FA_OPEN_EXISTING,
- FS_OPEN_ALWAYS = FA_OPEN_ALWAYS,
- FS_CREATE_NEW = FA_CREATE_NEW,
- FS_CREATE_ALWAYS = FA_CREATE_ALWAYS
- };
-
- class File {
- public:
- File();
- ~File();
-
- FilesystemStatus Open(const char* file_name, const char* mode) {
- return Open(file_name, mode, 0);
- }
-
- FilesystemStatus Open(const char* file_name, uint8_t attributes) {
- return Open(file_name, attributes, 0);
- }
-
- FilesystemStatus Open(
- const char* file_name,
- const char* mode,
- uint16_t retry_timeout);
- FilesystemStatus Open(
- const char* file_name,
- uint8_t attributes,
- uint16_t retry_timeout);
-
- FilesystemStatus Seek(uint32_t position);
- FilesystemStatus Close();
- FilesystemStatus Truncate();
- FilesystemStatus Sync();
- FilesystemStatus Read(uint8_t* data, uint16_t size, uint16_t* read);
- FilesystemStatus Write(
- const uint8_t* data,
- uint16_t size,
- uint16_t* written);
-
- FilesystemStatus Write(
- const char* data,
- uint16_t size,
- uint16_t* written) {
- return Write(static_cast<const uint8_t*>(static_cast<const void*>(
- data)), size, written);
- }
-
- FilesystemStatus Read(
- char* data,
- uint16_t size,
- uint16_t* read) {
- return Read(static_cast<uint8_t*>(static_cast<void*>(
- data)), size, read);
- }
-
-
- uint16_t Read(uint8_t* data, uint16_t size) {
- uint16_t read;
- return Read(data, size, &read) == FS_OK ? read : 0;
- }
- uint16_t Write(const uint8_t* data, uint16_t size) {
- uint16_t written;
- return Write(data, size, &written) == FS_OK ? written : 0;
- }
-
- uint8_t eof() const { return f_eof(&f_); }
- uint8_t error() const { return f_error(&f_); }
- uint32_t tell() const { return f_tell(&f_); }
- uint32_t size() const { return f_size(&f_); }
-
- private:
- uint8_t opened_;
- FIL f_;
-
- DISALLOW_COPY_AND_ASSIGN(File);
- };
-
- } // namespace avrlibx
-
- #endif // AVRLIBX_FILESYSTEM_FILE_H_
|