Instrument Neutral Distributed Interface INDI 2.2.5
Enumerations | Functions | Variables
indicom.h File Reference

Implementations for common driver routines. More...

#include "indimacros.h"

Go to the source code of this file.

Enumerations

enum  TTY_ERROR {
  TTY_OK = 0 , TTY_READ_ERROR = -1 , TTY_WRITE_ERROR = -2 , TTY_SELECT_ERROR = -3 ,
  TTY_TIME_OUT = -4 , TTY_PORT_FAILURE = -5 , TTY_PARAM_ERROR = -6 , TTY_ERRNO = -7 ,
  TTY_OVERFLOW = -8 , TTY_PORT_BUSY = -9
}
 

Functions

int tty_read (int fd, char *buf, int nbytes, int timeout, int *nbytes_read)
 read buffer from terminal
 
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
 
int tty_read_section (int fd, char *buf, char stop_char, int timeout, int *nbytes_read)
 read buffer from terminal with a delimiter
 
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
 
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
 
int tty_nread_section_expanded (int fd, char *buf, int nsize, char stop_char, long timeout_seconds, long timeout_microseconds, int *nbytes_read)
 read buffer from terminal with a delimiter
 
int tty_write (int fd, const char *buffer, int nbytes, int *nbytes_written)
 Writes a buffer to fd.
 
int tty_write_string (int fd, const char *buffer, int *nbytes_written)
 Writes a null terminated string to fd.
 
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.
 
int tty_disconnect (int fd)
 Closes a tty connection and flushes the bus.
 
void tty_error_msg (int err_code, char *err_msg, int err_msg_len)
 Retrieve the tty error message.
 
void tty_set_debug (int debug)
 tty_set_debug Enable or disable debug which prints verbose information.
 
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)
 
void tty_reset_udp_session (int fd, int only_if_timeout_happened)
 create new UDP session to prevent packet conflict
 
void tty_set_auto_reset_udp_session (int flag)
 automatically reset UDP session on write
 
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[].
 
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.
 
int extractISOTime (const char *timestr, struct ln_date *iso_date)
 Extract ISO 8601 time and store it in a tm struct.
 
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.
 
double time_ns ()
 Get a unix timestamp with nanosecond precision.
 
const char * indi_timestamp ()
 Create an ISO 8601 formatted time stamp. The format is YYYY-MM-DDTHH:MM:SS.
 
double rangeHA (double r)
 rangeHA Limits the hour angle value to be between -12 —> 12
 
double range24 (double r)
 range24 Limits a number to be between 0-24 range.
 
double range360 (double r)
 range360 Limits an angle to be between 0-360 degrees.
 
double range180 (double r)
 range180 Limits an angle to be between -180 to +180 degrees
 
double rangeDec (double r)
 rangeDec Limits declination value to be in -90 to 90 range.
 
double get_local_sidereal_time (double longitude)
 get_local_sidereal_time Returns local sidereal time given longitude and system clock.
 
double get_local_hour_angle (double local_sidereal_time, double ra)
 get_local_hour_angle Returns local hour angle of an object
 
void get_hrz_from_equ (struct ln_equ_posn *object, struct ln_lnlat_posn *observer, double JD, struct ln_hrz_posn *position)
 get_hrz_from_equ Calculate horizontal coordinates from equatorial coordinates.
 
void get_equ_from_hrz (struct ln_hrz_posn *object, struct ln_lnlat_posn *observer, double JD, struct ln_equ_posn *position)
 ln_get_equ_from_hrz Calculate Equatorial EOD Coordinates from horizontal coordinates
 
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
 
double estimate_geocentric_elevation (double latitude, double sea_level_elevation)
 estimate_geocentric_elevation Returns an estimation of the actual geocentric elevation
 
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
 
double estimate_field_rotation (double hour_angle, double field_rotation_rate)
 estimate_field_rotation Returns an estimation of the field rotation rate of the object
 
double as2rad (double as)
 as2rad Convert arcseconds into radians
 
double rad2as (double rad)
 rad2as Convert radians into arcseconds
 
double estimate_distance (double parsecs, double parallax_radius)
 estimate_distance Convert parallax arcseconds into meters
 
