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 }