SWCU191 February 2022 CC1311P3 , CC1311R3 , CC2651P3 , CC2651R3 , CC2651R3SIPA
Two triggers to end the operation are set up by pParams->endTrigger/pParams->endTime and pParams->timeoutTrigger/pParams->timeoutTime, respectively. If either of these triggers occurs, the radio operation shall end as soon as possible. If it occurs while waiting for sync on an ADV*_IND packet, the operation shall end immediately. If it occurs at another time, the operation shall continue until the scan would otherwise be resumed, and then end. If the immediate command CMD_STOP (see Section 26.3.3.2.2) is received by the radio CPU, it shall have the same meaning as the end trigger occurring, except that the status code after ending shall be CMD_DONE_STOPPED. The differences between the two triggers are the status and result at the end of the operation. Typically, timeoutTrigger can be used at the end of a scan window, while endTrigger can be used when scanning is to end entirely.
The output structure pOutput contains fields that give information on the command being run. The radio CPU shall not initialize the fields, so this must be done by the system CPU when a reset of the counters is desired. The fields shall be updated by the radio CPU as described in the list that follows. The list also indicates when interrupts shall be raised in the system CPU.
An initiator operation shall end with one of the statuses listed in Table 26-163. The status field of the command structure after the operation is ended indicates the reason why the operation ended. In all cases, a Command_Done interrupt is raised. In each case, the result of TRUE, FALSE, or ABORT is indicated, which will decide the next action, as defined in Section 26.3.2.5.2.
Condition | Status Code | Result |
---|---|---|
Performed action 3 after receiving a legacy packet (transmitted CONNECT_IND) if pParams->advConfig.chSel = 0 or the ChSel bit of the received ADV_IND or ADV_DIRECT_IND was 1 | BLE_DONE_CONNECT | FALSE |
Performed action 3 after receiving a legacy packet (transmitted CONNECT_IND) if pParams->advConfig.chSel = 1 and the ChSel bit of the received ADV_IND or ADV_DIRECT_IND was 0 | BLE_DONE_CONNECT_CHSEL0 | FALSE |
Correctly received AUX_CONNECT_RSP after sending AUX_CONNECT_REQ | BLE_DONE_CONNECT | FALSE |
Received connectable ADV_EXT_IND packet not to be ignored without AUX pointer | BLE_DONE_OK | TRUE |
Performed action 3 on secondary channel, and did not send AUX_CONNECT_REQ due to backoff | BLE_DONE_OK | TRUE |
Performed action 1 or action 4 on secondary channel | BLE_DONE_RXERR | TRUE |
Performed action 3 on secondary channel, sent AUX_CONNECT_REQ and received AUX_CONNECT_RSP with bCrcErr = 1 or bIgnore = 1 | BLE_DONE_RXERR | TRUE |
Performed action 3 on secondary channel, sent AUX_CONNECT_REQ, but did not get sync or found wrong packet type or invalid length | BLE_DONE_NOSYNC | TRUE |
Observed trigger indicated by pParams->timeoutTrigger while waiting for sync on advertiser packet | BLE_DONE_RXTIMEOUT | TRUE |
Observed trigger indicated by pParams->timeoutTrigger, then performed actions 1, 2, 3, 4, or 5. | BLE_DONE_RXTIMEOUT | TRUE |
Observed trigger indicated by pParams->endTrigger while waiting for sync on advertiser packet | BLE_DONE_ENDED | FALSE |
Observed trigger indicated by pParams->endTrigger, then performed actions 1, 2, 3, 4, 5, or 6. | BLE_DONE_ENDED | FALSE |
Observed CMD_STOP while waiting for sync on advertiser packet | BLE_DONE_STOPPED | FALSE |
Observed CMD_STOP, then performed actions 1, 2, 3, 4, 5, or 6. | BLE_DONE_STOPPED | FALSE |
Performed action 6 with wait time to AUX packet more than pParams->maxWaitTimeForAuxCh. | BLE_DONE_AUX | FALSE |
Received CMD_ABORT | BLE_DONE_ABORT | ABORT |
No space in RX buffer to store received packet | BLE_ERROR_RXBUF | FALSE |
Illegal value of channel | BLE_ERROR_PAR | ABORT |
LLData length field has illegal value | BLE_ERROR_PAR | ABORT |