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