Qt 4.8
Public Functions | Protected Functions | Properties | List of all members
QOstDevice Class Reference

#include <qostdevice.h>

Inheritance diagram for QOstDevice:
QIODevice QObject

Public Functions

qint64 bytesAvailable () const
 Returns the number of bytes that are available for reading. More...
 
void close ()
 First emits aboutToClose(), then closes the device and sets its OpenMode to NotOpen. More...
 
bool open (int ostProtocolId)
 
 QOstDevice (QObject *parent=0)
 
bool waitForReadyRead (int msecs)
 Blocks until new data is available for reading and the readyRead() signal has been emitted, or until msecs milliseconds have passed. More...
 
 ~QOstDevice ()
 
- Public Functions inherited from QIODevice
virtual bool atEnd () const
 Returns true if the current read and write position is at the end of the device (i.e. More...
 
virtual qint64 bytesToWrite () const
 For buffered devices, this function returns the number of bytes waiting to be written. More...
 
virtual bool canReadLine () const
 Returns true if a complete line of data can be read from the device; otherwise returns false. More...
 
QString errorString () const
 Returns a human-readable description of the last device error that occurred. More...
 
bool getChar (char *c)
 Reads one character from the device and stores it in c. More...
 
bool isOpen () const
 Returns true if the device is open; otherwise returns false. More...
 
bool isReadable () const
 Returns true if data can be read from the device; otherwise returns false. More...
 
virtual bool isSequential () const
 Returns true if this device is sequential; otherwise returns false. More...
 
bool isTextModeEnabled () const
 Returns true if the Text flag is enabled; otherwise returns false. More...
 
bool isWritable () const
 Returns true if data can be written to the device; otherwise returns false. More...
 
virtual bool open (OpenMode mode)
 Opens the device and sets its OpenMode to mode. More...
 
OpenMode openMode () const
 Returns the mode in which the device has been opened; i.e. More...
 
qint64 peek (char *data, qint64 maxlen)
 Reads at most maxSize bytes from the device into data, without side effects (i. More...
 
QByteArray peek (qint64 maxlen)
 Peeks at most maxSize bytes from the device, returning the data peeked as a QByteArray. More...
 
virtual qint64 pos () const
 For random-access devices, this function returns the position that data is written to or read from. More...
 
bool putChar (char c)
 Writes the character c to the device. More...
 
 QIODevice ()
 Constructs a QIODevice object. More...
 
 QIODevice (QObject *parent)
 Constructs a QIODevice object with the given parent. More...
 
qint64 read (char *data, qint64 maxlen)
 Reads at most maxSize bytes from the device into data, and returns the number of bytes read. More...
 
QByteArray read (qint64 maxlen)
 Reads at most maxSize bytes from the device, and returns the data read as a QByteArray. More...
 
QByteArray readAll ()
 Reads all available data from the device, and returns it as a QByteArray. More...
 
qint64 readLine (char *data, qint64 maxlen)
 This function reads a line of ASCII characters from the device, up to a maximum of maxSize - 1 bytes, stores the characters in data, and returns the number of bytes read. More...
 
QByteArray readLine (qint64 maxlen=0)
 Reads a line from the device, but no more than maxSize characters, and returns the result as a QByteArray. More...
 
virtual bool reset ()
 Seeks to the start of input for random-access devices. More...
 
virtual bool seek (qint64 pos)
 For random-access devices, this function sets the current position to pos, returning true on success, or false if an error occurred. More...
 
void setTextModeEnabled (bool enabled)
 If enabled is true, this function sets the Text flag on the device; otherwise the Text flag is removed. More...
 
virtual qint64 size () const
 For open random-access devices, this function returns the size of the device. More...
 
void ungetChar (char c)
 Puts the character c back into the device, and decrements the current position unless the position is 0. More...
 
virtual bool waitForBytesWritten (int msecs)
 For buffered devices, this function waits until a payload of buffered written data has been written to the device and the bytesWritten() signal has been emitted, or until msecs milliseconds have passed. More...
 
qint64 write (const char *data, qint64 len)
 Writes at most maxSize bytes of data from data to the device. More...
 
qint64 write (const char *data)
 Writes data from a zero-terminated string of 8-bit characters to the device. More...
 
qint64 write (const QByteArray &data)
 Writes the content of byteArray to the device. More...
 
virtual ~QIODevice ()
 The destructor is virtual, and QIODevice is an abstract base class. More...
 
- Public Functions inherited from QObject
bool blockSignals (bool b)
 If block is true, signals emitted by this object are blocked (i.e., emitting a signal will not invoke anything connected to it). More...
 
const QObjectListchildren () const
 Returns a list of child objects. More...
 
bool connect (const QObject *sender, const char *signal, const char *member, Qt::ConnectionType type=Qt::AutoConnection) const
 
bool disconnect (const char *signal=0, const QObject *receiver=0, const char *member=0)
 
bool disconnect (const QObject *receiver, const char *member=0)
 
void dumpObjectInfo ()
 Dumps information about signal connections, etc. More...
 
void dumpObjectTree ()
 Dumps a tree of children to the debug output. More...
 
QList< QByteArraydynamicPropertyNames () const
 Returns the names of all properties that were dynamically added to the object using setProperty(). More...
 
virtual bool event (QEvent *)
 This virtual function receives events to an object and should return true if the event e was recognized and processed. More...
 
virtual bool eventFilter (QObject *, QEvent *)
 Filters events if this object has been installed as an event filter for the watched object. More...
 
template<typename T >
findChild (const QString &aName=QString()) const
 Returns the child of this object that can be cast into type T and that is called name, or 0 if there is no such object. More...
 
template<typename T >
QList< T > findChildren (const QString &aName=QString()) const
 Returns all children of this object with the given name that can be cast to type T, or an empty list if there are no such objects. More...
 
template<typename T >
QList< T > findChildren (const QRegExp &re) const
 
bool inherits (const char *classname) const
 Returns true if this object is an instance of a class that inherits className or a QObject subclass that inherits className; otherwise returns false. More...
 
void installEventFilter (QObject *)
 Installs an event filter filterObj on this object. More...
 
bool isWidgetType () const
 Returns true if the object is a widget; otherwise returns false. More...
 
void killTimer (int id)
 Kills the timer with timer identifier, id. More...
 
virtual const QMetaObjectmetaObject () const
 Returns a pointer to the meta-object of this object. More...
 
void moveToThread (QThread *thread)
 Changes the thread affinity for this object and its children. More...
 
QString objectName () const
 
QObjectparent () const
 Returns a pointer to the parent object. More...
 
QVariant property (const char *name) const
 Returns the value of the object's name property. More...
 
Q_INVOKABLE QObject (QObject *parent=0)
 Constructs an object with parent object parent. More...
 
void removeEventFilter (QObject *)
 Removes an event filter object obj from this object. More...
 
void setObjectName (const QString &name)
 
void setParent (QObject *)
 Makes the object a child of parent. More...
 
bool setProperty (const char *name, const QVariant &value)
 Sets the value of the object's name property to value. More...
 
void setUserData (uint id, QObjectUserData *data)
 
bool signalsBlocked () const
 Returns true if signals are blocked; otherwise returns false. More...
 
int startTimer (int interval)
 Starts a timer and returns a timer identifier, or returns zero if it could not start a timer. More...
 
QThreadthread () const
 Returns the thread in which the object lives. More...
 
QObjectUserDatauserData (uint id) const
 
virtual ~QObject ()
 Destroys the object, deleting all its child objects. More...
 

Protected Functions

qint64 readData (char *data, qint64 maxSize)
 Reads up to maxSize bytes from the device into data, and returns the number of bytes read or -1 if an error occurred. More...
 
qint64 writeData (const char *data, qint64 maxSize)
 Writes up to maxSize bytes from data to the device. More...
 
- Protected Functions inherited from QIODevice
 QIODevice (QIODevicePrivate &dd, QObject *parent=0)
 
virtual qint64 readLineData (char *data, qint64 maxlen)
 Reads up to maxSize characters into data and returns the number of characters read. More...
 
void setErrorString (const QString &errorString)
 Sets the human readable description of the last device error that occurred to str. More...
 
void setOpenMode (OpenMode openMode)
 Sets the OpenMode of the device to openMode. More...
 
- Protected Functions inherited from QObject
virtual void childEvent (QChildEvent *)
 This event handler can be reimplemented in a subclass to receive child events. More...
 
virtual void connectNotify (const char *signal)
 This virtual function is called when something has been connected to signal in this object. More...
 
virtual void customEvent (QEvent *)
 This event handler can be reimplemented in a subclass to receive custom events. More...
 
virtual void disconnectNotify (const char *signal)
 This virtual function is called when something has been disconnected from signal in this object. More...
 
 QObject (QObjectPrivate &dd, QObject *parent=0)
 
int receivers (const char *signal) const
 Returns the number of receivers connected to the signal. More...
 
QObjectsender () const
 Returns a pointer to the object that sent the signal, if called in a slot activated by a signal; otherwise it returns 0. More...
 
int senderSignalIndex () const
 
virtual void timerEvent (QTimerEvent *)
 This event handler can be reimplemented in a subclass to receive timer events for the object. More...
 

Properties

QOstDevicePrivated_ptr
 

Additional Inherited Members

- Public Types inherited from QIODevice
enum  OpenModeFlag {
  NotOpen = 0x0000, ReadOnly = 0x0001, WriteOnly = 0x0002, ReadWrite = ReadOnly | WriteOnly,
  Append = 0x0004, Truncate = 0x0008, Text = 0x0010, Unbuffered = 0x0020
}
 This enum is used with open() to describe the mode in which a device is opened. More...
 
- Public Slots inherited from QObject
void deleteLater ()
 Schedules this object for deletion. More...
 
- Signals inherited from QIODevice
void aboutToClose ()
 This signal is emitted when the device is about to close. More...
 
void bytesWritten (qint64 bytes)
 This signal is emitted every time a payload of data has been written to the device. More...
 
void readChannelFinished ()
 This signal is emitted when the input (reading) stream is closed in this device. More...
 
void readyRead ()
 This signal is emitted once every time new data is available for reading from the device. More...
 
- Signals inherited from QObject
void destroyed (QObject *=0)
 This signal is emitted immediately before the object obj is destroyed, and can not be blocked. More...
 
- Static Public Functions inherited from QObject
static bool connect (const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType=Qt::AutoConnection)
 Creates a connection of the given type from the signal in the sender object to the method in the receiver object. More...
 
static bool connect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method, Qt::ConnectionType type=Qt::AutoConnection)
 
static bool disconnect (const QObject *sender, const char *signal, const QObject *receiver, const char *member)
 Disconnects signal in object sender from method in object receiver. More...
 
static bool disconnect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &member)
 
