void MainWindow::initForm() {
  readSettings();

  connect(&process, SIGNAL(readyReadStandardError()),
          this, SLOT(processErrors()));
  connect(&process, SIGNAL(finished(int, QProcess::ExitStatus)),
          this, SLOT(processFinished(int, QProcess::ExitStatus)));
  connect(&process, SIGNAL(error(QProcess::ProcessError)),
          this, SLOT(processError(QProcess::ProcessError)));
}
/*
 * Processes an event from the CanHandler.
 *
 * In case a CAN message was received which pass the masking and id filtering,
 * this method is called. Depending on the ID of the CAN message, the data of
 * the incoming message is processed.
 */
void BrusaMotorController::handleCanFrame( CAN_FRAME *frame) {
	switch (frame->id) {
	case CAN_ID_STATUS:
		processStatus(frame->data.bytes);
		break;
	case CAN_ID_ACTUAL_VALUES:
		processActualValues(frame->data.bytes);
		break;
	case CAN_ID_ERRORS:
		processErrors(frame->data.bytes);
		break;
	case CAN_ID_TORQUE_LIMIT:
		processTorqueLimit(frame->data.bytes);
		break;
	case CAN_ID_TEMP:
		processTemperature(frame->data.bytes);
		break;
	default:
		Logger::warn(BRUSA_DMC5, "received unknown frame id %X", frame->id);
	}
}
Esempio n. 3
0
void LSThread::run()/*{{{*/
{
	m_process = new QProcess();
	connect(m_process, SIGNAL(readyReadStandardOutput()), this, SLOT(processMessages()));
	connect(m_process, SIGNAL(readyReadStandardError()), this, SLOT(processErrors()));
	qRegisterMetaType<QProcess::ExitStatus>("QProcess::ExitStatus");
	connect(m_process, SIGNAL(finished(int, QProcess::ExitStatus)), this, SLOT(relayExit(int, QProcess::ExitStatus)));

	if(config.lsClientStartLS)
	{
		bool rv = pingLinuxsampler();
		if(debugMsg)
			qDebug("LSThread::run: Launching linuxsampler ");
		if(!rv && !m_versionError)
		{
			QString lscmd("linuxsampler");
			if(!config.lsClientLSPath.isEmpty())
				lscmd = config.lsClientLSPath;
			QStringList lsargs = lscmd.split(" ");
			lscmd = lsargs.takeFirst();
			if(lsargs.isEmpty() || !lsargs.contains("--lscp-addr"))
				lsargs << "--lscp-addr" << "127.0.0.1";
			if(lsargs.isEmpty())
			{
				m_process->start(lscmd);
			}
			else
			{
				m_process->start(lscmd, lsargs);
			}
			if(!m_process->waitForStarted())
			{
				qDebug("LSThread::run: FATAL: LinuxSampler startup FAILED");
				m_state = ProcessError;
				gSamplerStarted = false;
				emit startupFailed();
				return;
			}
			sleep(1);
			int retry = 0;
			rv = pingLinuxsampler();
			while(!rv && !m_versionError && retry < 5)
			{
				sleep(1);
				rv = pingLinuxsampler();
				++retry;
			}
		}
		else if(m_versionError)
		{//We have a 
			qDebug("LSThread::run: FATAL: Found running linuxsampler but version is unsupported");
			gSamplerStarted = false;
			emit startupFailed();
			return;
		}
		m_versionError = false;
		if(rv && debugMsg)
			qDebug("LSThread::run: LinuxSampler startup complete");
		else if(!rv)
			qDebug("LSThread::run: FATAL: LinuxSampler startup FAILED");
		if(rv)
		{
			m_state = ProcessRunning;
			emit startupSuccess();
			gSamplerStarted = true;
			exec();
			if(m_process->state() == QProcess::Running)
			{
				m_process->terminate();
				m_process->waitForFinished();
			}
			m_state = ProcessNotRunning;
		}
		else
		{
			m_process->terminate();
			m_process->waitForFinished();
			m_state = ProcessError;
			gSamplerStarted = false;
			emit startupFailed();
		}
	}
	else
	{
		m_state = ProcessNotRequested;
		gSamplerStarted = false;
		emit startupSuccess();
	}
}/*}}}*/