X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=hardware%2Fcommon%2Fserial.c;h=75c4a47d6e69f89b197892d9504d3c9eb2471b55;hb=e385e2ed90d9f66ed72124c8c4c9a04f771fe5e1;hp=7dde05e00af35c70cd5513cda5a359a11aaf5656;hpb=449cc16bb279e5d3322846ce6bd390e867e71ccb;p=libsigrok.git diff --git a/hardware/common/serial.c b/hardware/common/serial.c index 7dde05e0..75c4a47d 100644 --- a/hardware/common/serial.c +++ b/hardware/common/serial.c @@ -110,6 +110,7 @@ SR_PRIV int serial_close(struct sr_serial_dev_inst *serial) sr_spew("Closing serial port %s (fd %d).", serial->port, serial->fd); ret = sp_close(serial->data); + sp_free_port(serial->data); switch (ret) { case SP_ERR_ARG: @@ -276,6 +277,7 @@ SR_PRIV int serial_set_params(struct sr_serial_dev_inst *serial, int baudrate, { int ret; char *error; + struct sp_port_config config; if (!serial) { sr_dbg("Invalid serial port."); @@ -291,8 +293,15 @@ SR_PRIV int serial_set_params(struct sr_serial_dev_inst *serial, int baudrate, sr_spew("Setting serial parameters on port %s (fd %d).", serial->port, serial->fd); - ret = sp_set_params(serial->data, baudrate, bits, parity, stopbits, - flowcontrol, rts, dtr); + config.baudrate = baudrate; + config.bits = bits; + config.parity = parity; + config.stopbits = stopbits; + config.flowcontrol = flowcontrol; + config.rts = rts; + config.dtr = dtr; + + ret = sp_set_config(serial->data, &config); switch (ret) { case SP_ERR_ARG: