TwiceAsNice  2019-02-18
Classes | Public Member Functions | Private Types | Private Member Functions | Private Attributes | Static Private Attributes | List of all members
SkywatcherAltAzSimple Class Reference

#include <skywatcherAltAzSimple.h>

Inheritance diagram for SkywatcherAltAzSimple:
Inheritance graph
Collaboration diagram for SkywatcherAltAzSimple:
Collaboration graph

Classes

struct  CurrentAltAz
 

Public Member Functions

 SkywatcherAltAzSimple ()
 
virtual ~SkywatcherAltAzSimple ()=default
 
virtual bool Abort () override
 Abort any telescope motion including tracking if possible. More...
 
virtual bool Handshake () override
 perform handshake with device to check communication More...
 
virtual const char * getDefaultName () override
 
virtual bool Goto (double ra, double dec) override
 Move the scope to the supplied RA and DEC coordinates. More...
 
virtual bool initProperties () override
 Called to initialize basic properties required all the time. More...
 
virtual void ISGetProperties (const char *dev) override
 define the driver's properties to the client. More...
 
virtual bool ISNewBLOB (const char *dev, const char *name, int sizes[], int blobsizes[], char *blobs[], char *formats[], char *names[], int n) override
 Process the client newBLOB command. More...
 
virtual bool ISNewNumber (const char *dev, const char *name, double values[], char *names[], int n) override
 Process the client newNumber command. More...
 
virtual bool ISNewSwitch (const char *dev, const char *name, ISState *states, char *names[], int n) override
 Process the client newSwitch command. More...
 
virtual bool ISNewText (const char *dev, const char *name, char *texts[], char *names[], int n) override
 Process the client newSwitch command. More...
 
double GetSlewRate ()
 
virtual bool MoveNS (INDI_DIR_NS dir, TelescopeMotionCommand command) override
 Start or Stop the telescope motion in the direction dir. More...
 
virtual bool MoveWE (INDI_DIR_WE dir, TelescopeMotionCommand command) override
 Move the telescope in the direction dir. More...
 
double GetParkDeltaAz (ParkDirection_t target_direction, ParkPosition_t target_position)
 
virtual bool Park () override
 Park the telescope to its home position. More...
 
virtual bool UnPark () override
 Unpark the telescope if already parked. More...
 
virtual bool ReadScopeStatus () override
 Read telescope status. More...
 
virtual bool saveConfigItems (FILE *fp) override
 saveConfigItems Save specific properties in the provide config file handler. More...
 
virtual bool Sync (double ra, double dec) override
 Set the telescope current RA and DEC coordinates to the supplied RA and DEC coordinates. More...
 
virtual void TimerHit () override
 Called when setTimer() time is up. More...
 
virtual bool updateProperties () override
 Called when connected state changes, to add/remove properties. More...
 
virtual IPState GuideNorth (uint32_t ms) override
 Guide north for ms milliseconds. More...
 
virtual IPState GuideSouth (uint32_t ms) override
 Guide south for ms milliseconds. More...
 
virtual IPState GuideEast (uint32_t ms) override
 Guide east for ms milliseconds. More...
 
virtual IPState GuideWest (uint32_t ms) override
 Guide west for ms milliseconds. More...
 
- Public Member Functions inherited from SkywatcherAPI
 SkywatcherAPI ()
 
virtual ~SkywatcherAPI ()=default
 
unsigned long BCDstr2long (std::string &String)
 
unsigned long Highstr2long (std::string &String)
 
bool CheckIfDCMotor ()
 
bool IsVirtuosoMount () const
 Check if the current mount is a Virtuoso (AltAz) More...
 
bool IsMerlinMount () const
 Check if the current mount is a Merlin (AltAz) More...
 
long DegreesPerSecondToClocksTicksPerMicrostep (AXISID Axis, double DegreesPerSecond)
 Convert a slewing rate in degrees per second into the required clock ticks per microstep setting. More...
 
long DegreesToMicrosteps (AXISID Axis, double AngleInDegrees)
 Convert angle in degrees to microsteps. More...
 
bool GetEncoder (AXISID Axis)
 Set the CurrentEncoders status variable to the current encoder value in microsteps for the specified axis. More...
 
bool GetHighSpeedRatio (AXISID Axis)
 Set the HighSpeedRatio status variable to the ratio between high and low speed stepping modes. More...
 
bool GetMicrostepsPerRevolution (AXISID Axis)
 Set the MicrostepsPerRevolution status variable to the number of microsteps for a 360 degree revolution of the axis. More...
 
bool GetMicrostepsPerWormRevolution (AXISID Axis)
 Set the MicrostepsPermWormRevolution status variable to the number of microsteps for a 360 degree revolution of the worm gear. More...
 
bool GetMotorBoardVersion (AXISID Axis)
 
PositiveRotationSense_t GetPositiveRotationDirection (AXISID Axis)
 Returns the rotation direction for a positive step on the designated axis. More...
 
bool GetStatus (AXISID Axis)
 
bool GetStepperClockFrequency (AXISID Axis)
 Set the StepperClockFrequency status variable to fixed PIC timer interrupt frequency (ticks per second). More...
 
bool InitializeMC ()
 
bool InitMount (bool recover)
 Initialize the communication to the mount. More...
 
bool InstantStop (AXISID Axis)
 Bring the axis to an immediate halt. More...
 
void Long2BCDstr (long Number, std::string &String)
 
double MicrostepsToDegrees (AXISID Axis, long Microsteps)
 Convert microsteps to angle in degrees. More...
 
double MicrostepsToRadians (AXISID Axis, long Microsteps)
 Convert microsteps to angle in radians. More...
 
void PrepareForSlewing (AXISID Axis, double Speed)
 
long RadiansPerSecondToClocksTicksPerMicrostep (AXISID Axis, double RadiansPerSecond)
 Convert a slewing rate in radians per second into the required clock ticks per microstep setting. More...
 
long RadiansToMicrosteps (AXISID Axis, double AngleInRadians)
 Convert angle in radians to microsteps. More...
 
bool SetEncoder (AXISID Axis, long Microsteps)
 Set axis encoder to the specified value. More...
 
bool SetGotoTargetOffset (AXISID Axis, long OffsetInMicrosteps)
 Set the goto target offset per the specified axis. More...
 
bool SetMotionMode (AXISID Axis, char Func, char Direction)
 Set the motion mode per the specified axis. More...
 
void SetSerialPort (int port)
 Set the serail port to be usb for mount communication. More...
 
bool SetClockTicksPerMicrostep (AXISID Axis, long ClockTicksPerMicrostep)
 Set the PIC internal divider variable which determines how many clock interrupts have to occur between each microstep. More...
 
bool SetSlewModeDeccelerationRampLength (AXISID Axis, long Microsteps)
 Set the length of the deccelaration ramp for Slew mode. More...
 
bool SetSlewToModeDeccelerationRampLength (AXISID Axis, long Microsteps)
 Set the length of the deccelaration ramp for SlewTo mode. More...
 
bool SetSwitch (bool OnOff)
 Set the camera control switch to the given state. More...
 
void Slew (AXISID Axis, double SpeedInRadiansPerSecond, bool IgnoreSilentMode=true)
 Start the axis slewing at the given rate. More...
 
void SlewTo (AXISID Axis, long OffsetInMicrosteps, bool verbose=true)
 Slew to the given offset and stop. More...
 
bool SlowStop (AXISID Axis)
 Bring the axis to slow stop in the distance specified by SetSlewModeDeccelerationRampLength. More...
 
bool StartMotion (AXISID Axis)
 Start the axis slewing in the prevously selected mode. More...
 
bool TalkWithAxis (AXISID Axis, char Command, std::string &cmdDataStr, std::string &responseStr)
 
bool IsInMotion (AXISID Axis)
 Check if an axis is moving. More...
 
- Public Member Functions inherited from INDI::Telescope
 Telescope ()
 
virtual ~Telescope ()
 
virtual bool ISSnoopDevice (XMLEle *root)
 Process a snoop event from INDI server. More...
 
uint32_t GetTelescopeCapability () const
 GetTelescopeCapability returns the capability of the Telescope. More...
 
void SetTelescopeCapability (uint32_t cap, uint8_t slewRateCount=0)
 SetTelescopeCapability sets the Telescope capabilities. More...
 
bool CanGOTO ()
 
bool CanSync ()
 
bool CanAbort ()
 
bool CanPark ()
 
bool CanControlTrack ()
 
bool HasTime ()
 
bool HasLocation ()
 
