SWCU192 November 2021 CC1312R7 , CC1352P7 , CC2652P7 , CC2652R7
The receive-ACK operation is a foreground-level operation that runs on top of a receive operation. The operation starts with the CMD_IEEE_RX_ACK command, and uses the command structure listed in Table 26-66.
At the start of a receive-ACK operation, the radio CPU waits for the start trigger. If the receiver was suspended due to a TX operation before the receive-ACK operation, the background-level RX operation is not resumed until the start trigger occurs.
While the receive-ACK operation is running, the background-level RX operation runs normally. However, in addition to looking for the packets, the operation looks for ACK packets with the sequence number given in seqNo. The packet is stored in the receive queue only if configured to in the background-level receive operation (frameTypes.bAcceptFt2Ack = 1). If ACK packets are filtered out in the background RX operation, for an ACK packet the sequence number is received, and if it matches, also the FCS.
If the ACK packet with the requested sequence number is received, the FCS is checked. If the CRC is OK, the receive-ACK operation ends, otherwise it continues. If the ACK is received OK, the pending-data bit of the header is checked.
In addition to the receive-ACK operation ending after receiving the ACK as described previously, the operation can end as a result of the end trigger given by endTrigger and endTime, or by a command. The commands that can end the receive-ACK operation are the immediate commands CMD_ABORT, CMD_STOP, CMD_IEEE_ABORT_FG, and CMD_IEEE_STOP_FG.
A receive-ACK operation ends due to one of the causes listed in Table 26-87. The status field of the command structure after the command has ended indicates the reason why the operation ended. In all cases, an FG_COMMAND_DONE interrupt is raised. In each case, it is indicated if the result is TRUE, FALSE, or ABORT. This indicates whether to start the next command (if any) in pNextOp, or to return to an IDLE state.
Condition | Status Code | Result |
---|---|---|
Requested ACK successfully received with pending data bit cleared | IEEE_DONE_ACK | FALSE |
Requested ACK successfully received with pending data bit set | IEEE_DONE_ACKPEND | TRUE |
End trigger occurred | IEEE_DONE_TIMEOUT | FALSE |
Received CMD_STOP or CMD_IEEE_STOP_FG | IEEE_DONE_STOPPED | FALSE |
Received CMD_ABORT or CMD_IEEE_ABORT_FG | IEEE_DONE_ABORT | ABORT |
Background operation ended | IEEE_DONE_BGEND | ABORT |
Observed illegal parameter | IEEE_ERROR_PAR | ABORT |