diff options
| author | Johan Hedberg <johan.hedberg@nokia.com> | 2008-11-29 22:32:40 +0200 | 
|---|---|---|
| committer | Johan Hedberg <johan.hedberg@nokia.com> | 2008-11-29 22:32:40 +0200 | 
| commit | 5ae915ef0ebccc9e55f708e56d0edac3a6291cea (patch) | |
| tree | 3cc74bb2c3c95db35518ac7c6082a00f2d9bdb03 | |
| parent | f7fb2ca82aad35d874c73c9d2a35995ccaf8bc85 (diff) | |
Fix adapter_up behavior for offmode=devdown case
| -rw-r--r-- | src/adapter.c | 35 | 
1 files changed, 15 insertions, 20 deletions
| diff --git a/src/adapter.c b/src/adapter.c index b527de67..fc1ed4cf 100644 --- a/src/adapter.c +++ b/src/adapter.c @@ -2590,19 +2590,21 @@ static void adapter_up(struct btd_adapter *adapter, int dd)  	adapter->discov_timeout = get_discoverable_timeout(srcaddr);  	adapter->pairable_timeout = get_pairable_timeout(srcaddr);  	adapter->state = DISCOVER_TYPE_NONE; +	adapter->mode = MODE_CONNECTABLE; +	adapter->scan_mode = SCAN_PAGE; +	powered = TRUE;  	/* Set pairable mode */  	if (read_device_pairable(&adapter->bdaddr, &adapter->pairable) < 0)  		adapter->pairable = TRUE;  	/* Set scan mode */ -	if (read_device_mode(srcaddr, mode, sizeof(mode)) < 0) { -		adapter->mode = MODE_CONNECTABLE; -		adapter->scan_mode = SCAN_PAGE; +	if (read_device_mode(srcaddr, mode, sizeof(mode)) < 0)  		goto proceed; -	} -	if (!strcmp(mode, "off")) { +	if (g_str_equal(mode, "off")) { +		powered = FALSE; +  		if (main_opts.offmode == HCID_OFFMODE_NOSCAN) {  			adapter->mode = MODE_OFF;  			adapter->scan_mode = SCAN_DISABLED; @@ -2613,26 +2615,21 @@ static void adapter_up(struct btd_adapter *adapter, int dd)  			}  			if (read_on_mode(srcaddr, mode, sizeof(mode)) < 0) -				write_device_mode(&adapter->bdaddr, mode); -			else  				write_device_mode(&adapter->bdaddr,  							"connectable"); +			else +				write_device_mode(&adapter->bdaddr, mode);  			adapter_up(adapter, dd); + +			return;  		} -	} else if (!strcmp(mode, "connectable")) { -		adapter->mode = MODE_CONNECTABLE; -		adapter->scan_mode = SCAN_PAGE; -	} else { +	} else if (!g_str_equal(mode, "connectable") && +			adapter->discov_timeout == 0) {  		/* Set discoverable only if timeout is 0 */ -		if (adapter->discov_timeout == 0) { -			adapter->mode = adapter->pairable ? +		adapter->mode = adapter->pairable ?  					MODE_LIMITED : MODE_DISCOVERABLE; -			adapter->scan_mode = SCAN_PAGE | SCAN_INQUIRY; -		} else { -			adapter->mode = MODE_CONNECTABLE; -			adapter->scan_mode = SCAN_PAGE; -		} +		adapter->scan_mode = SCAN_PAGE | SCAN_INQUIRY;  	}  proceed: @@ -2660,8 +2657,6 @@ proceed:  	}  	g_free(cl); -	powered = adapter->scan_mode == SCAN_DISABLED ? FALSE : TRUE; -  	emit_property_changed(connection, adapter->path, ADAPTER_INTERFACE,  				"Powered", DBUS_TYPE_BOOLEAN, &powered); | 
