Esempio n. 1
0
void MainWindow::on_actionScan_triggered()
{
	int ret, i;
	QString s;
	struct logic_analyzer la;

	statusBar()->showMessage(tr("Scanning for logic analyzers..."));

	ret = flosslogic_scan_for_devices(&ctx);
	if (ret < 0) {
		s = tr("No supported logic analyzer found.");
		statusBar()->showMessage(s);
		return;
	} else {
		s = tr("Found supported logic analyzer: ");
		s.append(flosslogic_logic_analyzers[ret].shortname);
		statusBar()->showMessage(s);
	}

	setCurrentLA(ret);
	setNumChannels(flosslogic_logic_analyzers[ret].numchannels);

	ui->comboBoxLA->clear();
	ui->comboBoxLA->addItem(flosslogic_logic_analyzers[ret].shortname);
	ui->labelChannels->setText(s.sprintf("Channels: %d",
			flosslogic_logic_analyzers[ret].numchannels));

	i = 0;
	la = flosslogic_logic_analyzers[getCurrentLA()];
	while (la.samplerates[i].string != NULL) {
		ui->comboBoxSampleRate->addItem(la.samplerates[i].string,
			la.samplerates[i].samplerate);
		i++;
	}

	/* FIXME */
	ui->comboBoxNumSamples->addItem("3000000", 3000000);
	ui->comboBoxNumSamples->addItem("2000000", 2000000);
	ui->comboBoxNumSamples->addItem("1000000", 1000000);
	ui->comboBoxNumSamples->setEditable(true);

	ret = flosslogic_hw_init(getCurrentLA(), &ctx);
	if (ret < 0)
		statusBar()->showMessage(tr("ERROR: LA init failed."));

	if (getCurrentLA() >= 0)
		setupDockWidgets();

	/* Enable all relevant fields now (i.e. make them non-gray). */
	ui->comboBoxSampleRate->setEnabled(true);
	ui->comboBoxNumSamples->setEnabled(true);
	ui->labelChannels->setEnabled(true);
	ui->action_Get_samples->setEnabled(true);
}
Esempio n. 2
0
void MainWindow::on_actionScan_triggered()
{
	QString s;
	GSList *devs = NULL;
	int num_devs, pos;
	struct sr_dev *dev;
	char *di_num_probes, *str;
	struct sr_samplerates *samplerates;
	const static float mult[] = { 2.f, 2.5f, 2.f };

	statusBar()->showMessage(tr("Scanning for logic analyzers..."), 2000);

	sr_dev_scan();
	devs = sr_dev_list();
	num_devs = g_slist_length(devs);

	ui->comboBoxLA->clear();
	for (int i = 0; i < num_devs; ++i) {
		dev = (struct sr_dev *)g_slist_nth_data(devs, i);
		ui->comboBoxLA->addItem(dev->driver->name); /* TODO: Full name */
	}

	if (num_devs == 0) {
		s = tr("No supported logic analyzer found.");
		statusBar()->showMessage(s, 2000);
		return;
	} else if (num_devs == 1) {
		s = tr("Found supported logic analyzer: ");
		s.append(dev->driver->name);
		statusBar()->showMessage(s, 2000);
	} else {
		/* TODO: Allow user to select one of the devices. */
		s = tr("Found multiple logic analyzers: ");
		for (int i = 0; i < num_devs; ++i) {
			dev = (struct sr_dev *)g_slist_nth_data(devs, i);
			s.append(dev->driver->name);
			if (i != num_devs - 1)
				s.append(", ");
		}
		statusBar()->showMessage(s, 2000);
		// return;
	}

	dev = (struct sr_dev *)g_slist_nth_data(devs, 0 /* opt_dev */);

	setCurrentLA(0 /* TODO */);

	di_num_probes = (char *)dev->driver->dev_info_get(
			dev->driver_index, SR_DI_NUM_PROBES);
	if (di_num_probes != NULL) {
		setNumChannels(GPOINTER_TO_INT(di_num_probes));
	} else {
		setNumChannels(8); /* FIXME: Error handling. */
	}

	ui->comboBoxLA->clear();
	ui->comboBoxLA->addItem(dev->driver->name); /* TODO: Full name */

	s = QString(tr("Channels: %1")).arg(getNumChannels());
	ui->labelChannels->setText(s);

	samplerates = (struct sr_samplerates *)dev->driver->dev_info_get(
		      dev->driver_index, SR_DI_SAMPLERATES);
	if (!samplerates) {
		/* TODO: Error handling. */
	}

	/* Populate the combobox with supported samplerates. */
	ui->comboBoxSampleRate->clear();
	if (!samplerates) {
		ui->comboBoxSampleRate->addItem("No samplerate");
		ui->comboBoxSampleRate->setEnabled(false);
	} else if (samplerates->list != NULL) {
		for (int i = 0; samplerates->list[i]; ++i) {
			str = sr_samplerate_string(samplerates->list[i]);
			s = QString(str);
			free(str);
			ui->comboBoxSampleRate->insertItem(0, s,
				QVariant::fromValue(samplerates->list[i]));
		}
		ui->comboBoxSampleRate->setEnabled(true);
	} else {
		pos = 0;
		for (uint64_t r = samplerates->low; r <= samplerates->high; ) {
			str = sr_samplerate_string(r);
			s = QString(str);
			free(str);
			ui->comboBoxSampleRate->insertItem(0, s,
						QVariant::fromValue(r));
			r *= mult[pos++];
			pos %= 3;
		}
		ui->comboBoxSampleRate->setEnabled(true);
	}
	ui->comboBoxSampleRate->setCurrentIndex(0);

	/* FIXME */
	ui->comboBoxNumSamples->clear();
	ui->comboBoxNumSamples->addItem("100", 100); /* For testing... */
	ui->comboBoxNumSamples->addItem("3000000", 3000000);
	ui->comboBoxNumSamples->addItem("2000000", 2000000);
	ui->comboBoxNumSamples->addItem("1000000", 1000000);

	ui->comboBoxNumSamples->setEditable(true);

	if (getCurrentLA() >= 0)
		setupDockWidgets();

	/* Enable all relevant fields now (i.e. make them non-gray). */
	ui->comboBoxNumSamples->setEnabled(true);
	ui->labelChannels->setEnabled(true);
	ui->action_Get_samples->setEnabled(true);
}