sr_spew("Opening serial port '%s' (flags %d).", serial->port, flags);
- /* Default to the libserialport transport layer. */
- serial->lib_funcs = ser_lib_funcs_libsp;
+ /*
+ * Determine which serial transport library to use. Derive the
+ * variant from the serial port's name. Default to libserialport
+ * for backwards compatibility.
+ */
+ if (ser_name_is_hid(serial))
+ serial->lib_funcs = ser_lib_funcs_hid;
+ else
+ serial->lib_funcs = ser_lib_funcs_libsp;
if (!serial->lib_funcs)
return SR_ERR_NA;
list_func = ser_lib_funcs_libsp->list;
tty_devs = list_func(tty_devs, append_port_list);
}
+ if (ser_lib_funcs_hid && ser_lib_funcs_hid->list) {
+ list_func = ser_lib_funcs_hid->list;
+ tty_devs = list_func(tty_devs, append_port_list);
+ }
return tty_devs;
}
tty_devs = find_func(tty_devs, append_port_find,
vendor_id, product_id);
}
+ if (ser_lib_funcs_hid && ser_lib_funcs_hid->find_usb) {
+ find_func = ser_lib_funcs_hid->find_usb;
+ tty_devs = find_func(tty_devs, append_port_find,
+ vendor_id, product_id);
+ }
return tty_devs;
}