From 3c81f749b8ca8b83b49e07838d9032413fd18fe9 Mon Sep 17 00:00:00 2001 From: Paul Dino Jones Date: Thu, 28 May 2026 16:25:47 -0400 Subject: [PATCH] various fixes for weirdness with serial devices --- src/arduino/simhaptic/simdata.h | 1 - src/monocoque/devices/serialdevice.c | 32 +++++++++++++++++++++++----- src/monocoque/gameloop/gameloop.c | 4 ++++ 3 files changed, 31 insertions(+), 6 deletions(-) delete mode 120000 src/arduino/simhaptic/simdata.h diff --git a/src/arduino/simhaptic/simdata.h b/src/arduino/simhaptic/simdata.h deleted file mode 120000 index 56bde08..0000000 --- a/src/arduino/simhaptic/simdata.h +++ /dev/null @@ -1 +0,0 @@ -../../monocoque/simulatorapi/simapi/simapi/simdata.h \ No newline at end of file diff --git a/src/monocoque/devices/serialdevice.c b/src/monocoque/devices/serialdevice.c index 94ce340..fcb8b7c 100644 --- a/src/monocoque/devices/serialdevice.c +++ b/src/monocoque/devices/serialdevice.c @@ -140,6 +140,10 @@ int arduino_simhaptic_update(SimDevice* this, SimData* simdata) int result = 1; slogt("arduino haptic device updating"); + serialdevice->u.simhapticdata.motor1 = 0; + serialdevice->u.simhapticdata.motor2 = 0; + serialdevice->u.simhapticdata.motor3 = 0; + serialdevice->u.simhapticdata.motor4 = 0; double play = slipeffect(simdata, this->hapticeffect.effecttype, this->hapticeffect.tyre, this->hapticeffect.threshold, this->hapticeffect.useconfig, this->hapticeffect.configcheck, this->hapticeffect.tyrediameterconfig); @@ -149,23 +153,25 @@ int arduino_simhaptic_update(SimDevice* this, SimData* simdata) { play = 1.0; } - int effectspeed = ceil(255 * play); + uint8_t effectspeed = ceil(255 * play); - int motor = serialdevice->motorsposition; + uint8_t motor = serialdevice->motorsposition; if (play != serialdevice->state) { + // motor 1 if (motor == 0 || motor == 4 || motor == 7 || motor == 8 || motor == 10 || motor == 11 || motor == 13 || motor == 14) { serialdevice->u.simhapticdata.effect1 = effectspeed; serialdevice->u.simhapticdata.motor1 = 1; - slogt("Updating arduino haptic device with effect type %i speed motor speed %i on motor %i from original effect %f with ampfactor %f", this->hapticeffect.effecttype, serialdevice->u.simhapticdata.effect3, serialdevice->motorsposition, rplay, serialdevice->ampfactor); + slogt("Updating arduino haptic device with effect type %i speed motor speed %i on motor %i from original effect %f with ampfactor %f", this->hapticeffect.effecttype, serialdevice->u.simhapticdata.effect1, 1, rplay, serialdevice->ampfactor); } + // motor 3 if (motor == 2 || motor == 6 || motor == 8 || motor == 9 || motor == 10 || motor == 11 || motor == 12 || motor == 14) { serialdevice->u.simhapticdata.effect3 = effectspeed; serialdevice->u.simhapticdata.motor3 = 1; - slogt("Updating arduino haptic device with effect type %i speed motor speed %i on motor %i from original effect %f with ampfactor %f", this->hapticeffect.effecttype, serialdevice->u.simhapticdata.effect3, serialdevice->motorsposition, rplay, serialdevice->ampfactor); + slogt("Updating arduino haptic device with effect type %i speed motor speed %i on motor %i from original effect %f with ampfactor %f", this->hapticeffect.effecttype, serialdevice->u.simhapticdata.effect3, 3, rplay, serialdevice->ampfactor); } serialdevice->state = play; } @@ -255,6 +261,10 @@ int serialdev_init(SerialDevice* serialdevice, DeviceSettings* ds, SimInfo* simi { free(serialdevice->m.device_specific_config_file); } + if(error > 0) + { + error = 0; + } break; case ARDUINODEV__CUSTOM: serialdevice->m.device_specific_config_file = strdup(ds->specific_config_file); @@ -263,12 +273,24 @@ int serialdev_init(SerialDevice* serialdevice, DeviceSettings* ds, SimInfo* simi { free(serialdevice->m.device_specific_config_file); } + if(error > 0) + { + error = 0; + } break; case ARDUINODEV__SIMLED: error = arduino_custom_init(serialdevice, ds->serialdevsettings.portdev, NULL, false); + if(error > 0) + { + error = 0; + } break; default: error = arduino_init(serialdevice, ds->serialdevsettings.portdev); + if(error > 0) + { + error = 0; + } break; } @@ -399,7 +421,7 @@ SerialDevice* new_serial_device(DeviceSettings* ds, MonocoqueSettings* ms, SimIn if (error != 0) { - slogw("Did not initialize usb device due to error code %i", error); + slogw("Did not initialize serial device due to error code %i", error); free(this); return NULL; } diff --git a/src/monocoque/gameloop/gameloop.c b/src/monocoque/gameloop/gameloop.c index c0506ad..9d59fac 100644 --- a/src/monocoque/gameloop/gameloop.c +++ b/src/monocoque/gameloop/gameloop.c @@ -737,6 +737,10 @@ int tester(SimDevice* devices, int numdevices) simdata->tyrediameter[1] = -1; simdata->tyrediameter[2] = -1; simdata->tyrediameter[3] = -1; + simdata->tyreslipratio[0] = 0; + simdata->tyreslipratio[1] = 0; + simdata->tyreslipratio[2] = 0; + simdata->tyreslipratio[3] = 0; simdata->Xvelocity = 0; simdata->Yvelocity = 100; simdata->Zvelocity = 0;