double m2au (double m)
 m2au Convert meters into astronomical units
 
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
 
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 wavelength using a passband filter through a steradian expressed cone
 
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 wavelength using a passband filter over an incident surface
 
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
 
double estimate_star_mass (double delta_mag, double ref_mass)
 estimate the star mass in ref_size units e.g. sun masses or kgs
 
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.
 
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.
 
double estimate_secondary_size (double star_size, double dropoff_ratio)
 estimate the size of an object occulting a star in star_size units.
 
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
 
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
 

Variables

const char * Direction []
 
const char * SolarSystem []
 

Detailed Description

Implementations for common driver routines.

INDI LIB Common routines used by all drivers Copyright (C) 2003 by Jason Harris (jharr.nosp@m.is@3.nosp@m.0dora.nosp@m.dus..nosp@m.org) Elwood C. Downey Jasem Mutlaq

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA

The INDI Common Routine Library provides formatting and serial routines employed by many INDI drivers. Currently, the library is composed of the following sections:

Author
Jason Harris
Elwood C. Downey
Jasem Mutlaq

Definition in file indicom.h.

Enumeration Type Documentation

◆ TTY_ERROR

enum TTY_ERROR
Enumerator
TTY_OK 
TTY_READ_ERROR 
TTY_WRITE_ERROR 
TTY_SELECT_ERROR 
TTY_TIME_OUT 
TTY_PORT_FAILURE 
TTY_PARAM_ERROR 
TTY_ERRNO 
TTY_OVERFLOW 
TTY_PORT_BUSY 

Definition at line 52 of file indicom.h.

Function Documentation

◆ as2rad()

double as2rad ( double  as)

as2rad Convert arcseconds into radians

Parameters
asthe arcseconds to convert
Returns
radians corresponding as angle value

Definition at line 1429 of file indicom.c.

◆ baseline_2d_projection()

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

Parameters
altcurrent altitude of the target.
azazimuth position of the target.
baselinethe baseline in meters. Three-dimensional xyz north is z axis y is UTC0 x is UTC0+90°.
wavelengthThe observing electromagnetic wavelength, the lower the size increases.
uvresultresult plane coordinates of the current projection given the baseline and target vector.

Definition at line 1494 of file indicom.c.

◆ baseline_delay()

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

Parameters
altcurrent altitude of the target.
azazimuth position of the target.
baselinethe baseline in meters. Three-dimensional xyz north is z axis y is UTC0 x is UTC0+90°.
wavelengthThe observing electromagnetic wavelength, the lower the size increases.
Returns
double[2] UV plane coordinates of the current projection given the baseline and target vector.

Definition at line 1504 of file indicom.c.

◆ calc_delta_magnitude()

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

Parameters
mag_ratioReference magnitude
spectrumThe spectrum of the star under exam
ref_spectrumThe spectrum of the reference star
spectrum_sizeThe size of the spectrum array in elements
Returns
the magnitude difference

Definition at line 1449 of file indicom.c.

◆ calc_photon_flux()

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 wavelength using a passband filter through a steradian expressed cone

Parameters
rel_magnitudeRelative magnitude of the object observed
filter_bandwidthFilter bandwidth in meters
wavelengthWavelength in meters
steradianThe light cone in steradians
Returns
the photon flux in Lumen

Definition at line 1479 of file indicom.c.

◆ calc_rel_magnitude()

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 wavelength using a passband filter over an incident surface

Parameters
photon_fluxThe photon flux in Lumen
filter_bandwidthFilter bandwidth in meters
wavelengthWavelength in meters
incident_surfaceThe incident surface in square meters
Returns
the relative magnitude of the object observed

Definition at line 1484 of file indicom.c.

◆ estimate_absolute_magnitude()

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

Parameters
distThe distance in parallax radiuses
delta_magThe difference of magnitudes
Returns
Approximation of the absolute magnitude in Δmag

Definition at line 1489 of file indicom.c.

◆ estimate_distance()

double estimate_distance ( double  parsecs,
double  parallax_radius 
)

estimate_distance Convert parallax arcseconds into meters