bool HasPierSide ()
 
bool HasPECState ()
 
bool HasTrackMode ()
 
bool HasTrackRate ()
 
void SetParkDataType (TelescopeParkData type)
 setParkDataType Sets the type of parking data stored in the park data file and presented to the user. More...
 
bool InitPark ()
 InitPark Loads parking data (stored in ~/.indi/ParkData.xml) that contains parking status and parking position. More...
 
bool isParked ()
 isParked is mount currently parked? More...
 
void SetParked (bool isparked)
 SetParked Change the mount parking status. More...
 
double GetAxis1Park () const
 
double GetAxis1ParkDefault () const
 
double GetAxis2Park () const
 
double GetAxis2ParkDefault () const
 
void SetAxis1Park (double value)
 SetRAPark Set current RA/AZ parking position. More...
 
void SetAxis1ParkDefault (double steps)
 SetRAPark Set default RA/AZ parking position. More...
 
void SetAxis2Park (double steps)
 SetDEPark Set current DEC/ALT parking position. More...
 
void SetAxis2ParkDefault (double steps)
 SetDEParkDefault Set default DEC/ALT parking position. More...
 
bool isLocked () const
 isLocked is mount currently locked? More...
 
void setTelescopeConnection (const uint8_t &value)
 setTelescopeConnection Set telescope connection mode. More...
 
uint8_t getTelescopeConnection () const
 
void setPierSide (TelescopePierSide side)
 
TelescopePierSide getPierSide ()
 
void setPECState (TelescopePECState state)
 
TelescopePECState getPECState ()
 
 Telescope ()
 
virtual ~Telescope ()
 
virtual bool ISSnoopDevice (XMLEle *root)
 Process a snoop event from INDI server. More...
 
uint32_t GetTelescopeCapability () const
 GetTelescopeCapability returns the capability of the Telescope. More...
 
void SetTelescopeCapability (uint32_t cap, uint8_t slewRateCount=0)
 SetTelescopeCapability sets the Telescope capabilities. More...
 
bool CanGOTO ()
 
bool CanSync ()
 
bool CanAbort ()
 
bool CanPark ()
 
bool CanControlTrack ()
 
bool HasTime ()
 
bool HasLocation ()
 
bool HasPierSide ()
 
bool HasPECState ()
 
bool HasTrackMode ()
 
bool HasTrackRate ()
 
void SetParkDataType (TelescopeParkData type)
 setParkDataType Sets the type of parking data stored in the park data file and presented to the user. More...
 
bool InitPark ()
 InitPark Loads parking data (stored in ~/.indi/ParkData.xml) that contains parking status and parking position. More...
 
bool isParked ()
 isParked is mount currently parked? More...
 
void SetParked (bool isparked)
 SetParked Change the mount parking status. More...
 
double GetAxis1Park () const
 
double GetAxis1ParkDefault () const
 
double GetAxis2Park () const
 
double GetAxis2ParkDefault () const
 
void SetAxis1Park (double value)
 SetRAPark Set current RA/AZ parking position. More...
 
void SetAxis1ParkDefault (double steps)
 SetRAPark Set default RA/AZ parking position. More...
 
void SetAxis2Park (double steps)
 SetDEPark Set current DEC/ALT parking position. More...
 
void SetAxis2ParkDefault (double steps)
 SetDEParkDefault Set default DEC/ALT parking position. More...
 
bool isLocked () const
 isLocked is mount currently locked? More...
 
void setTelescopeConnection (const uint8_t &value)
 setTelescopeConnection Set telescope connection mode. More...
 
uint8_t getTelescopeConnection () const
 
void setPierSide (TelescopePierSide side)
 
TelescopePierSide getPierSide ()
 
void setPECState (TelescopePECState state)
 
TelescopePECState getPECState ()
 
- Public Member Functions inherited from INDI::DefaultDevice
 DefaultDevice ()
 
virtual ~DefaultDevice ()
 
void addAuxControls ()
 Add Debug, Simulation, and Configuration options to the driver. More...
 
void addDebugControl ()
 Add Debug control to the driver. More...
 
void addSimulationControl ()
 Add Simulation control to the driver. More...
 
void addConfigurationControl ()
 Add Configuration control to the driver. More...
 
void addPollPeriodControl ()
 Add Polling period control to the driver. More...
 
void resetProperties ()
 Set all properties to IDLE state. More...
 
void defineNumber (INumberVectorProperty *nvp)
 Define number vector to client & register it. More...
 
void defineText (ITextVectorProperty *tvp)
 Define text vector to client & register it. More...
 
void defineSwitch (ISwitchVectorProperty *svp)
 Define switch vector to client & register it. More...
 
void defineLight (ILightVectorProperty *lvp)
 Define light vector to client & register it. More...
 
void defineBLOB (IBLOBVectorProperty *bvp)
 Define BLOB vector to client & register it. More...
 
virtual bool deleteProperty (const char *propertyName)
 Delete a property and unregister it. More...
 
virtual void setConnected (bool status, IPState state=IPS_OK, const char *msg=nullptr)
 Set connection switch status in the client. More...
 
int SetTimer (uint32_t ms)
 Set a timer to call the function TimerHit after ms milliseconds. More...
 
void RemoveTimer (int id)
 Remove timer added with SetTimer. More...
 
virtual const char * getDriverExec ()
 
virtual const char * getDriverName ()
 
void setVersion (uint16_t vMajor, uint16_t vMinor)
 Set driver version information to be defined in DRIVER_INFO property as vMajor.vMinor. More...
 
uint16_t getMajorVersion ()
 
uint16_t getMinorVersion ()
 
virtual uint16_t getDriverInterface ()
 
void setDriverInterface (uint16_t value)
 setInterface Set driver interface. More...
 
 DefaultDevice ()
 
virtual ~DefaultDevice ()
 
void addAuxControls ()
 Add Debug, Simulation, and Configuration options to the driver. More...
 
void addDebugControl ()
 Add Debug control to the driver. More...
 
void addSimulationControl ()
 Add Simulation control to the driver. More...
 
void addConfigurationControl ()
 Add Configuration control to the driver. More...
 
void addPollPeriodControl ()
 Add Polling period control to the driver. More...
 
void resetProperties ()
 Set all properties to IDLE state. More...
 
void defineNumber (INumberVectorProperty *nvp)
 Define number vector to client & register it. More...
 
void defineText (ITextVectorProperty *tvp)
 Define text vector to client & register it. More...
 
void defineSwitch (ISwitchVectorProperty *svp)
 Define switch vector to client & register it. More...
 
void defineLight (ILightVectorProperty *lvp)
 Define light vector to client & register it. More...
 
void defineBLOB (IBLOBVectorProperty *bvp)
 Define BLOB vector to client & register it. More...
 
virtual bool deleteProperty (const char *propertyName)
 Delete a property and unregister it. More...
 
virtual void setConnected (bool status, IPState state=IPS_OK, const char *msg=nullptr)
 Set connection switch status in the client. More...
 
int SetTimer (uint32_t ms)
 Set a timer to call the function TimerHit after ms milliseconds. More...
 
void RemoveTimer (int id)
 Remove timer added with SetTimer. More...
 
virtual const char * getDriverExec ()
 
virtual const char * getDriverName ()
 
void setVersion (uint16_t vMajor, uint16_t vMinor)
 Set driver version information to be defined in DRIVER_INFO property as vMajor.vMinor. More...
 
uint16_t getMajorVersion ()
 
uint16_t getMinorVersion ()
 
virtual uint16_t getDriverInterface ()
 
void setDriverInterface (uint16_t value)
 setInterface Set driver interface. More...
 
- Public Member Functions inherited from INDI::BaseDevice
 BaseDevice ()
 
virtual ~BaseDevice ()
 
INumberVectorPropertygetNumber (const char *name)
 
ITextVectorPropertygetText (const char *name)
 
ISwitchVectorPropertygetSwitch (const char *name)
 
ILightVectorPropertygetLight (const char *name)
 
IBLOBVectorPropertygetBLOB (const char *name)
 
IPState getPropertyState (const char *name)
 
IPerm getPropertyPermission (const char *name)
 
void registerProperty (void *p, INDI_PROPERTY_TYPE type)
 
int removeProperty (const char *name, char *errmsg)
 Remove a property. More...
 
void * getRawProperty (const char *name, INDI_PROPERTY_TYPE type=INDI_UNKNOWN)
 Return a property and its type given its name. More...
 
INDI::PropertygetProperty (const char *name, INDI_PROPERTY_TYPE type=INDI_UNKNOWN)
 Return a property and its type given its name. More...
 
