You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdebluez/src/libtdebluez/objectmanagerImpl.h

178 lines
6.5 KiB

/*
*
* Object Manager implementation of bluez5
*
* Copyright (C) 2018 Emanoil Kotsev <deloptes@gmail.com>
*
*
* This file is part of libtdebluez.
*
* libtdebluez 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) any later version.
*
* libtdebluez 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 kbluetooth; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*
*/
#ifndef OBJECTMANAGERIMPL_H_INCLUDED
#define OBJECTMANAGERIMPL_H_INCLUDED
#include <tqdbusconnection.h>
#include <tdelocale.h>
#include "interfaces/objectmanagerProxy.h"
#include "interfaces/agentmanager1Proxy.h"
#include "interfaces/profilemanager1Proxy.h"
#include "interfaces/healthmanager1Proxy.h"
#include "interfaces/propertiesProxy.h"
#include "adapterImpl.h"
#include "deviceImpl.h"
//using namespace org::bluez;
#define DBUS_CONN_NAME "TDEBluez"
#define DBUS_AUTH_SERVICE_PATH "/org/trinitydesktop/tdebluez"
#define DEVICE_PIN_CAPABILITY "KeyboardDisplay"
namespace TDEBluetooth
{
class ObjectManagerImpl : public org::freedesktop::DBus::ObjectManagerProxy
{
Q_OBJECT
public:
ObjectManagerImpl(const TQString& service, const TQString& path, TQObject* parent = 0, const char* name = 0);
virtual ~ObjectManagerImpl();
typedef TQMap<TQString,org::freedesktop::DBus::PropertiesProxy*> PropertiesMap;
typedef TQValueList<TQString> AdapterList;
typedef TQValueList<TQString> DeviceList;
typedef TQValueList<TQString> ConnectionList;
// typedef TQValueList<TQString> ServiceList;
// --- helper to get private members of the class --- //
//! to get information if TDEBluez is connected to D-Bus
bool isConnectedToDBUS();
//! pointer to the D-Bus connection
TQT_DBusConnection* getConnection();
//! to close the connection to D-Bus
bool close();
//
AgentManager1Proxy* getAgentManager();
ProfileManager1Proxy* getProfileManager();
HealthManager1Proxy* getHealthManager();
AdapterList getAdapters();
DeviceList getDevices();
// ServiceList getServices();
ConnectionList listConnections(const TQString&);
//! to register the agent to D-Bus
bool registerAgent(); //TQT_DBusError&
//! to unregister the agent to D-Bus
bool unregisterAgent(); //TQT_DBusError&
//! to register the agent to D-Bus
bool requestDefaultAgent(); //TQT_DBusError&
bool isAgentRegistered();
bool isAgentDefaultAgent();
private:
bool initDBUS();
void adapterPropertiesChanged(TQString path, const TQMap<TQString, TQT_DBusVariant>& changed_properties);
void devicePropertiesChanged(TQString path, const TQMap<TQString, TQT_DBusVariant>& changed_properties);
void mediaControlPropertiesChanged(TQString path, const TQMap<TQString, TQT_DBusVariant>& changed_properties);
private:
//! TQt connection to D-Bus
TQT_DBusConnection dBusConn;
AgentManager1Proxy* agentManager;
ProfileManager1Proxy* profileManager;
HealthManager1Proxy* healthManager;
PropertiesMap adapters;
PropertiesMap devices;
bool agentRegisteredStatus;
bool agentIsDefaultAgent;
signals:
// from ObjectManager
void adapterAdded(const TQString&);
void adapterRemoved(const TQString&);
void deviceAdded(const TQString&);
void deviceRemoved(const TQString&);
void mediaControlAdded(const TQString&);
void mediaControlRemoved(const TQString&);
// from Adapter1
void adapterNameChanged(const TQString&, const TQString&);
// void adapterModeChanged(const TQString&, const TQString&);
void adapterAliasChanged(const TQString&, const TQString&);
void adapterPowerOnChanged(const TQString&, bool state);
void adapterClassChanged(const TQString&, TQ_UINT32 classvalue);
void adapterDiscoverableTimeoutChanged(const TQString&, TQ_UINT32 timeout);
// TODO: this should be same as modeChanged
void adapterDiscoverableChanged(const TQString&, bool state);
void adapterDiscoveringChanged(const TQString&, bool state);
// from Device1
void deviceAddressChanged(const TQString&, const TQString&);
void deviceClassChanged(const TQString&, TQ_UINT32);
void deviceNameChanged(const TQString&, const TQString&);
void deviceAliasChanged(const TQString&, const TQString&);
// https://www.bluetooth.com/specifications/gatt/viewer?attributeXmlFile=org.bluetooth.characteristic.gap.appearance.xml
void deviceAppearanceChanged(const TQString&, TQ_UINT32);
void deviceIconChanged(const TQString&, const TQString&);
void devicePairedChanged(const TQString&, bool);
void deviceTrustedChanged(const TQString&, bool);
void deviceBlockedChanged(const TQString&, bool);
void deviceLegacyPairingChanged(const TQString&, bool);
void deviceRSSIChanged(const TQString&, TQ_INT16);
void deviceConnectedChanged(const TQString&, bool);
void deviceUUIDsChanged(const TQString&, TQStringList);
void deviceAdapterChanged(const TQString&, const TQT_DBusObjectPath&);
void deviceManufacturerDataChanged(const TQString&, TQT_DBusDataMap<TQ_UINT16>);
void deviceServiceDataChanged(const TQString&, TQT_DBusDataMap<TQString>);
void deviceTxPowerChanged(const TQString&, TQ_INT16);
void deviceServicesResolvedChanged(const TQString&, bool);
// from MediaControl1
void mediaControlConnectedChanged(const TQString&, bool state);
void mediaControlPlayerChanged(const TQString&, const TQT_DBusObjectPath&);
private slots:
bool reconnect();
// inherited from ObjectManager
void slotInterfacesAdded(const TQT_DBusObjectPath& object, const TQT_DBusDataMap< TQString >& interfaces);
void slotInterfacesRemoved(const TQT_DBusObjectPath& object, const TQStringList& interfaces);
/**
* parse properties changed on any interface
* emit signal for the interface and property
*/
void slotPropertiesChanged(const TQString& interface, const TQMap< TQString, TQT_DBusVariant >& changed_properties, const TQStringList& invalidated_properties);
}; // class ObjectManagerImpl
}; // namespace TDEBluetooth
#endif //OBJECTMANAGERIMPL_H_INCLUDED
// End of File