From f2ba345cabb42e610c33c7dfe9ab4ca8a170e2fc Mon Sep 17 00:00:00 2001 From: Paul Dino Jones Date: Mon, 20 Jan 2025 10:53:57 -0500 Subject: [PATCH] Update to latest simapi, allow sim strings in configs --- src/monocoque/devices/hapticeffect.c | 19 +++++++--- src/monocoque/helper/confighelper.c | 53 ++++++++++++---------------- src/monocoque/simulatorapi/simapi | 2 +- 3 files changed, 38 insertions(+), 36 deletions(-) diff --git a/src/monocoque/devices/hapticeffect.c b/src/monocoque/devices/hapticeffect.c index ef78e60..dd5d536 100644 --- a/src/monocoque/devices/hapticeffect.c +++ b/src/monocoque/devices/hapticeffect.c @@ -8,6 +8,7 @@ #include "usbhapticdevice.h" #include "../../helper/confighelper.h" #include "../../simulatorapi/simapi/simapi/simdata.h" +#include "../../simulatorapi/simapi/simapi/simmapper.h" #include "../../slog/slog.h" #define kmhtoms 0.277778 @@ -63,23 +64,33 @@ int loadtyreconfig(SimData* simdata, char* configfile) if(config_car != NULL) { const char* car; - int sim; + const char* simstr; + int sim = 0; double tyre0; double tyre1; double tyre2; double tyre3; config_setting_lookup_string(config_car, "car", &car); - config_setting_lookup_int(config_car, "sim", &sim); config_setting_lookup_float(config_car, "tyre0", &tyre0); config_setting_lookup_float(config_car, "tyre1", &tyre1); config_setting_lookup_float(config_car, "tyre2", &tyre2); config_setting_lookup_float(config_car, "tyre3", &tyre3); + int found = config_setting_lookup_string(config_car, "sim", &simstr); + if(found == 0) + { + int found = config_setting_lookup_int(config_car, "sim", &sim); + } + else + { + sim = simapi_strtogame(simstr); + } + if(simdata->car != NULL && car != NULL) { if(simdata->car[0] != '\0' && car[0] != '\0') { - if (strcicmp(car, simdata->car) == 0 && sim == simdata->sim) + if (strcicmp(car, simdata->car) == 0 && sim == simdata->simexe) { slogt("found saved car %s with tyre diameters %f %f %f %f", car, tyre0, tyre1, tyre2, tyre3); simdata->tyrediameter[0] = tyre0; @@ -131,7 +142,7 @@ int savetyreconfig(SimData* simdata, char* configfile) setting = config_setting_add(carobject, "car", CONFIG_TYPE_STRING); config_setting_set_string(setting, simdata->car); setting = config_setting_add(carobject, "sim", CONFIG_TYPE_INT); - config_setting_set_int(setting, simdata->sim); + config_setting_set_string(setting, simapi_gametostr(simdata->simexe)); setting = config_setting_add(carobject, "tyre0", CONFIG_TYPE_FLOAT); config_setting_set_float(setting, simdata->tyrediameter[0]); setting = config_setting_add(carobject, "tyre1", CONFIG_TYPE_FLOAT); diff --git a/src/monocoque/helper/confighelper.c b/src/monocoque/helper/confighelper.c index 3472c48..75565de 100644 --- a/src/monocoque/helper/confighelper.c +++ b/src/monocoque/helper/confighelper.c @@ -11,9 +11,12 @@ #include "confighelper.h" + #include "../slog/slog.h" #include "parameters.h" +#include "../simulatorapi/simapi/simapi/simmapper.h" + #include int strcicmp(char const *a, char const *b) @@ -25,34 +28,6 @@ int strcicmp(char const *a, char const *b) } } - -int strtogame(const char* game, MonocoqueSettings* ms) -{ - slogd("Checking for %s in list of supported simulators.", game); - if (strcicmp(game, "ac") == 0) - { - slogd("Setting simulator to Assetto Corsa"); - ms->sim_name = SIMULATOR_ASSETTO_CORSA; - } - else if (strcicmp(game, "rf2") == 0) - { - slogd("Setting simulator to RFactor 2"); - ms->sim_name = SIMULATOR_RFACTOR2; - } - else - if (strcicmp(game, "test") == 0) - { - slogd("Setting simulator to Test Data"); - ms->sim_name = SIMULATOR_SIMAPI_TEST; - } - else - { - slogi("%s does not appear to be a supported simulator.", game); - return MONOCOQUE_ERROR_INVALID_SIM; - } - return MONOCOQUE_ERROR_NONE; -} - int strtoeffecttype(const char* effect, DeviceSettings* ds) { ds->is_valid = false; @@ -226,6 +201,22 @@ int strtodev(const char* device_type, const char* device_subtype, DeviceSettings return MONOCOQUE_ERROR_NONE; } +int getsimfromconfig(config_setting_t* c) +{ + int sim = 0; + const char* simstr = NULL; + int found = config_setting_lookup_string(c, "sim", &simstr); + if(found == 0) + { + int found = config_setting_lookup_int(c, "sim", &sim); + } + else + { + sim = simapi_strtogame(simstr); + } + return sim; +} + int getNumberOfConfigs(const char* config_file_str) { config_t cfg; @@ -273,7 +264,7 @@ int getconfigtouse2(const char* config_file_str, char* car, int sim) int found = 0; int csim = 0; slogt("sim is %i", sim); - config_setting_lookup_int(config_config, "sim", &csim); + csim = getsimfromconfig(config_config); if (csim != sim) { slogt("rejected config %i", j); @@ -330,7 +321,7 @@ int getconfigtouse1(const char* config_file_str, char* car, int sim) int found = 0; int csim = 0; slogt("sim is %i", sim); - config_setting_lookup_int(config_config, "sim", &csim); + csim = getsimfromconfig(config_config); if (csim != sim) { slogt("rejected config %i", j); @@ -398,7 +389,7 @@ int getconfigtouse(const char* config_file_str, char* car, int sim) int found = 0; int csim = 0; slogt("sim is %i", sim); - config_setting_lookup_int(config_config, "sim", &csim); + csim = getsimfromconfig(config_config); if (csim != sim && csim != 0) { slogt("rejected config %i", j); diff --git a/src/monocoque/simulatorapi/simapi b/src/monocoque/simulatorapi/simapi index 6b65327..7dd3b3b 160000 --- a/src/monocoque/simulatorapi/simapi +++ b/src/monocoque/simulatorapi/simapi @@ -1 +1 @@ -Subproject commit 6b6532795f97304bed8aa9d51ef6163865109b6a +Subproject commit 7dd3b3b0cbdf69ac0fcd06452aa4fc543f0d5a5b