• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdeedu API Reference
  • KDE Home
  • Contact Us
 

kstars

  • sources
  • kde-4.12
  • kdeedu
  • kstars
  • kstars
  • indi
clientmanager.cpp
Go to the documentation of this file.
1 /* INDI Client Manager
2  Copyright (C) 2012 Jasem Mutlaq (mutlaqja@ikarustech.com)
3 
4  This application is free software; you can redistribute it and/or
5  modify it under the terms of the GNU General Public
6  License as published by the Free Software Foundation; either
7  version 2 of the License, or (at your option) any later version.
8 
9  */
10 
11 #include <cstdlib>
12 #include <unistd.h>
13 
14 #include <QDebug>
15 #include <QProcess>
16 #include <QTime>
17 #include <QTemporaryFile>
18 #include <QDataStream>
19 #include <QTimer>
20 
21 #include <basedevice.h>
22 
23 
24 #include "clientmanager.h"
25 #include "drivermanager.h"
26 #include "servermanager.h"
27 #include "driverinfo.h"
28 #include "deviceinfo.h"
29 
30 ClientManager::ClientManager()
31 {
32 
33 sManager = NULL;
34 
35 }
36 
37 ClientManager::~ClientManager()
38 {
39 
40 }
41 
42 bool ClientManager::isDriverManaged(DriverInfo *di)
43 {
44  foreach(DriverInfo *dv, managedDrivers)
45  {
46  if (dv == di)
47  return true;
48  }
49 
50  return false;
51 }
52 
53 void ClientManager::newDevice(INDI::BaseDevice *dp)
54 {
55  setBLOBMode(B_ALSO, dp->getDeviceName());
56 
57  foreach(DriverInfo *dv, managedDrivers)
58  {
59  if (dv->getUniqueLabel() == dp->getDeviceName() ||
60  QString(dp->getDeviceName()).startsWith(dv->getName(), Qt::CaseInsensitive) || dv->getDriverSource() == HOST_SOURCE)
61  {
62  dv->setUniqueLabel(dp->getDeviceName());
63 
64  DeviceInfo *devInfo = new DeviceInfo(dv, dp);
65  dv->addDevice(devInfo);
66  emit newINDIDevice(devInfo);
67  return;
68  }
69  }
70 
71 }
72 
73 void ClientManager::newProperty(INDI::Property *prop)
74 {
75  //IDLog("Received new property %s for device %s\n", prop->getName(), prop->getgetDeviceName());
76 
77  if (!strcmp (prop->getName(), "EQUATORIAL_EOD_COORD"))
78  emit newTelescope();
79  else if (!strcmp (prop->getName(), "CCD_EXPOSURE"))
80  emit newCCD();
81 
82  emit newINDIProperty(prop);
83 }
84 
85 void ClientManager::removeProperty(INDI::Property *prop)
86 {
87  emit removeINDIProperty(prop);
88 }
89 
90 void ClientManager::newBLOB(IBLOB *bp)
91 {
92  emit newINDIBLOB(bp);
93 }
94 
95 void ClientManager::newSwitch(ISwitchVectorProperty *svp)
96 {
97  emit newINDISwitch(svp);
98 }
99 
100 void ClientManager::newNumber(INumberVectorProperty * nvp)
101 {
102  emit newINDINumber(nvp);
103 }
104 
105 void ClientManager::newText(ITextVectorProperty * tvp)
106 {
107  emit newINDIText(tvp);
108 }
109 
110 void ClientManager::newLight(ILightVectorProperty * lvp)
111 {
112  emit newINDILight(lvp);
113 }
114 
115 void ClientManager::newMessage(INDI::BaseDevice *dp, int messageID)
116 {
117  emit newINDIMessage(dp, messageID);
118 }
119 
120 
121 void ClientManager::appendManagedDriver(DriverInfo *dv)
122 {
123  managedDrivers.append(dv);
124 
125  dv->setClientManager(this);
126 
127  sManager = dv->getServerManager();
128 }
129 
130 void ClientManager::removeManagedDriver(DriverInfo *dv)
131 {
132  managedDrivers.removeOne(dv);
133 
134  dv->setClientState(false);
135 
136  foreach(DeviceInfo *di, dv->getDevices())
137  emit INDIDeviceRemoved(di);
138 
139  foreach(DriverInfo *dv, managedDrivers)
140  {
141  if (dv->getDriverSource() == HOST_SOURCE)
142  {
143  managedDrivers.removeOne(dv);
144  //emit INDIDeviceRemoved(dv);
145  delete (dv);
146  }
147  }
148 }
149 
150 
151 void ClientManager::serverConnected()
152 {
153  foreach (DriverInfo *device, managedDrivers)
154  {
155  //qDebug() << "Setting device " << device->getName() << " client state to true" << endl;
156  device->setClientState(true);
157  if (sManager)
158  device->setHostParameters(sManager->getHost(), sManager->getPort());
159  }
160 }
161 
162 void ClientManager::serverDisconnected(int exit_code)
163 {
164  //bool disconnectionError = false;
165  //ServerManager *sManager= NULL;
166 
167  //qDebug() << "Server disconnected!!!" << endl;
168 
169  foreach (DriverInfo *device, managedDrivers)
170  {
171  device->setClientState(false);
172 
173  /*sManager = device->getServerManager();
174  // If the server is still running, it means we lost connection to it.
175  if (sManager || device->getDriverSource() == HOST_SOURCE)
176  disconnectionError = true;*/
177 
178  device->clear();
179  }
180 
181  if (exit_code < 0)
182  emit connectionFailure(this);
183 }
184 
185 DriverInfo * ClientManager::findDriverInfoByName(const QString &name)
186 {
187  foreach(DriverInfo *dv, managedDrivers)
188  {
189  if (dv->getName() == name)
190  return dv;
191  }
192 
193  return NULL;
194 
195 }
196 
197 DriverInfo * ClientManager::findDriverInfoByLabel(const QString &label)
198 {
199  foreach(DriverInfo *dv, managedDrivers)
200  {
201  if (dv->getTreeLabel() == label)
202  return dv;
203  }
204 
205  return NULL;
206 
207 }
208 
209 #include "clientmanager.moc"
ClientManager::~ClientManager
virtual ~ClientManager()
Definition: clientmanager.cpp:37
ClientManager::serverDisconnected
virtual void serverDisconnected(int exit_code)
Definition: clientmanager.cpp:162
ClientManager::newINDIMessage
void newINDIMessage(INDI::BaseDevice *dp, int messageID)
ClientManager::serverConnected
virtual void serverConnected()
Definition: clientmanager.cpp:151
ClientManager::ClientManager
ClientManager()
Definition: clientmanager.cpp:30
ClientManager::newINDIText
void newINDIText(ITextVectorProperty *tvp)
ClientManager::newText
virtual void newText(ITextVectorProperty *)
Definition: clientmanager.cpp:105
deviceinfo.h
ClientManager::newINDIBLOB
void newINDIBLOB(IBLOB *bp)
ClientManager::newINDIProperty
void newINDIProperty(INDI::Property *prop)
ClientManager::newMessage
virtual void newMessage(INDI::BaseDevice *dp, int messageID)
Definition: clientmanager.cpp:115
ServerManager::getPort
const QString & getPort()
Definition: servermanager.h:43
servermanager.h
clientmanager.h
DriverInfo::addDevice
void addDevice(DeviceInfo *idv)
Definition: driverinfo.cpp:103
ClientManager::removeManagedDriver
void removeManagedDriver(DriverInfo *dv)
Definition: clientmanager.cpp:130
ClientManager::isDriverManaged
bool isDriverManaged(DriverInfo *)
Definition: clientmanager.cpp:42
ClientManager::newLight
virtual void newLight(ILightVectorProperty *)
Definition: clientmanager.cpp:110
DriverInfo::setClientManager
void setClientManager(ClientManager *newClientManager)
Definition: driverinfo.h:60
ClientManager::newBLOB
virtual void newBLOB(IBLOB *bp)
Definition: clientmanager.cpp:90
ClientManager::removeINDIProperty
void removeINDIProperty(INDI::Property *prop)
ClientManager::appendManagedDriver
void appendManagedDriver(DriverInfo *dv)
Definition: clientmanager.cpp:121
DriverInfo::getDriverSource
DriverSource getDriverSource()
Definition: driverinfo.h:55
driverinfo.h
HOST_SOURCE
Definition: indicommon.h:15
ClientManager::newINDILight
void newINDILight(ILightVectorProperty *lvp)
DriverInfo::getUniqueLabel
const QString & getUniqueLabel()
Definition: driverinfo.h:43
ClientManager::findDriverInfoByName
DriverInfo * findDriverInfoByName(const QString &name)
Definition: clientmanager.cpp:185
ClientManager::newINDINumber
void newINDINumber(INumberVectorProperty *nvp)
ClientManager::connectionFailure
void connectionFailure(ClientManager *)
ServerManager::getHost
const QString & getHost()
Definition: servermanager.h:42
DriverInfo::setClientState
void setClientState(bool inState)
Definition: driverinfo.cpp:77
ClientManager::findDriverInfoByLabel
DriverInfo * findDriverInfoByLabel(const QString &label)
Definition: clientmanager.cpp:197
DriverInfo::getServerManager
ServerManager * getServerManager()
Definition: driverinfo.h:58
ClientManager::newCCD
void newCCD()
DriverInfo::getDevices
QList< DeviceInfo * > getDevices()
Definition: driverinfo.h:86
ClientManager::newProperty
virtual void newProperty(INDI::Property *prop)
Definition: clientmanager.cpp:73
DriverInfo::getTreeLabel
const QString & getTreeLabel()
Definition: driverinfo.h:40
ClientManager::INDIDeviceRemoved
void INDIDeviceRemoved(DeviceInfo *dv)
DriverInfo
Definition: driverinfo.h:24
ClientManager::newDevice
virtual void newDevice(INDI::BaseDevice *dp)
Definition: clientmanager.cpp:53
DriverInfo::getName
const QString & getName()
Definition: driverinfo.h:36
DriverInfo::clear
void clear()
Definition: driverinfo.cpp:44
ClientManager::newINDISwitch
void newINDISwitch(ISwitchVectorProperty *svp)
ClientManager::removeProperty
virtual void removeProperty(INDI::Property *prop)
Definition: clientmanager.cpp:85
ClientManager::newINDIDevice
void newINDIDevice(DeviceInfo *dv)
ClientManager::newNumber
virtual void newNumber(INumberVectorProperty *)
Definition: clientmanager.cpp:100
ClientManager::newTelescope
void newTelescope()
DeviceInfo
Definition: deviceinfo.h:18
DriverInfo::setUniqueLabel
void setUniqueLabel(const QString &inUniqueLabel)
Definition: driverinfo.h:42
drivermanager.h
ClientManager::newSwitch
virtual void newSwitch(ISwitchVectorProperty *svp)
Definition: clientmanager.cpp:95
DriverInfo::setHostParameters
void setHostParameters(const QString &inHost, const QString &inPort)
Definition: driverinfo.h:75
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 22:36:19 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

kstars

Skip menu "kstars"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Related Pages

kdeedu API Reference

Skip menu "kdeedu API Reference"
  • Analitza
  •     lib
  • kalgebra
  • kalzium
  •   libscience
  • kanagram
  • kig
  •   lib
  • klettres
  • kstars
  • libkdeedu
  •   keduvocdocument
  • marble
  • parley
  • rocs
  •   App
  •   RocsCore
  •   VisualEditor
  •   stepcore

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal