diff --git a/src/monocoque/devices/serialadapter.c b/src/monocoque/devices/serialadapter.c index fde57d2..fbe330b 100644 --- a/src/monocoque/devices/serialadapter.c +++ b/src/monocoque/devices/serialadapter.c @@ -57,10 +57,13 @@ int monocoque_serial_free(SerialDevice* serialdevice) slogd("freeing physical device %s", monocoque_serial_devices[serialdevice->id].portname); sp_close(monocoque_serial_devices[serialdevice->id].port); sp_free_port(monocoque_serial_devices[serialdevice->id].port); + free(monocoque_serial_devices[serialdevice->id].portname); + + monocoque_serial_devices[serialdevice->id].port = NULL; + monocoque_serial_devices[serialdevice->id].portname = NULL; monocoque_serial_devices[serialdevice->id].busy = false; monocoque_serial_devices[serialdevice->id].open = false; monocoque_serial_devices[serialdevice->id].openfail = false; - free(monocoque_serial_devices[serialdevice->id].portname); } else { @@ -208,7 +211,7 @@ int monocoque_serial_open(SerialDevice* serialdevice, const char* portdev) free(monocoque_serial_devices[i].portname); monocoque_serial_devices[i].portname = NULL; monocoque_serial_devices[i].open = false; - monocoque_serial_devices[i].openfail = true; + monocoque_serial_devices[i].openfail = false; return -1; } diff --git a/src/monocoque/devices/serialadapter.h b/src/monocoque/devices/serialadapter.h index fb021a1..6955891 100644 --- a/src/monocoque/devices/serialadapter.h +++ b/src/monocoque/devices/serialadapter.h @@ -18,7 +18,7 @@ typedef struct } monocoque_serial_device; -static monocoque_serial_device monocoque_serial_devices[10]; +static monocoque_serial_device monocoque_serial_devices[20]; int monocoque_serial_write(uint8_t serialdevicenum, void* data, size_t size, int timeout); int monocoque_serial_write_block(uint8_t serialdevicenum, void* data, size_t size, int timeout); diff --git a/src/monocoque/gameloop/gameloop.c b/src/monocoque/gameloop/gameloop.c index 3179ef7..be6b786 100644 --- a/src/monocoque/gameloop/gameloop.c +++ b/src/monocoque/gameloop/gameloop.c @@ -11,11 +11,8 @@ #include "gameloop.h" #include "loopdata.h" -#include "../devices/sound.h" -#include "../helper/parameters.h" #include "../helper/confighelper.h" #include "../devices/simdevice.h" -#include "../devices/serialadapter.h" #include "../simulatorapi/simapi/simapi/simdata.h" #include "../simulatorapi/simapi/simapi/simmapper.h" #include "../slog/slog.h" @@ -252,15 +249,11 @@ void looprun(MonocoqueSettings* ms, loop_data* f, SimData* simdata) f->simdevices = malloc(f->numdevices * sizeof(SimDevice)); int initdevices = devinit(f->simdevices, configureddevices, ds, ms); - - for(int d = 0; d < 10; d++) + for( int i = 0; i < configureddevices; i++) { - monocoque_serial_devices[d].open = false; - monocoque_serial_devices[d].openfail = false; - monocoque_serial_devices[d].busy = false; - monocoque_serial_devices[d].refs = 0; + settingsfree(ds[i]); } - + free(ds); int numdevices = f->numdevices; SimDevice* devices = f->simdevices; @@ -287,12 +280,7 @@ void looprun(MonocoqueSettings* ms, loop_data* f, SimData* simdata) } } - int i = 0; - for( i = 0; i < configureddevices; i++) - { - settingsfree(ds[i]); - } - free(ds); + doui = false; } else @@ -361,13 +349,6 @@ void shmdatamapcallback(uv_timer_t* handle) } } sleep(1); - for(int d = 0; d < 10; d++) - { - if(monocoque_serial_devices[d].portname != NULL) - { - free(monocoque_serial_devices[d].portname); - } - } for (int x = 0; x < numdevices; x++) { if (devices[x].initialized == true)