File indexing completed on 2024-04-21 04:00:06
0001 /* 0002 SPDX-FileCopyrightText: 2012-2013 Jan Grulich <jgrulich@redhat.com> 0003 0004 SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL 0005 */ 0006 0007 #include "serialsetting.h" 0008 #include "serialsetting_p.h" 0009 0010 #include <QDebug> 0011 0012 NetworkManager::SerialSettingPrivate::SerialSettingPrivate() 0013 : name(NM_SETTING_SERIAL_SETTING_NAME) 0014 , baud(57600) 0015 , bits(8) 0016 , parity(SerialSetting::NoParity) 0017 , stopbits(1) 0018 , sendDelay(0) 0019 { 0020 } 0021 0022 NetworkManager::SerialSetting::SerialSetting() 0023 : Setting(Setting::Serial) 0024 , d_ptr(new SerialSettingPrivate()) 0025 { 0026 } 0027 0028 NetworkManager::SerialSetting::SerialSetting(const Ptr &other) 0029 : Setting(other) 0030 , d_ptr(new SerialSettingPrivate()) 0031 { 0032 setBaud(other->baud()); 0033 setBits(other->bits()); 0034 setParity(other->parity()); 0035 setStopbits(other->stopbits()); 0036 setSendDelay(other->sendDelay()); 0037 } 0038 0039 NetworkManager::SerialSetting::~SerialSetting() 0040 { 0041 delete d_ptr; 0042 } 0043 0044 QString NetworkManager::SerialSetting::name() const 0045 { 0046 Q_D(const SerialSetting); 0047 0048 return d->name; 0049 } 0050 0051 void NetworkManager::SerialSetting::setBaud(quint32 speed) 0052 { 0053 Q_D(SerialSetting); 0054 0055 d->baud = speed; 0056 } 0057 0058 quint32 NetworkManager::SerialSetting::baud() const 0059 { 0060 Q_D(const SerialSetting); 0061 0062 return d->baud; 0063 } 0064 0065 void NetworkManager::SerialSetting::setBits(quint32 byteWidgh) 0066 { 0067 Q_D(SerialSetting); 0068 0069 d->bits = byteWidgh; 0070 } 0071 0072 quint32 NetworkManager::SerialSetting::bits() const 0073 { 0074 Q_D(const SerialSetting); 0075 0076 return d->bits; 0077 } 0078 0079 void NetworkManager::SerialSetting::setParity(NetworkManager::SerialSetting::Parity paritysetting) 0080 { 0081 Q_D(SerialSetting); 0082 0083 d->parity = paritysetting; 0084 } 0085 0086 NetworkManager::SerialSetting::Parity NetworkManager::SerialSetting::parity() const 0087 { 0088 Q_D(const SerialSetting); 0089 0090 return d->parity; 0091 } 0092 0093 void NetworkManager::SerialSetting::setStopbits(quint32 number) 0094 { 0095 Q_D(SerialSetting); 0096 0097 d->stopbits = number; 0098 } 0099 0100 quint32 NetworkManager::SerialSetting::stopbits() const 0101 { 0102 Q_D(const SerialSetting); 0103 0104 return d->stopbits; 0105 } 0106 0107 void NetworkManager::SerialSetting::setSendDelay(quint64 delay) 0108 { 0109 Q_D(SerialSetting); 0110 0111 d->sendDelay = delay; 0112 } 0113 0114 quint64 NetworkManager::SerialSetting::sendDelay() const 0115 { 0116 Q_D(const SerialSetting); 0117 0118 return d->sendDelay; 0119 } 0120 0121 void NetworkManager::SerialSetting::fromMap(const QVariantMap &setting) 0122 { 0123 if (setting.contains(QLatin1String(NM_SETTING_SERIAL_BAUD))) { 0124 setBaud(setting.value(QLatin1String(NM_SETTING_SERIAL_BAUD)).toUInt()); 0125 } 0126 0127 if (setting.contains(QLatin1String(NM_SETTING_SERIAL_BITS))) { 0128 setBits(setting.value(QLatin1String(NM_SETTING_SERIAL_BITS)).toUInt()); 0129 } 0130 0131 if (setting.contains(QLatin1String(NM_SETTING_SERIAL_PARITY))) { 0132 QChar character = setting.value(QLatin1String(NM_SETTING_SERIAL_PARITY)).toChar(); 0133 0134 if (character == 'n') { 0135 setParity(NoParity); 0136 } else if (character == 'E') { 0137 setParity(EvenParity); 0138 } else if (character == 'o') { 0139 setParity(OddParity); 0140 } 0141 } 0142 0143 if (setting.contains(QLatin1String(NM_SETTING_SERIAL_STOPBITS))) { 0144 setStopbits(setting.value(QLatin1String(NM_SETTING_SERIAL_STOPBITS)).toUInt()); 0145 } 0146 0147 if (setting.contains(QLatin1String(NM_SETTING_SERIAL_SEND_DELAY))) { 0148 setSendDelay((Setting::SecretFlagType)setting.value(QLatin1String(NM_SETTING_SERIAL_SEND_DELAY)).toULongLong()); 0149 } 0150 } 0151 0152 QVariantMap NetworkManager::SerialSetting::toMap() const 0153 { 0154 QVariantMap setting; 0155 0156 if (baud() != 57600) { 0157 setting.insert(QLatin1String(NM_SETTING_SERIAL_BAUD), baud()); 0158 } 0159 0160 if (bits() != 8) { 0161 setting.insert(QLatin1String(NM_SETTING_SERIAL_BITS), bits()); 0162 } 0163 0164 if (parity() != NoParity) { 0165 if (parity() == EvenParity) { 0166 setting.insert(QLatin1String(NM_SETTING_SERIAL_PARITY), QChar('E')); 0167 } else if (parity() == OddParity) { 0168 setting.insert(QLatin1String(NM_SETTING_SERIAL_PARITY), QChar('o')); 0169 } 0170 } 0171 0172 if (stopbits() != 1) { 0173 setting.insert(QLatin1String(NM_SETTING_SERIAL_STOPBITS), stopbits()); 0174 } 0175 0176 if (sendDelay()) { 0177 setting.insert(QLatin1String(NM_SETTING_SERIAL_SEND_DELAY), sendDelay()); 0178 } 0179 0180 return setting; 0181 } 0182 0183 QDebug NetworkManager::operator<<(QDebug dbg, const NetworkManager::SerialSetting &setting) 0184 { 0185 dbg.nospace() << "type: " << setting.typeAsString(setting.type()) << '\n'; 0186 dbg.nospace() << "initialized: " << !setting.isNull() << '\n'; 0187 0188 dbg.nospace() << NM_SETTING_SERIAL_BAUD << ": " << setting.baud() << '\n'; 0189 dbg.nospace() << NM_SETTING_SERIAL_BITS << ": " << setting.bits() << '\n'; 0190 dbg.nospace() << NM_SETTING_SERIAL_PARITY << ": " << setting.parity() << '\n'; 0191 dbg.nospace() << NM_SETTING_SERIAL_STOPBITS << ": " << setting.stopbits() << '\n'; 0192 dbg.nospace() << NM_SETTING_SERIAL_SEND_DELAY << ": " << setting.sendDelay() << '\n'; 0193 0194 return dbg.maybeSpace(); 0195 }