Instrument Neutral Distributed Interface INDI 2.2.5
Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | List of all members
INDI::Focuser Class Reference

#include <indifocuser.h>

Inheritance diagram for INDI::Focuser:
INDI::DefaultDevice INDI::FocuserInterface INDI::ParentDevice INDI::BaseDevice AAF2 ActiveFocuser AllunaTCS2 AlpacaFocuser AskarWAF CelestronSCT DMFC DeepSkyDadAF1 DeepSkyDadAF2 DeepSkyDadAF3 DreamFocuser EFA Esatto EsattoArco FCUSB FocusLynxBase FocusMaster FocusSim FocuserDriver Gemini HitecAstroDCFocuser IKunFocuser Integra Lakeside Microtouch MoonLite MoonLiteDRO MyFocuserPro2 NFocus NStep NightCrawler OnFocus PegasusFocusCube PegasusFocusCube3 PegasusProdigyMF PegasusScopsOAG PerfectStar PinefeatCEF RBFOCUS RainbowRSF RoboFocus SIEFS SestoSenso SestoSenso2 SestoSenso3 SmartFocus SteelDrive SteelDriveII TCFS TeenAstroFocuser USBFocusV3 astromechanics_foc iAFSRotator iEAFFocus lacerta_mfoc lacerta_mfoc_fmc

Public Types

enum  { CONNECTION_NONE = 1 << 0 , CONNECTION_SERIAL = 1 << 1 , CONNECTION_TCP = 1 << 2 }
 
- Public Types inherited from INDI::ParentDevice
enum  Type { Valid , Invalid }
 
- 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 }
 
enum  { INDI_ENABLED , INDI_DISABLED }
 
enum  WATCH { WATCH_NEW = 0 , WATCH_UPDATE , WATCH_NEW_OR_UPDATE }
 
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) , CORRELATOR_INTERFACE = (1 << 14) ,
  AUX_INTERFACE = (1 << 15) , OUTPUT_INTERFACE = (1 << 16) , INPUT_INTERFACE = (1 << 17) , POWER_INTERFACE = (1 << 18) ,
  IMU_INTERFACE = (1 << 19) , PAC_INTERFACE = (1 << 20) , SENSOR_INTERFACE = SPECTROGRAPH_INTERFACE | DETECTOR_INTERFACE | CORRELATOR_INTERFACE
}
 The DRIVER_INTERFACE enum defines the class of devices the driver implements. A driver may implement one or more interfaces. More...
 
typedef INDI::Properties Properties
 
- Public Types inherited from INDI::FocuserInterface
enum  FocusDirection { FOCUS_INWARD , FOCUS_OUTWARD }
 
enum  {
  FOCUSER_CAN_ABS_MOVE = 1 << 0 , FOCUSER_CAN_REL_MOVE = 1 << 1 , FOCUSER_CAN_ABORT = 1 << 2 , FOCUSER_CAN_REVERSE = 1 << 3 ,
  FOCUSER_CAN_SYNC = 1 << 4 , FOCUSER_HAS_VARIABLE_SPEED = 1 << 5 , FOCUSER_HAS_BACKLASH = 1 << 6
}
 

Public Member Functions

 Focuser ()
 Construct a new Focuser object. Initializes the controller and sets up the FocuserInterface.
 
virtual ~Focuser ()
 Destroy the Focuser object. Cleans up the controller resource.
 
virtual bool initProperties () override
 Initializes the default properties for the focuser device. Sets up standard INDI properties, presets, controller mappings, and connection types. Overrides DefaultDevice::initProperties.
 
virtual void ISGetProperties (const char *dev) override
 Handles client requests for property definitions for this device or all devices. Delegates to the base class and the internal controller. Overrides DefaultDevice::ISGetProperties.
 
virtual bool updateProperties () override
 Updates the state and definition of properties based on the current connection status. For example, preset properties are only defined if the device is connected and supports absolute moves. Overrides DefaultDevice::updateProperties.
 
virtual bool ISNewNumber (const char *dev, const char *name, double values[], char *names[], int n) override
 Processes incoming new number values from the client for this device. Handles updates to FocuserInterface properties and preset values. Overrides DefaultDevice::ISNewNumber.
 
