TwiceAsNice  2019-02-18
Classes | Macros | Functions | Variables
pmc8driver.cpp File Reference
#include "pmc8driver.h"
#include "indicom.h"
#include "indilogger.h"
#include "inditelescope.h"
#include <libnova/julian_day.h>
#include <libnova/sidereal_time.h>
#include <math.h>
#include <string.h>
#include <termios.h>
#include <unistd.h>
#include <sys/time.h>
Include dependency graph for pmc8driver.cpp:

Classes

struct  PulseGuideState
 

Macros

#define PMC8_TIMEOUT   5 /* FD timeout in seconds */
 
#define PMC8_SIMUL_VERSION_RESP   "ESGvES06B9T9"
 
#define PMC8_AXIS0_SCALE   4608000.0
 
#define PMC8_AXIS1_SCALE   4608000.0
 
#define ARCSEC_IN_CIRCLE   1296000.0
 
#define PMC8_MAX_PRECISE_MOTOR_RATE   2641
 
#define PMC8_MAX_MOVE_MOTOR_RATE   (256*15)
 
#define PMC8_MINSLEWRATE   55
 
#define PMC8_PULSE_GUIDE_MIN_MS   20
 
#define PMC8_PULSE_GUIDE_MAX_NOTIMER   250
 
#define PMC8_PULSE_GUIDE_MAX_CURRATE   120
 

Functions

void set_pmc8_debug (bool enable)
 
void set_pmc8_simulation (bool enable)
 
void set_pmc8_device (const char *name)
 
void set_pmc8_location (double latitude, double longitude)
 
void set_pmc8_sim_system_status (PMC8_SYSTEM_STATUS value)
 
void set_pmc8_sim_track_rate (PMC8_TRACK_RATE value)
 
void set_pmc8_sim_move_rate (PMC8_MOVE_RATE value)
 
void set_pmc8_sim_ra (double ra)
 
void set_pmc8_sim_dec (double dec)
 
bool check_pmc8_connection (int fd)
 
bool get_pmc8_model (int fd, FirmwareInfo *info)
 
bool get_pmc8_main_firmware (int fd, FirmwareInfo *info)
 
bool get_pmc8_firmware (int fd, FirmwareInfo *info)
 Get All firmware informatin in addition to mount model. More...
 
bool get_pmc8_tracking_rate_axis (int fd, PMC8_AXIS axis, int &rate)
 
bool get_pmc8_direction_axis (int fd, PMC8_AXIS axis, int &dir)
 
bool set_pmc8_direction_axis (int fd, PMC8_AXIS axis, int dir, bool fast)
 
bool get_pmc8_is_scope_slewing (int fd, bool &isslew)
 
int convert_movespeedindex_to_rate (int mode)
 
bool start_pmc8_motion (int fd, PMC8_DIRECTION dir, int mode)
 
bool stop_pmc8_tracking_motion (int fd)
 
bool stop_pmc8_motion (int fd, PMC8_DIRECTION dir)
 
void convert_motor_counts_to_hex (int val, char *hex)
 
bool convert_precise_rate_to_motor (float rate, int *mrate)
 
bool convert_move_rate_to_motor (float rate, int *mrate)
 
bool convert_motor_rate_to_move_rate (int mrate, float *rate)
 
bool set_pmc8_axis_motor_rate (int fd, PMC8_AXIS axis, int mrate, bool fast)
 
bool set_pmc8_axis_move_rate (int fd, PMC8_AXIS axis, float rate)
 
bool set_pmc8_track_mode (int fd, uint rate)
 
bool set_pmc8_custom_ra_track_rate (int fd, double rate)
 
bool set_pmc8_custom_dec_track_rate (int fd, double rate)
 
bool set_pmc8_custom_ra_move_rate (int fd, double rate)
 
bool set_pmc8_custom_dec_move_rate (int fd, double rate)
 
bool set_pmc8_guide_rate (int fd, double rate)
 
