1 /* 2 SPDX-FileCopyrightText: 2012 Jasem Mutlaq <mutlaqja@ikarustech.com> 3 4 SPDX-License-Identifier: GPL-2.0-or-later 5 */ 6 7 #include "driverinfo.h" 8 9 #include "deviceinfo.h" 10 #include "servermanager.h" 11 12 #include <basedevice.h> 13 14 #include <QDebug> 15 DriverInfo(const QString & inName)16DriverInfo::DriverInfo(const QString &inName) 17 { 18 uniqueLabel.clear(); 19 name = inName; 20 21 m_Manufacturer = "Others"; 22 hostname = "localhost"; 23 port = "-1"; 24 userPort = "-1"; 25 } 26 DriverInfo(DriverInfo * di)27DriverInfo::DriverInfo(DriverInfo *di) 28 { 29 name = di->getName(); 30 label = di->getLabel(); 31 uniqueLabel = di->getUniqueLabel(); 32 exec = di->getExecutable(); 33 version = di->getVersion(); 34 m_Manufacturer = di->manufacturer(); 35 userPort = di->getUserPort(); 36 skelFile = di->getSkeletonFile(); 37 port = di->getPort(); 38 hostname = di->getHost(); 39 remotePort = di->getRemotePort(); 40 remoteHostname = di->getRemoteHost(); 41 type = di->getType(); 42 serverState = di->getServerState(); 43 clientState = di->getClientState(); 44 driverSource = di->getDriverSource(); 45 serverManager = di->getServerManager(); 46 clientManager = di->getClientManager(); 47 auxInfo = di->getAuxInfo(); 48 devices = di->getDevices(); 49 } 50 clone(bool resetClone)51DriverInfo *DriverInfo::clone(bool resetClone) 52 { 53 DriverInfo * clone = new DriverInfo(this); 54 if (resetClone) 55 { 56 clone->reset(); 57 clone->resetDevices(); 58 } 59 return clone; 60 } 61 ~DriverInfo()62DriverInfo::~DriverInfo() 63 { 64 qDeleteAll(devices); 65 } 66 reset()67void DriverInfo::reset() 68 { 69 serverState = false; 70 clientState = false; 71 serverManager = nullptr; 72 clientManager = nullptr; 73 } 74 getServerBuffer() const75QString DriverInfo::getServerBuffer() const 76 { 77 if (serverManager != nullptr) 78 return serverManager->getLogBuffer(); 79 80 return QString(); 81 } 82 setServerState(bool inState)83void DriverInfo::setServerState(bool inState) 84 { 85 if (inState == serverState) 86 return; 87 88 serverState = inState; 89 90 if (serverState == false) 91 serverManager = nullptr; 92 93 emit deviceStateChanged(this); 94 } 95 setClientState(bool inState)96void DriverInfo::setClientState(bool inState) 97 { 98 //qDebug() << "Request to change " << name << " client status to " << (inState ? "True" : "False") << endl; 99 100 if (inState == clientState) 101 return; 102 103 clientState = inState; 104 105 if (clientState == false) 106 clientManager = nullptr; 107 108 //qDebug() << "Client state for this device changed, calling device state changed signal " << endl; 109 110 emit deviceStateChanged(this); 111 } 112 setUserPort(const QString & inUserPort)113void DriverInfo::setUserPort(const QString &inUserPort) 114 { 115 if (inUserPort.isEmpty() == false) 116 userPort = inUserPort; 117 else 118 userPort = "-1"; 119 } 120 addDevice(DeviceInfo * idv)121void DriverInfo::addDevice(DeviceInfo *idv) 122 { 123 devices.append(idv); 124 } 125 removeDevice(DeviceInfo * idv)126void DriverInfo::removeDevice(DeviceInfo *idv) 127 { 128 devices.removeOne(idv); 129 delete (idv); 130 } 131 getDevice(const QString & deviceName) const132DeviceInfo *DriverInfo::getDevice(const QString &deviceName) const 133 { 134 foreach (DeviceInfo *idv, devices) 135 { 136 if (idv->getDeviceName() == deviceName) 137 return idv; 138 } 139 140 return nullptr; 141 } getAuxInfo() const142QVariantMap DriverInfo::getAuxInfo() const 143 { 144 return auxInfo; 145 } 146 setAuxInfo(const QVariantMap & value)147void DriverInfo::setAuxInfo(const QVariantMap &value) 148 { 149 auxInfo = value; 150 } 151 addAuxInfo(const QString & key,const QVariant & value)152void DriverInfo::addAuxInfo(const QString &key, const QVariant &value) 153 { 154 auxInfo[key] = value; 155 } 156 manufacturer() const157QString DriverInfo::manufacturer() const 158 { 159 return m_Manufacturer; 160 } 161 setManufacturer(const QString & Manufacturer)162void DriverInfo::setManufacturer(const QString &Manufacturer) 163 { 164 m_Manufacturer = Manufacturer; 165 } 166 setUniqueLabel(const QString & inUniqueLabel)167void DriverInfo::setUniqueLabel(const QString &inUniqueLabel) 168 { 169 // N.B. We NEVER set unique label for multiple devices per driver "driver" 170 if (auxInfo.value("mdpd", false).toBool() == true || driverSource >= HOST_SOURCE) 171 return; 172 173 uniqueLabel = inUniqueLabel; 174 } 175