virtual bool ISNewSwitch (const char *dev, const char *name, ISState *states, char *names[], int n) override
 Processes incoming new switch states from the client for this device. Handles updates to FocuserInterface properties and preset goto commands. Overrides DefaultDevice::ISNewSwitch.
 
virtual bool ISNewText (const char *dev, const char *name, char *texts[], char *names[], int n) override
 Processes incoming new text values from the client for this device. Delegates processing to the controller and the base class. Overrides DefaultDevice::ISNewText.
 
virtual bool ISSnoopDevice (XMLEle *root) override
 Processes properties snooped from other devices. Delegates processing to the controller and the base class. Overrides DefaultDevice::ISSnoopDevice.
 
void setSupportedConnections (const uint8_t &value)
 
uint8_t getSupportedConnections () const
 Get the currently configured supported connection modes.
 
- Public Member Functions inherited from INDI::DefaultDevice
 DefaultDevice ()
 
virtual ~DefaultDevice () override=default
 
void addAuxControls ()
 Add Debug, Simulation, and Configuration options to the driver.
 
void addDebugControl ()
 Add Debug control to the driver.
 
void addSimulationControl ()
 Add Simulation control to the driver.
 
void addConfigurationControl ()
 Add Configuration control to the driver.
 
void addPollPeriodControl ()
 Add Polling period control to the driver.
 
void addNicknameControl ()
 Add Nickname text property to the driver.
 
void resetProperties ()
 Set all properties to IDLE state.
 
void defineNumber (INumberVectorProperty *nvp)
 Define number vector to client & register it. Alternatively, IDDefNumber can be used but the property will not get registered and the driver will not be able to save configuration files.
 
void defineProperty (INumberVectorProperty *property)
 
void defineText (ITextVectorProperty *tvp)
 Define text vector to client & register it. Alternatively, IDDefText can be used but the property will not get registered and the driver will not be able to save configuration files.
 
void defineProperty (ITextVectorProperty *property)
 
void defineSwitch (ISwitchVectorProperty *svp)
 Define switch vector to client & register it. Alternatively, IDDefswitch can be used but the property will not get registered and the driver will not be able to save configuration files.
 
void defineProperty (ISwitchVectorProperty *property)
 
void defineLight (ILightVectorProperty *lvp)
 Define light vector to client & register it. Alternatively, IDDeflight can be used but the property will not get registered and the driver will not be able to save configuration files.
 
void defineProperty (ILightVectorProperty *property)
 
void defineBLOB (IBLOBVectorProperty *bvp)
 Define BLOB vector to client & register it. Alternatively, IDDefBLOB can be used but the property will not get registered and the driver will not be able to save configuration files.
 
void defineProperty (IBLOBVectorProperty *property)
 
void defineProperty (INDI::Property &property)
 
virtual bool deleteProperty (const char *propertyName)
 Delete a property and unregister it. It will also be deleted from all clients.
 
bool deleteProperty (INDI::Property &property)
 deleteProperty Delete a property and unregister it. It will also be deleted from all clients.
 
virtual void setConnected (bool status, IPState state=IPS_OK, const char *msg=nullptr)
 Set connection switch status in the client.
 
int SetTimer (uint32_t ms)
 Set a timer to call the function TimerHit after ms milliseconds.
 
void RemoveTimer (int id)
 Remove timer added with SetTimer.
 
virtual void TimerHit ()
 Callback function to be called once SetTimer duration elapses.
 
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.
 
uint16_t getMajorVersion () const
 
uint16_t getMinorVersion () const
 
virtual bool ISNewBLOB (const char *dev, const char *name, int sizes[], int blobsizes[], char *blobs[], char *formats[], char *names[], int n)
 Process the client newBLOB command.
 
bool ISNewProperty (INDI::Property &property, const std::string &elementName, const std::any &value)
 Generic convenience function to update a property element as if by client request, simulating an ISNew... call.
 
template<typename PropertyType , typename ValueType >
bool updateProperty (PropertyType &property, ValueType *values, char *names[], int n, std::function< bool()> updater, bool saveConfig=false)
 Generic helper function to update an INDI property based on an external operation.
 
uint32_t getDriverInterface () const
 
void setDriverInterface (uint32_t value)
 setInterface Set driver interface. By default the driver interface is set to GENERAL_DEVICE. You may send an ORed list of DeviceInterface values.
 