Parameters
parsecthe parallax arcseconds to convert
Returns
Estimation of the distance in measure units used in parallax_radius

Definition at line 1439 of file indicom.c.

◆ estimate_field_rotation()

double estimate_field_rotation ( double  hour_angle,
double  field_rotation_rate 
)

estimate_field_rotation Returns an estimation of the field rotation rate of the object

Parameters
hour_angleHour angle in hours (-12 to 12)
field_rotation_ratethe field rotation rate
Returns
Approximation of the absolute field rotation

Definition at line 1419 of file indicom.c.

◆ estimate_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

Parameters
Altaltitude coordinate of the object
Azazimuth coordinate of the object
latitudelatitude in INDI format (-90 to +90)
Returns
Approximation of the field rotation rate

Definition at line 1409 of file indicom.c.

◆ estimate_geocentric_elevation()

double estimate_geocentric_elevation ( double  latitude,
double  sea_level_elevation 
)

estimate_geocentric_elevation Returns an estimation of the actual geocentric elevation

Parameters
latitudelatitude in INDI format (-90 to +90)
sea_level_elevationsea level elevation
Returns
Approximated geocentric elevation

Definition at line 1401 of file indicom.c.

◆ estimate_orbit_radius()

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.

Parameters
obs_lambdaThe observed wavelength of a spectral line observed on the star affected by redshift or blueshift.
ref_lambdaThe reference wavelength of the spectral line observed on earth or the nullshift spectral line position.
periodThe orbital period.

Definition at line 1464 of file indicom.c.

◆ estimate_secondary_mass()

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.

Parameters
star_massThe mass of the star hosting an orbiting object.
star_driftThe star lagrange point L1 (observed drift of the star).
orbit_radiusThe estimated orbit radius of the companion object (star, planet, cloud).

Definition at line 1469 of file indicom.c.

◆ estimate_secondary_size()

double estimate_secondary_size ( double  star_size,
double  dropoff_ratio 
)

estimate the size of an object occulting a star in star_size units.

Parameters
star_sizeThe size of the occulted star.
dropoff_ratioThe light curve dropoff during the transit. Linear scale. 0.0=no dropoff 1.0=totally occulted.

Definition at line 1474 of file indicom.c.

◆ estimate_star_mass()

double estimate_star_mass ( double  delta_mag,
double  ref_mass 
)

estimate the star mass in ref_size units e.g. sun masses or kgs

Parameters
delta_magThe absolute magnitude ratio between the reference object used as unit in ref_size.
ref_massThe mass of the reference object used to calculate the magnitude difference.

◆ extractISOTime()

int extractISOTime ( const char *  timestr,
struct ln_date *  iso_date 
)

Extract ISO 8601 time and store it in a tm struct.

Parameters
timestra string containing date and time in ISO 8601 format.
iso_datea pointer to a ln_date structure to store the extracted time and date (libnova).
Returns
0 on success, -1 on failure.

◆ f_scansexa()

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.

Parameters
str0string containing sexagesimal number.
dppointer to a double to store the sexagesimal number.
Returns
return 0 if ok, -1 if can't find a thing.

Definition at line 194 of file indicom.c.

◆ fs_sexa()

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[].

Parameters
outa pointer to store the sexagesimal number.
athe sexagesimal number to convert.
wthe number of spaces in the whole part.
fracbaseis the number of pieces a whole is to broken into; valid options:
  • 360000: <w>:mm:ss.ss
  • 36000: <w>:mm:ss.s
  • 3600: <w>:mm:ss
  • 600: <w>:mm.m
  • 60: <w>:mm
Returns
number of characters written to out, not counting final null terminator.

Definition at line 130 of file indicom.c.

◆ get_alt_az_coordinates()

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

Parameters
hour_angleHour angle in hours (-12 to 12)
decDEC of object
latitudelatitude in INDI format (-90 to +90)
altALT of object will be returned here
azAZ of object will be returned here

Definition at line 1385 of file indicom.c.

◆ get_equ_from_hrz()

void get_equ_from_hrz ( struct ln_hrz_posn *  object,
struct ln_lnlat_posn *  observer,
double  JD,
struct ln_equ_posn *  position 
)

