From: scipio Ben Greenstein and Philip Levis
-Draft-Created: 11-Jul-2005
Draft-Version: 1.9
+
-Draft-Version: 1.11
Draft-Modified: 2007-02-06
+Draft-Modified: 2008-04-01
@@ -529,6 +529,23 @@ may be slightly delayed. However, acknowledgement information is
stored in a queue separate from the data buffer, so a data packet to
be transmitted may begin spooling into SerialP while SerialP is
actively sending an acknowledgement.Draft-Discuss: TinyOS Developer List <tinyos-devel at mail.millennium.berkeley.edu>
Only the PC-to-mote communication path supports acknowledgements. +SerialP does not request acknowledgements from the PC for two reasons. +First, acks are not perfect reliable: they are used on the +PC-to-mote path to raise reliability to a usable level. In the case of +the PC-to-mote path, the UART receive buffer is typically a single +byte, so a high interrupt load can easily lose (and sometimes does) a +byte. This is in contrast to the PC receive buffer, which is much +larger and does not have to deal with overflow. Second, adding support +for acks would increase the code size and complexity of the serial +stack. As code space is often at a premium, this would add little +needed functionality at significant cost. Of course, any application +that requires perfect reliability may layer its own scheme on top of +the serial protocol.
+The acknowledgement protocol is stop-and-wait to minimize buffering on +the mote side. This is considered more important on memory constrained +devices than increased throughput in the PC-to-mote direction, which +most applications only use for occasional control transmissions.