Add some robustness to diameters file and slip effect code
This commit is contained in:
parent
695581b66d
commit
910e225a9a
|
|
@ -61,28 +61,39 @@ int loadtyreconfig(SimData* simdata, char* configfile)
|
||||||
DeviceSettings settings;
|
DeviceSettings settings;
|
||||||
|
|
||||||
config_setting_t* config_car = config_setting_get_elem(config_cars, i);
|
config_setting_t* config_car = config_setting_get_elem(config_cars, i);
|
||||||
const char* car;
|
if(config_car != NULL)
|
||||||
double tyre0;
|
|
||||||
double tyre1;
|
|
||||||
double tyre2;
|
|
||||||
double tyre3;
|
|
||||||
config_setting_lookup_string(config_car, "car", &car);
|
|
||||||
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);
|
|
||||||
|
|
||||||
if(simdata->car != NULL)
|
|
||||||
{
|
{
|
||||||
if (strcicmp(car, simdata->car) == 0)
|
const char* car;
|
||||||
|
double tyre0;
|
||||||
|
double tyre1;
|
||||||
|
double tyre2;
|
||||||
|
double tyre3;
|
||||||
|
config_setting_lookup_string(config_car, "car", &car);
|
||||||
|
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);
|
||||||
|
|
||||||
|
if(simdata->car != NULL && car != NULL)
|
||||||
{
|
{
|
||||||
simdata->tyrediameter[0] = tyre0;
|
if(simdata->car[0] != '\0' && car[0] != '\0')
|
||||||
simdata->tyrediameter[1] = tyre1;
|
{
|
||||||
simdata->tyrediameter[2] = tyre2;
|
if (strcicmp(car, simdata->car) == 0)
|
||||||
simdata->tyrediameter[3] = tyre3;
|
{
|
||||||
break;
|
slogt("found saved car %s with tyre diameters %f %f %f %f", car, tyre0, tyre1, tyre2, tyre3);
|
||||||
|
simdata->tyrediameter[0] = tyre0;
|
||||||
|
simdata->tyrediameter[1] = tyre1;
|
||||||
|
simdata->tyrediameter[2] = tyre2;
|
||||||
|
simdata->tyrediameter[3] = tyre3;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
slogw("Possible corruption in config file on entry %i attempting to continue", i+1);
|
||||||
|
}
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -307,7 +318,18 @@ double slipeffect(SimData* simdata, int effecttype, int tyre, double threshold,
|
||||||
wheelslip[2] = 0;
|
wheelslip[2] = 0;
|
||||||
wheelslip[3] = 0;
|
wheelslip[3] = 0;
|
||||||
|
|
||||||
slogt("wheel vibration calculation with wheel config set to %i configchecked %i configfile %s", useconfig, *configcheck, configfile);
|
if(simdata->car == NULL)
|
||||||
|
{
|
||||||
|
slogw("sim is not compatible with wheel and tyre effects.");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
if(simdata->car[0] == '\0')
|
||||||
|
{
|
||||||
|
slogw("sim is not compatible with wheel and tyre effects.");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
slogt("wheel vibration calculation with wheel config set to %i configchecked %i configfile %s car %s", useconfig, *configcheck, configfile, simdata->car);
|
||||||
|
|
||||||
switch (effecttype)
|
switch (effecttype)
|
||||||
{
|
{
|
||||||
|
|
@ -315,7 +337,7 @@ double slipeffect(SimData* simdata, int effecttype, int tyre, double threshold,
|
||||||
case (EFFECT_TYRELOCK):
|
case (EFFECT_TYRELOCK):
|
||||||
case (EFFECT_ABSBRAKES):
|
case (EFFECT_ABSBRAKES):
|
||||||
|
|
||||||
if(useconfig == 1 && configfile != NULL && simdata->car != NULL)
|
if(useconfig == 1 && configfile != NULL)
|
||||||
{
|
{
|
||||||
// check for saved tyre diameter in config file
|
// check for saved tyre diameter in config file
|
||||||
// if not saved version exists get tyre diameter and save it
|
// if not saved version exists get tyre diameter and save it
|
||||||
|
|
@ -340,7 +362,7 @@ double slipeffect(SimData* simdata, int effecttype, int tyre, double threshold,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(hasTyreDiameter(simdata)==true && simdata->car != NULL)
|
if(hasTyreDiameter(simdata)==true)
|
||||||
{
|
{
|
||||||
double Speedms = kmhtoms * simdata->velocity;
|
double Speedms = kmhtoms * simdata->velocity;
|
||||||
slogt("attempting wheel slip calculation");
|
slogt("attempting wheel slip calculation");
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue