diff options
| -rw-r--r-- | hcid/hcid.h | 2 | ||||
| -rw-r--r-- | hcid/kword.c | 1 | ||||
| -rw-r--r-- | hcid/main.c | 17 | ||||
| -rw-r--r-- | hcid/parser.y | 7 | 
4 files changed, 22 insertions, 5 deletions
| diff --git a/hcid/hcid.h b/hcid/hcid.h index e275939f..c64016ea 100644 --- a/hcid/hcid.h +++ b/hcid/hcid.h @@ -45,6 +45,7 @@ enum {  	HCID_SET_CLASS,  	HCID_SET_VOICE,  	HCID_SET_INQMODE, +	HCID_SET_PAGETO,  	HCID_SET_PTYPE,  	HCID_SET_LM,  	HCID_SET_LP, @@ -56,6 +57,7 @@ struct device_opts {  	uint32_t class;  	uint16_t voice;  	uint8_t  inqmode; +	uint16_t pageto;  	uint16_t pkt_type;  	uint16_t link_mode;  	uint16_t link_policy; diff --git a/hcid/kword.c b/hcid/kword.c index 51c92e1d..30db2da0 100644 --- a/hcid/kword.c +++ b/hcid/kword.c @@ -61,6 +61,7 @@ struct kword cfg_keyword[] = {  	{ "class",		K_CLASS		},  	{ "voice",		K_VOICE		},  	{ "inqmode",		K_INQMODE	}, +	{ "pageto",		K_PAGETO	},  	{ "auth",		K_AUTH		},  	{ "encrypt",		K_ENCRYPT	},  	{ "pin_helper",		K_PINHELP	}, diff --git a/hcid/main.c b/hcid/main.c index f4736940..57637f3e 100644 --- a/hcid/main.c +++ b/hcid/main.c @@ -229,7 +229,7 @@ static void configure_device(int hdev)  		expand_name(cp.name, sizeof(cp.name), device_opts->name, hdev);  		hci_send_cmd(s, OGF_HOST_CTL, OCF_CHANGE_LOCAL_NAME, -			CHANGE_LOCAL_NAME_CP_SIZE, (void *) &cp); +					CHANGE_LOCAL_NAME_CP_SIZE, &cp);  	}  	/* Set device class */ @@ -239,7 +239,7 @@ static void configure_device(int hdev)  		memcpy(cp.dev_class, &class, 3);  		hci_send_cmd(s, OGF_HOST_CTL, OCF_WRITE_CLASS_OF_DEV, -			WRITE_CLASS_OF_DEV_CP_SIZE, (void *) &cp); +					WRITE_CLASS_OF_DEV_CP_SIZE, &cp);  	}  	/* Set voice setting */ @@ -248,7 +248,7 @@ static void configure_device(int hdev)  		cp.voice_setting = htobl(device_opts->voice);  		hci_send_cmd(s, OGF_HOST_CTL, OCF_WRITE_VOICE_SETTING, -			WRITE_VOICE_SETTING_CP_SIZE, (void *) &cp); +					WRITE_VOICE_SETTING_CP_SIZE, &cp);  	}  	/* Set inquiry mode */ @@ -258,7 +258,16 @@ static void configure_device(int hdev)  		cp.mode = device_opts->inqmode;  		hci_send_cmd(s, OGF_HOST_CTL, OCF_WRITE_INQUIRY_MODE, -			WRITE_INQUIRY_MODE_CP_SIZE, (void *) &cp); +					WRITE_INQUIRY_MODE_CP_SIZE, &cp); +	} + +	/* Set page timeout */ +	if ((device_opts->flags & (1 << HCID_SET_PAGETO))) { +		write_page_timeout_cp cp; + +		cp.timeout = htobs(device_opts->pageto); +		hci_send_cmd(s, OGF_HOST_CTL, OCF_WRITE_PAGE_TIMEOUT, +					WRITE_PAGE_TIMEOUT_CP_SIZE, &cp);  	}  	exit(0); diff --git a/hcid/parser.y b/hcid/parser.y index a0eb13de..7616ab56 100644 --- a/hcid/parser.y +++ b/hcid/parser.y @@ -64,7 +64,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_LM K_LP K_AUTH K_ENCRYPT K_ISCAN K_PSCAN +%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  %token K_PINHELP K_DBUSPINHELP  %token K_YES K_NO @@ -205,6 +205,11 @@ device_opt:  				parser_device->inqmode = $2;  			} +  | K_PAGETO NUM	{ +				parser_device->flags |= (1 << HCID_SET_PAGETO); +				parser_device->pageto = $2; +			} +    | K_AUTH bool		{  				parser_device->auth = $2;  			} | 
