File indexing completed on 2024-05-05 03:52:27

0001 /*
0002  * BluezQt - Asynchronous Bluez wrapper library
0003  *
0004  * SPDX-FileCopyrightText: 2014 David Rosca <nowrep@gmail.com>
0005  *
0006  * SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0007  */
0008 
0009 #include "adapter.h"
0010 #include "adapter_p.h"
0011 #include "device.h"
0012 #include "device_p.h"
0013 #include "pendingcall.h"
0014 
0015 namespace BluezQt
0016 {
0017 Adapter::Adapter(const QString &path, const QVariantMap &properties)
0018     : QObject()
0019     , d(new AdapterPrivate(path, properties))
0020 {
0021 }
0022 
0023 Adapter::~Adapter() = default;
0024 
0025 AdapterPtr Adapter::toSharedPtr() const
0026 {
0027     return d->q.toStrongRef();
0028 }
0029 
0030 QString Adapter::ubi() const
0031 {
0032     return d->m_bluezAdapter->path();
0033 }
0034 
0035 QString Adapter::address() const
0036 {
0037     return d->m_address;
0038 }
0039 
0040 QString Adapter::name() const
0041 {
0042     return d->m_alias;
0043 }
0044 
0045 PendingCall *Adapter::setName(const QString &name)
0046 {
0047     return new PendingCall(d->setDBusProperty(QStringLiteral("Alias"), name), PendingCall::ReturnVoid, this);
0048 }
0049 
0050 QString Adapter::systemName() const
0051 {
0052     return d->m_name;
0053 }
0054 
0055 quint32 Adapter::adapterClass() const
0056 {
0057     return d->m_adapterClass;
0058 }
0059 
0060 bool Adapter::isPowered() const
0061 {
0062     return d->m_powered;
0063 }
0064 
0065 PendingCall *Adapter::setPowered(bool powered)
0066 {
0067     return new PendingCall(d->setDBusProperty(QStringLiteral("Powered"), powered), PendingCall::ReturnVoid, this);
0068 }
0069 
0070 bool Adapter::isDiscoverable() const
0071 {
0072     return d->m_discoverable;
0073 }
0074 
0075 PendingCall *Adapter::setDiscoverable(bool discoverable)
0076 {
0077     return new PendingCall(d->setDBusProperty(QStringLiteral("Discoverable"), discoverable), PendingCall::ReturnVoid, this);
0078 }
0079 
0080 quint32 Adapter::discoverableTimeout() const
0081 {
0082     return d->m_discoverableTimeout;
0083 }
0084 
0085 PendingCall *Adapter::setDiscoverableTimeout(quint32 timeout)
0086 {
0087     return new PendingCall(d->setDBusProperty(QStringLiteral("DiscoverableTimeout"), timeout), PendingCall::ReturnVoid, this);
0088 }
0089 
0090 bool Adapter::isPairable() const
0091 {
0092     return d->m_pairable;
0093 }
0094 
0095 PendingCall *Adapter::setPairable(bool pairable)
0096 {
0097     return new PendingCall(d->setDBusProperty(QStringLiteral("Pairable"), pairable), PendingCall::ReturnVoid, this);
0098 }
0099 
0100 quint32 Adapter::pairableTimeout() const
0101 {
0102     return d->m_pairableTimeout;
0103 }
0104 
0105 PendingCall *Adapter::setPairableTimeout(quint32 timeout)
0106 {
0107     return new PendingCall(d->setDBusProperty(QStringLiteral("PairableTimeout"), timeout), PendingCall::ReturnVoid, this);
0108 }
0109 
0110 bool Adapter::isDiscovering()
0111 {
0112     return d->m_discovering;
0113 }
0114 
0115 QStringList Adapter::uuids() const
0116 {
0117     return d->m_uuids;
0118 }
0119 
0120 QString Adapter::modalias() const
0121 {
0122     return d->m_modalias;
0123 }
0124 
0125 GattManagerPtr Adapter::gattManager() const
0126 {
0127     return d->m_gattManager;
0128 }
0129 
0130 LEAdvertisingManagerPtr Adapter::leAdvertisingManager() const
0131 {
0132     return d->m_leAdvertisingManager;
0133 }
0134 
0135 MediaPtr Adapter::media() const
0136 {
0137     return d->m_media;
0138 }
0139 
0140 QList<DevicePtr> Adapter::devices() const
0141 {
0142     return d->m_devices;
0143 }
0144 
0145 DevicePtr Adapter::deviceForAddress(const QString &address) const
0146 {
0147     for (DevicePtr device : std::as_const(d->m_devices)) {
0148         if (device->address() == address) {
0149             return device;
0150         }
0151     }
0152     return DevicePtr();
0153 }
0154 
0155 PendingCall *Adapter::startDiscovery()
0156 {
0157     return new PendingCall(d->m_bluezAdapter->StartDiscovery(), PendingCall::ReturnVoid, this);
0158 }
0159 
0160 PendingCall *Adapter::stopDiscovery()
0161 {
0162     return new PendingCall(d->m_bluezAdapter->StopDiscovery(), PendingCall::ReturnVoid, this);
0163 }
0164 
0165 PendingCall *Adapter::removeDevice(DevicePtr device)
0166 {
0167     return new PendingCall(d->m_bluezAdapter->RemoveDevice(QDBusObjectPath(device->ubi())), PendingCall::ReturnVoid, this);
0168 }
0169 
0170 PendingCall* Adapter::setDiscoveryFilter(const QVariantMap& filter)
0171 {
0172     return new PendingCall(d->m_bluezAdapter->SetDiscoveryFilter(filter), PendingCall::ReturnVoid, this);
0173 }
0174 
0175 PendingCall* Adapter::getDiscoveryFilters()
0176 {
0177     return new PendingCall(d->m_bluezAdapter->GetDiscoveryFilters(), PendingCall::ReturnStringList, this);
0178 }
0179 
0180 } // namespace BluezQt
0181 
0182 #include "moc_adapter.cpp"