nes-proj/cpu/mc1322x/doc/autoack
Mariano Alvira 2e331b51e8 Merge remote branch 'libmc1322x/master' into update-libmc1322x
Conflicts:
	cpu/mc1322x/COPYING
2011-02-17 14:41:47 -05:00

35 lines
1.6 KiB
Plaintext

The known details about autoacking.
1) Auto-acking is disabled if promiscuous mode in enabled. Auto-acking
is enabled when promiscuous mode is disabled. A more proper name
for this bit would be promiscuous/#autoack.
2) If promiscuous mode is disabled and a recieved packet 1) matches
the address filters and 2) has the ack request bit set, then an
auto-ack will be sent (provided you do item 3 properly). The
sequence number is stuffed and transmitted automatically. Note: you
must have the address set properly in the maca hardware. That means
the EUI registers for long addressing and the PANID and short
addr. for short addressing.
3) You must wait 200 maca clocks or so after receiving a packet that
needs an ack. This is necessary for the maca to do it's thing. If
you don't wait enough then it either will not send the ack, or if
you wait a little more (but not enough), the ack DSN will be zero.
4) The following must be set properly, TXACKDELAY, RXACKDELAY,
RXEND. The best way to set these is to use a scope and the TX_ON
and RX_ON signals. You set TXACKDELAY so that the ack is
transmitted 12 symbols after the received packet (192 us). You set
RXACKDELAY to start before the ack is due to arrive (I'm doing
100us before). And you set RXEND to be long enough to receive the
ACK (I'm doing a 700us window or so).
4b) CCA has its own set of timings.
5) The transmitter must set TXSEQNR before MACA_DMATX.
6) The status of the next "action complete" on the TX side tells you
if the ack was received or not. Status will be 0 (success) if you
got the ack and 5 (no_ack) if you did not.