forked from indilib/indi
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathddw_dome.h
95 lines (71 loc) · 2.77 KB
/
ddw_dome.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
/*******************************************************************************
DDW Dome INDI Driver
Copyright(c) 2020-2021 Jarno Paananen. All rights reserved.
based on:
ScopeDome Dome INDI Driver
Copyright(c) 2017-2021 Jarno Paananen. All rights reserved.
and
Copyright(c) 2014 Jasem Mutlaq. All rights reserved.
Baader Planetarium Dome INDI Driver
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License version 2 as published by the Free Software Foundation.
.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*******************************************************************************/
#pragma once
#include "indidome.h"
#include <memory>
class DDW : public INDI::Dome
{
public:
DDW();
virtual ~DDW() = default;
virtual const char *getDefaultName() override;
virtual bool initProperties() override;
virtual bool updateProperties() override;
virtual bool saveConfigItems(FILE *fp) override;
virtual bool Handshake() override;
virtual void TimerHit() override;
virtual bool ISNewSwitch(const char *dev, const char *name, ISState *states, char *names[], int n) override;
virtual bool ISNewNumber(const char *dev, const char *name, double values[], char *names[], int n) override;
virtual IPState MoveAbs(double az) override;
virtual IPState ControlShutter(ShutterOperation operation) override;
virtual bool Abort() override;
// Parking
virtual IPState Park() override;
virtual IPState UnPark() override;
virtual bool SetCurrentPark() override;
virtual bool SetDefaultPark() override;
protected:
bool SetupParms();
INumber FirmwareVersionN[1];
INumberVectorProperty FirmwareVersionNP;
private:
int writeCmd(const char *cmd);
int readStatus(std::string &status);
void parseGINF(const char *response);
int ticksPerRev { 100 };
double homeAz { 0 };
int watchdog { 0 };
int fwVersion{ -1 };
double gotoTarget { 0 };
bool gotoPending { false };
enum
{
IDLE,
MOVING,
SHUTTER_OPERATION,
HOMING,
PARKING,
UNPARKING
} cmdState{ IDLE };
};