/************************************************************************/
/* Copyright 2012 MBARI							*/
/************************************************************************/
/* Summary  : Definitions for system variables for BEDS controller	*/
/* Filename : variable.h						*/
/* Author   : Robert Herlien (rah)					*/
/* Project  : Benthic Event Detection System (BEDS)			*/
/* Revision : 1.0							*/
/* Created  : 09/24/2012						*/
/*									    */
/* MBARI provides this documentation and code "as is", with no warranty,    */
/* express or implied, of its quality or consistency. It is provided without*/
/* support and without obligation on the part of the Monterey Bay Aquarium  */
/* Research Institute to assist in its use, correction, modification, or    */
/* enhancement. This information should not be published or distributed to  */
/* third parties without specific written permission from MBARI.            */
/*									    */
/************************************************************************/
/* Modification History:						*/
/* 24sep2012 rah - created from Oasis4 parm.h				*/
/* $Log$
 */
/************************************************************************/

#ifndef INCvariableh
#define INCvariable	1

#include <cfxpico.h>


typedef enum			/****************************************/
{				/* VarType - enum for variable type	*/
    VAR_LONG,			/* Long integer type			*/
    VAR_FLOAT,			/* Floating point number		*/
    VAR_BOOL,			/* Boolean, true/false			*/
    VAR_STRING,			/* ASCII String (constant)		*/
    VAR_STRINGA,		/* ASCII String from malloc mem		*/
    VAR_ENUM			/* Enumerated type			*/
} VarType;			/****************************************/

typedef struct			/****************************************/
{				/* Var - System Variable Struct		*/
    char	*vname;		/* Name of parameter			*/
    Void	*vval;		/* Pointer to variable			*/
    VarType	vtype;		/* Variable type			*/
    char *	(*vfunc)();	/* Function to call after var changed	*/
    Int32       valMin;         /* Min value (for VAR_LONG only)        */
    Int32       valMax;         /* Max value (for VAR_LONG only)        */
    char	*vhelp;		/* Help string for variable		*/
} Var;				/****************************************/

#define	VAR_ALLOCATED	1


/****************************************/
/* Function Declarations		*/
/****************************************/

Void	initVars(Void);
Var	*findVar(char *name);
char	*setVar(char *name, char *value, MBool show);
char	*varCmd(CmdInfoPtr cip);
void    checkVars(Void);

#endif /* INCvariableh */