std::vector< INDI::Property * > * getProperties ()
 Return a list of all properties in the device. More...
 
bool buildSkeleton (const char *filename)
 Build driver properties from a skeleton file. More...
 
bool isConnected ()
 
void setDeviceName (const char *dev)
 Set the device name. More...
 
const char * getDeviceName ()
 
void addMessage (const std::string &msg)
 Add message to the driver's message queue. More...
 
void checkMessage (XMLEle *root)
 
void doMessage (XMLEle *msg)
 
std::string messageQueue (int index) const
 
std::string lastMessage ()
 
void setMediator (INDI::BaseMediator *med)
 Set the driver's mediator to receive notification of news devices and updated property values. More...
 
INDI::BaseMediatorgetMediator ()
 
const char * getDriverName ()
 
const char * getDriverExec ()
 
const char * getDriverVersion ()
 
 BaseDevice ()
 
virtual ~BaseDevice ()
 
INumberVectorPropertygetNumber (const char *name)
 
ITextVectorPropertygetText (const char *name)
 
ISwitchVectorPropertygetSwitch (const char *name)
 
ILightVectorPropertygetLight (const char *name)
 
IBLOBVectorPropertygetBLOB (const char *name)
 
IPState getPropertyState (const char *name)
 
IPerm getPropertyPermission (const char *name)
 
void registerProperty (void *p, INDI_PROPERTY_TYPE type)
 
int removeProperty (const char *name, char *errmsg)
 Remove a property. More...
 
void * getRawProperty (const char *name, INDI_PROPERTY_TYPE type=INDI_UNKNOWN)
 Return a property and its type given its name. More...
 
INDI::PropertygetProperty (const char *name, INDI_PROPERTY_TYPE type=INDI_UNKNOWN)
 Return a property and its type given its name. More...
 
std::vector< INDI::Property * > * getProperties ()
 Return a list of all properties in the device. More...
 
bool buildSkeleton (const char *filename)
 Build driver properties from a skeleton file. More...
 
bool isConnected ()
 
void setDeviceName (const char *dev)
 Set the device name. More...
 
const char * getDeviceName ()
 
void addMessage (const std::string &msg)
 Add message to the driver's message queue. More...
 
void checkMessage (XMLEle *root)
 
void doMessage (XMLEle *msg)
 
std::string messageQueue (int index) const
 
std::string lastMessage ()
 
void setMediator (INDI::BaseMediator *med)
 Set the driver's mediator to receive notification of news devices and updated property values. More...
 
INDI::BaseMediatorgetMediator ()
 
const char * getDriverName ()
 
const char * getDriverExec ()
 
const char * getDriverVersion ()
 
- Public Member Functions inherited from INDI::GuiderInterface
virtual void GuideComplete (INDI_EQ_AXIS axis)
 Call GuideComplete once the guiding pulse is complete. More...
 
virtual void GuideComplete (INDI_EQ_AXIS axis)
 Call GuideComplete once the guiding pulse is complete. More...
 

Private Types

enum  { MOTOR_CONTROL_FIRMWARE_VERSION, MOUNT_CODE, MOUNT_NAME, IS_DC_MOTOR }
 
enum  { MICROSTEPS_PER_REVOLUTION, STEPPER_CLOCK_FREQUENCY, HIGH_SPEED_RATIO, MICROSTEPS_PER_WORM_REVOLUTION }
 
enum  {
  FULL_STOP, SLEWING, SLEWING_TO, SLEWING_FORWARD,
  HIGH_SPEED, NOT_INITIALISED
}
 
enum  { RAW_MICROSTEPS, MICROSTEPS_PER_ARCSEC, OFFSET_FROM_INITIAL, DEGREES_FROM_INITIAL }
 
enum  { SLEW_SILENT, SLEW_NORMAL }
 
enum  { WEDGE_SIMPLE, WEDGE_EQ, WEDGE_DISABLED }
 
enum  { TRACKLOG_ENABLED, TRACKLOG_DISABLED }
 

Private Member Functions

void ResetGuidePulses ()
 
void UpdateScopeConfigSwitch ()
 
virtual int skywatcher_tty_read (int fd, char *buf, int nbytes, int timeout, int *nbytes_read) override
 
virtual int skywatcher_tty_write (int fd, const char *buffer, int nbytes, int *nbytes_written) override
 
void UpdateDetailedMountInformation (bool InformClient)
 
ln_hrz_posn GetAltAzPosition (double ra, double dec, double offset_in_sec=0)
 
ln_equ_posn GetRaDecPosition (double alt, double az)
 
void LogMessage (const char *format,...)
 

Private Attributes

IText BasicMountInfo [4] {}
 
ITextVectorProperty BasicMountInfoV
 
INumber AxisOneInfo [4]
 
INumberVectorProperty AxisOneInfoV
 
INumber AxisTwoInfo [4]
 
INumberVectorProperty AxisTwoInfoV
 
ISwitch AxisOneState [6]
 
ISwitchVectorProperty AxisOneStateV
 
ISwitch AxisTwoState [6]
 
ISwitchVectorProperty AxisTwoStateV
 
INumber AxisOneEncoderValues [4]
 
INumberVectorProperty AxisOneEncoderValuesV
 
INumber AxisTwoEncoderValues [4]
 
INumberVectorProperty AxisTwoEncoderValuesV
 
ISwitch SlewModes [2]
 
ISwitchVectorProperty SlewModesSP
 
ISwitch WedgeMode [3]
 
ISwitchVectorProperty WedgeModeSP
 
ISwitch TrackLogMode [2]
 
ISwitchVectorProperty TrackLogModeSP
 
INumber GuidingRatesN [2]
 
INumberVectorProperty GuidingRatesNP
 
INumber TrackingValuesN [3]
 
INumberVectorProperty TrackingValuesNP
 
ISwitch ParkMovementDirection [2]
 
ISwitchVectorProperty ParkMovementDirectionSP
 
ISwitch ParkPosition [4]
 
ISwitchVectorProperty ParkPositionSP
 
ISwitch UnparkPosition [4]
 
ISwitchVectorProperty UnparkPositionSP
 
ln_equ_posn CurrentTrackingTarget { 0, 0 }
 
long OldTrackingTarget [2] { 0, 0 }
 
bool ResetTrackingSeconds { false }
 
int TrackingMsecs { 0 }
 
int TrackingStartTimer { 0 }
 
double GuideDeltaAlt { 0 }
 
double GuideDeltaAz { 0 }
 
int TimeoutDuration { 500 }
 
const std::string TrackLogFileName
 
int UpdateCount { 0 }
 
std::string SerialPortName
 Save the serial port name. More...
 
bool RecoverAfterReconnection { false }
 Recover after disconnection. More...
 
bool VerboseScopeStatus { false }
 
std::vector< GuidingPulseGuidingPulses
 

Static Private Attributes

static constexpr const char * DetailedMountInfoPage { "Detailed Mount Information" }
 

Additional Inherited Members

- Public Types inherited from SkywatcherAPI
enum  AXISID { AXIS1 = 0, AXIS2 = 1 }
 
enum  PositiveRotationSense_t { CLOCKWISE, ANTICLOCKWISE }
 
enum  MountType {
  EQ6 = 0x00, HEQ5 = 0x01, EQ5 = 0x02, EQ3 = 0x03,
  GT = 0x80, MF = 0x81, _114GT = 0x82, DOB = 0x90
}
 
- Public Types inherited from INDI::Telescope
enum  TelescopeStatus {
  SCOPE_IDLE, SCOPE_SLEWING, SCOPE_TRACKING, SCOPE_PARKING,
  SCOPE_PARKED, SCOPE_IDLE, SCOPE_SLEWING, SCOPE_TRACKING,
  SCOPE_PARKING, SCOPE_PARKED
}
 
enum  TelescopeMotionCommand { MOTION_START = 0, MOTION_STOP, MOTION_START = 0, MOTION_STOP }
 
enum  TelescopeSlewRate {
  SLEW_GUIDE, SLEW_CENTERING, SLEW_FIND, SLEW_MAX,
  SLEW_GUIDE, SLEW_CENTERING, SLEW_FIND, SLEW_MAX
}
 
enum  TelescopeTrackMode {
  TRACK_SIDEREAL, TRACK_SOLAR, TRACK_LUNAR, TRACK_CUSTOM,
  TRACK_SIDEREAL, TRACK_SOLAR, TRACK_LUNAR, TRACK_CUSTOM
}
 