ln_get_equ_from_hrz Calculate Equatorial EOD Coordinates from horizontal coordinates

Parameters
objectHorizontal Object Coordinates
observerObserver Location
JDJulian Date
positionCalculated Equatorial Coordinates.
Note
Use this instead of libnova ln_get_equ_from_hrz since it corrects libnova Azimuth (0 = North and not South).

◆ get_hrz_from_equ()

void get_hrz_from_equ ( struct ln_equ_posn *  object,
struct ln_lnlat_posn *  observer,
double  JD,
struct ln_hrz_posn *  position 
)

get_hrz_from_equ Calculate horizontal coordinates from equatorial coordinates.

Parameters
objectEquatorial Object Coordinates
observerObserver Location
JDJulian Date
positionCalculated Horizontal Coordinates.
Note
Use this instead of libnova ln_get_hrz_from_equ since it corrects libnova Azimuth (0 = North and not South).

◆ get_local_hour_angle()

double get_local_hour_angle ( double  local_sidereal_time,
double  ra 
)

get_local_hour_angle Returns local hour angle of an object

Parameters
local_sidereal_timeLocal Sidereal Time
raRA of object
Returns
Hour angle in hours (-12 to 12)

Definition at line 1379 of file indicom.c.

◆ get_local_sidereal_time()

double get_local_sidereal_time ( double  longitude)

get_local_sidereal_time Returns local sidereal time given longitude and system clock.

Parameters
longitudeLongitude in INDI format (0 to 360) increasing eastward.
Returns
Local Sidereal Time.

◆ getSexComponents()

void getSexComponents ( double  value,
int *  d,
int *  m,
int *  s 
)

Definition at line 243 of file indicom.c.

◆ getSexComponentsIID()

void getSexComponentsIID ( double  value,
int *  d,
int *  m,
double *  s 
)

Definition at line 266 of file indicom.c.

◆ indi_timestamp()

const char * indi_timestamp ( )

Create an ISO 8601 formatted time stamp. The format is YYYY-MM-DDTHH:MM:SS.

Returns
The formatted time stamp.

Definition at line 337 of file indicom.c.

◆ m2au()

double m2au ( double  m)

m2au Convert meters into astronomical units

Parameters
mthe distance in meters to convert
Returns
Estimation of the distance in astronomical units

Definition at line 1444 of file indicom.c.

◆ numberFormat()

int numberFormat ( char *  buf,
const char *  format,
double  value 
)

Fill buffer with properly formatted INumber string.

Parameters
bufto store the formatted string.
formatformat in sprintf style.
valuethe number to format.
Returns
length of string.
Note
buf must be of length MAXINDIFORMAT at minimum

Definition at line 277 of file indicom.c.

◆ rad2as()

double rad2as ( double  rad)

rad2as Convert radians into arcseconds

Parameters
asthe radians to convert
Returns
arcseconds corresponding as angle value

Definition at line 1434 of file indicom.c.

◆ range180()

double range180 ( double  r)

range180 Limits an angle to be between -180 to +180 degrees

Parameters
rangle in degrees
Returns
Limited angle

Definition at line 1331 of file indicom.c.

◆ range24()

double range24 ( double  r)

range24 Limits a number to be between 0-24 range.

Parameters
rnumber to be limited
Returns
Limited number

Definition at line 1311 of file indicom.c.

◆ range360()

double range360 ( double  r)

range360 Limits an angle to be between 0-360 degrees.

Parameters
rangle
Returns
Limited angle

Definition at line 1321 of file indicom.c.

◆ rangeDec()

double rangeDec ( double  r)

rangeDec Limits declination value to be in -90 to 90 range.

Parameters
rdeclination angle
Returns
limited declination

Definition at line 1341 of file indicom.c.

◆ rangeHA()

double rangeHA ( double  r)

rangeHA Limits the hour angle value to be between -12 —> 12

Parameters
rcurrent hour angle value
Returns
Limited value (-12,12)

Definition at line 1301 of file indicom.c.

◆ time_ns()

double time_ns ( )

Get a unix timestamp with nanosecond precision.

