Add ability to specify baud rate in config file

This commit is contained in:
Paul Dino Jones 2024-09-04 12:56:02 -04:00
parent 2fb0383091
commit f474027f0a
5 changed files with 14 additions and 19 deletions

View File

@ -42,7 +42,7 @@ int arduino_update(SerialDevice* serialdevice, void* data, size_t size)
// return result; // return result;
//} //}
int arduino_init(SerialDevice* serialdevice, const char* portdev) int arduino_init(SerialDevice* serialdevice, const char* portdev, int baud)
{ {
slogi("initializing arduino serial device..."); slogi("initializing arduino serial device...");
int error = 0; int error = 0;
@ -59,7 +59,7 @@ int arduino_init(SerialDevice* serialdevice, const char* portdev)
check(sp_open(serialdevice->port, SP_MODE_READ_WRITE)); check(sp_open(serialdevice->port, SP_MODE_READ_WRITE));
slogd("Setting port to 9600 8N1, no flow control.\n"); slogd("Setting port to 9600 8N1, no flow control.\n");
check(sp_set_baudrate(serialdevice->port, 9600)); check(sp_set_baudrate(serialdevice->port, baud));
check(sp_set_bits(serialdevice->port, 8)); check(sp_set_bits(serialdevice->port, 8));
check(sp_set_parity(serialdevice->port, SP_PARITY_NONE)); check(sp_set_parity(serialdevice->port, SP_PARITY_NONE));
check(sp_set_stopbits(serialdevice->port, 1)); check(sp_set_stopbits(serialdevice->port, 1));

View File

@ -6,7 +6,7 @@
int arduino_update(SerialDevice* serialdevice, void* data, size_t size); int arduino_update(SerialDevice* serialdevice, void* data, size_t size);
int arduino_init(SerialDevice* serialdevice, const char* portdev); int arduino_init(SerialDevice* serialdevice, const char* portdev, int baud);
int arduino_free(SerialDevice* serialdevice); int arduino_free(SerialDevice* serialdevice);
int check(enum sp_return result); int check(enum sp_return result);

View File

@ -128,7 +128,7 @@ int serialdev_free(SimDevice* this)
return 0; return 0;
} }
int serialdev_init(SerialDevice* serialdevice, const char* portdev, int motorsposition) int serialdev_init(SerialDevice* serialdevice, const char* portdev, int motorsposition, int baud)
{ {
slogi("initializing serial device..."); slogi("initializing serial device...");
int error = 0; int error = 0;
@ -138,7 +138,7 @@ int serialdev_init(SerialDevice* serialdevice, const char* portdev, int motorspo
serialdevice->motorsposition = motorsposition; serialdevice->motorsposition = motorsposition;
error = arduino_init(serialdevice, portdev); error = arduino_init(serialdevice, portdev, baud);
return error; return error;
} }
@ -197,7 +197,7 @@ SerialDevice* new_serial_device(DeviceSettings* ds, MonocoqueSettings* ms) {
this->m.hapticeffect.tyrediameterconfig = ms->tyre_diameter_config; this->m.hapticeffect.tyrediameterconfig = ms->tyre_diameter_config;
} }
int error = serialdev_init(this, ds->serialdevsettings.portdev, ds->serialdevsettings.motorsposition); int error = serialdev_init(this, ds->serialdevsettings.portdev, ds->serialdevsettings.motorsposition, ds->serialdevsettings.baud);
if (error != 0) if (error != 0)
{ {

View File

@ -494,18 +494,16 @@ int devsetup(const char* device_type, const char* device_subtype, const char* co
config_setting_lookup_int(device_settings, "motors", &motorposition); config_setting_lookup_int(device_settings, "motors", &motorposition);
ds->serialdevsettings.motorsposition = motorposition; ds->serialdevsettings.motorsposition = motorposition;
int baud = 9600;
config_setting_lookup_int(device_settings, "baud", &baud);
ds->serialdevsettings.baud = baud;
double ampfactor = 1.0; double ampfactor = 1.0;
ds->serialdevsettings.ampfactor = 1.0; ds->serialdevsettings.ampfactor = 1.0;
int found = config_setting_lookup_float(device_settings, "ampfactor", &ampfactor); int found = config_setting_lookup_float(device_settings, "ampfactor", &ampfactor);
if(found == 0)
{
ds->serialdevsettings.ampfactor = 1.0;
}
else
{
ds->serialdevsettings.ampfactor = ampfactor; ds->serialdevsettings.ampfactor = ampfactor;
slogt("Set ampflication factor for motors to %f", ampfactor);
} slogt("set port baud rate to %i, ampfactor %f", baud, ampfactor);
} }
} }
@ -526,8 +524,6 @@ int uiloadconfig(const char* config_file_str, int confignum, int configureddevic
{ {
slogi("Parsing config file"); slogi("Parsing config file");
config_setting_t* config = NULL; config_setting_t* config = NULL;
config = config_lookup(&cfg, "configs"); config = config_lookup(&cfg, "configs");
config_setting_t* selectedconfig = config_setting_get_elem(config, confignum); config_setting_t* selectedconfig = config_setting_get_elem(config, confignum);
@ -566,8 +562,6 @@ int uiloadconfig(const char* config_file_str, int confignum, int configureddevic
i++; i++;
} }
} }

View File

@ -139,6 +139,7 @@ typedef struct
char* portdev; char* portdev;
MotorPosition motorsposition; MotorPosition motorsposition;
float ampfactor; float ampfactor;
int baud;
} }
SerialDeviceSettings; SerialDeviceSettings;