static uint registerUserData ()
 
static QString tr (const char *sourceText, const char *comment=0, int n=-1)
 
static QString trUtf8 (const char *sourceText, const char *comment=0, int n=-1)
 
- Static Public Variables inherited from QObject
static const QMetaObject staticMetaObject
 This variable stores the meta-object for the class. More...
 
- Protected Variables inherited from QObject
QScopedPointer< QObjectDatad_ptr
 
- Static Protected Variables inherited from QObject
static const QMetaObject staticQtMetaObject
 

Detailed Description

Definition at line 51 of file qostdevice.h.

Constructors and Destructors

◆ QOstDevice()

QOstDevice::QOstDevice ( QObject parent = 0)
explicit

Definition at line 73 of file qostdevice.cpp.

73  :
74  QIODevice(parent), d_ptr(new QOstDevicePrivate)
75 {
76  d_ptr->q_ptr = this;
77 }
QOstDevice * q_ptr
Definition: qostdevice.cpp:49
QOstDevicePrivate * d_ptr
Definition: qostdevice.h:72
QIODevice()
Constructs a QIODevice object.
Definition: qiodevice.cpp:390

◆ ~QOstDevice()

QOstDevice::~QOstDevice ( )

Definition at line 79 of file qostdevice.cpp.

80 {
81  close();
82  delete d_ptr;
83 }
QOstDevicePrivate * d_ptr
Definition: qostdevice.h:72
void close()
First emits aboutToClose(), then closes the device and sets its OpenMode to NotOpen.
Definition: qostdevice.cpp:138

