| summaryrefslogtreecommitdiff |
diff options
| author | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2015-09-02 15:55:11 +0200 |
|---|---|---|
| committer | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2015-09-02 15:55:11 +0200 |
| commit | 26b95c0953b8024d487897bf2aaaf1a8836f23a7 (patch) | |
| tree | b6370c9eb56ab664f3ab1680dcca586b922f1ea6 /src/config.c | |
| parent | 60b7a25bf38dce957c937ff602c1c812faff8b0f (diff) | |
relabsd is no longer limited to 6DOF devices.
Diffstat (limited to 'src/config.c')
| -rw-r--r-- | src/config.c | 88 |
1 files changed, 34 insertions, 54 deletions
diff --git a/src/config.c b/src/config.c index 2c860b9..3fdea03 100644 --- a/src/config.c +++ b/src/config.c @@ -55,48 +55,20 @@ static int reach_next_line_or_eof (FILE * const f) } /* - * Returns -1 on if an axis has not been configured, - * 0 otherwise. - */ -static int all_axes_are_configured (const int * const axis_is_configured) -{ - int i; - - for (i = 0; i < 6; ++i) - { - if (axis_is_configured[i] == 0) - { - _FATAL - ( - "[CONFIG] Axis '%s' is not configured.", - relabsd_axis_enum_to_name((enum relabsd_axis) i) - ); - - return -1; - } - } - - return 0; -} - -/* * Returns -1 on (fatal) error, * 0 on succes. - * On failure, 'axis_is_configured' is untouched. - * On success, the corresponding 'axis_is_configured' is set to 1. */ static int parse_axis_configuration_line ( struct relabsd_config * const conf, FILE * const f, - int * const axis_is_configured, const char * const buffer ) { int valc, prev_errno; enum relabsd_axis axis; - axis = relabsd_axis_name_to_enum(buffer); + axis = relabsd_axis_from_name(buffer); if (axis == RELABSD_UNKNOWN) { @@ -163,7 +135,7 @@ static int parse_axis_configuration_line errno = prev_errno; - axis_is_configured[axis] = 1; + conf->axis[axis].enabled = 1; return 0; } @@ -177,23 +149,12 @@ static int read_config_line ( struct relabsd_config * const conf, FILE * const f, - int * const axis_is_configured, const char * const prefix ) { if (!_IS_PREFIX("#", prefix)) { - if - ( - parse_axis_configuration_line - ( - conf, - f, - axis_is_configured, - prefix - ) - < 0 - ) + if (parse_axis_configuration_line(conf, f, prefix) < 0) { /* Fatal error. */ return -1; @@ -214,14 +175,11 @@ static int read_config_file ) { FILE * f; - int axis_is_configured[6]; char buffer[3]; int continue_reading, prev_errno; buffer[2] = '\0'; - memset(axis_is_configured, 0, (6 * sizeof(int))); - f = fopen(filename, "r"); if (f == (FILE *) NULL) @@ -242,7 +200,7 @@ static int read_config_file while ((continue_reading == 1) && (fscanf(f, "%2s", buffer) != EOF)) { - switch (read_config_line(conf, f, axis_is_configured, buffer)) + switch (read_config_line(conf, f, buffer)) { case 1: /* Everything is going well. */ @@ -284,11 +242,6 @@ static int read_config_file fclose(f); - if (all_axes_are_configured(axis_is_configured) < 0) - { - return -1; - } - return 0; } @@ -316,6 +269,16 @@ static int check_usage return 0; } +static void init_axes_config (struct relabsd_config * const conf) +{ + int i; + + for (i = RELABSD_VALID_AXES_COUNT; i --> 0;) + { + conf->axis[i].enabled = 0; + } +} + int relabsd_config_parse ( struct relabsd_config * const conf, @@ -339,6 +302,8 @@ int relabsd_config_parse conf->input_file = argv[1]; + init_axes_config(conf); + if (read_config_file(conf, argv[2]) < 0) { return -1; @@ -347,14 +312,29 @@ int relabsd_config_parse return 0; } -int relabsd_config_allows +int relabsd_config_filter ( const struct relabsd_config * const conf, enum relabsd_axis const axis, - int const value + int * const value ) { - /* TODO */ + if ((axis == RELABSD_UNKNOWN) || !conf->axis[axis].enabled) + { + return 0; + } + + if (*value < conf->axis[axis].min) + { + *value = conf->axis[axis].min; + } + else if (*value > conf->axis[axis].max) + { + *value = conf->axis[axis].max; + } + + /* TODO: handle the other properties. */ + return 1; }; |


