File indexing completed on 2024-12-01 12:29:49

0001 /*
0002  * BluezQt - Asynchronous BlueZ wrapper library
0003  *
0004  * SPDX-FileCopyrightText: 2018 Manuel Weichselbaumer <mincequi@web.de>
0005  *
0006  * SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0007  */
0008 
0009 #ifndef BLUEZQT_MEDIA_H
0010 #define BLUEZQT_MEDIA_H
0011 
0012 #include <QObject>
0013 
0014 #include "bluezqt_export.h"
0015 
0016 namespace BluezQt
0017 {
0018 class MediaEndpoint;
0019 class PendingCall;
0020 
0021 /**
0022  * @class BluezQt::Media Media.h <BluezQt/Media>
0023  *
0024  * Bluetooth Media.
0025  *
0026  * This allows media endpoints to be established in accordance with the
0027  * capabilities of a specific media service profile.
0028  *
0029  * For example, an A2DP media endpoint could be created allowing data from a
0030  * remote device to be streamed to/from the sender.
0031  *
0032  * Each media endpoint is associated with a service object instance that
0033  * implements the required behaviours of the endpoint. The service object
0034  * must be created at a given path before it is registered.
0035  *
0036  * @see MediaEndpoint
0037  */
0038 class BLUEZQT_EXPORT Media : public QObject
0039 {
0040     Q_OBJECT
0041 
0042 public:
0043     /**
0044      * Destroys a Media object.
0045      */
0046     ~Media() override;
0047 
0048     /**
0049      * Registers endpoint.
0050      *
0051      * Register a local end point to sender, the sender can register as many end points as it likes.
0052      *
0053      * Note: If the sender disconnects the end points are automatically unregistered.
0054      *
0055      * Possible errors: PendingCall::InvalidArguments, PendingCall::NotSupported
0056      *
0057      * @param endpoint endpoint to be registered
0058      * @return void pending call
0059      */
0060     PendingCall *registerEndpoint(MediaEndpoint *endpoint);
0061 
0062     /**
0063      * Unregisters endpoint.
0064      *
0065      * @param endpoint endpoint to be unregistered
0066      * @return void pending call
0067      */
0068     PendingCall *unregisterEndpoint(MediaEndpoint *endpoint);
0069 
0070 private:
0071     BLUEZQT_NO_EXPORT explicit Media(const QString &path, QObject *parent = nullptr);
0072 
0073     class MediaPrivate *const d;
0074 
0075     friend class AdapterPrivate;
0076 };
0077 
0078 } // namespace BluezQt
0079 
0080 #endif // BLUEZQT_MEDIA_H