Functions

◆ bytesAvailable()

qint64 QOstDevice::bytesAvailable ( ) const
virtual

Returns the number of bytes that are available for reading.

This function is commonly used with sequential devices to determine the number of bytes to allocate in a buffer before reading.

Subclasses that reimplement this function must call the base implementation in order to include the size of QIODevices' buffer. Example:

qint64 CustomDevice::bytesAvailable() const
{
return buffer.size() + QIODevice::bytesAvailable();
}
See also
bytesToWrite(), readyRead(), isSequential()

Reimplemented from QIODevice.

Definition at line 183 of file qostdevice.cpp.

184 {
185  Q_D(const QOstDevice);
186  return d->dataBuf.length();
187 }
double d
Definition: qnumeric_p.h:62
#define Q_D(Class)
Definition: qglobal.h:2482

◆ close()

void QOstDevice::close ( )
virtual

First emits aboutToClose(), then closes the device and sets its OpenMode to NotOpen.

The error string is also reset.

See also
setOpenMode() OpenMode

Reimplemented from QIODevice.

Definition at line 138 of file qostdevice.cpp.

Referenced by ~QOstDevice().

139 {
140  Q_D(QOstDevice);
142  d->Cancel();
143  // RDbgTrcComm::Close isn't safe to call when not open, sigh
144  if (d->ost.Handle()) {
145  d->ost.Close();
146  }
147 }
double d
Definition: qnumeric_p.h:62
virtual void close()
First emits aboutToClose(), then closes the device and sets its OpenMode to NotOpen.
Definition: qiodevice.cpp:590
#define Q_D(Class)
Definition: qglobal.h:2482

