Changeset View
Changeset View
Standalone View
Standalone View
kstars/indi/indidome.cpp
Show First 20 Lines • Show All 45 Lines • ▼ Show 20 Line(s) | 41 | { | |||
---|---|---|---|---|---|
46 | if (svp) | 46 | if (svp) | ||
47 | { | 47 | { | ||
48 | ISwitch *sp = IUFindSwitch(svp, "PARK"); | 48 | ISwitch *sp = IUFindSwitch(svp, "PARK"); | ||
49 | if (sp) | 49 | if (sp) | ||
50 | { | 50 | { | ||
51 | if ((sp->s == ISS_ON) && svp->s == IPS_OK) | 51 | if ((sp->s == ISS_ON) && svp->s == IPS_OK) | ||
52 | { | 52 | { | ||
53 | m_ParkStatus = PARK_PARKED; | 53 | m_ParkStatus = PARK_PARKED; | ||
54 | m_Status = DOME_PARKED; | ||||
54 | emit newParkStatus(m_ParkStatus); | 55 | emit newParkStatus(m_ParkStatus); | ||
55 | 56 | | |||
56 | QAction *parkAction = KStars::Instance()->actionCollection()->action("dome_park"); | 57 | QAction *parkAction = KStars::Instance()->actionCollection()->action("dome_park"); | ||
57 | if (parkAction) | 58 | if (parkAction) | ||
58 | parkAction->setEnabled(false); | 59 | parkAction->setEnabled(false); | ||
59 | QAction *unParkAction = KStars::Instance()->actionCollection()->action("dome_unpark"); | 60 | QAction *unParkAction = KStars::Instance()->actionCollection()->action("dome_unpark"); | ||
60 | if (unParkAction) | 61 | if (unParkAction) | ||
61 | unParkAction->setEnabled(true); | 62 | unParkAction->setEnabled(true); | ||
62 | } | 63 | } | ||
63 | else if ((sp->s == ISS_OFF) && svp->s == IPS_OK) | 64 | else if ((sp->s == ISS_OFF) && svp->s == IPS_OK) | ||
64 | { | 65 | { | ||
65 | m_ParkStatus = PARK_UNPARKED; | 66 | m_ParkStatus = PARK_UNPARKED; | ||
67 | m_Status = DOME_IDLE; | ||||
66 | emit newParkStatus(m_ParkStatus); | 68 | emit newParkStatus(m_ParkStatus); | ||
67 | 69 | | |||
68 | QAction *parkAction = KStars::Instance()->actionCollection()->action("dome_park"); | 70 | QAction *parkAction = KStars::Instance()->actionCollection()->action("dome_park"); | ||
69 | if (parkAction) | 71 | if (parkAction) | ||
70 | parkAction->setEnabled(true); | 72 | parkAction->setEnabled(true); | ||
71 | QAction *unParkAction = KStars::Instance()->actionCollection()->action("dome_unpark"); | 73 | QAction *unParkAction = KStars::Instance()->actionCollection()->action("dome_unpark"); | ||
72 | if (unParkAction) | 74 | if (unParkAction) | ||
73 | unParkAction->setEnabled(false); | 75 | unParkAction->setEnabled(false); | ||
74 | } | 76 | } | ||
75 | } | 77 | } | ||
76 | } | 78 | } | ||
77 | } | 79 | } | ||
78 | else if (!strcmp(prop->getName(), "ABS_DOME_POSITION")) | 80 | else if (!strcmp(prop->getName(), "ABS_DOME_POSITION")) | ||
79 | { | 81 | { | ||
80 | m_CanAbsMove = true; | 82 | m_CanAbsMove = true; | ||
81 | } | 83 | } | ||
82 | else if (!strcmp(prop->getName(), "DOME_ABORT_MOTION")) | 84 | else if (!strcmp(prop->getName(), "DOME_ABORT_MOTION")) | ||
83 | { | 85 | { | ||
84 | m_CanAbort = true; | 86 | m_CanAbort = true; | ||
85 | } | 87 | } | ||
88 | else if (!strcmp(prop->getName(), "DOME_SHUTTER")) | ||||
89 | { | ||||
90 | m_HasShutter = true; | ||||
91 | } | ||||
86 | 92 | | |||
87 | DeviceDecorator::registerProperty(prop); | 93 | DeviceDecorator::registerProperty(prop); | ||
88 | } | 94 | } | ||
89 | 95 | | |||
90 | void Dome::processLight(ILightVectorProperty *lvp) | 96 | void Dome::processLight(ILightVectorProperty *lvp) | ||
91 | { | 97 | { | ||
92 | DeviceDecorator::processLight(lvp); | 98 | DeviceDecorator::processLight(lvp); | ||
93 | } | 99 | } | ||
▲ Show 20 Lines • Show All 126 Lines • ▼ Show 20 Line(s) | 224 | { | |||
220 | emit newStatus(m_Status); | 226 | emit newStatus(m_Status); | ||
221 | } | 227 | } | ||
222 | else if (svp->s == IPS_IDLE && lastStatus != DOME_IDLE) | 228 | else if (svp->s == IPS_IDLE && lastStatus != DOME_IDLE) | ||
223 | { | 229 | { | ||
224 | m_Status = DOME_IDLE; | 230 | m_Status = DOME_IDLE; | ||
225 | emit newStatus(m_Status); | 231 | emit newStatus(m_Status); | ||
226 | } | 232 | } | ||
227 | } | 233 | } | ||
234 | else if (!strcmp(svp->name, "DOME_SHUTTER")) | ||||
235 | { | ||||
236 | if (svp->s == IPS_ALERT) | ||||
237 | { | ||||
238 | emit newShutterStatus(SHUTTER_ERROR); | ||||
239 | | ||||
240 | // If alert, set shutter status to whatever it was opposite to. That is, if it was opening and failed | ||||
241 | // then we set status to closed since it did not successfully complete opening. | ||||
242 | if (m_ShutterStatus == SHUTTER_CLOSING) | ||||
243 | m_ShutterStatus = SHUTTER_OPEN; | ||||
244 | else if (m_ShutterStatus == SHUTTER_CLOSING) | ||||
245 | m_ShutterStatus = SHUTTER_CLOSED; | ||||
246 | | ||||
247 | emit newShutterStatus(m_ShutterStatus); | ||||
248 | } | ||||
249 | | ||||
250 | ShutterStatus status = shutterStatus(svp); | ||||
228 | 251 | | |||
252 | switch (status) { | ||||
253 | case SHUTTER_CLOSING: | ||||
254 | if (m_ShutterStatus != SHUTTER_CLOSING) | ||||
255 | { | ||||
256 | m_ShutterStatus = SHUTTER_CLOSING; | ||||
257 | KNotification::event(QLatin1String("ShutterClosing"), i18n("Shutter closing is in progress")); | ||||
258 | emit newShutterStatus(m_ShutterStatus); | ||||
259 | } | ||||
260 | break; | ||||
261 | case SHUTTER_OPENING: | ||||
262 | if (m_ShutterStatus != SHUTTER_OPENING) | ||||
263 | { | ||||
264 | m_ShutterStatus = SHUTTER_OPENING; | ||||
265 | KNotification::event(QLatin1String("ShutterOpening"), i18n("Shutter opening is in progress")); | ||||
266 | emit newShutterStatus(m_ShutterStatus); | ||||
267 | } | ||||
268 | break; | ||||
269 | case SHUTTER_CLOSED: | ||||
270 | if (m_ShutterStatus != SHUTTER_CLOSED) | ||||
271 | { | ||||
272 | m_ShutterStatus = SHUTTER_CLOSED; | ||||
273 | KNotification::event(QLatin1String("ShutterClosed"), i18n("Shutter closed")); | ||||
274 | emit newShutterStatus(m_ShutterStatus); | ||||
275 | } | ||||
276 | break; | ||||
277 | case SHUTTER_OPEN: | ||||
278 | if (m_ShutterStatus != SHUTTER_OPEN) | ||||
279 | { | ||||
280 | m_ShutterStatus = SHUTTER_OPEN; | ||||
281 | KNotification::event(QLatin1String("ShutterOpened"), i18n("Shutter opened")); | ||||
282 | emit newShutterStatus(m_ShutterStatus); | ||||
283 | } | ||||
284 | break; | ||||
285 | default: | ||||
286 | break; | ||||
287 | } | ||||
288 | | ||||
289 | return; | ||||
290 | | ||||
291 | } | ||||
229 | DeviceDecorator::processSwitch(svp); | 292 | DeviceDecorator::processSwitch(svp); | ||
230 | } | 293 | } | ||
231 | 294 | | |||
232 | void Dome::processText(ITextVectorProperty *tvp) | 295 | void Dome::processText(ITextVectorProperty *tvp) | ||
233 | { | 296 | { | ||
234 | DeviceDecorator::processText(tvp); | 297 | DeviceDecorator::processText(tvp); | ||
235 | } | 298 | } | ||
236 | 299 | | |||
▲ Show 20 Lines • Show All 83 Lines • ▼ Show 20 Line(s) | 380 | { | |||
320 | if (az == nullptr) | 383 | if (az == nullptr) | ||
321 | return false; | 384 | return false; | ||
322 | 385 | | |||
323 | az->np[0].value = position; | 386 | az->np[0].value = position; | ||
324 | clientManager->sendNewNumber(az); | 387 | clientManager->sendNewNumber(az); | ||
325 | return true; | 388 | return true; | ||
326 | } | 389 | } | ||
327 | 390 | | |||
391 | bool Dome::ControlShutter(bool open) | ||||
392 | { | ||||
393 | ISwitchVectorProperty *shutterSP = baseDevice->getSwitch("DOME_SHUTTER"); | ||||
394 | | ||||
395 | if (shutterSP == nullptr) | ||||
396 | return false; | ||||
397 | | ||||
398 | ISwitch *shutterSW = IUFindSwitch(shutterSP, open ? "SHUTTER_OPEN" : "SHUTTER_CLOSE"); | ||||
399 | | ||||
400 | if (shutterSW == nullptr) | ||||
401 | return false; | ||||
402 | | ||||
403 | IUResetSwitch(shutterSP); | ||||
404 | shutterSW->s = ISS_ON; | ||||
405 | clientManager->sendNewSwitch(shutterSP); | ||||
406 | | ||||
407 | return true; | ||||
408 | } | ||||
409 | | ||||
410 | Dome::ShutterStatus Dome::shutterStatus() | ||||
411 | { | ||||
412 | ISwitchVectorProperty *shutterSP = baseDevice->getSwitch("DOME_SHUTTER"); | ||||
413 | | ||||
414 | return shutterStatus(shutterSP); | ||||
415 | | ||||
416 | } | ||||
417 | | ||||
418 | Dome::ShutterStatus Dome::shutterStatus(ISwitchVectorProperty *svp) | ||||
419 | { | ||||
420 | if (svp == nullptr) | ||||
421 | return SHUTTER_UNKNOWN; | ||||
422 | | ||||
423 | ISwitch *sp = IUFindSwitch(svp, "SHUTTER_OPEN"); | ||||
424 | if (sp == nullptr) | ||||
425 | return SHUTTER_UNKNOWN; | ||||
426 | | ||||
427 | if (svp->s == IPS_ALERT) | ||||
428 | return SHUTTER_ERROR; | ||||
429 | else if (svp->s == IPS_BUSY) | ||||
430 | return (sp->s == ISS_ON) ? SHUTTER_OPENING : SHUTTER_CLOSING; | ||||
431 | else if (svp->s == IPS_OK) | ||||
432 | return (sp->s == ISS_ON) ? SHUTTER_OPEN : SHUTTER_CLOSED; | ||||
433 | | ||||
434 | // this should not happen | ||||
435 | return SHUTTER_UNKNOWN; | ||||
436 | } | ||||
437 | | ||||
328 | const QString Dome::getStatusString(Dome::Status status) | 438 | const QString Dome::getStatusString(Dome::Status status) | ||
329 | { | 439 | { | ||
330 | switch (status) | 440 | switch (status) | ||
331 | { | 441 | { | ||
332 | case ISD::Dome::DOME_IDLE: | 442 | case ISD::Dome::DOME_IDLE: | ||
333 | return i18n("Idle"); | 443 | return i18n("Idle"); | ||
334 | 444 | | |||
335 | case ISD::Dome::DOME_PARKED: | 445 | case ISD::Dome::DOME_PARKED: | ||
▲ Show 20 Lines • Show All 41 Lines • Show Last 20 Lines |