]> sigrok.org Git - libsigrok.git/blobdiff - src/libsigrok-internal.h
serial: add support for optional "RX chunk" callback
[libsigrok.git] / src / libsigrok-internal.h
index df2b038e0bc34809f5b69e25c5f27dc3524ea974..9a34ba169a84863e0dffb382d2c0688c27ec724a 100644 (file)
@@ -731,6 +731,9 @@ struct sr_serial_dev_inst;
 #ifdef HAVE_SERIAL_COMM
 struct ser_lib_functions;
 struct ser_hid_chip_functions;
+struct sr_bt_desc;
+typedef void (*serial_rx_chunk_callback)(struct sr_serial_dev_inst *serial,
+       void *cb_data, const void *buf, size_t count);
 struct sr_serial_dev_inst {
        /** Port name, e.g. '/dev/tty42'. */
        char *port;
@@ -744,6 +747,8 @@ struct sr_serial_dev_inst {
                int stop_bits;
        } comm_params;
        GString *rcv_buffer;
+       serial_rx_chunk_callback rx_chunk_cb_func;
+       void *rx_chunk_cb_data;
 #ifdef HAVE_LIBSERIALPORT
        /** libserialport port handle */
        struct sp_port *sp_data;
@@ -762,6 +767,25 @@ struct sr_serial_dev_inst {
        hid_device *hid_dev;
        GSList *hid_source_args;
 #endif
+#ifdef HAVE_BLUETOOTH
+       enum ser_bt_conn_t {
+               SER_BT_CONN_UNKNOWN,    /**!< place holder */
+               SER_BT_CONN_RFCOMM,     /**!< BT classic, RFCOMM channel */
+               SER_BT_CONN_BLE122,     /**!< BLE, BLE122 module, indications */
+               SER_BT_CONN_NRF51,      /**!< BLE, Nordic nRF51, notifications */
+               SER_BT_CONN_CC254x,     /**!< BLE, TI CC254x, notifications */
+               SER_BT_CONN_MAX,        /**!< sentinel */
+       } bt_conn_type;
+       char *bt_addr_local;
+       char *bt_addr_remote;
+       size_t bt_rfcomm_channel;
+       uint16_t bt_notify_handle_read;
+       uint16_t bt_notify_handle_write;
+       uint16_t bt_notify_handle_cccd;
+       uint16_t bt_notify_value_cccd;
+       struct sr_bt_desc *bt_desc;
+       GSList *bt_source_args;
+#endif
 };
 #endif
 
@@ -1139,6 +1163,8 @@ SR_PRIV int serial_read_blocking(struct sr_serial_dev_inst *serial, void *buf,
                size_t count, unsigned int timeout_ms);
 SR_PRIV int serial_read_nonblocking(struct sr_serial_dev_inst *serial, void *buf,
                size_t count);
+SR_PRIV int serial_set_read_chunk_cb(struct sr_serial_dev_inst *serial,
+               serial_rx_chunk_callback cb, void *cb_data);
 SR_PRIV int serial_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 serial_set_paramstr(struct sr_serial_dev_inst *serial,
@@ -1197,6 +1223,8 @@ struct ser_lib_functions {
 extern SR_PRIV struct ser_lib_functions *ser_lib_funcs_libsp;
 SR_PRIV int ser_name_is_hid(struct sr_serial_dev_inst *serial);
 extern SR_PRIV struct ser_lib_functions *ser_lib_funcs_hid;
+SR_PRIV int ser_name_is_bt(struct sr_serial_dev_inst *serial);
+extern SR_PRIV struct ser_lib_functions *ser_lib_funcs_bt;
 
 #ifdef HAVE_LIBHIDAPI
 struct vid_pid_item {