Instrument Neutral Distributed Interface INDI  2.0.2
Functions | Variables
indidriver.h File Reference
#include "indiapi.h"
#include "lilxml.h"
#include "indicom.h"
#include <stdio.h>

Go to the source code of this file.

Functions

int dispatch (XMLEle *root, char msg[])
 
FILE * IUGetConfigFP (const char *filename, const char *dev, const char *mode, char errmsg[])
 Open a configuration file for writing and return a configuration file FILE pointer. More...
 
int IUPurgeConfig (const char *filename, const char *dev, char errmsg[])
 
int IUReadConfig (const char *filename, const char *dev, const char *property, int silent, char errmsg[])
 Loads and processes a configuration file. Once a configuration file is successful loaded, the function will iterate over the enclosed newXXX commands, and dispatches each command to the driver. Subsequently, the driver receives the updated property value in the driver's ISNewXXX functions. The driver may call this function at any time. However, it is usually called either on driver startup or on device power up. By default, all the properties are read from the configuration file. To load a specific property, pass the property name, otherwise pass NULL to retrieve all properties. More...
 
int IUSaveDefaultConfig (const char *source_config, const char *dest_config, const char *dev)
 Copies an existing configuration file into a default configuration file. If no default configuration file for the supplied dev exists, it gets created and its contentes copied from an exiting source configuration file. Usually, when the user saves the configuration file of a driver for the first time, IUSaveDefaultConfig is called to create the default configuration file. If the default configuration file already exists, the function performs no action and returns. More...
 
void IUSaveConfigTag (FILE *fp, int ctag, const char *dev, int silent)
 Add opening or closing tag to a configuration file. A configuration file root XML element is <INDIDriver>. This functions add <INDIDriver> or </INDIDriver> as required. More...
 
int IUGetConfigNumber (const char *dev, const char *property, const char *member, double *value)
 IUGetConfigNumber Opens configuration file and reads single number property. More...
 
int IUGetConfigSwitch (const char *dev, const char *property, const char *member, ISState *value)
 IUGetConfigSwitch Opens configuration file and reads single switch property. More...
 
int IUGetConfigOnSwitchIndex (const char *dev, const char *property, int *index)
 IUGetConfigOnSwitchIndex Opens configuration file and reads single switch property to find ON switch index, if any. More...
 
int IUGetConfigOnSwitchName (const char *dev, const char *property, char *name, size_t size)
 IUGetConfigOnSwitchLabel Opens configuration file and returns the name of the ON switch property, if any. More...
 
int IUGetConfigOnSwitch (const ISwitchVectorProperty *property, int *index)
 IUGetConfigOnSwitch Opens configuration file and reads a single switch vector property to find the index of the first ON switch element. More...
 
int IUGetConfigText (const char *dev, const char *property, const char *member, char *value, int len)
 IUGetConfigText Opens configuration file and reads single text property. More...
 
int IUUpdateSwitch (ISwitchVectorProperty *svp, ISState *states, char *names[], int n)
 Update all switches in a switch vector property. More...
 
int IUUpdateNumber (INumberVectorProperty *nvp, double values[], char *names[], int n)
 Update all numbers in a number vector property. More...
 
int IUUpdateText (ITextVectorProperty *tvp, char *texts[], char *names[], int n)
 Update all text members in a text vector property. More...
 
int IUUpdateBLOB (IBLOBVectorProperty *bvp, int sizes[], int blobsizes[], char *blobs[], char *formats[], char *names[], int n)
 Update all BLOB members in a BLOB vector property. More...
 
void IUUpdateMinMax (const INumberVectorProperty *nvp)
 Function to update the min and max elements of a number in the client. More...
 

Variables

int verbose
 
char * me
 

Function Documentation

◆ dispatch()

int dispatch ( XMLEle root,
char  msg[] 
)

Definition at line 180 of file indidriver.c.

◆ IUGetConfigFP()

FILE* IUGetConfigFP ( const char *  filename,
const char *  dev,
const char *  mode,
char  errmsg[] 
)

Open a configuration file for writing and return a configuration file FILE pointer.

Parameters
filenamefull path of the configuration file. If set, the function will attempt to open it for writing. If set to NULL, it will attempt to generate the filename as described in the Detailed Description introduction and then open it for writing.
devdevice name. This is used if the filename parameter is NULL, and INDICONFIG environment variable is not set as described in the Detailed Description introduction.
modemode to open the file with (e.g. "w" or "r")
errmsgIn case of errors, store the error message in this buffer. The size of the buffer must be at least MAXRBUF.
Returns
pointer to FILE if configuration file is opened successful, otherwise NULL and errmsg is set.

Definition at line 994 of file indidriver.c.

