00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
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