diff options
Diffstat (limited to 'hcid/main.c')
| -rw-r--r-- | hcid/main.c | 47 | 
1 files changed, 22 insertions, 25 deletions
| diff --git a/hcid/main.c b/hcid/main.c index 2022f761..0a6b832f 100644 --- a/hcid/main.c +++ b/hcid/main.c @@ -315,31 +315,6 @@ static void configure_device(int dev_id)  		}  	} -	/* Set default discoverable timeout if not set */ -	if (!(device_opts->flags & (1 << HCID_SET_DISCOVTO))) -		device_opts->discovto = HCID_DEFAULT_DISCOVERABLE_TIMEOUT; - -	/* Set scan mode */ -	if (!read_device_mode(&di.bdaddr, mode, sizeof(mode))) { -		if (!strcmp(mode, MODE_OFF) && hcid.offmode == HCID_OFFMODE_NOSCAN) -			device_opts->scan = SCAN_DISABLED; -		else if (!strcmp(mode, MODE_CONNECTABLE)) -			device_opts->scan = SCAN_PAGE; -		else if (!strcmp(mode, MODE_DISCOVERABLE)) { -			/* Set discoverable only if timeout is 0 */ -			if (!get_discoverable_timeout(dev_id)) -				device_opts->scan = SCAN_PAGE | SCAN_INQUIRY; -			else -				device_opts->scan = SCAN_PAGE; -		} -	} - -	dr.dev_opt = device_opts->scan; -	if (ioctl(dd, HCISETSCAN, (unsigned long) &dr) < 0) { -		error("Can't set scan mode on hci%d: %s (%d)", -				dev_id, strerror(errno), errno); -	} -  	/* Set device name */  	if ((device_opts->flags & (1 << HCID_SET_NAME)) && device_opts->name) {  		change_local_name_cp cp; @@ -408,6 +383,28 @@ static void configure_device(int dev_id)  					WRITE_PAGE_TIMEOUT_CP_SIZE, &cp);  	} +	/* Set default discoverable timeout if not set */ +	if (!(device_opts->flags & (1 << HCID_SET_DISCOVTO))) +		device_opts->discovto = HCID_DEFAULT_DISCOVERABLE_TIMEOUT; + +	/* Set scan mode */ +	if (!read_device_mode(&di.bdaddr, mode, sizeof(mode))) { +		if (!strcmp(mode, MODE_OFF) && hcid.offmode == HCID_OFFMODE_NOSCAN) +			device_opts->scan = SCAN_DISABLED; +		else if (!strcmp(mode, MODE_CONNECTABLE)) +			device_opts->scan = SCAN_PAGE; +		else if (!strcmp(mode, MODE_DISCOVERABLE)) { +			/* Set discoverable only if timeout is 0 */ +			if (!get_discoverable_timeout(dev_id)) +				device_opts->scan = SCAN_PAGE | SCAN_INQUIRY; +			else +				device_opts->scan = SCAN_PAGE; +		} +	} + +	hci_send_cmd(dd, OGF_HOST_CTL, OCF_WRITE_SCAN_ENABLE, 1, +							&device_opts->scan); +  	exit(0);  } | 
