]> sigrok.org Git - libsigrok.git/blobdiff - hardware/common/serial.c
build: Portability fixes.
[libsigrok.git] / hardware / common / serial.c
index 32a6d23c087f61ca046f607811a38465ce21ce1e..9a9a0d94fd3b3058e84ba74202db681de8397885 100644 (file)
  * Open the specified serial port.
  *
  * @param serial Previously initialized serial port structure.
- * @param flags Flags to use when opening the serial port. Possible flags
+ * @param[in] flags Flags to use when opening the serial port. Possible flags
  *              include SERIAL_RDWR, SERIAL_RDONLY, SERIAL_NONBLOCK.
  *
  * If the serial structure contains a serialcomm string, it will be
  * passed to serial_set_paramstr() after the port is opened.
  *
- * @return SR_OK on success, SR_ERR on failure.
+ * @retval SR_OK Success.
+ * @retval SR_ERR Failure.
  */
 SR_PRIV int serial_open(struct sr_serial_dev_inst *serial, int flags)
 {
@@ -88,7 +89,8 @@ SR_PRIV int serial_open(struct sr_serial_dev_inst *serial, int flags)
  *
  * @param serial Previously initialized serial port structure.
  *
- * @return SR_OK on success, SR_ERR on failure.
+ * @retval SR_OK Success.
+ * @retval SR_ERR Failure.
  */
 SR_PRIV int serial_close(struct sr_serial_dev_inst *serial)
 {
@@ -132,7 +134,8 @@ SR_PRIV int serial_close(struct sr_serial_dev_inst *serial)
  *
  * @param serial Previously initialized serial port structure.
  *
- * @return SR_OK on success, SR_ERR on failure.
+ * @retval SR_OK Success.
+ * @retval SR_ERR Failure.
  */
 SR_PRIV int serial_flush(struct sr_serial_dev_inst *serial)
 {
@@ -209,10 +212,12 @@ static int _serial_write(struct sr_serial_dev_inst *serial,
  * Write a number of bytes to the specified serial port.
  *
  * @param serial Previously initialized serial port structure.
- * @param buf Buffer containing the bytes to write.
- * @param count Number of bytes to write.
+ * @param[in] buf Buffer containing the bytes to write.
+ * @param[in] count Number of bytes to write.
  *
- * @return The number of bytes written, or a negative error code upon failure.
+ * @retval SR_ERR_ARG Invalid argument.
+ * @retval SR_ERR Other error.
+ * @retval other The number of bytes written.
  */
 SR_PRIV int serial_write(struct sr_serial_dev_inst *serial,
                const void *buf, size_t count)
@@ -220,12 +225,20 @@ SR_PRIV int serial_write(struct sr_serial_dev_inst *serial,
        return _serial_write(serial, buf, count, serial->nonblocking);
 }
 
+/**
+ * Write a number of bytes to the specified serial port, blocking until finished.
+ * @copydetails serial_write()
+ */
 SR_PRIV int serial_write_blocking(struct sr_serial_dev_inst *serial,
                const void *buf, size_t count)
 {
        return _serial_write(serial, buf, count, 0);
 }
 
+/**
+ * Write a number of bytes to the specified serial port, return immediately.
+ * @copydetails serial_write()
+*/
 SR_PRIV int serial_write_nonblocking(struct sr_serial_dev_inst *serial,
                const void *buf, size_t count)
 {
@@ -275,9 +288,11 @@ static int _serial_read(struct sr_serial_dev_inst *serial, void *buf,
  *
  * @param serial Previously initialized serial port structure.
  * @param buf Buffer where to store the bytes that are read.
- * @param count The number of bytes to read.
+ * @param[in] count The number of bytes to read.
  *
- * @return The number of bytes read, or a negative error code upon failure.
+ * @retval SR_ERR_ARG Invalid argument.
+ * @retval SR_ERR     Other error.
+ * @retval other      The number of bytes read.
  */
 SR_PRIV int serial_read(struct sr_serial_dev_inst *serial, void *buf,
                size_t count)
@@ -285,12 +300,21 @@ SR_PRIV int serial_read(struct sr_serial_dev_inst *serial, void *buf,
        return _serial_read(serial, buf, count, serial->nonblocking);
 }
 
+/**
+ * Read a number of bytes from the specified serial port, block until finished.
+ * @copydetails serial_read()
+ */
 SR_PRIV int serial_read_blocking(struct sr_serial_dev_inst *serial, void *buf,
                size_t count)
 {
        return _serial_read(serial, buf, count, 0);
 }
 
+/**
+ * Try to read up to @a count bytes from the specified serial port, return
+ * immediately with what's available.
+ * @copydetails serial_read()
+ */
 SR_PRIV int serial_read_nonblocking(struct sr_serial_dev_inst *serial, void *buf,
                size_t count)
 {
@@ -310,7 +334,7 @@ SR_PRIV int serial_read_nonblocking(struct sr_serial_dev_inst *serial, void *buf
  * @param[in] rts Status of RTS line (0 or 1; required by some interfaces).
  * @param[in] dtr Status of DTR line (0 or 1; required by some interfaces).
  *
- * @retval SR_OK Success
+ * @retval SR_OK Success.
  * @retval SR_ERR Failure.
  */
 SR_PRIV int serial_set_params(struct sr_serial_dev_inst *serial, int baudrate,
@@ -565,12 +589,13 @@ SR_PRIV int serial_readline(struct sr_serial_dev_inst *serial, char **buf,
  *                 critical, but it helps fine tune the serial port polling
  *                 delay.
  *
- * @retval SR_OK Valid packet was found within the given timeout
+ * @retval SR_OK Valid packet was found within the given timeout.
  * @retval SR_ERR Failure.
  */
 SR_PRIV int serial_stream_detect(struct sr_serial_dev_inst *serial,
                                 uint8_t *buf, size_t *buflen,
-                                size_t packet_size, packet_valid_t is_valid,
+                                size_t packet_size,
+                                packet_valid_callback is_valid,
                                 uint64_t timeout_ms, int baudrate)
 {
        uint64_t start, time, byte_delay_us;
@@ -683,8 +708,9 @@ typedef HANDLE event_handle;
 typedef int event_handle;
 #endif
 
-SR_PRIV int serial_source_add(struct sr_serial_dev_inst *serial, int events,
-               int timeout, sr_receive_data_callback_t cb, void *cb_data)
+SR_PRIV int serial_source_add(struct sr_session *session,
+               struct sr_serial_dev_inst *serial, int events, int timeout,
+               sr_receive_data_callback cb, void *cb_data)
 {
        enum sp_event mask = 0;
        unsigned int i;
@@ -719,20 +745,21 @@ SR_PRIV int serial_source_add(struct sr_serial_dev_inst *serial, int events,
                if (mask & SP_EVENT_ERROR)
                        serial->pollfds[i].events |= G_IO_ERR;
 
-               if (sr_session_source_add_pollfd(&serial->pollfds[i],
-                               timeout, cb, cb_data) != SR_OK)
+               if (sr_session_source_add_pollfd(session, &serial->pollfds[i],
+                                       timeout, cb, cb_data) != SR_OK)
                        return SR_ERR;
        }
 
        return SR_OK;
 }
 
-SR_PRIV int serial_source_remove(struct sr_serial_dev_inst *serial)
+SR_PRIV int serial_source_remove(struct sr_session *session,
+               struct sr_serial_dev_inst *serial)
 {
        unsigned int i;
 
        for (i = 0; i < serial->event_set->count; i++)
-               if (sr_session_source_remove_pollfd(&serial->pollfds[i]) != SR_OK)
+               if (sr_session_source_remove_pollfd(session, &serial->pollfds[i]) != SR_OK)
                        return SR_ERR;
 
        g_free(serial->pollfds);
@@ -747,8 +774,8 @@ SR_PRIV int serial_source_remove(struct sr_serial_dev_inst *serial)
 /**
  * Find USB serial devices via the USB vendor ID and product ID.
  *
- * @param vendor_id Vendor ID of the USB device.
- * @param product_id Product ID of the USB device.
+ * @param[in] vendor_id Vendor ID of the USB device.
+ * @param[in] product_id Product ID of the USB device.
  *
  * @return A GSList of strings containing the path of the serial device or
  *         NULL if no serial device is found. The returned list must be freed