G'Day,

> As I understand you have copied ow_ds9097.c and made your changes to it.
> DS9097_reset() send a resetbyte 0xF0 and read a byte. If received byte
> is 0xF0, no devices where found on the bus and it's therefor no use
> to search for more devices in DS9097_next_both() where it exits later.
> If received byte is 0, the 1-wire bus has a short circuit.
> Otherwise there seem to be devices 1-wire devices to use.
> 
> I guess you get a result !=0 and !=0xF0 since you make a debug output
> like:  "OMAP_reset(): AnyDevices = 1" (and I suppose you return 0 from
> OMAP_reset() to indicate reset was successful)

        That is correct: I have maintained that aspect as-is.

> If you start: owfs --foreground --error_level=9 --error_print=2
>    -o /dev/wire /mnt/1wire

        I have now tried that.  --error_level and --error_print were not
recognised (they must have been added since the last release), and if I
use --foreground I end up stuck because I can only have one terminal: I
did not think about that aspect until after I tried it.

> Add debugging in ow_dir.c:FS_realdir() just after BUS_select(pn2)
> and BUS_first(sn,pn2) and make sure they both return 0, otherwise
> it will never enter the loop and list the devices on the 1-wire bus.

        I added a couple of messages to that function, and it never even gets
called, let alone BUS_select()/BUS_first() getting called.  Indeed, none
of the BUS_*() functions seem to get called at any time.
`ls /mnt/1wire/uncached/' does not appear to help either.

        I decided to trace back, and it seems FS_realdir() is called by
FS_dir_seek(), however that function is never called either; nor is
FS_dir().  If I continue to follow the path, FS_dir() seems to only
called from owfs in FS_getdir(), which also never seems to be called.
>From what I can gather, I would have to go into FUSE to find where that
is called... so I turned my attention to where owfs gets FUSE started.

        I took the following line:
                if ( LibStart() ) ow_exit(1) ;
and turned it into:
                testing = LibStart();
                fprintf(stderr, "LibStart() returned %d", testing);
                if ( testing ) ow_exit(1) ;
Interestingly enough, I never saw that output.  It got to the line
before calling LibStart(), but never printed `testing', yet I could
still access parts of the file system.  I know nothing about how FUSE
works, but I would have thought it would be a case of all-or-nothing.

        I am rather stuck now: I had not expected to find anything like this.
Is the problem likely with FUSE as I suspect, or may it perhaps be
somewhere else?

        Thanks for the assistance so far,

        Matthew



-------------------------------------------------------
This SF.Net email is sponsored by the 'Do More With Dual!' webinar happening
July 14 at 8am PDT/11am EDT. We invite you to explore the latest in dual
core and dual graphics technology at this free one hour event hosted by HP, 
AMD, and NVIDIA.  To register visit http://www.hp.com/go/dualwebinar
_______________________________________________
Owfs-developers mailing list
Owfs-developers@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/owfs-developers

Reply via email to