SupportedMessages.cpp
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #include "Qt.h"
00024 #include "SupportedMessages.h"
00025 #include "Imports.cpp"
00026
00030 SupportedMessages::SupportedMessages()
00031 : VendorMessage (OpenVendorDescriptor, QByteArray (4, '\0'), 0, 0)
00032 {
00033 }
00034
00039 SupportedMessages::SupportedMessages (const QByteArray &rawHeader,
00040 const QByteArray &rawPayload)
00041 : VendorMessage (rawHeader, rawPayload)
00042 {
00043 parse();
00044 Q_ASSERT (vendorCode().toBytes() == QByteArray (4, '\0'));
00045 Q_ASSERT (messageType() == 0);
00046 Q_ASSERT (versionNumber() == 0);
00047 }
00048
00052 SupportedMessages::~SupportedMessages()
00053 {
00054 }
00055
00057 bool SupportedMessages::prepareReadPayload (const QByteArray &rawPayload)
00058 {
00059 return (rawPayload.length() - 2) % 8 == 0;
00060 }
00061
00063 void SupportedMessages::readPayload (QDataStream &stream)
00064 {
00065 VendorMessage::readPayload (stream);
00066 quint16 count;
00067 stream >> count;
00068 for (int i = 0; i < count; i++) {
00069 Message message;
00070 stream >> message.vendorCode;
00071 stream >> message.messageType;
00072 stream >> message.versionNumber;
00073 p.messages.append (message);
00074 }
00075 }
00076
00078 int SupportedMessages::prepareWritePayload() const
00079 {
00080 return VendorMessage::prepareWritePayload() + 2 + p.messages.size() * 8;
00081 }
00082
00084 void SupportedMessages::writePayload(QDataStream &stream) const
00085 {
00086 VendorMessage::writePayload (stream);
00087 stream << static_cast <quint16> (p.messages.size());
00088 foreach (Message message, p.messages) {
00089 stream << message.vendorCode;
00090 stream << message.messageType;
00091 stream << message.versionNumber;
00092 }
00093 }
00094
00095 void SupportedMessages::addMessage (const VendorCode &vendorCode,
00096 quint16 messageType, quint16 versionNumber)
00097 {
00098 Message message;
00099 message.vendorCode = vendorCode;
00100 message.messageType = messageType;
00101 message.versionNumber = versionNumber;
00102 p.messages.append (message);
00103 }