On 5/28/06, Daniel Höper <[EMAIL PROTECTED]> wrote:
There are some problems with this adapter:

1. We get an infinite loop in ow_connect.c:NewIn() while creating the eight
1-wire busses in ow_ds2482.c:CreateChannels(). I solved this by setting
now->next to NULL in NewIn() if the new connection is a copy of an existing
one.

Nice finding. I changed NewIn to insert at the head of the linked list.

2. After fixing this problem there is another infinite loop caused by
DS2482_detect() which is called for every created channel and in turn creates
new indevices again and again. The only solution I found was to skip the
complete detection sequence in LibStart() since BadAdapter_detect() writes
in->connin.usb.usb and thus destroys the information in in-> connin.i2c.index.

I think the previous fix corrects this, too.

...
    do {
        if ( get_busmode(in) == bus_i2c )
                if ( in->connin.i2c.head != NULL ) continue;

        BadAdapter_detect(in) ; /* default "NOTSUP" calls */
        switch( get_busmode(in) ) {
...

3. There are nine channels (bus.0 ... bus.8) for only eight 1-wire busses.
bus.0 and bus.2 have the same value for connin.i2c.index (=1). So a 1-wire
device connected to the second bus of the adapter is shown twice in the owfs
directory.
Fixed, I think.
 

Daniel


-------------------------------------------------------
All the advantages of Linux Managed Hosting--Without the Cost and Risk!
Fully trained technicians. The highest number of Red Hat certifications in
the hosting industry. Fanatical Support. Click to learn more
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=107521&bid=248729&dat=121642
_______________________________________________
Owfs-developers mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/owfs-developers

Reply via email to