On 1/12/22 3:55 AM, Aleksander Morgado wrote:


The main problem with these errors is that they're not standard 3GPP
errors, they're vendor-specific, and at the moment there is no support
for configuring and enabling vendor-specific error codes. It would be
great to have that support somehow; e.g. so that each plugin can
register at runtime a list of CME errors into the serial parsers so
that they are handled when they are detected. If you're up to doing
that, it would be great.

Yes, I understand, and this changes the error number limit too. I can't
really justify the effort in doing this plugin specific work, but here's
the patch I'm using now which you can use for starters.



--- a/src/mm-error-helpers.c	2022-01-11 09:46:19.171674530 -0500
+++ b/src/mm-error-helpers.c	2022-01-11 10:07:12.850742536 -0500
@@ -239,10 +239,26 @@
     [MM_MOBILE_EQUIPMENT_ERROR_UNAUTHORIZED_FOR_CAG]                              = "Unauthorized for CAG",
     [MM_MOBILE_EQUIPMENT_ERROR_NO_NETWORK_SLICES_AVAILABLE]                       = "No network slices available",
     [MM_MOBILE_EQUIPMENT_ERROR_WIRELINE_ACCESS_AREA_NOT_ALLOWED]                  = "Wireline access area not allowed",
+    [MM_MOBILE_EQUIPMENT_ERROR_GNSS_INVALID_PARAMETER]                            = "GNSS - Invalid parameter",
+    [MM_MOBILE_EQUIPMENT_ERROR_GNSS_OPERATION_NOT_SUPPORTED]                      = "GNSS - Operation not supported",
+    [MM_MOBILE_EQUIPMENT_ERROR_GNSS_GNSS_SUBSYSTEM_BUSY]                          = "GNSS - Subsystem busy",
+    [MM_MOBILE_EQUIPMENT_ERROR_GNSS_SESSION_IS_ONGOING]                           = "GNSS - Session is ongoing",
+    [MM_MOBILE_EQUIPMENT_ERROR_GNSS_SESSION_NOT_ACTIVE]                           = "GNSS - Session not active",
+    [MM_MOBILE_EQUIPMENT_ERROR_GNSS_OPERATION_TIMEOUT]                            = "GNSS - Operation timeout",
+    [MM_MOBILE_EQUIPMENT_ERROR_GNSS_FUNCTION_NOT_ENABLED]                         = "GNSS - Function not enabled",
+    [MM_MOBILE_EQUIPMENT_ERROR_GNSS_TIME_INFORMATION_ERROR]                       = "GNSS - Time information error",
+    [MM_MOBILE_EQUIPMENT_ERROR_GNSS_VALIDITY_TIME_IS_OUT_OF_RANGE]                = "GNSS - Validity time is out of range",
+    [MM_MOBILE_EQUIPMENT_ERROR_GNSS_INTERNAL_RESOURCE_ERROR]                      = "GNSS - Internal resource error",
+    [MM_MOBILE_EQUIPMENT_ERROR_GNSS_LOCKED]                                       = "GNSS - Locked",
+    [MM_MOBILE_EQUIPMENT_ERROR_GNSS_END_BY_E911]                                  = "GNSS - End by 911",
+    [MM_MOBILE_EQUIPMENT_ERROR_GNSS_NOT_FIXED_NOW]                                = "GNSS - Not fixed now", 
+    [MM_MOBILE_EQUIPMENT_ERROR_GNSS_UNKNOWN_ERROR]                                = "GNSS - Unknown error",
 };
 
 /* All generic ME errors should be < 255, as those are the only reserved ones in the 3GPP spec */