enum  TelescopeTrackState {
  TRACK_ON, TRACK_OFF, TRACK_UNKNOWN, TRACK_ON,
  TRACK_OFF, TRACK_UNKNOWN
}
 
enum  TelescopeParkData {
  PARK_NONE, PARK_RA_DEC, PARK_HA_DEC, PARK_AZ_ALT,
  PARK_RA_DEC_ENCODER, PARK_AZ_ALT_ENCODER, PARK_NONE, PARK_RA_DEC,
  PARK_HA_DEC, PARK_AZ_ALT, PARK_RA_DEC_ENCODER, PARK_AZ_ALT_ENCODER
}
 
enum  TelescopeLocation {
  LOCATION_LATITUDE, LOCATION_LONGITUDE, LOCATION_ELEVATION, LOCATION_LATITUDE,
  LOCATION_LONGITUDE, LOCATION_ELEVATION
}
 
enum  TelescopePierSide {
  PIER_UNKNOWN = -1, PIER_WEST = 0, PIER_EAST = 1, PIER_UNKNOWN = -1,
  PIER_WEST = 0, PIER_EAST = 1
}
 
enum  TelescopePECState {
  PEC_UNKNOWN = -1, PEC_OFF = 0, PEC_ON = 1, PEC_UNKNOWN = -1,
  PEC_OFF = 0, PEC_ON = 1
}
 
enum  { CONNECTION_NONE = 1 << 0, CONNECTION_SERIAL = 1 << 1, CONNECTION_TCP = 1 << 2 }
 
enum  {
  TELESCOPE_CAN_GOTO = 1 << 0, TELESCOPE_CAN_SYNC = 1 << 1, TELESCOPE_CAN_PARK = 1 << 2, TELESCOPE_CAN_ABORT = 1 << 3,
  TELESCOPE_HAS_TIME = 1 << 4, TELESCOPE_HAS_LOCATION = 1 << 5, TELESCOPE_HAS_PIER_SIDE = 1 << 6, TELESCOPE_HAS_PEC = 1 << 7,
  TELESCOPE_HAS_TRACK_MODE = 1 << 8, TELESCOPE_CAN_CONTROL_TRACK = 1 << 9, TELESCOPE_HAS_TRACK_RATE = 1 << 10
}
 
enum  TelescopeStatus {
  SCOPE_IDLE, SCOPE_SLEWING, SCOPE_TRACKING, SCOPE_PARKING,
  SCOPE_PARKED, SCOPE_IDLE, SCOPE_SLEWING, SCOPE_TRACKING,
  SCOPE_PARKING, SCOPE_PARKED
}
 
enum  TelescopeMotionCommand { MOTION_START = 0, MOTION_STOP, MOTION_START = 0, MOTION_STOP }
 
enum  TelescopeSlewRate {
  SLEW_GUIDE, SLEW_CENTERING, SLEW_FIND, SLEW_MAX,
  SLEW_GUIDE, SLEW_CENTERING, SLEW_FIND, SLEW_MAX
}
 
enum  TelescopeTrackMode {
  TRACK_SIDEREAL, TRACK_SOLAR, TRACK_LUNAR, TRACK_CUSTOM,
  TRACK_SIDEREAL, TRACK_SOLAR, TRACK_LUNAR, TRACK_CUSTOM
}
 
enum  TelescopeTrackState {
  TRACK_ON, TRACK_OFF, TRACK_UNKNOWN, TRACK_ON,
  TRACK_OFF, TRACK_UNKNOWN
}
 
enum  TelescopeParkData {
  PARK_NONE, PARK_RA_DEC, PARK_HA_DEC, PARK_AZ_ALT,
  PARK_RA_DEC_ENCODER, PARK_AZ_ALT_ENCODER, PARK_NONE, PARK_RA_DEC,
  PARK_HA_DEC, PARK_AZ_ALT, PARK_RA_DEC_ENCODER, PARK_AZ_ALT_ENCODER
}
 
enum  TelescopeLocation {
  LOCATION_LATITUDE, LOCATION_LONGITUDE, LOCATION_ELEVATION, LOCATION_LATITUDE,
  LOCATION_LONGITUDE, LOCATION_ELEVATION
}
 
enum  TelescopePierSide {
  PIER_UNKNOWN = -1, PIER_WEST = 0, PIER_EAST = 1, PIER_UNKNOWN = -1,
  PIER_WEST = 0, PIER_EAST = 1
}
 
enum  TelescopePECState {
  PEC_UNKNOWN = -1, PEC_OFF = 0, PEC_ON = 1, PEC_UNKNOWN = -1,
  PEC_OFF = 0, PEC_ON = 1
}
 
enum  { CONNECTION_NONE = 1 << 0, CONNECTION_SERIAL = 1 << 1, CONNECTION_TCP = 1 << 2 }
 
enum  {
  TELESCOPE_CAN_GOTO = 1 << 0, TELESCOPE_CAN_SYNC = 1 << 1, TELESCOPE_CAN_PARK = 1 << 2, TELESCOPE_CAN_ABORT = 1 << 3,
  TELESCOPE_HAS_TIME = 1 << 4, TELESCOPE_HAS_LOCATION = 1 << 5, TELESCOPE_HAS_PIER_SIDE = 1 << 6, TELESCOPE_HAS_PEC = 1 << 7,
  TELESCOPE_HAS_TRACK_MODE = 1 << 8, TELESCOPE_CAN_CONTROL_TRACK = 1 << 9, TELESCOPE_HAS_TRACK_RATE = 1 << 10
}
 
- Public Types inherited from INDI::BaseDevice
enum  INDI_ERROR {
  INDI_DEVICE_NOT_FOUND = -1, INDI_PROPERTY_INVALID = -2, INDI_PROPERTY_DUPLICATED = -3, INDI_DISPATCH_ERROR = -4,
  INDI_DEVICE_NOT_FOUND = -1, INDI_PROPERTY_INVALID = -2, INDI_PROPERTY_DUPLICATED = -3, INDI_DISPATCH_ERROR = -4
}
 
enum  DRIVER_INTERFACE {
  GENERAL_INTERFACE = 0, TELESCOPE_INTERFACE = (1 << 0), CCD_INTERFACE = (1 << 1), GUIDER_INTERFACE = (1 << 2),
  FOCUSER_INTERFACE = (1 << 3), FILTER_INTERFACE = (1 << 4), DOME_INTERFACE = (1 << 5), GPS_INTERFACE = (1 << 6),
  WEATHER_INTERFACE = (1 << 7), AO_INTERFACE = (1 << 8), DUSTCAP_INTERFACE = (1 << 9), LIGHTBOX_INTERFACE = (1 << 10),
  DETECTOR_INTERFACE = (1 << 11), ROTATOR_INTERFACE = (1 << 12), SPECTROGRAPH_INTERFACE = (1 << 13), AUX_INTERFACE = (1 << 15),
  GENERAL_INTERFACE = 0, TELESCOPE_INTERFACE = (1 << 0), CCD_INTERFACE = (1 << 1), GUIDER_INTERFACE = (1 << 2),
  FOCUSER_INTERFACE = (1 << 3), FILTER_INTERFACE = (1 << 4), DOME_INTERFACE = (1 << 5), GPS_INTERFACE = (1 << 6),
  WEATHER_INTERFACE = (1 << 7), AO_INTERFACE = (1 << 8), DUSTCAP_INTERFACE = (1 << 9), LIGHTBOX_INTERFACE = (1 << 10),
  DETECTOR_INTERFACE = (1 << 11), ROTATOR_INTERFACE = (1 << 12), SPECTROGRAPH_INTERFACE = (1 << 13), AUX_INTERFACE = (1 << 15)
}
 The DRIVER_INTERFACE enum defines the class of devices the driver implements. More...
 
enum  INDI_ERROR {
  INDI_DEVICE_NOT_FOUND = -1, INDI_PROPERTY_INVALID = -2, INDI_PROPERTY_DUPLICATED = -3, INDI_DISPATCH_ERROR = -4,
  INDI_DEVICE_NOT_FOUND = -1, INDI_PROPERTY_INVALID = -2, INDI_PROPERTY_DUPLICATED = -3, INDI_DISPATCH_ERROR = -4
}
 