◆ IUGetConfigNumber()

int IUGetConfigNumber ( const char *  dev,
const char *  property,
const char *  member,
double *  value 
)

IUGetConfigNumber Opens configuration file and reads single number property.

Parameters
devname of device
propertyname of vector property
membername of member property
valuepointer to save value of property if found.
Returns
0 on success, -1 if not found.

Definition at line 831 of file indidriver.c.

◆ IUGetConfigOnSwitch()

int IUGetConfigOnSwitch ( const ISwitchVectorProperty property,
int *  index 
)

IUGetConfigOnSwitch Opens configuration file and reads a single switch vector property to find the index of the first ON switch element.

Parameters
propertypointer to initialized switch vector property.
indexindex of first ON switch property. If none is found, it is set to -1
Returns
0 on success, -1 if not found.

Definition at line 592 of file indidriver.c.

◆ IUGetConfigOnSwitchIndex()

int IUGetConfigOnSwitchIndex ( const char *  dev,
const char *  property,
int *  index 
)

IUGetConfigOnSwitchIndex Opens configuration file and reads single switch property to find ON switch index, if any.

Parameters
devname of device
propertyname of vector property
indexpointer to save value of ON switch index, if found.
Returns
0 on success, -1 if not found.

Definition at line 711 of file indidriver.c.

◆ IUGetConfigOnSwitchName()

int IUGetConfigOnSwitchName ( const char *  dev,
const char *  property,
char *  name,
size_t  size 
)

IUGetConfigOnSwitchLabel Opens configuration file and returns the name of the ON switch property, if any.

Parameters
devname of device
propertyname of vector property
nameof the ON switch, if any.
sizesize of name in bytes.
Returns
0 on success, -1 if not found.

Definition at line 771 of file indidriver.c.

◆ IUGetConfigSwitch()

int IUGetConfigSwitch ( const char *  dev,
const char *  property,
const char *  member,
ISState value 
)

IUGetConfigSwitch Opens configuration file and reads single switch property.

Parameters
devname of device
propertyname of vector property
membername of member property
valuepointer to save value of property if found.
Returns
0 on success, -1 if not found.

Definition at line 653 of file indidriver.c.

◆ IUGetConfigText()

int IUGetConfigText ( const char *  dev,
const char *  property,
const char *  member,
char *  value,
int  len 
)

IUGetConfigText Opens configuration file and reads single text property.

Parameters
devname of device
propertyname of vector property
membername of member property
valuepointer to save value of property if found.
lensize of char buffer (value)
Returns
0 on success, -1 if not found.

Definition at line 889 of file indidriver.c.

◆ IUPurgeConfig()

int IUPurgeConfig ( const char *  filename,
const char *  dev,
char  errmsg[] 
)
Parameters
filenamefull path of the configuration file. If set, it will be deleted from disk. If set to NULL, it will attempt to generate the filename as described in the Detailed Description introduction and then delete it.
devdevice name. This is used if the filename parameter is NULL, and INDICONFIG environment variable is not set as described in the Detailed Description introduction.
errmsgIn case of errors, store the error message in this buffer. The size of the buffer must be at least MAXRBUF.
Returns
0 on success, -1 on failure.

Definition at line 968 of file indidriver.c.

◆ IUReadConfig()

int IUReadConfig ( const char *  filename,
const char *  dev,
const char *  property,
int  silent,
char  errmsg[] 
)

Loads and processes a configuration file. Once a configuration file is successful loaded, the function will iterate over the enclosed newXXX commands, and dispatches each command to the driver. Subsequently, the driver receives the updated property value in the driver's ISNewXXX functions. The driver may call this function at any time. However, it is usually called either on driver startup or on device power up. By default, all the properties are read from the configuration file. To load a specific property, pass the property name, otherwise pass NULL to retrieve all properties.

Parameters
filenamefull path of the configuration file. If set, the function will attempt to load the file. If set to NULL, it will attempt to generate the filename as described in the Detailed Description introduction and then load it.
devdevice name. This is used if the filename parameter is NULL, and INDICONFIG environment variable is not set as described in the Detailed Description introduction.
propertyProperty name to load configuration for. If NULL, all properties within the configuration file will be processed.
silentIf silent is 1, it will suppress any output messages to the driver.
errmsgIn case of errors, store the error message in this buffer. The size of the buffer must be at least MAXRBUF.
Returns
0 on successful, -1 if there is an error and errmsg is set.

Definition at line 485 of file indidriver.c.

◆ IUSaveConfigTag()

void IUSaveConfigTag ( FILE *  fp,
int  ctag,
const char *  dev,
int  silent 
)

Add opening or closing tag to a configuration file. A configuration file root XML element is <INDIDriver>. This functions add <INDIDriver> or </INDIDriver> as required.

