Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of mbed by
FileHandle.h@0:82220227f4fa, 2008-04-08 (annotated)
- Committer:
- simon.ford@mbed.co.uk
- Date:
- Tue Apr 08 14:12:21 2008 +0000
- Revision:
- 0:82220227f4fa
- Child:
- 1:6b7f447ca868
A first develoment release of the mbed libraries
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
simon.ford@mbed.co.uk | 0:82220227f4fa | 1 | /* mbed Microcontroller Library - FileHandle |
simon.ford@mbed.co.uk | 0:82220227f4fa | 2 | * Copyright (c) 2007-2008, sford |
simon.ford@mbed.co.uk | 0:82220227f4fa | 3 | */ |
simon.ford@mbed.co.uk | 0:82220227f4fa | 4 | |
simon.ford@mbed.co.uk | 0:82220227f4fa | 5 | #ifndef MBED_FILEHANDLE_H |
simon.ford@mbed.co.uk | 0:82220227f4fa | 6 | #define MBED_FILEHANDLE_H |
simon.ford@mbed.co.uk | 0:82220227f4fa | 7 | |
simon.ford@mbed.co.uk | 0:82220227f4fa | 8 | namespace mbed { |
simon.ford@mbed.co.uk | 0:82220227f4fa | 9 | |
simon.ford@mbed.co.uk | 0:82220227f4fa | 10 | /* Class: FileHandle |
simon.ford@mbed.co.uk | 0:82220227f4fa | 11 | * An OO equivalent of the internal FILEHANDLE variable |
simon.ford@mbed.co.uk | 0:82220227f4fa | 12 | * and associated _sys_* functions |
simon.ford@mbed.co.uk | 0:82220227f4fa | 13 | * |
simon.ford@mbed.co.uk | 0:82220227f4fa | 14 | * FileHandle is an abstract class, needing at least sys_write and |
simon.ford@mbed.co.uk | 0:82220227f4fa | 15 | * sys_read to be implmented for a simple interactive device |
simon.ford@mbed.co.uk | 0:82220227f4fa | 16 | * |
simon.ford@mbed.co.uk | 0:82220227f4fa | 17 | * No one ever directly tals to/instanciates a FileHandle - it gets |
simon.ford@mbed.co.uk | 0:82220227f4fa | 18 | * created by FileSystem, and wrapped up by stdio |
simon.ford@mbed.co.uk | 0:82220227f4fa | 19 | */ |
simon.ford@mbed.co.uk | 0:82220227f4fa | 20 | class FileHandle { |
simon.ford@mbed.co.uk | 0:82220227f4fa | 21 | |
simon.ford@mbed.co.uk | 0:82220227f4fa | 22 | public: |
simon.ford@mbed.co.uk | 0:82220227f4fa | 23 | |
simon.ford@mbed.co.uk | 0:82220227f4fa | 24 | //virtual ~FileHandle() { } |
simon.ford@mbed.co.uk | 0:82220227f4fa | 25 | |
simon.ford@mbed.co.uk | 0:82220227f4fa | 26 | /* Function: sys_write |
simon.ford@mbed.co.uk | 0:82220227f4fa | 27 | * Write the contents of a buffer to the file |
simon.ford@mbed.co.uk | 0:82220227f4fa | 28 | * |
simon.ford@mbed.co.uk | 0:82220227f4fa | 29 | * Parameters: |
simon.ford@mbed.co.uk | 0:82220227f4fa | 30 | * buffer - the buffer to write from |
simon.ford@mbed.co.uk | 0:82220227f4fa | 31 | * length - the number of characters to write |
simon.ford@mbed.co.uk | 0:82220227f4fa | 32 | * mode - the mode of the file, 0 (normal) or 1 (binary); this may be unused? |
simon.ford@mbed.co.uk | 0:82220227f4fa | 33 | * |
simon.ford@mbed.co.uk | 0:82220227f4fa | 34 | * Returns: |
simon.ford@mbed.co.uk | 0:82220227f4fa | 35 | * 0 on success, -1 on error, or the number of characters not written on partial success |
simon.ford@mbed.co.uk | 0:82220227f4fa | 36 | */ |
simon.ford@mbed.co.uk | 0:82220227f4fa | 37 | virtual int sys_write(const unsigned char* buffer, unsigned int length, int mode) = 0; |
simon.ford@mbed.co.uk | 0:82220227f4fa | 38 | |
simon.ford@mbed.co.uk | 0:82220227f4fa | 39 | virtual int sys_close() = 0; |
simon.ford@mbed.co.uk | 0:82220227f4fa | 40 | |
simon.ford@mbed.co.uk | 0:82220227f4fa | 41 | /* Function: sys_read |
simon.ford@mbed.co.uk | 0:82220227f4fa | 42 | * Reads the contents of the file into a buffer |
simon.ford@mbed.co.uk | 0:82220227f4fa | 43 | * |
simon.ford@mbed.co.uk | 0:82220227f4fa | 44 | * Parameters: |
simon.ford@mbed.co.uk | 0:82220227f4fa | 45 | * buffer - the buffer to read in to |
simon.ford@mbed.co.uk | 0:82220227f4fa | 46 | * length - the number of characters to read |
simon.ford@mbed.co.uk | 0:82220227f4fa | 47 | * mode - the mode of the file, 0 (normal) or 1 (binary); this may be unused? |
simon.ford@mbed.co.uk | 0:82220227f4fa | 48 | * |
simon.ford@mbed.co.uk | 0:82220227f4fa | 49 | * Returns: |
simon.ford@mbed.co.uk | 0:82220227f4fa | 50 | * 0 on success, -1 on error, or the number of characters not read on partial success. EOF is |
simon.ford@mbed.co.uk | 0:82220227f4fa | 51 | * signaled by setting the top bit (0x80000000) of the return value. |
simon.ford@mbed.co.uk | 0:82220227f4fa | 52 | */ |
simon.ford@mbed.co.uk | 0:82220227f4fa | 53 | virtual int sys_read(unsigned char* buffer, unsigned int length, int mode) = 0; |
simon.ford@mbed.co.uk | 0:82220227f4fa | 54 | |
simon.ford@mbed.co.uk | 0:82220227f4fa | 55 | /* Function: sys_istty |
simon.ford@mbed.co.uk | 0:82220227f4fa | 56 | * Check if the handle is for a interactive terminal device |
simon.ford@mbed.co.uk | 0:82220227f4fa | 57 | * |
simon.ford@mbed.co.uk | 0:82220227f4fa | 58 | * If so, unbuffered behaviour is used by default |
simon.ford@mbed.co.uk | 0:82220227f4fa | 59 | * |
simon.ford@mbed.co.uk | 0:82220227f4fa | 60 | * Returns: |
simon.ford@mbed.co.uk | 0:82220227f4fa | 61 | * 0 - no |
simon.ford@mbed.co.uk | 0:82220227f4fa | 62 | * 1 - yes |
simon.ford@mbed.co.uk | 0:82220227f4fa | 63 | */ |
simon.ford@mbed.co.uk | 0:82220227f4fa | 64 | virtual int sys_istty() = 0 ; |
simon.ford@mbed.co.uk | 0:82220227f4fa | 65 | |
simon.ford@mbed.co.uk | 0:82220227f4fa | 66 | /* Function: sys_seek |
simon.ford@mbed.co.uk | 0:82220227f4fa | 67 | * Move the file position to a given offset from the file start |
simon.ford@mbed.co.uk | 0:82220227f4fa | 68 | * |
simon.ford@mbed.co.uk | 0:82220227f4fa | 69 | * Returns: |
simon.ford@mbed.co.uk | 0:82220227f4fa | 70 | * 0 on success, -1 on failure or unsupported |
simon.ford@mbed.co.uk | 0:82220227f4fa | 71 | */ |
simon.ford@mbed.co.uk | 0:82220227f4fa | 72 | virtual int sys_seek(int position) = 0; |
simon.ford@mbed.co.uk | 0:82220227f4fa | 73 | |
simon.ford@mbed.co.uk | 0:82220227f4fa | 74 | /* Function: sys_ensure |
simon.ford@mbed.co.uk | 0:82220227f4fa | 75 | * Flush any OS buffers associated with the FileHandle, ensuring it |
simon.ford@mbed.co.uk | 0:82220227f4fa | 76 | * is up to date on disk |
simon.ford@mbed.co.uk | 0:82220227f4fa | 77 | * |
simon.ford@mbed.co.uk | 0:82220227f4fa | 78 | * Returns: |
simon.ford@mbed.co.uk | 0:82220227f4fa | 79 | * 0 on success or un-needed, -1 on error |
simon.ford@mbed.co.uk | 0:82220227f4fa | 80 | */ |
simon.ford@mbed.co.uk | 0:82220227f4fa | 81 | virtual int sys_ensure() = 0; |
simon.ford@mbed.co.uk | 0:82220227f4fa | 82 | |
simon.ford@mbed.co.uk | 0:82220227f4fa | 83 | /* Function: sys_flen |
simon.ford@mbed.co.uk | 0:82220227f4fa | 84 | * Find the current length of the file |
simon.ford@mbed.co.uk | 0:82220227f4fa | 85 | * |
simon.ford@mbed.co.uk | 0:82220227f4fa | 86 | * Returns: |
simon.ford@mbed.co.uk | 0:82220227f4fa | 87 | * The current length of the file, or -1 on error |
simon.ford@mbed.co.uk | 0:82220227f4fa | 88 | */ |
simon.ford@mbed.co.uk | 0:82220227f4fa | 89 | virtual int sys_flen() = 0; |
simon.ford@mbed.co.uk | 0:82220227f4fa | 90 | |
simon.ford@mbed.co.uk | 0:82220227f4fa | 91 | }; |
simon.ford@mbed.co.uk | 0:82220227f4fa | 92 | |
simon.ford@mbed.co.uk | 0:82220227f4fa | 93 | } // namespace mbed |
simon.ford@mbed.co.uk | 0:82220227f4fa | 94 | |
simon.ford@mbed.co.uk | 0:82220227f4fa | 95 | #endif |