diff options
| author | Marcel Holtmann <marcel@holtmann.org> | 2006-06-17 07:50:12 +0000 | 
|---|---|---|
| committer | Marcel Holtmann <marcel@holtmann.org> | 2006-06-17 07:50:12 +0000 | 
| commit | b1609cb6ebaa241102257152e8eb8f248726035f (patch) | |
| tree | 6534382e2adb22180c285bb49865f0d2421b78e2 | |
| parent | 29a6d660b09d5f277d354b3fbd4f168cd325bf74 (diff) | |
Remove inquiry mode setting
| -rw-r--r-- | hcid/device.c | 32 | ||||
| -rw-r--r-- | hcid/kword.c | 1 | ||||
| -rw-r--r-- | hcid/main.c | 24 | ||||
| -rw-r--r-- | hcid/parser.y | 7 | 
4 files changed, 33 insertions, 31 deletions
| diff --git a/hcid/device.c b/hcid/device.c index b67f87a7..987fa0c0 100644 --- a/hcid/device.c +++ b/hcid/device.c @@ -131,10 +131,26 @@ int remove_device(uint16_t dev_id)  	return 0;  } +static inline uint8_t get_inquiry_mode(struct hci_dev *dev) +{ +	if (dev->manufacturer == 15 && +			dev->hci_rev == 0x09 && dev->lmp_subver == 0x6963) +		return 1; + +	if (dev->features[6] & LMP_EXT_INQ) +		return 2; + +	if (dev->features[3] & LMP_RSSI_INQ) +		return 1; + +	return 0; +} +  int start_device(uint16_t dev_id)  {  	struct hci_dev *dev;  	struct hci_version ver; +	uint8_t features[8], inqmode;  	int dd;  	ASSERT_DEV_ID; @@ -159,6 +175,22 @@ int start_device(uint16_t dev_id)  	dev->lmp_subver = ver.lmp_subver;  	dev->manufacturer = ver.manufacturer; +	if (hci_read_local_features(dd, features, 1000) < 0) { +		error("Can't read features for hci%d: %s (%d)", +					dev_id, strerror(errno), errno); +		return -errno; +	} + +	memcpy(dev->features, features, 8); + +	inqmode = get_inquiry_mode(dev); + +	if (hci_write_inquiry_mode(dd, inqmode, 1000) < 0) { +		error("Can't write inquiry mode for hci%d: %s (%d)", +					dev_id, strerror(errno), errno); +		return -errno; +	} +  	hci_close_dev(dd);  	info("Device hci%d has been activated", dev_id); diff --git a/hcid/kword.c b/hcid/kword.c index 62a946fe..efe4cd13 100644 --- a/hcid/kword.c +++ b/hcid/kword.c @@ -56,7 +56,6 @@ struct kword cfg_keyword[] = {  	{ "name",		K_NAME		},  	{ "class",		K_CLASS		},  	{ "voice",		K_VOICE		}, -	{ "inqmode",		K_INQMODE	},  	{ "pageto",		K_PAGETO	},  	{ "discovto",		K_DISCOVTO	},  	{ "auth",		K_AUTH		}, diff --git a/hcid/main.c b/hcid/main.c index 757d436f..5228f479 100644 --- a/hcid/main.c +++ b/hcid/main.c @@ -389,30 +389,6 @@ static void configure_device(int hdev)  					WRITE_VOICE_SETTING_CP_SIZE, &cp);  	} -	/* Set inquiry mode */ -	if ((device_opts->flags & (1 << HCID_SET_INQMODE))) { -		write_inquiry_mode_cp cp; - -		switch (device_opts->inqmode) { -		case 2: -			if (di.features[6] & LMP_EXT_INQ) { -				cp.mode = 2; -				break; -			} -		case 1: -			if (di.features[3] & LMP_RSSI_INQ) { -				cp.mode = 1; -				break; -			} -		default: -			cp.mode = 0; -			break; -		} - -		hci_send_cmd(s, OGF_HOST_CTL, OCF_WRITE_INQUIRY_MODE, -					WRITE_INQUIRY_MODE_CP_SIZE, &cp); -	} -  	/* Set page timeout */  	if ((device_opts->flags & (1 << HCID_SET_PAGETO))) {  		write_page_timeout_cp cp; diff --git a/hcid/parser.y b/hcid/parser.y index 9d33e448..b13fbb13 100644 --- a/hcid/parser.y +++ b/hcid/parser.y @@ -59,7 +59,7 @@ int yyerror(char *s);  %token K_OPTIONS K_DEVICE  %token K_AUTOINIT K_SECURITY K_PAIRING -%token K_PTYPE K_NAME K_CLASS K_VOICE K_INQMODE K_PAGETO K_LM K_LP K_AUTH K_ENCRYPT K_ISCAN K_PSCAN K_DISCOVTO +%token K_PTYPE K_NAME K_CLASS K_VOICE K_PAGETO K_LM K_LP K_AUTH K_ENCRYPT K_ISCAN K_PSCAN K_DISCOVTO  %token K_PASSKEY  %token K_YES K_NO @@ -189,11 +189,6 @@ device_opt:  				parser_device->voice = $2;  			} -  | K_INQMODE NUM	{ -				parser_device->flags |= (1 << HCID_SET_INQMODE); -				parser_device->inqmode = $2; -			} -    | K_PAGETO NUM	{  				parser_device->flags |= (1 << HCID_SET_PAGETO);  				parser_device->pageto = $2; | 
