Beispiel #1
0
static int hw_init(const char *deviceinfo)
{
	struct sr_device_instance *sdi;

	/* Avoid compiler warnings. */
	(void)deviceinfo;

	sdi = sr_device_instance_new(0, SR_ST_ACTIVE, DEMONAME, NULL, NULL);
	if (!sdi) {
		sr_err("demo: %s: sr_device_instance_new failed", __func__);
		return 0;
	}

	device_instances = g_slist_append(device_instances, sdi);

	return 1;
}
Beispiel #2
0
static int hw_opendev(int device_index)
{
	struct sr_device_instance *sdi;

	sdi = sr_device_instance_new(device_index, SR_ST_INITIALIZING,
		NULL, NULL, NULL);
	if (!sdi)
		return SR_ERR;

	if (!(sdi->priv = g_try_malloc0(sizeof(struct session_vdevice)))) {
		sr_err("session: %s: sdi->priv malloc failed", __func__);
		return SR_ERR_MALLOC;
	}

	device_instances = g_slist_append(device_instances, sdi);

	return SR_OK;
}
Beispiel #3
0
static int hw_init(const char *deviceinfo)
{
	struct sr_device_instance *sdi;
	struct libusb_device_descriptor des;
	struct fx2_profile *fx2_prof;
	struct fx2_device *fx2;
	libusb_device **devlist;
	int err, devcnt, i, j;

	/* Avoid compiler warnings. */
	(void)deviceinfo;

	if (libusb_init(&usb_context) != 0) {
		sr_warn("Failed to initialize USB.");
		return 0;
	}

	/* Find all Saleae Logic devices and upload firmware to all of them. */
	devcnt = 0;
	libusb_get_device_list(usb_context, &devlist);
	for (i = 0; devlist[i]; i++) {
		fx2_prof = NULL;
		err = libusb_get_device_descriptor(devlist[i], &des);
		if (err != 0) {
			sr_warn("failed to get device descriptor: %d", err);
			continue;
		}

		for (j = 0; supported_fx2[j].orig_vid; j++) {
			if (des.idVendor == supported_fx2[j].orig_vid
				&& des.idProduct == supported_fx2[j].orig_pid) {
				fx2_prof = &supported_fx2[j];
				break;
			}
		}
		if (!fx2_prof)
			/* not a supported VID/PID */
			continue;

		sdi = sr_device_instance_new(devcnt, SR_ST_INITIALIZING,
			fx2_prof->vendor, fx2_prof->model, fx2_prof->model_version);
		if (!sdi)
			return 0;
		fx2 = fx2_device_new();
		fx2->profile = fx2_prof;
		sdi->priv = fx2;
		device_instances = g_slist_append(device_instances, sdi);

		if (check_conf_profile(devlist[i])) {
			/* Already has the firmware, so fix the new address. */
			sdi->status = SR_ST_INACTIVE;
			sdi->usb = sr_usb_device_instance_new
			    (libusb_get_bus_number(devlist[i]),
			     libusb_get_device_address(devlist[i]), NULL);
		} else {
			if (ezusb_upload_firmware(devlist[i], USB_CONFIGURATION, FIRMWARE) == SR_OK)
				/* Remember when the firmware on this device was updated */
				g_get_current_time(&fx2->fw_updated);
			else
				sr_warn("firmware upload failed for device %d", devcnt);
			sdi->usb = sr_usb_device_instance_new
				(libusb_get_bus_number(devlist[i]), 0xff, NULL);
		}
		devcnt++;
	}
	libusb_free_device_list(devlist, 1);

	return devcnt;
}