]> sigrok.org Git - libsigrok.git/blobdiff - src/libsigrok-internal.h
serial: introduce "has receive data" query
[libsigrok.git] / src / libsigrok-internal.h
index c72aab1991df78ea79bebc54ae5ef8f9c7955b35..a6497c958ac86b725c753f8f182aec562d53bd9d 100644 (file)
@@ -35,6 +35,7 @@
 #endif
 #include <stdarg.h>
 #include <stdio.h>
+#include <stdlib.h>
 
 struct zip;
 struct zip_stat;
@@ -726,8 +727,14 @@ struct sr_serial_dev_inst {
        char *port;
        /** Comm params for serial_set_paramstr(). */
        char *serialcomm;
+       struct {
+               int bit_rate;
+               int data_bits;
+               int parity_bits;
+               int stop_bits;
+       } comm_params;
        /** libserialport port handle */
-       struct sp_port *data;
+       struct sp_port *sp_data;
 };
 #endif
 
@@ -1064,10 +1071,15 @@ enum {
 
 typedef gboolean (*packet_valid_callback)(const uint8_t *buf);
 
+typedef GSList *(*sr_ser_list_append_t)(GSList *devs, const char *name,
+               const char *desc);
+typedef GSList *(*sr_ser_find_append_t)(GSList *devs, const char *name);
+
 SR_PRIV int serial_open(struct sr_serial_dev_inst *serial, int flags);
 SR_PRIV int serial_close(struct sr_serial_dev_inst *serial);
 SR_PRIV int serial_flush(struct sr_serial_dev_inst *serial);
 SR_PRIV int serial_drain(struct sr_serial_dev_inst *serial);
+SR_PRIV size_t serial_has_receive_data(struct sr_serial_dev_inst *serial);
 SR_PRIV int serial_write_blocking(struct sr_serial_dev_inst *serial,
                const void *buf, size_t count, unsigned int timeout_ms);
 SR_PRIV int serial_write_nonblocking(struct sr_serial_dev_inst *serial,
@@ -1096,6 +1108,32 @@ SR_PRIV int serial_source_remove(struct sr_session *session,
                struct sr_serial_dev_inst *serial);
 SR_PRIV GSList *sr_serial_find_usb(uint16_t vendor_id, uint16_t product_id);
 SR_PRIV int serial_timeout(struct sr_serial_dev_inst *port, int num_bytes);
+
+SR_PRIV int sr_ser_libsp_open(struct sr_serial_dev_inst *serial, int flags);
+SR_PRIV int sr_ser_libsp_close(struct sr_serial_dev_inst *serial);
+SR_PRIV int sr_ser_libsp_flush(struct sr_serial_dev_inst *serial);
+SR_PRIV int sr_ser_libsp_drain(struct sr_serial_dev_inst *serial);
+SR_PRIV int sr_ser_libsp_write(struct sr_serial_dev_inst *serial,
+               const void *buf, size_t count,
+               int nonblocking, unsigned int timeout_ms);
+SR_PRIV int sr_ser_libsp_read(struct sr_serial_dev_inst *serial,
+               void *buf, size_t count,
+               int nonblocking, unsigned int timeout_ms);
+SR_PRIV int sr_ser_libsp_set_params(struct sr_serial_dev_inst *serial,
+               int baudrate, int bits, int parity, int stopbits,
+               int flowcontrol, int rts, int dtr);
+SR_PRIV int sr_ser_libsp_source_add(struct sr_session *session,
+               struct sr_serial_dev_inst *serial,
+               int events, int timeout,
+               sr_receive_data_callback cb, void *cb_data);
+SR_PRIV int sr_ser_libsp_source_remove(struct sr_session *session,
+               struct sr_serial_dev_inst *serial);
+SR_PRIV GSList *sr_ser_libsp_list(GSList *list, sr_ser_list_append_t append);
+SR_PRIV GSList *sr_ser_libsp_find_usb(GSList *list, sr_ser_find_append_t append,
+               uint16_t vendor_id, uint16_t product_id);
+SR_PRIV int sr_ser_libsp_get_frame_format(struct sr_serial_dev_inst *serial,
+               int *baud, int *bits);
+SR_PRIV size_t sr_ser_libsp_get_rx_avail(struct sr_serial_dev_inst *serial);
 #endif
 
 /*--- ezusb.c ---------------------------------------------------------------*/
@@ -1260,6 +1298,30 @@ SR_PRIV void sr_fs9721_10_temp_c(struct sr_datafeed_analog *analog, void *info);
 SR_PRIV void sr_fs9721_01_10_temp_f_c(struct sr_datafeed_analog *analog, void *info);
 SR_PRIV void sr_fs9721_max_c_min(struct sr_datafeed_analog *analog, void *info);
 
+/*--- dmm/ms2115b.c ---------------------------------------------------------*/
+
+#define MS2115B_PACKET_SIZE 9
+
+enum ms2115b_display {
+       MS2115B_DISPLAY_MAIN,
+       MS2115B_DISPLAY_SUB,
+       MS2115B_DISPLAY_COUNT,
+};
+
+struct ms2115b_info {
+       /* Selected channel. */
+       size_t ch_idx;
+       gboolean is_ac, is_dc, is_auto;
+       gboolean is_diode, is_beep, is_farad;
+       gboolean is_ohm, is_ampere, is_volt, is_hz;
+       gboolean is_duty_cycle, is_percent;
+};
+
+extern SR_PRIV const char *ms2115b_channel_formats[];
+SR_PRIV gboolean sr_ms2115b_packet_valid(const uint8_t *buf);
+SR_PRIV int sr_ms2115b_parse(const uint8_t *buf, float *floatval,
+       struct sr_datafeed_analog *analog, void *info);
+
 /*--- dmm/ms8250d.c ---------------------------------------------------------*/
 
 #define MS8250D_PACKET_SIZE 18