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.
SerialStream.h@3:2d1f7e1cd3d4, 2021-05-03 (annotated)
- Committer:
- MultipleMonomials
- Date:
- Mon May 03 02:47:04 2021 -0700
- Revision:
- 3:2d1f7e1cd3d4
- Parent:
- 0:ea2678a73bde
Update CC1200 driver version
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| MultipleMonomials | 0:ea2678a73bde | 1 | #ifndef SERIALSTREAM_H |
| MultipleMonomials | 0:ea2678a73bde | 2 | #define SERIALSTREAM_H |
| MultipleMonomials | 0:ea2678a73bde | 3 | |
| MultipleMonomials | 0:ea2678a73bde | 4 | #include <mbed.h> |
| MultipleMonomials | 0:ea2678a73bde | 5 | #include <platform/Stream.h> |
| MultipleMonomials | 0:ea2678a73bde | 6 | |
| MultipleMonomials | 0:ea2678a73bde | 7 | /** |
| MultipleMonomials | 0:ea2678a73bde | 8 | * SerialStream |
| MultipleMonomials | 0:ea2678a73bde | 9 | * Bringing MBed serial ports back like it's 1999... or at least 2019. |
| MultipleMonomials | 0:ea2678a73bde | 10 | * |
| MultipleMonomials | 0:ea2678a73bde | 11 | * This class adapts an MBed 6.0 serial port class into a Stream instance. |
| MultipleMonomials | 0:ea2678a73bde | 12 | * This lets you do two useful things with it: |
| MultipleMonomials | 0:ea2678a73bde | 13 | * - Call printf() and scanf() on it |
| MultipleMonomials | 0:ea2678a73bde | 14 | * - Pass it to code that expects a Stream to print things on. |
| MultipleMonomials | 0:ea2678a73bde | 15 | * |
| MultipleMonomials | 0:ea2678a73bde | 16 | */ |
| MultipleMonomials | 0:ea2678a73bde | 17 | template<class SerialClass> |
| MultipleMonomials | 0:ea2678a73bde | 18 | class SerialStream : public Stream |
| MultipleMonomials | 0:ea2678a73bde | 19 | { |
| MultipleMonomials | 0:ea2678a73bde | 20 | SerialClass & serialClass; |
| MultipleMonomials | 0:ea2678a73bde | 21 | |
| MultipleMonomials | 0:ea2678a73bde | 22 | public: |
| MultipleMonomials | 0:ea2678a73bde | 23 | |
| MultipleMonomials | 0:ea2678a73bde | 24 | /** |
| MultipleMonomials | 0:ea2678a73bde | 25 | * Create a SerialStream from a serial port. |
| MultipleMonomials | 0:ea2678a73bde | 26 | * @param _serialClass BufferedSerial or UnbufferedSerial instance |
| MultipleMonomials | 0:ea2678a73bde | 27 | * @param name The name of the stream associated with this serial port (optional) |
| MultipleMonomials | 0:ea2678a73bde | 28 | */ |
| MultipleMonomials | 0:ea2678a73bde | 29 | SerialStream(SerialClass & _serialClass, const char *name = nullptr): |
| MultipleMonomials | 0:ea2678a73bde | 30 | Stream(name), |
| MultipleMonomials | 0:ea2678a73bde | 31 | serialClass(_serialClass) |
| MultipleMonomials | 0:ea2678a73bde | 32 | { |
| MultipleMonomials | 0:ea2678a73bde | 33 | } |
| MultipleMonomials | 0:ea2678a73bde | 34 | |
| MultipleMonomials | 0:ea2678a73bde | 35 | |
| MultipleMonomials | 0:ea2678a73bde | 36 | private: |
| MultipleMonomials | 0:ea2678a73bde | 37 | |
| MultipleMonomials | 0:ea2678a73bde | 38 | // override Stream::read() and write() to call serial class directly. |
| MultipleMonomials | 0:ea2678a73bde | 39 | // This avoids the overhead of feeding in individual characters. |
| MultipleMonomials | 0:ea2678a73bde | 40 | virtual ssize_t write(const void *buffer, size_t length) |
| MultipleMonomials | 0:ea2678a73bde | 41 | { |
| MultipleMonomials | 0:ea2678a73bde | 42 | return serialClass.write(buffer, length); |
| MultipleMonomials | 0:ea2678a73bde | 43 | } |
| MultipleMonomials | 0:ea2678a73bde | 44 | |
| MultipleMonomials | 0:ea2678a73bde | 45 | virtual ssize_t read(void *buffer, size_t length) |
| MultipleMonomials | 0:ea2678a73bde | 46 | { |
| MultipleMonomials | 0:ea2678a73bde | 47 | return serialClass.read(buffer, length); |
| MultipleMonomials | 0:ea2678a73bde | 48 | } |
| MultipleMonomials | 0:ea2678a73bde | 49 | |
| MultipleMonomials | 0:ea2678a73bde | 50 | // Dummy implementations -- these will never be called because we override write() and read() instead. |
| MultipleMonomials | 0:ea2678a73bde | 51 | // but we have to override them since they're pure virtual. |
| MultipleMonomials | 0:ea2678a73bde | 52 | virtual int _putc(int c) { return 0; } |
| MultipleMonomials | 0:ea2678a73bde | 53 | virtual int _getc() { return 0; } |
| MultipleMonomials | 0:ea2678a73bde | 54 | }; |
| MultipleMonomials | 0:ea2678a73bde | 55 | |
| MultipleMonomials | 0:ea2678a73bde | 56 | #endif //SERIALSTREAM_H |
CC1200