enum  DRIVER_INTERFACE {
  GENERAL_INTERFACE = 0, TELESCOPE_INTERFACE = (1 << 0), CCD_INTERFACE = (1 << 1), GUIDER_INTERFACE = (1 << 2),
  FOCUSER_INTERFACE = (1 << 3), FILTER_INTERFACE = (1 << 4), DOME_INTERFACE = (1 << 5), GPS_INTERFACE = (1 << 6),
  WEATHER_INTERFACE = (1 << 7), AO_INTERFACE = (1 << 8), DUSTCAP_INTERFACE = (1 << 9), LIGHTBOX_INTERFACE = (1 << 10),
  DETECTOR_INTERFACE = (1 << 11), ROTATOR_INTERFACE = (1 << 12), SPECTROGRAPH_INTERFACE = (1 << 13), AUX_INTERFACE = (1 << 15),
  GENERAL_INTERFACE = 0, TELESCOPE_INTERFACE = (1 << 0), CCD_INTERFACE = (1 << 1), GUIDER_INTERFACE = (1 << 2),
  FOCUSER_INTERFACE = (1 << 3), FILTER_INTERFACE = (1 << 4), DOME_INTERFACE = (1 << 5), GPS_INTERFACE = (1 << 6),
  WEATHER_INTERFACE = (1 << 7), AO_INTERFACE = (1 << 8), DUSTCAP_INTERFACE = (1 << 9), LIGHTBOX_INTERFACE = (1 << 10),
  DETECTOR_INTERFACE = (1 << 11), ROTATOR_INTERFACE = (1 << 12), SPECTROGRAPH_INTERFACE = (1 << 13), AUX_INTERFACE = (1 << 15)
}
 The DRIVER_INTERFACE enum defines the class of devices the driver implements. More...
 
- Static Public Member Functions inherited from INDI::Telescope
static void joystickHelper (const char *joystick_n, double mag, double angle, void *context)
 
static void buttonHelper (const char *button_n, ISState state, void *context)
 
static void joystickHelper (const char *joystick_n, double mag, double angle, void *context)
 
static void buttonHelper (const char *button_n, ISState state, void *context)
 
- Public Attributes inherited from SkywatcherAPI
unsigned long MCVersion { 0 }
 
unsigned long MountCode { 0 }
 
bool IsDCMotor { false }
 
bool SilentSlewMode { true }
 
long MicrostepsPerRevolution [2]
 
long StepperClockFrequency [2]
 
long HighSpeedRatio [2]
 
long MicrostepsPerWormRevolution [2]
 
double RadiansPerMicrostep [2]
 
double MicrostepsPerRadian [2]
 
double DegreesPerMicrostep [2]
 
double MicrostepsPerDegree [2]
 
long LowSpeedGotoMargin [2]
 
long LastSlewToTarget [2]
 
long CurrentEncoders [2]
 Current encoder values (microsteps). More...
 
long PolarisPositionEncoders [2]
 Polaris position (initial) encoder values (microsteps). More...
 
long ZeroPositionEncoders [2]
 Zero position encoder values (microsteps). More...
 
AXISSTATUS AxesStatus [2]
 
double SlewingSpeed [2]
 
INDI::TelescopepChildTelescope { nullptr }
 
- Public Attributes inherited from INDI::Telescope
enum INDI::Telescope:: { ... }  TelescopeConnection
 
enum INDI::Telescope:: { ... }  TelescopeCapability
 
enum INDI::Telescope:: { ... }  TelescopeConnection
 
enum INDI::Telescope:: { ... }  TelescopeCapability
 
- Static Public Attributes inherited from SkywatcherAPI
static constexpr double SIDEREALRATE { (2 * M_PI / 86164.09065) }
 
static constexpr double MAX_SPEED { 500.0 }
 
static constexpr double LOW_SPEED_MARGIN { 128.0 * SIDEREALRATE }
 
- Protected Types inherited from INDI::Telescope
enum  {
  SCOPE_CONFIG1, SCOPE_CONFIG2, SCOPE_CONFIG3, SCOPE_CONFIG4,
  SCOPE_CONFIG5, SCOPE_CONFIG6
}
 
enum  {
  SCOPE_CONFIG1, SCOPE_CONFIG2, SCOPE_CONFIG3, SCOPE_CONFIG4,
  SCOPE_CONFIG5, SCOPE_CONFIG6
}
 
- Protected Member Functions inherited from INDI::Telescope
void NewRaDec (double ra, double dec)
 The child class calls this function when it has updates. More...
 
virtual bool SetTrackMode (uint8_t mode)
 SetTrackMode Set active tracking mode. More...
 
virtual bool SetTrackRate (double raRate, double deRate)
 SetTrackRate Set custom tracking rates. More...
 
virtual int AddTrackMode (const char *name, const char *label, bool isDefault=false)
 AddTrackMode. More...
 
virtual bool SetTrackEnabled (bool enabled)
 SetTrackEnabled Engages or disengages mount tracking. More...
 
virtual bool updateTime (ln_date *utc, double utc_offset)
 Update telescope time, date, and UTC offset. More...
 
virtual bool updateLocation (double latitude, double longitude, double elevation)
 Update telescope location settings. More...
 
virtual bool SetParkPosition (double Axis1Value, double Axis2Value)
 SetParkPosition Set desired parking position to the supplied value. More...
 
virtual bool SetCurrentPark ()
 SetCurrentPark Set current coordinates/encoders value as the desired parking position. More...
 
virtual bool SetDefaultPark ()
 SetDefaultPark Set default coordinates/encoders value as the desired parking position. More...
 
virtual bool SetSlewRate (int index)
 SetSlewRate Set desired slew rate index. More...
 
bool callHandshake ()
 callHandshake Helper function that sets the port file descriptor before calling the actual Handshake function implenented in drivers More...
 
void processNSWE (double mag, double angle)
 
void processJoystick (const char *joystick_n, double mag, double angle)
 
void processSlewPresets (double mag, double angle)
 
void processButton (const char *button_n, ISState state)
 
bool LoadScopeConfig ()
 Load scope settings from XML files. More...
 
bool HasDefaultScopeConfig ()
 Load scope settings from XML files. More...
 
bool UpdateScopeConfig ()
 Save scope settings to XML files. More...
 
std::string GetHomeDirectory () const
 Validate a file name. More...
 
int GetScopeConfigIndex () const
 Get the scope config index. More...
 
bool CheckFile (const std::string &file_name, bool writable) const
 Check if a file exists and it is readable. More...
 
void sendTimeFromSystem ()
 
char * LoadParkData ()
 
bool WriteParkData ()
 
void NewRaDec (double ra, double dec)
 The child class calls this function when it has updates. More...
 
virtual bool SetTrackMode (uint8_t mode)
 SetTrackMode Set active tracking mode. More...
 
virtual bool SetTrackRate (double raRate, double deRate)
 SetTrackRate Set custom tracking rates. More...
 
virtual int AddTrackMode (const char *name, const char *label, bool isDefault=false)
 AddTrackMode. More...
 
virtual bool SetTrackEnabled (bool enabled)
 SetTrackEnabled Engages or disengages mount tracking. More...
 
virtual bool updateTime (ln_date *utc, double utc_offset)
 Update telescope time, date, and UTC offset. More...
 
virtual bool updateLocation (double latitude, double longitude, double elevation)
 Update telescope location settings. More...
 
virtual bool SetParkPosition (double Axis1Value, double Axis2Value)
 SetParkPosition Set desired parking position to the supplied value. More...
 
virtual bool SetCurrentPark ()
 SetCurrentPark Set current coordinates/encoders value as the desired parking position. More...
 
virtual bool SetDefaultPark ()
 SetDefaultPark Set default coordinates/encoders value as the desired parking position. More...
 
virtual bool SetSlewRate (int index)
 SetSlewRate Set desired slew rate index. More...
 
bool callHandshake ()
 callHandshake Helper function that sets the port file descriptor before calling the actual Handshake function implenented in drivers More...
 
void processNSWE (double mag, double angle)
 
void processJoystick (const char *joystick_n, double mag, double angle)
 
void processSlewPresets (double mag, double angle)
 
void processButton (const char *button_n, ISState state)
 
bool LoadScopeConfig ()
 Load scope settings from XML files. More...
 
bool HasDefaultScopeConfig ()
 Load scope settings from XML files. More...
 
bool UpdateScopeConfig ()
 Save scope settings to XML files. More...
 
std::string GetHomeDirectory () const
 Validate a file name. More...
 
int GetScopeConfigIndex () const
 Get the scope config index. More...
 
bool CheckFile (const std::string &file_name, bool writable) const
 Check if a file exists and it is readable. More...
 
void sendTimeFromSystem ()
 
char * LoadParkData ()
 
bool WriteParkData ()
 
