Lab 1 Program C
Fork of mbed by
FileHandle.h@1:6b7f447ca868, 2008-04-30 (annotated)
- Committer:
- simon.ford@mbed.co.uk
- Date:
- Wed Apr 30 15:43:24 2008 +0000
- Revision:
- 1:6b7f447ca868
- Parent:
- 0:82220227f4fa
- Child:
- 4:5d1359a283bc
Fixes:
- ADC bug
- Newlines at end of files
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 | 1:6b7f447ca868 | 95 | #endif |
simon.ford@mbed.co.uk | 1:6b7f447ca868 | 96 |