param_interface.h

Go to the documentation of this file.
00001 /*********************************************************
00002  *
00003  * This source code is part of the Carnegie Mellon Robot
00004  * Navigation Toolkit (CARMEN)
00005  *
00006  * CARMEN Copyright (c) 2002 Michael Montemerlo, Nicholas
00007  * Roy, and Sebastian Thrun
00008  *
00009  * CARMEN is free software; you can redistribute it and/or 
00010  * modify it under the terms of the GNU General Public 
00011  * License as published by the Free Software Foundation; 
00012  * either version 2 of the License, or (at your option)
00013  * any later version.
00014  *
00015  * CARMEN is distributed in the hope that it will be useful,
00016  * but WITHOUT ANY WARRANTY; without even the implied 
00017  * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
00018  * PURPOSE.  See the GNU General Public License for more 
00019  * details.
00020  *
00021  * You should have received a copy of the GNU General 
00022  * Public License along with CARMEN; if not, write to the
00023  * Free Software Foundation, Inc., 59 Temple Place, 
00024  * Suite 330, Boston, MA  02111-1307 USA
00025  *
00026  ********************************************************/
00027 
00029 // @{
00030 
00038 #ifndef CARMEN_PARAMETER_INTERFACE_H
00039 #define CARMEN_PARAMETER_INTERFACE_H
00040 
00041 #include <carmen/param_messages.h>
00042 
00043 
00044 #ifdef __cplusplus
00045 extern "C" {
00046 #endif
00047 
00048 #define carmen_param_handle_error(error, usage, progname) {if ((error) < 0) usage(progname, carmen_param_get_error());}
00049 
00050 #define CARMEN_PARAM_INT      1
00051 #define CARMEN_PARAM_DOUBLE   2
00052 #define CARMEN_PARAM_ONOFF    3
00053 #define CARMEN_PARAM_STRING   4
00054 #define CARMEN_PARAM_FILE     5
00055 #define CARMEN_PARAM_DIR      6
00056 
00057 #define CARMEN_PARAM_EXPERT  64
00058 
00059 typedef char carmen_param_type_t;
00060 
00061 typedef void (*carmen_param_change_handler_t)(char *module, char *variable, char *value);
00062 
00068 typedef struct {
00069   char *module;                      
00070   char *variable;                    
00071   carmen_param_type_t type;          
00074   void *user_variable;               
00076   int subscribe;                     
00081   carmen_param_change_handler_t handler; 
00084 } carmen_param_t, *carmen_param_p;
00085 
00090   char *carmen_param_get_robot(void);
00091 
00096   int carmen_param_get_modules(char ***modules, int *num_modules);
00097 
00104   void carmen_param_set_module(char *new_module_name);
00105 
00113   char *carmen_param_get_module(void);
00114   
00119   int carmen_param_get_paramserver_host(char **hostname);
00120 
00125   int carmen_param_get_all(char *module, char ***variables, char ***values, 
00126                            int **expert, int *list_length);
00127 
00128   int carmen_param_get_int(char *variable, int *return_value, int *expert);
00129   int carmen_param_get_double(char *variable, double *return_value, 
00130                               int *expert);
00131   int carmen_param_get_onoff(char *variable, int *return_value, int *expert);
00132   int carmen_param_get_string(char *variable, char **return_value, 
00133                               int *expert);
00134 
00140   int carmen_param_get_filename(char *variable, char  **return_value, 
00141                                 int *expert);
00142   
00143   int carmen_param_set_variable(char *variable, char *new_value, 
00144                               char **return_value);
00145   int carmen_param_set_int(char *variable, int new_value, int *return_value);
00146   int carmen_param_set_double(char *variable, double  new_value, 
00147                               double *return_value);
00148   int carmen_param_set_onoff(char *variable, int new_value, int *return_value);
00149   int carmen_param_set_string(char *variable, char *new_value, 
00150                               char **return_value);
00151 
00155   int carmen_param_set_filename(char *variable, char *new_value,
00156                                 char **return_value);
00157   
00162   char *carmen_param_get_error(void);
00163 
00169   void carmen_param_allow_unfound_variables(int new_value);
00170   int carmen_param_are_unfound_variables_allowed(void);
00171   
00172   void carmen_param_set_usage_line(char *fmt, ...);
00173 
00178   int carmen_param_install_params(int argc, char *argv[], 
00179                                   carmen_param_p param_list, 
00180                                   int num_items);
00181   
00192   void carmen_param_usage(char *progname, carmen_param_p param_list, 
00193                           int num_items, char *fmt, ...);
00194   
00195   void carmen_param_load_paramfile(char *filename, char *param_set);
00196   
00197   void carmen_param_check_unhandled_commandline_args(int argc, char *argv[]);
00198   
00199   void carmen_param_subscribe_int(char *module, char *variable, 
00200                                   int *variable_address, 
00201                                   carmen_param_change_handler_t handler);
00202   void carmen_param_subscribe_double(char *module, char *variable, 
00203                                      double *variable_address, 
00204                                      carmen_param_change_handler_t handler);
00205   void carmen_param_subscribe_onoff(char *module, char *variable, 
00206                                     int *variable_address, 
00207                                     carmen_param_change_handler_t handler);
00208   void carmen_param_subscribe_string(char *module, char *variable, 
00209                                      char **variable_address, 
00210                                      carmen_param_change_handler_t handler);
00211   void carmen_param_subscribe_file(char *module, char *variable, 
00212                                    char **variable_address, 
00213                                    carmen_param_change_handler_t handler);
00214   void carmen_param_subscribe_dir(char *module, char *variable, 
00215                                   char **variable_address, 
00216                                   carmen_param_change_handler_t handler);
00217   
00222   int carmen_param_check_version(char *prog_name);
00223 
00228   void carmen_param_send_reread(void);
00229 
00230 #ifdef __cplusplus
00231 }
00232 #endif
00233 
00234 #endif
00235 // @}

Generated on Wed Apr 5 18:34:18 2006 for CARMEN by  doxygen 1.4.4