* Copyright (C) 2010-2012 Uwe Hermann <uwe@hermann-uwe.de>
* Copyright (C) 2012 Alexandru Gagniuc <mr.nuke.me@gmail.com>
* Copyright (C) 2014 Uffe Jakobsen <uffe@uffe.org>
+ * Copyright (C) 2017-2019 Gerhard Sittig <gerhard.sittig@gmx.net>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
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 if (ser_name_is_bt(serial))
+ serial->lib_funcs = ser_lib_funcs_bt;
+ 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);
+ }
+ if (ser_lib_funcs_bt && ser_lib_funcs_bt->list) {
+ list_func = ser_lib_funcs_bt->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;
}