diff options
author | Aleksander Morgado <aleksandermj@chromium.org> | 2023-10-26 09:44:33 +0000 |
---|---|---|
committer | Aleksander Morgado <aleksandermj@chromium.org> | 2023-10-27 07:33:44 +0000 |
commit | 2de0763ac84e958756162829d7d5846e7dfefe2e (patch) | |
tree | badd9dfecb650331fd3fd61c7a24e9848b678545 | |
parent | bfb06589096bd83d9e0ed3768ad074a3e72542d8 (diff) |
api,errors: new MMCarrierLockError type
This new error type will be used to report errors in the carrier lock
operations performed through ModemManager.
They have a one to one mapping to the MBIM status specific errors.
-rw-r--r-- | docs/reference/api/ModemManager-sections.txt | 2 | ||||
-rw-r--r-- | include/ModemManager-errors.h | 39 | ||||
-rw-r--r-- | libmm-glib/mm-common-helpers.c | 1 | ||||
-rw-r--r-- | src/mm-error-helpers.c | 23 | ||||
-rw-r--r-- | src/mm-modem-helpers-mbim.c | 16 |
5 files changed, 74 insertions, 7 deletions
diff --git a/docs/reference/api/ModemManager-sections.txt b/docs/reference/api/ModemManager-sections.txt index 576f1afc..0b047d2a 100644 --- a/docs/reference/api/ModemManager-sections.txt +++ b/docs/reference/api/ModemManager-sections.txt @@ -76,12 +76,14 @@ MM_CONNECTION_ERROR_DBUS_PREFIX MM_SERIAL_ERROR_DBUS_PREFIX MM_MESSAGE_ERROR_DBUS_PREFIX MM_CDMA_ACTIVATION_ERROR_DBUS_PREFIX +MM_CARRIER_LOCK_ERROR_DBUS_PREFIX MMCoreError MMMobileEquipmentError MMConnectionError MMSerialError MMMessageError MMCdmaActivationError +MMCarrierLockError </SECTION> <SECTION> diff --git a/include/ModemManager-errors.h b/include/ModemManager-errors.h index fa622d17..4a7c5ce7 100644 --- a/include/ModemManager-errors.h +++ b/include/ModemManager-errors.h @@ -31,6 +31,8 @@ * ModemManager interface. **/ +/******************************************************************************/ + /** * MM_CORE_ERROR_DBUS_PREFIX: * @@ -86,6 +88,17 @@ #define MM_CDMA_ACTIVATION_ERROR_DBUS_PREFIX MM_DBUS_ERROR_PREFIX ".CdmaActivation" /** + * MM_CARRIER_LOCK_ERROR_DBUS_PREFIX: + * + * DBus prefix for #MMCarrierLockError errors. + * + * Since: 1.24 + */ +#define MM_CARRIER_LOCK_ERROR_DBUS_PREFIX MM_DBUS_ERROR_PREFIX ".CarrierLock" + +/******************************************************************************/ + +/** * MMCoreError: * @MM_CORE_ERROR_FAILED: Operation failed. * @MM_CORE_ERROR_CANCELLED: Operation was cancelled. @@ -606,4 +619,30 @@ typedef enum { /*< underscore_name=mm_cdma_activation_error >*/ MM_CDMA_ACTIVATION_ERROR_START_FAILED = 9 /*< nick=StartFailed >*/ } MMCdmaActivationError; +/** + * MMCarrierLockError: + * @MM_CARRIER_LOCK_ERROR_UNKNOWN: Unknown error. + * @MM_CARRIER_LOCK_ERROR_INVALID_SIGNATURE: Invalid signature. + * @MM_CARRIER_LOCK_ERROR_INVALID_IMEI: Invalid IMEI. + * @MM_CARRIER_LOCK_ERROR_INVALID_TIMESTAMP: Invalid timestamp. + * @MM_CARRIER_LOCK_ERROR_NETWORK_LIST_TOO_LARGE: Network list too large. + * @MM_CARRIER_LOCK_ERROR_SIGNATURE_ALGORITHM_NOT_SUPPORTED: Algorithm not supported. + * @MM_CARRIER_LOCK_ERROR_FEATURE_NOT_SUPPORTED: Feature not supported. + * @MM_CARRIER_LOCK_ERROR_DECODE_OR_PARSING_ERROR: Decode or parsing error. + * + * Carrier lock operation errors. + * + * Since: 1.24 + */ +typedef enum { /*< underscore_name=mm_carrier_lock_error >*/ + MM_CARRIER_LOCK_ERROR_UNKNOWN = 0, /*< nick=Unknown >*/ + MM_CARRIER_LOCK_ERROR_INVALID_SIGNATURE = 1, /*< nick=InvalidSignature >*/ + MM_CARRIER_LOCK_ERROR_INVALID_IMEI = 2, /*< nick=InvalidImei >*/ + MM_CARRIER_LOCK_ERROR_INVALID_TIMESTAMP = 3, /*< nick=InvalidTimestamp >*/ + MM_CARRIER_LOCK_ERROR_NETWORK_LIST_TOO_LARGE = 6, /*< nick=NetworkListTooLarge >*/ + MM_CARRIER_LOCK_ERROR_SIGNATURE_ALGORITHM_NOT_SUPPORTED = 7, /*< nick=SignatureAlgorithmNotSupported >*/ + MM_CARRIER_LOCK_ERROR_FEATURE_NOT_SUPPORTED = 8, /*< nick=FeatureNotSupported >*/ + MM_CARRIER_LOCK_ERROR_DECODE_OR_PARSING_ERROR = 9, /*< nick=DecodeOrParsingError >*/ +} MMCarrierLockError; + #endif /* _MODEMMANAGER_ERRORS_H_ */ diff --git a/libmm-glib/mm-common-helpers.c b/libmm-glib/mm-common-helpers.c index 217daf98..72007ab5 100644 --- a/libmm-glib/mm-common-helpers.c +++ b/libmm-glib/mm-common-helpers.c @@ -2081,6 +2081,7 @@ mm_common_register_errors (void) aux |= MM_SERIAL_ERROR; aux |= MM_MESSAGE_ERROR; aux |= MM_CDMA_ACTIVATION_ERROR; + aux |= MM_CARRIER_LOCK_ERROR; return TRUE; } diff --git a/src/mm-error-helpers.c b/src/mm-error-helpers.c index 9f93b44b..a5c96e67 100644 --- a/src/mm-error-helpers.c +++ b/src/mm-error-helpers.c @@ -521,6 +521,27 @@ cdma_activation_error_get_string (MMCdmaActivationError code) } /******************************************************************************/ +/* Carrier lock errors */ + +/* Human friendly messages for each error type */ +static const gchar *carrier_lock_error_messages[] = { + [MM_CARRIER_LOCK_ERROR_UNKNOWN] = "Unknown", + [MM_CARRIER_LOCK_ERROR_INVALID_SIGNATURE] = "Invalid signature", + [MM_CARRIER_LOCK_ERROR_INVALID_IMEI] = "Invalid IMEI", + [MM_CARRIER_LOCK_ERROR_INVALID_TIMESTAMP] = "Invalid timestamp", + [MM_CARRIER_LOCK_ERROR_NETWORK_LIST_TOO_LARGE] = "Network list too large", + [MM_CARRIER_LOCK_ERROR_SIGNATURE_ALGORITHM_NOT_SUPPORTED] = "Signature algorithm not supported", + [MM_CARRIER_LOCK_ERROR_FEATURE_NOT_SUPPORTED] = "Feature not supported", + [MM_CARRIER_LOCK_ERROR_DECODE_OR_PARSING_ERROR] = "Decode or parsing error", +}; + +static const gchar * +carrier_lock_error_get_string (MMCarrierLockError code) +{ + return (code < G_N_ELEMENTS (carrier_lock_error_messages)) ? carrier_lock_error_messages[code] : NULL; +} + +/******************************************************************************/ /* Registered error mappings */ typedef struct { @@ -685,6 +706,8 @@ mm_normalize_error (const GError *error) return normalize_mm_error (error, message_error_get_string (error->code), "message"); if (error->domain == MM_CDMA_ACTIVATION_ERROR) return normalize_mm_error (error, cdma_activation_error_get_string (error->code), "CDMA activation"); + if (error->domain == MM_CARRIER_LOCK_ERROR) + return normalize_mm_error (error, carrier_lock_error_get_string (error->code), "carrier lock"); /* Normalize mapped errors */ return normalize_mapped_error (error); diff --git a/src/mm-modem-helpers-mbim.c b/src/mm-modem-helpers-mbim.c index dbad1d69..a778b413 100644 --- a/src/mm-modem-helpers-mbim.c +++ b/src/mm-modem-helpers-mbim.c @@ -1566,18 +1566,20 @@ mm_register_mbim_errors (void) /* MBIM_STATUS_ERROR_AUTH_SYNC_FAILURE */ /* MBIM_STATUS_ERROR_AUTH_AMF_NOT_SET */ mm_register_error_mapping (MBIM_STATUS_ERROR, MBIM_STATUS_ERROR_CONTEXT_NOT_SUPPORTED, MM_MOBILE_EQUIPMENT_ERROR, MM_MOBILE_EQUIPMENT_ERROR_NOT_SUPPORTED); + mm_register_error_mapping (MBIM_STATUS_ERROR, MBIM_STATUS_ERROR_SMS_UNKNOWN_SMSC_ADDRESS, MM_MESSAGE_ERROR, MM_MESSAGE_ERROR_SMSC_ADDRESS_UNKNOWN); mm_register_error_mapping (MBIM_STATUS_ERROR, MBIM_STATUS_ERROR_SMS_NETWORK_TIMEOUT, MM_MESSAGE_ERROR, MM_MESSAGE_ERROR_NETWORK_TIMEOUT); mm_register_error_mapping (MBIM_STATUS_ERROR, MBIM_STATUS_ERROR_SMS_LANG_NOT_SUPPORTED, MM_MESSAGE_ERROR, MM_MESSAGE_ERROR_NOT_SUPPORTED); mm_register_error_mapping (MBIM_STATUS_ERROR, MBIM_STATUS_ERROR_SMS_ENCODING_NOT_SUPPORTED, MM_MESSAGE_ERROR, MM_MESSAGE_ERROR_NOT_SUPPORTED); mm_register_error_mapping (MBIM_STATUS_ERROR, MBIM_STATUS_ERROR_SMS_FORMAT_NOT_SUPPORTED, MM_MESSAGE_ERROR, MM_MESSAGE_ERROR_NOT_SUPPORTED); - /* MBIM_STATUS_ERROR_INVALID_SIGNATURE */ - /* MBIM_STATUS_ERROR_INVALID_IMEI */ - /* MBIM_STATUS_ERROR_INVALID_TIMESTAMP */ - /* MBIM_STATUS_ERROR_NETWORK_LIST_TOO_LARGE */ - /* MBIM_STATUS_ERROR_SIGNATURE_ALGORITHM_NOT_SUPPORTED */ - /* MBIM_STATUS_ERROR_FEATURE_NOT_SUPPORTED */ - /* MBIM_STATUS_ERROR_DECODE_OR_PARSING_ERROR */ + + mm_register_error_mapping (MBIM_STATUS_ERROR, MBIM_STATUS_ERROR_INVALID_SIGNATURE, MM_CARRIER_LOCK_ERROR, MM_CARRIER_LOCK_ERROR_INVALID_SIGNATURE); + mm_register_error_mapping (MBIM_STATUS_ERROR, MBIM_STATUS_ERROR_INVALID_IMEI, MM_CARRIER_LOCK_ERROR, MM_CARRIER_LOCK_ERROR_INVALID_IMEI); + mm_register_error_mapping (MBIM_STATUS_ERROR, MBIM_STATUS_ERROR_INVALID_TIMESTAMP, MM_CARRIER_LOCK_ERROR, MM_CARRIER_LOCK_ERROR_INVALID_TIMESTAMP); + mm_register_error_mapping (MBIM_STATUS_ERROR, MBIM_STATUS_ERROR_NETWORK_LIST_TOO_LARGE, MM_CARRIER_LOCK_ERROR, MM_CARRIER_LOCK_ERROR_NETWORK_LIST_TOO_LARGE); + mm_register_error_mapping (MBIM_STATUS_ERROR, MBIM_STATUS_ERROR_SIGNATURE_ALGORITHM_NOT_SUPPORTED, MM_CARRIER_LOCK_ERROR, MM_CARRIER_LOCK_ERROR_SIGNATURE_ALGORITHM_NOT_SUPPORTED); + mm_register_error_mapping (MBIM_STATUS_ERROR, MBIM_STATUS_ERROR_FEATURE_NOT_SUPPORTED, MM_CARRIER_LOCK_ERROR, MM_CARRIER_LOCK_ERROR_FEATURE_NOT_SUPPORTED); + mm_register_error_mapping (MBIM_STATUS_ERROR, MBIM_STATUS_ERROR_DECODE_OR_PARSING_ERROR, MM_CARRIER_LOCK_ERROR, MM_CARRIER_LOCK_ERROR_DECODE_OR_PARSING_ERROR); g_once_init_leave (&mbim_errors_registered, 1); } |