Instrument Neutral Distributed Interface INDI  1.9.5
lx200_OnStep.h
Go to the documentation of this file.
1 /*
2  LX200 OnStep
3  based on LX200 Classic azwing (alain@zwingelstein.org)
4  Contributors:
5  James Lancaster https://github.com/james-lan
6  Ray Wells https://github.com/blueshawk
7  Jamie Flinn https://github.com/jamiecflinn
8 
9  Copyright (C) 2003 Jasem Mutlaq (mutlaqja@ikarustech.com)-2021 (Contributors, above)
10 
11  This library is free software; you can redistribute it and/or
12  modify it under the terms of the GNU Lesser General Public
13  License as published by the Free Software Foundation; either
14  version 2.1 of the License, or (at your option) any later version.
15 
16  This library is distributed in the hope that it will be useful,
17  but WITHOUT ANY WARRANTY; without even the implied warranty of
18  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
19  Lesser General Public License for more details.
20 
21  You should have received a copy of the GNU Lesser General Public
22  License along with this library; if not, write to the Free Software
23  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
24 
25  ===========================================
26 
27  Version not yet updated/No INDI release:
28 
29  Version 1.13
30  - Timeouts and misc errors due to new behavior of SWS (SmartWebServer)
31  - - Timeouts still at 100ms for USB connections, if on a TCP/network connection timeout reverts to 2 sec.
32  - Improvements to Focuser and Rotator polling
33  - Focuser doesn't show up if not detected (Regression fixed)
34 
35  Past Versions:
36 
37  Version 1.12: (INDI 1.9.3)
38  - New timeout functions in INDI which significantly reduce startup times waiting for detection to fail. (Min time before was 1 second, current timeout for those is now set to 100 ms (100000 us which works well even with an Arduino Mega (Ramps) setup)
39  - Cleanup and completely control TrackState. (Should eliminate various issues.)
40  - Behind the scenes: More consistent command declarations (Should eliminate a type of error that's happened in the past when changing commands.)
41  - Don't report capability for PierSide and PEC unless supported (This will cause a call to updateProperties so a bunch of messages will be repeated.)
42  - From the last, move where the SlewRate values are defined to updateProperties, vs initProperties so that the extra calls to updateProperties don't mangle it.
43  - TMC driver reports are now human readable.
44  - Detects OnStep or OnStepX version (doesn't do much with it.)
45 
46 
47  Version 1.11: (INDI 1.9.2)
48  - Fixed one issue with tracking (Jamie Flinn/jamiecflinn)
49  Version 1.10: (finalized: INDI 1.9.1)
50  - Weather support for setting temperature/humidity/pressure, values will be overridden in OnStep by any sensor values.
51  - Ability to swap primary focuser.
52  - High precision on location, and not overridding GPS even when marked for Mount > KStars.
53  - Added Rotator & De-Rotator Support
54  - TMC_SPI status reported (RAW) on the Status Tab. (ST = Standstill, Ox = open load A/B, Gx = grounded A/B, OT = Overtemp Shutdown, PW = Overtemp Prewarning)
55  - Manage OnStep Auxiliary Feature Names in Output Tab
56 
57  Version 1.9:
58  - Weather support for Reading temperature/humidity/pressure (Values are Read-Only)
59  - Bugfix: Slew speed
60 
61  Version 1.8:
62  - Bugfixes for FORK mounted scopes
63 
64  Version 1.7:
65  - Added support for Reporting Guide rate (to PHD2 among others)
66  - Updated Error codes to match up with Android/SHC (Unknown reserved for unknown, so Unspecified = Unknown on other platforms)
67  - Added descriptions to SlewRate to match, slider kept which matches OnStep values
68  - Support for up to 9 stars for alignment
69  - Changed align so the last step isn't the (Optional) Write to EEPROM
70  - Added support for polar adjustments, without having to redo the entire model. (:MP# command)
71  - Support for Full Compensation/Refraction only, and 1/2 Axis tracking
72  - Cleanups
73 
74  Version 1.6: Additional Functions
75  - James Lan fixed Meredian Flip and Home Pause buttons
76  - Cleaned Comments from previon versions
77  - Updated lastError Codes
78  - azwing typo minutes ' > second ''for Alignment Error
79 
80  Version 1.5: Cleaning and Align Code Tuning
81  - James Lan Align Code
82  - Cleaning out debug messages
83  - Fix some TrackState inconsistencies with Ekos
84  - removing old Align Code
85  - fixing reversed Alt/Azm coorection values
86 
87  Version 1.4: Tuning
88  - James Lan implementation of High Precision Tracking
89  - James lan Focuser Code
90  - James lan PEC
91  - James Lan Alignment
92  - Azwing set all com variable legth to RB_MAX_LEN otherwise crash due to overflow
93  - Azwing set local variable size to RB_MAX_LEN otherwise erased by overflow preventing Align and other stuf to work
94  - James Lan Align Tab implementation
95  - Azwing Removed Alignment in main tab
96  - Azwing minor typo fixes
97  - Azwing reworked TrackState especially for parking/unparking
98 
99  Version 1.3: Complete rework of interface and functionalities
100  - Telescope Status using :GU#
101  - Parking Management
102  - Star Alignment
103  - Tracking Frequency
104  - Focuser rework
105 
106  Version 1.2: Initial issue
107 
108 */
109 
110 #pragma once
111 
112 #include "lx200generic.h"
113 #include "lx200driver.h"
114 #include "indicom.h"
115 #include "indifocuserinterface.h"
116 #include "indiweatherinterface.h"
117 #include "indirotatorinterface.h"
119 
120 
121 #include <cstring>
122 #include <unistd.h>
123 #include <termios.h>
124 #include <stdlib.h>
125 
126 #define RB_MAX_LEN 64
127 #define CMD_MAX_LEN 32
128 
129 #define setParkOnStep(fd) write(fd, "#:hQ#", 5)
130 #define ReticPlus(fd) write(fd, "#:B+#", 5)
131 #define ReticMoins(fd) write(fd, "#:B-#", 5)
132 #define OnStepalign1(fd) write(fd, "#:A1#", 5)
133 #define OnStepalign2(fd) write(fd, "#:A2#", 5)
134 #define OnStepalign3(fd) write(fd, "#:A3#", 5)
135 #define OnStepalignOK(fd) write(fd, "#:A+#", 5)
136 #define OnStep
137 #define RB_MAX_LEN 64
138 
139 #define PORTS_COUNT 10
140 #define STARTING_PORT 0
141 
143 
145 enum RateCompensation {RC_NONE, RC_REFR_RA, RC_REFR_BOTH, RC_FULL_RA, RC_FULL_BOTH}; //To allow for using one variable instead of two in the future
146 
148 
150 
152 {
153  public:
154  LX200_OnStep();
156 
157  virtual const char *getDefaultName() override;
158  virtual bool initProperties() override;
159  virtual void ISGetProperties(const char *dev) override;
160  virtual bool updateProperties() override;
161  virtual bool ISNewNumber(const char *dev, const char *name, double values[], char *names[], int n) override;
162  virtual bool ISNewSwitch(const char *dev, const char *name, ISState *states, char *names[], int n) override;
163 
164  protected:
165  virtual void getBasicData() override;
166  virtual bool Park() override;
167  virtual bool UnPark() override;
168  virtual bool SetCurrentPark() override;
169  virtual bool SetDefaultPark() override;
170  virtual bool SetTrackEnabled(bool enabled) override;
171  virtual bool updateLocation(double latitude, double longitude, double elevation) override;
172  virtual bool setLocalDate(uint8_t days, uint8_t months, uint16_t years) override;
173  virtual bool ReadScopeStatus() override;
174  virtual int setSiteLongitude(int fd, double Long);
175  virtual int setSiteLatitude(int fd, double Long);
176  virtual bool SetTrackRate(double raRate, double deRate) override;
177  virtual void slewError(int slewCode) override;
178  virtual bool Sync(double ra, double dec) override;
179 
180  virtual bool saveConfigItems(FILE *fp) override;
181  virtual void Init_Outputs();
182 
183  //Mount information
184  MountType OSMountType = MOUNTTYPE_GEM; //default to GEM
185  /* 0 = EQ mount (Presumed default for most things.)
186  * 1 = Fork
187  * 2 = Fork Alt
188  * 3 = Alt Azm
189  */
190 
191  virtual bool sendScopeTime() override;
192  virtual bool sendScopeLocation() override;
193 
194  // Goto
195  virtual bool Goto(double ra, double dec) override;
196 
197  //FocuserInterface
198 
199  IPState MoveFocuser(FocusDirection dir, int speed, uint16_t duration) override;
200  IPState MoveAbsFocuser (uint32_t targetTicks) override;
201  IPState MoveRelFocuser (FocusDirection dir, uint32_t ticks) override;
202  bool AbortFocuser () override;
203 
204  //End FocuserInterface
205 
206  //RotatorInterface
207 
208  IPState MoveRotator(double angle) override;
209 // bool SyncRotator(double angle) override;
210  IPState HomeRotator() override;
211 // bool ReverseRotator(bool enabled) override;
212  bool AbortRotator() override;
213  bool SetRotatorBacklash (int32_t steps) override;
214  bool SetRotatorBacklashEnabled(bool enabled) override;
215 
216  //End RotatorInterface
217 
218  //PECInterface
219  //axis 0=RA, 1=DEC, others?
220  IPState StopPECPlayback (int axis);
221  IPState StartPECPlayback (int axis);
222  IPState ClearPECBuffer (int axis);
223  IPState StartPECRecord (int axis);
224  IPState SavePECBuffer (int axis);
225  IPState PECStatus (int axis);
226  IPState ReadPECBuffer (int axis);
227  IPState WritePECBuffer (int axis);
228  bool ISPECRecorded (int axis);
229  bool OSPECEnabled = false;
230  bool OSPECviaGU = false; //Older versions use :QZ# for PEC status, new can use the standard :GU#/:Gu#
231  //End PECInterface
232 
233 
234  //NewGeometricAlignment
235  IPState AlignStartGeometric(int stars);
236 
245  IPState AlignDone();
247  virtual bool UpdateAlignStatus();
248  virtual bool UpdateAlignErr();
249  //End NewGeometricAlignment
250  bool OSAlignCompleted = false;
251 
252  //Outputs
253  IPState OSEnableOutput(int output);
254  IPState OSDisableOutput(int output);
255  bool OSGetOutputState(int output);
256 
257 
258  bool sendOnStepCommand(const char *cmd);
259  bool sendOnStepCommandBlind(const char *cmd);
260  int flushIO(int fd);
261  int getCommandSingleCharResponse(int fd, char *data, const char *cmd); //Reimplemented from getCommandString
262  int getCommandSingleCharErrorOrLongResponse(int fd, char *data, const char *cmd); //Reimplemented from getCommandString
263  int getCommandDoubleResponse(int fd, double *value, char *data, const char *cmd); //Reimplemented from getCommandString Will return a double, and raw value.
264  int getCommandIntResponse(int fd, int *value, char *data, const char *cmd);
265  int setMaxElevationLimit(int fd, int max);
266  int OSUpdateFocuser(); //Return = 0 good, -1 = Communication error
267  int OSUpdateRotator(); //Return = 0 good, -1 = Communication error
268 
271 
274 
277 
280 
283 
286 
288  INumber BacklashN[2]; //Test
289 
292 
295 
297 
298  long int OSTimeoutSeconds = 0;
299  long int OSTimeoutMicroSeconds = 100000;
300 
301  // OnStep Status controls
304 
305  bool TMCDrivers = true; //Set to false if it doesn't detect TMC_SPI reporting. (Small delay on connection/first update)
306  bool OSHighPrecision = false;
307 
308  // Focuser controls
309  // Focuser 1
310  bool OSFocuser1 = false;
313 
314  int OSNumFocusers = 0;
317 
318  // Focuser 2
319  //ISwitchVectorProperty OSFocus2SelSP;
320  //ISwitch OSFocus2SelS[2];
321  bool OSFocuser2 = false;
324 
327 
330 
331  //Rotator - Some handled by RotatorInterface, but that's mostly for rotation only, absolute, and... very limited.
332  bool OSRotator1 = false; //Change to false after detection code
334  ISwitch OSRotatorRateS[4]; //Set rate
335 
337  ISwitch OSRotatorDerotateS[2]; //On or Off
338 
339 
340 
341  int IsTracking = 0;
342 
343  // Reticle +/- Buttons
346 
347  // Align Buttons
350 
353 
356 
359 
362 
365 
368 
371 
385  INumber OSPECRWValuesN[2]; //Current Index and User Index
386 
400 
405 
406 
409  bool OSHasOutputs = true;
410 
413 
416 
417 
420 
423  uint8_t PECStatusGU = 0;
424  uint8_t ParkStatusGU = 0;
425 
426  // Weather support
427  // NOTE: Much is handled by WeatherInterface, these controls are mainly for setting values which are not detected
428  // As of right now, if there is a sensor the values will be overwritten on the next update
429  bool OSCpuTemp_good = true; //This can fail on some processors and take the timeout before an update, so if it fails, don't check again.
430 
431 
438  //Not sure why this would be used, but will feed to it from site settings
441 
442 
443  //This is updated via other commands, as such I'm going to ignore it like some others do.
444  virtual IPState updateWeather() override
445  {
446  return IPS_OK;
447  }
448 
449 
454  virtual void SyncParkStatus(bool isparked) override;
455 
461  virtual void SetParked(bool isparked) override;
462 
467 // #define DEBUG_TRACKSTATE
468  void PrintTrackState();
469 
470  private:
471  int currentCatalog;
472  int currentSubCatalog;
473 
474 
475 
476 };
LX200_OnStep::OSFocus2RateSP
ISwitchVectorProperty OSFocus2RateSP
Definition: lx200_OnStep.h:322
ERR_PARK
@ ERR_PARK
Definition: lx200_OnStep.h:144
LX200Generic
Definition: lx200generic.h:25
LX200_OnStep::OSPECReadS
ISwitch OSPECReadS[2]
Definition: lx200_OnStep.h:379
LX200_OnStep::initProperties
virtual bool initProperties() override
Called to initialize basic properties required all the time.
Definition: lx200_OnStep.cpp:88
LX200_OnStep
Definition: lx200_OnStep.h:151
LX200_OnStep::TrackCompS
ISwitch TrackCompS[3]
Definition: lx200_OnStep.h:349
LX200_OnStep::PrintTrackState
void PrintTrackState()
PrintTrackState will print to the debug log the status of TrackState if DEBUG_TRACKSTATE is defined o...
Definition: lx200_OnStep.cpp:5038
LX200_OnStep::OSEnableOutput
IPState OSEnableOutput(int output)
LX200_OnStep::DeepSkyCatalogS
ISwitch DeepSkyCatalogS[7]
Definition: lx200_OnStep.h:276
LX200_OnStep::SetRotatorBacklash
bool SetRotatorBacklash(int32_t steps) override
SetRotatorBacklash Set the Rotatorer backlash compensation value.
Definition: lx200_OnStep.cpp:3993
LX200_OnStep::TMCDrivers
bool TMCDrivers
Definition: lx200_OnStep.h:305
MOUNTTYPE_GEM
@ MOUNTTYPE_GEM
Definition: lx200_OnStep.h:147
OSV_OnStepV4
@ OSV_OnStepV4
Definition: lx200_OnStep.h:149
cmd
__u8 cmd[4]
Definition: pwc-ioctl.h:4
LX200_OnStep::AbortFocuser
bool AbortFocuser() override
AbortFocuser all focus motion.
Definition: lx200_OnStep.cpp:3646
LX200_OnStep::SetCurrentPark
virtual bool SetCurrentPark() override
SetCurrentPark Set current coordinates/encoders value as the desired parking position.
Definition: lx200_OnStep.cpp:1929
LX200_OnStep::getCommandIntResponse
int getCommandIntResponse(int fd, int *value, char *data, const char *cmd)
Definition: lx200_OnStep.cpp:3384
fd
int fd
Definition: indiserver.c:117
LX200_OnStep::ParkStatusGU
uint8_t ParkStatusGU
Definition: lx200_OnStep.h:424
IPState
IPState
Property state.
Definition: indiapi.h:158
OnStepVersion
OnStepVersion
Definition: lx200_OnStep.h:149
LX200_OnStep::setMaxElevationLimit
int setMaxElevationLimit(int fd, int max)
Definition: lx200_OnStep.cpp:3511
LX200_OnStep::SetDefaultPark
virtual bool SetDefaultPark() override
SetDefaultPark Set default coordinates/encoders value as the desired parking position.
Definition: lx200_OnStep.cpp:1945
LX200_OnStep::ISPECRecorded
bool ISPECRecorded(int axis)
IPS_OK
@ IPS_OK
Definition: indiapi.h:161
LX200_OnStep::OSAlignCompleted
bool OSAlignCompleted
Definition: lx200_OnStep.h:250
ERR_GOTO_ERR_UNSPECIFIED
@ ERR_GOTO_ERR_UNSPECIFIED
Definition: lx200_OnStep.h:144
LX200_OnStep::OSSetAltitudeNP
INumberVectorProperty OSSetAltitudeNP
Definition: lx200_OnStep.h:439
ISwitch
One switch descriptor.
LX200_OnStep::VersionT
IText VersionT[5]
Definition: lx200_OnStep.h:294
LX200_OnStep::FrequencyAdjustS
ISwitch FrequencyAdjustS[3]
Definition: lx200_OnStep.h:355
indicom.h
Implementations for common driver routines.
connectiontcp.h
LX200_OnStep::getCommandSingleCharErrorOrLongResponse
int getCommandSingleCharErrorOrLongResponse(int fd, char *data, const char *cmd)
Definition: lx200_OnStep.cpp:3432
LX200_OnStep::getDefaultName
virtual const char * getDefaultName() override
Definition: lx200_OnStep.cpp:83
LX200_OnStep::OSNumFocusers
int OSNumFocusers
Definition: lx200_OnStep.h:314
LX200_OnStep::OSPECRWValuesNP
INumberVectorProperty OSPECRWValuesNP
Definition: lx200_OnStep.h:384
LX200_OnStep::OnstepStatTP
ITextVectorProperty OnstepStatTP
Definition: lx200_OnStep.h:302
LX200_OnStep::OSPECCurrentIndexNP
INumberVectorProperty OSPECCurrentIndexNP
Definition: lx200_OnStep.h:380
LX200_OnStep::ReadPECBuffer
IPState ReadPECBuffer(int axis)
Definition: lx200_OnStep.cpp:4241
ERR_GOTO_ERR_ABOVE_OVERHEAD
@ ERR_GOTO_ERR_ABOVE_OVERHEAD
Definition: lx200_OnStep.h:144
ERR_UNDER_POLE
@ ERR_UNDER_POLE
Definition: lx200_OnStep.h:144
LX200_OnStep::Park
virtual bool Park() override
Park the telescope to its home position.
Definition: lx200_OnStep.cpp:1970
LX200_OnStep::OSPECCurrentIndexN
INumber OSPECCurrentIndexN[2]
Definition: lx200_OnStep.h:381
LX200_OnStep::AutoFlipS
ISwitch AutoFlipS[2]
Definition: lx200_OnStep.h:358
INumber
One number descriptor.
LX200_OnStep::StartPECPlayback
IPState StartPECPlayback(int axis)
Definition: lx200_OnStep.cpp:4032
LX200_OnStep::MaxSlewRateN
INumber MaxSlewRateN[2]
Definition: lx200_OnStep.h:285
RC_FULL_RA
@ RC_FULL_RA
Definition: lx200_OnStep.h:145
LX200_OnStep::OSNAlignT
IText OSNAlignT[8]
Definition: lx200_OnStep.h:395
LX200_OnStep::UnPark
virtual bool UnPark() override
Unpark the telescope if already parked.
Definition: lx200_OnStep.cpp:1954
LX200_OnStep::ReadScopeStatus
virtual bool ReadScopeStatus() override
Read telescope status.
Definition: lx200_OnStep.cpp:2012
LX200_OnStep::SetRotatorBacklashEnabled
bool SetRotatorBacklashEnabled(bool enabled) override
SetRotatorBacklashEnabled Enables or disables the Rotator backlash compensation.
Definition: lx200_OnStep.cpp:4005
LX200_OnStep::WritePECBuffer
IPState WritePECBuffer(int axis)
Definition: lx200_OnStep.cpp:4257
LX200_OnStep::OSPECIndexSP
ISwitchVectorProperty OSPECIndexSP
Definition: lx200_OnStep.h:374
LX200_OnStep::ObjectNoNP
INumberVectorProperty ObjectNoNP
Definition: lx200_OnStep.h:281
LX200_OnStep::SetParked
virtual void SetParked(bool isparked) override
SetParked Change the mount parking status. The data park file (stored in ~/.indi/ParkData....
Definition: lx200_OnStep.cpp:5028
OSV_OnStepV5
@ OSV_OnStepV5
Definition: lx200_OnStep.h:149
LX200_OnStep::LX200_OnStep
LX200_OnStep()
Definition: lx200_OnStep.cpp:48
LX200_OnStep::OSFocus2RateS
ISwitch OSFocus2RateS[4]
Definition: lx200_OnStep.h:323
ERR_AZM
@ ERR_AZM
Definition: lx200_OnStep.h:144
LX200_OnStep::ObjectInfoTP
ITextVectorProperty ObjectInfoTP
Definition: lx200_OnStep.h:269
LX200_OnStep::OSOutput1S
ISwitch OSOutput1S[2]
Definition: lx200_OnStep.h:402
LX200_OnStep::OSTimeoutMicroSeconds
long int OSTimeoutMicroSeconds
Definition: lx200_OnStep.h:299
LX200_OnStep::PECStatusGU
uint8_t PECStatusGU
Definition: lx200_OnStep.h:423
LX200_OnStep::~LX200_OnStep
~LX200_OnStep()
Definition: lx200_OnStep.h:155
ERR_GOTO_ERR_PARK
@ ERR_GOTO_ERR_PARK
Definition: lx200_OnStep.h:144
LX200_OnStep::OSNAlignSP
ISwitchVectorProperty OSNAlignSP
Definition: lx200_OnStep.h:389
LX200_OnStep::OSRotatorDerotateS
ISwitch OSRotatorDerotateS[2]
Definition: lx200_OnStep.h:337
LX200_OnStep::flushIO
int flushIO(int fd)
Definition: lx200_OnStep.cpp:3312
LX200_OnStep::setSiteLatitude
virtual int setSiteLatitude(int fd, double Long)
Definition: lx200_OnStep.cpp:3547
LX200_OnStep::saveConfigItems
virtual bool saveConfigItems(FILE *fp) override
saveConfigItems Save parameters ranges in the config file.
Definition: lx200_OnStep.cpp:4690
LX200_OnStep::OSFocus2MotionSP
ISwitchVectorProperty OSFocus2MotionSP
Definition: lx200_OnStep.h:325
lx200driver.h
LX200_OnStep::OSSupports_bitfield_Gu
bool OSSupports_bitfield_Gu
Definition: lx200_OnStep.h:422
Errors
Errors
Definition: lx200_OnStep.h:144
LX200_OnStep::HomeRotator
IPState HomeRotator() override
HomeRotator Go to home position.
Definition: lx200_OnStep.cpp:3973
LX200_OnStep::OSSetTemperatureNP
INumberVectorProperty OSSetTemperatureNP
Definition: lx200_OnStep.h:432
LX200_OnStep::BacklashN
INumber BacklashN[2]
Definition: lx200_OnStep.h:288
LX200_OnStep::SavePECBuffer
IPState SavePECBuffer(int axis)
Definition: lx200_OnStep.cpp:4123
LX200_OnStep::GuideRateNP
INumberVectorProperty GuideRateNP
Definition: lx200_OnStep.h:412
LX200_OnStep::OSStat
char OSStat[RB_MAX_LEN]
Definition: lx200_OnStep.h:414
OSV_OnStepX
@ OSV_OnStepX
Definition: lx200_OnStep.h:149
MOUNTTYPE_FORK
@ MOUNTTYPE_FORK
Definition: lx200_OnStep.h:147
LX200_OnStep::Init_Outputs
virtual void Init_Outputs()
Definition: lx200_OnStep.cpp:4697
LX200_OnStep::OSFocus1InitializeSP
ISwitchVectorProperty OSFocus1InitializeSP
Definition: lx200_OnStep.h:311
LX200_OnStep::ObjectNoN
INumber ObjectNoN[1]
Definition: lx200_OnStep.h:282
OSV_UNKNOWN
@ OSV_UNKNOWN
Definition: lx200_OnStep.h:149
lx200generic.h
LX200_OnStep::MaxSlewRateNP
INumberVectorProperty MaxSlewRateNP
Definition: lx200_OnStep.h:284
LX200_OnStep::TrackCompSP
ISwitchVectorProperty TrackCompSP
Definition: lx200_OnStep.h:348
LX200_OnStep::OSPier
char OSPier[RB_MAX_LEN]
Definition: lx200_OnStep.h:418
LX200_OnStep::OSPECReadSP
ISwitchVectorProperty OSPECReadSP
Definition: lx200_OnStep.h:378
LX200_OnStep::OldOSPier
char OldOSPier[RB_MAX_LEN]
Definition: lx200_OnStep.h:419
LX200_OnStep::OSFocusSelectSP
ISwitchVectorProperty OSFocusSelectSP
Definition: lx200_OnStep.h:315
LX200_OnStep::OSFocuser2
bool OSFocuser2
Definition: lx200_OnStep.h:321
ERR_UNSPECIFIED
@ ERR_UNSPECIFIED
Definition: lx200_OnStep.h:144
MOUNTTYPE_ALTAZ
@ MOUNTTYPE_ALTAZ
Definition: lx200_OnStep.h:147
LX200_OnStep::OSNAlignStarsS
ISwitch OSNAlignStarsS[9]
Definition: lx200_OnStep.h:388
LX200_OnStep::OSRotator1
bool OSRotator1
Definition: lx200_OnStep.h:332
LX200_OnStep::PreferredPierSideS
ISwitch PreferredPierSideS[3]
Definition: lx200_OnStep.h:367
LX200_OnStep::OSFocus2TargN
INumber OSFocus2TargN[1]
Definition: lx200_OnStep.h:329
ERR_MERIDIAN
@ ERR_MERIDIAN
Definition: lx200_OnStep.h:144
LX200_OnStep::updateProperties
virtual bool updateProperties() override
Called when connected state changes, to add/remove properties.
Definition: lx200_OnStep.cpp:426
max
double max(void)
LX200_OnStep::OSPECUserIndexN
INumber OSPECUserIndexN[2]
Definition: lx200_OnStep.h:383
LX200_OnStep::setSiteLongitude
virtual int setSiteLongitude(int fd, double Long)
Definition: lx200_OnStep.cpp:3522
LX200_OnStep::Goto
virtual bool Goto(double ra, double dec) override
Move the scope to the supplied RA and DEC coordinates.
Definition: lx200_OnStep.cpp:4920
LX200_OnStep::OSHighPrecision
bool OSHighPrecision
Definition: lx200_OnStep.h:306
LX200_OnStep::OSPECEnabled
bool OSPECEnabled
Definition: lx200_OnStep.h:229
_ITextVectorProperty
Text vector property descriptor.
Definition: indiapi.h:244
LX200_OnStep::OSSeparate_Pulse_Guide_Rate
bool OSSeparate_Pulse_Guide_Rate
Definition: lx200_OnStep.h:421
ERR_GOTO_ERR_STANDBY
@ ERR_GOTO_ERR_STANDBY
Definition: lx200_OnStep.h:144
indirotatorinterface.h
LX200_OnStep::OSGetOutputState
bool OSGetOutputState(int output)
Definition: lx200_OnStep.cpp:4539
ERR_SYNC
@ ERR_SYNC
Definition: lx200_OnStep.h:144
LX200_OnStep::OSNAlignPolarRealignSP
ISwitchVectorProperty OSNAlignPolarRealignSP
Definition: lx200_OnStep.h:393
LX200_OnStep::SetHomeS
ISwitch SetHomeS[2]
Definition: lx200_OnStep.h:364
LX200_OnStep::TrackAxisS
ISwitch TrackAxisS[3]
Definition: lx200_OnStep.h:352
LX200_OnStep::AlignStartGeometric
IPState AlignStartGeometric(int stars)
Definition: lx200_OnStep.cpp:4274
_INumberVectorProperty
Number vector property descriptor.
Definition: indiapi.h:317
LX200_OnStep::OSUpdateRotator
int OSUpdateRotator()
Definition: lx200_OnStep.cpp:3864
LX200_OnStep::StopPECPlayback
IPState StopPECPlayback(int axis)
Definition: lx200_OnStep.cpp:4062
ResponseErrors
ResponseErrors
Definition: lx200_OnStep.h:142
ERR_ALT_MIN
@ ERR_ALT_MIN
Definition: lx200_OnStep.h:144
MountType
MountType
Definition: lx200_OnStep.h:147
indifocuserinterface.h
LX200_OnStep::OSPECIndexS
ISwitch OSPECIndexS[2]
Definition: lx200_OnStep.h:375
ra
double ra
Definition: ieqprolegacydriver.cpp:43
IText
One text descriptor.
MOUNTTYPE_FORK_ALT
@ MOUNTTYPE_FORK_ALT
Definition: lx200_OnStep.h:147
RES_ERR_FORMAT
@ RES_ERR_FORMAT
Definition: lx200_OnStep.h:142
ERR_GOTO_ERR_GOTO
@ ERR_GOTO_ERR_GOTO
Definition: lx200_OnStep.h:144
LX200_OnStep::MoveAbsFocuser
IPState MoveAbsFocuser(uint32_t targetTicks) override
MoveFocuser the focuser to an absolute position.
Definition: lx200_OnStep.cpp:3615
LX200_OnStep::IsTracking
int IsTracking
Definition: lx200_OnStep.h:341
LX200_OnStep::OSNAlignStarsSP
ISwitchVectorProperty OSNAlignStarsSP
Definition: lx200_OnStep.h:387
LX200_OnStep::ISGetProperties
virtual void ISGetProperties(const char *dev) override
define the driver's properties to the client. Usually, only a minimum set of properties are defined t...
Definition: lx200_OnStep.cpp:420
LX200_OnStep::OSOutput2SP
ISwitchVectorProperty OSOutput2SP
Definition: lx200_OnStep.h:403
LX200_OnStep::OSNAlignPolarRealignS
ISwitch OSNAlignPolarRealignS[2]
Definition: lx200_OnStep.h:394
LX200_OnStep::SetTrackEnabled
virtual bool SetTrackEnabled(bool enabled) override
SetTrackEnabled Engages or disengages mount tracking. If there are no tracking modes available,...
Definition: lx200_OnStep.cpp:3184
LX200_OnStep::slewError
virtual void slewError(int slewCode) override
Definition: lx200_OnStep.cpp:4590
LX200_OnStep::ISNewNumber
virtual bool ISNewNumber(const char *dev, const char *name, double values[], char *names[], int n) override
Process the client newNumber command.
Definition: lx200_OnStep.cpp:743
LX200_OnStep::PECStatus
IPState PECStatus(int axis)
Definition: lx200_OnStep.cpp:4144
LX200_OnStep::OSSetAltitudeN
INumber OSSetAltitudeN[1]
Definition: lx200_OnStep.h:440
LX200_OnStep::OSOutput1SP
ISwitchVectorProperty OSOutput1SP
Definition: lx200_OnStep.h:401
LX200_OnStep::OSNAlignErrTP
ITextVectorProperty OSNAlignErrTP
Definition: lx200_OnStep.h:398
LX200_OnStep::OSPECUserIndexNP
INumberVectorProperty OSPECUserIndexNP
Definition: lx200_OnStep.h:382
dec
double dec
Definition: ieqprolegacydriver.cpp:44
LX200_OnStep::AlignWrite
IPState AlignWrite()
Definition: lx200_OnStep.cpp:4450
LX200_OnStep::sendOnStepCommandBlind
bool sendOnStepCommandBlind(const char *cmd)
Definition: lx200_OnStep.cpp:3220
LX200_OnStep::StarCatalogS
ISwitch StarCatalogS[3]
Definition: lx200_OnStep.h:273
LX200_OnStep::OSNAlignWriteSP
ISwitchVectorProperty OSNAlignWriteSP
Definition: lx200_OnStep.h:391
LX200_OnStep::OSRotatorRateSP
ISwitchVectorProperty OSRotatorRateSP
Definition: lx200_OnStep.h:333
LX200_OnStep::ClearPECBuffer
IPState ClearPECBuffer(int axis)
Definition: lx200_OnStep.cpp:4102
LX200_OnStep::ReticSP
ISwitchVectorProperty ReticSP
Definition: lx200_OnStep.h:344
RateCompensation
RateCompensation
Definition: lx200_OnStep.h:145
RC_REFR_BOTH
@ RC_REFR_BOTH
Definition: lx200_OnStep.h:145
ERR_GOTO_ERR_BELOW_HORIZON
@ ERR_GOTO_ERR_BELOW_HORIZON
Definition: lx200_OnStep.h:144
ERR_GOTO_ERR_HARDWARE_FAULT
@ ERR_GOTO_ERR_HARDWARE_FAULT
Definition: lx200_OnStep.h:144
RB_MAX_LEN
#define RB_MAX_LEN
Definition: lx200_OnStep.h:137
LX200_OnStep::setLocalDate
virtual bool setLocalDate(uint8_t days, uint8_t months, uint16_t years) override
Definition: lx200_OnStep.cpp:3209
LX200_OnStep::Sync
virtual bool Sync(double ra, double dec) override
Set the telescope current RA and DEC coordinates to the supplied RA and DEC coordinates.
Definition: lx200_OnStep.cpp:4643
LX200_OnStep::OSSetPressureNP
INumberVectorProperty OSSetPressureNP
Definition: lx200_OnStep.h:436
LX200_OnStep::AlignAddStar
IPState AlignAddStar()
AlignStartGeometric starts the OnStep Multistar align process.
Definition: lx200_OnStep.cpp:4313
LX200_OnStep::OSSetPressureN
INumber OSSetPressureN[1]
Definition: lx200_OnStep.h:437
LX200_OnStep::GuideRateN
INumber GuideRateN[2]
Definition: lx200_OnStep.h:411
LX200_OnStep::OSFocus2TargNP
INumberVectorProperty OSFocus2TargNP
Definition: lx200_OnStep.h:328
LX200_OnStep::DeepSkyCatalogSP
ISwitchVectorProperty DeepSkyCatalogSP
Definition: lx200_OnStep.h:275
LX200_OnStep::minutesPastMeridianNP
INumberVectorProperty minutesPastMeridianNP
Definition: lx200_OnStep.h:369
LX200_OnStep::OSFocus2MotionS
ISwitch OSFocus2MotionS[3]
Definition: lx200_OnStep.h:326
LX200_OnStep::AlignDone
IPState AlignDone()
Definition: lx200_OnStep.cpp:4433
ERR_NONE
@ ERR_NONE
Definition: lx200_OnStep.h:144
LX200_OnStep::PreferredPierSideSP
ISwitchVectorProperty PreferredPierSideSP
Definition: lx200_OnStep.h:366
RC_REFR_RA
@ RC_REFR_RA
Definition: lx200_OnStep.h:145
LX200_OnStep::sendScopeLocation
virtual bool sendScopeLocation() override
Definition: lx200_OnStep.cpp:4812
name
const char * name
Definition: indiserver.c:116
PORTS_COUNT
#define PORTS_COUNT
Definition: lx200_OnStep.h:139
LX200_OnStep::OSHasOutputs
bool OSHasOutputs
Definition: lx200_OnStep.h:409
LX200_OnStep::OSSetTemperatureN
INumber OSSetTemperatureN[1]
Definition: lx200_OnStep.h:433
ERR_MOTOR_FAULT
@ ERR_MOTOR_FAULT
Definition: lx200_OnStep.h:144
LX200_OnStep::sendScopeTime
virtual bool sendScopeTime() override
Definition: lx200_OnStep.cpp:4745
LX200_OnStep::MoveRelFocuser
IPState MoveRelFocuser(FocusDirection dir, uint32_t ticks) override
MoveFocuser the focuser to an relative position.
Definition: lx200_OnStep.cpp:3633
LX200_OnStep::OSPECRWValuesN
INumber OSPECRWValuesN[2]
Definition: lx200_OnStep.h:385
LX200_OnStep::ISNewSwitch
virtual bool ISNewSwitch(const char *dev, const char *name, ISState *states, char *names[], int n) override
Process the client newSwitch command.
Definition: lx200_OnStep.cpp:1160
indiweatherinterface.h
LX200_OnStep::OSFocuser1
bool OSFocuser1
Definition: lx200_OnStep.h:310
LX200_OnStep::ElevationLimitN
INumber ElevationLimitN[2]
Definition: lx200_OnStep.h:291
LX200_OnStep::OSFocus1InitializeS
ISwitch OSFocus1InitializeS[4]
Definition: lx200_OnStep.h:312
LX200_OnStep::OSPECRecordSP
ISwitchVectorProperty OSPECRecordSP
Definition: lx200_OnStep.h:376
LX200_OnStep::updateLocation
virtual bool updateLocation(double latitude, double longitude, double elevation) override
Update telescope location settings.
Definition: lx200_OnStep.cpp:3477
LX200_OnStep::getCommandDoubleResponse
int getCommandDoubleResponse(int fd, double *value, char *data, const char *cmd)
Definition: lx200_OnStep.cpp:3330
LX200_OnStep::OnStepMountVersion
OnStepVersion OnStepMountVersion
Definition: lx200_OnStep.h:296
ERR_GOTO_SYNC
@ ERR_GOTO_SYNC
Definition: lx200_OnStep.h:144
LX200_OnStep::OSFocusSelectS
ISwitch OSFocusSelectS[9]
Definition: lx200_OnStep.h:316
LX200_OnStep::TrackAxisSP
ISwitchVectorProperty TrackAxisSP
Definition: lx200_OnStep.h:351
OSV_OnStepV1or2
@ OSV_OnStepV1or2
Definition: lx200_OnStep.h:149
LX200_OnStep::SolarS
ISwitch SolarS[10]
Definition: lx200_OnStep.h:279
INDI::FocuserInterface::FocusDirection
FocusDirection
Definition: indifocuserinterface.h:66
LX200_OnStep::HomePauseS
ISwitch HomePauseS[3]
Definition: lx200_OnStep.h:361
ERR_DEC
@ ERR_DEC
Definition: lx200_OnStep.h:144
LX200_OnStep::getBasicData
virtual void getBasicData() override
Definition: lx200_OnStep.cpp:1857
LX200_OnStep::MoveFocuser
IPState MoveFocuser(FocusDirection dir, int speed, uint16_t duration) override
MoveFocuser the focuser in a particular direction with a specific speed for a finite duration.
Definition: lx200_OnStep.cpp:3601
LX200_OnStep::OSTimeoutSeconds
long int OSTimeoutSeconds
Definition: lx200_OnStep.h:298
LX200_OnStep::OSSetHumidityN
INumber OSSetHumidityN[1]
Definition: lx200_OnStep.h:435
LX200_OnStep::SetHomeSP
ISwitchVectorProperty SetHomeSP
Definition: lx200_OnStep.h:363
LX200_OnStep::OSNAlignS
ISwitch OSNAlignS[4]
Definition: lx200_OnStep.h:390
LX200_OnStep::OSRotatorDerotateSP
ISwitchVectorProperty OSRotatorDerotateSP
Definition: lx200_OnStep.h:336
LX200_OnStep::BacklashNP
INumberVectorProperty BacklashNP
Definition: lx200_OnStep.h:287
LX200_OnStep::sendOnStepCommand
bool sendOnStepCommand(const char *cmd)
Definition: lx200_OnStep.cpp:3242
LX200_OnStep::ReticS
ISwitch ReticS[2]
Definition: lx200_OnStep.h:345
LX200_OnStep::getCommandSingleCharResponse
int getCommandSingleCharResponse(int fd, char *data, const char *cmd)
Definition: lx200_OnStep.cpp:3272
LX200_OnStep::OnstepStat
IText OnstepStat[11]
Definition: lx200_OnStep.h:303
LX200_OnStep::VersionTP
ITextVectorProperty VersionTP
Definition: lx200_OnStep.h:293
LX200_OnStep::UpdateAlignErr
virtual bool UpdateAlignErr()
Definition: lx200_OnStep.cpp:4375
LX200_OnStep::ElevationLimitNP
INumberVectorProperty ElevationLimitNP
Definition: lx200_OnStep.h:290
LX200_OnStep::OSPECStatusS
ISwitch OSPECStatusS[5]
Definition: lx200_OnStep.h:373
LX200_OnStep::OSNAlignErrT
IText OSNAlignErrT[4]
Definition: lx200_OnStep.h:397
ISState
ISState
Switch state.
Definition: indiapi.h:148
LX200_OnStep::OSNAlignTP
ITextVectorProperty OSNAlignTP
Definition: lx200_OnStep.h:396
LX200_OnStep::OSNAlignWriteS
ISwitch OSNAlignWriteS[1]
Definition: lx200_OnStep.h:392
INDI::RotatorInterface
Definition: indirotatorinterface.h:45
LX200_OnStep::OSDisableOutput
IPState OSDisableOutput(int output)
Definition: lx200_OnStep.cpp:4485
LX200_OnStep::AbortRotator
bool AbortRotator() override
AbortRotator Abort all motion.
Definition: lx200_OnStep.cpp:3986
LX200_OnStep::minutesPastMeridianN
INumber minutesPastMeridianN[2]
Definition: lx200_OnStep.h:370
INDI::WeatherInterface
Provides interface to implement weather reporting functionality.
Definition: indiweatherinterface.h:55
LX200_OnStep::OSSetHumidityNP
INumberVectorProperty OSSetHumidityNP
Definition: lx200_OnStep.h:434
LX200_OnStep::OSPECRecordS
ISwitch OSPECRecordS[3]
Definition: lx200_OnStep.h:377
ERR_GOTO_ERR_IN_MOTION
@ ERR_GOTO_ERR_IN_MOTION
Definition: lx200_OnStep.h:144
LX200_OnStep::OSCpuTemp_good
bool OSCpuTemp_good
Definition: lx200_OnStep.h:429
LX200_OnStep::OSPECviaGU
bool OSPECviaGU
Definition: lx200_OnStep.h:230
LX200_OnStep::OSPECStatusSP
ISwitchVectorProperty OSPECStatusSP
Definition: lx200_OnStep.h:372
LX200_OnStep::UpdateAlignStatus
virtual bool UpdateAlignStatus()
Definition: lx200_OnStep.cpp:4328
LX200_OnStep::OSMountType
MountType OSMountType
Definition: lx200_OnStep.h:184
LX200_OnStep::OSRotatorRateS
ISwitch OSRotatorRateS[4]
Definition: lx200_OnStep.h:334
LX200_OnStep::AutoFlipSP
ISwitchVectorProperty AutoFlipSP
Definition: lx200_OnStep.h:357
LX200_OnStep::StartPECRecord
IPState StartPECRecord(int axis)
Definition: lx200_OnStep.cpp:4082
LX200_OnStep::OSOutput2S
ISwitch OSOutput2S[2]
Definition: lx200_OnStep.h:404
LX200_OnStep::FrequencyAdjustSP
ISwitchVectorProperty FrequencyAdjustSP
Definition: lx200_OnStep.h:354
LX200_OnStep::OldOSStat
char OldOSStat[RB_MAX_LEN]
Definition: lx200_OnStep.h:415
ERR_ALT_MAX
@ ERR_ALT_MAX
Definition: lx200_OnStep.h:144
OSV_OnStepV3
@ OSV_OnStepV3
Definition: lx200_OnStep.h:149
ERR_LIMIT_SENSE
@ ERR_LIMIT_SENSE
Definition: lx200_OnStep.h:144
LX200_OnStep::OutputPorts_NP
INumberVectorProperty OutputPorts_NP
Definition: lx200_OnStep.h:408
LX200_OnStep::HomePauseSP
ISwitchVectorProperty HomePauseSP
Definition: lx200_OnStep.h:360
ERR_GOTO_ERR_OUTSIDE_LIMITS
@ ERR_GOTO_ERR_OUTSIDE_LIMITS
Definition: lx200_OnStep.h:144
ERR_GOTO_ERR_NONE
@ ERR_GOTO_ERR_NONE
Definition: lx200_OnStep.h:144
LX200_OnStep::SyncParkStatus
virtual void SyncParkStatus(bool isparked) override
SyncParkStatus Update the state and switches for parking.
Definition: lx200_OnStep.cpp:5003
LX200_OnStep::ObjectInfoT
IText ObjectInfoT[1]
Definition: lx200_OnStep.h:270
LX200_OnStep::OSUpdateFocuser
int OSUpdateFocuser()
Definition: lx200_OnStep.cpp:3655
LX200_OnStep::SetTrackRate
virtual bool SetTrackRate(double raRate, double deRate) override
SetTrackRate Set custom tracking rates.
Definition: lx200_OnStep.cpp:4571
LX200_OnStep::updateWeather
virtual IPState updateWeather() override
updateWeather Update weather conditions from device or service. The function should not change the st...
Definition: lx200_OnStep.h:444
LX200_OnStep::StarCatalogSP
ISwitchVectorProperty StarCatalogSP
Definition: lx200_OnStep.h:272
RC_FULL_BOTH
@ RC_FULL_BOTH
Definition: lx200_OnStep.h:145
_ISwitchVectorProperty
Switch vector property descriptor.
Definition: indiapi.h:365
LX200_OnStep::MoveRotator
IPState MoveRotator(double angle) override
MoveRotator Go to specific angle.
Definition: lx200_OnStep.cpp:3947
LX200_OnStep::OSNAlignStat
char OSNAlignStat[RB_MAX_LEN]
Definition: lx200_OnStep.h:399
RC_NONE
@ RC_NONE
Definition: lx200_OnStep.h:145
LX200_OnStep::SolarSP
ISwitchVectorProperty SolarSP
Definition: lx200_OnStep.h:278
LX200_OnStep::OutputPorts
INumber OutputPorts[PORTS_COUNT]
Definition: lx200_OnStep.h:407