Returns
Seconds since UNIX Epoch.

Definition at line 315 of file indicom.c.

◆ tty_clr_trailing_read_lf()

void tty_clr_trailing_read_lf ( int  enabled)

Definition at line 369 of file indicom.c.

◆ tty_connect()

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.

Parameters
devicethe device node. e.g. /dev/ttyS0
bit_ratebit rate
word_sizenumber of data bits, 7 or 8, USE 8 DATA BITS with modbus
parity0=no parity, 1=parity EVEN, 2=parity ODD
stop_bitsnumber of stop bits : 1 or 2
fdfd is set to the file descriptor value on success.
Returns
On success, it returns TTY_OK, otherwise, a TTY_ERROR code.
Author
Wildi Markus

Definition at line 1022 of file indicom.c.

◆ tty_disconnect()

int tty_disconnect ( int  fd)

Closes a tty connection and flushes the bus.

Parameters
fdthe file descriptor to close.
Returns
On success, it returns TTY_OK, otherwise, a TTY_ERROR code.

Definition at line 1224 of file indicom.c.

◆ tty_error_msg()

void tty_error_msg ( int  err_code,
char *  err_msg,
int  err_msg_len 
)

Retrieve the tty error message.

Parameters
err_codethe error code return by any TTY function.
err_msgan initialized buffer to hold the error message.
err_msg_lenlength in bytes of err_msg

Definition at line 1243 of file indicom.c.

◆ tty_nread_section()

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

Parameters
fdfile descriptor
bufpointer to store data. Must be initialized and big enough to hold data.
stop_charif the function encounters stop_char then it stops reading and returns the buffer.
nsizesize of buf. If stop character is not encountered before nsize, the function aborts.
timeoutnumber of seconds to wait for terminal before a timeout error is issued.
nbytes_readthe number of bytes read.
Returns
On success, it returns TTY_OK, otherwise, a TTY_ERROR code.

Definition at line 759 of file indicom.c.

◆ tty_nread_section_expanded()

int tty_nread_section_expanded ( int  fd,
char *  buf,
int  nsize,
char  stop_char,
long  timeout_seconds,
long  timeout_microseconds,
int *  nbytes_read 
)

read buffer from terminal with a delimiter

Parameters
fdfile descriptor
bufpointer to store data. Must be initialized and big enough to hold data.
stop_charif the function encounters stop_char then it stops reading and returns the buffer.
nsizesize of buf. If stop character is not encountered before nsize, the function aborts.
timeoutnumber of seconds to wait for terminal before a timeout error is issued.

(Total Timeout is timeout_seconds + timeout_microseconds)

Parameters
timeout_microsecondsnumber of microseconds to wait for terminal before a timeout error is issued.
nbytes_readthe number of bytes read.
Returns
On success, it returns TTY_OK, otherwise, a TTY_ERROR code.

Definition at line 764 of file indicom.c.

◆ tty_read()

int tty_read ( int  fd,
char *  buf,
int  nbytes,
int  timeout,
int *  nbytes_read 
)

read buffer from terminal

Parameters
fdfile descriptor
bufpointer to store data. Must be initialized and big enough to hold data.
nbytesnumber of bytes to read.
timeoutnumber of seconds to wait for terminal before a timeout error is issued.
nbytes_readthe number of bytes read.
Returns
On success, it returns TTY_OK, otherwise, a TTY_ERROR code.

Definition at line 548 of file indicom.c.

◆ tty_read_expanded()

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

Parameters
fdfile descriptor
bufpointer to store data. Must be initialized and big enough to hold data.
stop_charif the function encounters stop_char then it stops reading and returns the buffer.
timeout_secondsnumber of seconds to wait for terminal before a timeout error is issued.

(Total time = timeout_seconds + timeout_microseconds)

Parameters
timeout_microsecondsnumber of microseconds to wait for terminal before a timeout error is issued.

(Total time = timeout_seconds + timeout_microseconds)

Parameters
nbytes_readthe number of bytes read.
Returns
On success, it returns TTY_OK, otherwise, a TTY_ERROR code.

Definition at line 553 of file indicom.c.

◆ tty_read_section()

