diff --git a/src/adapter.c b/src/adapter.c
index 47df526..2a10bc2 100644
--- a/src/adapter.c
+++ b/src/adapter.c
bdaddr_t bdaddr; /* adapter Bluetooth Address */
uint32_t dev_class; /* Class of Device */
char name[MAX_NAME_LENGTH + 1]; /* adapter name */
+ gboolean allow_name_changes; /* whether the adapter name can be changed */
guint discov_timeout_id; /* discoverable timeout id */
guint stop_discov_id; /* stop inquiry/scanning id */
uint32_t discov_timeout; /* discoverable time(sec) */
{
char *name_ptr;
+ if (adapter->allow_name_changes == FALSE)
+ return -EPERM;
+
if (strncmp(name, adapter->name, MAX_NAME_LENGTH) == 0)
return 0;
* start off as powered */
adapter->up = TRUE;
+ adapter->allow_name_changes = TRUE;
+
adapter_ops->read_bdaddr(adapter->dev_id, &adapter->bdaddr);
if (bacmp(&adapter->bdaddr, BDADDR_ANY) == 0) {
bacpy(bdaddr, &adapter->bdaddr);
}
+void adapter_set_allow_name_changes(struct btd_adapter *adapter,
+ gboolean allow_name_changes)
+{
+ adapter->allow_name_changes = allow_name_changes;
+}
+
static inline void suspend_discovery(struct btd_adapter *adapter)
{
if (adapter->state != STATE_SUSPENDED)
diff --git a/src/adapter.h b/src/adapter.h
index 9516a99..38ea3ca 100644
--- a/src/adapter.h
+++ b/src/adapter.h
struct btd_adapter *adapter_create(DBusConnection *conn, int id);
gboolean adapter_init(struct btd_adapter *adapter);
void adapter_remove(struct btd_adapter *adapter);
+void adapter_set_allow_name_changes(struct btd_adapter *adapter,
+ gboolean allow_name_changes);
uint16_t adapter_get_dev_id(struct btd_adapter *adapter);
const gchar *adapter_get_path(struct btd_adapter *adapter);
void adapter_get_address(struct btd_adapter *adapter, bdaddr_t *bdaddr);