aboutsummaryrefslogtreecommitdiffstats
path: root/src/Xpl2Client.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/Xpl2Client.h')
-rw-r--r--src/Xpl2Client.h34
1 files changed, 23 insertions, 11 deletions
diff --git a/src/Xpl2Client.h b/src/Xpl2Client.h
index c6a7c07..c9da25d 100644
--- a/src/Xpl2Client.h
+++ b/src/Xpl2Client.h
@@ -6,10 +6,13 @@
#include "Xpl2Protocol.h"
+#include <QHash>
#include <QObject>
#include <QQmlEngine>
#include <QTcpSocket>
+#include <functional>
+
class Xpl2Client : public QObject
{
Q_OBJECT
@@ -155,17 +158,26 @@ private:
void handleKaPing (QTcpSocket &socket);
void handleGsJcVersion (const QVariantList &params);
void handleGsPhVersion (const QVariantList &params);
- void handleJcSuccessResponse (const QByteArray &command,
- const QVariantList &params);
- void handlePhSuccessResponse (const QByteArray &command,
- const QVariantList &params);
- void handleCnPhCalibrationData (const QVariantList &params);
- void handleCnPhCalibrationRawData (const QVariantList &params);
- void handleCnPhCalibratedBaseFrequency (const QVariantList &params);
- void handleCnJcStatusMessagingStart (const QVariantList &params);
- void handleCnJcStatusMessagingStop (const QVariantList &params);
- void handleCnPhStatusMessagingStart (const QVariantList &params);
- void handleCnPhStatusMessagingStop (const QVariantList &params);
+ enum class ResponseShape
+ {
+ JcSuccess,
+ PhSuccess,
+ CalData,
+ BaseFreq,
+ StatusStart
+ };
+
+ struct ResponseEntry
+ {
+ ResponseShape shape;
+ int minParams;
+ std::function<void (Xpl2Client *, const QVariantList &)> emitter;
+ };
+
+ static const QHash<QByteArray, ResponseEntry> s_responseTable;
+
+ bool dispatchResponse (const QByteArray &command, const QVariantList &params,
+ const QTcpSocket *socket);
void updateConnectedState ();
QString logTag (const QTcpSocket *socket) const;