X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Fserial_libsp.c;h=bfdc3202261c8adfb198fff28a8c80a29ccf07fe;hb=f5c697bfe6d80c95051eaa1f52e1fefb54effa97;hp=f5a2b74b59f477ce3a4499f8eea024795eb5d854;hpb=82b9f3d116ce0c982291a2dfdd15cd8a1c4cc16e;p=libsigrok.git diff --git a/src/serial_libsp.c b/src/serial_libsp.c index f5a2b74b..bfdc3202 100644 --- a/src/serial_libsp.c +++ b/src/serial_libsp.c @@ -280,6 +280,30 @@ static int sr_ser_libsp_set_params(struct sr_serial_dev_inst *serial, return SR_OK; } +static int sr_ser_libsp_set_handshake(struct sr_serial_dev_inst *serial, + int rts, int dtr) +{ + int ret; + + if (!serial->sp_data) { + sr_dbg("Cannot configure unopened serial port %s.", serial->port); + return SR_ERR; + } + + if (rts >= 0) { + ret = sp_set_rts(serial->sp_data, rts ? SP_RTS_ON : SP_RTS_OFF); + if (ret != SP_OK) + return SR_ERR; + } + if (dtr >= 0) { + ret = sp_set_dtr(serial->sp_data, dtr ? SP_DTR_ON : SP_DTR_OFF); + if (ret != SP_OK) + return SR_ERR; + } + + return SR_OK; +} + #ifdef G_OS_WIN32 typedef HANDLE event_handle; #else @@ -494,6 +518,7 @@ static struct ser_lib_functions serlib_sp = { .write = sr_ser_libsp_write, .read = sr_ser_libsp_read, .set_params = sr_ser_libsp_set_params, + .set_handshake = sr_ser_libsp_set_handshake, .setup_source_add = sr_ser_libsp_source_add, .setup_source_remove = sr_ser_libsp_source_remove, .list = sr_ser_libsp_list,