- Protected Member Functions inherited from INDI::DefaultDevice
void setDynamicPropertiesBehavior (bool defineEnabled, bool deleteEnabled)
 setDynamicPropertiesBehavior controls handling of dynamic properties. More...
 
virtual bool loadConfig (bool silent=false, const char *property=nullptr)
 Load the last saved configuration file. More...
 
virtual bool saveConfig (bool silent=false, const char *property=nullptr)
 Save the current properties in a configuration file. More...
 
virtual bool saveAllConfigItems (FILE *fp)
 saveAllConfigItems Save all the drivers' properties in the configuration file More...
 
virtual bool loadDefaultConfig ()
 Load the default configuration file. More...
 
void setDebug (bool enable)
 Toggle driver debug status A driver can be more verbose if Debug option is enabled by the client. More...
 
void setSimulation (bool enable)
 Toggle driver simulation status A driver can run in simulation mode if Simulation option is enabled by the client. More...
 
virtual void debugTriggered (bool enable)
 Inform driver that the debug option was triggered. More...
 
virtual void simulationTriggered (bool enable)
 Inform driver that the simulation option was triggered. More...
 
bool isDebug ()
 
bool isSimulation ()
 
virtual bool Connect ()
 Connect to the device. More...
 
virtual bool Disconnect ()
 Disconnect from device. More...
 
void registerConnection (Connection::Interface *newConnection)
 registerConnection Add new connection plugin to the existing connection pool. More...
 
bool unRegisterConnection (Connection::Interface *existingConnection)
 unRegisterConnection Remove connection from existing pool More...
 
Connection::InterfacegetActiveConnection ()
 
void setDefaultPollingPeriod (uint32_t period)
 
uint32_t getPollingPeriod ()
 
void setDynamicPropertiesBehavior (bool defineEnabled, bool deleteEnabled)
 setDynamicPropertiesBehavior controls handling of dynamic properties. More...
 
virtual bool loadConfig (bool silent=false, const char *property=nullptr)
 Load the last saved configuration file. More...
 
virtual bool saveConfig (bool silent=false, const char *property=nullptr)
 Save the current properties in a configuration file. More...
 
virtual bool saveAllConfigItems (FILE *fp)
 saveAllConfigItems Save all the drivers' properties in the configuration file More...
 
virtual bool loadDefaultConfig ()
 Load the default configuration file. More...
 
void setDebug (bool enable)
 Toggle driver debug status A driver can be more verbose if Debug option is enabled by the client. More...
 
void setSimulation (bool enable)
 Toggle driver simulation status A driver can run in simulation mode if Simulation option is enabled by the client. More...
 
virtual void debugTriggered (bool enable)
 Inform driver that the debug option was triggered. More...
 
virtual void simulationTriggered (bool enable)
 Inform driver that the simulation option was triggered. More...
 
bool isDebug ()
 
bool isSimulation ()
 
virtual bool Connect ()
 Connect to the device. More...
 
virtual bool Disconnect ()
 Disconnect from device. More...
 
void registerConnection (Connection::Interface *newConnection)
 registerConnection Add new connection plugin to the existing connection pool. More...
 
bool unRegisterConnection (Connection::Interface *existingConnection)
 unRegisterConnection Remove connection from existing pool More...
 
Connection::InterfacegetActiveConnection ()
 
void setDefaultPollingPeriod (uint32_t period)
 
uint32_t getPollingPeriod ()
 
- Protected Member Functions inherited from INDI::BaseDevice
int buildProp (XMLEle *root, char *errmsg)
 Build a property given the supplied XML element (defXXX) More...
 
int setValue (XMLEle *root, char *errmsg)
 handle SetXXX commands from client More...
 
int setBLOB (IBLOBVectorProperty *pp, XMLEle *root, char *errmsg)
 Parse and store BLOB in the respective vector. More...
 
int buildProp (XMLEle *root, char *errmsg)
 Build a property given the supplied XML element (defXXX) More...
 
int setValue (XMLEle *root, char *errmsg)
 handle SetXXX commands from client More...
 
int setBLOB (IBLOBVectorProperty *pp, XMLEle *root, char *errmsg)
 Parse and store BLOB in the respective vector. More...
 
- Protected Member Functions inherited from INDI::GuiderInterface
 GuiderInterface ()
 
 ~GuiderInterface ()
 
void initGuiderProperties (const char *deviceName, const char *groupName)
 Initilize guider properties. More...
 
void processGuiderProperties (const char *name, double values[], char *names[], int n)
 Call this function whenever client updates GuideNSNP or GuideWSP properties in the primary device. More...
 
 GuiderInterface ()
 
 ~GuiderInterface ()
 
void initGuiderProperties (const char *deviceName, const char *groupName)
 Initilize guider properties. More...
 
void processGuiderProperties (const char *name, double values[], char *names[], int n)
 Call this function whenever client updates GuideNSNP or GuideWSP properties in the primary device. More...
 
- Protected Attributes inherited from SkywatcherAPI
unsigned int DBG_SCOPE { 0 }
 
- Protected Attributes inherited from INDI::Telescope
TelescopeStatus TrackState
 This is a variable filled in by the ReadStatus telescope low level code, used to report current state are we slewing, tracking, or parked. More...
 
TelescopeStatus RememberTrackState
 RememberTrackState Remember last state of Track State to fall back to in case of errors or aborts. More...
 
INumberVectorProperty EqNP
 
INumber EqN [2]
 
INumberVectorProperty TargetNP
 
INumber TargetN [2]
 
ISwitchVectorProperty AbortSP
 
ISwitch AbortS [1]
 
ISwitchVectorProperty CoordSP
 
ISwitch CoordS [3]
 
INumberVectorProperty LocationNP
 
INumber LocationN [3]
 
ISwitchVectorProperty ParkSP
 
ISwitch ParkS [2]
 
INumber ParkPositionN [2]
 
INumberVectorProperty ParkPositionNP
 
ISwitch ParkOptionS [3]
 
ISwitchVectorProperty ParkOptionSP
 
ISwitch MovementNSS [2]
 
ISwitchVectorProperty MovementNSSP
 
ISwitch MovementWES [2]
 
ISwitchVectorProperty MovementWESP
 
ISwitchVectorProperty SlewRateSP
 
ISwitchSlewRateS
 
INumber ScopeParametersN [4]
 
INumberVectorProperty ScopeParametersNP
 
IText TimeT [2] {}
 
ITextVectorProperty TimeTP
 
ITextVectorProperty ActiveDeviceTP
 
IText ActiveDeviceT [2] {}
 
ISwitchVectorProperty DomeClosedLockTP
 
ISwitch DomeClosedLockT [4]
 
ISwitch LockAxisS [2]
 
ISwitchVectorProperty LockAxisSP
 
ISwitch PierSideS [2]
 
ISwitchVectorProperty PierSideSP
 
TelescopePierSide lastPierSide
 
TelescopePierSide currentPierSide
 
ISwitch PECStateS [2]
 
ISwitchVectorProperty PECStateSP
 
ISwitchVectorProperty TrackModeSP
 
ISwitchTrackModeS { nullptr }
 
ISwitchVectorProperty TrackStateSP
 
ISwitch TrackStateS [2]
 
INumberVectorProperty TrackRateNP
 
INumber TrackRateN [2]
 
TelescopePECState lastPECState
 
TelescopePECState currentPECState
 
uint32_t capability
 
int last_we_motion
 
int last_ns_motion
 
int PortFD = -1
 
Connection::SerialserialConnection = NULL
 
Connection::TCPtcpConnection = NULL
 
const std::string ScopeConfigRootXmlNode { "scopeconfig" }
 
const std::string ScopeConfigDeviceXmlNode { "device" }
 
const std::string ScopeConfigNameXmlNode { "name" }
 
const std::string ScopeConfigScopeFocXmlNode { "scopefoc" }
 
const std::string ScopeConfigScopeApXmlNode { "scopeap" }
 
const std::string ScopeConfigGScopeFocXmlNode { "gscopefoc" }
 
const std::string ScopeConfigGScopeApXmlNode { "gscopeap" }
 
const std::string ScopeConfigLabelApXmlNode { "label" }
 
ISwitch ScopeConfigs [6]
 
ISwitchVectorProperty ScopeConfigsSP
 
ITextVectorProperty ScopeConfigNameTP
 
IText ScopeConfigNameT [1] {}
 
const std::string ScopeConfigFileName
 The telescope/guide scope configuration file name. More...
 
