summaryrefslogtreecommitdiff
path: root/saprotocol.h
diff options
context:
space:
mode:
Diffstat (limited to 'saprotocol.h')
-rw-r--r--saprotocol.h20
1 files changed, 18 insertions, 2 deletions
diff --git a/saprotocol.h b/saprotocol.h
index 79c6bcd..8d78dc4 100644
--- a/saprotocol.h
+++ b/saprotocol.h
@@ -91,8 +91,7 @@ public:
static Frame unpackFrame(const QByteArray &data);
static QByteArray packFrame(const Frame& frame);
- static QByteArray packFrame(quint16 sessionId, const QByteArray &data);
-
+ static QByteArray packFrame(quint16 sessionId, const QByteArray &data, FrameType type = FrameData);
struct DataFrame {
bool withSeqNum; // (not actually present in frame)
@@ -105,6 +104,23 @@ public:
static DataFrame unpackDataFrame(const QByteArray &data, bool withSeqNum);
static QByteArray packDataFrame(const DataFrame& frame);
+ enum ControlFrameType {
+ ControlFrameImmediateAck = 0,
+ ControlFrameBlockAck = 1,
+ ControlFrameNak = 2
+ };
+
+ typedef QPair<quint16, quint16> SeqNumRange;
+
+ struct ControlFrame {
+ ControlFrameType type;
+ QList<SeqNumRange> seqNums; // Used for Naks only
+ quint16 seqNum;
+ };
+
+ static ControlFrame unpackControlFrame(const QByteArray &data);
+ static QByteArray packControlFrame(const ControlFrame& frame);
+
/* Default session messages */
enum DefaultSessionMessageType {