Blob: error.c
Blob id: e61baeef792834816800716cb00674756b2bc3a7
Size: 5.7 KB
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 | // SPDX-License-Identifier: GPL-2.0-or-later /* * * BlueZ - Bluetooth protocol stack for Linux * * Copyright (C) 2006-2010 Nokia Corporation * Copyright (C) 2004-2010 Marcel Holtmann <marcel@holtmann.org> * Copyright (C) 2007-2008 Fabien Chevalier <fabchevalier@free.fr> * * */ #ifdef HAVE_CONFIG_H #include <config.h> #endif #include <errno.h> #include <stdio.h> #include "gdbus/gdbus.h" #include "error.h" DBusMessage *btd_error_invalid_args(DBusMessage *msg) { return btd_error_invalid_args_str(msg, "Invalid arguments in method call"); } DBusMessage *btd_error_invalid_args_str(DBusMessage *msg, const char *str) { return g_dbus_create_error(msg, ERROR_INTERFACE ".InvalidArguments", "%s", str); } DBusMessage *btd_error_busy(DBusMessage *msg) { return g_dbus_create_error(msg, ERROR_INTERFACE ".InProgress", "Operation already in progress"); } DBusMessage *btd_error_already_exists(DBusMessage *msg) { return g_dbus_create_error(msg, ERROR_INTERFACE ".AlreadyExists", "Already Exists"); } DBusMessage *btd_error_not_supported(DBusMessage *msg) { return g_dbus_create_error(msg, ERROR_INTERFACE ".NotSupported", "Operation is not supported"); } DBusMessage *btd_error_not_connected(DBusMessage *msg) { return g_dbus_create_error(msg, ERROR_INTERFACE ".NotConnected", "Not Connected"); } DBusMessage *btd_error_already_connected(DBusMessage *msg) { return g_dbus_create_error(msg, ERROR_INTERFACE ".AlreadyConnected", "Already Connected"); } DBusMessage *btd_error_in_progress(DBusMessage *msg) { return g_dbus_create_error(msg, ERROR_INTERFACE ".InProgress", "In Progress"); } DBusMessage *btd_error_in_progress_str(DBusMessage *msg, const char *str) { return g_dbus_create_error(msg, ERROR_INTERFACE ".InProgress", "%s", str); } DBusMessage *btd_error_not_available(DBusMessage *msg) { return g_dbus_create_error(msg, ERROR_INTERFACE ".NotAvailable", "Operation currently not available"); } DBusMessage *btd_error_not_available_str(DBusMessage *msg, const char *str) { return g_dbus_create_error(msg, ERROR_INTERFACE ".NotAvailable", "%s", str); } DBusMessage *btd_error_does_not_exist(DBusMessage *msg) { return g_dbus_create_error(msg, ERROR_INTERFACE ".DoesNotExist", "Does Not Exist"); } DBusMessage *btd_error_not_authorized(DBusMessage *msg) { return g_dbus_create_error(msg, ERROR_INTERFACE ".NotAuthorized", "Operation Not Authorized"); } DBusMessage *btd_error_not_permitted(DBusMessage *msg, const char *str) { return g_dbus_create_error(msg, ERROR_INTERFACE ".NotPermitted", "%s", str); } DBusMessage *btd_error_no_such_adapter(DBusMessage *msg) { return g_dbus_create_error(msg, ERROR_INTERFACE ".NoSuchAdapter", "No such adapter"); } DBusMessage *btd_error_agent_not_available(DBusMessage *msg) { return g_dbus_create_error(msg, ERROR_INTERFACE ".AgentNotAvailable", "Agent Not Available"); } DBusMessage *btd_error_not_ready(DBusMessage *msg) { return g_dbus_create_error(msg, ERROR_INTERFACE ".NotReady", "Resource Not Ready"); } DBusMessage *btd_error_not_ready_str(DBusMessage *msg, const char *str) { return g_dbus_create_error(msg, ERROR_INTERFACE ".NotReady", "%s", str); } DBusMessage *btd_error_profile_unavailable(DBusMessage *msg) { return g_dbus_create_error(msg, ERROR_INTERFACE_BREDR ".ProfileUnavailable", "No more profiles to connect to"); } DBusMessage *btd_error_failed(DBusMessage *msg, const char *str) { return g_dbus_create_error(msg, ERROR_INTERFACE ".Failed", "%s", str); } static const char *btd_error_bredr_str(int err) { switch (-err) { case EALREADY: case EISCONN: return ERR_BREDR_CONN_ALREADY_CONNECTED; case EHOSTDOWN: return ERR_BREDR_CONN_PAGE_TIMEOUT; case EIO: return ERR_BREDR_CONN_CREATE_SOCKET; case EINVAL: return ERR_BREDR_CONN_INVALID_ARGUMENTS; case EHOSTUNREACH: return ERR_BREDR_CONN_ADAPTER_NOT_POWERED; case EOPNOTSUPP: case EPROTONOSUPPORT: return ERR_BREDR_CONN_NOT_SUPPORTED; case EBADFD: return ERR_BREDR_CONN_BAD_SOCKET; case ENOMEM: return ERR_BREDR_CONN_MEMORY_ALLOC; case EBUSY: return ERR_BREDR_CONN_BUSY; case EMLINK: return ERR_BREDR_CONN_CNCR_CONNECT_LIMIT; case ETIMEDOUT: return ERR_BREDR_CONN_TIMEOUT; case ECONNREFUSED: return ERR_BREDR_CONN_REFUSED; case ECONNRESET: return ERR_BREDR_CONN_ABORT_BY_REMOTE; case ECONNABORTED: return ERR_BREDR_CONN_ABORT_BY_LOCAL; case EPROTO: return ERR_BREDR_CONN_LMP_PROTO_ERROR; case EBADE: return ERR_BREDR_CONN_KEY_MISSING; default: return ERR_BREDR_CONN_UNKNOWN; } } static const char *btd_error_le_str(int err) { switch (-err) { case EINVAL: return ERR_LE_CONN_INVALID_ARGUMENTS; case EHOSTUNREACH: return ERR_LE_CONN_ADAPTER_NOT_POWERED; case EOPNOTSUPP: case EPROTONOSUPPORT: return ERR_LE_CONN_NOT_SUPPORTED; case EALREADY: case EISCONN: return ERR_LE_CONN_ALREADY_CONNECTED; case EBADFD: return ERR_LE_CONN_BAD_SOCKET; case ENOMEM: return ERR_LE_CONN_MEMORY_ALLOC; case EBUSY: return ERR_LE_CONN_BUSY; case ECONNREFUSED: return ERR_LE_CONN_REFUSED; case EIO: return ERR_LE_CONN_CREATE_SOCKET; case ETIMEDOUT: return ERR_LE_CONN_TIMEOUT; case EMLINK: return ERR_LE_CONN_SYNC_CONNECT_LIMIT; case ECONNRESET: return ERR_LE_CONN_ABORT_BY_REMOTE; case ECONNABORTED: return ERR_LE_CONN_ABORT_BY_LOCAL; case EPROTO: return ERR_LE_CONN_LL_PROTO_ERROR; case EBADE: return ERR_LE_CONN_KEY_MISSING; default: return ERR_LE_CONN_UNKNOWN; } } DBusMessage *btd_error_bredr_errno(DBusMessage *msg, int err) { switch (err) { case ENOPROTOOPT: return btd_error_profile_unavailable(msg); default: return btd_error_failed(msg, btd_error_bredr_str(err)); } } DBusMessage *btd_error_le_errno(DBusMessage *msg, int err) { return btd_error_failed(msg, btd_error_le_str(err)); } |