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
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 - SemihostFileHandle
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_SEMIHOSTFILEHANDLE_H
simon.ford@mbed.co.uk 0:82220227f4fa 6 #define MBED_SEMIHOSTFILEHANDLE_H
simon.ford@mbed.co.uk 0:82220227f4fa 7
simon.ford@mbed.co.uk 0:82220227f4fa 8 #include "rt_sys.h"
simon.ford@mbed.co.uk 0:82220227f4fa 9 #include "FileHandle.h"
simon.ford@mbed.co.uk 0:82220227f4fa 10
simon.ford@mbed.co.uk 0:82220227f4fa 11 extern "C" int $Super$$_sys_close(FILEHANDLE fh);
simon.ford@mbed.co.uk 0:82220227f4fa 12 extern "C" int $Super$$_sys_write(FILEHANDLE fh, const unsigned char* buffer, unsigned int length, int mode);
simon.ford@mbed.co.uk 0:82220227f4fa 13 extern "C" int $Super$$_sys_read(FILEHANDLE fh, unsigned char* buffer, unsigned int length, int mode);
simon.ford@mbed.co.uk 0:82220227f4fa 14 extern "C" int $Super$$_sys_istty(FILEHANDLE fh);
simon.ford@mbed.co.uk 0:82220227f4fa 15 extern "C" int $Super$$_sys_seek(FILEHANDLE fh, int position);
simon.ford@mbed.co.uk 0:82220227f4fa 16 extern "C" int $Super$$_sys_ensure(FILEHANDLE fh);
simon.ford@mbed.co.uk 0:82220227f4fa 17 extern "C" long $Super$$_sys_flen(FILEHANDLE fh);
simon.ford@mbed.co.uk 0:82220227f4fa 18
simon.ford@mbed.co.uk 0:82220227f4fa 19 namespace mbed {
simon.ford@mbed.co.uk 0:82220227f4fa 20
simon.ford@mbed.co.uk 0:82220227f4fa 21 /* Class SemihostFileHandle
simon.ford@mbed.co.uk 0:82220227f4fa 22 * Implements a FileHandle for talking to the standard Semihosting implementation
simon.ford@mbed.co.uk 0:82220227f4fa 23 */
simon.ford@mbed.co.uk 0:82220227f4fa 24 class SemihostFileHandle : public FileHandle {
simon.ford@mbed.co.uk 0:82220227f4fa 25
simon.ford@mbed.co.uk 0:82220227f4fa 26 public:
simon.ford@mbed.co.uk 0:82220227f4fa 27
simon.ford@mbed.co.uk 0:82220227f4fa 28 /* Constructor SemihostFileHandle
simon.ford@mbed.co.uk 0:82220227f4fa 29 * Create a SemihostFileHandle using a standard FILEHANDLE
simon.ford@mbed.co.uk 0:82220227f4fa 30 */
simon.ford@mbed.co.uk 0:82220227f4fa 31 SemihostFileHandle(FILEHANDLE fh) {
simon.ford@mbed.co.uk 0:82220227f4fa 32 _fh = fh;
simon.ford@mbed.co.uk 0:82220227f4fa 33 }
simon.ford@mbed.co.uk 0:82220227f4fa 34
simon.ford@mbed.co.uk 0:82220227f4fa 35 virtual int sys_close() {
simon.ford@mbed.co.uk 0:82220227f4fa 36 return $Super$$_sys_close(_fh);
simon.ford@mbed.co.uk 0:82220227f4fa 37 }
simon.ford@mbed.co.uk 0:82220227f4fa 38 // virtual ~SemihostFileHandle() {
simon.ford@mbed.co.uk 0:82220227f4fa 39 // $Super$$_sys_close(_fh);
simon.ford@mbed.co.uk 0:82220227f4fa 40 //}
simon.ford@mbed.co.uk 0:82220227f4fa 41
simon.ford@mbed.co.uk 0:82220227f4fa 42 virtual int sys_write(const unsigned char* buffer, unsigned int length, int mode) {
simon.ford@mbed.co.uk 0:82220227f4fa 43 return $Super$$_sys_write(_fh, buffer, length, mode);
simon.ford@mbed.co.uk 0:82220227f4fa 44 }
simon.ford@mbed.co.uk 0:82220227f4fa 45
simon.ford@mbed.co.uk 0:82220227f4fa 46 virtual int sys_read(unsigned char* buffer, unsigned int length, int mode) {
simon.ford@mbed.co.uk 0:82220227f4fa 47 return $Super$$_sys_read(_fh, buffer, length, mode);
simon.ford@mbed.co.uk 0:82220227f4fa 48 }
simon.ford@mbed.co.uk 0:82220227f4fa 49
simon.ford@mbed.co.uk 0:82220227f4fa 50 virtual int sys_istty() {
simon.ford@mbed.co.uk 0:82220227f4fa 51 return $Super$$_sys_istty(_fh);
simon.ford@mbed.co.uk 0:82220227f4fa 52 }
simon.ford@mbed.co.uk 0:82220227f4fa 53
simon.ford@mbed.co.uk 0:82220227f4fa 54 virtual int sys_seek(int position) {
simon.ford@mbed.co.uk 0:82220227f4fa 55 return $Super$$_sys_seek(_fh, position);
simon.ford@mbed.co.uk 0:82220227f4fa 56 }
simon.ford@mbed.co.uk 0:82220227f4fa 57
simon.ford@mbed.co.uk 0:82220227f4fa 58 virtual int sys_ensure() {
simon.ford@mbed.co.uk 0:82220227f4fa 59 return $Super$$_sys_ensure(_fh);
simon.ford@mbed.co.uk 0:82220227f4fa 60 }
simon.ford@mbed.co.uk 0:82220227f4fa 61
simon.ford@mbed.co.uk 0:82220227f4fa 62 virtual int sys_flen() {
simon.ford@mbed.co.uk 0:82220227f4fa 63 return $Super$$_sys_flen(_fh);
simon.ford@mbed.co.uk 0:82220227f4fa 64 }
simon.ford@mbed.co.uk 0:82220227f4fa 65
simon.ford@mbed.co.uk 0:82220227f4fa 66 protected:
simon.ford@mbed.co.uk 0:82220227f4fa 67
simon.ford@mbed.co.uk 0:82220227f4fa 68 FILEHANDLE _fh;
simon.ford@mbed.co.uk 0:82220227f4fa 69
simon.ford@mbed.co.uk 0:82220227f4fa 70 };
simon.ford@mbed.co.uk 0:82220227f4fa 71
simon.ford@mbed.co.uk 0:82220227f4fa 72 } // namespace mbed
simon.ford@mbed.co.uk 0:82220227f4fa 73
simon.ford@mbed.co.uk 1:6b7f447ca868 74 #endif
simon.ford@mbed.co.uk 1:6b7f447ca868 75