An abstract IO interface. More...
#include <iointerface.h>
Public Types | |
enum | PortOptions { PO_NoFlowControl = 0, PO_RtsCtsFlowControl = (1 << 0), PO_DtrDsrFlowControl = (1 << 1), PO_XonXoffFlowControl = (1 << 2), PO_OneStopBit = 0, PO_TwoStopBits = (1 << 3), PO_XsensDefaults = (PO_NoFlowControl | PO_TwoStopBits) } |
Options for flow control and stopbits which must be used when opening a port. More... | |
Public Member Functions | |
virtual XsResultValue | appendData (const XsByteArray &bdata) |
Write data to the end of the file. More... | |
virtual void | cancelIo (void) const |
Cancel any pending io requests. More... | |
virtual XsResultValue | close (void)=0 |
Close the connection to the device. More... | |
virtual XsResultValue | closeAndDelete (void) |
Close the file and delete it. More... | |
virtual XsResultValue | create (const XsString &filename) |
Create an empty file. More... | |
virtual XsResultValue | deleteData (XsFilePos start, XsFilePos length) |
Delete the given data from the file. More... | |
virtual XsResultValue | find (const XsByteArray &needleV, XsFilePos &pos) |
Find a string of bytes in the file. More... | |
virtual XsResultValue | flushData (void)=0 |
Flush all data in the buffers to and from the device. More... | |
virtual XsFilePos | getFileSize (void) const |
Return the size of the file. More... | |
virtual XsResultValue | getLastResult (void) const =0 |
Returns the last result value produced by this interface. More... | |
virtual XsResultValue | getName (XsString &filename) const |
Retrieve the filename that was last successfully opened. More... | |
virtual XsFilePos | getReadPosition (void) const |
Return the current read position. More... | |
virtual XsFilePos | getWritePosition (void) const |
Return the current write position. More... | |
virtual XsResultValue | insertData (XsFilePos start, const XsByteArray &data) |
Insert the given data into the file. More... | |
virtual bool | isOpen (void) const =0 |
Returns true if the object has a connection to a device. More... | |
virtual bool | isReadOnly (void) const |
Return whether the file is read-only or not. More... | |
virtual XsResultValue | open (const XsPortInfo &portInfo, XsFilePos readBufSize=XS_DEFAULT_READ_BUFFER_SIZE, XsFilePos writeBufSize=XS_DEFAULT_WRITE_BUFFER_SIZE, PortOptions options=PO_XsensDefaults) |
Open a communication channel to the given port info. More... | |
virtual XsResultValue | open (const XsString &filename, bool createNew, bool readOnly) |
Open a file. More... | |
virtual XsResultValue | readData (XsFilePos maxLength, XsByteArray &data)=0 |
Read at most maxLength bytes from the device into data. More... | |
virtual XsResultValue | setReadPosition (XsFilePos pos) |
Set the new absolute read position. More... | |
virtual XsResultValue | setTimeout (uint32_t ms) |
Set the default timeout value to use in blocking operations. More... | |
virtual XsResultValue | setWritePosition (XsFilePos pos=-1) |
Set the new absolute write position. More... | |
virtual XsResultValue | waitForData (XsFilePos maxLength, XsByteArray &data) |
Wait for data to arrive or a timeout to occur. More... | |
virtual XsResultValue | writeData (const XsByteArray &data, XsFilePos *written=nullptr)=0 |
Write the data contained in data to the device. More... | |
virtual | ~IoInterface () |
Destructor. More... | |
Protected Member Functions | |
IoInterface () | |
Constructor. More... | |
XSENS_DISABLE_COPY (IoInterface) | |
An abstract IO interface.
An IoInterface provides a generic interface for dealing with an interface device such as a file, a com port or a USB port.
Definition at line 86 of file iointerface.h.
Options for flow control and stopbits which must be used when opening a port.
Enumerator | |
---|---|
PO_NoFlowControl | |
PO_RtsCtsFlowControl | |
PO_DtrDsrFlowControl | |
PO_XonXoffFlowControl | |
PO_OneStopBit | |
PO_TwoStopBits | |
PO_XsensDefaults |
Definition at line 130 of file iointerface.h.
|
inlinevirtual |
Destructor.
Definition at line 90 of file iointerface.h.
|
inlineprotected |
Constructor.
Definition at line 164 of file iointerface.h.
|
virtual |
Write data to the end of the file.
The function writes the given data to the file at the end. The current write position is also moved to the end of the file.
bdata | The byte data to append to the file |
Reimplemented in IoInterfaceFile.
Definition at line 121 of file iointerface.cpp.
|
virtual |
Cancel any pending io requests.
Reimplemented in SerialInterface.
Definition at line 114 of file iointerface.cpp.
|
pure virtual |
Close the connection to the device.
Implemented in SerialInterface, UsbInterface, and IoInterfaceFile.
|
virtual |
Close the file and delete it.
Reimplemented in IoInterfaceFile.
Definition at line 127 of file iointerface.cpp.
|
virtual |
Create an empty file.
filename | The desired (path+)name of the file |
Reimplemented in IoInterfaceFile.
Definition at line 132 of file iointerface.cpp.
|
virtual |
Delete the given data from the file.
The function erases the given data from the file at the given write position. This operation may take a while to complete, but is faster than insertData.
The write position is not changed and the read position is checked for validity upon function exit.
start | The offset of the first byte to delete |
length | The total number of bytes to delete |
Reimplemented in IoInterfaceFile.
Definition at line 138 of file iointerface.cpp.
|
virtual |
Find a string of bytes in the file.
The function searches from the current read position until the given needle
is found. If the needle is not found, XsResultValue::NOT_FOUND is returned. The function will update the seek position to the first character of the found needle.
needleV | The byte string to find. |
pos | The position where needleV was found. This will point to the first character of the found needleV. |
Reimplemented in IoInterfaceFile.
Definition at line 145 of file iointerface.cpp.
|
pure virtual |
Flush all data in the buffers to and from the device.
Implemented in SerialInterface, UsbInterface, and IoInterfaceFile.
|
virtual |
Return the size of the file.
Reimplemented in IoInterfaceFile.
Definition at line 152 of file iointerface.cpp.
|
pure virtual |
Returns the last result value produced by this interface.
Implemented in SerialInterface, UsbInterface, and IoInterfaceFile.
|
virtual |
Retrieve the filename that was last successfully opened.
\param filename The XsString which will contain the filename. \returns XRV_OK
Reimplemented in IoInterfaceFile.
Definition at line 157 of file iointerface.cpp.
|
virtual |
Return the current read position.
Reimplemented in IoInterfaceFile.
Definition at line 163 of file iointerface.cpp.
|
virtual |
Return the current write position.
Reimplemented in IoInterfaceFile.
Definition at line 168 of file iointerface.cpp.
|
virtual |
Insert the given data into the file.
The function writes the given data to the file at the current write position. This operation may take a while to complete.
The write position is placed at the end of the inserted data.
start | The offset in the file to write the first byte |
data | The data to insert in the file |
Reimplemented in IoInterfaceFile.
Definition at line 173 of file iointerface.cpp.
|
pure virtual |
Returns true if the object has a connection to a device.
Implemented in SerialInterface, UsbInterface, and IoInterfaceFile.
|
virtual |
Return whether the file is read-only or not.
Reimplemented in IoInterfaceFile.
Definition at line 180 of file iointerface.cpp.
|
virtual |
Open a communication channel to the given port info.
If the baudrate in portInfo is set to XBR_Invalid, the baud rate is automatically detected if possible.
portInfo | The details of the port that should be opened. Depending on the type of interface, parts of this parameter may be ignored. |
readBufSize | The size of the read buffer in bytes (if appliccable to the device) |
writeBufSize | The size of the write buffer in bytes (if appliccable to the device) |
options | The options to enable (flow control, stop bits) |
Reimplemented in SerialInterface, and UsbInterface.
Definition at line 96 of file iointerface.cpp.
|
virtual |
Open a file.
filename | The name of the file to open |
createNew | When true, the file will be created if it doesn't exist yet |
readOnly | When true, the file will be marked as read only for IoInterfaceFile, preventing accidental writes to the file. |
Reimplemented in IoInterfaceFile.
Definition at line 185 of file iointerface.cpp.
|
pure virtual |
Read at most maxLength bytes from the device into data.
maxLength | The maximum number of bytes to read. Depending on the device type and timeout settings, the function may return with less than this number of bytes read. |
data | A buffer that will contain the read data. |
Implemented in SerialInterface, UsbInterface, and IoInterfaceFile.
|
virtual |
Set the new absolute read position.
The read position is checked against the file size first.
pos | The new read position |
Reimplemented in IoInterfaceFile.
Definition at line 193 of file iointerface.cpp.
|
virtual |
Set the default timeout value to use in blocking operations.
This function sets the value of m_timeout. There is no infinity value. The value 0 means that all blocking operations now become polling (non-blocking) operations. If the value is set to or from 0, the low-level serial port settings may be changed in addition to the m_timeout value.
ms | The new timeout in milliseconds |
Reimplemented in StreamInterface, SerialInterface, and UsbInterface.
Definition at line 101 of file iointerface.cpp.
|
virtual |
Set the new absolute write position.
The write position is checked against the file size first.
pos | The new write position |
Reimplemented in IoInterfaceFile.
Definition at line 199 of file iointerface.cpp.
|
virtual |
Wait for data to arrive or a timeout to occur.
The function waits until maxLength
data is available or until a timeout occurs. The function returns success if data is available or XsResultValue::TIMEOUT if a timeout occurred. A timeout value of 0 indicates that the default timeout stored in the class should be used.
maxLength | The maximum number of bytes to read before returning |
data | The buffer to put the read data in. |
Reimplemented in SerialInterface.
Definition at line 107 of file iointerface.cpp.
|
pure virtual |
Write the data contained in data to the device.
data | The data to write to the device. |
written | An optional XsFilePos value that will receive the number of bytes that were actually written. |
Implemented in IoInterfaceFile, UsbInterface, and SerialInterface.
|
protected |