tdebluez
objectmanagerImpl.h
Go to the documentation of this file.
1 /*
2  *
3  * Object Manager implementation of bluez5
4  *
5  * Copyright (C) 2018 Emanoil Kotsev <deloptes@gmail.com>
6  *
7  *
8  * This file is part of libtdebluez.
9  *
10  * libtdebluez is free software; you can redistribute it and/or modify
11  * it under the terms of the GNU General Public License as published by
12  * the Free Software Foundation; either version 2 of the License, or
13  * (at your option) any later version.
14  *
15  * libtdebluez is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18  * GNU General Public License for more details.
19  *
20  * You should have received a copy of the GNU General Public License
21  * along with kbluetooth; if not, write to the Free Software
22  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
23  *
24  */
25 
26 #ifndef OBJECTMANAGERIMPL_H_INCLUDED
27 #define OBJECTMANAGERIMPL_H_INCLUDED
28 
29 #include <tqdbusconnection.h>
30 #include <tdelocale.h>
31 
32 #include "interfaces/objectmanagerProxy.h"
33 #include "interfaces/agentmanager1Proxy.h"
36 #include "interfaces/propertiesProxy.h"
37 
38 #include "adapterImpl.h"
39 #include "deviceImpl.h"
40 
41 //using namespace org::bluez;
42 
43 #define DBUS_CONN_NAME "TDEBluez"
44 
45 #define DBUS_AUTH_SERVICE_PATH "/org/trinitydesktop/tdebluez"
46 #define DEVICE_PIN_CAPABILITY "KeyboardDisplay"
47 
48 namespace TDEBluetooth
49 {
50 
52 {
53  TQ_OBJECT
54 
55 public:
56  ObjectManagerImpl(const TQString& service, const TQString& path, TQObject* parent = 0, const char* name = 0);
57 
58  virtual ~ObjectManagerImpl();
60  typedef TQValueList<TQString> AdapterList;
61  typedef TQValueList<TQString> DeviceList;
62  typedef TQValueList<TQString> ConnectionList;
63  // typedef TQValueList<TQString> ServiceList;
64 
65  // --- helper to get private members of the class --- //
67  bool isConnectedToDBUS();
69  TQT_DBusConnection* getConnection();
71  bool close();
72 
73  //
74  AgentManager1Proxy* getAgentManager();
75  ProfileManager1Proxy* getProfileManager();
76  HealthManager1Proxy* getHealthManager();
77  AdapterList getAdapters();
78  DeviceList getDevices();
79  // ServiceList getServices();
80  ConnectionList listConnections(const TQString&);
81 
82 
84  bool registerAgent(); //TQT_DBusError&
86  bool unregisterAgent(); //TQT_DBusError&
88  bool requestDefaultAgent(); //TQT_DBusError&
89 
90  bool isAgentRegistered();
91 
92  bool isAgentDefaultAgent();
93 
94 private:
95  bool initDBUS();
96  void adapterPropertiesChanged(TQString path, const TQMap<TQString, TQT_DBusVariant>& changed_properties);
97  void devicePropertiesChanged(TQString path, const TQMap<TQString, TQT_DBusVariant>& changed_properties);
98  void mediaControlPropertiesChanged(TQString path, const TQMap<TQString, TQT_DBusVariant>& changed_properties);
99 
100 private:
102  TQT_DBusConnection dBusConn;
110 
111 signals:
112  // from ObjectManager
113  void adapterAdded(const TQString&);
114  void adapterRemoved(const TQString&);
115 
116  void deviceAdded(const TQString&);
117  void deviceRemoved(const TQString&);
118 
119  void mediaControlAdded(const TQString&);
120  void mediaControlRemoved(const TQString&);
121 
122  // from Adapter1
123  void adapterNameChanged(const TQString&, const TQString&);
124  // void adapterModeChanged(const TQString&, const TQString&);
125  void adapterAliasChanged(const TQString&, const TQString&);
126  void adapterPowerOnChanged(const TQString&, bool state);
127  void adapterClassChanged(const TQString&, TQ_UINT32 classvalue);
128  void adapterDiscoverableTimeoutChanged(const TQString&, TQ_UINT32 timeout);
129  // TODO: this should be same as modeChanged
130  void adapterDiscoverableChanged(const TQString&, bool state);
131  void adapterDiscoveringChanged(const TQString&, bool state);
132 
133  // from Device1
134  void deviceAddressChanged(const TQString&, const TQString&);
135  void deviceClassChanged(const TQString&, TQ_UINT32);
136  void deviceNameChanged(const TQString&, const TQString&);
137  void deviceAliasChanged(const TQString&, const TQString&);
138  // https://www.bluetooth.com/specifications/gatt/viewer?attributeXmlFile=org.bluetooth.characteristic.gap.appearance.xml
139  void deviceAppearanceChanged(const TQString&, TQ_UINT32);
140  void deviceIconChanged(const TQString&, const TQString&);
141  void devicePairedChanged(const TQString&, bool);
142  void deviceTrustedChanged(const TQString&, bool);
143  void deviceBlockedChanged(const TQString&, bool);
144  void deviceLegacyPairingChanged(const TQString&, bool);
145  void deviceRSSIChanged(const TQString&, TQ_INT16);
146  void deviceConnectedChanged(const TQString&, bool);
147  void deviceUUIDsChanged(const TQString&, TQStringList);
148  void deviceAdapterChanged(const TQString&, const TQT_DBusObjectPath&);
151  void deviceTxPowerChanged(const TQString&, TQ_INT16);
152  void deviceServicesResolvedChanged(const TQString&, bool);
153 
154  // from MediaControl1
155  void mediaControlConnectedChanged(const TQString&, bool state);
156  void mediaControlPlayerChanged(const TQString&, const TQT_DBusObjectPath&);
157 
158 private slots:
159  bool reconnect();
160 
161  // inherited from ObjectManager
162  void slotInterfacesAdded(const TQT_DBusObjectPath& object, const TQT_DBusDataMap< TQString >& interfaces);
163  void slotInterfacesRemoved(const TQT_DBusObjectPath& object, const TQStringList& interfaces);
164 
169  void slotPropertiesChanged(const TQString& interface, const TQMap< TQString, TQT_DBusVariant >& changed_properties, const TQStringList& invalidated_properties);
170 
171 }; // class ObjectManagerImpl
172 
173 }; // namespace TDEBluetooth
174 
175 #endif //OBJECTMANAGERIMPL_H_INCLUDED
176 
177 // End of File
void deviceServiceDataChanged(const TQString &, TQT_DBusDataMap< TQString >)
void adapterRemoved(const TQString &)
void adapterNameChanged(const TQString &, const TQString &)
void deviceUUIDsChanged(const TQString &, TQStringList)
void mediaControlRemoved(const TQString &)
void deviceNameChanged(const TQString &, const TQString &)
void adapterDiscoverableChanged(const TQString &, bool state)
void deviceServicesResolvedChanged(const TQString &, bool)
void deviceClassChanged(const TQString &, TQ_UINT32)
TQMap< TQString, org::freedesktop::DBus::PropertiesProxy * > PropertiesMap
void deviceAppearanceChanged(const TQString &, TQ_UINT32)
void adapterPowerOnChanged(const TQString &, bool state)
void adapterDiscoverableTimeoutChanged(const TQString &, TQ_UINT32 timeout)
void deviceRSSIChanged(const TQString &, TQ_INT16)
TQValueList< TQString > ConnectionList
void deviceAliasChanged(const TQString &, const TQString &)
void deviceManufacturerDataChanged(const TQString &, TQT_DBusDataMap< TQ_UINT16 >)
TQT_DBusConnection dBusConn
TQt connection to D-Bus.
void mediaControlPlayerChanged(const TQString &, const TQT_DBusObjectPath &)
void deviceIconChanged(const TQString &, const TQString &)
TQValueList< TQString > DeviceList
void deviceAdded(const TQString &)
void deviceConnectedChanged(const TQString &, bool)
ProfileManager1Proxy * profileManager
void adapterAdded(const TQString &)
TQValueList< TQString > AdapterList
void deviceAddressChanged(const TQString &, const TQString &)
void deviceTrustedChanged(const TQString &, bool)
void devicePairedChanged(const TQString &, bool)
void deviceBlockedChanged(const TQString &, bool)
HealthManager1Proxy * healthManager
void adapterAliasChanged(const TQString &, const TQString &)
void adapterClassChanged(const TQString &, TQ_UINT32 classvalue)
void deviceRemoved(const TQString &)
void mediaControlAdded(const TQString &)
void deviceLegacyPairingChanged(const TQString &, bool)
void mediaControlConnectedChanged(const TQString &, bool state)
void adapterDiscoveringChanged(const TQString &, bool state)
void deviceAdapterChanged(const TQString &, const TQT_DBusObjectPath &)
void deviceTxPowerChanged(const TQString &, TQ_INT16)