22 #include <sys/types.h>
27 #include "sigrok-internal.h"
45 #ifdef HAVE_LA_SALEAE_LOGIC
51 #ifdef HAVE_LA_ZEROPLUS_LOGIC_CUBE
54 #ifdef HAVE_LA_ASIX_SIGMA
57 #ifdef HAVE_LA_CHRONOVU_LA8
60 #ifdef HAVE_LA_LINK_MSO19
66 #ifdef HAVE_LA_FX2LAFW
74 #ifdef HAVE_LA_SALEAE_LOGIC
80 #ifdef HAVE_LA_ZEROPLUS_LOGIC_CUBE
83 #ifdef HAVE_LA_ASIX_SIGMA
86 #ifdef HAVE_LA_CHRONOVU_LA8
89 #ifdef HAVE_LA_LINK_MSO19
95 #ifdef HAVE_LA_FX2LAFW
123 int num_devs, num_probes, i, j;
124 int num_initialized_devs = 0;
128 sr_dbg(
"initializing %s driver", driver->
name);
129 num_devs = driver->
init(NULL);
130 for (i = 0; i < num_devs; i++) {
131 num_probes = GPOINTER_TO_INT(
137 sr_warn(
"hwdriver: %s: driver %s does not return a "
138 "list of probe names", __func__, driver->
name);
143 for (j = 0; j < num_probes; j++)
145 num_initialized_devs++;
148 return num_initialized_devs;
157 for (i = 0; drivers[i]; i++) {
168 if (!(sdi = g_try_malloc(
sizeof(
struct sr_dev_inst)))) {
169 sr_err(
"hwdriver: %s: sdi malloc failed", __func__);
176 sdi->
vendor = vendor ? g_strdup(vendor) : NULL;
177 sdi->
model = model ? g_strdup(model) : NULL;
178 sdi->
version = version ? g_strdup(version) : NULL;
189 for (l = dev_insts; l; l = l->next) {
191 if (sdi->
index == dev_index)
194 sr_warn(
"could not find device index %d instance", dev_index);
208 #ifdef HAVE_LIBUSB_1_0
211 uint8_t address,
struct libusb_device_handle *hdl)
213 struct sr_usb_dev_inst *udi;
215 if (!(udi = g_try_malloc(
sizeof(
struct sr_usb_dev_inst)))) {
216 sr_err(
"hwdriver: %s: udi malloc failed", __func__);
221 udi->address = address;
240 struct sr_serial_dev_inst *serial;
242 if (!(serial = g_try_malloc(
sizeof(
struct sr_serial_dev_inst)))) {
243 sr_err(
"hwdriver: %s: serial malloc failed", __func__);
247 serial->port = g_strdup(port);
255 g_free(serial->port);
273 sr_err(
"hwdriver: %s: driver was NULL", __func__);
278 sr_err(
"hwdriver: %s: hwcap_get_all() returned NULL", __func__);
282 for (i = 0; hwcaps[i]; i++) {
283 if (hwcaps[i] == hwcap)
302 for (i = 0; sr_hwcap_options[i].
hwcap; i++) {
303 if (sr_hwcap_options[i].hwcap == hwcap)
304 return &sr_hwcap_options[i];
int *(* hwcap_get_all)(void)
SR_PRIV struct sr_dev_driver chronovu_la8_driver_info
SR_PRIV int sr_source_remove(int fd)
SR_PRIV void sr_hw_cleanup_all(void)
SR_API struct sr_hwcap_option * sr_hw_hwcap_get(int hwcap)
Get a hardware driver capability option.
SR_PRIV struct sr_dev_driver ols_driver_info
SR_API struct sr_hwcap_option sr_hwcap_options[]
int(* init)(const char *devinfo)
The device supports Run Length Encoding.
SR_PRIV int sr_source_add(int fd, int events, int timeout, sr_receive_data_callback_t cb, void *cb_data)
SR_API int sr_session_source_add(int fd, int events, int timeout, sr_receive_data_callback_t cb, void *cb_data)
TODO.
SR_PRIV int sr_warn(const char *format,...)
SR_API int sr_dev_probe_add(struct sr_dev *dev, const char *name)
Add a probe with the specified name to the specified device.
SR_PRIV void sr_serial_dev_inst_free(struct sr_serial_dev_inst *serial)
SR_API int sr_session_source_remove(int fd)
Remove the source belonging to the specified file descriptor.
The device supports setting a pattern (pattern generator mode).
SR_PRIV struct sr_dev_inst * sr_dev_inst_get(GSList *dev_insts, int dev_index)
void *(* dev_info_get)(int dev_index, int dev_info_id)
The device supports setting a pre/post-trigger capture ratio.
SR_PRIV struct sr_usb_dev_inst * sr_usb_dev_inst_new(uint8_t bus, uint8_t address, struct libusb_device_handle *hdl)
SR_PRIV void sr_usb_dev_inst_free(struct sr_usb_dev_inst *usb)
SR_PRIV struct sr_dev_driver link_mso19_driver_info
SR_PRIV struct sr_dev_inst * sr_dev_inst_new(int index, int status, const char *vendor, const char *model, const char *version)
The device supports setting/changing its samplerate.
SR_PRIV void sr_dev_inst_free(struct sr_dev_inst *sdi)
SR_PRIV struct sr_dev_driver alsa_driver_info
int(* sr_receive_data_callback_t)(int fd, int revents, void *cb_data)
SR_PRIV int sr_dbg(const char *format,...)
SR_API int sr_driver_init(struct sr_dev_driver *driver)
Initialize a hardware driver.
SR_PRIV struct sr_dev_driver asix_sigma_driver_info
SR_PRIV struct sr_dev_driver demo_driver_info
SR_PRIV struct sr_dev_driver zeroplus_logic_cube_driver_info
SR_PRIV struct sr_dev_driver saleae_logic_driver_info
SR_API struct sr_dev * sr_dev_new(const struct sr_dev_driver *driver, int driver_index)
Create a new device.
SR_API gboolean sr_driver_hwcap_exists(struct sr_dev_driver *driver, int hwcap)
Find out if a hardware driver has a specific capability.
SR_API struct sr_dev_driver ** sr_driver_list(void)
Return the list of supported hardware drivers.
SR_PRIV struct sr_dev_driver fx2lafw_driver_info
SR_PRIV int sr_err(const char *format,...)
SR_PRIV struct sr_serial_dev_inst * sr_serial_dev_inst_new(const char *port, int fd)