diff options
author | Javier <dev.git@javispedro.com> | 2015-12-14 01:52:17 +0100 |
---|---|---|
committer | Javier <dev.git@javispedro.com> | 2015-12-14 01:52:17 +0100 |
commit | 702e018ca9e780bb076033ce5d1d370d4eb7319e (patch) | |
tree | 2012493213c630d7281718aadd1a6fa9a2c92885 /saprotocol.cc | |
parent | ce8a092a235c8d59f01631c80786f920eb6a777b (diff) | |
download | sapd-702e018ca9e780bb076033ce5d1d370d4eb7319e.tar.gz sapd-702e018ca9e780bb076033ce5d1d370d4eb7319e.zip |
properly handle data frames with sequence numbers
Diffstat (limited to 'saprotocol.cc')
-rw-r--r-- | saprotocol.cc | 24 |
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; |