X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Flibsigrok-internal.h;h=9384bbb68692dc8dfde720e333d9a50165b20169;hb=a7b8692ed061c5baff6620c0839db85465cd24c9;hp=a6497c958ac86b725c753f8f182aec562d53bd9d;hpb=f992151332f79569feaa175f51cc4debabd271dd;p=libsigrok.git diff --git a/src/libsigrok-internal.h b/src/libsigrok-internal.h index a6497c95..9384bbb6 100644 --- a/src/libsigrok-internal.h +++ b/src/libsigrok-internal.h @@ -722,19 +722,23 @@ struct sr_usb_dev_inst { #endif #ifdef HAVE_LIBSERIALPORT +struct ser_lib_functions; struct sr_serial_dev_inst { /** Port name, e.g. '/dev/tty42'. */ char *port; /** Comm params for serial_set_paramstr(). */ char *serialcomm; + struct ser_lib_functions *lib_funcs; struct { int bit_rate; int data_bits; int parity_bits; int stop_bits; } comm_params; +#ifdef HAVE_LIBSERIALPORT /** libserialport port handle */ struct sp_port *sp_data; +#endif }; #endif @@ -1109,31 +1113,34 @@ SR_PRIV int serial_source_remove(struct sr_session *session, 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); +struct ser_lib_functions { + int (*open)(struct sr_serial_dev_inst *serial, int flags); + int (*close)(struct sr_serial_dev_inst *serial); + int (*flush)(struct sr_serial_dev_inst *serial); + int (*drain)(struct sr_serial_dev_inst *serial); + int (*write)(struct sr_serial_dev_inst *serial, + const void *buf, size_t count, + int nonblocking, unsigned int timeout_ms); + int (*read)(struct sr_serial_dev_inst *serial, + void *buf, size_t count, + int nonblocking, unsigned int timeout_ms); + int (*set_params)(struct sr_serial_dev_inst *serial, + int baudrate, int bits, int parity, int stopbits, + int flowcontrol, int rts, int dtr); + int (*setup_source_add)(struct sr_session *session, + struct sr_serial_dev_inst *serial, + int events, int timeout, + sr_receive_data_callback cb, void *cb_data); + int (*setup_source_remove)(struct sr_session *session, + struct sr_serial_dev_inst *serial); + GSList *(*list)(GSList *list, sr_ser_list_append_t append); + GSList *(*find_usb)(GSList *list, sr_ser_find_append_t append, + uint16_t vendor_id, uint16_t product_id); + int (*get_frame_format)(struct sr_serial_dev_inst *serial, + int *baud, int *bits); + size_t (*get_rx_avail)(struct sr_serial_dev_inst *serial); +}; +extern SR_PRIV struct ser_lib_functions *ser_lib_funcs_libsp; #endif /*--- ezusb.c ---------------------------------------------------------------*/