bool get_pmc8_guide_rate (int fd, double *rate)
 
bool start_pmc8_guide (int fd, PMC8_DIRECTION gdir, int ms, long &timetaken_us)
 
bool stop_pmc8_guide (int fd, PMC8_DIRECTION gdir)
 
int convert_axispos_to_motor (int axispos)
 
bool convert_ra_to_motor (double ra, INDI::Telescope::TelescopePierSide sop, int *mcounts)
 
bool convert_motor_to_radec (int racounts, int deccounts, double &ra_value, double &dec_value)
 
bool convert_dec_to_motor (double dec, INDI::Telescope::TelescopePierSide sop, int *mcounts)
 
bool set_pmc8_target_position_axis (int fd, PMC8_AXIS axis, int point)
 
bool set_pmc8_target_position (int fd, int rapoint, int decpoint)
 
bool set_pmc8_position_axis (int fd, PMC8_AXIS axis, int point)
 
bool set_pmc8_position (int fd, int rapoint, int decpoint)
 
bool get_pmc8_position_axis (int fd, PMC8_AXIS axis, int &point)
 
bool get_pmc8_position (int fd, int &rapoint, int &decpoint)
 
bool park_pmc8 (int fd)
 
bool unpark_pmc8 (int fd)
 
bool abort_pmc8 (int fd)
 
bool slew_pmc8 (int fd, double ra, double dec)
 
INDI::Telescope::TelescopePierSide destSideOfPier (double ra, double dec)
 
bool sync_pmc8 (int fd, double ra, double dec)
 
bool set_pmc8_radec (int fd, double ra, double dec)
 
bool get_pmc8_coords (int fd, double &ra, double &dec)
 Get RA/DEC. More...
 

Variables

bool pmc8_debug = false
 
bool pmc8_simulation = false
 
char pmc8_device [MAXINDIDEVICE] = "PMC8"
 
double pmc8_latitude = 0
 
double pmc8_longitude = 0
 
double pmc8_guide_rate = 0.5*15.0
 
PMC8Info simPMC8Info
 
PulseGuideState NS_PulseGuideState
 
PulseGuideState EW_PulseGuideState
 
struct {
   double   ra
 
   double   dec
 
   int   raDirection
 
   int   decDirection
 
   double   trackRate
 
   double   moveRate
 
