This repository has been archived on 2024-06-03. You can view files and clone it, but cannot push or open issues or pull requests.
app/headers/buzzerconn.h

132 lines
3.6 KiB
C++

#ifndef BUZZERCONN_H
#define BUZZERCONN_H
#include <QObject>
#include <QObject>
#include <QDir>
#include <QUrl>
#include <QtNetwork>
#include <QAuthenticator>
#include <QDesktopServices>
#include <QDateTime>
#include <QtDebug>
#include <QtConcurrent/qtconcurrentthreadengine.h>
#include "appsettings.h"
//typedef struct strReturnData{
// int status_code;
// QString text;
//}ReturnData_t;
class BuzzerConn : public QObject
{
Q_OBJECT
Q_PROPERTY(double lastTriggered READ getLastTriggered NOTIFY triggered)
Q_PROPERTY(QString ipAdress WRITE setIP READ getIP)
Q_PROPERTY(QString state READ getState NOTIFY stateChanged)
Q_PROPERTY(int progress READ getProgress NOTIFY progressChanged)
Q_PROPERTY(double offset READ getOffset NOTIFY offsetChanged)
public:
explicit BuzzerConn(QObject *parent = nullptr, QString ip = "http://192.168.4.1", int port = 80);
// values for the time calculation
double offset;
QList<double> latest_offsets;
double latest_button_pressed;
// double starttime;
// bool connected;
// values for the socket connection
int connection_progress;
QString ip;
int port;
int errors;
int errors_until_disconnect = 4;
// the current state
QString state;
// can be:
// - 'disconnected'
// - 'connecting'
// - 'connected'
private:
QDateTime *date;
//to get the current time
QTcpSocket *socket;
//socket for communication with the extention
QStringList pending_commands;
//commands to send to the extention
//one command is being sent whenever refresh() is called
signals:
void triggered();
//is emitted when the device is triggered
void stateChanged();
//is emitted, when the connection state changes
void progressChanged();
//is emmited during the connection process when the progress changes
void offsetChanged();
public slots:
Q_INVOKABLE signed long sendCommand(QString command, int timeout);
//function to send commands to the sensor
//Can be:
//command - return
//GET_TIMESTAMP - timestamp of the sensor
//GET_LASTPRESSED - timestamp of the sensor when it was triggered the last time
//
//error codes:
//(-1) : timeout
//(-2) : invalid data was recieved
Q_INVOKABLE QList<double> gettimes(int timeout, bool bothTimes = true);
//function to get the times from the buzzer as a list
//if bothTimes is true the current and the last-pressed timestamp will be returned
//else only the current timestamp will be returned
Q_INVOKABLE bool connect();
//function to connect to buzzer
Q_INVOKABLE bool calcoffset(QList<double> times);
//function that calculates the average time offset between the buzzer and the device
Q_INVOKABLE double get(QString key);
//can return some things (offset, lastpressed, currtime, connection_progress, connected)
Q_INVOKABLE bool refresh();
//- refreshes the connection to the buzzer
//- checks if it was triggered, if so 'triggered()' is emitted
//- sends one command from the pending commans list
Q_INVOKABLE void appendCommand(QString command);
//appends a command to the pending commnds list
// functions for the qml adapter
QString getIP() const;
void setIP(const QString &ipAdress);
QString getState() const;
void setState(QString newState);
int getProgress() const;
double getOffset() const;
double getLastTriggered() const;
};
#endif // BUZZERCONN_H