diff options
author | Luiz Augusto von Dentz <luiz.dentz@indt.org.br> | 2008-07-11 16:00:05 -0300 |
---|---|---|
committer | Luiz Augusto von Dentz <luiz.dentz@indt.org.br> | 2008-07-28 10:37:48 -0300 |
commit | 298878a17905e1cf34f284f57da16a5deea123b5 (patch) | |
tree | 6bd3d9deaaba5cb3b3fe4a6eb41dfba40335ba72 /hcid | |
parent | f6b4efed9836b86698cd383769f675ea6bc12365 (diff) |
Remove get_device_name and set_device_name functions.
Diffstat (limited to 'hcid')
-rw-r--r-- | hcid/adapter.c | 68 | ||||
-rw-r--r-- | hcid/hcid.h | 2 | ||||
-rw-r--r-- | hcid/manager.c | 63 |
3 files changed, 58 insertions, 75 deletions
diff --git a/hcid/adapter.c b/hcid/adapter.c index ba313b0a..2dccd6ea 100644 --- a/hcid/adapter.c +++ b/hcid/adapter.c @@ -49,6 +49,7 @@ #include <gdbus.h> #include "hcid.h" +#include "sdpd.h" #include "adapter.h" #include "device.h" @@ -572,11 +573,65 @@ static DBusMessage *set_discoverable_timeout(DBusConnection *conn, return dbus_message_new_method_return(msg); } +static void update_ext_inquiry_response(int dd, struct hci_dev *dev) +{ + uint8_t fec = 0, data[240]; + + if (!(dev->features[6] & LMP_EXT_INQ)) + return; + + memset(data, 0, sizeof(data)); + + if (dev->ssp_mode > 0) + create_ext_inquiry_response((char *) dev->name, data); + + if (hci_write_ext_inquiry_response(dd, fec, data, 2000) < 0) + error("Can't write extended inquiry response: %s (%d)", + strerror(errno), errno); +} + +static int adapter_set_name(struct adapter *adapter, const char *name) +{ + struct hci_dev *dev = &adapter->dev; + int dd, err; + bdaddr_t bdaddr; + + str2ba(adapter->address, &bdaddr); + + write_local_name(&bdaddr, (char *) name); + + if (!adapter->up) + return 0; + + dd = hci_open_dev(adapter->dev_id); + if (dd < 0) { + err = errno; + error("Can't open device hci%d: %s (%d)", + adapter->dev_id, strerror(err), err); + return -err; + } + + if (hci_write_local_name(dd, name, 5000) < 0) { + err = errno; + error("Can't write name for hci%d: %s (%d)", + adapter->dev_id, strerror(err), err); + hci_close_dev(dd); + return -err; + } + + strncpy((char *) dev->name, name, 248); + + update_ext_inquiry_response(dd, dev); + + hci_close_dev(dd); + + return 0; +} + static DBusMessage *set_name(DBusConnection *conn, DBusMessage *msg, const char *name, void *data) { struct adapter *adapter = data; - bdaddr_t bdaddr; int ecode; const char *path; @@ -585,17 +640,10 @@ static DBusMessage *set_name(DBusConnection *conn, DBusMessage *msg, return invalid_args(msg); } - str2ba(adapter->address, &bdaddr); - - write_local_name(&bdaddr, (char *) name); - - if (!adapter->up) - goto done; - - ecode = set_device_name(adapter->dev_id, name); + ecode = adapter_set_name(adapter, name); if (ecode < 0) return failed_strerror(msg, -ecode); -done: + path = dbus_message_get_path(msg); dbus_connection_emit_property_changed(conn, path, diff --git a/hcid/hcid.h b/hcid/hcid.h index 9128d374..58358069 100644 --- a/hcid/hcid.h +++ b/hcid/hcid.h @@ -166,8 +166,6 @@ int get_device_class(uint16_t dev_id, uint8_t *class); int set_device_class(uint16_t dev_id, uint8_t *class); int set_simple_pairing_mode(uint16_t dev_id, uint8_t mode); -int get_device_name(uint16_t dev_id, char *name, size_t size); -int set_device_name(uint16_t dev_id, const char *name); int get_device_alias(uint16_t dev_id, const bdaddr_t *bdaddr, char *alias, size_t size); int set_device_alias(uint16_t dev_id, const bdaddr_t *bdaddr, const char *alias); diff --git a/hcid/manager.c b/hcid/manager.c index adb1455b..2ed7a6e6 100644 --- a/hcid/manager.c +++ b/hcid/manager.c @@ -395,69 +395,6 @@ int set_simple_pairing_mode(uint16_t dev_id, uint8_t mode) return 0; } -int get_device_name(uint16_t dev_id, char *name, size_t size) -{ - struct adapter *adapter = manager_find_adapter_by_id(dev_id); - struct hci_dev *dev = &adapter->dev; - char tmp[249]; - int dd, err; - - memset(tmp, 0, sizeof(tmp)); - - dd = hci_open_dev(dev_id); - if (dd < 0) { - err = errno; - error("Can't open device hci%d: %s (%d)", - dev_id, strerror(err), err); - return -err; - } - - if (hci_read_local_name(dd, sizeof(tmp), tmp, 2000) < 0) { - err = errno; - error("Can't read name for hci%d: %s (%d)", - dev_id, strerror(err), err); - hci_close_dev(dd); - return -err; - } - - hci_close_dev(dd); - - memcpy(dev->name, tmp, 248); - - return snprintf(name, size, "%s", tmp); -} - -int set_device_name(uint16_t dev_id, const char *name) -{ - struct adapter *adapter = manager_find_adapter_by_id(dev_id); - struct hci_dev *dev = &adapter->dev; - int dd, err; - - dd = hci_open_dev(dev_id); - if (dd < 0) { - err = errno; - error("Can't open device hci%d: %s (%d)", - dev_id, strerror(err), err); - return -err; - } - - if (hci_write_local_name(dd, name, 5000) < 0) { - err = errno; - error("Can't write name for hci%d: %s (%d)", - dev_id, strerror(err), err); - hci_close_dev(dd); - return -err; - } - - strncpy((char *) dev->name, name, 248); - - update_ext_inquiry_response(dd, dev); - - hci_close_dev(dd); - - return 0; -} - int get_device_alias(uint16_t dev_id, const bdaddr_t *bdaddr, char *alias, size_t size) { struct adapter *adapter = manager_find_adapter_by_id(dev_id); |