void watchDevice (const char *deviceName, const std::function< void(INDI::BaseDevice)> &callback)
 Add a device to the watch list.
 
- Public Member Functions inherited from INDI::ParentDevice
 ParentDevice (Type type)
 
 ~ParentDevice ()
 
 ParentDevice (ParentDevice &&other)=default
 
ParentDevice & operator= (ParentDevice &&other)=default
 
- Public Member Functions inherited from INDI::BaseDevice
 BaseDevice ()
 
virtual ~BaseDevice ()
 
void registerProperty (const INDI::Property &property)
 Register the property to be able to observe and update.
 
void registerProperty (const INDI::Property &property, INDI_PROPERTY_TYPE type)
 
int removeProperty (const char *name, char *errmsg)
 Remove a property.
 
void watchProperty (const char *name, const std::function< void(INDI::Property)> &callback, WATCH watch=WATCH_NEW)
 Call the callback function if property is available.
 
Property getProperty (const char *name, INDI_PROPERTY_TYPE type=INDI_UNKNOWN) const
 Return a property and its type given its name.
 
Properties getProperties ()
 Return a list of all properties in the device.
 
const Properties getProperties () const
 
INDI::PropertyNumber getNumber (const char *name) const
 
INDI::PropertyText getText (const char *name) const
 
INDI::PropertySwitch getSwitch (const char *name) const
 
INDI::PropertyLight getLight (const char *name) const
 
INDI::PropertyBlob getBLOB (const char *name) const
 
IPState getPropertyState (const char *name) const
 
IPerm getPropertyPermission (const char *name) const
 
void * getRawProperty (const char *name, INDI_PROPERTY_TYPE type=INDI_UNKNOWN) const
 Return a property and its type given its name.
 
void addMessage (const std::string &msg)
 Add message to the driver's message queue.
 
void checkMessage (XMLEle *root)
 
void doMessage (XMLEle *msg)
 
const std::string & messageQueue (size_t index) const
 
const std::string & lastMessage () const
 
bool isValid () const
 
bool isSameDevice (const BaseDevice &other) const
 
bool isConnected () const
 
void attach ()
 indicates that the device is ready
 
void detach ()
 indicates that the device is being removed
 
void setMediator (INDI::BaseMediator *mediator)
 Set the driver's mediator to receive notification of news devices and updated property values.
 
INDI::BaseMediator * getMediator () const
 
void setDeviceName (const char *dev)
 Set the device name.
 
const char * getDeviceName () const
 
bool isDeviceNameMatch (const char *otherName) const
 Check that the device name matches the argument.
 
bool isDeviceNameMatch (const std::string &otherName) const
 Check that the device name matches the argument.
 
const char * getDriverName () const
 
const char * getDriverExec () const
 
const char * getDriverVersion () const
 
uint16_t getDriverInterface () const
 getDriverInterface returns ORed values of DRIVER_INTERFACE. It presents the device classes supported by the driver.
 
bool buildSkeleton (const char *filename)
 Build driver properties from a skeleton file.
 
int buildProp (const INDI::LilXmlElement &root, char *errmsg, bool isDynamic=false)
 Build a property given the supplied XML element (defXXX)
 
int setValue (const INDI::LilXmlElement &root, char *errmsg)
 handle SetXXX commands from client
 
 operator BaseDevice * ()
 
BaseDevice * operator-> ()
 
bool operator!= (std::nullptr_t) const
 
bool operator== (std::nullptr_t) const
 
 operator bool () const
 
 operator bool ()
 
- Public Member Functions inherited from INDI::FocuserInterface
uint32_t GetCapability () const
 GetFocuserCapability returns the capability of the focuser.
 
void SetCapability (uint32_t cap)
 FI::SetCapability sets the focuser capabilities. All capabilities must be initialized.
 
bool CanAbsMove ()
 
bool CanRelMove ()
 
bool CanAbort ()
 
bool CanReverse ()
 
bool CanSync ()
 
bool HasVariableSpeed ()
 
bool HasBacklash ()
 

Static Public Member Functions

static void buttonHelper (const char *button_n, ISState state, void *context)
 Static callback function used by the Controller class. Forwards button press events to the appropriate Focuser instance's processButton method.
 
