summaryrefslogtreecommitdiff
path: root/saprotocol.cc
diff options
context:
space:
mode:
authorJavier <dev.git@javispedro.com>2015-12-14 01:52:17 +0100
committerJavier <dev.git@javispedro.com>2015-12-14 01:52:17 +0100
commit702e018ca9e780bb076033ce5d1d370d4eb7319e (patch)
tree2012493213c630d7281718aadd1a6fa9a2c92885 /saprotocol.cc
parentce8a092a235c8d59f01631c80786f920eb6a777b (diff)
downloadsapd-702e018ca9e780bb076033ce5d1d370d4eb7319e.tar.gz
sapd-702e018ca9e780bb076033ce5d1d370d4eb7319e.zip
properly handle data frames with sequence numbers
Diffstat (limited to 'saprotocol.cc')
-rw-r--r--saprotocol.cc24
1 files changed, 24 insertions, 0 deletions
diff --git a/saprotocol.cc b/saprotocol.cc
index 9f25613..22b3111 100644
--- a/saprotocol.cc
+++ b/saprotocol.cc
@@ -229,6 +229,30 @@ QByteArray SAProtocol::packFrame(quint16 sessionId, const QByteArray &data)
return packFrame(frame);
}
+SAProtocol::DataFrame SAProtocol::unpackDataFrame(const QByteArray &data, bool withSeqNum)
+{
+ DataFrame frame;
+ int offset = 0;
+ frame.withSeqNum = withSeqNum;
+ if (withSeqNum) {
+ frame.seqNum = read<quint16>(data, offset);
+ frame.unk_1 = read<quint8>(data, offset);
+ }
+ frame.data = data.mid(offset);
+ return frame;
+}
+
+QByteArray SAProtocol::packDataFrame(const DataFrame &frame)
+{
+ QByteArray data;
+ if (frame.withSeqNum) {
+ append<quint16>(data, frame.seqNum);
+ append<quint8>(data, frame.unk_1);
+ }
+ data.append(frame.data);
+ return data;
+}
+
SAProtocol::ServiceConnectionRequestFrame SAProtocol::unpackServiceConnectionRequestFrame(const QByteArray &data)
{
ServiceConnectionRequestFrame frame;