|
plptools
|
Thread-safe class responsible for managing the underlying serial device and data link framing. More...
#include <datalink.h>

Public Member Functions | |
| DataLink (const char *fname, int baud, Link *_link, bool noDSRCheck, unsigned short verbose, const int cancellationFd) | |
| ~DataLink () | |
| void | send (BufferStore &b, bool isEPOC) |
| Send a buffer out to serial line. | |
| int | getSpeed () |
| bool | linkFailed () |
| void | reset () |
Private Member Functions | |
| void | addToCrc (unsigned char a, unsigned short *crc) |
| void | serialOpen () |
| Open the serial port. | |
| bool | processInputData (std::vector< BufferStore > &receivedData) |
| Reads the incoming data and processes data frames. | |
| void | sendReceivedData (std::vector< BufferStore > &receivedData) |
| void | shutdown () |
| Store a flag that we're shutting down and signal any waiting send calls. | |
| void | internalReset (bool resetBaudRateIndex) |
| void | signalPumpThread () |
Private Attributes | |
| pthread_t | dataPumpThreadId_ |
| unsigned int | crc_table [256] |
| std::mutex | serialMutex_ |
| int | serialFd_ = -1 |
| int | serialStatus = -1 |
| int | baudRateIndex_ = 0 |
| int | baudRate_ |
| std::mutex | inputMutex_ |
| bool | esc = false |
| bool | justStarted = true |
| BufferStore | rcv |
| int | startPkt = -1 |
| int | lastSYN = -1 |
| unsigned short | crcIn = 0 |
| unsigned short | inCRCstate |
| unsigned short | receivedCRC |
| unsigned char * | inBuffer |
| int | inWrite = 0 |
| int | inRead = 0 |
| std::mutex | outputMutex_ |
| bool | isCancelled_ = false |
| unsigned char * | outBuffer |
| int | outWrite = 0 |
| int | outRead = 0 |
| bool | noDSRCheck_ = false |
| std::condition_variable | outputCondition_ |
| Link *const | link_ |
| const std::string | devname |
| const int | requestedBaudRate_ |
| Requested baud rate; -1 indicates automatic. | |
| const int | cancellationFd_ |
| Used to signal cancellation. | |
| const short int | verbose_ |
| int | outputDataReadyPipe_ [2] = { -1, -1 } |
Friends | |
| void * | data_pump_thread (void *arg) |
Thread-safe class responsible for managing the underlying serial device and data link framing.
Definition at line 43 of file datalink.h.
| DataLink::DataLink | ( | const char * | fname, |
| int | baud, | ||
| Link * | _link, | ||
| bool | noDSRCheck, | ||
| unsigned short | verbose, | ||
| const int | cancellationFd ) |
Definition at line 219 of file datalink.cc.
| DataLink::~DataLink | ( | ) |
Definition at line 256 of file datalink.cc.
|
inlineprivate |
Definition at line 70 of file datalink.h.
| int DataLink::getSpeed | ( | ) |
Definition at line 348 of file datalink.cc.
|
private |
Definition at line 310 of file datalink.cc.
| bool DataLink::linkFailed | ( | ) |
Definition at line 549 of file datalink.cc.
|
private |
Reads the incoming data and processes data frames.
Definition at line 422 of file datalink.cc.
| void DataLink::reset | ( | ) |
Definition at line 299 of file datalink.cc.
| void DataLink::send | ( | BufferStore & | b, |
| bool | isEPOC ) |
Send a buffer out to serial line.
This blocks until there's enough space in the output buffer to write the whole message atomically (to ensure messages can't get interleaved), suspending the current thread until signaled by the data pump thread if there's insufficient space.
Drops messages on the floor when shutting down.
| b | buffer to send |
| isEPOC | flag indicating if additional EPOC32 byte-stuffing should be used |
Definition at line 353 of file datalink.cc.
|
private |
Definition at line 543 of file datalink.cc.
|
private |
Open the serial port.
Callers must hold the serial lock, and the port must be closed.
Definition at line 281 of file datalink.cc.
|
private |
Store a flag that we're shutting down and signal any waiting send calls.
Definition at line 303 of file datalink.cc.
|
private |
Definition at line 343 of file datalink.cc.
|
friend |
Definition at line 77 of file datalink.cc.
|
private |
Definition at line 119 of file datalink.h.
|
private |
Definition at line 118 of file datalink.h.
|
private |
|
private |
Definition at line 101 of file datalink.h.
|
private |
Definition at line 129 of file datalink.h.
|
private |
Definition at line 99 of file datalink.h.
|
private |
Definition at line 149 of file datalink.h.
|
private |
Definition at line 124 of file datalink.h.
|
private |
Definition at line 132 of file datalink.h.
|
private |
Definition at line 130 of file datalink.h.
|
private |
Definition at line 123 of file datalink.h.
|
private |
Definition at line 132 of file datalink.h.
|
private |
Definition at line 132 of file datalink.h.
|
private |
Definition at line 137 of file datalink.h.
|
private |
Definition at line 125 of file datalink.h.
|
private |
Definition at line 128 of file datalink.h.
|
private |
Definition at line 147 of file datalink.h.
|
private |
Definition at line 139 of file datalink.h.
|
private |
Definition at line 138 of file datalink.h.
|
private |
Definition at line 143 of file datalink.h.
|
private |
Definition at line 164 of file datalink.h.
|
private |
Definition at line 136 of file datalink.h.
|
private |
Definition at line 138 of file datalink.h.
|
private |
Definition at line 138 of file datalink.h.
|
private |
Definition at line 126 of file datalink.h.
|
private |
Definition at line 131 of file datalink.h.
|
private |
Requested baud rate; -1 indicates automatic.
Definition at line 154 of file datalink.h.
|
private |
Definition at line 116 of file datalink.h.
|
private |
Definition at line 115 of file datalink.h.
|
private |
Definition at line 117 of file datalink.h.
|
private |
Definition at line 127 of file datalink.h.
|
private |
Definition at line 162 of file datalink.h.