File indexing completed on 2025-03-16 03:47:16
0001 /* 0002 SPDX-FileCopyrightText: 2010 Lamarque Souza <lamarque@kde.org> 0003 SPDX-FileCopyrightText: 2013 Lukas Tinkl <ltinkl@redhat.com> 0004 SPDX-FileCopyrightText: 2013-2015 Jan Grulich <jgrulich@redhat.com> 0005 0006 SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL 0007 */ 0008 0009 #include "generictypes.h" 0010 #include "generictypes_p.h" 0011 0012 #include <QDBusMetaType> 0013 0014 QDBusArgument &operator<<(QDBusArgument &arg, const ModemManager::Port &port) 0015 { 0016 arg.beginStructure(); 0017 arg << port.name << port.type; 0018 arg.endStructure(); 0019 return arg; 0020 } 0021 0022 const QDBusArgument &operator>>(const QDBusArgument &arg, ModemManager::Port &port) 0023 { 0024 QString temp1; 0025 uint temp2; 0026 arg.beginStructure(); 0027 arg >> temp1 >> temp2; 0028 port.name = temp1; 0029 port.type = (MMModemPortType)temp2; 0030 arg.endStructure(); 0031 0032 return arg; 0033 } 0034 0035 // Marshall the CurrentModesType data into a D-BUS argument 0036 QDBusArgument &operator<<(QDBusArgument &arg, const ModemManager::CurrentModesType &mode) 0037 { 0038 arg.beginStructure(); 0039 arg << mode.allowed << mode.preferred; 0040 arg.endStructure(); 0041 return arg; 0042 } 0043 0044 // Retrieve the CurrentModesType data from the D-BUS argument 0045 const QDBusArgument &operator>>(const QDBusArgument &arg, ModemManager::CurrentModesType &mode) 0046 { 0047 uint temp1; 0048 uint temp2; 0049 arg.beginStructure(); 0050 arg >> temp1 >> temp2; 0051 mode.allowed = (MMModemMode)temp1; 0052 mode.preferred = (MMModemMode)temp2; 0053 arg.endStructure(); 0054 0055 return arg; 0056 } 0057 0058 #if MM_CHECK_VERSION(1, 2, 0) 0059 // Marshall the OmaSessionType data into a D-BUS argument 0060 QDBusArgument &operator<<(QDBusArgument &arg, const ModemManager::OmaSessionType &sessionType) 0061 { 0062 arg.beginStructure(); 0063 arg << sessionType.type << sessionType.id; 0064 arg.endStructure(); 0065 return arg; 0066 } 0067 0068 // Retrieve the OmaSessionType data from the D-BUS argument 0069 const QDBusArgument &operator>>(const QDBusArgument &arg, ModemManager::OmaSessionType &sessionType) 0070 { 0071 uint type; 0072 uint id; 0073 arg.beginStructure(); 0074 arg >> type >> id; 0075 sessionType.type = (MMOmaSessionType)type; 0076 sessionType.id = id; 0077 arg.endStructure(); 0078 0079 return arg; 0080 } 0081 #endif 0082 0083 // Marshall the SignalQualityPair data into a D-BUS argument 0084 QDBusArgument &operator<<(QDBusArgument &arg, const ModemManager::SignalQualityPair &sqp) 0085 { 0086 arg.beginStructure(); 0087 arg << sqp.signal << sqp.recent; 0088 arg.endStructure(); 0089 return arg; 0090 } 0091 0092 // Retrieve the SignalQualityPair data from the D-BUS argument 0093 const QDBusArgument &operator>>(const QDBusArgument &arg, ModemManager::SignalQualityPair &sqp) 0094 { 0095 arg.beginStructure(); 0096 arg >> sqp.signal >> sqp.recent; 0097 arg.endStructure(); 0098 return arg; 0099 } 0100 0101 // Marshall the ValidityPair data into a D-BUS argument 0102 QDBusArgument &operator<<(QDBusArgument &arg, const ModemManager::ValidityPair &vp) 0103 { 0104 arg.beginStructure(); 0105 arg << vp.validity << vp.value; 0106 arg.endStructure(); 0107 return arg; 0108 } 0109 0110 // Retrieve the ValidityPair data from the D-BUS argument 0111 const QDBusArgument &operator>>(const QDBusArgument &arg, ModemManager::ValidityPair &vp) 0112 { 0113 uint temp1; 0114 uint temp2; 0115 arg.beginStructure(); 0116 arg >> temp1 >> temp2; 0117 vp.validity = (MMSmsValidityType)temp1; 0118 vp.value = temp2; 0119 arg.endStructure(); 0120 0121 return arg; 0122 } 0123 0124 // Marshall the UnlockRetriesMap data into a D-BUS argument 0125 QDBusArgument &operator<<(QDBusArgument &argument, const ModemManager::UnlockRetriesMap &unlockRetriesMap) 0126 { 0127 argument.beginMap(QMetaType::Int, QMetaType::UInt); 0128 0129 QMapIterator<MMModemLock, uint> i(unlockRetriesMap); 0130 while (i.hasNext()) { 0131 i.next(); 0132 argument.beginMapEntry(); 0133 argument << i.key() << i.value(); 0134 argument.endMapEntry(); 0135 } 0136 argument.endMap(); 0137 return argument; 0138 } 0139 0140 // Retrieve the UnlockRetriesMap data from the D-BUS argument 0141 const QDBusArgument &operator>>(const QDBusArgument &argument, ModemManager::UnlockRetriesMap &unlockRetriesMap) 0142 { 0143 argument.beginMap(); 0144 unlockRetriesMap.clear(); 0145 0146 while (!argument.atEnd()) { 0147 int key; 0148 uint value; 0149 argument.beginMapEntry(); 0150 argument >> key; 0151 argument >> value; 0152 argument.endMapEntry(); 0153 unlockRetriesMap.insert((MMModemLock)key, value); 0154 } 0155 0156 argument.endMap(); 0157 return argument; 0158 } 0159 0160 // Marshal QList<QVariantMap> into a D-BUS argument 0161 QDBusArgument &operator<<(QDBusArgument &argument, const ModemManager::QVariantMapList &variantMapList) 0162 { 0163 argument.beginArray(qMetaTypeId<QVariantMap>()); 0164 for (int i = 0; i < variantMapList.length(); ++i) { 0165 argument << variantMapList[i]; 0166 } 0167 argument.endArray(); 0168 return argument; 0169 } 0170 0171 // Retrieve QList<QVariantMap> from a D-BUS argument 0172 const QDBusArgument &operator>>(const QDBusArgument &argument, ModemManager::QVariantMapList &variantMapList) 0173 { 0174 argument.beginArray(); 0175 variantMapList.clear(); 0176 0177 while (!argument.atEnd()) { 0178 QVariantMap element; 0179 argument >> element; 0180 variantMapList.append(element); 0181 } 0182 0183 argument.endArray(); 0184 return argument; 0185 } 0186 0187 // Marshal LocationInformationMap into a D-BUS argument 0188 QDBusArgument &operator<<(QDBusArgument &argument, const ModemManager::LocationInformationMap &locationMap) 0189 { 0190 argument.beginMap(qMetaTypeId<uint>(), qMetaTypeId<QDBusVariant>()); 0191 0192 QMapIterator<MMModemLocationSource, QVariant> i(locationMap); 0193 while (i.hasNext()) { 0194 i.next(); 0195 argument.beginMapEntry(); 0196 argument << (uint)i.key() << QDBusVariant(i.value()); 0197 argument.endMapEntry(); 0198 } 0199 argument.endMap(); 0200 return argument; 0201 } 0202 0203 // Retrieve LocationInformationMap from a D-BUS argument 0204 const QDBusArgument &operator>>(const QDBusArgument &argument, ModemManager::LocationInformationMap &locationMap) 0205 { 0206 argument.beginMap(); 0207 locationMap.clear(); 0208 0209 while (!argument.atEnd()) { 0210 uint key; 0211 QDBusVariant value; 0212 argument.beginMapEntry(); 0213 argument >> key; 0214 argument >> value; 0215 argument.endMapEntry(); 0216 locationMap.insert((MMModemLocationSource)key, value.variant()); 0217 } 0218 0219 argument.endMap(); 0220 return argument; 0221 } 0222 0223 void registerModemManagerTypes() 0224 { 0225 qDBusRegisterMetaType<ModemManager::MMVariantMapMap>(); 0226 qDBusRegisterMetaType<ModemManager::DBUSManagerStruct>(); 0227 qDBusRegisterMetaType<ModemManager::UIntList>(); 0228 qDBusRegisterMetaType<ModemManager::UIntListList>(); 0229 qDBusRegisterMetaType<ModemManager::Port>(); 0230 qDBusRegisterMetaType<ModemManager::PortList>(); 0231 qDBusRegisterMetaType<ModemManager::CurrentModesType>(); 0232 qDBusRegisterMetaType<ModemManager::SignalQualityPair>(); 0233 qDBusRegisterMetaType<ModemManager::SupportedModesType>(); 0234 qDBusRegisterMetaType<ModemManager::UnlockRetriesMap>(); 0235 qDBusRegisterMetaType<ModemManager::QVariantMapList>(); 0236 #if MM_CHECK_VERSION(1, 2, 0) 0237 qDBusRegisterMetaType<ModemManager::OmaSessionType>(); 0238 qDBusRegisterMetaType<ModemManager::OmaSessionTypes>(); 0239 #endif 0240 qDBusRegisterMetaType<ModemManager::LocationInformationMap>(); 0241 qDBusRegisterMetaType<ModemManager::ValidityPair>(); 0242 qDBusRegisterMetaType<ModemManager::PortList>(); 0243 qRegisterMetaType<MMModemMode>("MMModemMode"); 0244 qRegisterMetaType<MMModemLock>("MMModemLock"); 0245 qRegisterMetaType<MMModem3gppUssdSessionState>("MMModem3gppUssdSessionState"); 0246 qRegisterMetaType<MMModemLocationSource>("MMModemLocationSource"); 0247 }