]> sigrok.org Git - libsigrok.git/blobdiff - src/serial_libsp.c
serial-dmm: Add PeakTech 2025 meter support.
[libsigrok.git] / src / serial_libsp.c
index b16cd12e412ca9a66caa90a0062d869ea9103a8f..bfdc3202261c8adfb198fff28a8c80a29ccf07fe 100644 (file)
@@ -31,9 +31,7 @@
 #include <windows.h> /* for HANDLE */
 #endif
 
-/** @cond PRIVATE */
 #define LOG_PREFIX "serial-libsp"
-/** @endcond */
 
 /**
  * @file
@@ -282,13 +280,35 @@ static int sr_ser_libsp_set_params(struct sr_serial_dev_inst *serial,
        return SR_OK;
 }
 
-/** @cond PRIVATE */
+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
 typedef int event_handle;
 #endif
-/** @endcond */
 
 static int sr_ser_libsp_source_add_int(struct sr_serial_dev_inst *serial,
        int events,
@@ -498,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,