int INDIMenu::processClient(QString hostname, QString portnumber) { DeviceManager *dev; INDIDriver *drivers = ksw->getINDIDriver(); dev = new DeviceManager(this, mgrCounter); if (dev->indiConnect(hostname, portnumber)) { mgr.append(dev); if (drivers) { connect(dev, SIGNAL(newDevice()), drivers, SLOT(updateMenuActions())); connect(dev, SIGNAL(newDevice()), this, SLOT(discoverDevice())); } } else { delete (dev); return (-1); } mgrCounter++; return (mgrCounter - 1); }
bool INDIMenu::processServer() { INDIDriver *drivers = ksw->getINDIDriver(); DeviceManager *dev; if (drivers == NULL) return false; for (unsigned int i=0; i < drivers->devices.size(); i++) { // Devices ready to run but not yet managed if (drivers->devices[i]->state && drivers->devices[i]->managed == false && drivers->devices[i]->mode == IDevice::M_LOCAL) { dev = new DeviceManager(this, mgrCounter); if (dev->indiConnect("localhost", QString("%1").arg(drivers->devices[i]->indiPort))) { drivers->devices[i]->mgrID = mgrCounter; drivers->devices[i]->managed = true; mgr.append(dev); connect(dev, SIGNAL(newDevice()), drivers, SLOT(updateMenuActions())); connect(dev, SIGNAL(newDevice()), this, SLOT(discoverDevice())); mgrCounter++; } else { delete (dev); return false; } } // Devices running and they need to be shutdown else if (!drivers->devices[i]->state && drivers->devices[i]->managed == true && drivers->devices[i]->mode == IDevice::M_LOCAL) { drivers->devices[i]->managed = false; removeDeviceMgr(drivers->devices[i]->mgrID); return true; } } return true; }