- Static Public Member Functions inherited from INDI::BaseDevice
static std::string getSharedFilePath (std::string fileName)
 

Public Attributes

enum INDI::Focuser:: { ... }  FocuserConnection
 
- Public Attributes inherited from INDI::FocuserInterface
enum INDI::FocuserInterface:: { ... }  FocuserCapability
 

Protected Member Functions

virtual bool saveConfigItems (FILE *fp) override
 
virtual bool Handshake ()
 Performs a device-specific handshake after a connection is established. This method should be overridden by concrete focuser drivers to implement any necessary communication checks or initialization sequences with the hardware. The base implementation does nothing and returns false.
 
virtual bool SetFocuserMaxPosition (uint32_t ticks) override
 SetFocuserMaxPosition Update focuser maximum position. It only updates the PresetNP property limits.
 
virtual void SyncPresets (uint32_t ticks)
 Synchronizes the range (min, max, step) of the preset number properties (PresetNP) based on the focuser's maximum absolute position.
 
void processButton (const char *button_n, ISState state)
 Processes button press events received from the controller via buttonHelper. Handles actions like "Focus In", "Focus Out", and "Abort Focus".
 
- Protected Member Functions inherited from INDI::DefaultDevice
void setDynamicPropertiesBehavior (bool defineEnabled, bool deleteEnabled)
 setDynamicPropertiesBehavior controls handling of dynamic properties. Dynamic properties are those generated from an external skeleton XML file. By default all properties, including dynamic properties, are defined to the client in ISGetProperties(). Furthermore, when űdeleteProperty(properyName) is called, the dynamic property is deleted by default, and can only be restored by calling buildSkeleton(filename) again. However, it is sometimes desirable to skip the definition of the dynamic properties on startup and delegate this task to the child class. To control this behavior, set enabled to false.
 
virtual bool loadConfig (bool silent=false, const char *property=nullptr)
 Load the last saved configuration file.
 
bool loadConfig (INDI::Property &property)
 Load property config from the configuration file. If the property configuration is successfully parsed, the corresponding ISNewXXX is called with the values parsed from the config file.
 
virtual bool saveConfig (bool silent=false, const char *property=nullptr)
 Save the current properties in a configuration file.
 
bool saveConfig (INDI::Property &property)
 Save a property in the configuration file.
 
virtual bool purgeConfig ()
 purgeConfig Remove config file from disk.
 
virtual bool saveAllConfigItems (FILE *fp)
 saveAllConfigItems Save all the drivers' properties in the configuration file
 
virtual bool loadDefaultConfig ()
 Load the default configuration file.
 
void setDebug (bool enable)
 Toggle driver debug status A driver can be more verbose if Debug option is enabled by the client.
 
void setSimulation (bool enable)
 Toggle driver simulation status A driver can run in simulation mode if Simulation option is enabled by the client.
 
virtual void debugTriggered (bool enable)
 Inform driver that the debug option was triggered. This function is called after setDebug is triggered by the client. Reimplement this function if your driver needs to take specific action after debug is enabled/disabled. Otherwise, you can use isDebug() to check if simulation is enabled or disabled.
 
virtual void simulationTriggered (bool enable)
 Inform driver that the simulation option was triggered. This function is called after setSimulation is triggered by the client. Reimplement this function if your driver needs to take specific action after simulation is enabled/disabled. Otherwise, you can use isSimulation() to check if simulation is enabled or disabled.
 
bool isDebug () const
 
bool isSimulation () const
 
virtual bool Connect ()
 Connect to the device. INDI::DefaultDevice implementation connects to appropriate connection interface (Serial or TCP) governed by connectionMode. If connection is successful, it proceed to call Handshake() function to ensure communication with device is successful. For other communication interface, override the method in the child class implementation.
 
virtual bool Disconnect ()
 Disconnect from device.
 
void registerConnection (Connection::Interface *newConnection)
 registerConnection Add new connection plugin to the existing connection pool. The connection type shall be defined to the client in ISGetProperties()
 
bool unRegisterConnection (Connection::Interface *existingConnection)
 unRegisterConnection Remove connection from existing pool
 
Connection::Interface * getActiveConnection ()
 
