Instrument Neutral Distributed Interface INDI
2.0.2
|
#include "indicom.h"
#include "indidevapi.h"
#include "locale_compat.h"
#include "base64.h"
#include "config.h"
#include <errno.h>
#include <fcntl.h>
#include <math.h>
#include <stdarg.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <unistd.h>
#include <termios.h>
#include <sys/param.h>
#include "userio.h"
#include "indiuserio.h"
Go to the source code of this file.
Macros | |
#define | _GNU_SOURCE 1 |
#define | PARITY_NONE 0 |
#define | PARITY_EVEN 1 |
#define | PARITY_ODD 2 |
#define | MAXRBUF 2048 |
Functions | |
int | fs_sexa (char *out, double a, int w, int fracbase) |
Converts a sexagesimal number to a string. sprint the variable a in sexagesimal format into out[]. More... | |
int | f_scansexa (const char *str0, double *dp) |
convert sexagesimal string str AxBxC to double. x can be anything non-numeric. Any missing A, B or C will be assumed 0. Optional - and + can be anywhere. More... | |
void | getSexComponents (double value, int *d, int *m, int *s) |
void | getSexComponentsIID (double value, int *d, int *m, double *s) |
int | numberFormat (char *buf, const char *format, double value) |
Fill buffer with properly formatted INumber string. More... | |
void | IDLog (const char *fmt,...) |
double | time_ns () |
Get a unix timestamp with nanosecond precision. More... | |
const char * | indi_timestamp () |
Create an ISO 8601 formatted time stamp. The format is YYYY-MM-DDTHH:MM:SS. More... | |
void | tty_set_debug (int debug) |
tty_set_debug Enable or disable debug which prints verbose information. More... | |
void | tty_set_gemini_udp_format (int enabled) |
void | tty_set_generic_udp_format (int enabled) |
void | tty_clr_trailing_read_lf (int enabled) |
int | tty_timeout (int fd, int timeout) |
int | tty_timeout_microseconds (int fd, long timeout_seconds, long timeout_microseconds) |
int | tty_write (int fd, const char *buf, int nbytes, int *nbytes_written) |
Writes a buffer to fd. More... | |
int | tty_write_string (int fd, const char *buf, int *nbytes_written) |
Writes a null terminated string to fd. More... | |
int | tty_read (int fd, char *buf, int nbytes, int timeout, int *nbytes_read) |
read buffer from terminal More... | |
int | tty_read_expanded (int fd, char *buf, int nbytes, long timeout_seconds, long timeout_microseconds, int *nbytes_read) |
read buffer from terminal with a delimiter More... | |
int | tty_read_section (int fd, char *buf, char stop_char, int timeout, int *nbytes_read) |
read buffer from terminal with a delimiter More... | |
int | tty_read_section_expanded (int fd, char *buf, char stop_char, long timeout_seconds, long timeout_microseconds, int *nbytes_read) |
read buffer from terminal with a delimiter More... | |
int | tty_nread_section (int fd, char *buf, int nsize, char stop_char, int timeout, int *nbytes_read) |
read buffer from terminal with a delimiter More... | |
int | tty_connect (const char *device, int bit_rate, int word_size, int parity, int stop_bits, int *fd) |
Establishes a tty connection to a terminal device. More... | |
int | tty_disconnect (int fd) |
Closes a tty connection and flushes the bus. More... | |
void | tty_error_msg (int err_code, char *err_msg, int err_msg_len) |
Retrieve the tty error message. More... | |
double | rangeHA (double r) |
rangeHA Limits the hour angle value to be between -12 —> 12 More... | |
double | range24 (double r) |
range24 Limits a number to be between 0-24 range. More... | |
double | range360 (double r) |
range360 Limits an angle to be between 0-360 degrees. More... | |
double | rangeDec (double decdegrees) |
rangeDec Limits declination value to be in -90 to 90 range. More... | |
double | get_local_hour_angle (double sideral_time, double ra) |
get_local_hour_angle Returns local hour angle of an object More... | |
void | get_alt_az_coordinates (double Ha, double Dec, double Lat, double *Alt, double *Az) |
get_alt_az_coordinates Returns alt-azimuth coordinates of an object More... | |
double | estimate_geocentric_elevation (double Lat, double El) |
estimate_geocentric_elevation Returns an estimation of the actual geocentric elevation More... | |
double | estimate_field_rotation_rate (double Alt, double Az, double Lat) |
estimate_field_rotation_rate Returns an estimation of the field rotation rate of the object More... | |
double | estimate_field_rotation (double HA, double rate) |
estimate_field_rotation Returns an estimation of the field rotation rate of the object More... | |
double | as2rad (double as) |
as2rad Convert arcseconds into radians More... | |
double | rad2as (double rad) |
rad2as Convert radians into arcseconds More... | |
double | estimate_distance (double parsecs, double parallax_radius) |
estimate_distance Convert parallax arcseconds into meters More... | |
double | m2au (double m) |
m2au Convert meters into astronomical units More... | |
double | calc_delta_magnitude (double mag_ratio, double *spectrum, double *ref_spectrum, int spectrum_size) |
calc_delta_magnitude Returns the difference of magnitudes given two spectra More... | |
double | calc_star_mass (double delta_mag, double ref_size) |
double | estimate_orbit_radius (double obs_lambda, double ref_lambda, double period) |
estimate the orbit radius of an object with known mass orbiting around a star. More... | |
double | estimate_secondary_mass (double star_mass, double star_drift, double orbit_radius) |
estimate the mass of an object with known mass orbiting around a star. More... | |
double | estimate_secondary_size (double star_size, double dropoff_ratio) |
estimate the size of an object occulting a star in star_size units. More... | |
double | calc_photon_flux (double rel_magnitude, double filter_bandwidth, double wavelength, double steradian) |
calc_photon_flux Returns the photon flux of the object with the given magnitude observed at a determined wavelenght using a passband filter through a steradian expressed cone More... | |
double | calc_rel_magnitude (double photon_flux, double filter_bandwidth, double wavelength, double steradian) |
calc_rel_magnitude Returns the relative magnitude of the object with the given photon flux measured at a determined wavelenght using a passband filter over an incident surface More... | |
double | estimate_absolute_magnitude (double delta_dist, double delta_mag) |
estimate_absolute_magnitude Returns an estimation of the absolute magnitude of an object given its distance and the difference of its magnitude with a reference object More... | |
void | baseline_2d_projection (double alt, double az, double baseline[3], double wavelength, double uvresult[2]) |
baseline_2d_projection Returns the coordinates of the projection of a single baseline targeting the object by coordinates More... | |
double | baseline_delay (double alt, double az, double baseline[3]) |
baseline_delay Returns the delay in meters of a single baseline targeting the object by coordinates More... | |
double as2rad | ( | double | as | ) |
void baseline_2d_projection | ( | double | alt, |
double | az, | ||
double | baseline[3], | ||
double | wavelength, | ||
double | uvresult[2] | ||
) |
baseline_2d_projection Returns the coordinates of the projection of a single baseline targeting the object by coordinates
alt | current altitude of the target. |
az | azimuth position of the target. |
baseline | the baseline in meters. Three-dimensional xyz north is z axis y is UTC0 x is UTC0+90°. |
wavelength | The observing electromagnetic wavelength, the lower the size increases. |
uvresult | result plane coordinates of the current projection given the baseline and target vector. |
double baseline_delay | ( | double | alt, |
double | az, | ||
double | baseline[3] | ||
) |
baseline_delay Returns the delay in meters of a single baseline targeting the object by coordinates
alt | current altitude of the target. |
az | azimuth position of the target. |
baseline | the baseline in meters. Three-dimensional xyz north is z axis y is UTC0 x is UTC0+90°. |
wavelength | The observing electromagnetic wavelength, the lower the size increases. |
double calc_delta_magnitude | ( | double | mag_ratio, |
double * | spectrum, | ||
double * | ref_spectrum, | ||
int | spectrum_size | ||
) |
calc_delta_magnitude Returns the difference of magnitudes given two spectra
mag_ratio | Reference magnitude |
spectrum | The spectrum of the star under exam |
ref_spectrum | The spectrum of the reference star |
spectrum_size | The size of the spectrum array in elements |
double calc_photon_flux | ( | double | rel_magnitude, |
double | filter_bandwidth, | ||
double | wavelength, | ||
double | steradian | ||
) |
calc_photon_flux Returns the photon flux of the object with the given magnitude observed at a determined wavelenght using a passband filter through a steradian expressed cone
rel_magnitude | Relative magnitude of the object observed |
filter_bandwidth | Filter bandwidth in meters |
wavelength | Wavelength in meters |
steradian | The light cone in steradians |
double calc_rel_magnitude | ( | double | photon_flux, |
double | filter_bandwidth, | ||
double | wavelength, | ||
double | steradian | ||
) |
calc_rel_magnitude Returns the relative magnitude of the object with the given photon flux measured at a determined wavelenght using a passband filter over an incident surface
photon_flux | The photon flux in Lumen |
filter_bandwidth | Filter bandwidth in meters |
wavelength | Wavelength in meters |
incident_surface | The incident surface in square meters |
double calc_star_mass | ( | double | delta_mag, |
double | ref_size | ||
) |
double estimate_absolute_magnitude | ( | double | dist, |
double | delta_mag | ||
) |
estimate_absolute_magnitude Returns an estimation of the absolute magnitude of an object given its distance and the difference of its magnitude with a reference object
dist | The distance in parallax radiuses |
delta_mag | The difference of magnitudes |
double estimate_distance | ( | double | parsecs, |
double | parallax_radius | ||
) |
double estimate_field_rotation | ( | double | hour_angle, |
double | field_rotation_rate | ||
) |
double estimate_field_rotation_rate | ( | double | Alt, |
double | Az, | ||
double | latitude | ||
) |
estimate_field_rotation_rate Returns an estimation of the field rotation rate of the object
Alt | altitude coordinate of the object |
Az | azimuth coordinate of the object |
latitude | latitude in INDI format (-90 to +90) |
double estimate_geocentric_elevation | ( | double | latitude, |
double | sea_level_elevation | ||
) |
double estimate_orbit_radius | ( | double | obs_lambda, |
double | ref_lambda, | ||
double | period | ||
) |
estimate the orbit radius of an object with known mass orbiting around a star.
obs_lambda | The observed wavelength of a spectral line observed on the star affected by redshift or blueshift. |
ref_lambda | The reference wavelength of the spectral line observed on earth or the nullshift spectral line position. |
period | The orbital period. |
double estimate_secondary_mass | ( | double | star_mass, |
double | star_drift, | ||
double | orbit_radius | ||
) |
estimate the mass of an object with known mass orbiting around a star.
star_mass | The mass of the star hosting an orbiting object. |
star_drift | The star lagrange point L1 (observed drift of the star). |
orbit_radius | The estimated orbit radius of the companion object (star, planet, cloud). |
double estimate_secondary_size | ( | double | star_size, |
double | dropoff_ratio | ||
) |
int f_scansexa | ( | const char * | str0, |
double * | dp | ||
) |
convert sexagesimal string str AxBxC to double. x can be anything non-numeric. Any missing A, B or C will be assumed 0. Optional - and + can be anywhere.
str0 | string containing sexagesimal number. |
dp | pointer to a double to store the sexagesimal number. |
int fs_sexa | ( | char * | out, |
double | a, | ||
int | w, | ||
int | fracbase | ||
) |
Converts a sexagesimal number to a string. sprint the variable a in sexagesimal format into out[].
out | a pointer to store the sexagesimal number. |
a | the sexagesimal number to convert. |
w | the number of spaces in the whole part. |
fracbase | is the number of pieces a whole is to broken into; valid options:
|
void get_alt_az_coordinates | ( | double | hour_angle, |
double | dec, | ||
double | latitude, | ||
double * | alt, | ||
double * | az | ||
) |
get_alt_az_coordinates Returns alt-azimuth coordinates of an object
hour_angle | Hour angle in hours (-12 to 12) |
dec | DEC of object |
latitude | latitude in INDI format (-90 to +90) |
alt | ALT of object will be returned here |
az | AZ of object will be returned here |
double get_local_hour_angle | ( | double | local_sideral_time, |
double | ra | ||
) |
void getSexComponents | ( | double | value, |
int * | d, | ||
int * | m, | ||
int * | s | ||
) |
void getSexComponentsIID | ( | double | value, |
int * | d, | ||
int * | m, | ||
double * | s | ||
) |
void IDLog | ( | const char * | fmt, |
... | |||
) |
const char* indi_timestamp | ( | ) |
double m2au | ( | double | m | ) |
int numberFormat | ( | char * | buf, |
const char * | format, | ||
double | value | ||
) |
double rad2as | ( | double | rad | ) |
double range24 | ( | double | r | ) |
double range360 | ( | double | r | ) |
double rangeDec | ( | double | r | ) |
double rangeHA | ( | double | r | ) |
double time_ns | ( | ) |
int tty_connect | ( | const char * | device, |
int | bit_rate, | ||
int | word_size, | ||
int | parity, | ||
int | stop_bits, | ||
int * | fd | ||
) |
Establishes a tty connection to a terminal device.
device | the device node. e.g. /dev/ttyS0 |
bit_rate | bit rate |
word_size | number of data bits, 7 or 8, USE 8 DATA BITS with modbus |
parity | 0=no parity, 1=parity EVEN, 2=parity ODD |
stop_bits | number of stop bits : 1 or 2 |
fd | fd is set to the file descriptor value on success. |
int tty_disconnect | ( | int | fd | ) |
void tty_error_msg | ( | int | err_code, |
char * | err_msg, | ||
int | err_msg_len | ||
) |
int tty_nread_section | ( | int | fd, |
char * | buf, | ||
int | nsize, | ||
char | stop_char, | ||
int | timeout, | ||
int * | nbytes_read | ||
) |
read buffer from terminal with a delimiter
fd | file descriptor |
buf | pointer to store data. Must be initialized and big enough to hold data. |
stop_char | if the function encounters stop_char then it stops reading and returns the buffer. |
nsize | size of buf. If stop character is not encountered before nsize, the function aborts. |
timeout | number of seconds to wait for terminal before a timeout error is issued. |
nbytes_read | the number of bytes read. |
int tty_read | ( | int | fd, |
char * | buf, | ||
int | nbytes, | ||
int | timeout, | ||
int * | nbytes_read | ||
) |
read buffer from terminal
fd | file descriptor |
buf | pointer to store data. Must be initialized and big enough to hold data. |
nbytes | number of bytes to read. |
timeout | number of seconds to wait for terminal before a timeout error is issued. |
nbytes_read | the number of bytes read. |
int tty_read_expanded | ( | int | fd, |
char * | buf, | ||
int | nbytes, | ||
long | timeout_seconds, | ||
long | timeout_microseconds, | ||
int * | nbytes_read | ||
) |
read buffer from terminal with a delimiter
fd | file descriptor |
buf | pointer to store data. Must be initialized and big enough to hold data. |
stop_char | if the function encounters stop_char then it stops reading and returns the buffer. |
timeout_seconds | number of seconds to wait for terminal before a timeout error is issued. |
(Total time = timeout_seconds + timeout_microseconds)
timeout_microseconds | number of microseconds to wait for terminal before a timeout error is issued. |
(Total time = timeout_seconds + timeout_microseconds)
nbytes_read | the number of bytes read. |
int tty_read_section | ( | int | fd, |
char * | buf, | ||
char | stop_char, | ||
int | timeout, | ||
int * | nbytes_read | ||
) |
read buffer from terminal with a delimiter
fd | file descriptor |
buf | pointer to store data. Must be initialized and big enough to hold data. |
stop_char | if the function encounters stop_char then it stops reading and returns the buffer. |
timeout | number of seconds to wait for terminal before a timeout error is issued. |
nbytes_read | the number of bytes read. |
int tty_read_section_expanded | ( | int | fd, |
char * | buf, | ||
char | stop_char, | ||
long | timeout_seconds, | ||
long | timeout_microseconds, | ||
int * | nbytes_read | ||
) |
read buffer from terminal with a delimiter
fd | file descriptor |
buf | pointer to store data. Must be initialized and big enough to hold data. |
stop_char | if the function encounters stop_char then it stops reading and returns the buffer. |
nsize | size of buf. If stop character is not encountered before nsize, the function aborts. |
timeout_seconds | number of seconds to wait for terminal before a timeout error is issued. |
(Total Timeout is timeout_seconds + timeout_microseconds)
timeout_microseconds | number of microseconds to wait for terminal before a timeout error is issued. |
(Total Timeout is timeout_seconds + timeout_microseconds)
nbytes_read | the number of bytes read. |
void tty_set_debug | ( | int | debug | ) |
int tty_timeout_microseconds | ( | int | fd, |
long | timeout_seconds, | ||
long | timeout_microseconds | ||
) |
int tty_write | ( | int | fd, |
const char * | buffer, | ||
int | nbytes, | ||
int * | nbytes_written | ||
) |
int tty_write_string | ( | int | fd, |
const char * | buffer, | ||
int * | nbytes_written | ||
) |