Hi,

some of you may remember my earlier attempts to add a libftdi based LinkUSB interface into master. For reference: http://sourceforge.net/p/owfs/mailman/message/32492037/ In short, the client-timings are generally cut about 2.5 times, depending on operation. A temp sensor is read in ~50ms instead of ~123ms. More details can be found at the link.

Last time (2014) it was well received, but got stuck on discussions about different methods of auto-detection (something which isn't too easy/possible with FTDI). I have since run that code in production without any glitches, so the ftdi-part has really proven stable. In the recent days, I've cleaned up the code to not be LinkUSB specific, but rather work with any serial-based device (and fixed some minor issues). There is no auto-detection though (and again, I don't believe that is possible to do reliable with serial devices; see discussions in above link).

A cut from the (updated) man page is available below, please see that for usage details. I realize that this isn't the simplest thing to explain to a user, but then again, a regular user who don't really care about those extra milliseconds shaved off each request can easily use the same old /dev/ttyS0 addressing. For us who *do* care however, it is very useful.

The ftdi parts of the code has been running since 2014, but only with LinkUSB. But it's mostly the device setup parts which has changed lately, so it shouldn't be any unstability. I've tested the LinkUSB, emulated and --link mode, and DS2480 through a FTDi adapter without any issues.

I've commited all the changes in the new ftdi branch: http://sourceforge.net/p/owfs/code/ci/2982df8ca648bd9cec4d820151046b044ef504e0/ The above is a clean patch based on my earlier work (which may be interesting for those wanting to check out how it evolved) at http://sourceforge.net/u/stromnet/owfs/ci/ca85d64eefaaa9f1e90bbc079db65cfda623c472/log/?path=

One potential issue could be the BUS_close related changes in ow_connection.c, could someone take a look at that please? I think that is actually a bug fix, basically it calls device-specific BUS_close *before* cleaning up and closing the device, instead of after.. But an extra set of eyes would be great.

Another issue could be that I now bring any link-devices into 19200-mode after initial detection (also increases the speed a lot). This is the mode I've been running my LinkUSB during the last years, via the FTDI layer, so should be OK. But I have not tested with older links, or non-USB based links (or the linkusb via old serial addressing for any longer duration).

To sum it up, I hope we can get this branch merged into master sooner rather than later! If we want to add a sane auto-detection scheme somehow, let's add that later..

Any testing and feedback is much appreciated!

Regards
Johan

Man-page cut:
-------
* Serial devices
       port specifies a serial port, e.g.  /dev/ttyS0

If OWFS was built with libftdi support, you may be able to use the
       ftdi: prefix to address a FTDI-based USB device.
       For details, see the FTDI ADDRESSING section.

....
FTDI ADDRESSING
FTDI is a brand of USB-to-serial chips which are very common. If your serial device is connected via a USB serial dongle based on a FTDI chip, or if your adapter uses a built-in FTDI USB chip (for example,
       the LinkUSB), you can use this FTDI addressing.

The main benifit with this mode of access is that we can decrease the communication delay, yielding twice as fast 1-Wire communication in
       many cases.

The following values for port can be used to identify a specific FTDI port. Note that this requires that OWFS is built with libftdi support.

       ftdi:d:<devicenode>
path of bus and device-node (e.g. "003/001") within usb device
              tree (usually at /proc/bus/usb/)

       ftdi:i:<vendor>:<product>
first device with given vendor and product id, ids can be deci-
              mal, octal (preceded by "0") or hex (preceded by "0x")

       ftdi:i:<vendor>:<product>:<index>
as above with index being the number of the device (starting
              with 0) if there are more than one

       ftdi:s:<vendor>:<product>:<serial>
first device with given vendor id, product id and serial string

The above formats are parsed fully by libftdi, but with the ftdi: pre-
       fix stripped.

   Simplified device serial-only support
An additional format is supported, for certain bus types. This only
       specifies the USB serial number.

       ftdi:<serial>
Identifies a FTDI device by serial only. Currently, this is only valid for the VID/PID found on the LinkUSB (i.e. --link). Note that those VID/PID's are the default for any FT232R device,
              and in no way exclusive to LinkUSB.

-----
------------------------------------------------------------------------------
Site24x7 APM Insight: Get Deep Visibility into Application Performance
APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
Monitor end-to-end web transactions and take corrective actions now
Troubleshoot faster and improve end-user experience. Signup Now!
http://pubads.g.doubleclick.net/gampad/clk?id=267308311&iu=/4140
_______________________________________________
Owfs-developers mailing list
Owfs-developers@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/owfs-developers

Reply via email to