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