File indexing completed on 2024-04-28 15:17:56

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 "profile.h"
0010 #include "debug.h"
0011 #include "profile_p.h"
0012 
0013 #include <unistd.h>
0014 
0015 #include <QDBusUnixFileDescriptor>
0016 #include <QLocalSocket>
0017 
0018 namespace BluezQt
0019 {
0020 Profile::Profile(QObject *parent)
0021     : QObject(parent)
0022     , d(new ProfilePrivate)
0023 {
0024 }
0025 
0026 Profile::~Profile()
0027 {
0028     delete d;
0029 }
0030 
0031 void Profile::setName(const QString &name)
0032 {
0033     d->options[QStringLiteral("Name")] = name;
0034 }
0035 
0036 void Profile::setService(const QString &service)
0037 {
0038     d->options[QStringLiteral("Service")] = service;
0039 }
0040 
0041 void Profile::setLocalRole(Profile::LocalRole role)
0042 {
0043     QString str;
0044     switch (role) {
0045     case ClientRole:
0046         str = QStringLiteral("client");
0047         break;
0048 
0049     case ServerRole:
0050         str = QStringLiteral("server");
0051         break;
0052 
0053     default:
0054         break;
0055     }
0056 
0057     if (str.isEmpty()) {
0058         qCWarning(BLUEZQT) << "Invalid local role!";
0059         return;
0060     }
0061 
0062     d->options[QStringLiteral("Role")] = str;
0063 }
0064 
0065 void Profile::setChannel(quint16 channel)
0066 {
0067     if (channel > 31) {
0068         qCWarning(BLUEZQT) << "Invalid channel number. Must be 0-31!";
0069         return;
0070     }
0071 
0072     d->options[QStringLiteral("Channel")] = QVariant::fromValue(channel);
0073 }
0074 
0075 void Profile::setPsm(quint16 psm)
0076 {
0077     d->options[QStringLiteral("PSM")] = QVariant::fromValue(psm);
0078 }
0079 
0080 void Profile::setRequireAuthentication(bool require)
0081 {
0082     d->options[QStringLiteral("RequireAuthentication")] = require;
0083 }
0084 
0085 void Profile::setRequireAuthorization(bool require)
0086 {
0087     d->options[QStringLiteral("RequireAuthorization")] = require;
0088 }
0089 
0090 void Profile::setAutoConnect(bool autoConnect)
0091 {
0092     d->options[QStringLiteral("AutoConnect")] = autoConnect;
0093 }
0094 
0095 void Profile::setServiceRecord(const QString &serviceRecord)
0096 {
0097     d->options[QStringLiteral("ServiceRecord")] = serviceRecord;
0098 }
0099 
0100 void Profile::setVersion(quint16 version)
0101 {
0102     d->options[QStringLiteral("Version")] = QVariant::fromValue(version);
0103 }
0104 
0105 void Profile::setFeatures(quint16 features)
0106 {
0107     d->options[QStringLiteral("Features")] = QVariant::fromValue(features);
0108 }
0109 
0110 QSharedPointer<QLocalSocket> Profile::createSocket(const QDBusUnixFileDescriptor &fd)
0111 {
0112     int newfd = ::dup(fd.fileDescriptor());
0113     QSharedPointer<QLocalSocket> socket(new QLocalSocket);
0114     socket->setSocketDescriptor(newfd);
0115     return socket;
0116 }
0117 
0118 void Profile::newConnection(DevicePtr device, const QDBusUnixFileDescriptor &fd, const QVariantMap &properties, const Request<> &request)
0119 {
0120     Q_UNUSED(device)
0121     Q_UNUSED(fd)
0122     Q_UNUSED(properties)
0123 
0124     request.cancel();
0125 }
0126 
0127 void Profile::requestDisconnection(DevicePtr device, const Request<> &request)
0128 {
0129     Q_UNUSED(device)
0130 
0131     request.cancel();
0132 }
0133 
0134 void Profile::release()
0135 {
0136 }
0137 
0138 } // namespace BluezQt
0139 
0140 #include "moc_profile.cpp"