mirror of git://git.sysmocom.de/ofono
dbus: Add __ofono_error_from_error utility function
This commit is contained in:
parent
21369944ad
commit
07a2e70283
42
src/dbus.c
42
src/dbus.c
|
@ -32,6 +32,21 @@
|
|||
|
||||
static DBusConnection *g_connection;
|
||||
|
||||
struct error_mapping_entry {
|
||||
int error;
|
||||
DBusMessage *(*ofono_error_func)(DBusMessage *);
|
||||
};
|
||||
|
||||
struct error_mapping_entry cme_errors_mapping[] = {
|
||||
{ 3, __ofono_error_not_allowed },
|
||||
{ 4, __ofono_error_not_supported },
|
||||
{ 16, __ofono_error_incorrect_password },
|
||||
{ 30, __ofono_error_not_registered },
|
||||
{ 31, __ofono_error_timed_out },
|
||||
{ 32, __ofono_error_access_denied },
|
||||
{ 50, __ofono_error_invalid_args },
|
||||
};
|
||||
|
||||
static void append_variant(DBusMessageIter *iter,
|
||||
int type, void *value)
|
||||
{
|
||||
|
@ -388,6 +403,33 @@ DBusMessage *__ofono_error_not_allowed(DBusMessage *msg)
|
|||
"Operation is not allowed");
|
||||
}
|
||||
|
||||
DBusMessage *__ofono_error_from_error(const struct ofono_error *error,
|
||||
DBusMessage *msg)
|
||||
{
|
||||
struct error_mapping_entry *e;
|
||||
int maxentries;
|
||||
int i;
|
||||
|
||||
switch (error->type) {
|
||||
case OFONO_ERROR_TYPE_CME:
|
||||
e = cme_errors_mapping;
|
||||
maxentries = sizeof(cme_errors_mapping) /
|
||||
sizeof(struct error_mapping_entry);
|
||||
for (i = 0; i < maxentries; i++)
|
||||
if (e[i].error == error->error)
|
||||
return e[i].ofono_error_func(msg);
|
||||
break;
|
||||
case OFONO_ERROR_TYPE_CMS:
|
||||
return __ofono_error_failed(msg);
|
||||
case OFONO_ERROR_TYPE_CEER:
|
||||
return __ofono_error_failed(msg);
|
||||
default:
|
||||
return __ofono_error_failed(msg);
|
||||
}
|
||||
|
||||
return __ofono_error_failed(msg);
|
||||
}
|
||||
|
||||
void __ofono_dbus_pending_reply(DBusMessage **msg, DBusMessage *reply)
|
||||
{
|
||||
DBusConnection *conn = ofono_dbus_get_connection();
|
||||
|
|
|
@ -66,6 +66,9 @@ DBusMessage *__ofono_error_emergency_active(DBusMessage *msg);
|
|||
DBusMessage *__ofono_error_incorrect_password(DBusMessage *msg);
|
||||
DBusMessage *__ofono_error_not_allowed(DBusMessage *msg);
|
||||
|
||||
DBusMessage *__ofono_error_from_error(const struct ofono_error *error,
|
||||
DBusMessage *msg);
|
||||
|
||||
void __ofono_dbus_pending_reply(DBusMessage **msg, DBusMessage *reply);
|
||||
|
||||
gboolean __ofono_dbus_valid_object_path(const char *path);
|
||||
|
|
Loading…
Reference in New Issue