   double   guide_rate
 
simPMC8Data
 

Macro Definition Documentation

◆ ARCSEC_IN_CIRCLE

#define ARCSEC_IN_CIRCLE   1296000.0

◆ PMC8_AXIS0_SCALE

#define PMC8_AXIS0_SCALE   4608000.0

◆ PMC8_AXIS1_SCALE

#define PMC8_AXIS1_SCALE   4608000.0

◆ PMC8_MAX_MOVE_MOTOR_RATE

#define PMC8_MAX_MOVE_MOTOR_RATE   (256*15)

◆ PMC8_MAX_PRECISE_MOTOR_RATE

#define PMC8_MAX_PRECISE_MOTOR_RATE   2641

◆ PMC8_MINSLEWRATE

#define PMC8_MINSLEWRATE   55

◆ PMC8_PULSE_GUIDE_MAX_CURRATE

#define PMC8_PULSE_GUIDE_MAX_CURRATE   120

◆ PMC8_PULSE_GUIDE_MAX_NOTIMER

#define PMC8_PULSE_GUIDE_MAX_NOTIMER   250

◆ PMC8_PULSE_GUIDE_MIN_MS

#define PMC8_PULSE_GUIDE_MIN_MS   20

◆ PMC8_SIMUL_VERSION_RESP

#define PMC8_SIMUL_VERSION_RESP   "ESGvES06B9T9"

◆ PMC8_TIMEOUT

#define PMC8_TIMEOUT   5 /* FD timeout in seconds */

Function Documentation

◆ abort_pmc8()

bool abort_pmc8 ( int  fd)

◆ check_pmc8_connection()

bool check_pmc8_connection ( int  fd)

◆ convert_axispos_to_motor()

int convert_axispos_to_motor ( int  axispos)

◆ convert_dec_to_motor()

bool convert_dec_to_motor ( double  dec,
INDI::Telescope::TelescopePierSide  sop,
int *  mcounts 
)

◆ convert_motor_counts_to_hex()

void convert_motor_counts_to_hex ( int  val,
char *  hex 
)

◆ convert_motor_rate_to_move_rate()

bool convert_motor_rate_to_move_rate ( int  mrate,
float *  rate 
)

◆ convert_motor_to_radec()

bool convert_motor_to_radec ( int  racounts,
int  deccounts,
double &  ra_value,
double &  dec_value 
)

◆ convert_move_rate_to_motor()

bool convert_move_rate_to_motor ( float  rate,
int *  mrate 
)

◆ convert_movespeedindex_to_rate()

int convert_movespeedindex_to_rate ( int  mode)

◆ convert_precise_rate_to_motor()

bool convert_precise_rate_to_motor ( float  rate,
int *  mrate 
)

◆ convert_ra_to_motor()

bool convert_ra_to_motor ( double  ra,
INDI::Telescope::TelescopePierSide  sop,
int *  mcounts 
)

◆ destSideOfPier()

INDI::Telescope::TelescopePierSide destSideOfPier ( double  ra,
double  dec 
)

◆ get_pmc8_coords()

bool get_pmc8_coords ( int  fd,
double &  ra,
double &  dec 
)

Get RA/DEC.

◆ get_pmc8_direction_axis()

bool get_pmc8_direction_axis ( int  fd,
PMC8_AXIS  axis,
int &  dir 
)

◆ get_pmc8_firmware()

bool get_pmc8_firmware ( int  fd,
FirmwareInfo info 
)

Get All firmware informatin in addition to mount model.

◆ get_pmc8_guide_rate()

bool get_pmc8_guide_rate ( int  fd,
double *  rate 
)

◆ get_pmc8_is_scope_slewing()

bool get_pmc8_is_scope_slewing ( int  fd,
bool isslew 
)

◆ get_pmc8_main_firmware()

bool get_pmc8_main_firmware ( int  fd,
FirmwareInfo info 
)

◆ get_pmc8_model()

bool get_pmc8_model ( int  fd,
FirmwareInfo info 
)

◆ get_pmc8_position()

bool get_pmc8_position ( int  fd,
int &  rapoint,
int &  decpoint 
)

◆ get_pmc8_position_axis()

bool get_pmc8_position_axis ( int  fd,
PMC8_AXIS  axis,
int &  point 
)

◆ get_pmc8_tracking_rate_axis()

bool get_pmc8_tracking_rate_axis ( int  fd,
PMC8_AXIS  axis,
int &  rate 
)

◆ park_pmc8()

bool park_pmc8 ( int  fd)

◆ set_pmc8_axis_motor_rate()

bool set_pmc8_axis_motor_rate ( int  fd,
PMC8_AXIS  axis,
int  mrate,
bool  fast 
)

◆ set_pmc8_axis_move_rate()

bool set_pmc8_axis_move_rate ( int  fd,
PMC8_AXIS  axis,
float  rate 
)

◆ set_pmc8_custom_dec_move_rate()

bool set_pmc8_custom_dec_move_rate ( int  fd,
double  rate 
)

◆ set_pmc8_custom_dec_track_rate()

bool set_pmc8_custom_dec_track_rate ( int  fd,
double  rate 
)

◆ set_pmc8_custom_ra_move_rate()

bool set_pmc8_custom_ra_move_rate ( int  fd,
double  rate 
)

◆ set_pmc8_custom_ra_track_rate()

bool set_pmc8_custom_ra_track_rate ( int  fd,
double  rate 
)

◆ set_pmc8_debug()

void set_pmc8_debug ( bool  enable)

◆ set_pmc8_device()

void set_pmc8_device ( const char *  name)

◆ set_pmc8_direction_axis()

bool set_pmc8_direction_axis ( int  fd,
PMC8_AXIS  axis,
int  dir,
bool  fast 
)

◆ set_pmc8_guide_rate()

bool set_pmc8_guide_rate ( int  fd,
double  rate 
)

◆ set_pmc8_location()

void set_pmc8_location ( double  latitude,
double  longitude 
)

◆ set_pmc8_position()

bool set_pmc8_position ( int  fd,
int  rapoint,
int  decpoint 
)

◆ set_pmc8_position_axis()

bool set_pmc8_position_axis ( int  fd,
PMC8_AXIS  axis,
int  point 
)

◆ set_pmc8_radec()

bool set_pmc8_radec ( int  fd,
double  ra,
double  dec 
)

◆ set_pmc8_sim_dec()

void set_pmc8_sim_dec ( double  dec)

◆ set_pmc8_sim_move_rate()

void set_pmc8_sim_move_rate ( PMC8_MOVE_RATE  value)

◆ set_pmc8_sim_ra()

void set_pmc8_sim_ra ( double  ra)

◆ set_pmc8_sim_system_status()

void set_pmc8_sim_system_status ( PMC8_SYSTEM_STATUS  value)

◆ set_pmc8_sim_track_rate()

void set_pmc8_sim_track_rate ( PMC8_TRACK_RATE  value)

◆ set_pmc8_simulation()

void set_pmc8_simulation ( bool  enable)

◆ set_pmc8_target_position()

bool set_pmc8_target_position ( int  fd,
int  rapoint,
int  decpoint 
)

◆ set_pmc8_target_position_axis()

bool set_pmc8_target_position_axis ( int  fd,
PMC8_AXIS  axis,
int  point 
)

◆ set_pmc8_track_mode()

bool set_pmc8_track_mode ( int  fd,
uint  rate 
)

◆ slew_pmc8()

bool slew_pmc8 ( int  fd,
double  ra,
double  dec 
)

◆ start_pmc8_guide()

bool start_pmc8_guide ( int  fd,
PMC8_DIRECTION  gdir,
int  ms,
long timetaken_us 
)

◆ start_pmc8_motion()

bool start_pmc8_motion ( int  fd,
PMC8_DIRECTION  dir,
int  mode 
)

◆ stop_pmc8_guide()

bool stop_pmc8_guide ( int  fd,
PMC8_DIRECTION  gdir 
)

◆ stop_pmc8_motion()

bool stop_pmc8_motion ( int  fd,
PMC8_DIRECTION  dir 
)

◆ stop_pmc8_tracking_motion()

bool stop_pmc8_tracking_motion ( int  fd)

◆ sync_pmc8()

bool sync_pmc8 ( int  fd,
double  ra,
double  dec 
)

◆ unpark_pmc8()

bool unpark_pmc8 ( int  fd)

Variable Documentation

◆ dec

double dec

◆ decDirection

int decDirection

◆ EW_PulseGuideState

PulseGuideState EW_PulseGuideState

◆ guide_rate

double guide_rate

◆ moveRate

double moveRate

◆ NS_PulseGuideState

PulseGuideState NS_PulseGuideState

◆ pmc8_debug

bool pmc8_debug = false

◆ pmc8_device

char pmc8_device[MAXINDIDEVICE] = "PMC8"

◆ pmc8_guide_rate

double pmc8_guide_rate = 0.5*15.0

◆ pmc8_latitude

double pmc8_latitude = 0

◆ pmc8_longitude

double pmc8_longitude = 0

◆ pmc8_simulation

bool pmc8_simulation = false

◆ ra

double ra

◆ raDirection

int raDirection

◆ simPMC8Data

struct { ... } simPMC8Data

◆ simPMC8Info

PMC8Info simPMC8Info

◆ trackRate

double trackRate