- Protected Attributes inherited from INDI::DefaultDevice
uint32_t POLLMS = 1000
 Period in milliseconds to call TimerHit(). Default 1000 ms. More...
 
- Protected Attributes inherited from INDI::GuiderInterface
INumber GuideNSN [2]
 
INumberVectorProperty GuideNSNP
 
INumber GuideWEN [2]
 
INumberVectorProperty GuideWENP
 

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
private
Enumerator
MOTOR_CONTROL_FIRMWARE_VERSION 
MOUNT_CODE 
MOUNT_NAME 
IS_DC_MOTOR 

◆ anonymous enum

anonymous enum
private
Enumerator
MICROSTEPS_PER_REVOLUTION 
STEPPER_CLOCK_FREQUENCY 
HIGH_SPEED_RATIO 
MICROSTEPS_PER_WORM_REVOLUTION 

◆ anonymous enum

anonymous enum
private
Enumerator
FULL_STOP 
SLEWING 
SLEWING_TO 
SLEWING_FORWARD 
HIGH_SPEED 
NOT_INITIALISED 

◆ anonymous enum

anonymous enum
private
Enumerator
RAW_MICROSTEPS 
MICROSTEPS_PER_ARCSEC 
OFFSET_FROM_INITIAL 
DEGREES_FROM_INITIAL 

◆ anonymous enum

anonymous enum
private
Enumerator
SLEW_SILENT 
SLEW_NORMAL 

◆ anonymous enum

anonymous enum
private
Enumerator
WEDGE_SIMPLE 
WEDGE_EQ 
WEDGE_DISABLED 

◆ anonymous enum

anonymous enum
private
Enumerator
TRACKLOG_ENABLED 
TRACKLOG_DISABLED 

Constructor & Destructor Documentation

◆ SkywatcherAltAzSimple()

SkywatcherAltAzSimple::SkywatcherAltAzSimple ( )

◆ ~SkywatcherAltAzSimple()

virtual SkywatcherAltAzSimple::~SkywatcherAltAzSimple ( )
virtualdefault

Member Function Documentation

◆ Abort()

bool SkywatcherAltAzSimple::Abort ( )
overridevirtual

Abort any telescope motion including tracking if possible.

Returns
True if successful, false otherwise
Note
If not implemented by the child class, this function by default returns false with a warning message.

Reimplemented from INDI::Telescope.

◆ GetAltAzPosition()

ln_hrz_posn SkywatcherAltAzSimple::GetAltAzPosition ( double  ra,
double  dec,
double  offset_in_sec = 0 
)
private

◆ getDefaultName()

const char * SkywatcherAltAzSimple::getDefaultName ( )
overridevirtual
Returns
Default name of the device.

Implements INDI::DefaultDevice.

◆ GetParkDeltaAz()

double SkywatcherAltAzSimple::GetParkDeltaAz ( ParkDirection_t  target_direction,
ParkPosition_t  target_position 
)

◆ GetRaDecPosition()

ln_equ_posn SkywatcherAltAzSimple::GetRaDecPosition ( double  alt,
double  az 
)
private

◆ GetSlewRate()

double SkywatcherAltAzSimple::GetSlewRate ( )

◆ Goto()

bool SkywatcherAltAzSimple::Goto ( double  ra,
double  dec 
)
overridevirtual

Move the scope to the supplied RA and DEC coordinates.

Returns
True if successful, false otherwise
Note
If not implemented by the child class, this function by default returns false with a warning message.

Reimplemented from INDI::Telescope.

◆ GuideEast()

IPState SkywatcherAltAzSimple::GuideEast ( uint32_t  ms)
overridevirtual

Guide east for ms milliseconds.

East is defined as RA+

Returns
IPS_OK if operation is completed successfully, IPS_BUSY if operation will take take to complete, or IPS_ALERT if operation failed.

Implements INDI::GuiderInterface.

◆ GuideNorth()

IPState SkywatcherAltAzSimple::GuideNorth ( uint32_t  ms)
overridevirtual

Guide north for ms milliseconds.

North is defined as DEC+

Returns
IPS_OK if operation is completed successfully, IPS_BUSY if operation will take take to complete, or IPS_ALERT if operation failed.

Implements INDI::GuiderInterface.

◆ GuideSouth()

IPState SkywatcherAltAzSimple::GuideSouth ( uint32_t  ms)
overridevirtual

Guide south for ms milliseconds.

South is defined as DEC-

Returns
IPS_OK if operation is completed successfully, IPS_BUSY if operation will take take to complete, or IPS_ALERT if operation failed.

Implements INDI::GuiderInterface.

◆ GuideWest()

IPState SkywatcherAltAzSimple::GuideWest ( uint32_t  ms)
overridevirtual

Guide west for ms milliseconds.

West is defined as RA-

Returns
IPS_OK if operation is completed successfully, IPS_BUSY if operation will take take to complete, or IPS_ALERT if operation failed.

Implements INDI::GuiderInterface.

◆ Handshake()

bool SkywatcherAltAzSimple::Handshake ( )
overridevirtual

perform handshake with device to check communication

Reimplemented from INDI::Telescope.

◆ initProperties()

bool SkywatcherAltAzSimple::initProperties ( )
overridevirtual

Called to initialize basic properties required all the time.

Reimplemented from INDI::Telescope.

◆ ISGetProperties()

void SkywatcherAltAzSimple::ISGetProperties ( const char *  dev)
overridevirtual

define the driver's properties to the client.

Usually, only a minimum set of properties are defined to the client in this function if the device is in disconnected state. Those properties should be enough to enable the client to establish a connection to the device. In addition to CONNECT/DISCONNECT, such properties may include port name, IP address, etc. You should check if the device is already connected, and if this is true, then you must define the remainder of the the properties to the client in this function. Otherwise, the remainder of the driver's properties are defined to the client in updateProperties() function which is called when a client connects/disconnects from a device.

Parameters
devname of the device
Note
This function is called by the INDI framework, do not call it directly. See LX200 Generic driver for an example implementation

Reimplemented from INDI::Telescope.

◆ ISNewBLOB()

bool SkywatcherAltAzSimple::ISNewBLOB ( const char *  dev,
const char *  name,
int  sizes[],
int  blobsizes[],
char *  blobs[],
char *  formats[],
char *  names[],
int  n 
)
overridevirtual

Process the client newBLOB command.

Note
This function is called by the INDI framework, do not call it directly.
Returns
True if any property was successfully processed, false otherwise.

Reimplemented from INDI::DefaultDevice.

◆ ISNewNumber()

bool SkywatcherAltAzSimple::ISNewNumber ( const char *  dev,
const char *  name,
double  values[],
char *  names[],
int  n 
)
overridevirtual

Process the client newNumber command.

Note
This function is called by the INDI framework, do not call it directly.
Returns
True if any property was successfully processed, false otherwise.

Reimplemented from INDI::Telescope.

◆ ISNewSwitch()

bool SkywatcherAltAzSimple::ISNewSwitch ( const char *  dev,
const char *  name,
ISState states,
char *  names[],
int  n 
)
overridevirtual

Process the client newSwitch command.

Note
This function is called by the INDI framework, do not call it directly.
Returns
True if any property was successfully processed, false otherwise.

Reimplemented from INDI::Telescope.

◆ ISNewText()

bool SkywatcherAltAzSimple::ISNewText ( const char *  dev,
const char *  name,
char *  texts[],
char *  names[],
int  n 
)
overridevirtual

Process the client newSwitch command.

Note
This function is called by the INDI framework, do not call it directly.
Returns
True if any property was successfully processed, false otherwise.

Reimplemented from INDI::Telescope.

◆ LogMessage()

void SkywatcherAltAzSimple::LogMessage ( const char *  format,
  ... 
)
private

◆ MoveNS()

bool SkywatcherAltAzSimple::MoveNS ( INDI_DIR_NS  dir,
TelescopeMotionCommand  command 
)
overridevirtual

Start or Stop the telescope motion in the direction dir.

Parameters
dirdirection of motion
commandStart or Stop command
Returns
True if successful, false otherwise
Note
If not implemented by the child class, this function by default returns false with a warning message.

Reimplemented from INDI::Telescope.

◆ MoveWE()

bool SkywatcherAltAzSimple::MoveWE ( INDI_DIR_WE  dir,
TelescopeMotionCommand  command 
)
overridevirtual

Move the telescope in the direction dir.

Parameters
dirdirection of motion
commandStart or Stop command
Returns
True if successful, false otherwise
Note
If not implemented by the child class, this function by default returns false with a warning message.

Reimplemented from INDI::Telescope.

