diff options
author | Aleksander Morgado <aleksander@lanedo.com> | 2012-08-27 16:46:13 +0200 |
---|---|---|
committer | Aleksander Morgado <aleksander@lanedo.com> | 2012-08-27 16:46:13 +0200 |
commit | c18cd871b6f5e028947ce7b86c14954fc2bcd5ad (patch) | |
tree | 8876be27c459831f5ac4baa904218ab4d11682f6 | |
parent | a605d46a3d1baa40689cc9515c9902ddfe16e881 (diff) | |
download | libqmi-c18cd871b6f5e028947ce7b86c14954fc2bcd5ad.tar.gz |
libqmi-glib: register errors in DBus
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | build-aux/templates/qmi-error-quarks-template.c | 42 | ||||
-rw-r--r-- | build-aux/templates/qmi-error-types-template.c | 6 | ||||
-rw-r--r-- | libqmi-glib/Makefile.am | 8 | ||||
-rw-r--r-- | libqmi-glib/qmi-errors.h | 179 |
5 files changed, 143 insertions, 93 deletions
@@ -37,6 +37,7 @@ libqmi-glib/.deps libqmi-glib/Makefile libqmi-glib/Makefile.in libqmi-glib/libqmi-glib.la +libqmi-glib/qmi-error-quarks.c libqmi-glib/qmi-error-types.c libqmi-glib/qmi-error-types.h libqmi-glib/qmi-enum-types.h diff --git a/build-aux/templates/qmi-error-quarks-template.c b/build-aux/templates/qmi-error-quarks-template.c new file mode 100644 index 00000000..4386a601 --- /dev/null +++ b/build-aux/templates/qmi-error-quarks-template.c @@ -0,0 +1,42 @@ +/*** BEGIN file-header ***/ + +#include <gio/gio.h> + +/*** END file-header ***/ + +/*** BEGIN file-production ***/ +/* enumerations from "@filename@" */ +/*** END file-production ***/ + +/*** BEGIN value-header ***/ + +#define ERROR_PREFIX @ENUMNAME@_DBUS_PREFIX +static const GDBusErrorEntry @enum_name@_entries[] = { +/*** END value-header ***/ + +/*** BEGIN value-production ***/ + { @VALUENAME@, ERROR_PREFIX ".@valuenick@" }, +/*** END value-production ***/ + +/*** BEGIN value-tail ***/ +}; +#undef ERROR_PREFIX + +GQuark +@enum_name@_quark (void) +{ + static volatile gsize quark_volatile = 0; + + if (!quark_volatile) + g_dbus_error_register_error_domain ("@enum_name@_quark", + &quark_volatile, + @enum_name@_entries, + G_N_ELEMENTS (@enum_name@_entries)); + + return (GQuark) quark_volatile; +} + +/*** END value-tail ***/ + +/*** BEGIN file-tail ***/ +/*** END file-tail ***/ diff --git a/build-aux/templates/qmi-error-types-template.c b/build-aux/templates/qmi-error-types-template.c index 9d731d26..4c54cfe9 100644 --- a/build-aux/templates/qmi-error-types-template.c +++ b/build-aux/templates/qmi-error-types-template.c @@ -15,11 +15,7 @@ static const G@Type@Value @enum_name@_values[] = { { 0, NULL, NULL } }; -GQuark -@enum_name@_quark (void) -{ - return g_quark_from_static_string ("@enum_name@_quark"); -} +/* @enum_name@_quark() implemented in qmi-errors-quarks.c */ GType @enum_name@_get_type (void) diff --git a/libqmi-glib/Makefile.am b/libqmi-glib/Makefile.am index 9f49b0c1..4de4d3f9 100644 --- a/libqmi-glib/Makefile.am +++ b/libqmi-glib/Makefile.am @@ -24,6 +24,12 @@ qmi-error-types.c: qmi-errors.h qmi-error-types.h $(top_srcdir)/build-aux/templa --template $(top_srcdir)/build-aux/templates/qmi-error-types-template.c \ qmi-errors.h > $@ +qmi-error-quarks.c: qmi-errors.h qmi-error-types.h $(top_srcdir)/build-aux/templates/qmi-error-quarks-template.c + $(AM_V_GEN) $(GLIB_MKENUMS) \ + --fhead "#include \"qmi-errors.h\"\n#include \"qmi-error-types.h\"\n" \ + --template $(top_srcdir)/build-aux/templates/qmi-error-quarks-template.c \ + qmi-errors.h > $@ + # Enum/Flag types ENUMS = qmi-enums.h qmi-enums-wds.h qmi-enums-dms.h qmi-enums-nas.h qmi-enum-types.h: $(ENUMS) $(top_srcdir)/build-aux/templates/qmi-enum-types-template.h @@ -113,7 +119,7 @@ qmi-nas.c: qmi-error-types.h qmi-enum-types.h qmi-flags64-types.h qmi-nas.h libqmi_glib_la_SOURCES = \ libqmi-glib.h \ - qmi-errors.h qmi-error-types.h qmi-error-types.c \ + qmi-errors.h qmi-error-types.h qmi-error-types.c qmi-error-quarks.c \ qmi-enums-wds.h \ qmi-enums-dms.h \ qmi-enums-nas.h \ diff --git a/libqmi-glib/qmi-errors.h b/libqmi-glib/qmi-errors.h index cff53bed..71f72b00 100644 --- a/libqmi-glib/qmi-errors.h +++ b/libqmi-glib/qmi-errors.h @@ -23,6 +23,11 @@ #ifndef _LIBQMI_GLIB_QMI_ERRORS_H_ #define _LIBQMI_GLIB_QMI_ERRORS_H_ +/* Prefixes for errors registered in DBus */ +#define QMI_DBUS_ERROR_PREFIX "org.freedesktop.libqmi.Error" +#define QMI_CORE_ERROR_DBUS_PREFIX QMI_DBUS_ERROR_PREFIX ".Core" +#define QMI_PROTOCOL_ERROR_DBUS_PREFIX QMI_DBUS_ERROR_PREFIX ".Protocol" + /** * QmiCoreError: * @QMI_CORE_ERROR_FAILED: Operation failed. @@ -36,15 +41,15 @@ * * Common errors that may be reported by libqmi-glib. */ -typedef enum { - QMI_CORE_ERROR_FAILED, - QMI_CORE_ERROR_WRONG_STATE, - QMI_CORE_ERROR_TIMEOUT, - QMI_CORE_ERROR_INVALID_ARGS, - QMI_CORE_ERROR_INVALID_MESSAGE, - QMI_CORE_ERROR_TLV_NOT_FOUND, - QMI_CORE_ERROR_TLV_TOO_LONG, - QMI_CORE_ERROR_UNSUPPORTED +typedef enum { /*< underscore_name=qmi_core_error >*/ + QMI_CORE_ERROR_FAILED = 0, /*< nick=Failed >*/ + QMI_CORE_ERROR_WRONG_STATE = 1, /*< nick=WrongState >*/ + QMI_CORE_ERROR_TIMEOUT = 2, /*< nick=Timeout >*/ + QMI_CORE_ERROR_INVALID_ARGS = 3, /*< nick=InvalidArgs >*/ + QMI_CORE_ERROR_INVALID_MESSAGE = 4, /*< nick=InvalidMessage >*/ + QMI_CORE_ERROR_TLV_NOT_FOUND = 5, /*< nick=TlvNotFound >*/ + QMI_CORE_ERROR_TLV_TOO_LONG = 6, /*< nick=TlvTooLong >*/ + QMI_CORE_ERROR_UNSUPPORTED = 7 /*< nick=Unsupported >*/ } QmiCoreError; /** @@ -129,84 +134,84 @@ typedef enum { * * QMI protocol errors. */ -typedef enum { - QMI_PROTOCOL_ERROR_NONE = 0, - QMI_PROTOCOL_ERROR_MALFORMED_MESSAGE = 1, - QMI_PROTOCOL_ERROR_NO_MEMORY = 2, - QMI_PROTOCOL_ERROR_INTERNAL = 3, - QMI_PROTOCOL_ERROR_ABORTED = 4, - QMI_PROTOCOL_ERROR_CLIENT_IDS_EXHAUSTED = 5, - QMI_PROTOCOL_ERROR_UNABORTABLE_TRANSACTION = 6, - QMI_PROTOCOL_ERROR_INVALID_CLIENT_ID = 7, - QMI_PROTOCOL_ERROR_NO_THRESHOLDS_PROVIDED = 8, - QMI_PROTOCOL_ERROR_INVALID_HANDLE = 9, - QMI_PROTOCOL_ERROR_INVALID_PROFILE = 10, - QMI_PROTOCOL_ERROR_INVALID_PIN_ID = 11, - QMI_PROTOCOL_ERROR_INCORRECT_PIN = 12, - QMI_PROTOCOL_ERROR_NO_NETWORK_FOUND = 13, - QMI_PROTOCOL_ERROR_CALL_FAILED = 14, - QMI_PROTOCOL_ERROR_OUT_OF_CALL = 15, - QMI_PROTOCOL_ERROR_NOT_PROVISIONED = 16, - QMI_PROTOCOL_ERROR_MISSING_ARGUMENT = 17, - QMI_PROTOCOL_ERROR_ARGUMENT_TOO_LONG = 19, - QMI_PROTOCOL_ERROR_INVALID_TRANSACTION_ID = 22, - QMI_PROTOCOL_ERROR_DEVICE_IN_USE = 23, - QMI_PROTOCOL_ERROR_NETWORK_UNSUPPORTED = 24, - QMI_PROTOCOL_ERROR_DEVICE_UNSUPPORTED = 25, - QMI_PROTOCOL_ERROR_NO_EFFECT = 26, - QMI_PROTOCOL_ERROR_NO_FREE_PROFILE = 27, - QMI_PROTOCOL_ERROR_INVALID_PDP_TYPE = 28, - QMI_PROTOCOL_ERROR_INVALID_TECHNOLOGY_PREFERENCE = 29, - QMI_PROTOCOL_ERROR_INVALID_PROFILE_TYPE = 30, - QMI_PROTOCOL_ERROR_INVALID_SERVICE_TYPE = 31, - QMI_PROTOCOL_ERROR_INVALID_REGISTER_ACTION = 32, - QMI_PROTOCOL_ERROR_INVALID_PS_ATTACH_ACTION = 33, - QMI_PROTOCOL_ERROR_AUTHENTICATION_FAILED = 34, - QMI_PROTOCOL_ERROR_PIN_BLOCKED = 35, - QMI_PROTOCOL_ERROR_PIN_ALWAYS_BLOCKED = 36, - QMI_PROTOCOL_ERROR_UIM_UNINITIALIZED = 37, - QMI_PROTOCOL_ERROR_MAXIMUM_QOS_REQUESTS_IN_USE = 38, - QMI_PROTOCOL_ERROR_INCORRECT_FLOW_FILTER = 39, - QMI_PROTOCOL_ERROR_NETWORK_QOS_UNAWARE = 40, - QMI_PROTOCOL_ERROR_INVALID_QOS_ID = 41, - QMI_PROTOCOL_ERROR_QOS_UNAVAILABLE = 42, - QMI_PROTOCOL_ERROR_FLOW_SUSPENDED = 43, - QMI_PROTOCOL_ERROR_GENERAL_ERROR = 46, - QMI_PROTOCOL_ERROR_UNKNOWN_ERROR = 47, - QMI_PROTOCOL_ERROR_INVALID_ARGUMENT = 48, - QMI_PROTOCOL_ERROR_INVALID_INDEX = 49, - QMI_PROTOCOL_ERROR_NO_ENTRY = 50, - QMI_PROTOCOL_ERROR_DEVICE_STORAGE_FULL = 51, - QMI_PROTOCOL_ERROR_DEVICE_NOT_READY = 52, - QMI_PROTOCOL_ERROR_NETWORK_NOT_READY = 53, - QMI_PROTOCOL_ERROR_WMS_CAUSE_CODE = 54, - QMI_PROTOCOL_ERROR_WMS_MESSAGE_NOT_SENT = 55, - QMI_PROTOCOL_ERROR_WMS_MESSAGE_DELIVERY_FAILURE = 56, - QMI_PROTOCOL_ERROR_WMS_INVALID_MESSAGE_ID = 57, - QMI_PROTOCOL_ERROR_WMS_ENCODING = 58, - QMI_PROTOCOL_ERROR_AUTHENTICATION_LOCK = 59, - QMI_PROTOCOL_ERROR_INVALID_TRANSITION = 60, - QMI_PROTOCOL_ERROR_SESSION_INACTIVE = 65, - QMI_PROTOCOL_ERROR_SESSION_INVALID = 66, - QMI_PROTOCOL_ERROR_SESSION_OWNERSHIP = 67, - QMI_PROTOCOL_ERROR_INSUFFICIENT_RESOURCES = 68, - QMI_PROTOCOL_ERROR_DISABLED = 69, - QMI_PROTOCOL_ERROR_INVALID_OPERATION = 70, - QMI_PROTOCOL_ERROR_INVALID_QMI_COMMAND = 71, - QMI_PROTOCOL_ERROR_WMS_T_PDU_TYPE = 72, - QMI_PROTOCOL_ERROR_WMS_SMSC_ADDRESS = 73, - QMI_PROTOCOL_ERROR_INFORMATION_UNAVAILABLE = 74, - QMI_PROTOCOL_ERROR_SEGMENT_TOO_LONG = 75, - QMI_PROTOCOL_ERROR_SEGMENT_ORDER = 76, - QMI_PROTOCOL_ERROR_BUNDLING_NOT_SUPPORTED = 77, - QMI_PROTOCOL_ERROR_SIM_FILE_NOT_FOUND = 80, - QMI_PROTOCOL_ERROR_ACCESS_DENIED = 82, - QMI_PROTOCOL_ERROR_HARDWARE_RESTRICTED = 83, - QMI_PROTOCOL_ERROR_CAT_EVENT_REGISTRATION_FAILED = 61441, - QMI_PROTOCOL_ERROR_CAT_INVALID_TERMINAL_RESPONSE = 61442, - QMI_PROTOCOL_ERROR_CAT_INVALID_ENVELOPE_COMMAND = 61443, - QMI_PROTOCOL_ERROR_CAT_ENVELOPE_COMMAND_BUSY = 61444, - QMI_PROTOCOL_ERROR_CAT_ENVELOPE_COMMAND_FAILED = 61445 +typedef enum { /*< underscore_name=qmi_protocol_error >*/ + QMI_PROTOCOL_ERROR_NONE = 0, /*< nick=None >*/ + QMI_PROTOCOL_ERROR_MALFORMED_MESSAGE = 1, /*< nick=MalformedMessage >*/ + QMI_PROTOCOL_ERROR_NO_MEMORY = 2, /*< nick=NoMemory >*/ + QMI_PROTOCOL_ERROR_INTERNAL = 3, /*< nick=Internal >*/ + QMI_PROTOCOL_ERROR_ABORTED = 4, /*< nick=Aborted >*/ + QMI_PROTOCOL_ERROR_CLIENT_IDS_EXHAUSTED = 5, /*< nick=ClientIdsExhausted >*/ + QMI_PROTOCOL_ERROR_UNABORTABLE_TRANSACTION = 6, /*< nick=UnabortableTransaction >*/ + QMI_PROTOCOL_ERROR_INVALID_CLIENT_ID = 7, /*< nick=InvalidClientId >*/ + QMI_PROTOCOL_ERROR_NO_THRESHOLDS_PROVIDED = 8, /*< nick=NoThresholdsProvided >*/ + QMI_PROTOCOL_ERROR_INVALID_HANDLE = 9, /*< nick=InvalidHandle >*/ + QMI_PROTOCOL_ERROR_INVALID_PROFILE = 10, /*< nick=InvalidProfile >*/ + QMI_PROTOCOL_ERROR_INVALID_PIN_ID = 11, /*< nick=InvalidPinId >*/ + QMI_PROTOCOL_ERROR_INCORRECT_PIN = 12, /*< nick=IncorrectPin >*/ + QMI_PROTOCOL_ERROR_NO_NETWORK_FOUND = 13, /*< nick=NoNetworkFound >*/ + QMI_PROTOCOL_ERROR_CALL_FAILED = 14, /*< nick=CallFailed >*/ + QMI_PROTOCOL_ERROR_OUT_OF_CALL = 15, /*< nick=OutOfCall >*/ + QMI_PROTOCOL_ERROR_NOT_PROVISIONED = 16, /*< nick=NotProvisioned >*/ + QMI_PROTOCOL_ERROR_MISSING_ARGUMENT = 17, /*< nick=MissingArgument >*/ + QMI_PROTOCOL_ERROR_ARGUMENT_TOO_LONG = 19, /*< nick=ArgumentTooLong >*/ + QMI_PROTOCOL_ERROR_INVALID_TRANSACTION_ID = 22, /*< nick=InvalidTransactionId >*/ + QMI_PROTOCOL_ERROR_DEVICE_IN_USE = 23, /*< nick=DeviceInUse >*/ + QMI_PROTOCOL_ERROR_NETWORK_UNSUPPORTED = 24, /*< nick=NetworkUnsupported >*/ + QMI_PROTOCOL_ERROR_DEVICE_UNSUPPORTED = 25, /*< nick=DeviceUnsupported >*/ + QMI_PROTOCOL_ERROR_NO_EFFECT = 26, /*< nick=NoEffect >*/ + QMI_PROTOCOL_ERROR_NO_FREE_PROFILE = 27, /*< nick=NoFreeProfile >*/ + QMI_PROTOCOL_ERROR_INVALID_PDP_TYPE = 28, /*< nick=InvalidPdpType >*/ + QMI_PROTOCOL_ERROR_INVALID_TECHNOLOGY_PREFERENCE = 29, /*< nick=InvalidTechnologyPreference >*/ + QMI_PROTOCOL_ERROR_INVALID_PROFILE_TYPE = 30, /*< nick=InvalidProfileType >*/ + QMI_PROTOCOL_ERROR_INVALID_SERVICE_TYPE = 31, /*< nick=InvalidServiceType >*/ + QMI_PROTOCOL_ERROR_INVALID_REGISTER_ACTION = 32, /*< nick=InvalidRegisterAction >*/ + QMI_PROTOCOL_ERROR_INVALID_PS_ATTACH_ACTION = 33, /*< nick=InvalidPsAttachAction >*/ + QMI_PROTOCOL_ERROR_AUTHENTICATION_FAILED = 34, /*< nick=AuthenticationFailed >*/ + QMI_PROTOCOL_ERROR_PIN_BLOCKED = 35, /*< nick=PinBlocked >*/ + QMI_PROTOCOL_ERROR_PIN_ALWAYS_BLOCKED = 36, /*< nick=PinAlwaysBlocked >*/ + QMI_PROTOCOL_ERROR_UIM_UNINITIALIZED = 37, /*< nick=UimUninitialized >*/ + QMI_PROTOCOL_ERROR_MAXIMUM_QOS_REQUESTS_IN_USE = 38, /*< nick=MaximumQosRequestsInUse >*/ + QMI_PROTOCOL_ERROR_INCORRECT_FLOW_FILTER = 39, /*< nick=IncorrectFlowFilter >*/ + QMI_PROTOCOL_ERROR_NETWORK_QOS_UNAWARE = 40, /*< nick= NetworkQosUnaware >*/ + QMI_PROTOCOL_ERROR_INVALID_QOS_ID = 41, /*< nick=InvalidQosId >*/ + QMI_PROTOCOL_ERROR_QOS_UNAVAILABLE = 42, /*< nick=QosUnavailable >*/ + QMI_PROTOCOL_ERROR_FLOW_SUSPENDED = 43, /*< nick=FlowSuspended >*/ + QMI_PROTOCOL_ERROR_GENERAL_ERROR = 46, /*< nick=GeneralError >*/ + QMI_PROTOCOL_ERROR_UNKNOWN_ERROR = 47, /*< nick=UnknownError >*/ + QMI_PROTOCOL_ERROR_INVALID_ARGUMENT = 48, /*< nick=InvalidArgument >*/ + QMI_PROTOCOL_ERROR_INVALID_INDEX = 49, /*< nick=InvalidIndex >*/ + QMI_PROTOCOL_ERROR_NO_ENTRY = 50, /*< nick=NoEntry >*/ + QMI_PROTOCOL_ERROR_DEVICE_STORAGE_FULL = 51, /*< nick=DeviceStorageFull >*/ + QMI_PROTOCOL_ERROR_DEVICE_NOT_READY = 52, /*< nick=DeviceNotReady >*/ + QMI_PROTOCOL_ERROR_NETWORK_NOT_READY = 53, /*< nick=NetworkNotReady >*/ + QMI_PROTOCOL_ERROR_WMS_CAUSE_CODE = 54, /*< nick=Wms.CauseCode >*/ + QMI_PROTOCOL_ERROR_WMS_MESSAGE_NOT_SENT = 55, /*< nick=Wms.MessageNotSent >*/ + QMI_PROTOCOL_ERROR_WMS_MESSAGE_DELIVERY_FAILURE = 56, /*< nick=Wms.MessageDeliveryFailure >*/ + QMI_PROTOCOL_ERROR_WMS_INVALID_MESSAGE_ID = 57, /*< nick=Wms.InvalidMessageId >*/ + QMI_PROTOCOL_ERROR_WMS_ENCODING = 58, /*< nick=Wms.Encoding >*/ + QMI_PROTOCOL_ERROR_AUTHENTICATION_LOCK = 59, /*< nick=AuthenticationLock >*/ + QMI_PROTOCOL_ERROR_INVALID_TRANSITION = 60, /*< nick=InvalidTransaction >*/ + QMI_PROTOCOL_ERROR_SESSION_INACTIVE = 65, /*< nick=SessionInactive >*/ + QMI_PROTOCOL_ERROR_SESSION_INVALID = 66, /*< nick=SessionInvalid >*/ + QMI_PROTOCOL_ERROR_SESSION_OWNERSHIP = 67, /*< nick=SessionOwnership >*/ + QMI_PROTOCOL_ERROR_INSUFFICIENT_RESOURCES = 68, /*< nick=InsufficientResources >*/ + QMI_PROTOCOL_ERROR_DISABLED = 69, /*< nick=Disabled >*/ + QMI_PROTOCOL_ERROR_INVALID_OPERATION = 70, /*< nick=InvalidOperation >*/ + QMI_PROTOCOL_ERROR_INVALID_QMI_COMMAND = 71, /*< nick=InvalidQmiCommand >*/ + QMI_PROTOCOL_ERROR_WMS_T_PDU_TYPE = 72, /*< nick=Wms.TPduType >*/ + QMI_PROTOCOL_ERROR_WMS_SMSC_ADDRESS = 73, /*< nick=Wms.SmscAddress >*/ + QMI_PROTOCOL_ERROR_INFORMATION_UNAVAILABLE = 74, /*< nick=InformationUnavailable >*/ + QMI_PROTOCOL_ERROR_SEGMENT_TOO_LONG = 75, /*< nick=SegmentTooLong >*/ + QMI_PROTOCOL_ERROR_SEGMENT_ORDER = 76, /*< nick=SegmentOrder >*/ + QMI_PROTOCOL_ERROR_BUNDLING_NOT_SUPPORTED = 77, /*< nick=BundlingNotSupported >*/ + QMI_PROTOCOL_ERROR_SIM_FILE_NOT_FOUND = 80, /*< nick=SimFileNotFound >*/ + QMI_PROTOCOL_ERROR_ACCESS_DENIED = 82, /*< nick=AccessDenied >*/ + QMI_PROTOCOL_ERROR_HARDWARE_RESTRICTED = 83, /*< nick=HardwareRestricted >*/ + QMI_PROTOCOL_ERROR_CAT_EVENT_REGISTRATION_FAILED = 61441, /*< nick=Cat.EventRegistrationFailed >*/ + QMI_PROTOCOL_ERROR_CAT_INVALID_TERMINAL_RESPONSE = 61442, /*< nick=Cat.InvalidTerminalResponse >*/ + QMI_PROTOCOL_ERROR_CAT_INVALID_ENVELOPE_COMMAND = 61443, /*< nick=Cat.InvalidEnvelopeCommand >*/ + QMI_PROTOCOL_ERROR_CAT_ENVELOPE_COMMAND_BUSY = 61444, /*< nick=Cat.EnvelopCommandBusy >*/ + QMI_PROTOCOL_ERROR_CAT_ENVELOPE_COMMAND_FAILED = 61445 /*< nick=Cat.EnvelopeCommandFailed >*/ } QmiProtocolError; #endif /* _LIBQMI_GLIB_QMI_ERRORS_H_ */ |