Lab 1 Program C

Dependents:   Lab1C

Fork of mbed by -deleted-

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?

UserRevisionLine numberNew 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