]> sigrok.org Git - libserialport.git/commitdiff
Add sp_start_break() and sp_end_break() functions.
authorMartin Ling <redacted>
Wed, 20 Nov 2013 18:11:17 +0000 (18:11 +0000)
committerBert Vermeulen <redacted>
Fri, 22 Nov 2013 01:11:34 +0000 (02:11 +0100)
libserialport.h.in
serialport.c

index 79f315f6c0df6401a289f26d0fd8b55e7f2e33f0..704ffed02fb8e02f9f3b5685f9c1640137687d5e 100644 (file)
@@ -534,6 +534,28 @@ enum sp_return sp_flush(struct sp_port *port, enum sp_buffer buffers);
  */
 enum sp_return sp_drain(struct sp_port *port);
 
+/**
+ * @}
+ * @defgroup Signal Port signalling operations
+ * @{
+ */
+
+/**
+ * Put the port transmit line into the break state.
+ *
+ * @return SP_OK on success, SP_ERR_FAIL on failure, or SP_ERR_ARG
+ *         if an invalid port is passed.
+ */
+enum sp_return sp_start_break(struct sp_port *port);
+
+/**
+ * Take the port transmit line out of the break state.
+ *
+ * @return SP_OK on success, SP_ERR_FAIL on failure, or SP_ERR_ARG
+ *         if an invalid port is passed.
+ */
+enum sp_return sp_end_break(struct sp_port *port);
+
 /**
  * @}
  * @defgroup Errors Obtaining error information
index 6104f241a17cb34db7638ef00ac9cebaff4529ce..ab1baa76df2cadd5a8af15e5807c6e55c2a80e80 100644 (file)
@@ -1298,6 +1298,34 @@ enum sp_return sp_set_flowcontrol(struct sp_port *port, enum sp_flowcontrol flow
        return SP_OK;
 }
 
+enum sp_return sp_start_break(struct sp_port *port)
+{
+       CHECK_PORT();
+#ifdef _WIN32
+       if (SetCommBreak(port->hdl) == 0)
+               return SP_ERR_FAIL;
+#else
+       if (ioctl(port->fd, TIOCSBRK, 1) < 0)
+               return SP_ERR_FAIL;
+#endif
+
+       return SP_OK;
+}
+
+enum sp_return sp_end_break(struct sp_port *port)
+{
+       CHECK_PORT();
+#ifdef _WIN32
+       if (ClearCommBreak(port->hdl) == 0)
+               return SP_ERR_FAIL;
+#else
+       if (ioctl(port->fd, TIOCCBRK, 1) < 0)
+               return SP_ERR_FAIL;
+#endif
+
+       return SP_OK;
+}
+
 int sp_last_error_code(void)
 {
 #ifdef _WIN32