hciconfig list commands (patch)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Dear All,

I'd like to offer a small patch to tools/hciconfig.c (and the man page).

Currently, running the command "hciconfig hci0 commands" creates a list of supported codes and their names in this format[1]. It's rather tricky to interpret this format, when trying to discover the command code for a particular named action, because both lists are very long, and run consecutively rather than concurrently.

My patch adds an extra command ""hciconfig hci0 commands_list", which hopefully makes this clearer, emitting output in the format of [2].

I hope this is helpful :-)

If it's necessary to have a legal declaration, then I hereby state for the record that I, Richard Neill, wrote the attached code, and I release it under the GPL 2+.


[1] output of "hciconfig hci0 commands"
------------------------
Commands: Octet 0  = 0xff (Bit 0 1 2 3 4 5 6 7)
          Octet 1  = 0xff (Bit 0 1 2 3 4 5 6 7)
....
'Inquiry' 'Inquiry Cancel' 'Periodic Inquiry Mode'
'Exit Periodic Inquiry Mode' 'Create Connection' 'Disconnect'
'Add SCO Connection' 'Cancel Create Connection'
'Accept Connection Request' 'Reject Connection Request'
....
------------------------


[2] output of "hciconfig hci0 commands_list"
-------------------------
Byte:   Octet:  Bit:    Command:
0x00     0       0      'Inquiry'
0x01     0       1      'Inquiry Cancel'
0x02     0       2      'Periodic Inquiry Mode'
0x03     0       3      'Exit Periodic Inquiry Mode'
0x04     0       4      'Create Connection'
0x05     0       5      'Disconnect'
0x06     0       6      'Add SCO Connection'
0x07     0       7      'Cancel Create Connection'
....
-------------------------


Best wishes,

Richard


P.S. This is my contribution to bluez, so I hope I'm sending the right format to the right place. If I could do this better, I'd welcome feedback off-list.

225a226,228
> .BI commands_list
> Display supported commands in a list format (easier to parse).
> .TP
1119a1120,1155
> static void cmd_commands_list(int ctl, int hdev, char *opt)
> {
> 	uint8_t cmds[64];
> 	char *str;
> 	int i, n, dd;
> 
> 	dd = hci_open_dev(hdev);
> 	if (dd < 0) {
> 		fprintf(stderr, "Can't open device hci%d: %s (%d)\n",
> 						hdev, strerror(errno), errno);
> 		exit(1);
> 	}
> 
> 	if (hci_read_local_commands(dd, cmds, 1000) < 0) {
> 		fprintf(stderr, "Can't read support commands on hci%d: %s (%d)\n",
> 						hdev, strerror(errno), errno);
> 		exit(1);
> 	}
> 
> 	print_dev_hdr(&di);
> 	printf ("\tCommands:\n\tByte:   Octet:  Bit:    Command:\n");
> 	for (i = 0; i < 64; i++) {
> 		if (!cmds[i]){
> 			continue;
> 		}
> 		for (n = 0; n < 8; n++){
> 			if (cmds[i] & (1 << n)){
> 				printf("\t0x%02x    %2d      %2d      '%s'\n",
> 				       (8*i + n), i, n, hci_cmdtostr(8*i + n) ); 
> 			}
> 		}
> 		printf ("\n");
> 	}
> 	hci_close_dev(dd);
> }
> 
1926c1962,1963
< 	{ "commands",	cmd_commands,	0,		"Display supported commands" },
---
> 	{ "commands_list",cmd_commands_list,	0,	"Display supported commands (list format)" },
> 	{ "commands",cmd_commands,	0,		"Display supported commands" },

[Index of Archives]     [Bluez Devel]     [Linux Wireless Networking]     [Linux Wireless Personal Area Networking]     [Linux ATH6KL]     [Linux USB Devel]     [Linux Media Drivers]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux