aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/libsurvive/survive.h5
-rw-r--r--src/poser_general_optimizer.c6
-rw-r--r--src/poser_sba.c14
-rw-r--r--src/poser_sba.h16
-rw-r--r--src/survive.c4
-rw-r--r--src/survive_config.c41
-rw-r--r--src/survive_playback.c2
7 files changed, 54 insertions, 34 deletions
diff --git a/include/libsurvive/survive.h b/include/libsurvive/survive.h
index d6b43ef..ed439cb 100644
--- a/include/libsurvive/survive.h
+++ b/include/libsurvive/survive.h
@@ -286,7 +286,10 @@ SURVIVE_EXPORT int survive_send_magic(SurviveContext *ctx, int magic_code, void
SURVIVE_EXPORT FLT survive_configf(SurviveContext *ctx, const char *tag, char flags, FLT def);
SURVIVE_EXPORT uint32_t survive_configi(SurviveContext *ctx, const char *tag, char flags, uint32_t def);
SURVIVE_EXPORT const char *survive_configs(SurviveContext *ctx, const char *tag, char flags, const char *def);
-SURVIVE_EXPORT void survive_attach_config(SurviveContext *ctx, const char *tag, void * var, char type );
+
+SURVIVE_EXPORT void survive_attach_configi(SurviveContext *ctx, const char *tag, int * var );
+SURVIVE_EXPORT void survive_attach_configf(SurviveContext *ctx, const char *tag, FLT * var );
+SURVIVE_EXPORT void survive_attach_configs(SurviveContext *ctx, const char *tag, char * var );
SURVIVE_EXPORT void survive_detach_config(SurviveContext *ctx, const char *tag, void * var );
#define STATIC_CONFIG_ITEM( variable, name, type, description, default_value ) \
diff --git a/src/poser_general_optimizer.c b/src/poser_general_optimizer.c
index 186b359..6f181a3 100644
--- a/src/poser_general_optimizer.c
+++ b/src/poser_general_optimizer.c
@@ -17,9 +17,9 @@ void general_optimizer_data_init(GeneralOptimizerData *d, SurviveObject *so) {
SurviveContext *ctx = so->ctx;
- survive_attach_config( ctx, "failures-to-reset", &d->failures_to_reset, 'i' );
- survive_attach_config( ctx, "successes-to-reset", &d->successes_to_reset, 'i' );
- survive_attach_config( ctx, "max-error", &d->max_error, 'f' );
+ survive_attach_configf( ctx, "max-error", &d->max_error );
+ survive_attach_configi( ctx, "failures-to-reset", &d->failures_to_reset );
+ survive_attach_configi( ctx, "successes-to-reset", &d->successes_to_reset );
const char *subposer = survive_configs(ctx, "seed-poser", SC_GET, 0 );
d->seed_poser = (PoserCB)GetDriver(subposer);
diff --git a/src/poser_sba.c b/src/poser_sba.c
index 21dd74f..b049c80 100644
--- a/src/poser_sba.c
+++ b/src/poser_sba.c
@@ -50,7 +50,7 @@ typedef struct SBAData {
survive_kpose_t kpose;
SurviveIMUTracker tracker;
- bool useIMU;
+ int useIMU;
struct {
int meas_failures;
@@ -352,12 +352,12 @@ int PoserSBA(SurviveObject *so, PoserData *pd) {
general_optimizer_data_init(&d->opt, so);
- survive_attach_config( ctx, "sba-use-imu", &d->useIMU, 'i' );
- survive_attach_config( ctx, "sba-required-meas", &d->required_meas, 'i' );
- survive_attach_config( ctx, "sba-time-window", &d->sensor_time_window, 'i' );
- survive_attach_config( ctx, "sba-sensor-variance-per-sec", &d->sensor_variance_per_second, 'f' );
- survive_attach_config( ctx, "sba-sensor-variance", &d->sensor_variance, 'f' );
- survive_attach_config( ctx, "sba-use-jacobian-function", &d->use_jacobian_function, 'i' );
+ survive_attach_configi( ctx, "sba-use-imu", &d->useIMU );
+ survive_attach_configi( ctx, "sba-required-meas", &d->required_meas );
+ survive_attach_configi( ctx, "sba-time-window", &d->sensor_time_window );
+ survive_attach_configf( ctx, "sba-sensor-variance-per-sec", &d->sensor_variance_per_second );
+ survive_attach_configf( ctx, "sba-sensor-variance", &d->sensor_variance );
+ survive_attach_configi( ctx, "sba-use-jacobian-function", &d->use_jacobian_function );
SV_INFO("Initializing SBA:");
SV_INFO("\tsba-required-meas: %d", d->required_meas);
diff --git a/src/poser_sba.h b/src/poser_sba.h
deleted file mode 100644
index 8a49122..0000000
--- a/src/poser_sba.h
+++ /dev/null
@@ -1,16 +0,0 @@
-#pragma once
-
-#pragma once
-#include <stdint.h>
-#define FLT double
-#include "survive_reproject.h"
-#include <libsurvive/poser.h>
-#include <ostream>
-
-struct SurviveObject;
-
-int sba_bruteforce_config_solver_cb(SurviveObject *so, PoserData *pd);
-int sba_solver_poser_cb(SurviveObject *so, PoserData *pd);
-
-std::ostream &operator<<(std::ostream &o, const survive_calibration_options_config &self);
-std::ostream &operator<<(std::ostream &o, const survive_calibration_config &self); \ No newline at end of file
diff --git a/src/survive.c b/src/survive.c
index 2bdefca..7ee1992 100644
--- a/src/survive.c
+++ b/src/survive.c
@@ -156,8 +156,8 @@ SurviveContext *survive_init_internal(int argc, char *const *argv) {
ctx->lh_config = malloc(sizeof(config_group) * NUM_LIGHTHOUSES);
// initdata
- init_config_group(ctx->global_config_values, 10, ctx);
- init_config_group(ctx->temporary_config_values, 20, ctx);
+ init_config_group(ctx->global_config_values, 30, ctx);
+ init_config_group(ctx->temporary_config_values, 30, ctx);
for( i = 0; i < NUM_LIGHTHOUSES; i++ )
init_config_group(&ctx->lh_config[i], 10, ctx);
diff --git a/src/survive_config.c b/src/survive_config.c
index 23433c4..5ee4a84 100644
--- a/src/survive_config.c
+++ b/src/survive_config.c
@@ -77,7 +77,7 @@ int survive_print_help_for_parameter( const char * tomap )
{
char sthelp[160];
snprintf( sthelp, 159, " %s: %s [%c]", sc->name, sc->description, sc->type );
- fprintf( stderr, "\0337\033[1A\033[1000D%s\0338", sthelp, strlen( sthelp ));
+ fprintf( stderr, "\0337\033[1A\033[1000D%s\0338", sthelp );
return 1;
}
}
@@ -776,13 +776,31 @@ const char *survive_configs(SurviveContext *ctx, const char *tag, char flags, co
return def;
}
-SURVIVE_EXPORT void survive_attach_config(SurviveContext *ctx, const char *tag, void * var, char type )
+static void survive_attach_config(SurviveContext *ctx, const char *tag, void * var, char type )
{
config_entry *cv = sc_search(ctx, tag);
if( !cv )
{
- SV_ERROR( "Configuration item %s not initialized.\n", tag );
- return;
+ //Check to see if there is a static config with this value.
+ if( type == 'i' )
+ {
+ *((int*)var) = survive_configi( ctx, tag, SC_SET, 0);
+ }
+ if( type == 'f' )
+ {
+ *((FLT*)var) = survive_configf( ctx, tag, SC_SET, 0);
+ }
+ if( type == 's' )
+ {
+ const char * cv = survive_configs( ctx, tag, SC_SET, 0);
+ memcpy( var, cv, strlen(cv) );
+ }
+ cv = sc_search(ctx, tag);
+ if( !cv )
+ {
+ SV_ERROR( "Configuration item %s not initialized.\n", tag );
+ return;
+ }
}
update_list_t ** ul = &cv->update_list;
while( *ul )
@@ -795,6 +813,21 @@ SURVIVE_EXPORT void survive_attach_config(SurviveContext *ctx, const char *tag,
t->value = var;
}
+SURVIVE_EXPORT void survive_attach_configi(SurviveContext *ctx, const char *tag, int * var )
+{
+ survive_attach_config( ctx, tag, var, 'i' );
+}
+
+SURVIVE_EXPORT void survive_attach_configf(SurviveContext *ctx, const char *tag, FLT * var )
+{
+ survive_attach_config( ctx, tag, var, 'f' );
+}
+
+SURVIVE_EXPORT void survive_attach_configs(SurviveContext *ctx, const char *tag, char * var )
+{
+ survive_attach_config( ctx, tag, var, 's' );
+}
+
SURVIVE_EXPORT void survive_detach_config(SurviveContext *ctx, const char *tag, void * var )
{
config_entry *cv = sc_search(ctx, tag);
diff --git a/src/survive_playback.c b/src/survive_playback.c
index ebf7e3f..c616aea 100644
--- a/src/survive_playback.c
+++ b/src/survive_playback.c
@@ -401,7 +401,7 @@ int DriverRegPlayback(SurviveContext *ctx) {
return -1;
}
- survive_attach_config( ctx, "playback-factor", &sp->playback_factor, 'f' );
+ survive_attach_configf( ctx, "playback-factor", &sp->playback_factor );
SV_INFO("Using playback file '%s' with timefactor of %f", playback_file, sp->playback_factor );
SurviveObject *hmd = survive_create_hmd(ctx, "Playback", sp);