1#include <stdio.h>
2#include <string.h>
3#include <SupportDefs.h>
4
5struct uhci_td_control_status {
6	uint32	actual_length : 11;
7	uint32	reserved_1 : 6;
8	uint32	bitstuff_error : 1;
9	uint32	crc_timeout : 1;
10	uint32	nak_received : 1;
11	uint32	babble_detected : 1;
12	uint32	data_buffer_error : 1;
13	uint32	stalled : 1;
14	uint32	active : 1;
15	uint32	interrupt_on_complete : 1;
16	uint32	isochronous_select : 1;
17	uint32	low_speed_device : 1;
18	uint32	error_counter : 2;
19	uint32	short_packet_detect : 1;
20	uint32	reserved_2 : 2;
21};
22
23
24int
25main(int argc, char *argv[])
26{
27	if (argc < 2)
28		return 1;
29
30	uint32 value;
31	if (sscanf(argv[1], "%lx", &value) != 1)
32		return 2;
33
34	uhci_td_control_status status;
35	memcpy(&status, &value, sizeof(status));
36
37	printf("value: 0x%08lx\n", value);
38	printf("actual_length: %ld\n", status.actual_length);
39	printf("reserved_1: %ld\n", status.reserved_1);
40	printf("bitstuff_error: %ld\n", status.bitstuff_error);
41	printf("crc_timeout: %ld\n", status.crc_timeout);
42	printf("nak_received: %ld\n", status.nak_received);
43	printf("babble_detected: %ld\n", status.babble_detected);
44	printf("data_buffer_error: %ld\n", status.data_buffer_error);
45	printf("stalled: %ld\n", status.stalled);
46	printf("active: %ld\n", status.active);
47	printf("interrupt_on_complete: %ld\n", status.interrupt_on_complete);
48	printf("isochronous_select: %ld\n", status.isochronous_select);
49	printf("low_speed_device: %ld\n", status.low_speed_device);
50	printf("error_counter: %ld\n", status.error_counter);
51	printf("short_packet_detect: %ld\n", status.short_packet_detect);
52	printf("reserved_2: %ld\n", status.reserved_2);
53
54	return 0;
55}
56