예제 #1
0
파일: libsub.c 프로젝트: nmaxwell/EE
/*
* Get Version
*/
const struct sub_version* sub_get_version( sub_handle hndl )
{
	uint8_t		rc;
	static struct sub_version sub_ver;

#ifdef LIBUSB_1_0
	sub_ver.dll.major = 1;
	sub_ver.dll.minor = 0;
	sub_ver.dll.micro = 0;
#else
	const struct usb_version* usb_version;
	usb_version = usb_get_version();
	sub_ver.dll.major = usb_version->dll.major;
	sub_ver.dll.minor = usb_version->dll.minor;
	sub_ver.dll.micro = usb_version->dll.micro;
	sub_ver.driver.major = usb_version->driver.major;
	sub_ver.driver.minor = usb_version->driver.minor;
	sub_ver.driver.micro = usb_version->driver.micro;
	sub_ver.driver.nano  = usb_version->driver.nano;
#endif
	sub_ver.dll.nano  = __VER__;

	if(hndl)
	{
        struct get_version_resp_st ver;

		rc=sub_control_request(
			hndl, 
			CTRL_REQ_TRANSFER_DIR_IN|CTRL_REQ_TYPE_VENDOR|CTRL_REQ_RCPT_DEVICE,
			SUB_VENDOR_REQUEST,
			0,
			SUB_WINDEX_VER,
			(char*)&ver, 
			sizeof(ver), 
			10000 );
		if( rc == sizeof(ver) )
		{
			sub_ver.sub_device.micro = ver.micro;
			sub_ver.sub_device.minor = ver.minor;
			sub_ver.sub_device.major = ver.major;
			sub_ver.sub_device.boot  = ver.boot;
			goto fin;
		}
	}

	/* Version unknown */
	memset( &sub_ver.sub_device, 0xFF, sizeof(sub_ver.sub_device) ) ;

fin:
	return &sub_ver;
}
예제 #2
0
static void on_refresh(void)
{
  struct usb_bus *bus;
  struct usb_device *dev;
  const struct usb_version *version;

  edit_printf_init();

  usb_find_devices();

  version = usb_get_version();

  if(version)
    {
      edit_printf("DLL version:\t%d.%d.%d.%d\r\n",
                  version->dll.major, version->dll.minor, 
                  version->dll.micro, version->dll.nano);

      edit_printf("Driver version:\t%d.%d.%d.%d\r\n\r\n",
                  version->driver.major, version->driver.minor, 
                  version->driver.micro, version->driver.nano);
    }

  edit_printf("bus/device  idVendor/idProduct\r\n");

  for (bus = usb_get_busses(); bus; bus = bus->next) {
    for (dev = bus->devices; dev; dev = dev->next) {
      int ret, i;
      char string[256];
      usb_dev_handle *udev;

      edit_printf("%s/%s     %04X/%04X\r\n", bus->dirname, dev->filename,
                  dev->descriptor.idVendor, dev->descriptor.idProduct);
      udev = usb_open(dev);
      
      if (udev) {
        if (dev->descriptor.iManufacturer) {
          ret = usb_get_string_simple(udev, dev->descriptor.iManufacturer,
                                      string, sizeof(string));
          if (ret > 0)
            edit_printf("- Manufacturer : %s\r\n", string);
          else
            edit_printf("- Unable to fetch manufacturer string\r\n");
        }

        if (dev->descriptor.iProduct) {
          ret = usb_get_string_simple(udev, dev->descriptor.iProduct, string,
                                      sizeof(string));
          if (ret > 0)
            edit_printf("- Product      : %s\r\n", string);
          else
            edit_printf("- Unable to fetch product string\r\n");
        }

        if (dev->descriptor.iSerialNumber) {
          ret = usb_get_string_simple(udev, dev->descriptor.iSerialNumber, 
                                      string, sizeof(string));
          if (ret > 0)
            edit_printf("- Serial Number: %s\r\n", string);
          else
            edit_printf("- Unable to fetch serial number string\r\n");
        }

        usb_close (udev);
      }

      if (!dev->config) {
        edit_printf("  Couldn't retrieve descriptors\r\n");
        continue;
      }

      for (i = 0; i < dev->descriptor.bNumConfigurations; i++)
        print_configuration(&dev->config[i]);
    }
  }

  SendMessage(edit_box, WM_SETTEXT, 0, (LPARAM) edit_buffer); 
  edit_printf_free();
}
예제 #3
0
//----------------------------------------------------------------------------
int usbasp_list(void)
{
    char string[256];
    char product[256];
    unsigned char info[4];
    struct usb_bus *bus;
    struct usb_device *dev;
    int usbasp_found;
    const struct usb_version *version;
    
    usb_init();
    
    usb_find_busses();
    usb_find_devices();
#ifdef WIN32        
    version = usb_get_version();

    if (version) {
        printf("libusb-win32 : \n");
        printf("  DLL(libusb0.dll)    version: %d.%d.%d.%d\n",
               version->dll.major, version->dll.minor,
               version->dll.micro, version->dll.nano);
        
        printf("  Driver(libusb0.sys) version: %d.%d.%d.%d\n\n",
               version->driver.major, version->driver.minor,
               version->driver.micro, version->driver.nano);
        
        if (version->dll.major != version->driver.major
            || version->dll.minor != version->driver.minor
            || version->dll.micro != version->driver.micro
            //          || version->dll.nano != version->driver.nano
            )
            printf(" *** Warning : DLL, Driver Version mismatch ***\n");
    }
#endif
    usbasp_found = 0;
    
    for (bus = usb_get_busses(); bus; bus = bus->next) {
        for (dev = bus->devices; dev; dev = dev->next) {
            if (dev->descriptor.idVendor == USBDEV_VENDOR &&
                dev->descriptor.idProduct == USBDEV_PRODUCT)
            {
                usbhandle = usb_open(dev);
                if (usbhandle) {
                    /* yeah, we found something */
                    if (usb_get_string_simple(usbhandle,
                                              dev->descriptor.iSerialNumber,
                                              string, sizeof(string)) < 0) {
                        strcpy(string, "[unknown]");
                    }
                    
                    if (usb_get_string_simple(usbhandle,
                                              dev->descriptor.iProduct,
                                              product, sizeof(product)) < 0) {
                        strcpy(product, "[unnamed product]");
                    }
                    
                    if (usbasp_get_info(info) == 0) {
                        fprintf(stdout,
                                "%s: Found %s, Serial Number: [%s], Firmware version %X.%02X\n",
                                progname, product, string, info[1], info[0]);
                        //  fprintf(stdout, "\t%02X %02X\n", info[2], info[3]);
                    } else {
                        fprintf(stdout,
                                "%s: Found %s, Serial Number: [%s]\n",
                                progname, product, string);
                    }
                    
                    ++usbasp_found;
                    
                    usb_close(usbhandle);
                }
            }
        }
    }
    
    if (!usbasp_found) {
        fprintf(stderr, "%s: did not find any USBasp device \n", progname);
        return -1;
    }
    return usbasp_found;
}
예제 #4
0
QString BuildTab::buildBuildString() {
    const char *qt_compile_version = QT_VERSION_STR;

    #ifdef _GC_SrmDevice_h
        const char *srm_output = "SRM IO Support<br/>";
    #else
        const char *srm_output = "";
    #endif

    #ifdef _GC_PT_D2XX_h
        const char *d2xx_output = "D2XX Support<br/>";
    #else
        const char *d2xx_output = "";
    #endif

    #ifdef GC_HAVE_LIBOAUTH
        const char *oauth_output = "Lib OAUTH Support<br/>";
    #else
        const char *oauth_output = "";
    #endif

    #ifdef GC_HAVE_QWTPLOT3D
        const char *qwtplot3d_output = "QWT Plot 3D Support<br/>";
    #else
        const char *qwtplot3d_output = "";
    #endif

    #ifdef GC_HAVE_KML
        const char *libkml_output = "KML Support<br/>";
    #else
        const char *libkml_output = "";
    #endif

    #ifdef GC_HAVE_ICAL
        const char *libical_output = "iCal support<br/>";
    #else
        const char *libical_output = "";
    #endif

    const char *usbxpress_output = "";
    #ifdef WIN32
        #ifdef GC_HAVE_USBXPRESS
            usbxpress_output = "USBXpress support<br/>";
        #endif
    #endif

    #ifdef GC_HAVE_LIBUSB
        const char *libusb_output = "LIB USB Support<br/>";
        const usb_version *ver = usb_get_version();
        // ver->dll.major
        //libusb_output = "LIB USB: " + ver->dll.major + "." + ver->dll.minor + "<br/>";
    #else
        const char *libusb_output = "";
    #endif

    #ifdef GC_HAVE_VLC
        QString libvlc_output = "VLC: " + QString(libvlc_get_version()) + "<br/>";
    #else
        QString libvlc_output = "";
    #endif

    const char *soap_output = "";

    #if (defined Q_OS_MAC) && (defined GC_HAVE_LION)
        const char *lion_support_output = "Mac OSX Lion Support<br/>";
    #else
        const char *lion_support_output = "";
    #endif

    return tr(
            "<center>"
            "<h2>Build Information</h2>"
            "<p>Build date: %1 %2<br/>"
            "Git Commit:%3<br/>"
            "Qt Build Ver:%4<br/>"
            "Boost Build Ver:%5.%6.%7<br/>"
            "GCC Build Ver:%8.%9.%10<br/>"
            "OS Info:%11<br/>"
            "<hr/>"
            "%12" "%13" "%14" "%15" "%16" "%17"
            "%18" "%19" "%20" "%21" "%22")
            .arg(__DATE__)
            .arg(__TIME__)
            .arg(gitrevision)
            .arg(qt_compile_version)
            .arg(BOOST_VERSION / 100000)
            .arg((BOOST_VERSION / 100) % 1000)
            .arg(BOOST_VERSION % 100)
            .arg(__GNUC__)
            .arg(__GNUC_MINOR__)
            .arg(__GNUC_PATCHLEVEL__)
            .arg(osversion)
            .arg(srm_output)
            .arg(d2xx_output)
            .arg(oauth_output)
            .arg(qwtplot3d_output)
            .arg(libkml_output)
            .arg(libical_output)
            .arg(usbxpress_output)
            .arg(libusb_output)
            .arg(libvlc_output)
            .arg(soap_output)
            .arg(lion_support_output);

}