◆ Park()

bool SkywatcherAltAzSimple::Park ( )
overridevirtual

Park the telescope to its home position.

Returns
True if successful, false otherwise
Note
If not implemented by the child class, this function by default returns false with a warning message.

Reimplemented from INDI::Telescope.

◆ ReadScopeStatus()

bool SkywatcherAltAzSimple::ReadScopeStatus ( )
overridevirtual

Read telescope status.

This function checks the following:

  1. Check if the link to the telescope is alive.
  2. Update telescope status: Idle, Slewing, Parking..etc.
  3. Read coordinates
Returns
True if reading scope status is OK, false if an error is encounterd.
Note
This function is not implemented in Telescope, it must be implemented in the child class

Implements INDI::Telescope.

◆ ResetGuidePulses()

void SkywatcherAltAzSimple::ResetGuidePulses ( )
private

◆ saveConfigItems()

bool SkywatcherAltAzSimple::saveConfigItems ( FILE *  fp)
overridevirtual

saveConfigItems Save specific properties in the provide config file handler.

Child class usually override this function to save their own properties and the base class saveConfigItems(fp) must be explicitly called by each child class. The Default Device saveConfigItems(fp) only save Debug properties options in the config file.

Parameters
fpPointer to config file handler
Returns
True if successful, false otherwise.

Reimplemented from INDI::Telescope.

◆ skywatcher_tty_read()

int SkywatcherAltAzSimple::skywatcher_tty_read ( int  fd,
char *  buf,
int  nbytes,
int  timeout,
int *  nbytes_read 
)
overrideprivatevirtual

Implements SkywatcherAPI.

◆ skywatcher_tty_write()

int SkywatcherAltAzSimple::skywatcher_tty_write ( int  fd,
const char *  buffer,
int  nbytes,
int *  nbytes_written 
)
overrideprivatevirtual

Implements SkywatcherAPI.

◆ Sync()

bool SkywatcherAltAzSimple::Sync ( double  ra,
double  dec 
)
overridevirtual

Set the telescope current RA and DEC coordinates to the supplied RA and DEC coordinates.

Returns
True if successful, false otherwise
Note
If not implemented by the child class, this function by default returns false with a warning message.

Reimplemented from INDI::Telescope.

◆ TimerHit()

void SkywatcherAltAzSimple::TimerHit ( )
overridevirtual

Called when setTimer() time is up.

Reimplemented from INDI::Telescope.

◆ UnPark()

bool SkywatcherAltAzSimple::UnPark ( )
overridevirtual

Unpark the telescope if already parked.

Returns
True if successful, false otherwise
Note
If not implemented by the child class, this function by default returns false with a warning message.

Reimplemented from INDI::Telescope.

◆ UpdateDetailedMountInformation()

void SkywatcherAltAzSimple::UpdateDetailedMountInformation ( bool  InformClient)
private

◆ updateProperties()

bool SkywatcherAltAzSimple::updateProperties ( )
overridevirtual

Called when connected state changes, to add/remove properties.

Reimplemented from INDI::Telescope.

◆ UpdateScopeConfigSwitch()

void SkywatcherAltAzSimple::UpdateScopeConfigSwitch ( )
private

Member Data Documentation

◆ AxisOneEncoderValues

INumber SkywatcherAltAzSimple::AxisOneEncoderValues[4]
private

◆ AxisOneEncoderValuesV

INumberVectorProperty SkywatcherAltAzSimple::AxisOneEncoderValuesV
private

◆ AxisOneInfo

INumber SkywatcherAltAzSimple::AxisOneInfo[4]
private

◆ AxisOneInfoV

INumberVectorProperty SkywatcherAltAzSimple::AxisOneInfoV
private

◆ AxisOneState

ISwitch SkywatcherAltAzSimple::AxisOneState[6]
private

◆ AxisOneStateV

ISwitchVectorProperty SkywatcherAltAzSimple::AxisOneStateV
private

◆ AxisTwoEncoderValues

INumber SkywatcherAltAzSimple::AxisTwoEncoderValues[4]
private

◆ AxisTwoEncoderValuesV

INumberVectorProperty SkywatcherAltAzSimple::AxisTwoEncoderValuesV
private

◆ AxisTwoInfo

INumber SkywatcherAltAzSimple::AxisTwoInfo[4]
private

◆ AxisTwoInfoV

INumberVectorProperty SkywatcherAltAzSimple::AxisTwoInfoV
private

◆ AxisTwoState

ISwitch SkywatcherAltAzSimple::AxisTwoState[6]
private

◆ AxisTwoStateV

ISwitchVectorProperty SkywatcherAltAzSimple::AxisTwoStateV
private

◆ BasicMountInfo

IText SkywatcherAltAzSimple::BasicMountInfo[4] {}
private

◆ BasicMountInfoV

ITextVectorProperty SkywatcherAltAzSimple::BasicMountInfoV
private

◆ CurrentTrackingTarget

ln_equ_posn SkywatcherAltAzSimple::CurrentTrackingTarget { 0, 0 }
private

◆ DetailedMountInfoPage

constexpr const char* SkywatcherAltAzSimple::DetailedMountInfoPage { "Detailed Mount Information" }
staticprivate

◆ GuideDeltaAlt

double SkywatcherAltAzSimple::GuideDeltaAlt { 0 }
private

◆ GuideDeltaAz

double SkywatcherAltAzSimple::GuideDeltaAz { 0 }
private

◆ GuidingPulses

std::vector<GuidingPulse> SkywatcherAltAzSimple::GuidingPulses
private

◆ GuidingRatesN

INumber SkywatcherAltAzSimple::GuidingRatesN[2]
private

◆ GuidingRatesNP

INumberVectorProperty SkywatcherAltAzSimple::GuidingRatesNP
private

◆ OldTrackingTarget

long SkywatcherAltAzSimple::OldTrackingTarget[2] { 0, 0 }
private

◆ ParkMovementDirection

ISwitch SkywatcherAltAzSimple::ParkMovementDirection[2]
private

◆ ParkMovementDirectionSP

ISwitchVectorProperty SkywatcherAltAzSimple::ParkMovementDirectionSP
private

◆ ParkPosition

ISwitch SkywatcherAltAzSimple::ParkPosition[4]
private

◆ ParkPositionSP

ISwitchVectorProperty SkywatcherAltAzSimple::ParkPositionSP
private

◆ RecoverAfterReconnection

bool SkywatcherAltAzSimple::RecoverAfterReconnection { false }
private

Recover after disconnection.

◆ ResetTrackingSeconds

bool SkywatcherAltAzSimple::ResetTrackingSeconds { false }
private

◆ SerialPortName

std::string SkywatcherAltAzSimple::SerialPortName
private

Save the serial port name.

◆ SlewModes

ISwitch SkywatcherAltAzSimple::SlewModes[2]
private

◆ SlewModesSP

ISwitchVectorProperty SkywatcherAltAzSimple::SlewModesSP
private

◆ TimeoutDuration

int SkywatcherAltAzSimple::TimeoutDuration { 500 }
private

◆ TrackingMsecs

int SkywatcherAltAzSimple::TrackingMsecs { 0 }
private

◆ TrackingStartTimer

int SkywatcherAltAzSimple::TrackingStartTimer { 0 }
private

◆ TrackingValuesN

INumber SkywatcherAltAzSimple::TrackingValuesN[3]
private

◆ TrackingValuesNP

INumberVectorProperty SkywatcherAltAzSimple::TrackingValuesNP
private

◆ TrackLogFileName

const std::string SkywatcherAltAzSimple::TrackLogFileName
private

◆ TrackLogMode

ISwitch SkywatcherAltAzSimple::TrackLogMode[2]
private

◆ TrackLogModeSP

ISwitchVectorProperty SkywatcherAltAzSimple::TrackLogModeSP
private

◆ UnparkPosition

ISwitch SkywatcherAltAzSimple::UnparkPosition[4]
private

◆ UnparkPositionSP

ISwitchVectorProperty SkywatcherAltAzSimple::UnparkPositionSP
private

◆ UpdateCount

int SkywatcherAltAzSimple::UpdateCount { 0 }
private

◆ VerboseScopeStatus

bool SkywatcherAltAzSimple::VerboseScopeStatus { false }
private

◆ WedgeMode

ISwitch SkywatcherAltAzSimple::WedgeMode[3]
private

◆ WedgeModeSP

ISwitchVectorProperty SkywatcherAltAzSimple::WedgeModeSP
private

The documentation for this class was generated from the following files: