File indexing completed on 2024-04-28 16:42:54

0001 // SPDX-FileCopyrightText: 2021 Alexey Andreyev <aa13q@ya.ru>
0002 //
0003 // SPDX-License-Identifier: LicenseRef-KDE-Accepted-GPL
0004 #pragma once
0005 
0006 #include <kTelephonyMetaTypes/dialer-types.h>
0007 
0008 class ModemController : public QObject
0009 {
0010     Q_OBJECT
0011 
0012 public:
0013     explicit ModemController(QObject *parent = nullptr);
0014 
0015     QString protocol();
0016     QString subsystem();
0017 
0018 Q_SIGNALS:
0019     // Modem/3GPP
0020     void deviceUniListChanged(const QStringList &deviceUniList);
0021     void countryCodeChanged(const QString &countryCode);
0022     // SMS/MMS
0023     void messageAdded(const QString &deviceUni, const QVariantMap &message, bool received);
0024     // USSD
0025     void ussdErrorReceived(const QString &deviceUni, const QString &error);
0026     void ussdNotificationReceived(const QString &deviceUni, const QString &message);
0027     void ussdRequestReceived(const QString &deviceUni, const QString &message);
0028     void ussdInitiateComplete(const QString &deviceUni, const QString &command);
0029     void ussdStateChanged(const QString &deviceUni, const QString &state);
0030     // Calls
0031     void callAdded(const QString &deviceUni,
0032                    const QString &callUni,
0033                    const DialerTypes::CallDirection &callDirection,
0034                    const DialerTypes::CallState &callState,
0035                    const DialerTypes::CallStateReason &callStateReason,
0036                    const QString communicationWith);
0037     void callDeleted(const QString &deviceUni, const QString &callUni);
0038     void callStateChanged(const DialerTypes::CallData &callData);
0039 
0040 public Q_SLOTS:
0041     // Device
0042     QStringList deviceUniList();
0043     void appendDeviceUni(const QString &deviceUni);
0044     void setDeviceUniList(const QStringList &newDeviceUniList);
0045     virtual QString equipmentIdentifier(const QString &deviceUni);
0046     QString deviceUni(const QString &equipmentIdentifier);
0047     // USSD
0048     virtual void ussdInitiate(const QString &deviceUni, const QString &command);
0049     virtual void ussdRespond(const QString &deviceUni, const QString &reply);
0050     virtual void ussdCancel(const QString &deviceUni);
0051     // Calls
0052     virtual QString callNumber(const QString &deviceUni, const QString &callUni);
0053     virtual void createCall(const QString &deviceUni, const QString &callUni);
0054     virtual void acceptCall(const QString &deviceUni, const QString &callUni);
0055     virtual void hangUp(const QString &deviceUni, const QString &callUni);
0056     virtual void sendDtmf(const QString &deviceUni, const QString &callUni, const QString &tones);
0057     virtual DialerTypes::CallDataVector fetchCalls();
0058     virtual DialerTypes::CallData getCall(const QString &deviceUni, const QString &callUni);
0059     virtual void deleteCall(const QString &deviceUni, const QString &callUni);
0060 
0061 private:
0062     QStringList _deviceUniList;
0063 };