--- doc/org.bluez.Device.rst | 1 + src/device.c | 6 ++---- src/error.c | 15 +++++++++++---- src/error.h | 1 + 4 files changed, 15 insertions(+), 8 deletions(-) diff --git a/doc/org.bluez.Device.rst b/doc/org.bluez.Device.rst index d4de78a47239..bf8816332070 100644 --- a/doc/org.bluez.Device.rst +++ b/doc/org.bluez.Device.rst @@ -52,6 +52,7 @@ Possible errors: :org.bluez.Error.ProfileUnavailable: :org.bluez.Error.BrConnectionKeyMissing: :org.bluez.Error.LeConnectionKeyMissing: +:org.bluez.Error.AdapterNotPowered: void Disconnect() ````````````````` diff --git a/src/device.c b/src/device.c index 3bad7fb2c77c..a48f702bb6a9 100644 --- a/src/device.c +++ b/src/device.c @@ -2666,10 +2666,8 @@ static DBusMessage *connect_profiles(struct btd_device *dev, uint8_t bdaddr_type if (dev->pending || dev->connect || dev->browse) return btd_error_in_progress_str(msg, ERR_BREDR_CONN_BUSY); - if (!btd_adapter_get_powered(dev->adapter)) { - return btd_error_not_ready_str(msg, - ERR_BREDR_CONN_ADAPTER_NOT_POWERED); - } + if (!btd_adapter_get_powered(dev->adapter)) + return btd_error_adapter_not_powered(msg); btd_device_set_temporary(dev, false); diff --git a/src/error.c b/src/error.c index 596ea4280991..8f99e274bdcd 100644 --- a/src/error.c +++ b/src/error.c @@ -150,6 +150,13 @@ static DBusMessage *btd_error_le_connection_key_missing(DBusMessage *msg) "LE Link Key missing"); } +DBusMessage *btd_error_adapter_not_powered(DBusMessage *msg) +{ + return g_dbus_create_error(msg, ERROR_INTERFACE + ".AdapterNotPowered", + "Adapter not powered"); +} + DBusMessage *btd_error_failed(DBusMessage *msg, const char *str) { return g_dbus_create_error(msg, ERROR_INTERFACE @@ -168,8 +175,6 @@ static const char *btd_error_str_bredr_conn_from_errno(int errno_code) 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; @@ -201,8 +206,6 @@ static const char *btd_error_str_le_conn_from_errno(int errno_code) switch (-errno_code) { 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; @@ -239,6 +242,8 @@ DBusMessage *btd_error_bredr_conn_from_errno(DBusMessage *msg, int errno_code) switch (-errno_code) { case EBADE: return btd_error_br_connection_key_missing(msg); + case EHOSTUNREACH: + return btd_error_adapter_not_powered(msg); case ENOPROTOOPT: return btd_error_profile_unavailable(msg); default: @@ -252,6 +257,8 @@ DBusMessage *btd_error_le_conn_from_errno(DBusMessage *msg, int errno_code) switch (-errno_code) { case EBADE: return btd_error_le_connection_key_missing(msg); + case EHOSTUNREACH: + return btd_error_adapter_not_powered(msg); default: return btd_error_failed(msg, btd_error_str_le_conn_from_errno(errno_code)); diff --git a/src/error.h b/src/error.h index 96b7a7122457..d51e84ed6679 100644 --- a/src/error.h +++ b/src/error.h @@ -83,6 +83,7 @@ DBusMessage *btd_error_not_ready(DBusMessage *msg); DBusMessage *btd_error_not_ready_str(DBusMessage *msg, const char *str); DBusMessage *btd_error_profile_unavailable(DBusMessage *msg); DBusMessage *btd_error_br_connection_key_missing(DBusMessage *msg); +DBusMessage *btd_error_adapter_not_powered(DBusMessage *msg); DBusMessage *btd_error_failed(DBusMessage *msg, const char *str); DBusMessage *btd_error_bredr_conn_from_errno(DBusMessage *msg, int errno_code); DBusMessage *btd_error_le_conn_from_errno(DBusMessage *msg, int errno_code); -- 2.50.0