A virtual Arduino Stream device.
The Pipe class implements the Arduino Stream class to provide a virtual
device through which you can transfer data. You "send" data to it through the
standard Arduino print(), println() etc methods, and you can read from it
in the same way you read from Serial.
It's like having a serial port that talks to itself (loopback) without having an actual serial port there.
The included example sketch, aimed at running on a chipKIT UNO32, implements a
buffered UART interface to the Serial device. It takes over the normal interrupt
vector of UART1 (mapped, on the UNO32, to Serial) and implements its own buffering
strategy for transmission and reception. Each direction has its own Pipe for transferring
the data to/from the ISR. Writing to the UART has write "blocking" turned on (when the pipe
is full the program waits for data to be read from the other end - only useful for
interrupts) so you don't lose data.