Important changes to forums and questions
All forums and questions are now archived. To start a new conversation or read the latest updates go to forums.mbed.com.
6 years, 11 months ago.
MBED SD Card File system not compiling on VisualGDB
Hi
I am using VisualGDB with MBED STM32L476 (DISCO L476).
I want to interface the CPU to a SD card. I imported the SD Card File system
https://os.mbed.com/cookbook/SD-Card-File-System
Which is debugged, compiles and works great on MBED compiler.
The problem is I get these bugs in FATFileHandle.h after compilation in VisualGDB:
conflicting return type specified for ‘virtual off_t FATFileHandle::size()’
- ifndef MBED_FATFILEHANDLE_H
- define MBED_FATFILEHANDLE_H
- include “FileHandle.h”
using namespace mbed;
class FATFileHandle : public FileHandle { public:
FATFileHandle(FIL fh); virtual int close(); virtual ssize_t write(const void* buffer, size_t length); virtual ssize_t read(void* buffer, size_t length); virtual int isatty(); virtual off_t lseek(off_t position, int whence); virtual int fsync(); virtual off_t flen();
virtual off_t seek(off_t position, int whence) { return lseek(position, whence); } virtual off_t size() { return flen(); }
protected:
FIL _fh;
};
- endif
and also in FileHandle.h:
overriding ‘virtual size_t mbed::FileHandle::size()’
- ifndef MBED_FILEHANDLE_H
- define MBED_FILEHANDLE_H
typedef int FILEHANDLE;
- include <stdio.h>
- include “platform/platform.h”
namespace mbed { / \addtogroup drivers */ / @{*/
/ Class FileHandle
- An abstract interface that represents operations on a file-like
- object. The core functions are read, write, and seek, but only
- a subset of these operations can be provided.
- @note to create a file, @see File
- @note Synchronization level: Set by subclass
- / class FileHandle { public: virtual FileHandle() {}
/ Read the contents of a file into a buffer
- @param buffer The buffer to read in to
- @param size The number of bytes to read
- @return The number of bytes read, 0 at end of file, negative error on failure
- / virtual ssize_t read(void *buffer, size_t size) = 0;
/ Write the contents of a buffer to a file
- @param buffer The buffer to write from
- @param size The number of bytes to write
- @return The number of bytes written, negative error on failure
- / virtual ssize_t write(const void *buffer, size_t size) = 0;
/ Move the file position to a given offset from from a given location
- @param offset The offset from whence to move to
- @param whence The start of where to seek
- SEEK_SET to start from beginning of file,
- SEEK_CUR to start from current position in file,
- SEEK_END to start from end of file
- @return The new offset of the file
- / virtual off_t seek(off_t offset, int whence = SEEK_SET) = 0;
/ Close a file
- @return 0 on success, negative error code on failure
- / virtual int close() = 0;
/ Flush any buffers associated with the file
- @return 0 on success, negative error code on failure
- / virtual int sync() { return 0; }
/ Check if the file in an interactive terminal device
- @return True if the file is a terminal
- / virtual int isatty() { return false; }
/ Get the file position of the file
- @note This is equivalent to seek(0, SEEK_CUR)
- @return The current offset in the file
- / virtual off_t tell() { return seek(0, SEEK_CUR); }
/ Rewind the file position to the beginning of the file
- @note This is equivalent to seek(0, SEEK_SET)
- / virtual void rewind() { seek(0, SEEK_SET); }
/ Get the size of the file
- @return Size of the file in bytes
- / virtual size_t size() { off_t off = tell(); size_t size = seek(0, SEEK_END); seek(off, SEEK_SET); return size; }
/ Move the file position to a given offset from a given location.
- @param offset The offset from whence to move to
- @param whence SEEK_SET for the start of the file, SEEK_CUR for the
- current file position, or SEEK_END for the end of the file.
- @returns
- new file position on success,
- -1 on failure or unsupported
- / MBED_DEPRECATED_SINCE(“mbed-os-5.4”, “Replaced by FileHandle::seek”) virtual off_t lseek(off_t offset, int whence) { return seek(offset, whence); }
/ Flush any buffers associated with the FileHandle, ensuring it
- is up to date on disk
- @returns
- 0 on success or un-needed,
- -1 on error
- / MBED_DEPRECATED_SINCE(“mbed-os-5.4”, “Replaced by FileHandle::sync”) virtual int fsync() { return sync(); }
/ Find the length of the file
- @returns
- Length of the file
- / MBED_DEPRECATED_SINCE(“mbed-os-5.4”, “Replaced by FileHandle::size”) virtual off_t flen() { return size(); } };
/ @}*/ } namespace mbed
- endif