diff options
| -rw-r--r-- | tools/hcitool.c | 29 | 
1 files changed, 19 insertions, 10 deletions
| diff --git a/tools/hcitool.c b/tools/hcitool.c index 667212fe..37450098 100644 --- a/tools/hcitool.c +++ b/tools/hcitool.c @@ -447,7 +447,7 @@ static void cmd_info(int dev_id, int argc, char **argv)  		}  		cc = 1;  	} else -		handle = cr->conn_info->handle; +		handle = htobs(cr->conn_info->handle);  	printf("\tBD Address:  %s\n", argv[0]); @@ -721,7 +721,7 @@ static void cmd_dc(int dev_id, int argc, char **argv)  		exit(1);  	} -	if (hci_disconnect(dd, cr->conn_info->handle, HCI_OE_USER_ENDED_CONNECTION, 100) < 0) +	if (hci_disconnect(dd, htobs(cr->conn_info->handle), HCI_OE_USER_ENDED_CONNECTION, 100) < 0)  		perror("Disconnect failed");  	close(dd); @@ -827,6 +827,7 @@ static void cmd_rssi(int dev_id, int argc, char **argv)  	struct hci_request rq;  	read_rssi_rp rp;  	bdaddr_t bdaddr; +	uint16_t handle;  	int opt, dd;  	for_each_opt(opt, rssi_options, NULL) { @@ -871,10 +872,12 @@ static void cmd_rssi(int dev_id, int argc, char **argv)  		exit(1);  	} +	handle = htobs(cr->conn_info->handle); +  	memset(&rq, 0, sizeof(rq));  	rq.ogf    = OGF_STATUS_PARAM;  	rq.ocf    = OCF_READ_RSSI; -	rq.cparam = &cr->conn_info->handle; +	rq.cparam = &handle;  	rq.clen   = 2;  	rq.rparam = &rp;  	rq.rlen   = READ_RSSI_RP_SIZE; @@ -911,6 +914,7 @@ static void cmd_lq(int dev_id, int argc, char **argv)  	struct hci_request rq;  	get_link_quality_rp rp;  	bdaddr_t bdaddr; +	uint16_t handle;  	int opt, dd;  	for_each_opt(opt, lq_options, NULL) { @@ -955,10 +959,12 @@ static void cmd_lq(int dev_id, int argc, char **argv)  		exit(1);  	} +	handle = htobs(cr->conn_info->handle); +  	memset(&rq, 0, sizeof(rq));  	rq.ogf    = OGF_STATUS_PARAM;  	rq.ocf    = OCF_GET_LINK_QUALITY; -	rq.cparam = &cr->conn_info->handle; +	rq.cparam = &handle;  	rq.clen   = 2;  	rq.rparam = &rp;  	rq.rlen   = GET_LINK_QUALITY_RP_SIZE; @@ -1041,7 +1047,7 @@ static void cmd_tpl(int dev_id, int argc, char **argv)  		perror("Get connection info failed");  		exit(1);  	} -	cp.handle = cr->conn_info->handle; +	cp.handle = htobs(cr->conn_info->handle);  	memset(&rq, 0, sizeof(rq));  	rq.ogf    = OGF_HOST_CTL; @@ -1131,7 +1137,7 @@ static void cmd_cpt(int dev_id, int argc, char **argv)  		exit(1);  	} -	cp.handle   = cr->conn_info->handle; +	cp.handle   = htobs(cr->conn_info->handle);  	cp.pkt_type = ptype;  	memset(&rq, 0, sizeof(rq)); @@ -1170,6 +1176,7 @@ static void cmd_lst(int dev_id, int argc, char **argv)  	read_link_supervision_timeout_rp rp;  	write_link_supervision_timeout_cp cp;  	bdaddr_t bdaddr; +	uint16_t handle;  	int opt, dd;  	for_each_opt(opt, lst_options, NULL) { @@ -1214,11 +1221,13 @@ static void cmd_lst(int dev_id, int argc, char **argv)  		exit(1);  	} +	handle = htobs(cr->conn_info->handle); +  	if (argc == 1) {  		memset(&rq, 0, sizeof(rq));  		rq.ogf    = OGF_HOST_CTL;  		rq.ocf    = OCF_READ_LINK_SUPERVISION_TIMEOUT; -		rq.cparam = &cr->conn_info->handle; +		rq.cparam = &handle;  		rq.clen   = 2;  		rq.rparam = &rp;  		rq.rlen   = READ_LINK_SUPERVISION_TIMEOUT_RP_SIZE; @@ -1239,7 +1248,7 @@ static void cmd_lst(int dev_id, int argc, char **argv)  		else  			printf("Link supervision timeout never expires\n");  	} else { -		cp.handle      = cr->conn_info->handle; +		cp.handle      = htobs(cr->conn_info->handle);  		cp.link_sup_to = strtol(argv[1], NULL, 10);  		memset(&rq, 0, sizeof(rq)); @@ -1320,7 +1329,7 @@ static void cmd_auth(int dev_id, int argc, char **argv)  		exit(1);  	} -	cp.handle = cr->conn_info->handle; +	cp.handle = htobs(cr->conn_info->handle);  	memset(&rq, 0, sizeof(rq));  	rq.ogf    = OGF_LINK_CTL; @@ -1402,7 +1411,7 @@ static void cmd_enc(int dev_id, int argc, char **argv)  		exit(1);  	} -	cp.handle = cr->conn_info->handle; +	cp.handle = htobs(cr->conn_info->handle);  	cp.encrypt = (argc > 1) ? atoi(argv[1]) : 1;  	memset(&rq, 0, sizeof(rq)); | 
