summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--hcid/dbus-adapter.c38
-rw-r--r--hcid/dbus-error.c28
-rw-r--r--hcid/dbus-manager.c6
-rw-r--r--hcid/dbus.h7
4 files changed, 50 insertions, 29 deletions
diff --git a/hcid/dbus-adapter.c b/hcid/dbus-adapter.c
index e25d0252..51eed18a 100644
--- a/hcid/dbus-adapter.c
+++ b/hcid/dbus-adapter.c
@@ -72,7 +72,7 @@ static DBusMessage *handle_dev_get_address_req(DBusMessage *msg, void *data)
err = get_device_address(dbus_data->dev_id, str, sizeof(str));
if (err < 0)
- return error_generic(msg, -err);
+ return error_failed(msg, -err);
reply = dbus_message_new_method_return(msg);
if (!reply)
@@ -93,7 +93,7 @@ static DBusMessage *handle_dev_get_version_req(DBusMessage *msg, void *data)
err = get_device_version(dbus_data->dev_id, str, sizeof(str));
if (err < 0)
- return error_generic(msg, -err);
+ return error_failed(msg, -err);
reply = dbus_message_new_method_return(msg);
if (!reply)
@@ -114,7 +114,7 @@ static DBusMessage *handle_dev_get_revision_req(DBusMessage *msg, void *data)
err = get_device_revision(dbus_data->dev_id, str, sizeof(str));
if (err < 0)
- return error_generic(msg, -err);
+ return error_failed(msg, -err);
reply = dbus_message_new_method_return(msg);
if (!reply)
@@ -135,7 +135,7 @@ static DBusMessage *handle_dev_get_manufacturer_req(DBusMessage *msg, void *data
err = get_device_manufacturer(dbus_data->dev_id, str, sizeof(str));
if (err < 0)
- return error_generic(msg, -err);
+ return error_failed(msg, -err);
reply = dbus_message_new_method_return(msg);
if (!reply)
@@ -156,7 +156,7 @@ static DBusMessage *handle_dev_get_company_req(DBusMessage *msg, void *data)
err = get_device_company(dbus_data->dev_id, str, sizeof(str));
if (err < 0)
- return error_generic(msg, -err);
+ return error_failed(msg, -err);
reply = dbus_message_new_method_return(msg);
if (!reply)
@@ -248,7 +248,7 @@ static DBusMessage *handle_dev_set_mode_req(DBusMessage *msg, void *data)
dd = hci_open_dev(dbus_data->dev_id);
if (dd < 0)
- return error_no_such_device(msg);
+ return error_no_such_adapter(msg);
/* Check if the new requested mode is different from the current */
if (current_mode != hci_mode) {
@@ -387,13 +387,13 @@ static DBusMessage *handle_dev_get_minor_class_req(DBusMessage *msg, void *data)
dd = hci_open_dev(dbus_data->dev_id);
if (dd < 0)
- return error_no_such_device(msg);
+ return error_no_such_adapter(msg);
if (hci_read_class_of_dev(dd, cls, 1000) < 0) {
syslog(LOG_ERR, "Can't read class of device on hci%d: %s(%d)",
dbus_data->dev_id, strerror(errno), errno);
hci_close_dev(dd);
- return error_generic(msg, -errno);
+ return error_failed(msg, -errno);
}
hci_close_dev(dd);
@@ -453,7 +453,7 @@ static DBusMessage *handle_dev_set_minor_class_req(DBusMessage *msg, void *data)
dd = hci_open_dev(dbus_data->dev_id);
if (dd < 0)
- return error_no_such_device(msg);
+ return error_no_such_adapter(msg);
if (hci_read_class_of_dev(dd, cls, 1000) < 0) {
syslog(LOG_ERR, "Can't read class of device on hci%d: %s(%d)",
@@ -508,7 +508,7 @@ static DBusMessage *handle_dev_get_service_classes_req(DBusMessage *msg, void *d
dd = hci_open_dev(dbus_data->dev_id);
if (dd < 0)
- return error_no_such_device(msg);
+ return error_no_such_adapter(msg);
if (hci_read_class_of_dev(dd, cls, 1000) < 0) {
syslog(LOG_ERR, "Can't read class of device on hci%d: %s(%d)",
@@ -548,7 +548,7 @@ static DBusMessage *handle_dev_get_name_req(DBusMessage *msg, void *data)
err = get_device_name(dbus_data->dev_id, str, sizeof(str));
if (err < 0)
- return error_generic(msg, -err);
+ return error_failed(msg, -err);
reply = dbus_message_new_method_return(msg);
if (!reply)
@@ -583,7 +583,7 @@ static DBusMessage *handle_dev_set_name_req(DBusMessage *msg, void *data)
err = set_device_name(dbus_data->dev_id, str_ptr);
if (err < 0)
- return error_generic(msg, -err);
+ return error_failed(msg, -err);
reply = dbus_message_new_method_return(msg);
if (!reply)
@@ -686,7 +686,7 @@ static DBusMessage *handle_dev_get_remote_name_req(DBusMessage *msg, void *data)
err = get_device_address(dbus_data->dev_id, addr, sizeof(addr));
if (err < 0)
- return error_generic(msg, -err);
+ return error_failed(msg, -err);
snprintf(filename, PATH_MAX, "%s/%s/names", STORAGEDIR, addr);
@@ -727,7 +727,7 @@ static DBusMessage *handle_dev_get_remote_alias_req(DBusMessage *msg, void *data
err = get_device_alias(dbus_data->dev_id, &bdaddr, str, sizeof(str));
if (err < 0)
- return error_generic(msg, -err);
+ return error_failed(msg, -err);
reply = dbus_message_new_method_return(msg);
if (!reply)
@@ -763,7 +763,7 @@ static DBusMessage *handle_dev_set_remote_alias_req(DBusMessage *msg, void *data
err = set_device_alias(dbus_data->dev_id, &bdaddr, str_ptr);
if (err < 0)
- return error_generic(msg, -err);
+ return error_failed(msg, -err);
signal = dev_signal_factory(dbus_data->dev_id, DEV_SIG_REMOTE_ALIAS_CHANGED,
DBUS_TYPE_STRING, &addr_ptr,
@@ -877,7 +877,7 @@ static DBusMessage *handle_dev_create_bonding_req(DBusMessage *msg, void *data)
dd = hci_open_dev(dev_id);
if (dd < 0)
- return error_no_such_device(msg);
+ return error_no_such_adapter(msg);
cr = malloc(sizeof(*cr) + sizeof(struct hci_conn_info));
if (!cr) {
@@ -938,7 +938,7 @@ static DBusMessage *handle_dev_remove_bonding_req(DBusMessage *msg, void *data)
dd = hci_open_dev(dbus_data->dev_id);
if (dd < 0)
- return error_no_such_device(msg);
+ return error_no_such_adapter(msg);
get_device_address(dbus_data->dev_id, addr, sizeof(addr));
@@ -1139,7 +1139,7 @@ static DBusMessage *handle_dev_discover_req(DBusMessage *msg, void *data)
dd = hci_open_dev(dbus_data->dev_id);
if (dd < 0)
- return error_no_such_device(msg);
+ return error_no_such_adapter(msg);
memset(&cp, 0, sizeof(cp));
cp.lap[0] = lap & 0xff;
@@ -1182,7 +1182,7 @@ static DBusMessage *handle_dev_discover_cancel_req(DBusMessage *msg, void *data)
dd = hci_open_dev(dbus_data->dev_id);
if (dd < 0)
- return error_no_such_device(msg);
+ return error_no_such_adapter(msg);
memset(&rq, 0, sizeof(rq));
rq.ogf = OGF_LINK_CTL;
diff --git a/hcid/dbus-error.c b/hcid/dbus-error.c
index 88e5bd7f..ae8af500 100644
--- a/hcid/dbus-error.c
+++ b/hcid/dbus-error.c
@@ -157,11 +157,23 @@ DBusMessage *bluez_new_failure_msg(DBusMessage *msg, const uint32_t ecode)
return reply;
}
-DBusMessage *error_generic(DBusMessage *msg, int err)
+DBusMessage *error_failed(DBusMessage *msg, int err)
{
const char *str = strerror(err);
- return dbus_message_new_error(msg, ERROR_INTERFACE ".UnknownError", str);
+ return dbus_message_new_error(msg, ERROR_INTERFACE ".Failed", str);
+}
+
+DBusMessage *error_invalid_arguments(DBusMessage *msg)
+{
+ return dbus_message_new_error(msg, ERROR_INTERFACE ".InvalidArguments",
+ "Invalid arguments");
+}
+
+DBusMessage *error_not_authorized(DBusMessage *msg)
+{
+ return dbus_message_new_error(msg, ERROR_INTERFACE ".NotAuthorized",
+ "Not authorized");
}
DBusMessage *error_out_of_memory(DBusMessage *msg)
@@ -170,8 +182,14 @@ DBusMessage *error_out_of_memory(DBusMessage *msg)
"Out of memory");
}
-DBusMessage *error_no_such_device(DBusMessage *msg)
+DBusMessage *error_no_such_adapter(DBusMessage *msg)
+{
+ return dbus_message_new_error(msg, ERROR_INTERFACE ".NoSuchAdapter",
+ "No such adapter");
+}
+
+DBusMessage *error_unknown_address(DBusMessage *msg)
{
- return dbus_message_new_error(msg, ERROR_INTERFACE ".NoSuchDevice",
- "No such device");
+ return dbus_message_new_error(msg, ERROR_INTERFACE ".UnknownAddress",
+ "Device address is unknown");
}
diff --git a/hcid/dbus-manager.c b/hcid/dbus-manager.c
index 6981d9d2..784266fd 100644
--- a/hcid/dbus-manager.c
+++ b/hcid/dbus-manager.c
@@ -50,7 +50,7 @@ static DBusMessage *handle_mgr_list_devices_req(DBusMessage *msg, void *data)
sk = socket(AF_BLUETOOTH, SOCK_RAW, BTPROTO_HCI);
if (sk < 0)
- return error_generic(msg, errno);
+ return error_failed(msg, errno);
dl = malloc(HCI_MAX_DEV * sizeof(*dr) + sizeof(*dl));
if (!dl) {
@@ -62,7 +62,7 @@ static DBusMessage *handle_mgr_list_devices_req(DBusMessage *msg, void *data)
dr = dl->dev_req;
if (ioctl(sk, HCIGETDEVLIST, dl) < 0) {
- reply = error_generic(msg, errno);
+ reply = error_failed(msg, errno);
goto failed;
}
@@ -112,7 +112,7 @@ static DBusMessage *handle_mgr_default_device_req(DBusMessage *msg, void *data)
int default_dev = get_default_dev_id();
if (default_dev < 0)
- return error_no_such_device(msg);
+ return error_no_such_adapter(msg);
reply = dbus_message_new_method_return(msg);
if (!reply)
diff --git a/hcid/dbus.h b/hcid/dbus.h
index 5bcc0f65..99599210 100644
--- a/hcid/dbus.h
+++ b/hcid/dbus.h
@@ -87,9 +87,12 @@ DBusConnection *get_dbus_connection(void);
int get_default_dev_id(void);
-DBusMessage *error_generic(DBusMessage *msg, int err);
+DBusMessage *error_failed(DBusMessage *msg, int err);
+DBusMessage *error_invalid_arguments(DBusMessage *msg);
+DBusMessage *error_not_authorized(DBusMessage *msg);
DBusMessage *error_out_of_memory(DBusMessage *msg);
-DBusMessage *error_no_such_device(DBusMessage *msg);
+DBusMessage *error_no_such_adapter(DBusMessage *msg);
+DBusMessage *error_unknown_address(DBusMessage *msg);
/*========================================================================
BlueZ D-Bus Manager service definitions "/org/bluez/Manager"