int tty_read_section ( int  fd,
char *  buf,
char  stop_char,
int  timeout,
int *  nbytes_read 
)

read buffer from terminal with a delimiter

Parameters
fdfile descriptor
bufpointer to store data. Must be initialized and big enough to hold data.
stop_charif the function encounters stop_char then it stops reading and returns the buffer.
timeoutnumber of seconds to wait for terminal before a timeout error is issued.
nbytes_readthe number of bytes read.
Returns
On success, it returns TTY_OK, otherwise, a TTY_ERROR code.

Definition at line 653 of file indicom.c.

◆ tty_read_section_expanded()

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

Parameters
fdfile descriptor
bufpointer to store data. Must be initialized and big enough to hold data.
stop_charif the function encounters stop_char then it stops reading and returns the buffer.
nsizesize of buf. If stop character is not encountered before nsize, the function aborts.
timeout_secondsnumber of seconds to wait for terminal before a timeout error is issued.

(Total Timeout is timeout_seconds + timeout_microseconds)

Parameters
timeout_microsecondsnumber of microseconds to wait for terminal before a timeout error is issued.

(Total Timeout is timeout_seconds + timeout_microseconds)

Parameters
nbytes_readthe number of bytes read.
Returns
On success, it returns TTY_OK, otherwise, a TTY_ERROR code.

Definition at line 658 of file indicom.c.

◆ tty_reset_udp_session()

void tty_reset_udp_session ( int  fd,
int  only_if_timeout_happened 
)

create new UDP session to prevent packet conflict

Create a new UDP connection socket (and thus new session) and replace existing descriptor with it (using dup2)

Note: it is effective if and only if tty_set_generic_udp_format is enabled

Parameters
fdfile descriptor of UDP socket
only_if_timeout_happenedof 0 create always, if 1 do it if there was IO timout on the socket in past, resets this flag

Definition at line 481 of file indicom.c.

◆ tty_set_auto_reset_udp_session()

void tty_set_auto_reset_udp_session ( int  flag)

automatically reset UDP session on write

Allows reset UDP session automatically if error/timeout or on every IO to prevent packet misshandling in protocols that do not mark request/response relation by design

Parameters
flag0 - disable, 1 - reset only if read timeout happened, 2 - every write regardless of timeout

Definition at line 354 of file indicom.c.

◆ tty_set_debug()

void tty_set_debug ( int  debug)

tty_set_debug Enable or disable debug which prints verbose information.

Parameters
debug1 to enable, 0 to disable

Definition at line 349 of file indicom.c.

◆ tty_set_gemini_udp_format()

void tty_set_gemini_udp_format ( int  enabled)

Definition at line 359 of file indicom.c.

◆ tty_set_generic_udp_format()

void tty_set_generic_udp_format ( int  enabled)

Definition at line 364 of file indicom.c.

◆ tty_timeout()

int tty_timeout ( int  fd,
int  timeout 
)

Definition at line 374 of file indicom.c.

◆ tty_timeout_microseconds()

int tty_timeout_microseconds ( int  fd,
long  timeout_seconds,
long  timeout_microseconds 
)

Definition at line 379 of file indicom.c.

◆ tty_write()

int tty_write ( int  fd,
const char *  buffer,
int  nbytes,
int *  nbytes_written 
)

Writes a buffer to fd.

Parameters
fdfile descriptor
buffera null-terminated buffer to write to fd.
nbytesnumber of bytes to write from buffer
nbytes_writtenthe number of bytes written
Returns
On success, it returns TTY_OK, otherwise, a TTY_ERROR code.

Definition at line 418 of file indicom.c.

◆ tty_write_string()

int tty_write_string ( int  fd,
const char *  buffer,
int *  nbytes_written 
)

Writes a null terminated string to fd.

Parameters
fdfile descriptor
bufferthe buffer to write to fd.
nbytes_writtenthe number of bytes written
Returns
On success, it returns TTY_OK, otherwise, a TTY_ERROR code.

Definition at line 473 of file indicom.c.

Variable Documentation

◆ Direction

const char* Direction[]
extern

◆ SolarSystem

const char* SolarSystem[]
extern