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; /**