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 0005 #include "ussd-manager.h" 0006 0007 #include <QDBusConnection> 0008 #include <QDBusInterface> 0009 #include <QDBusMessage> 0010 #include <QDebug> 0011 0012 #include "modem-controller.h" 0013 #include "ussd-utils.h" 0014 0015 UssdManager::UssdManager(ModemController *modemController, UssdUtils *ussdUtils, QObject *parent) 0016 : QObject(parent) 0017 { 0018 _ussdUtils = ussdUtils; 0019 _modemController = modemController; 0020 0021 connect(_modemController, &ModemController::ussdErrorReceived, _ussdUtils, &UssdUtils::errorReceived); 0022 connect(_modemController, &ModemController::ussdNotificationReceived, _ussdUtils, &UssdUtils::notificationReceived); 0023 connect(_modemController, &ModemController::ussdRequestReceived, _ussdUtils, &UssdUtils::notificationReceived); 0024 connect(_modemController, &ModemController::ussdInitiateComplete, _ussdUtils, &UssdUtils::notificationReceived); 0025 connect(_modemController, &ModemController::ussdStateChanged, this, &UssdManager::onStateChanged); 0026 0027 connect(_ussdUtils, &UssdUtils::initiated, this, &UssdManager::onInitiated); 0028 connect(_ussdUtils, &UssdUtils::responded, this, &UssdManager::onResponded); 0029 connect(_ussdUtils, &UssdUtils::cancelled, this, &UssdManager::onCanceled); 0030 } 0031 0032 bool UssdManager::active() const 0033 { 0034 return _state != QStringLiteral("idle"); 0035 } 0036 0037 QString UssdManager::state() const 0038 { 0039 return _state; 0040 } 0041 0042 void UssdManager::onInitiated(const QString &deviceUni, const QString &command) 0043 { 0044 qDebug() << Q_FUNC_INFO << deviceUni << command; 0045 _modemController->ussdInitiate(deviceUni, command); 0046 } 0047 0048 void UssdManager::onResponded(const QString &deviceUni, const QString &reply) 0049 { 0050 qDebug() << Q_FUNC_INFO << reply; 0051 _modemController->ussdRespond(deviceUni, reply); 0052 } 0053 0054 void UssdManager::onCanceled(const QString &deviceUni) 0055 { 0056 qDebug() << Q_FUNC_INFO; 0057 _modemController->ussdCancel(deviceUni); 0058 } 0059 0060 void UssdManager::onStateChanged(const QString &deviceUni, const QString &state) 0061 { 0062 _state = state; 0063 Q_EMIT stateChanged(deviceUni, _state); 0064 Q_EMIT activeChanged(deviceUni); 0065 Q_EMIT _ussdUtils->stateChanged(deviceUni, _state); 0066 }