◆ open()

bool QOstDevice::open ( int  ostProtocolId)

Definition at line 85 of file qostdevice.cpp.

86 {
87  if (isOpen())
88  return false;
89 
90  Q_D(QOstDevice);
91  TInt err = d->ost.Connect();
92  if (!err) err = d->ost.Open();
93  const TVersion KRequiredVersion(1,1,0);
94  TVersion version = d->ost.Version();
95  if (version.iMajor < KRequiredVersion.iMajor ||
96  (version.iMajor == KRequiredVersion.iMajor && version.iMinor < KRequiredVersion.iMinor)) {
97  setErrorString("CODA version too old. At least version 4.0.18 (without TRK) is required.");
98  return false;
99  }
100 
101  if (!err) err = d->ost.RegisterProtocolID((TOstProtIds)ostProtocolId, EFalse);
102  if (!err) {
103  d->ost.ReadMessage(d->iStatus, d->readBuf);
104  d->SetActive();
106  }
107  return false;
108 }
double d
Definition: qnumeric_p.h:62
#define Q_D(Class)
Definition: qglobal.h:2482
bool isOpen() const
Returns true if the device is open; otherwise returns false.
Definition: qiodevice.cpp:530
int TOstProtIds
Definition: usbostcomm.h:50
void setErrorString(const QString &errorString)
Sets the human readable description of the last device error that occurred to str.
Definition: qiodevice.cpp:1660
virtual bool open(OpenMode mode)
Opens the device and sets its OpenMode to mode.
Definition: qiodevice.cpp:570

◆ readData()

qint64 QOstDevice::readData ( char *  data,
qint64  maxSize 
)
protectedvirtual

Reads up to maxSize bytes from the device into data, and returns the number of bytes read or -1 if an error occurred.

If there are no bytes to be read and there can never be more bytes available (examples include socket closed, pipe closed, sub-process finished), this function returns -1.

This function is called by QIODevice. Reimplement this function when creating a subclass of QIODevice.

When reimplementing this function it is important that this function reads all the required data before returning. This is required in order for QDataStream to be able to operate on the class. QDataStream assumes all the requested information was read and therefore does not retry reading if there was a problem.

See also
read() readLine() writeData()

Implements QIODevice.

Definition at line 149 of file qostdevice.cpp.

150 {
151  Q_D(QOstDevice);
152  if (d->dataBuf.length() == 0 && !d->IsActive())
153  return -1;
154  qint64 available = qMin(maxSize, (qint64)d->dataBuf.length());
155  memcpy(data, d->dataBuf.constData(), available);
156  d->dataBuf.remove(0, available);
157  return available;
158 }
double d
Definition: qnumeric_p.h:62
Q_DECL_CONSTEXPR const T & qMin(const T &a, const T &b)
Definition: qglobal.h:1215
#define Q_D(Class)
Definition: qglobal.h:2482
static const char * data(const QByteArray &arr)
__int64 qint64
Definition: qglobal.h:942

◆ waitForReadyRead()

bool QOstDevice::waitForReadyRead ( int  msecs)
virtual

Blocks until new data is available for reading and the readyRead() signal has been emitted, or until msecs milliseconds have passed.

