Initial commit
This commit is contained in:
commit
b7d90b9afe
16245 files changed
+3396666
No files matched your search
@@ -0,0 +1,101 @@
|
||||
/**
|
||||
* @RDE_HEADER@
|
||||
* Handle incoming/outgoing data from/to all BSMs of one building
|
||||
* $Id$
|
||||
* $HeadURL$
|
||||
* $Author$
|
||||
* Created by Christian Ehrlicher, SLSE, 2017-01-18
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include <QObject>
|
||||
#include <QMap>
|
||||
#include <QTimer>
|
||||
#include <QElapsedTimer>
|
||||
#include <logger.h>
|
||||
#include "bsm_socket.h"
|
||||
#include "bsm_telegrams_base.h"
|
||||
#include "bsm_types.h"
|
||||
|
||||
namespace BuildingControlUnit
|
||||
{
|
||||
namespace BSM
|
||||
{
|
||||
namespace Telegrams
|
||||
{
|
||||
class PanDirectFire;
|
||||
class PanObserverController;
|
||||
}
|
||||
|
||||
|
||||
class SocketHandler : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit SocketHandler(QObject *parent = nullptr);
|
||||
|
||||
bool init(const BuildingBsmConfig &bsmConfig);
|
||||
bool triggerFlashlight(int bsmId, const QString &hostname, int numberOfFlashes, int pauseBetweenFlashesSec);
|
||||
bool triggerFlashlightPulse(int bsmId, const QString &hostname = QString(),
|
||||
int numberOfFlashes = 1,
|
||||
int pauseDuration = 1,
|
||||
int choppedConfiguration = 10,
|
||||
int flashDuration = 30);
|
||||
|
||||
bool triggerFlashlights(int numberOfFlashes,
|
||||
int pauseDuration,
|
||||
int choppedConfiguration,
|
||||
int flashDuration);
|
||||
|
||||
bool getBsmConfiguration(int bsmId);
|
||||
bool getBsmBitTimeout(int bsmId);
|
||||
bool getBsmTechnicalStatus(int bsmId);
|
||||
|
||||
QVector<BsmState> bsmStates() const;
|
||||
Q_SIGNALS:
|
||||
void opticalShot(qint64 timeMSec,
|
||||
int sensorId,
|
||||
int originatorId,
|
||||
int ammunitionId,
|
||||
int deposition1,
|
||||
int deposition2);
|
||||
void opticalShotOC(qint64 timeMSec,
|
||||
int sensorId,
|
||||
int originatorId,
|
||||
int ammunitionId,
|
||||
DamageState damageState);
|
||||
void bsmStateChanged(const QVector<BsmState> &bsmStates);
|
||||
private Q_SLOTS:
|
||||
void onBsmStateTimerTimeOut();
|
||||
void onDataAvailable(int id, const QByteArray &data);
|
||||
void onSocketConnected(int id);
|
||||
void onSocketDisconnected(int id);
|
||||
void onCleanupQueue();
|
||||
void handleDirectFireSummray();
|
||||
|
||||
private:
|
||||
Socket *getSocketForBsm(int bsmId);
|
||||
Socket *getSocketForBsm(const QString &hostname);
|
||||
QByteArray parseBuffer(int id, const QByteArray &buffer);
|
||||
void parseBsmTelegram(int id, const QByteArray &baTele);
|
||||
bool requestVersion(int id);
|
||||
void handleDirectFire(int id, const Telegrams::PanDirectFire *tele);
|
||||
void handleObserverController(int id, const Telegrams::PanObserverController *tele);
|
||||
|
||||
static bool findNextSyncStartByte(const QByteArray &buffer, int &iCurReadPos);
|
||||
static bool findNextSyncEndByte(const QByteArray &buffer, int &iCurReadPos);
|
||||
static QByteArray substituteData(const QByteArray &data);
|
||||
static QByteArray desubstituteData(const QByteArray &data);
|
||||
static bool isSameOpticalShot(const OpticalShot &o1, const OpticalShot &o2);
|
||||
private:
|
||||
QMap<int, Socket *> m_sockets;
|
||||
QMap<int, QByteArray> m_socketData;
|
||||
QVector<OpticalShot> m_lastShots;
|
||||
QElapsedTimer m_timerOC;
|
||||
QTimer m_cleanupQueueTimer;
|
||||
QTimer m_bsmStateTimer;
|
||||
NGL::INGLLogger &m_logger;
|
||||
};
|
||||
} // namespace BSM
|
||||
} // namespace BuildingControlUnit
|
||||
Reference in new issue
Block a user