mbed(SerialHalfDuplex入り)
Fork of mbed by
SemihostFileHandle.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
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 - 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 |