Instrument Neutral Distributed Interface INDI 2.2.5
rbfocus.h
Go to the documentation of this file.
1
2
3#pragma once
4
5#include "indifocuser.h"
6#include <chrono>
7
8class RBFOCUS : public INDI::Focuser
9{
10 public:
11 RBFOCUS();
12 virtual ~RBFOCUS() override = default;
13 typedef enum {HOLD_OFF, HOLD_ON } focuserHold;
14 typedef enum {REVERSED, NORMAL } dir;
15
16 const char * getDefaultName() override;
17 virtual bool initProperties() override;
18 virtual bool updateProperties() override;
19 virtual bool ISNewSwitch(const char * dev, const char * name, ISState * states, char * names[], int n) override;
20 protected:
25 virtual bool Handshake() override;
26
32 virtual IPState MoveAbsFocuser(uint32_t targetTicks) override;
33
47 virtual bool SyncFocuser(uint32_t ticks) override;
48 virtual bool SetFocuserMaxPosition(uint32_t ticks) override;
49 virtual bool AbortFocuser() override;
50 virtual void TimerHit() override;
51
52 private:
53 bool Ack();
61 bool sendCommand(const char * cmd, char * res = nullptr);
62
63 // Read and update Temperature
64 bool readTemperature();
65 // Read and update Position
66 bool readPosition();
67 // Read Version
68 bool readVersion();
69 bool readHold();
70 bool setHold();
71 bool readDir();
72 bool setDir();
73 bool isMoving();
74 bool MaxPos();
75 // Read Only Temperature Reporting
76 INumber TemperatureN[1];
77 INumberVectorProperty TemperatureNP;
78 ISwitch focuserHoldS[2];
79 ISwitchVectorProperty focuserHoldSP;
80 ISwitch dirS[3];
82 double targetPos { 0 }, lastPos { 0 };
83 double lastTemperature { 0 };
84
85
86 static const uint32_t DRIVER_RES { 32 };
87
88 static const char DRIVER_DEL { '#' };
89 static const char DRIVER_DEL2 { ' ' };
90
91 static const uint8_t DRIVER_TIMEOUT { 10 };
92
93
94};
virtual IPState MoveAbsFocuser(uint32_t targetTicks) override
MoveAbsFocuser Move to an absolute target position.
Definition rbfocus.cpp:303
virtual bool SyncFocuser(uint32_t ticks) override
MoveRelFocuser Move focuser for a relative amount of ticks in a specific direction.
Definition rbfocus.cpp:296
virtual void TimerHit() override
Callback function to be called once SetTimer duration elapses.
Definition rbfocus.cpp:317
virtual bool Handshake() override
Handshake Try to communicate with Focuser and see if there is a valid response.
Definition rbfocus.cpp:77
virtual bool initProperties() override
Initializes the default properties for the focuser device. Sets up standard INDI properties,...
Definition rbfocus.cpp:21
@ REVERSED
Definition rbfocus.h:14
@ NORMAL
Definition rbfocus.h:14
virtual ~RBFOCUS() override=default
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 FocuserInter...
Definition rbfocus.cpp:371
virtual bool SetFocuserMaxPosition(uint32_t ticks) override
SetFocuserMaxPosition Update focuser maximum position. It only updates the PresetNP property limits.
Definition rbfocus.cpp:282
RBFOCUS()
Definition rbfocus.cpp:14
virtual bool updateProperties() override
Updates the state and definition of properties based on the current connection status....
Definition rbfocus.cpp:56
focuserHold
Definition rbfocus.h:13
@ HOLD_OFF
Definition rbfocus.h:13
@ HOLD_ON
Definition rbfocus.h:13
const char * getDefaultName() override
Definition rbfocus.cpp:94
virtual bool AbortFocuser() override
AbortFocuser all focus motion.
Definition rbfocus.cpp:359
ISState
Switch state.
Definition indiapi.h:148
IPState
Property state.
Definition indiapi.h:158
uint8_t cmd[4]
Definition pwc-ioctl.h:2
One number descriptor.
One switch descriptor.
Number vector property descriptor.
Definition indiapi.h:317
Switch vector property descriptor.
Definition indiapi.h:365