void setActiveConnection (Connection::Interface *existingConnection)
 setActiveConnection Switch the active connection to the passed connection plugin
 
void setDefaultPollingPeriod (uint32_t msec)
 setDefaultPollingPeriod Change the default polling period to call TimerHit() function in the driver.
 
void setPollingPeriodRange (uint32_t minimum, uint32_t maximum)
 setPollingPeriodRange Set the range permitted by the polling range in milliseconds
 
uint32_t getPollingPeriod () const
 getPollingPeriod Return the polling period.
 
void setCurrentPollingPeriod (uint32_t msec)
 setCurrentPollingPeriod Change the current polling period to call TimerHit() function in the driver.
 
uint32_t getCurrentPollingPeriod () const
 getCurrentPollingPeriod Return the current polling period.
 
uint32_t & refCurrentPollingPeriod () __attribute__((deprecated))
 
uint32_t refCurrentPollingPeriod () const __attribute__((deprecated))
 
bool isConfigLoading () const
 isConfigLoading Check if driver configuration is currently in the process of getting loaded.
 
bool isInitializationComplete () const
 isInitializationComplete Check if driver initialization is complete.
 
void syncDriverInfo ()
 syncDriverInfo sends the current driver information to the client.
 
virtual const char * getDefaultName ()=0
 
void setDeviceNickname (const char *nick)
 Set the device nickname.
 
const char * getDeviceNickname ()
 
const char * lookupDeviceNicknameFromId (const char *identifier, const char *device=nullptr)
 Lookup device nickname for an identifier.
 
bool setDeviceNicknameFromId (const char *identifier)
 Set device nickname based on an identifier.
 
void saveNicknameId (const char *nickname, const char *identifier)
 
virtual void nicknameSet (const char *nickname)
 Inform driver that the nickname has been set.
 
 DefaultDevice (const std::shared_ptr< DefaultDevicePrivate > &dd)
 
- Protected Member Functions inherited from INDI::ParentDevice
 ParentDevice (const std::shared_ptr< ParentDevicePrivate > &dd)
 
- Protected Member Functions inherited from INDI::BaseDevice
 BaseDevice (BaseDevicePrivate &dd)
 
 BaseDevice (const std::shared_ptr< BaseDevicePrivate > &dd)
 
- Protected Member Functions inherited from INDI::FocuserInterface
 FocuserInterface (DefaultDevice *defaultDevice)
 
virtual ~FocuserInterface ()=default
 
void initProperties (const char *groupName)
 Initialize focuser properties. It is recommended to call this function within initProperties() of your primary device.
 
bool updateProperties ()
 updateProperties Define or Delete Rotator properties based on the connection status of the base device
 
bool processNumber (const char *dev, const char *name, double values[], char *names[], int n)
 Process focus number properties.
 
bool processSwitch (const char *dev, const char *name, ISState *states, char *names[], int n)
 Process focus switch properties.
 
virtual bool SetFocuserSpeed (int speed)
 SetFocuserSpeed Set Focuser speed.
 
virtual IPState MoveFocuser (FocusDirection dir, int speed, uint16_t duration)
 MoveFocuser the focuser in a particular direction with a specific speed for a finite duration.
 
virtual IPState MoveAbsFocuser (uint32_t targetTicks)
 MoveFocuser the focuser to an absolute position.
 
virtual IPState MoveRelFocuser (FocusDirection dir, uint32_t ticks)
 MoveFocuser the focuser to an relative position.
 
virtual bool ReverseFocuser (bool enabled)
 ReverseFocuser Reverse focuser motion direction.
 
virtual bool SyncFocuser (uint32_t ticks)
 SyncFocuser Set current position to ticks without moving the focuser.
 
virtual bool SetFocuserBacklash (int32_t steps)
 SetFocuserBacklash Set the focuser backlash compensation value.
 
virtual bool SetFocuserBacklashEnabled (bool enabled)
 SetFocuserBacklashEnabled Enables or disables the focuser backlash compensation.
 
virtual bool AbortFocuser ()
 AbortFocuser all focus motion.
 
bool saveConfigItems (FILE *fp)
 saveConfigItems save focuser properties defined in the interface in config file
 

Protected Attributes

INDI::PropertyNumber PresetNP {3}
 
