File indexing completed on 2024-04-28 03:52:06

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