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.
Dependents: 02_DPPU_JUANDA_120 02_DPPU_JUANDA_120_Latest_copy 02_DPPU_JUANDA_120_Latest
Diff: SerialPipe.h
- Revision:
- 42:6786401ba18c
- Parent:
- 35:9275215a3a5b
- Child:
- 70:0a87d256cd24
--- a/SerialPipe.h Fri Apr 11 19:41:05 2014 +0000
+++ b/SerialPipe.h Fri Apr 11 19:53:53 2014 +0000
@@ -3,25 +3,76 @@
#include "mbed.h"
#include "Pipe.h"
-#define _SerialPipeBase SerialBase
+#define _SerialPipeBase SerialBase //!< base class used by this class
+/** Buffered serial interface (rtos capable/interrupt driven)
+*/
class SerialPipe : public _SerialPipeBase
{
public:
+ /** Constructor
+ \param tx the trasmitting pin
+ \param rx the receiving pin
+ \param rxSize the size of the receiving buffer
+ \param txSize the size of the transmitting buffer
+ */
SerialPipe(PinName tx, PinName rx, int rxSize = 128, int txSize = 128);
- virtual ~SerialPipe(void);
+
+ /** Destructor
+ */
+ ~SerialPipe(void);
+
// tx channel
+ //----------------------------------------------------
+
+ /** check if writable
+ return the number of free bytes
+ */
int writeable(void);
- int putc(int c); // blocking
+
+ /** send a character (blocking)
+ \param c the character to send
+ \return c
+ */
+ int putc(int c);
+
+ /** send a buffer
+ \param buffer the buffer to send
+ \param length the size of the buffer to send
+ \param blocking, if true this function will block
+ until all bytes placed in the buffer.
+ \return the number of bytes written
+ */
int put(const void* buffer, int length, bool blocking);
+
// rx channel
+ //----------------------------------------------------
+
+ /** check if readable
+ \return the size available in the buffer.
+ */
int readable(void);
- int getc(void); // blocking
+
+ /** receive one character from the serial port (blocking)
+ \param the character received
+ */
+ int getc(void);
+
+ /** read a buffer from the serial port
+ \param pointer to the buffer to read.
+ \param length number of bytes to read
+ \param blocking true if all bytes shall be read. false if only the available bytes.
+ \return the number of bytes read.
+ */
int get(void* buffer, int length, bool blocking);
+
protected:
+ //! receive interrupt routine
void rxIrqBuf(void);
+ //! transmit interrupt woutine
void txIrqBuf(void);
+ //! start transmission helper
void txStart(void);
- Pipe<char> _pipeRx;
- Pipe<char> _pipeTx;
+ Pipe<char> _pipeRx; //!< receive pipe
+ Pipe<char> _pipeTx; //!< transmit pipe
};