INDI::PropertySwitch PresetGotoSP {3}
 
Controller * controller
 
Connection::Serial * serialConnection = nullptr
 
Connection::TCP * tcpConnection = nullptr
 
int PortFD = -1
 
- Protected Attributes inherited from INDI::BaseDevice
std::shared_ptr< BaseDevicePrivate > d_ptr
 
- Protected Attributes inherited from INDI::FocuserInterface
INDI::PropertyNumber FocusSpeedNP {1}
 
INDI::PropertySwitch FocusMotionSP {2}
 
INDI::PropertyNumber FocusTimerNP {1}
 
INDI::PropertyNumber FocusAbsPosNP {1}
 
INDI::PropertyNumber FocusRelPosNP {1}
 
INDI::PropertyNumber FocusMaxPosNP {1}
 
INDI::PropertyNumber FocusSyncNP {1}
 
INDI::PropertySwitch FocusAbortSP {1}
 
INDI::PropertySwitch FocusReverseSP {2}
 
INDI::PropertySwitch FocusBacklashSP {2}
 
INDI::PropertyNumber FocusBacklashNP {1}
 
uint32_t capability
 
double lastTimerValue = { 0 }
 
DefaultDevice * m_defaultDevice { nullptr }
 

Detailed Description

Definition at line 43 of file indifocuser.h.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
Enumerator
CONNECTION_NONE 
CONNECTION_SERIAL 

Do not use any connection plugin

CONNECTION_TCP 

For regular serial and bluetooth connections

Definition at line 60 of file indifocuser.h.

Constructor & Destructor Documentation

◆ Focuser()

Focuser::Focuser ( )

Construct a new Focuser object. Initializes the controller and sets up the FocuserInterface.

Definition at line 30 of file indifocuser.cpp.

◆ ~Focuser()

Focuser::~Focuser ( )
virtual

Destroy the Focuser object. Cleans up the controller resource.

Definition at line 37 of file indifocuser.cpp.

Member Function Documentation

◆ buttonHelper()

void Focuser::buttonHelper ( const char *  button_n,
ISState  state,
void *  context 
)
static

Static callback function used by the Controller class. Forwards button press events to the appropriate Focuser instance's processButton method.

Parameters
button_nThe name of the button element that changed state.
stateThe new state of the button (ISS_ON or ISS_OFF).
contextA pointer to the Focuser instance associated with the controller.

Definition at line 233 of file indifocuser.cpp.

◆ getSupportedConnections()

uint8_t INDI::Focuser::getSupportedConnections ( ) const
inline

Get the currently configured supported connection modes.

Returns
A bitmask (ORed combination) of FocuserConnection enum values.

Definition at line 144 of file indifocuser.h.

◆ Handshake()

bool Focuser::Handshake ( )
protectedvirtual

Performs a device-specific handshake after a connection is established. This method should be overridden by concrete focuser drivers to implement any necessary communication checks or initialization sequences with the hardware. The base implementation does nothing and returns false.

Returns
true if the handshake is successful, false otherwise.

Reimplemented in TeenAstroFocuser, AAF2, AllunaTCS2, AskarWAF, astromechanics_foc, CelestronSCT, DeepSkyDadAF1, DeepSkyDadAF2, DeepSkyDadAF3, DMFC, DreamFocuser, Esatto, EsattoArco, FocusLynxBase, iEAFFocus, IKunFocuser, AlpacaFocuser, lacerta_mfoc, lacerta_mfoc_fmc, Lakeside, Microtouch, MoonLite, MoonLiteDRO, MyFocuserPro2, NFocus, NStep, OnFocus, PegasusFocusCube, PegasusFocusCube3, PegasusProdigyMF, PegasusScopsOAG, PinefeatCEF, EFA, RainbowRSF, RBFOCUS, RoboFocus, SestoSenso, SestoSenso2, SestoSenso3, SmartFocus, SteelDrive, SteelDriveII, TCFS, USBFocusV3, Gemini, iAFSRotator, Integra, NightCrawler, and FocuserDriver.

Definition at line 216 of file indifocuser.cpp.

◆ initProperties()

bool Focuser::initProperties ( )
overridevirtual

◆ ISGetProperties()

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

