File indexing completed on 2024-04-28 16:42:53
0001 // SPDX-FileCopyrightText: 2021 Alexey Andreyev <aa13q@ya.ru> 0002 // 0003 // SPDX-License-Identifier: LicenseRef-KDE-Accepted-GPL 0004 #pragma once 0005 0006 #include "modem-controller.h" 0007 0008 #include <ModemManagerQt/Call> 0009 #include <ModemManagerQt/GenericTypes> 0010 #include <ModemManagerQt/Manager> 0011 #include <ModemManagerQt/Modem3Gpp> 0012 #include <ModemManagerQt/Modem3GppUssd> 0013 #include <ModemManagerQt/ModemMessaging> 0014 #include <ModemManagerQt/ModemVoice> 0015 #include <ModemManagerQt/Sms> 0016 0017 #include "call-object.h" 0018 0019 class ModemManagerController : public ModemController 0020 { 0021 Q_OBJECT 0022 0023 public: 0024 explicit ModemManagerController(QObject *parent = nullptr); 0025 0026 QString subsystem(); 0027 0028 public Q_SLOTS: 0029 // Device 0030 QString equipmentIdentifier(const QString &deviceUni) override; 0031 // USSD 0032 void ussdInitiate(const QString &deviceUni, const QString &command) override; 0033 void ussdRespond(const QString &deviceUni, const QString &reply) override; 0034 void ussdCancel(const QString &deviceUni) override; 0035 // Calls 0036 QString callNumber(const QString &deviceUni, const QString &callUni) override; 0037 void createCall(const QString &deviceUni, const QString &callUni) override; 0038 void acceptCall(const QString &deviceUni, const QString &callUni) override; 0039 void hangUp(const QString &deviceUni, const QString &callUni) override; 0040 void sendDtmf(const QString &deviceUni, const QString &callUni, const QString &tones) override; 0041 DialerTypes::CallDataVector fetchCalls() override; 0042 DialerTypes::CallData getCall(const QString &deviceUni, const QString &callUni) override; 0043 void deleteCall(const QString &deviceUni, const QString &callUni) override; 0044 0045 private Q_SLOTS: 0046 void onServiceAppeared(); 0047 void onServiceDisappeared(); 0048 void onModemAdded(const QString &udi); 0049 void onModemRemoved(const QString &udi); 0050 0051 private: 0052 void _init(); 0053 0054 QVector<CallObject *> _calls; 0055 void _removeCall(const QString &callId); 0056 0057 QSharedPointer<ModemManager::Modem3gpp> _modem3gppInterface(const QSharedPointer<ModemManager::ModemDevice> modemDevice); 0058 0059 QSharedPointer<ModemManager::Modem3gppUssd> _modem3gppUssdInterface(const QSharedPointer<ModemManager::ModemDevice> modemDevice); 0060 0061 QSharedPointer<ModemManager::ModemVoice> _voiceInterface(const QSharedPointer<ModemManager::ModemDevice> modemDevice); 0062 0063 CallObject * 0064 _voiceCallObject(const QSharedPointer<ModemManager::ModemDevice> &device, const QSharedPointer<ModemManager::Call> &call, QObject *parent = nullptr); 0065 0066 DialerTypes::CallData _voiceCallData(CallObject *callObject); 0067 0068 void _fetchModemCalls(); 0069 CallObject *_getVoiceCallObject(const QString &deviceUni, const QString &callUni); 0070 void _initAddedCall(const QSharedPointer<ModemManager::ModemDevice> &device, const QSharedPointer<ModemManager::Call> &call); 0071 };