-G_STATIC_ASSERT (G_N_ELEMENTS (me_error_messages) <= 256);
+//G_STATIC_ASSERT (G_N_ELEMENTS (me_error_messages) <= 256);
+/* GNSS errors run 501-549) */
+G_STATIC_ASSERT (G_N_ELEMENTS (me_error_messages) <= 550);
 
 GError *
 mm_mobile_equipment_error_for_code (MMMobileEquipmentError code,
--- a/include/ModemManager-errors.h	2022-01-11 09:46:08.459647531 -0500
+++ b/include/ModemManager-errors.h	2022-01-11 10:04:13.694309641 -0500
@@ -288,6 +288,20 @@
  * @MM_MOBILE_EQUIPMENT_ERROR_UNAUTHORIZED_FOR_CAG: Not authorized for this CAG or authorized for CAG cells only (5GS). Since 1.18.
  * @MM_MOBILE_EQUIPMENT_ERROR_NO_NETWORK_SLICES_AVAILABLE: No network slices available (5GS). Since 1.18.
  * @MM_MOBILE_EQUIPMENT_ERROR_WIRELINE_ACCESS_AREA_NOT_ALLOWED: Wireline access area not allowed (5GS). Since 1.18.
+ * @MM_MOBILE_EQUIPMENT_ERROR_GNSS_INVALID_PARAMETER: GNSS - Invalid parameter. Since 1.18
+ * @MM_MOBILE_EQUIPMENT_ERROR_GNSS_OPERATION_NOT_SUPPORTED: GNSS - Operation not supported. Since 1.18
+ * @MM_MOBILE_EQUIPMENT_ERROR_GNSS_GNSS_SUBSYSTEM_BUSY: GNSS - Subsystem busy. Since 1.18
+ * @MM_MOBILE_EQUIPMENT_ERROR_GNSS_SESSION_IS_ONGOING: GNSS - Session is ongoing. Since 1.18
+ * @MM_MOBILE_EQUIPMENT_ERROR_GNSS_SESSION_NOT_ACTIVE: GNSS - Session not active. Since 1.18
+ * @MM_MOBILE_EQUIPMENT_ERROR_GNSS_OPERATION_TIMEOUT: GNSS - Operation timeout. Since 1.18
+ * @MM_MOBILE_EQUIPMENT_ERROR_GNSS_FUNCTION_NOT_ENABLED: GNSS - Function not enabled. Since 1.18
+ * @MM_MOBILE_EQUIPMENT_ERROR_GNSS_TIME_INFORMATION_ERROR: GNSS - Time information error. Since 1.18
+ * @MM_MOBILE_EQUIPMENT_ERROR_GNSS_VALIDITY_TIME_IS_OUT_OF_RANGE: GNSS - Validity time is out of range. Since 1.18
+ * @MM_MOBILE_EQUIPMENT_ERROR_GNSS_INTERNAL_RESOURCE_ERROR:  GNSS - Internal resource error. Since 1.18
+ * @MM_MOBILE_EQUIPMENT_ERROR_GNSS_LOCKED: GNSS - Locked. Since 1.18
+ * @MM_MOBILE_EQUIPMENT_ERROR_GNSS_END_BY_E911: GNSS - End by 911. Since 1.18
+ * @MM_MOBILE_EQUIPMENT_ERROR_GNSS_NOT_FIXED_NOW: GNSS - Not fixed now. Since 1.18
+ * @MM_MOBILE_EQUIPMENT_ERROR_GNSS_UNKNOWN_ERROR: GNSS - Unknown error. Since 1.18
  *
  * Enumeration of Mobile Equipment errors, as defined in 3GPP TS 27.007 v17.1.0,
  * section 9.2 (Mobile termination error result code +CME ERROR).
@@ -458,6 +472,20 @@
     MM_MOBILE_EQUIPMENT_ERROR_UNAUTHORIZED_FOR_CAG                              = 231, /*< nick=UnauthorizedForCag >*/
     MM_MOBILE_EQUIPMENT_ERROR_NO_NETWORK_SLICES_AVAILABLE                       = 232, /*< nick=NoNetworkSlicesAvailable >*/
     MM_MOBILE_EQUIPMENT_ERROR_WIRELINE_ACCESS_AREA_NOT_ALLOWED                  = 233, /*< nick=WirelineAccessAreaNotAllowed >*/
+    MM_MOBILE_EQUIPMENT_ERROR_GNSS_INVALID_PARAMETER                            = 501, /*< nick=GnssInvalidParameter >*/
+    MM_MOBILE_EQUIPMENT_ERROR_GNSS_OPERATION_NOT_SUPPORTED                      = 502, /*< nick=GnssOperationNotSupported >*/
+    MM_MOBILE_EQUIPMENT_ERROR_GNSS_GNSS_SUBSYSTEM_BUSY                          = 503, /*< nick=GnssSubsystemBusy >*/
+    MM_MOBILE_EQUIPMENT_ERROR_GNSS_SESSION_IS_ONGOING                           = 504, /*< nick=GnssSessionIsOngoing >*/
+    MM_MOBILE_EQUIPMENT_ERROR_GNSS_SESSION_NOT_ACTIVE                           = 505, /*< nick=GnssSessionNotActive >*/
+    MM_MOBILE_EQUIPMENT_ERROR_GNSS_OPERATION_TIMEOUT                            = 506, /*< nick=GnssOperationTimeout >*/
+    MM_MOBILE_EQUIPMENT_ERROR_GNSS_FUNCTION_NOT_ENABLED                         = 507, /*< nick=GnssFunctionNotEnabled >*/
+    MM_MOBILE_EQUIPMENT_ERROR_GNSS_TIME_INFORMATION_ERROR                       = 508, /*< nick=GnssTimeInformationError >*/
+    MM_MOBILE_EQUIPMENT_ERROR_GNSS_VALIDITY_TIME_IS_OUT_OF_RANGE                = 512, /*< nick=GnssValidityTimeIsOutOfRange >*/
+    MM_MOBILE_EQUIPMENT_ERROR_GNSS_INTERNAL_RESOURCE_ERROR                      = 513, /*< nick=GnssInternalResourceError >*/
+    MM_MOBILE_EQUIPMENT_ERROR_GNSS_LOCKED                                       = 514, /*< nick=GnssLocked >*/
+    MM_MOBILE_EQUIPMENT_ERROR_GNSS_END_BY_E911                                  = 515, /*< nick=GnssEndBy911 >*/
+    MM_MOBILE_EQUIPMENT_ERROR_GNSS_NOT_FIXED_NOW                                = 516, /*< nick=GnssNotFixedNow >*/
+    MM_MOBILE_EQUIPMENT_ERROR_GNSS_UNKNOWN_ERROR                                = 549, /*< nick=GnssUnknownError >*/
 } MMMobileEquipmentError;
 
 /**

Reply via email to