Handles client requests for property definitions for this device or all devices. Delegates to the base class and the internal controller. Overrides DefaultDevice::ISGetProperties.

Parameters
devThe device name, or nullptr to request properties for all devices.

Reimplemented from INDI::DefaultDevice.

Reimplemented in ActiveFocuser, DMFC, FocusSim, FocusLynxBase, lacerta_mfoc, and lacerta_mfoc_fmc.

Definition at line 94 of file indifocuser.cpp.

◆ ISNewNumber()

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

Processes incoming new number values from the client for this device. Handles updates to FocuserInterface properties and preset values. Overrides DefaultDevice::ISNewNumber.

Parameters
devThe target device name.
nameThe property name.
valuesArray of new numerical values.
namesArray of element names corresponding to the values.
nThe number of elements being updated.
Returns
true if the number property was successfully processed, false otherwise.

Reimplemented from INDI::DefaultDevice.

Reimplemented in TeenAstroFocuser, ActiveFocuser, AllunaTCS2, astromechanics_foc, DeepSkyDadAF1, DeepSkyDadAF2, DeepSkyDadAF3, DMFC, EsattoArco, FocusSim, FocusLynxBase, HitecAstroDCFocuser, IKunFocuser, lacerta_mfoc, lacerta_mfoc_fmc, Lakeside, Microtouch, MoonLite, MoonLiteDRO, MyFocuserPro2, NFocus, NStep, OnFocus, PegasusFocusCube, PegasusFocusCube3, PegasusProdigyMF, PerfectStar, PinefeatCEF, EFA, RoboFocus, SestoSenso2, SestoSenso3, SmartFocus, SteelDrive, SteelDriveII, TCFS, USBFocusV3, Gemini, iAFSRotator, Integra, NightCrawler, and FocusMaster.

Definition at line 128 of file indifocuser.cpp.

◆ ISNewSwitch()

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

Processes incoming new switch states from the client for this device. Handles updates to FocuserInterface properties and preset goto commands. Overrides DefaultDevice::ISNewSwitch.

Parameters
devThe target device name.
nameThe property name.
statesArray of new switch states (ISS_ON or ISS_OFF).
namesArray of element names corresponding to the states.
nThe number of elements being updated.
Returns
true if the switch property was successfully processed, false otherwise.

Reimplemented from INDI::DefaultDevice.

Reimplemented in TeenAstroFocuser, ActiveFocuser, AllunaTCS2, CelestronSCT, DeepSkyDadAF1, DeepSkyDadAF2, DeepSkyDadAF3, DMFC, DreamFocuser, Esatto, EsattoArco, FCUSB, FocusSim, FocusLynxBase, iEAFFocus, IKunFocuser, AlpacaFocuser, lacerta_mfoc, lacerta_mfoc_fmc, Lakeside, Microtouch, MoonLite, MoonLiteDRO, MyFocuserPro2, NStep, OnFocus, PegasusFocusCube, PegasusScopsOAG, PinefeatCEF, EFA, RainbowRSF, RBFOCUS, RoboFocus, SestoSenso, SestoSenso2, SestoSenso3, SteelDrive, SteelDriveII, TCFS, USBFocusV3, Gemini, iAFSRotator, Integra, NightCrawler, FocuserDriver, and FocusMaster.

Definition at line 150 of file indifocuser.cpp.

◆ ISNewText()

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

Processes incoming new text values from the client for this device. Delegates processing to the controller and the base class. Overrides DefaultDevice::ISNewText.

Parameters
devThe target device name.
nameThe property name.
textsArray of new text values.
namesArray of element names corresponding to the texts.
nThe number of elements being updated.
Returns
true if the text property was handled by the base class, false otherwise.

Reimplemented from INDI::DefaultDevice.

Reimplemented in FocusLynxBase, AlpacaFocuser, and Gemini.

Definition at line 202 of file indifocuser.cpp.

◆ ISSnoopDevice()

bool Focuser::ISSnoopDevice ( XMLEle *  root)
overridevirtual

Processes properties snooped from other devices. Delegates processing to the controller and the base class. Overrides DefaultDevice::ISSnoopDevice.

Parameters
rootThe XML element representing the snooped property definition or update.
Returns
true if the snooped property was handled by the base class, false otherwise.