If msecs is -1, this function will not time out.

Returns true if new data is available for reading; otherwise returns false (if the operation timed out or if an error occurred).

This function can operate without an event loop. It is useful when writing non-GUI applications and when performing I/O operations in a non-GUI thread.

If called from within a slot connected to the readyRead() signal, readyRead() will not be reemitted.

Reimplement this function to provide a blocking API for a custom device. The default implementation does nothing, and returns false.

Warning
Calling this function from the main (GUI) thread might cause your user interface to freeze.
See also
waitForBytesWritten()

Reimplemented from QIODevice.

Definition at line 189 of file qostdevice.cpp.

190 {
191  Q_D(QOstDevice);
192  if (msecs >= 0) {
193  RTimer timer;
194  TInt err = timer.CreateLocal();
195  if (err) return false;
196  TRequestStatus timeoutStat;
197  timer.After(timeoutStat, msecs*1000);
198  User::WaitForRequest(timeoutStat, d->iStatus);
199  if (timeoutStat != KRequestPending) {
200  // Timed out
201  timer.Close();
202  return false;
203  } else {
204  // We got data, so cancel timer
205  timer.Cancel();
206  User::WaitForRequest(timeoutStat);
207  timer.Close();
208  // And drop through
209  }
210  } else {
211  // Just wait forever for data
212  User::WaitForRequest(d->iStatus);
213  }
214 
215  // If we get here we have data
216  TInt err = d->iStatus.Int();
217  d->AoFlags() &= ~3; // This is necessary to clean up the scheduler as you're not supposed to bypass it like this
218  TRAP_IGNORE(d->RunL());
219  return err == KErrNone;
220 }
double d
Definition: qnumeric_p.h:62
EventLoopTimerRef timer
#define Q_D(Class)
Definition: qglobal.h:2482

◆ writeData()

qint64 QOstDevice::writeData ( const char *  data,
qint64  maxSize 
)
protectedvirtual

Writes up to maxSize bytes from data to the device.

Returns the number of bytes written, or -1 if an error occurred.

This function is called by QIODevice. Reimplement this function when creating a subclass of QIODevice.

When reimplementing this function it is important that this function writes all the data available before returning. This is required in order for QDataStream to be able to operate on the class. QDataStream assumes all the information was written and therefore does not retry writing if there was a problem.

See also
read() write()

Implements QIODevice.

Definition at line 162 of file qostdevice.cpp.

163 {
164  Q_D(QOstDevice);
165  TPtrC8 ptr((const TUint8*)data, (TInt)maxSize);
166  while (ptr.Length()) {
167  TPtrC8 fragment = ptr.Left(qMin(ptr.Length(), KMaxOstPacketLen));
168  //qDebug("QOstDevice writing %d bytes", fragment.Length());
169  TRequestStatus stat;
170  d->ost.WriteMessage(stat, fragment);
171  User::WaitForRequest(stat);
172  if (stat.Int() != KErrNone) {
173  setErrorString(QString("Error %1 from RUsbOstComm::WriteMessage()").arg(stat.Int()));
174  return -1;
175  }
176  ptr.Set(ptr.Mid(fragment.Length()));
177  }
178  emit bytesWritten(maxSize); //TODO does it matter this is emitted synchronously?
179  //qDebug("QOstDevice wrote %d bytes", ptr.Size());
180  return maxSize;
181 }
double d
Definition: qnumeric_p.h:62
Q_DECL_CONSTEXPR const T & qMin(const T &a, const T &b)
Definition: qglobal.h:1215
void bytesWritten(qint64 bytes)
This signal is emitted every time a payload of data has been written to the device.
The QString class provides a Unicode character string.
Definition: qstring.h:83
#define Q_D(Class)
Definition: qglobal.h:2482
#define emit
Definition: qobjectdefs.h:76
static const char * data(const QByteArray &arr)
const T * ptr(const T &t)
void setErrorString(const QString &errorString)
Sets the human readable description of the last device error that occurred to str.
Definition: qiodevice.cpp:1660
static const TInt KMaxOstPacketLen
Definition: qostdevice.cpp:160

Properties

◆ d_ptr

QOstDevicePrivate* QOstDevice::d_ptr
private

Definition at line 72 of file qostdevice.h.

Referenced by QOstDevice(), and ~QOstDevice().


The documentation for this class was generated from the following files: