UploaderGadgetWidget::UploaderGadgetWidget(QWidget *parent) : QWidget(parent) { m_config = new Ui_UploaderWidget(); m_config->setupUi(this); currentStep = IAP_STATE_READY; resetOnly=false; dfu = NULL; m_timer = 0; m_progress = 0; // Listen to autopilot connection events ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance(); TelemetryManager* telMngr = pm->getObject<TelemetryManager>(); connect(telMngr, SIGNAL(connected()), this, SLOT(onAutopilotConnect())); connect(telMngr, SIGNAL(disconnected()), this, SLOT(onAutopilotDisconnect())); connect(m_config->haltButton, SIGNAL(clicked()), this, SLOT(goToBootloader())); connect(m_config->resetButton, SIGNAL(clicked()), this, SLOT(systemReset())); connect(m_config->bootButton, SIGNAL(clicked()), this, SLOT(systemBoot())); connect(m_config->rescueButton, SIGNAL(clicked()), this, SLOT(systemRescue())); getSerialPorts(); QIcon rbi; rbi.addFile(QString(":uploader/images/view-refresh.svg")); m_config->refreshPorts->setIcon(rbi); connect(m_config->refreshPorts, SIGNAL(clicked()), this, SLOT(getSerialPorts())); // And check whether by any chance we are not already connected if (telMngr->isConnected()) onAutopilotConnect(); }
UploaderGadgetWidget::UploaderGadgetWidget(QWidget *parent) : QWidget(parent) { m_config = new Ui_UploaderWidget(); m_config->setupUi(this); m_currentIAPStep = IAP_STATE_READY; m_resetOnly = false; m_dfu = NULL; m_autoUpdateClosing = false; // Listen to autopilot connection events ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance(); TelemetryManager *telMngr = pm->getObject<TelemetryManager>(); connect(telMngr, SIGNAL(connected()), this, SLOT(onAutopilotConnect())); connect(telMngr, SIGNAL(disconnected()), this, SLOT(onAutopilotDisconnect())); Core::ConnectionManager *cm = Core::ICore::instance()->connectionManager(); connect(cm, SIGNAL(deviceConnected(QIODevice *)), this, SLOT(onPhysicalHWConnect())); connect(m_config->haltButton, SIGNAL(clicked()), this, SLOT(systemHalt())); connect(m_config->resetButton, SIGNAL(clicked()), this, SLOT(systemReset())); connect(m_config->bootButton, SIGNAL(clicked()), this, SLOT(systemBoot())); connect(m_config->safeBootButton, SIGNAL(clicked()), this, SLOT(systemSafeBoot())); connect(m_config->eraseBootButton, SIGNAL(clicked()), this, SLOT(systemEraseBoot())); connect(m_config->rescueButton, SIGNAL(clicked()), this, SLOT(systemRescue())); getSerialPorts(); connect(m_config->autoUpdateButton, SIGNAL(clicked()), this, SLOT(startAutoUpdate())); connect(m_config->autoUpdateEraseButton, SIGNAL(clicked()), this, SLOT(startAutoUpdateErase())); connect(m_config->autoUpdateOkButton, SIGNAL(clicked()), this, SLOT(closeAutoUpdate())); m_config->autoUpdateButton->setEnabled(autoUpdateCapable()); m_config->autoUpdateEraseButton->setEnabled(autoUpdateCapable()); m_config->autoUpdateGroupBox->setVisible(false); m_config->refreshPorts->setIcon(QIcon(":uploader/images/view-refresh.svg")); bootButtonsSetEnable(false); connect(m_config->refreshPorts, SIGNAL(clicked()), this, SLOT(getSerialPorts())); connect(m_config->pbHelp, SIGNAL(clicked()), this, SLOT(openHelp())); // And check whether by any chance we are not already connected if (telMngr->isConnected()) { onAutopilotConnect(); } }
UploaderGadgetWidget::UploaderGadgetWidget(QWidget *parent) : QWidget(parent) { m_config = new Ui_UploaderWidget(); m_config->setupUi(this); currentStep = IAP_STATE_READY; rescueStep = RESCUE_STEP0; resetOnly=false; dfu = NULL; // Listen to autopilot connection events ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance(); TelemetryManager* telMngr = pm->getObject<TelemetryManager>(); connect(telMngr, SIGNAL(connected()), this, SLOT(onAutopilotConnect())); connect(telMngr, SIGNAL(disconnected()), this, SLOT(onAutopilotDisconnect())); // Note: remove listening to the connection manager, it overlaps with // listening to the telemetry manager, we should only listen to one, not both. // Also listen to disconnect actions from the user: // Core::ConnectionManager *cm = Core::ICore::instance()->connectionManager(); // connect(cm, SIGNAL(deviceDisconnected()), this, SLOT(onAutopilotDisconnect())); connect(m_config->haltButton, SIGNAL(clicked()), this, SLOT(goToBootloader())); connect(m_config->resetButton, SIGNAL(clicked()), this, SLOT(systemReset())); connect(m_config->bootButton, SIGNAL(clicked()), this, SLOT(systemBoot())); connect(m_config->rescueButton, SIGNAL(clicked()), this, SLOT(systemRescue())); getSerialPorts(); QIcon rbi; rbi.addFile(QString(":uploader/images/view-refresh.svg")); m_config->refreshPorts->setIcon(rbi); connect(m_config->refreshPorts, SIGNAL(clicked()), this, SLOT(getSerialPorts())); }
//----------------------------------------------------------------------------- // This function is called by the main OpenPLC routine when it is initializing. // Hardware initialization procedures should be here. //----------------------------------------------------------------------------- void initializeHardware() { char **portsList; portsList = new char *[30]; for(int i = 0; i < 30; i++) { portsList[i] = new char[1000]; memset(portsList[i],0,sizeof(portsList[i])); } #ifdef __linux__ if (verifySerialPortsAvailable()) { getSerialPorts(portsList); int portId = findCorrectPort(portsList); if (portId != -1) { serial_fd = serialport_init(portsList[portId], 115200); sleep_ms(500); pthread_t thread; pthread_create(&thread, NULL, exchangeData, NULL); } } #else getSerialPorts_w32(portsList); int portId = findCorrectPort(portsList); if (portId != -1) { serial_fd = serialport_init(portsList[portId], 115200); sleep_ms(500); pthread_t thread; pthread_create(&thread, NULL, exchangeData, NULL); } #endif }
shared::CDataContainer CSystem::getBinding(const std::vector<std::string> & parameters, const std::string & requestContent) { if (parameters.size() > 2) { std::string query = parameters[2]; if (boost::iequals(query, "SerialPorts")) return getSerialPorts(); if (boost::iequals(query, "NetworkInterfaces")) return getNetworkInterfaces(true); if (boost::iequals(query, "NetworkInterfacesWithoutLoopback")) return getNetworkInterfaces(false); if (boost::iequals(query, "platformIsWindows")) return platformIs("windows"); if (boost::iequals(query, "platformIsLinux")) return platformIs("linux"); if (boost::iequals(query, "platformIsMac")) return platformIs("mac"); return CResult::GenerateError("unsupported binding query : " + query); } return CResult::GenerateError("Cannot retreive url parameters"); }
void ConnectionWindow::handleConnTypeChanged() { if (ui->rbGVRET->isChecked()) getSerialPorts(); if (ui->rbKvaser->isChecked()) getKvaserPorts(); if (ui->rbSocketCAN->isChecked()) getSocketcanPorts(); }