35 lines
1.6 KiB
Plaintext
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.
|