Si446x revC2A, A2A devices have a feature that automatically restarts the demodulator upon an RSSI jump event. The feature can be enabled in field ENJMPRX in API property MODEM_RSSI_CONTROL2. The RSSI jump threshold can be programmed in API property MODEM_RSSI_JUMP_THRESH.
The feature is meant to be used for recovering the Rx when a packet is being received but a higher power wanted packet arrives. Upon the power jump detection, the Rx restarts and receives the higher-level packet. This is true if the power difference between the packets is higher than the minimum SNR the demodulator needs for error free reception. This level is typically 10 dB for 2FSK H=1 modulation formats. (H is the modulation index.) Without the feature neither of the packets would be received.
There is a flaw with the feature: it only resets the demodulator but not the packet handler. The implication is that if the higher power packet arrives after sync word has been detected on the weak packet than both packets will be lost as the packet handler does not get reset and remains in packer Rx state on the 1st packet (as opposed to going back to sync word search state). If the higher power packet arrives before sync word is detected on the weak packet than the higher power packet will be received all right.
This flaw limits the performance of the feature quite a bit. A possible SW workaround to the issue is checking if sync word has been detected when the RSSI JUMP UP interrupt fires. If it has, then restart the Rx, if it has not, then do nothing. Obviously, this workaround takes time so the minimum preamble length requirement for this to work error free will be higher. By exactly how many bits longer a preamble is required depends on the data rate. You may measure how much time the whole restart takes and translate that to preamble bits. These bits must be added on top of the minimum requirement w/o the workaround. Minimum preamble length requirements are 40 bits, 32 bits and 16 bits with preamble detection with AFC, preamble detection w/o AFC and with DSA, respectively.
EZradioPro RSSI jump based Rx restart
Si446x revC2A, A2A devices have a feature that automatically restarts the demodulator upon an RSSI jump event. The feature can be enabled in field ENJMPRX in API property MODEM_RSSI_CONTROL2. The RSSI jump threshold can be programmed in API property MODEM_RSSI_JUMP_THRESH.
The feature is meant to be used for recovering the Rx when a packet is being received but a higher power wanted packet arrives. Upon the power jump detection, the Rx restarts and receives the higher-level packet. This is true if the power difference between the packets is higher than the minimum SNR the demodulator needs for error free reception. This level is typically 10 dB for 2FSK H=1 modulation formats. (H is the modulation index.) Without the feature neither of the packets would be received.
There is a flaw with the feature: it only resets the demodulator but not the packet handler. The implication is that if the higher power packet arrives after sync word has been detected on the weak packet than both packets will be lost as the packet handler does not get reset and remains in packer Rx state on the 1st packet (as opposed to going back to sync word search state). If the higher power packet arrives before sync word is detected on the weak packet than the higher power packet will be received all right.
This flaw limits the performance of the feature quite a bit. A possible SW workaround to the issue is checking if sync word has been detected when the RSSI JUMP UP interrupt fires. If it has, then restart the Rx, if it has not, then do nothing. Obviously, this workaround takes time so the minimum preamble length requirement for this to work error free will be higher. By exactly how many bits longer a preamble is required depends on the data rate. You may measure how much time the whole restart takes and translate that to preamble bits. These bits must be added on top of the minimum requirement w/o the workaround. Minimum preamble length requirements are 40 bits, 32 bits and 16 bits with preamble detection with AFC, preamble detection w/o AFC and with DSA, respectively.