summaryrefslogtreecommitdiff
path: root/saltoqd/toqmanager.h
blob: c1675aca8f9582d55d59e399a05d85e703c30c7f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#ifndef TOQMANAGER_H
#define TOQMANAGER_H

#include <functional>
#include <QtCore/QObject>

#include "toqconnection.h"

class VersionManager;
class SystemManager;
class StorageManager;
class MusicManager;
class CommManager;
class VoiceCallManager;

class ToqManager : public QObject
{
	Q_OBJECT
public:
	explicit ToqManager(const QBluetoothAddress &address, QObject *parent = 0);

	struct EndpointHandler {
		virtual void handleMessage(const ToqConnection::Message &msg) = 0;
	};

	void setEndpointListener(ToqConnection::Endpoint ep, EndpointHandler *handler);

	bool isConnected() const;
	void sendMessage(const ToqConnection::Message &msg);
	void sendMessage(ToqConnection::Endpoint source, ToqConnection::Endpoint destination,
					 quint16 transactionId, quint32 type, const QJsonObject &payload);
	quint16 sendMessage(ToqConnection::Endpoint source, ToqConnection::Endpoint destination,
					 quint32 type, const QJsonObject &payload);
	void sendReply(const ToqConnection::Message &msg, quint32 type, const QJsonObject &payload);

private slots:
	void handleToqMessage(const ToqConnection::Message &msg);

private:
	ToqConnection *_conn;
	QHash<ToqConnection::Endpoint, EndpointHandler*> _handlers;

	VersionManager *_versionManager;
	SystemManager *_systemManager;
	StorageManager *_storageManager;
	MusicManager *_musicManager;
	CommManager *_commManager;
	VoiceCallManager *_voiceCallManager;
};

inline bool ToqManager::isConnected() const
{
	return _conn->isConnected();
}

#endif // TOQMANAGER_H