Date: Sat, 27 Jun 2009 18:17:31 GMT From: Sylvestre Gallon <syl@FreeBSD.org> To: Perforce Change Reviews <perforce@FreeBSD.org> Subject: PERFORCE change 165326 for review Message-ID: <200906271817.n5RIHVn3069526@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=165326 Change 165326 by syl@syl_atuin on 2009/06/27 18:16:31 Add trace. Update the code to open the first memory stick device. Affected files ... .. //depot/projects/soc2009/syl_usb/libusb-tests/transfers/test3/test3.c#4 edit Differences ... ==== //depot/projects/soc2009/syl_usb/libusb-tests/transfers/test3/test3.c#4 (text+ko) ==== @@ -57,6 +57,7 @@ { int transferred = 0; + printf("do_io\n"); libusb_bulk_transfer(devh, ep, buff, len, &transferred, timeout); while(!transferred); } @@ -67,6 +68,7 @@ umass_bbb_cbw_t cbw; umass_bbb_csw_t csw; + printf("do_msc\n"); bzero(&cbw, sizeof(cbw)); USETDW(cbw.dCBWSignature, CBWSIGNATURE); @@ -95,6 +97,7 @@ { static uint8_t cmd[10]; + printf("do_read\n"); cmd[0] = 0x28; len /= 512; @@ -111,6 +114,11 @@ int main(int ac, char *av[]) { volatile int transferred; + libusb_device **devs_list; + libusb_device_descriptor ddesc; + int found = 0; + int ret; + int i; printf("this test dump the 512 first byte of a memory stick\n"); if (libusb_init(&ctx) != 0) { @@ -118,32 +126,62 @@ return (EXIT_FAILURE); } - transferred = 0; - if ((devh = libusb_open_device_with_vid_pid(ctx, VID_TEST, PID_TEST)) != NULL) { - libusb_detach_kernel_driver(devh, 1); - libusb_clear_halt(devh, EP_IN); - libusb_clear_halt(devh, EP_OUT); + if ((ret = libusb_get_device_list(ctx, &devs_list)) < 0 ) { + fprintf(stderr, "libusb_get_device_list failed with 0x%x error code\n", + ret); + return (EXIT_FAILURE); + } + + if (ret == 0) { + fprintf(stderr, "No device match or lack of permissions.\n"); + return (EXIT_SUCCESS); + } + + for (i = 0 ; i < ret ; i++) { + libusb_get_device_descriptor(devs_list[i], &ddesc); + if (ddesc.bDeviceClass == 0x00) { + printf("found device %i\n", i); + found = i; + break ; + } + } + + if (!found) { + printf("No USB stick found\n"); + return (EXIT_FAILURE); + } + + libusb_open(devs_list[found], &devh); + libusb_detach_kernel_driver(devh, 1); + + libusb_clear_halt(devh, EP_IN); + libusb_clear_halt(devh, EP_OUT); - do_msc_req(mode_sense_6, sizeof(mode_sense_6),0xc); - do_msc_req(request_sense, sizeof(request_sense), 0x12); - do_msc_req(read_capacity, sizeof(read_capacity), 0x8); - do_msc_req(request_sense, sizeof(request_sense), 0x12); - do_msc_req(read_capacity, sizeof(read_capacity), 0x8); - do_msc_req(request_sense, sizeof(request_sense), 0x12); - do_msc_req(test_unit_ready, sizeof(test_unit_ready), 0xd); - do_msc_req(test_unit_ready, sizeof(test_unit_ready), 0xd); - do_msc_req(request_sense, sizeof(request_sense), 0x12); - do_msc_req(test_unit_ready, sizeof(test_unit_ready), 0xd); - do_msc_req(request_sense, sizeof(request_sense), 0x12); - do_msc_req(test_unit_ready, sizeof(test_unit_ready), 0xd); - do_msc_req(test_unit_ready, sizeof(test_unit_ready), 0xd); - do_msc_req(test_unit_ready, sizeof(test_unit_ready), 0xd); - do_msc_req(request_sense, sizeof(request_sense), 0x12); - do_msc_req(test_unit_ready, sizeof(test_unit_ready), 0xd); - do_msc_req(read_capacity, sizeof(read_capacity), 0x8); + do_msc_req(mode_sense_6, sizeof(mode_sense_6),0xc); + do_msc_req(request_sense, sizeof(request_sense), 0x12); + do_msc_req(read_capacity, sizeof(read_capacity), 0x8); + do_msc_req(request_sense, sizeof(request_sense), 0x12); + do_msc_req(read_capacity, sizeof(read_capacity), 0x8); + do_msc_req(request_sense, sizeof(request_sense), 0x12); + do_msc_req(test_unit_ready, sizeof(test_unit_ready), 0xd); + do_msc_req(test_unit_ready, sizeof(test_unit_ready), 0xd); + do_msc_req(request_sense, sizeof(request_sense), 0x12); + do_msc_req(test_unit_ready, sizeof(test_unit_ready), 0xd); + do_msc_req(request_sense, sizeof(request_sense), 0x12); + do_msc_req(test_unit_ready, sizeof(test_unit_ready), 0xd); + do_msc_req(test_unit_ready, sizeof(test_unit_ready), 0xd); + do_msc_req(test_unit_ready, sizeof(test_unit_ready), 0xd); + do_msc_req(request_sense, sizeof(request_sense), 0x12); + do_msc_req(test_unit_ready, sizeof(test_unit_ready), 0xd); + do_msc_req(read_capacity, sizeof(read_capacity), 0x8); - do_read(0, BLOCK_SIZE); + do_read(0, BLOCK_SIZE); + for (i = 0 ; i < BLOCK_SIZE ; i++) { + if (i != 0 && (i % 0x10) == 0) + printf("\n"); + printf("0.2x ", buffer[i]); } + printf("\n"); return (EXIT_SUCCESS); }
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200906271817.n5RIHVn3069526>