diff options
| author | Johan Hedberg <johan.hedberg@nokia.com> | 2008-11-30 01:09:57 +0200 | 
|---|---|---|
| committer | Johan Hedberg <johan.hedberg@nokia.com> | 2008-11-30 01:09:57 +0200 | 
| commit | eed1a86011aa8f3b17b74380c7e4478a36ea3137 (patch) | |
| tree | 50cac76a39a6d474e0d54d4b8957924de9754119 /src | |
| parent | 24403d166c5a1048ad5a7e997f28a6127d1fb216 (diff) | |
Fix sending the Pairable property
Diffstat (limited to 'src')
| -rw-r--r-- | src/adapter.c | 24 | 
1 files changed, 18 insertions, 6 deletions
| diff --git a/src/adapter.c b/src/adapter.c index db0335f3..e30b9b8e 100644 --- a/src/adapter.c +++ b/src/adapter.c @@ -2591,10 +2591,6 @@ proceed:  					ADAPTER_INTERFACE, "Powered",  					DBUS_TYPE_BOOLEAN, &powered); -	emit_property_changed(connection, adapter->path, -				ADAPTER_INTERFACE, "Pairable", -				DBUS_TYPE_BOOLEAN, &adapter->pairable); -  	load_drivers(adapter);  	load_devices(adapter);  } @@ -2764,7 +2760,7 @@ static void unload_drivers(struct btd_adapter *adapter)  int adapter_stop(struct btd_adapter *adapter)  { -	gboolean powered, discoverable; +	gboolean powered, discoverable, pairable;  	/* cancel pending timeout */  	if (adapter->discov_timeout_id) { @@ -2820,6 +2816,13 @@ int adapter_stop(struct btd_adapter *adapter)  					DBUS_TYPE_BOOLEAN, &discoverable);  	} +	if ((adapter->scan_mode & SCAN_PAGE) && adapter->pairable == TRUE) { +		pairable = FALSE; +		emit_property_changed(connection, adapter->path, +					ADAPTER_INTERFACE, "Pairable", +					DBUS_TYPE_BOOLEAN, &pairable); +	} +  	adapter->up = 0;  	adapter->scan_mode = SCAN_DISABLED;  	adapter->mode = MODE_OFF; @@ -3136,7 +3139,7 @@ void adapter_remove_oor_device(struct btd_adapter *adapter, char *peer_addr)  void adapter_mode_changed(struct btd_adapter *adapter, uint8_t scan_mode)  {  	const gchar *path = adapter_get_path(adapter); -	gboolean powered, discoverable; +	gboolean powered, discoverable, pairable;  	int dd;  	if (adapter->scan_mode == scan_mode) @@ -3149,16 +3152,19 @@ void adapter_mode_changed(struct btd_adapter *adapter, uint8_t scan_mode)  		adapter->mode = MODE_OFF;  		powered = FALSE;  		discoverable = FALSE; +		pairable = FALSE;  		break;  	case SCAN_PAGE:  		adapter->mode = MODE_CONNECTABLE;  		powered = TRUE;  		discoverable = FALSE; +		pairable = adapter->pairable;  		break;  	case (SCAN_PAGE | SCAN_INQUIRY):  		adapter->mode = MODE_DISCOVERABLE;  		powered = TRUE;  		discoverable = TRUE; +		pairable = adapter->pairable;  		if (adapter->discov_timeout != 0)  			adapter_set_discov_timeout(adapter,  						adapter->discov_timeout); @@ -3183,6 +3189,12 @@ void adapter_mode_changed(struct btd_adapter *adapter, uint8_t scan_mode)  					ADAPTER_INTERFACE, "Powered",  					DBUS_TYPE_BOOLEAN, &powered); +	/* If page scanning gets toggled emit the Pairable property */ +	if ((adapter->scan_mode & SCAN_PAGE) != (scan_mode & SCAN_PAGE)) +		emit_property_changed(connection, adapter->path, +					ADAPTER_INTERFACE, "Pairable", +					DBUS_TYPE_BOOLEAN, &pairable); +  	dd = hci_open_dev(adapter->dev_id);  	if (dd < 0) {  		error("HCI device open failed: hci%d", adapter->dev_id); | 
