[Smac-users] How to signal a failed transmission
weiye at ISI.EDU
Tue Jan 4 13:35:08 PST 2005
The unicastDone signal defined as follows gives you clear information
about whether the tx is successful or not.
event result_t unicastDone(void* msg, uint8_t txFragCount);
The txFragCount is the number of fragments that have been sent out
successfully. Since S-MAC supports fragmentation, this parameter tells
you exactly how good/bad the tx is. In the case that there is only one
fragment, its valid value will be either 1 or 0, telling you whether the
tx is successful or failed (based on whether the ACK is received).
For broadcastDone, the original design was that it always indicates a
successful tx. Since there is no ACKs for broadcasts, once a packet is
sent out, it will be signaled as success. I think it's the same for
broadcast in AM -- you always get a success in sendDone signal (but I
might be wrong.)
However, later we discovered that the MAC sometimes is not able to send
out a broadcast packet due to busy channel or high noise levels. Then we
added some timeout mechanism to let the MAC drop the packet if it can't
send it out for too long. Unfortunately, in this case, the broadcastDone
is not able to tell that the tx is fail.
On Tue, 2005-01-04 at 17:39 +0100, Christian Flügel wrote:
> Hi all,
> if I read the code in SMACM correctly unicastDone and broadcastDone
> will be signalled wether the transmission succeeds or not. So there is
> no way to discern wether the packet has been sent or not without
> implementing some kind of arq on top of s-mac.
> The active message stack on the other hand signals transmission
> failure in its sendDone function. So its a bit tricky to port modules
> from AM to s-mac since these modules often rely heavily on the
> sendDone success param.
> Is there a simple way to assess wether or not a packet has been sent
> correctly or not, or do I have to implemet something?
> Smac-users mailing list
> Smac-users at mailman.isi.edu
More information about the Smac-users