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)
{
"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();
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);