2013-06-06 04:57:06 +01:00
/**
* Copyright 2013 Albert Vaca < albertvaka @ gmail . com >
*
* 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 2 of
* the License or ( at your option ) version 3 or any later version
* accepted by the membership of KDE e . V . ( or its successor approved
* by the membership of KDE e . V . ) , which shall act as a proxy
* defined in Section 14 of version 3 of the license .
*
* 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 , see < http : //www.gnu.org/licenses/>.
*/
# ifndef DEVICELINK_H
# define DEVICELINK_H
# include <QObject>
2013-09-13 22:27:16 +01:00
# include <QtCrypto>
2013-06-06 04:57:06 +01:00
2015-03-10 04:59:36 +00:00
# include "core/networkpackage.h"
2013-06-06 04:57:06 +01:00
2015-11-30 18:36:01 +00:00
class PairingHandler ;
2013-08-12 15:09:52 +01:00
class NetworkPackage ;
2013-07-24 17:42:33 +01:00
class LinkProvider ;
2015-11-30 18:36:01 +00:00
class Device ;
2013-06-18 01:14:22 +01:00
2013-06-06 04:57:06 +01:00
class DeviceLink
: public QObject
{
Q_OBJECT
public :
2015-12-01 18:45:14 +00:00
enum PairStatus : bool { NotPaired , Paired } ;
2015-09-09 11:30:39 +01:00
enum ConnectionStarted : bool { Locally , Remotely } ;
DeviceLink ( const QString & deviceId , LinkProvider * parent , ConnectionStarted connectionSource ) ;
2015-01-07 05:48:25 +00:00
virtual ~ DeviceLink ( ) { } ;
2013-06-06 04:57:06 +01:00
2015-07-25 12:45:19 +01:00
virtual QString name ( ) = 0 ;
2013-07-03 02:52:44 +01:00
const QString & deviceId ( ) { return mDeviceId ; }
2013-07-24 17:42:33 +01:00
LinkProvider * provider ( ) { return mLinkProvider ; }
2013-09-09 17:35:56 +01:00
2013-09-13 22:27:16 +01:00
virtual bool sendPackage ( NetworkPackage & np ) = 0 ;
2015-12-01 15:25:34 +00:00
virtual bool sendPackageEncrypted ( NetworkPackage & np ) = 0 ;
2013-09-13 22:27:16 +01:00
2015-12-01 18:45:14 +00:00
//user actions
2015-12-02 19:04:35 +00:00
virtual void userRequestsPair ( ) = 0 ;
virtual void userRequestsUnpair ( ) = 0 ;
2015-12-01 18:45:14 +00:00
2015-12-17 12:41:10 +00:00
ConnectionStarted connectionSource ( ) const { return mConnectionSource ; } //TODO: Move this down to landevicelink and create an abstraction like "bool keepConnectionOpen()" here.
void setConnectionSource ( ConnectionStarted source ) { mConnectionSource = source ; }
2015-12-01 18:45:14 +00:00
PairStatus pairStatus ( ) const { return mPairStatus ; }
2015-12-17 12:41:10 +00:00
virtual void setPairStatus ( PairStatus status ) ;
2015-09-09 11:30:39 +01:00
2013-09-01 21:13:03 +01:00
Q_SIGNALS :
void receivedPackage ( const NetworkPackage & np ) ;
2015-12-01 18:45:14 +00:00
void pairStatusChanged ( DeviceLink : : PairStatus status ) ;
2015-12-06 00:51:53 +00:00
void pairingError ( const QString & error ) ;
2013-06-06 04:57:06 +01:00
2013-09-13 22:27:16 +01:00
protected :
QCA : : PrivateKey mPrivateKey ;
2013-06-18 01:14:22 +01:00
private :
2015-09-08 08:22:31 +01:00
const QString mDeviceId ;
2015-12-17 12:41:10 +00:00
ConnectionStarted mConnectionSource ;
2013-07-24 17:42:33 +01:00
LinkProvider * mLinkProvider ;
2015-12-01 18:45:14 +00:00
PairStatus mPairStatus ;
2013-09-09 17:35:56 +01:00
2013-06-06 04:57:06 +01:00
} ;
2013-09-13 22:27:16 +01:00
# endif