Parameters
fpfile pointer to a configuration file.
ctagIf 0, <INDIDriver> is appened to the configuration file, otherwise </INDIDriver> is appeneded and the fp is closed.
devdevice name. Used only for sending notification to the driver if silent is set to 1.
silentIf silent is 1, it will suppress any output messages to the driver.

Definition at line 1043 of file indidriver.c.

◆ IUSaveDefaultConfig()

int IUSaveDefaultConfig ( const char *  source_config,
const char *  dest_config,
const char *  dev 
)

Copies an existing configuration file into a default configuration file. If no default configuration file for the supplied dev exists, it gets created and its contentes copied from an exiting source configuration file. Usually, when the user saves the configuration file of a driver for the first time, IUSaveDefaultConfig is called to create the default configuration file. If the default configuration file already exists, the function performs no action and returns.

Parameters
source_configfull path of the source configuration file to read. If set, the function will attempt to load the file. If set to NULL, it will attempt to generate the filename as described in the Detailed Description introduction and then load it.
dest_configfull path of the destination default configuration file to write. If set, the function will attempt to load the file. If set to NULL, it will attempt to generate the filename as described in the Detailed Description introduction and then load it. If the file already exists, the function returns. If the file doesn't exist, it gets created and its contents copied from the source_config file.
devdevice name. This is used if either the source_config or desg_config are NULL, and INDICONFIG environment variable is not set as described in the Detailed Description introduction.
Returns
0 is successful, -1 othereise.

Definition at line 542 of file indidriver.c.

◆ IUUpdateBLOB()

int IUUpdateBLOB ( IBLOBVectorProperty bvp,
int  sizes[],
int  blobsizes[],
char *  blobs[],
char *  formats[],
char *  names[],
int  n 
)

Update all BLOB members in a BLOB vector property.

Parameters
bvpa pointer to a BLOB vector property.
sizessizes of the blobs.
blobsizessize of the blobs, raw without compression.
blobsa pointer to the BLOB members
namesthe names of the IBLOB members to update.
formatsThe blob format or extension.
nthe number of IBLOB members to update.
Returns
0 if update successful, -1 otherwise. Update will fail in case of property name mismatch.

Definition at line 1422 of file indidriver.c.

◆ IUUpdateMinMax()

void IUUpdateMinMax ( const INumberVectorProperty nvp)

Function to update the min and max elements of a number in the client.

Parameters
nvppointer to an INumberVectorProperty.
Warning
This call is not INDI protocol compliant. It sends setNumberVector along with updated Min/Max/Step values so that the client updates the range accordingly for this property. In the INDI-compliant paradigm, it is NOT possible to update min/max/step step of an existing number property and the only way is to do so is to delete and redefine the number property again. However, due to the many problems with approach in device drivers, INDI Library defines this function to simplify the update process without requiring a complete delete/define cycle.

Definition at line 1296 of file indidriver.c.

◆ IUUpdateNumber()

int IUUpdateNumber ( INumberVectorProperty nvp,
double  values[],
char *  names[],
int  n 
)

Update all numbers in a number vector property.

Parameters
nvpa pointer to a number vector property.
valuesthe states of the new INumber members.
namesthe names of the INumber members to update.
nthe number of INumber members to update.
Returns
0 if update successful, -1 otherwise. Update will fail if values are out of scope, or in case of property name mismatch.

Definition at line 1362 of file indidriver.c.

◆ IUUpdateSwitch()

int IUUpdateSwitch ( ISwitchVectorProperty svp,
ISState states,
char *  names[],
int  n 
)

Update all switches in a switch vector property.

Parameters
svpa pointer to a switch vector property.
statesthe states of the new ISwitch members.
namesthe names of the ISwtich members to update.
nthe number of ISwitch members to update.
Returns
0 if update successful, -1 otherwise.

Definition at line 1308 of file indidriver.c.

◆ IUUpdateText()

int IUUpdateText ( ITextVectorProperty tvp,
char *  texts[],
char *  names[],
int  n 
)

Update all text members in a text vector property.

Parameters
tvpa pointer to a text vector property.
textsa pointer to the text members
namesthe names of the IText members to update.
nthe number of IText members to update.
Returns
0 if update successful, -1 otherwise. Update will fail in case of property name mismatch.

Definition at line 1396 of file indidriver.c.

Variable Documentation

◆ me

char* me
extern

Definition at line 50 of file indidriver.c.

◆ verbose

int verbose
extern

INDI Driver Functions Copyright (C) 2003 - 2015 Jasem Mutlaq Copyright (C) 2003 - 2006 Elwood C. Downey

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

Definition at line 49 of file indidriver.c.