I am duty-cycling the radio, so I listen with a timeout and then power off the radio (or transmit) if no packets were received. Currently I am ignoring the address event from the radio. Is it worthwhile to enable an interrupt on the address event and set a flag in the IRQ so that if there is a timeout, I can know when a receive is in progress, and spin until the packet is done (disabled event)?
A related question is: if the address event is triggered, will the radio always go to the disabled state in a finite time? The state diagram seems to indicate that the address event implies an address match and that the radio will proceed to the disabled state, even if length or CRC is bad.
To check for receive in progress seems like a form of carrier sense. You don't want to abort a receive in progress, and you don't want to start a transmission when another radio is transmitting.
By my rough calculations, even a short message of 10 bytes payload at 1Mbit would take about 0.1mSec, say 10,000 instructions, so there is plenty of leeway to set and check the flag.
Not using SoftDevice, a proprietary, raw protocol.