1
0
mirror of https://bitbucket.org/librepilot/librepilot.git synced 2024-12-10 18:24:11 +01:00

OP-1628 Adding more fine grained connection states to TelemetryManager.

This commit is contained in:
m_thread 2015-01-21 10:01:10 +01:00
parent e313d1ec67
commit 1cd46f049f
2 changed files with 26 additions and 7 deletions

View File

@ -32,7 +32,7 @@
#include <coreplugin/icore.h> #include <coreplugin/icore.h>
#include <coreplugin/threadmanager.h> #include <coreplugin/threadmanager.h>
TelemetryManager::TelemetryManager() : m_isAutopilotConnected(false) TelemetryManager::TelemetryManager() : m_connectionState(TELEMETRY_DISCONNECTED)
{ {
moveToThread(Core::ICore::instance()->threadManager()->getRealTimeThread()); moveToThread(Core::ICore::instance()->threadManager()->getRealTimeThread());
// Get UAVObjectManager instance // Get UAVObjectManager instance
@ -47,13 +47,20 @@ TelemetryManager::TelemetryManager() : m_isAutopilotConnected(false)
TelemetryManager::~TelemetryManager() TelemetryManager::~TelemetryManager()
{} {}
bool TelemetryManager::isConnected() bool TelemetryManager::isConnected() const
{ {
return m_isAutopilotConnected; return m_connectionState == TELEMETRY_CONNECTED;
}
TelemetryManager::ConnectionState TelemetryManager::connectionState() const {
return m_connectionState;
} }
void TelemetryManager::start(QIODevice *dev) void TelemetryManager::start(QIODevice *dev)
{ {
m_connectionState = TELEMETRY_CONNECTING;
emit connecting();
m_telemetryDevice = dev; m_telemetryDevice = dev;
// OP-1383 // OP-1383
// take ownership of the device by moving it to the TelemetryManager thread (see TelemetryManager constructor) // take ownership of the device by moving it to the TelemetryManager thread (see TelemetryManager constructor)
@ -98,6 +105,8 @@ void TelemetryManager::onStart()
void TelemetryManager::stop() void TelemetryManager::stop()
{ {
m_connectionState = TELEMETRY_DISCONNECTING;
emit disconnecting();
emit myStop(); emit myStop();
if (false) { if (false) {
@ -117,13 +126,13 @@ void TelemetryManager::onStop()
void TelemetryManager::onConnect() void TelemetryManager::onConnect()
{ {
m_isAutopilotConnected = true; m_connectionState = TELEMETRY_CONNECTED;
emit connected(); emit connected();
} }
void TelemetryManager::onDisconnect() void TelemetryManager::onDisconnect()
{ {
m_isAutopilotConnected = false; m_connectionState = TELEMETRY_DISCONNECTED;
emit disconnected(); emit disconnected();
} }

View File

@ -41,15 +41,25 @@ class UAVTALK_EXPORT TelemetryManager : public QObject {
Q_OBJECT Q_OBJECT
public: public:
enum ConnectionState {
TELEMETRY_DISCONNECTED,
TELEMETRY_CONNECTED,
TELEMETRY_DISCONNECTING,
TELEMETRY_CONNECTING
};
TelemetryManager(); TelemetryManager();
~TelemetryManager(); ~TelemetryManager();
void start(QIODevice *dev); void start(QIODevice *dev);
void stop(); void stop();
bool isConnected(); bool isConnected() const;
ConnectionState connectionState() const;
signals: signals:
void connecting();
void connected(); void connected();
void disconnecting();
void disconnected(); void disconnected();
void telemetryUpdated(double txRate, double rxRate); void telemetryUpdated(double txRate, double rxRate);
void myStart(); void myStart();
@ -68,7 +78,7 @@ private:
Telemetry *m_telemetry; Telemetry *m_telemetry;
TelemetryMonitor *m_telemetryMonitor; TelemetryMonitor *m_telemetryMonitor;
QIODevice *m_telemetryDevice; QIODevice *m_telemetryDevice;
bool m_isAutopilotConnected; ConnectionState m_connectionState;
QThread m_telemetryReaderThread; QThread m_telemetryReaderThread;
}; };