File indexing completed on 2024-04-28 11:47:33

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 #ifndef MODEMMANAGERQT_GENERIC_TYPES_H
0010 #define MODEMMANAGERQT_GENERIC_TYPES_H
0011 
0012 #include <ModemManager/ModemManager.h>
0013 #include <modemmanagerqt_export.h>
0014 
0015 #include <QMetaType>
0016 #include <QtDBus>
0017 
0018 // Enums from ModemManager-enums.h which needs to be defined all the time,
0019 // because it's not possible to use MM_CHECK_VERSION for signals
0020 #if !MM_CHECK_VERSION(1, 2, 0)
0021 typedef enum { /*< underscore_name=mm_modem_3gpp_subscription_state >*/
0022                MM_MODEM_3GPP_SUBSCRIPTION_STATE_UNKNOWN = 0,
0023                MM_MODEM_3GPP_SUBSCRIPTION_STATE_UNPROVISIONED = 1,
0024                MM_MODEM_3GPP_SUBSCRIPTION_STATE_PROVISIONED = 2,
0025                MM_MODEM_3GPP_SUBSCRIPTION_STATE_OUT_OF_DATA = 3,
0026 } MMModem3gppSubscriptionState;
0027 
0028 typedef enum { /*< underscore_name=mm_sms_cdma_service_category >*/
0029                MM_SMS_CDMA_SERVICE_CATEGORY_UNKNOWN = 0x0000,
0030                MM_SMS_CDMA_SERVICE_CATEGORY_EMERGENCY_BROADCAST = 0x0001,
0031                MM_SMS_CDMA_SERVICE_CATEGORY_ADMINISTRATIVE = 0x0002,
0032                MM_SMS_CDMA_SERVICE_CATEGORY_MAINTENANCE = 0x0003,
0033                MM_SMS_CDMA_SERVICE_CATEGORY_GENERAL_NEWS_LOCAL = 0x0004,
0034                MM_SMS_CDMA_SERVICE_CATEGORY_GENERAL_NEWS_REGIONAL = 0x0005,
0035                MM_SMS_CDMA_SERVICE_CATEGORY_GENERAL_NEWS_NATIONAL = 0x0006,
0036                MM_SMS_CDMA_SERVICE_CATEGORY_GENERAL_NEWS_INTERNATIONAL = 0x0007,
0037                MM_SMS_CDMA_SERVICE_CATEGORY_BUSINESS_NEWS_LOCAL = 0x0008,
0038                MM_SMS_CDMA_SERVICE_CATEGORY_BUSINESS_NEWS_REGIONAL = 0x0009,
0039                MM_SMS_CDMA_SERVICE_CATEGORY_BUSINESS_NEWS_NATIONAL = 0x000A,
0040                MM_SMS_CDMA_SERVICE_CATEGORY_BUSINESS_NEWS_INTERNATIONAL = 0x000B,
0041                MM_SMS_CDMA_SERVICE_CATEGORY_SPORTS_NEWS_LOCAL = 0x000C,
0042                MM_SMS_CDMA_SERVICE_CATEGORY_SPORTS_NEWS_REGIONAL = 0x000D,
0043                MM_SMS_CDMA_SERVICE_CATEGORY_SPORTS_NEWS_NATIONAL = 0x000E,
0044                MM_SMS_CDMA_SERVICE_CATEGORY_SPORTS_NEWS_INTERNATIONAL = 0x000F,
0045                MM_SMS_CDMA_SERVICE_CATEGORY_ENTERTAINMENT_NEWS_LOCAL = 0x0010,
0046                MM_SMS_CDMA_SERVICE_CATEGORY_ENTERTAINMENT_NEWS_REGIONAL = 0x0011,
0047                MM_SMS_CDMA_SERVICE_CATEGORY_ENTERTAINMENT_NEWS_NATIONAL = 0x0012,
0048                MM_SMS_CDMA_SERVICE_CATEGORY_ENTERTAINMENT_NEWS_INTERNATIONAL = 0x0013,
0049                MM_SMS_CDMA_SERVICE_CATEGORY_LOCAL_WEATHER = 0x0014,
0050                MM_SMS_CDMA_SERVICE_CATEGORY_TRAFFIC_REPORT = 0x0015,
0051                MM_SMS_CDMA_SERVICE_CATEGORY_FLIGHT_SCHEDULES = 0x0016,
0052                MM_SMS_CDMA_SERVICE_CATEGORY_RESTAURANTS = 0x0017,
0053                MM_SMS_CDMA_SERVICE_CATEGORY_LODGINGS = 0x0018,
0054                MM_SMS_CDMA_SERVICE_CATEGORY_RETAIL_DIRECTORY = 0x0019,
0055                MM_SMS_CDMA_SERVICE_CATEGORY_ADVERTISEMENTS = 0x001A,
0056                MM_SMS_CDMA_SERVICE_CATEGORY_STOCK_QUOTES = 0x001B,
0057                MM_SMS_CDMA_SERVICE_CATEGORY_EMPLOYMENT = 0x001C,
0058                MM_SMS_CDMA_SERVICE_CATEGORY_HOSPITALS = 0x001D,
0059                MM_SMS_CDMA_SERVICE_CATEGORY_TECHNOLOGY_NEWS = 0x001E,
0060                MM_SMS_CDMA_SERVICE_CATEGORY_MULTICATEGORY = 0x001F,
0061                MM_SMS_CDMA_SERVICE_CATEGORY_CMAS_PRESIDENTIAL_ALERT = 0x1000,
0062                MM_SMS_CDMA_SERVICE_CATEGORY_CMAS_EXTREME_THREAT = 0x1001,
0063                MM_SMS_CDMA_SERVICE_CATEGORY_CMAS_SEVERE_THREAT = 0x1002,
0064                MM_SMS_CDMA_SERVICE_CATEGORY_CMAS_CHILD_ABDUCTION_EMERGENCY = 0x1003,
0065                MM_SMS_CDMA_SERVICE_CATEGORY_CMAS_TEST = 0x1004,
0066 } MMSmsCdmaServiceCategory;
0067 
0068 typedef enum { /*< underscore_name=mm_sms_cdma_teleservice_id >*/
0069                MM_SMS_CDMA_TELESERVICE_ID_UNKNOWN = 0x0000,
0070                MM_SMS_CDMA_TELESERVICE_ID_CMT91 = 0x1000,
0071                MM_SMS_CDMA_TELESERVICE_ID_WPT = 0x1001,
0072                MM_SMS_CDMA_TELESERVICE_ID_WMT = 0x1002,
0073                MM_SMS_CDMA_TELESERVICE_ID_VMN = 0x1003,
0074                MM_SMS_CDMA_TELESERVICE_ID_WAP = 0x1004,
0075                MM_SMS_CDMA_TELESERVICE_ID_WEMT = 0x1005,
0076                MM_SMS_CDMA_TELESERVICE_ID_SCPT = 0x1006,
0077                MM_SMS_CDMA_TELESERVICE_ID_CATPT = 0x1007,
0078 } MMSmsCdmaTeleserviceId;
0079 #endif
0080 
0081 namespace ModemManager
0082 {
0083 typedef QMap<QString, QVariantMap> MMVariantMapMap;
0084 typedef QMap<QDBusObjectPath, MMVariantMapMap> DBUSManagerStruct;
0085 typedef QList<uint> UIntList;
0086 typedef QList<QList<uint>> UIntListList;
0087 
0088 typedef struct {
0089     QString name;
0090     MMModemPortType type;
0091 } Port;
0092 typedef QList<Port> PortList;
0093 
0094 typedef struct {
0095     uint signal;
0096     bool recent;
0097 } SignalQualityPair;
0098 
0099 typedef struct {
0100     uint allowed; // bitfield
0101     MMModemMode preferred;
0102 } CurrentModesType;
0103 typedef QList<CurrentModesType> SupportedModesType;
0104 
0105 #if MM_CHECK_VERSION(1, 2, 0)
0106 typedef struct {
0107     MMOmaSessionType type;
0108     uint id;
0109 } OmaSessionType;
0110 typedef QList<OmaSessionType> OmaSessionTypes;
0111 #endif
0112 typedef QMap<MMModemLock, uint> UnlockRetriesMap;
0113 typedef QList<QVariantMap> QVariantMapList;
0114 typedef QMap<MMModemLocationSource, QVariant> LocationInformationMap;
0115 typedef struct {
0116     MMSmsValidityType validity;
0117     uint value;
0118 } ValidityPair;
0119 }
0120 
0121 // Flags
0122 Q_DECLARE_METATYPE(QFlags<MMModemAccessTechnology>)
0123 Q_DECLARE_METATYPE(QFlags<MMModemCapability>)
0124 Q_DECLARE_METATYPE(QFlags<MMModemMode>)
0125 Q_DECLARE_METATYPE(QFlags<MMBearerIpFamily>)
0126 Q_DECLARE_METATYPE(QFlags<MMModem3gppFacility>)
0127 Q_DECLARE_METATYPE(QFlags<MMModemLocationSource>)
0128 #if MM_CHECK_VERSION(1, 2, 0)
0129 Q_DECLARE_METATYPE(QFlags<MMOmaFeature>)
0130 #endif
0131 
0132 // ModemManager enums
0133 Q_DECLARE_METATYPE(QList<MMModemBand>)
0134 Q_DECLARE_METATYPE(QList<MMModemCapability>)
0135 Q_DECLARE_METATYPE(MMModemLock)
0136 Q_DECLARE_METATYPE(MMModemPowerState)
0137 Q_DECLARE_METATYPE(MMModemState)
0138 Q_DECLARE_METATYPE(MMModemStateChangeReason)
0139 Q_DECLARE_METATYPE(MMModemStateFailedReason)
0140 Q_DECLARE_METATYPE(MMModem3gppRegistrationState)
0141 #if MM_CHECK_VERSION(1, 2, 0)
0142 Q_DECLARE_METATYPE(MMModem3gppSubscriptionState)
0143 #endif
0144 Q_DECLARE_METATYPE(MMModem3gppUssdSessionState)
0145 Q_DECLARE_METATYPE(MMModemCdmaActivationState)
0146 Q_DECLARE_METATYPE(MMCdmaActivationError)
0147 Q_DECLARE_METATYPE(MMModemCdmaRegistrationState)
0148 Q_DECLARE_METATYPE(MMModemLocationSource)
0149 #if MM_CHECK_VERSION(1, 2, 0)
0150 Q_DECLARE_METATYPE(MMOmaSessionType)
0151 Q_DECLARE_METATYPE(MMOmaSessionState)
0152 Q_DECLARE_METATYPE(MMOmaSessionStateFailedReason)
0153 #endif
0154 Q_DECLARE_METATYPE(MMSmsDeliveryState)
0155 Q_DECLARE_METATYPE(MMSmsPduType)
0156 Q_DECLARE_METATYPE(MMSmsState)
0157 Q_DECLARE_METATYPE(MMSmsStorage)
0158 #if MM_CHECK_VERSION(1, 2, 0)
0159 Q_DECLARE_METATYPE(MMSmsCdmaServiceCategory)
0160 Q_DECLARE_METATYPE(MMSmsCdmaTeleserviceId)
0161 #endif
0162 #if MM_CHECK_VERSION(1, 6, 0)
0163 Q_DECLARE_METATYPE(MMCallState)
0164 Q_DECLARE_METATYPE(MMCallStateReason)
0165 Q_DECLARE_METATYPE(MMCallDirection)
0166 #endif
0167 
0168 // Others
0169 Q_DECLARE_METATYPE(ModemManager::DBUSManagerStruct)
0170 Q_DECLARE_METATYPE(ModemManager::Port)
0171 Q_DECLARE_METATYPE(ModemManager::PortList)
0172 Q_DECLARE_METATYPE(ModemManager::SignalQualityPair)
0173 Q_DECLARE_METATYPE(ModemManager::CurrentModesType)
0174 Q_DECLARE_METATYPE(ModemManager::SupportedModesType)
0175 #if MM_CHECK_VERSION(1, 2, 0)
0176 Q_DECLARE_METATYPE(ModemManager::OmaSessionType)
0177 Q_DECLARE_METATYPE(ModemManager::OmaSessionTypes)
0178 #endif
0179 Q_DECLARE_METATYPE(ModemManager::UnlockRetriesMap)
0180 Q_DECLARE_METATYPE(ModemManager::LocationInformationMap)
0181 Q_DECLARE_METATYPE(ModemManager::ValidityPair)
0182 
0183 // Port
0184 MODEMMANAGERQT_EXPORT QDBusArgument &operator<<(QDBusArgument &arg, const ModemManager::Port &port);
0185 MODEMMANAGERQT_EXPORT const QDBusArgument &operator>>(const QDBusArgument &arg, ModemManager::Port &port);
0186 
0187 // CurrentModesType
0188 MODEMMANAGERQT_EXPORT QDBusArgument &operator<<(QDBusArgument &arg, const ModemManager::CurrentModesType &mode);
0189 MODEMMANAGERQT_EXPORT const QDBusArgument &operator>>(const QDBusArgument &arg, ModemManager::CurrentModesType &mode);
0190 
0191 // SignalQualityPair
0192 MODEMMANAGERQT_EXPORT QDBusArgument &operator<<(QDBusArgument &arg, const ModemManager::SignalQualityPair &sqp);
0193 MODEMMANAGERQT_EXPORT const QDBusArgument &operator>>(const QDBusArgument &arg, ModemManager::SignalQualityPair &sqp);
0194 
0195 // ValidityPair
0196 MODEMMANAGERQT_EXPORT QDBusArgument &operator<<(QDBusArgument &arg, const ModemManager::ValidityPair &vp);
0197 MODEMMANAGERQT_EXPORT const QDBusArgument &operator>>(const QDBusArgument &arg, ModemManager::ValidityPair &vp);
0198 
0199 #if MM_CHECK_VERSION(1, 2, 0)
0200 // OmaSessionType
0201 MODEMMANAGERQT_EXPORT QDBusArgument &operator<<(QDBusArgument &arg, const ModemManager::OmaSessionType &sessionType);
0202 MODEMMANAGERQT_EXPORT const QDBusArgument &operator>>(const QDBusArgument &arg, ModemManager::OmaSessionType &sessionType);
0203 #endif
0204 
0205 // UnlockRetriesMap
0206 MODEMMANAGERQT_EXPORT QDBusArgument &operator<<(QDBusArgument &argument, const ModemManager::UnlockRetriesMap &unlockRetriesMap);
0207 MODEMMANAGERQT_EXPORT const QDBusArgument &operator>>(const QDBusArgument &argument, ModemManager::UnlockRetriesMap &unlockRetriesMap);
0208 
0209 // QVariantMapList
0210 MODEMMANAGERQT_EXPORT QDBusArgument &operator<<(QDBusArgument &argument, const ModemManager::QVariantMapList &variantMapList);
0211 MODEMMANAGERQT_EXPORT const QDBusArgument &operator>>(const QDBusArgument &argument, ModemManager::QVariantMapList &variantMapList);
0212 
0213 // LocationInformationMap
0214 MODEMMANAGERQT_EXPORT QDBusArgument &operator<<(QDBusArgument &argument, const ModemManager::LocationInformationMap &locationMap);
0215 MODEMMANAGERQT_EXPORT const QDBusArgument &operator>>(const QDBusArgument &argument, ModemManager::LocationInformationMap &locationMap);
0216 
0217 MODEMMANAGERQT_EXPORT void registerModemManagerTypes();
0218 
0219 #endif // MODEMMANAGERQT_GENERIC_TYPES_P_H