1
0
mirror of https://bitbucket.org/librepilot/librepilot.git synced 2025-01-09 20:46:07 +01:00
LibrePilot/ground/src/plugins/serialconnection/serialplugin.h
edouard 809f4f7e07 Started updating the connection manager to tell the connection plugins to poll or not in a central location. Updated the rawhid and serialconnection plugins to reflect this.
More updates to uploader gadget.

Updated the telemetrymonitor and telemetrymanager to set the GCS connection status to "Disconnected" when the user click on "Disconnect" (was not done before, and lead to confusion...)



git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@2385 ebee16cc-31ac-478f-84a7-5cbb03baadba
2011-01-12 00:05:51 +00:00

119 lines
3.2 KiB
C++

/**
******************************************************************************
*
* @file serialplugin.h
* @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010.
* @addtogroup GCSPlugins GCS Plugins
* @{
* @addtogroup SerialPlugin Serial Connection Plugin
* @{
* @brief Impliments serial connection to the flight hardware for Telemetry
*****************************************************************************/
/*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#ifndef SERIALPLUGIN_H
#define SERIALPLUGIN_H
#include "serial_global.h"
#include <qextserialport.h>
#include <qextserialenumerator.h>
#include "coreplugin/iconnection.h"
#include <extensionsystem/iplugin.h>
#include <QThread>
class IConnection;
class QextSerialEnumerator;
class SerialConnection;
/**
* Helper thread to check on new serial port connection/disconnection
* Some operating systems do not send device insertion events so
* for those we have to poll
*/
class SERIAL_EXPORT SerialEnumerationThread : public QThread
{
Q_OBJECT
public:
SerialEnumerationThread(SerialConnection *serial);
virtual ~SerialEnumerationThread();
virtual void run();
signals:
void enumerationChanged();
protected:
SerialConnection *m_serial;
bool m_running;
};
/**
* Define a connection via the IConnection interface
* Plugin will add a instance of this class to the pool,
* so the connection manager can use it.
*/
class SERIAL_EXPORT SerialConnection
: public Core::IConnection
{
Q_OBJECT
public:
SerialConnection();
virtual ~SerialConnection();
virtual QStringList availableDevices();
virtual QIODevice *openDevice(const QString &deviceName);
virtual void closeDevice(const QString &deviceName);
virtual QString connectionName();
virtual QString shortName();
virtual void suspendPolling();
virtual void resumePolling();
bool deviceOpened() {return m_deviceOpened;}
private:
QextSerialPort* serialHandle;
bool enablePolling;
protected slots:
void onEnumerationChanged();
protected:
SerialEnumerationThread m_enumerateThread;
bool m_deviceOpened;
};
class SERIAL_EXPORT SerialPlugin
: public ExtensionSystem::IPlugin
{
Q_OBJECT
public:
SerialPlugin();
~SerialPlugin();
virtual bool initialize(const QStringList &arguments, QString *error_message);
virtual void extensionsInitialized();
};
#endif // SERIALPLUGIN_H