Reimplemented from INDI::DefaultDevice.

Definition at line 209 of file indifocuser.cpp.

◆ processButton()

void Focuser::processButton ( const char *  button_n,
ISState  state 
)
protected

Processes button press events received from the controller via buttonHelper. Handles actions like "Focus In", "Focus Out", and "Abort Focus".

Parameters
button_nThe name of the button element that was pressed.
stateThe state of the button (typically ISS_ON for presses).

Definition at line 238 of file indifocuser.cpp.

◆ saveConfigItems()

bool Focuser::saveConfigItems ( FILE *  fp)
overrideprotectedvirtual
@brief saveConfigItems Saves the Device Port and Focuser Presets in the configuration file
@param fp pointer to configuration file
Returns
true always.

Reimplemented from INDI::DefaultDevice.

Reimplemented in TeenAstroFocuser, AllunaTCS2, DeepSkyDadAF1, DeepSkyDadAF2, DeepSkyDadAF3, DMFC, EsattoArco, FCUSB, FocusSim, FocusLynxBase, HitecAstroDCFocuser, lacerta_mfoc, lacerta_mfoc_fmc, MoonLite, MoonLiteDRO, MyFocuserPro2, NFocus, NStep, PegasusFocusCube, PegasusProdigyMF, PegasusScopsOAG, EFA, RoboFocus, SestoSenso2, SestoSenso3, SmartFocus, SteelDrive, SteelDriveII, TCFS, Gemini, Integra, NightCrawler, and FocuserDriver.

Definition at line 221 of file indifocuser.cpp.

◆ SetFocuserMaxPosition()

bool Focuser::SetFocuserMaxPosition ( uint32_t  ticks)
overrideprotectedvirtual

SetFocuserMaxPosition Update focuser maximum position. It only updates the PresetNP property limits.

Parameters
ticksThe new maximum position in focuser ticks.
Returns
true always.

Reimplemented from INDI::FocuserInterface.

Reimplemented in AskarWAF, DeepSkyDadAF1, DeepSkyDadAF2, DeepSkyDadAF3, FocusLynxBase, iEAFFocus, IKunFocuser, lacerta_mfoc, lacerta_mfoc_fmc, MyFocuserPro2, EFA, RBFOCUS, SIEFS, SteelDriveII, iAFSRotator, and TeenAstroFocuser.

Definition at line 366 of file indifocuser.cpp.

◆ setSupportedConnections()

void Focuser::setSupportedConnections ( const uint8_t &  value)
@brief setConnection Set Focuser connection mode. Child class should call this in the constructor before Focuser registers
any connection interfaces
Parameters
valueA bitmask (ORed combination) of FocuserConnection enum values (e.g., CONNECTION_SERIAL | CONNECTION_TCP).

Definition at line 353 of file indifocuser.cpp.

◆ SyncPresets()

void Focuser::SyncPresets ( uint32_t  ticks)
protectedvirtual

Synchronizes the range (min, max, step) of the preset number properties (PresetNP) based on the focuser's maximum absolute position.

Parameters
ticksThe maximum absolute position in focuser ticks.

Definition at line 372 of file indifocuser.cpp.

◆ updateProperties()

bool Focuser::updateProperties ( )
overridevirtual

Member Data Documentation

◆ controller

Controller* INDI::Focuser::controller
protected

Definition at line 200 of file indifocuser.h.

◆ []

enum { ... } INDI::Focuser::FocuserConnection

◆ PortFD

int INDI::Focuser::PortFD = -1
protected

Definition at line 205 of file indifocuser.h.

◆ PresetGotoSP

INDI::PropertySwitch INDI::Focuser::PresetGotoSP {3}
protected

INDI Property for commanding a move to a stored preset position.

Definition at line 190 of file indifocuser.h.

◆ PresetNP

INDI::PropertyNumber INDI::Focuser::PresetNP {3}
protected

INDI Property for storing focus position presets.

Definition at line 189 of file indifocuser.h.

◆ serialConnection

Connection::Serial* INDI::Focuser::serialConnection = nullptr
protected

Definition at line 202 of file indifocuser.h.

◆ tcpConnection

Connection::TCP* INDI::Focuser::tcpConnection = nullptr
protected

Definition at line 203 of file indifocuser.h.


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