ADC Home > Reference Library > Technical Q&As > Hardware & Drivers > FireWire >

Not Recommended Documentclose button

Important: The information in this document is Not Recommended and should not be used for new development.

Current information on this Reference Library topic can be found here:

Use the Doorbell

Q: What is the proper use of a FireWire SBP2 (Serial Bus Protocol 2) device's Doorbell?

A: The Doorbell is used to signal the waiting SBP2 device to reexamine the current ORB (Object Request Block) pointer. If the SBP2 device is currently executing an ORB, then ringing the Doorbell will have no effect (other than a little traffic on the FireWire bus).

Since some drivers will be creating ORB chains that do not have status notifications, the driver may not know whether the SPB2 device is processing an ORB or it is idle when it appends a new ORB to the chain. For this reason, it is acceptable to always ring the Doorbell. If the SPB2 device is still executing the previous ORB(s) sent to it, the Doorbell will not affect anything, and the new ORB that was just appended will be executed as if it had been part of the previously sent ORB chain. If the SPB2 device has finished processing the previous ORB chain, then ringing the Doorbell will cause it to fetch the newly appended ORB and begin executing it.

If, however, you set the immediate flag for FWSBP2Append, there is no point in then ringing the Doorbell (unless you later append more ORBs). Ringing the Doorbell only makes sense after calling FWSBP2Append with an ORB that does not have the immediate flag set.

Since always ringing the Doorbell is a much simpler algorithm than trying to determine if you need to ring the Doorbell or not, and has no penalty other than a four-byte write on the FireWire bus, we recommend that you not bother to avoid ringing the Doorbell.

[May 17 1999]

Did this document help you?
Yes: Tell us what works for you.
It’s good, but: Report typos, inaccuracies, and so forth.
It wasn’t helpful: Tell us what would have helped.