void MainWindow::connectPixy(bool state) { if (state) // connect { try { if (m_pixyDFUConnected) // we're in programming mode { m_flash = new Flash(); if (m_argvFirmwareFile!="") program(m_argvFirmwareFile); else if (m_firmwareFile!="") { program(m_firmwareFile); m_firmwareFile = ""; } else { QString dir; QFileDialog fd(this); dir = m_settings->value("fw_dialog").toString(); fd.setWindowTitle("Select a Firmware File"); fd.setDirectory(QDir(dir)); fd.setNameFilter("Firmware (*.hex)"); if (fd.exec()) { QStringList slist = fd.selectedFiles(); if (slist.size()==1 && m_flash) { program(slist.at(0)); } } dir = fd.directory().absolutePath(); m_settings->setValue("fw_dialog", QVariant(dir)); } } else if (m_interpreter==NULL) { m_console->print("Pixy detected.\n"); clearActions(); m_interpreter = new Interpreter(m_console, m_video, &m_parameters, m_initScript); connect(m_interpreter, SIGNAL(runState(int)), this, SLOT(handleRunState(int))); connect(m_interpreter, SIGNAL(finished()), this, SLOT(interpreterFinished())); // thread will send finished event when it exits connect(m_interpreter, SIGNAL(connected(Device,bool)), this, SLOT(handleConnected(Device,bool))); connect(m_interpreter, SIGNAL(actionScriptlet(QString,QStringList)), this, SLOT(handleActionScriptlet(QString,QStringList))); connect(m_interpreter, SIGNAL(paramLoaded()), this, SLOT(handleLoadParams())); connect(m_interpreter, SIGNAL(version(ushort,ushort,ushort)), this, SLOT(handleVersion(ushort,ushort,ushort))); m_interpreter->start(); } m_pixyConnected = true; } catch (std::runtime_error &exception)
int Interpreter::sendGetAction(int index) { int res, response; char *action, *scriptlet; QStringList scriptlet2; QString action2; res = m_chirp->callSync(m_exec_get_action, UINT16(index), END_OUT_ARGS, &response, &action, &scriptlet, END_IN_ARGS); if (res<0) return res; if (response<0) return response; action2 = QString(action); scriptlet2 = parseScriptlet(scriptlet); emit actionScriptlet(action2, scriptlet2); return response; }
int Interpreter::sendGetAction(int index) { int res, response; char *action, *scriptlet; QStringList scriptlet2; QString action2; res = m_chirp->callSync(m_exec_get_action, UINT16(index), END_OUT_ARGS, &response, &action, &scriptlet, END_IN_ARGS); if (res<0) return res; if (response<0) return response; action2 = QString(action); scriptlet2 = QString(scriptlet).split(QRegExp("[\\n]"), QString::SkipEmptyParts); emit actionScriptlet(index, action2, scriptlet2); return response; }
void Interpreter::emitActionScriptlet(QString action, QStringList scriptlet) { emit actionScriptlet(action, scriptlet); }