File indexing completed on 2024-07-21 06:28:18

0001 /*
0002     SPDX-FileCopyrightText: 2012 Jasem Mutlaq <mutlaqja@ikarustech.com>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #include "driverinfo.h"
0008 
0009 #include "deviceinfo.h"
0010 #include "servermanager.h"
0011 
0012 #include <basedevice.h>
0013 
0014 #include <QDebug>
0015 
0016 DriverInfo::DriverInfo(const QString &inName)
0017 {
0018     uniqueLabel.clear();
0019     name = inName;
0020 
0021     m_Manufacturer = "Others";
0022     hostname = "localhost";
0023     port     = -1;
0024     userPort = -1;
0025 }
0026 
0027 DriverInfo::DriverInfo(DriverInfo *driver)
0028 {
0029     name          = driver->getName();
0030     label         = driver->getLabel();
0031     uniqueLabel   = driver->getUniqueLabel();
0032     exec          = driver->getExecutable();
0033     version       = driver->getVersion();
0034     m_Manufacturer = driver->manufacturer();
0035     userPort      = driver->getUserPort();
0036     skelFile      = driver->getSkeletonFile();
0037     port          = driver->getPort();
0038     hostname      = driver->getHost();
0039     remotePort    = driver->getRemotePort();
0040     remoteHostname = driver->getRemoteHost();
0041     type          = driver->getType();
0042     serverState   = driver->getServerState();
0043     clientState   = driver->getClientState();
0044     driverSource  = driver->getDriverSource();
0045     serverManager = driver->getServerManager();
0046     clientManager = driver->getClientManager();
0047     auxInfo       = driver->getAuxInfo();
0048     devices       = driver->getDevices();
0049 }
0050 
0051 QSharedPointer<DriverInfo> DriverInfo::clone(bool resetClone)
0052 {
0053     QSharedPointer<DriverInfo> clone(new DriverInfo(this));
0054     if (resetClone)
0055     {
0056         clone->reset();
0057         clone->resetDevices();
0058     }
0059     return clone;
0060 }
0061 
0062 DriverInfo::~DriverInfo()
0063 {
0064     qDeleteAll(devices);
0065 }
0066 
0067 void DriverInfo::reset()
0068 {
0069     serverState   = false;
0070     clientState   = false;
0071     serverManager = nullptr;
0072     clientManager = nullptr;
0073 }
0074 
0075 QString DriverInfo::getServerBuffer() const
0076 {
0077     if (serverManager != nullptr)
0078         return serverManager->getLogBuffer();
0079 
0080     return QString();
0081 }
0082 
0083 void DriverInfo::setServerState(bool inState)
0084 {
0085     if (inState == serverState)
0086         return;
0087 
0088     serverState = inState;
0089 
0090     if (serverState == false)
0091         serverManager = nullptr;
0092 
0093     emit deviceStateChanged();
0094 }
0095 
0096 void DriverInfo::setClientState(bool inState)
0097 {
0098     if (inState == clientState)
0099         return;
0100 
0101     clientState = inState;
0102 
0103     if (clientState == false)
0104         clientManager = nullptr;
0105 
0106     emit deviceStateChanged();
0107 }
0108 
0109 void DriverInfo::addDevice(DeviceInfo *idv)
0110 {
0111     devices.append(idv);
0112 }
0113 
0114 void DriverInfo::removeDevice(DeviceInfo *idv)
0115 {
0116     devices.removeOne(idv);
0117     delete (idv);
0118 }
0119 
0120 DeviceInfo *DriverInfo::getDevice(const QString &deviceName) const
0121 {
0122     foreach (DeviceInfo *idv, devices)
0123     {
0124         if (idv->getDeviceName() == deviceName)
0125             return idv;
0126     }
0127 
0128     return nullptr;
0129 }
0130 QVariantMap DriverInfo::getAuxInfo() const
0131 {
0132     return auxInfo;
0133 }
0134 
0135 void DriverInfo::setAuxInfo(const QVariantMap &value)
0136 {
0137     auxInfo = value;
0138 }
0139 
0140 void DriverInfo::addAuxInfo(const QString &key, const QVariant &value)
0141 {
0142     auxInfo[key] = value;
0143 }
0144 
0145 QString DriverInfo::manufacturer() const
0146 {
0147     return m_Manufacturer;
0148 }
0149 
0150 void DriverInfo::setManufacturer(const QString &Manufacturer)
0151 {
0152     m_Manufacturer = Manufacturer;
0153 }
0154 
0155 void DriverInfo::setUniqueLabel(const QString &inUniqueLabel)
0156 {
0157     // N.B. We NEVER set unique label for multiple devices per driver "driver"
0158     if (auxInfo.value("mdpd", false).toBool() == true || driverSource >= HOST_SOURCE)
0159         return;
0160 
0161     uniqueLabel = inUniqueLabel;
0162 }
0163 
0164 QJsonObject DriverInfo::startupRule() const
0165 {
0166     return m_StartupRule;
0167 }
0168 
0169 void DriverInfo::setStartupRule(const QJsonObject &value)
0170 {
0171     m_StartupRule = value;
0172 }