G'Day,

> And the search algorithm:
> http://www.maxim-ix.com/appnots.cfm/appnote_number/187

        Thanks to this document, I was able to eventually sort out the problem.
There were lots of small differences here and there between the way the
serial device works, and the way the OMAP bus works; these were the
cause of much of the trouble.  I also had to make my driver more
intelligent, as it needs to work differently when an Search ROM command
has been issued compared to normal.  There also seemed to be aspects of
the DS9097 driver that differed from the algorithm somewhat, but that
was probably because of the way the adaptor works.

        I now have the basics working, but have not been able to test all the
functions yet.  There are also a few functions I am still not sure of
the use of, and as such they may need to be rewritten a little.
All-in-all, it is almost complete: I would just like to say what I have
so far, so as to verify that I am doing what is expected.

        OMAP_detect: almost identical to the serial device, it does a little
setting up, then resets the bus.

        OMAP_setroutines: simply assigns the functions that would be called by
external routines; no overdrive functions provided.

        OMAP_write: one I am not sure of. It splits the write buffer up into
bits, and calls OMAP_send_and_get().  Do they really have to be sent as
individual bits, or can I just leave them as bytes and send it all
together?

        OMAP_read: effectively the same as OMAP_write(), only reading.  Again,
should I really be expecting bits, or can I assume byte returns?

        OMAP_reset: sends a reset pulse, and verifies there are devices
present.

        OMAP_next_both: the Search ROM routine.  Sends a Search ROM command,
reads two bits, writes a bit, and continues until either an error or it
is complete.  Checks the serial at the end.

        OMAP_level: does not seem to do much of anything; more or less copied
from the serial adaptor.

        OMAP_PowerByte: sounds fancy, but I cannot work out the purpose of it.
Calls OMAP_send_data(), switches level, waits, then calls OMAP_level().

        OMAP_ProgramPulse: does not do anything right now; neither the DS9097
nor DS9490 seem to support it.

        OMAP_sendback_data: seems to be OMAP_write() and OMAP_read() combined;
as with the other two, is it really necessary to do this in bits, or can
I assume bytes?

        OMAP_select: seems to be a Match ROM command; currently taken almost
directly from the DS9097.  If if is Match ROM, I may need to make a few,
small, changes.  I guess pn->sn is the serial number, and pn->dev has
something to do with devices, but am not positive.

        OMAP_send_data(): fairly similar to BUS_send_data(). It calls
OMAP_sendback_data, and checks that it received back the same data it
sent.  I am guessing there is some kind of device that requires this.

        OMAP_readin_data(): replacement for BUS_readin_data(), it is basically
a front to OMAP_sendback_data, but does a memset() in the first argument
rather than a variable; not sure of the purpose yet.

        OMAP_send_and_get(): replaces BUS_send_and_get(), and seems to work
fine.  If there's anything to send, it does; if there's anything to
read, it does.

        If there is anything there I am wrong about, of if anyone can answer
any of the questions, I would really appreciate it.

        -- 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