コード例 #1
0
ファイル: slogic.c プロジェクト: phar/saleae-logic-libusb
int ezusb_upload_firmware(struct slogic_ctx *handle, int configuration, const char *filename){

        log_printf(DEBUG, "uploading firmware to device on %d.%d\n", libusb_get_bus_number(handle->dev), libusb_get_device_address(handle->dev));
                
        if ((ezusb_reset(handle->device_handle, 1)) < 0)
                return 1;
  
        if (ezusb_install_firmware(handle->device_handle, filename) != 0)
                return 1;

        if ((ezusb_reset(handle->device_handle, 0)) < 0)
                return 1;
        
        return 0;
}
コード例 #2
0
ファイル: ezusb.c プロジェクト: DoctorCannibal/DSView
SR_PRIV int ezusb_upload_firmware(libusb_device *dev, int configuration,
				  const char *filename)
{
	struct libusb_device_handle *hdl;
	int ret;

    sr_info("uploading firmware to device on %d.%d",
		libusb_get_bus_number(dev), libusb_get_device_address(dev));

	if ((ret = libusb_open(dev, &hdl)) < 0) {
        sr_err("failed to open device: %s.", libusb_error_name(ret));
        return SR_ERR;
	}

/*
 * The libusbx darwin backend is broken: it can report a kernel driver being
 * active, but detaching it always returns an error.
 */
#if !defined(__APPLE__)
	if (libusb_kernel_driver_active(hdl, 0) == 1) {
		if ((ret = libusb_detach_kernel_driver(hdl, 0)) < 0) {
            sr_err("failed to detach kernel driver: %s",
					libusb_error_name(ret));
            return SR_ERR;
		}
	}
#endif

	if ((ret = libusb_set_configuration(hdl, configuration)) < 0) {
        sr_err("Unable to set configuration: %s",
				libusb_error_name(ret));
        return SR_ERR;
	}

	if ((ezusb_reset(hdl, 1)) < 0)
        return SR_ERR;

	if (ezusb_install_firmware(hdl, filename) < 0)
        return SR_ERR;

	if ((ezusb_reset(hdl, 0)) < 0)
        return SR_ERR;

	libusb_close(hdl);

    return SR_OK;
}
コード例 #3
0
ファイル: ezusb.c プロジェクト: jfrkuska/sigrok
SR_PRIV int ezusb_upload_firmware(libusb_device *dev, int configuration,
				  const char *filename)
{
	struct libusb_device_handle *hdl;
	int ret;

	sr_info("uploading firmware to device on %d.%d",
		libusb_get_bus_number(dev), libusb_get_device_address(dev));

	if ((ret = libusb_open(dev, &hdl)) < 0) {
		sr_err("failed to open device: %s.", libusb_error_name(ret));
		return SR_ERR;
	}

/* Neither Windows/MinGW nor Darwin/Mac support these libusb-1.0 calls. */
#if !defined(_WIN32) && !defined(__APPLE__)
	if (libusb_kernel_driver_active(hdl, 0)) {
		if ((ret = libusb_detach_kernel_driver(hdl, 0)) < 0) {
			sr_err("failed to detach kernel driver: %s",
					libusb_error_name(ret));
			return SR_ERR;
		}
	}
#endif

	if ((ret = libusb_set_configuration(hdl, configuration)) < 0) {
		sr_err("Unable to set configuration: %s",
				libusb_error_name(ret));
		return SR_ERR;
	}

	if ((ezusb_reset(hdl, 1)) < 0)
		return SR_ERR;

	if (ezusb_install_firmware(hdl, filename) < 0)
		return SR_ERR;

	if ((ezusb_reset(hdl, 0)) < 0)
		return SR_ERR;

	libusb_close(hdl);

	return SR_OK;
}
コード例 #4
0
ファイル: ezusb.c プロジェクト: gsmcmullin/sigrok
int ezusb_upload_firmware(libusb_device *dev, int configuration,
			  const char *filename)
{
	struct libusb_device_handle *hdl;
	int err;

	sr_info("uploading firmware to device on %d.%d",
		  libusb_get_bus_number(dev), libusb_get_device_address(dev));

	if ((err = libusb_open(dev, &hdl)) < 0) {
		sr_warn("failed to open device: %d", err);
		return SR_ERR;
	}

	if (libusb_kernel_driver_active(hdl, 0)) {
		if ((err = libusb_detach_kernel_driver(hdl, 0)) < 0) {
			sr_warn("failed to detach kernel driver: %d", err);
			return SR_ERR;
		}
	}

	if ((err = libusb_set_configuration(hdl, configuration)) < 0) {
		sr_warn("Unable to set configuration: %d", err);
		return SR_ERR;
	}

	if ((ezusb_reset(hdl, 1)) < 0)
		return SR_ERR;

	if (ezusb_install_firmware(hdl, filename) < 0)
		return SR_ERR;

	if ((ezusb_reset(hdl, 0)) < 0)
		return SR_ERR;

	libusb_close(hdl);

	return SR_OK;
}
コード例 #5
0
ファイル: saleae-logic.c プロジェクト: esden/sigrok
int upload_firmware(libusb_device *dev)
{
	struct libusb_device_handle *hdl;
	int err;

	g_message("uploading firmware to device on %d.%d",
			libusb_get_bus_number(dev), libusb_get_device_address(dev));

	err = libusb_open(dev, &hdl);
	if(err != 0)
	{
		g_warning("failed to open device: %d", err);
		return 1;
	}

	err = libusb_set_configuration(hdl, USB_CONFIGURATION);
	if(err != 0)
	{
		g_warning("Unable to set configuration: %d", err);
		return 1;
	}

	if((ezusb_reset(hdl, 1)) < 0)
		return 1;

	if(ezusb_install_firmware(hdl, FIRMWARE) != 0)
		return 1;

	if((ezusb_reset(hdl, 0)) < 0)
		return 1;

	libusb_close(hdl);

	/* remember when the last firmware update was done */
	g_get_current_time(&firmware_updated);

	return 0;
}