aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksander Morgado <aleksandermj@chromium.org>2023-10-26 09:44:33 +0000
committerAleksander Morgado <aleksandermj@chromium.org>2023-10-27 07:33:44 +0000
commit2de0763ac84e958756162829d7d5846e7dfefe2e (patch)
treebadd9dfecb650331fd3fd61c7a24e9848b678545
parentbfb06589096bd83d9e0ed3768ad074a3e72542d8 (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.txt2
-rw-r--r--include/ModemManager-errors.h39
-rw-r--r--libmm-glib/mm-common-helpers.c1
-rw-r--r--src/mm-error-helpers.c23
-rw-r--r--src/mm-modem-helpers-mbim.c16
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);
}