diff options
| author | Johan Hedberg <johan.hedberg@nokia.com> | 2008-11-29 16:10:35 +0200 | 
|---|---|---|
| committer | Johan Hedberg <johan.hedberg@nokia.com> | 2008-11-29 16:10:35 +0200 | 
| commit | c1f2c30ff5461cf5b3fca3d96c8425df2769e565 (patch) | |
| tree | 50c068d00b2e51c498ca6a73ea574d0cf0d6be4f | |
| parent | 8e7a46183e4f251f2b62876eaefe066603dda1aa (diff) | |
adapter_up() cleanup
| -rw-r--r-- | src/adapter.c | 78 | 
1 files changed, 37 insertions, 41 deletions
| diff --git a/src/adapter.c b/src/adapter.c index 5f58b2ab..c6ab4e65 100644 --- a/src/adapter.c +++ b/src/adapter.c @@ -2520,53 +2520,49 @@ static void adapter_up(struct btd_adapter *adapter, int dd)  		adapter->pairable = TRUE;  	/* Set scan mode */ -	if (read_device_mode(srcaddr, mode, sizeof(mode)) == 0) { -		if (!strcmp(mode, "off")) { -			if (main_opts.offmode == HCID_OFFMODE_NOSCAN) { -				adapter->mode = MODE_OFF; -				adapter->scan_mode= SCAN_DISABLED; -			} else if (main_opts.offmode == HCID_OFFMODE_DEVDOWN) { -				static gboolean restore_on_mode = FALSE; - -				if (!restore_on_mode) { -					ioctl(dd, HCIDEVDOWN, adapter->dev_id); -					restore_on_mode = TRUE; -					return; -				} - -				if (read_on_mode(srcaddr, mode, sizeof(mode)) < 0) -					write_device_mode(&adapter->bdaddr, mode); -				else -					write_device_mode(&adapter->bdaddr, "connectable"); - -				adapter_up(adapter, dd); +	if (read_device_mode(srcaddr, mode, sizeof(mode)) < 0) { +		adapter->mode = MODE_CONNECTABLE; +		adapter->scan_mode = SCAN_PAGE; +		goto proceed; +	} + +	if (!strcmp(mode, "off")) { +		if (main_opts.offmode == HCID_OFFMODE_NOSCAN) { +			adapter->mode = MODE_OFF; +			adapter->scan_mode= SCAN_DISABLED; +		} else if (main_opts.offmode == HCID_OFFMODE_DEVDOWN) { +			static gboolean restore_on_mode = FALSE; + +			if (!restore_on_mode) { +				ioctl(dd, HCIDEVDOWN, adapter->dev_id); +				restore_on_mode = TRUE; +				return;  			} -		} else if (!strcmp(mode, "connectable")) { + +			if (read_on_mode(srcaddr, mode, sizeof(mode)) < 0) +				write_device_mode(&adapter->bdaddr, mode); +			else +				write_device_mode(&adapter->bdaddr, +							"connectable"); + +			adapter_up(adapter, dd); +		} +	} else if (!strcmp(mode, "connectable")) { +		adapter->mode = MODE_CONNECTABLE; +		adapter->scan_mode = SCAN_PAGE; +	} else { +		/* Set discoverable only if timeout is 0 */ +		if (adapter->discov_timeout == 0) { +			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; -		} else if (!strcmp(mode, "discoverable")) { -			/* Set discoverable only if timeout is 0 */ -			if (adapter->discov_timeout == 0) { -				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; -			} -		} else if (!strcmp(mode, "limited")) { -			/* Set discoverable only if timeout is 0 */ -			if (adapter->discov_timeout == 0) { -				adapter->mode = MODE_LIMITED; -				adapter->scan_mode = SCAN_PAGE | SCAN_INQUIRY; -			} else { -				adapter->mode = MODE_CONNECTABLE; -				adapter->scan_mode = SCAN_PAGE; - -			}  		}  	} +proceed:  	hci_send_cmd(dd, OGF_HOST_CTL, OCF_WRITE_SCAN_ENABLE,  					1, &adapter->scan_mode); | 
